Build travel itineraries with Peek's 300k+ experiences. Search, details, and availability.
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.
Get availability information for a specific experience including dates, times, and pricing
The ID of the experience
End date inclusive in YYYY-MM-DD format (e.g., '2025-06-20' would return things taking place ON or BEFORE the 20th)
Number of travelers
Start date inclusive YYYY-MM-DD format (e.g., '2025-06-19')
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Get availability information for a specific experience including dates, times, and pricing
| Argument | Type | Description |
|---|---|---|
| id* | string | The ID of the experience |
| endDate* | string | End date inclusive in YYYY-MM-DD format (e.g., '2025-06-20' would return things taking place ON or BEFORE the 20th) |
| quantity* | integer | Number of travelers |
| startDate* | string | Start date inclusive YYYY-MM-DD format (e.g., '2025-06-19') |
{
"type": "object",
"required": [
"id",
"quantity",
"startDate",
"endDate"
],
"properties": {
"id": {
"type": "string",
"description": "The ID of the experience"
},
"endDate": {
"type": "string",
"description": "End date inclusive in YYYY-MM-DD format (e.g., '2025-06-20' would return things taking place ON or BEFORE the 20th)"
},
"quantity": {
"type": "integer",
"description": "Number of travelers"
},
"startDate": {
"type": "string",
"description": "Start date inclusive YYYY-MM-DD format (e.g., '2025-06-19')"
}
}
}Get detailed information about a specific experience by ID
| Argument | Type | Description |
|---|---|---|
| id* | string | The ID of the experience to retrieve |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "The ID of the experience to retrieve"
}
}
}List all category tags
No arguments.
{
"type": "object",
"properties": {}
}Render activity tiles for a list of activity IDs, returning an embeddable widget URI
| Argument | Type | Description |
|---|---|---|
| id* | string | ID or comma separate list of activity IDs to render as tiles |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "ID or comma separate list of activity IDs to render as tiles"
}
}
}Search for travel experiences with comprehensive filtering options. Returns available categories, tags, and regions with IDs for further filtering.
| Argument | Type | Description |
|---|---|---|
| query | string | When the user wants something w/ a specific keyword (bike, beer, art, etc) limit to experiences whose title contain a keyword. Never include location information. |
| tagId | string | When you have determined the user is interest in a specific vibe of activity (family friendly, romantic, etc) limit to only experiences with a specific tag (single tag ID) |
| latLng | string | When the user wants something NEAR a specific place, but not necessarily IN a specific place, limit to only those near a given lat_lng. ex: "37.7799,-122.2822". Don't use this for regions, instead use the search_regions and provide a region id. this is a good fallback if a specific region is lacking inventory. |
| endDate | string | Return experiences that are available on or before this date in YYYY-MM-DD format (e.g., '2025-06-20' would return things taking place ON or BEFORE the 20th) |
| regionId | string | When you have determined the user wants something in a specific region (found w/ search_regions) limit to only a specific region ID |
| startDate | string | Return experiences that are available on or after this date. YYYY-MM-DD format (e.g., '2025-06-19') |
| categoryId |
Search for regions by name
| Argument | Type | Description |
|---|---|---|
| limit | integer | Maximum number of regions to return (default: 50) |
| query* | string | Search query to match against region names |
{
"type": "object",
"required": [
"query"
],
"properties": {
"limit": {
"type": "integer",
"description": "Maximum number of regions to return (default: 50)"
},
"query": {
"type": "string",
"description": "Search query to match against region names"
}
}
}| string |
| Limit to only a specific activity category |
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "When the user wants something w/ a specific keyword (bike, beer, art, etc) limit to experiences whose title contain a keyword. Never include location information."
},
"tagId": {
"type": "string",
"description": "When you have determined the user is interest in a specific vibe of activity (family friendly, romantic, etc) limit to only experiences with a specific tag (single tag ID)"
},
"latLng": {
"type": "string",
"description": "When the user wants something NEAR a specific place, but not necessarily IN a specific place, limit to only those near a given lat_lng. ex: \"37.7799,-122.2822\". Don't use this for regions, instead use the search_regions and provide a region id. this is a good fallback if a specific region is lacking inventory."
},
"endDate": {
"type": "string",
"description": "Return experiences that are available on or before this date in YYYY-MM-DD format (e.g., '2025-06-20' would return things taking place ON or BEFORE the 20th)"
},
"regionId": {
"type": "string",
"description": "When you have determined the user wants something in a specific region (found w/ search_regions) limit to only a specific region ID"
},
"startDate": {
"type": "string",
"description": "Return experiences that are available on or after this date. YYYY-MM-DD format (e.g., '2025-06-19')"
},
"categoryId": {
"type": "string",
"description": "Limit to only a specific activity category"
}
}
}