Desky

Find and book coworking spaces, meeting rooms and offices in Latin America from your AI assistant.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
90%
Naming quality
92%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~3,200Tokens (tool definitions)
~6.2 KBTypical response size
Significant attention impact (2.50% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "mcp": {
      "url": "https://www.desky.la/mcp"
    }
  }
}

Remote endpoints

https://www.desky.la/mcpstreamable-http

What it can do

Tool inventory

Tools (5)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢check_availability(space_id, slug, date, utm_source, people_count)

Returns the free dates of a space (and the free hours of that day, if it is sold by the hour). Hours are in 24h format and in the VENUE'S LOCAL TIME, never UTC: the IANA time zone is in the `timezone` field of the response. Reports availability as dates/hours, without occupancy levels. The final confirmation happens at checkout.

Input Schema

{
  "type": "object",
  "properties": {
    "space_id": {
      "type": "integer",
      "description": "Space id."
    },
    "slug": {
      "type": "string",
      "description": "Space slug. Alternative to `space_id`."
    },
    "date": {
      "type": "string",
      "description": "Date YYYY-MM-DD. If given, the response focuses on that day and includes the free hours when the space is sold by the hour."
    },
    "utm_source": {
      "type": "string",
      "description": "MCP client that originates the request, for attribution."
    },
    "people_count": {
      "type": "integer",
      "minimum": 1,
      "description": "Number of people, to warn if there may not be enough room."
    }
  },
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "space_id": {
      "type": "integer",
      "description": "Space identifier, for `get_booking_link`."
    },
    "slug": {
      "type": [
        "string",
        "null"
      ]
    },
    "space_name": {
      "type": "string"
    },
    "timezone": {
      "type": [
        "string",
        "null"
      ],
      "description": "IANA time zone of the venue. `available_hours` is in THIS zone, not UTC."
    },
    "available_dates": {
      "type": "array",
      "items": {
        "type": "string",
        "description": "Date YYYY-MM-DD."
      }
    },
    "total_available_dates": {
      "type": "integer"
    },
    "requested_date": {
      "type": "string"
    },
    "requested_date_available": {
      "type": "boolean"
    },
    "booking_url": {
      "type": "string",
      "description": "Checkout URL with the requested date already filled in. Only present if that date is free."
    },
    "available_hours": {
      "type": "array",
      "description": "Free START times, HH:MM in the venue's local time (`timezone`). Only present if the space is sold by the hour and a date was requested. For TODAY it starts at the next hour, not at opening: past hours cannot be booked and are not listed.",
      "items": {
        "type": "string"
      }
    },
    "bookable_hours": {
      "type": "array",
      "description": "Start times that can actually be booked for one hour, HH:MM in the venue's local time. Same condition as `available_hours`. Unlike it, never includes the closing time and drops hours that overlap an existing booking. A booking of N hours needs N consecutive entries.",
      "items": {
        "type": "string"
      }
    }
  },
  "required": [
    "space_id",
    "space_name",
    "available_dates",
    "total_available_dates"
  ]
}
🟢cowork_detail(space_id, slug, currency, date, spots, ...)

Full listing of a space: description, coworking and venue, address, capacity, prices per hour/day/week/month, amenities, opening hours, rating and reviews. Accepts `space_id` or `slug` (`search_coworks` returns both). If you already know the date or the number of people, pass them: the booking link comes prefilled.

Input Schema

