Find and book coworking spaces, meeting rooms and offices in Latin America from your AI assistant.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
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.
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.
Space slug. Alternative to `space_id`.
Space id.
MCP client that originates the request, for attribution.
Number of people, to warn if there may not be enough room.
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.
| Argument | Type | Description |
|---|---|---|
| date | string | 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. |
| slug | string | Space slug. Alternative to `space_id`. |
| space_id | integer | Space id. |
| utm_source | string | MCP client that originates the request, for attribution. |
| people_count | integer | Number of people, to warn if there may not be enough room. |
{
"type": "object",
"properties": {
"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."
},
"slug": {
"type": "string",
"description": "Space slug. Alternative to `space_id`."
},
"space_id": {
"type": "integer",
"description": "Space id."
},
"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
}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.
| Argument | Type | Description |
|---|---|---|
| date | string | Date YYYY-MM-DD, to prefill the booking link. |
| slug | string | Space slug. Alternative to `space_id`. |
| spots | integer | Number of people, to prefill the booking link. |
| ends_at | string | End time HH:MM. Requires `starts_at` and must be later. |
| currency | string | Currency of the returned prices (default usd). |
| space_id | integer | Space id. |
| starts_at | string | Start time HH:MM. Hourly bookings only; requires `ends_at`. |
| utm_source | string | MCP client that originates the request, for attribution of the booking URL (e.g. 'claude', 'chatgpt'). Default 'mcp_unknown'. |
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.
| Argument | Type | Description |
|---|---|---|
| date | string | Date YYYY-MM-DD. |
| slug | string | Space slug. Alternative to `space_id`. |
| dates | array | Several dates YYYY-MM-DD. Takes precedence over `date`. |
| spots | integer | Number of people / seats. |
| ends_at | string | End time HH:MM. Requires `starts_at` and must be later. |
| space_id | integer | Space id (from `search_coworks` or `cowork_detail`). |
| starts_at | string | Start time HH:MM. Hourly bookings only; requires `ends_at`. |
| utm_source | string | MCP client that originates the request, for attribution (e.g. 'claude', 'chatgpt'). Default 'mcp_unknown'. |
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.
| Argument | Type | Description |
|---|---|---|
| date | string | Date YYYY-MM-DD. |
| slug | string | Space slug. Alternative to `space_id`. |
| dates | array | Several dates YYYY-MM-DD. Takes precedence over `date`. |
| spots | integer | Number of people. |
| ends_at | string | End time HH:MM. Requires `starts_at`. |
| currency | string | Currency of the total (default usd). |
| space_id | integer | Space id. |
| starts_at | string | Start time HH:MM. Hourly bookings only. |
| utm_source | string | MCP client that originates the request. |
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.
| Argument | Type | Description |
|---|---|---|
| city | string | City (e.g. 'Buenos Aires', 'CDMX'). Accepts free text. |
| date | string | 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`. |
| zone | string | 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. |
| limit | integer | Number of results (default 10, maximum 20). |
| capacity | integer | Minimum number of people the space must fit. |
| currency |
{
"type": "object",
"properties": {
"date": {
"type": "string",
"description": "Date YYYY-MM-DD, to prefill the booking link."
},
"slug": {
"type": "string",
"description": "Space slug. Alternative to `space_id`."
},
"spots": {
"type": "integer",
"minimum": 1,
"description": "Number of people, to prefill the booking link."
},
"ends_at": {
"type": "string",
"description": "End time HH:MM. Requires `starts_at` and must be later."
},
"currency": {
"type": "string",
"description": "Currency of the returned prices (default usd)."
},
"space_id": {
"type": "integer",
"description": "Space id."
},
"starts_at": {
"type": "string",
"description": "Start time HH:MM. Hourly bookings only; requires `ends_at`."
},
"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
}{
"type": "object",
"properties": {
"date": {
"type": "string",
"description": "Date YYYY-MM-DD."
},
"slug": {
"type": "string",
"description": "Space slug. Alternative to `space_id`."
},
"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."
},
"ends_at": {
"type": "string",
"description": "End time HH:MM. Requires `starts_at` and must be later."
},
"space_id": {
"type": "integer",
"description": "Space id (from `search_coworks` or `cowork_detail`)."
},
"starts_at": {
"type": "string",
"description": "Start time HH:MM. Hourly bookings only; requires `ends_at`."
},
"utm_source": {
"type": "string",
"description": "MCP client that originates the request, for attribution (e.g. 'claude', 'chatgpt'). Default 'mcp_unknown'."
}
},
"additionalProperties": false
}{
"type": "object",
"properties": {
"date": {
"type": "string",
"description": "Date YYYY-MM-DD."
},
"slug": {
"type": "string",
"description": "Space slug. Alternative to `space_id`."
},
"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."
},
"ends_at": {
"type": "string",
"description": "End time HH:MM. Requires `starts_at`."
},
"currency": {
"type": "string",
"description": "Currency of the total (default usd)."
},
"space_id": {
"type": "integer",
"description": "Space id."
},
"starts_at": {
"type": "string",
"description": "Start time HH:MM. Hourly bookings only."
},
"utm_source": {
"type": "string",
"description": "MCP client that originates the request."
}
},
"additionalProperties": false
}| string |
| 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. |
| price_max | number | Maximum price, in the `currency` currency. |
| price_min | number | Minimum price, in the `currency` currency. |
| space_type | string | Space type. `day_pass` is a desk in a shared area; `private_office` a closed office; `meeting_room` a room booked by the hour. |
| utm_source | string | MCP client that originates the request, for attribution of the booking URLs (e.g. 'claude', 'chatgpt'). Default 'mcp_unknown'. |
{
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "City (e.g. 'Buenos Aires', 'CDMX'). Accepts free text."
},
"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`."
},
"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."
},
"limit": {
"type": "integer",
"maximum": 20,
"minimum": 1,
"description": "Number of results (default 10, maximum 20)."
},
"capacity": {
"type": "integer",
"minimum": 1,
"description": "Minimum number of people the space must fit."
},
"currency": {
"enum": [
"ars",
"brl",
"chf",
"cny",
"cop",
"eur",
"gbp",
"mxn",
"pen",
"usd"
],
"type": "string",
"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."
},
"price_max": {
"type": "number",
"minimum": 0,
"description": "Maximum price, in the `currency` currency."
},
"price_min": {
"type": "number",
"minimum": 0,
"description": "Minimum price, in the `currency` currency."
},
"space_type": {
"enum": [
"day_pass",
"event_space",
"meeting_room",
"podcast_studio",
"private_office"
],
"type": "string",
"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."
},
"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
}