{
  "type": "object",
  "properties": {
    "space_id": {
      "type": "integer",
      "description": "Space id."
    },
    "slug": {
      "type": "string",
      "description": "Space slug. Alternative to `space_id`."
    },
    "currency": {
      "type": "string",
      "description": "Currency of the returned prices (default usd)."
    },
    "date": {
      "type": "string",
      "description": "Date YYYY-MM-DD, to prefill the booking link."
    },
    "spots": {
      "type": "integer",
      "minimum": 1,
      "description": "Number of people, to prefill the booking link."
    },
    "starts_at": {
      "type": "string",
      "description": "Start time HH:MM. Hourly bookings only; requires `ends_at`."
    },
    "ends_at": {
      "type": "string",
      "description": "End time HH:MM. Requires `starts_at` and must be later."
    },
    "utm_source": {
      "type": "string",
      "description": "MCP client that originates the request, for attribution of the booking URL (e.g. 'claude', 'chatgpt'). Default 'mcp_unknown'."
    }
  },
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "description": "Space identifier. Pass it as `space_id` to `check_availability` or `get_booking_link`."
    },
    "slug": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "description": {
      "type": [
        "string",
        "null"
      ]
    },
    "space_type": {
      "type": "string"
    },
    "coworking_name": {
      "type": [
        "string",
        "null"
      ]
    },
    "address": {
      "type": [
        "string",
        "null"
      ]
    },
    "city": {
      "type": [
        "string",
        "null"
      ]
    },
    "province": {
      "type": [
        "string",
        "null"
      ]
    },
    "country": {
      "type": [
        "string",
        "null"
      ]
    },
    "latitude": {
      "type": [
        "number",
        "null"
      ]
    },
    "longitude": {
      "type": [
        "number",
        "null"
      ]
    },
    "timezone": {
      "type": [
        "string",
        "null"
      ],
      "description": "IANA time zone of the venue."
    },
    "capacity": {
      "type": [
        "integer",
        "null"
      ]
    },
    "currency": {
      "type": "string",
      "description": "Currency of all prices."
    },
    "prices": {
      "type": "object",
      "description": "List prices per unit, already converted to `currency`.",
      "properties": {
        "hour": {
          "type": [
            "number",
            "null"
          ]
        },
        "day": {
          "type": [
            "number",
            "null"
          ]
        },
        "week": {
          "type": [
            "number",
            "null"
          ]
        },
        "month": {
          "type": [
            "number",
            "null"
          ]
        },
        "currency": {
          "type": "string"
        },
        "note": {
          "type": "string"
        }
      },
      "required": [
        "currency"
      ]
    },
    "amenities": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "opening_hours": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "rating": {
      "type": [
        "number",
        "null"
      ]
    },
    "review_count": {
      "type": [
        "integer",
        "null"
      ]
    },
    "instant_booking": {
      "type": "boolean"
    },
    "booking_horizon_months": {
      "type": [
        "integer",
        "null"
      ]
    },
    "image_url": {
      "type": [
        "string",
        "null"
      ]
    },
    "images": {
      "type": "array",
      "items": {
        "type": [
          "string",
          "null"
        ]
      }
    },
    "booking_url": {
      "type": "string"
    }
  },
  "required": [
    "id",
    "slug",
    "name",
    "prices",
    "booking_url"
  ]
}
🟢get_booking_link(space_id, slug, date, dates, spots, ...)

Returns the booking link on desky.la for a space, with the date and number of people already filled in. It does not book or charge: the person sees the final price and confirms on the site. It is the final action of this server, and that is context for you: sharing the link is enough.

Input Schema

{
  "type": "object",
  "properties": {
    "space_id": {
      "type": "integer",
      "description": "Space id (from `search_coworks` or `cowork_detail`)."
    },
    "slug": {
      "type": "string",
      "description": "Space slug. Alternative to `space_id`."
    },
    "date": {
      "type": "string",
      "description": "Date YYYY-MM-DD."
    },
    "dates": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Several dates YYYY-MM-DD. Takes precedence over `date`."
    },
    "spots": {
      "type": "integer",
      "minimum": 1,
      "description": "Number of people / seats."
    },
    "starts_at": {
      "type": "string",
      "description": "Start time HH:MM. Hourly bookings only; requires `ends_at`."
    },
    "ends_at": {
      "type": "string",
      "description": "End time HH:MM. Requires `starts_at` and must be later."
    },
    "utm_source": {
      "type": "string",
      "description": "MCP client that originates the request, for attribution (e.g. 'claude', 'chatgpt'). Default 'mcp_unknown'."
    }
  },
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "space_id": {
      "type": "integer"
    },
    "slug": {
      "type": "string"
    },
    "space_name": {
      "type": [
        "string",
        "null"
      ]
    },
    "booking_url": {
      "type": "string",
      "description": "Checkout URL on desky.la. It does not book or charge."
    }
  },
  "required": [
    "booking_url"
  ]
}
🟢quote_booking(space_id, slug, date, dates, starts_at, ...)

Quotes a specific booking and returns the final total and the checkout link. The Desky interface uses it when the person changes the date or the number of seats. The total comes from the same calculation as the site's checkout, so it is the final number and not an estimate. It does not book or charge.

Input Schema

{
  "type": "object",
  "properties": {
    "space_id": {
      "type": "integer",
      "description": "Space id."
    },
    "slug": {
      "type": "string",
      "description": "Space slug. Alternative to `space_id`."
    },
    "date": {
      "type": "string",
      "description": "Date YYYY-MM-DD."
    },
    "dates": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Several dates YYYY-MM-DD. Takes precedence over `date`."
    },
    "starts_at": {
      "type": "string",
      "description": "Start time HH:MM. Hourly bookings only."
    },
    "ends_at": {
      "type": "string",
      "description": "End time HH:MM. Requires `starts_at`."
    },
    "spots": {
      "type": "integer",
      "minimum": 1,
      "description": "Number of people."
    },
    "currency": {
      "type": "string",
      "description": "Currency of the total (default usd)."
    },
    "utm_source": {
      "type": "string",
      "description": "MCP client that originates the request."
    }
  },
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "space_id": {
      "type": "integer"
    },
    "slug": {
      "type": "string"
    },
    "space_name": {
      "type": [
        "string",
        "null"
      ]
    },
    "currency": {
      "type": "string"
    },
    "prices": {
      "type": "object",
      "properties": {
        "subtotal": {
          "type": "string"
        },
        "total": {
          "type": "string",
          "description": "The final total, fees included."
        },
        "service_fee": {
          "type": "string"
        },
        "discount_amount": {
          "type": "string"
        }
      },
      "required": [
        "subtotal",
        "total"
      ]
    },
    "is_instant": {
      "type": "boolean",
      "description": "Whether the booking is confirmed automatically for THOSE dates. It is not the space flag: with auto-accept rules it is decided day by day."
    },
    "checkout_url": {
      "type": "string",
      "description": "Prefilled checkout URL."
    }
  },
  "required": [
    "space_id",
    "slug",
    "currency",
    "prices",
    "is_instant",
    "checkout_url"
  ]
}
🟢search_coworks(city, zone, space_type, capacity, date, ...)

Searches workspaces published on Desky by city, neighborhood, type, capacity and price range. For each one it returns its id, name, coworking, location, starting price with its unit (per day for desks and offices, per hour for rooms: see `price_from_period`), amenities and a ready-made booking URL. It does not filter by availability: use `check_availability` for that. Pass `capacity` if the person said how many people: it is used to filter AND to prefill the link with that number of seats. Prices are LIST prices per unit, never a total: the final price is calculated at checkout. That is context for you so you do not present them as a total; there is no need to point it out to the person in every reply.

Input Schema

{
  "type": "object",
  "properties": {
    "city": {
      "type": "string",
      "description": "City (e.g. 'Buenos Aires', 'CDMX'). Accepts free text."
    },
    "zone": {
      "type": "string",
      "description": "Neighborhood within the city (e.g. 'Palermo'). If the neighborhood can be resolved, results are LIMITED to it; otherwise it is combined with `city` as free text and the results may be broader."
    },
    "space_type": {
      "type": "string",
      "enum": [
        "day_pass",
        "event_space",
        "meeting_room",
        "podcast_studio",
        "private_office"
      ],
      "description": "Space type. `day_pass` is a desk in a shared area; `private_office` a closed office; `meeting_room` a room booked by the hour."
    },
    "capacity": {
      "type": "integer",
      "minimum": 1,
      "description": "Minimum number of people the space must fit."
    },
    "date": {
      "type": "string",
      "description": "Tentative date YYYY-MM-DD. It does NOT filter by availability: it is used to prefill the booking link. To know if the space is free, use `check_availability`."
    },
    "price_min": {
      "type": "number",
      "minimum": 0,
      "description": "Minimum price, in the `currency` currency."
    },
    "price_max": {
      "type": "number",
      "minimum": 0,
      "description": "Maximum price, in the `currency` currency."
    },
    "currency": {
      "type": "string",
      "enum": [
        "ars",
        "brl",
        "chf",
        "cny",
        "cop",
        "eur",
        "gbp",
        "mxn",
        "pen",
        "usd"
      ],
      "description": "Currency of `price_min`/`price_max` and of the returned prices (default usd). Prices are converted and rounded the same way as on desky.la; the filter compares before rounding, so a result can fall up to one rounding step outside the requested range."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20,
      "description": "Number of results (default 10, maximum 20)."
    },
    "utm_source": {
      "type": "string",
      "description": "MCP client that originates the request, for attribution of the booking URLs (e.g. 'claude', 'chatgpt'). Default 'mcp_unknown'."
    }
  },
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "count": {
      "type": "integer",
      "description": "Number of spaces returned."
    },
    "currency": {
      "type": "string",
      "description": "Currency of all prices."
    },
    "note": {
      "type": "string",
      "description": "What these prices are."
    },
    "results": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Space identifier. Pass it as `space_id` to `cowork_detail`, `check_availability` or `get_booking_link`."
          },
          "slug": {
            "type": "string",
            "description": "Alternative to `id`."
          },
          "name": {
            "type": "string"
          },
          "coworking_name": {
            "type": [
              "string",
              "null"
            ]
          },
          "space_type": {
            "type": "string"
          },
          "city": {
            "type": [
              "string",
              "null"
            ]
          },
          "address": {
            "type": [
              "string",
              "null"
            ]
          },
          "latitude": {
            "type": [
              "number",
              "null"
            ]
          },
          "longitude": {
            "type": [
              "number",
              "null"
            ]
          },
          "capacity": {
            "type": [
              "integer",
              "null"
            ]
          },
          "price_from": {
            "type": [
              "number",
              "null"
            ],
            "description": "List price per unit, in `currency`."
          },
          "price_from_period": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "day",
              "hour",
              null
            ],
            "description": "Whether `price_from` is per day or per hour."
          },
          "currency": {
            "type": "string"
          },
          "day_price": {
            "type": [
              "number",
              "null"
            ]
          },
          "hour_price": {
            "type": [
              "number",
              "null"
            ]
          },
          "opening_hours": {
            "type": "array",
            "description": "Opening hours of the venue. Empty if not provided.",
            "items": {
              "type": "object",
              "properties": {
                "weekday": {
                  "type": "integer"
                },
                "weekday_name": {
                  "type": "string"
                },
                "from": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "to": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              }
            }
          },
          "amenities": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "rating": {
            "type": [
              "number",
              "null"
            ]
          },
          "review_count": {
            "type": [
              "integer",
              "null"
            ]
          },
          "instant_booking": {
            "type": "boolean"
          },
          "image_url": {
            "type": [
              "string",
              "null"
            ]
          },
          "booking_url": {
            "type": "string",
            "description": "Checkout URL."
          }
        },
        "required": [
          "id",
          "slug",
          "name",
          "currency",
          "booking_url"
        ]
      }
    }
  },
  "required": [
    "results",
    "count",
    "currency"
  ]
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded5 tools