mcp

Build travel itineraries with Peek's 300k+ experiences. Search, details, and availability.

Should I use this

Quality & Safety

A
Description quality
93%
Schema completeness
87%
Naming quality
93%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~721Tokens (tool definitions)
~1.2 KBTypical response size
Moderate attention impact (0.56% 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://mcp.peek.com"
    }
  }
}

Remote endpoints

https://mcp.peek.comstreamable-http

What it can do

Tool inventory

Tools (6)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢experience_availability(endDate, id, quantity, startDate)

Get availability information for a specific experience including dates, times, and pricing

Input Schema

{
  "type": "object",
  "properties": {
    "endDate": {
      "description": "End date inclusive in YYYY-MM-DD format (e.g., '2025-06-20' would return things taking place ON or BEFORE the 20th)",
      "type": "string"
    },
    "id": {
      "description": "The ID of the experience",
      "type": "string"
    },
    "quantity": {
      "description": "Number of travelers",
      "type": "integer"
    },
    "startDate": {
      "description": "Start date inclusive YYYY-MM-DD format (e.g., '2025-06-19')",
      "type": "string"
    }
  },
  "required": [
    "id",
    "quantity",
    "startDate",
    "endDate"
  ]
}
🟢experience_details(id)

Get detailed information about a specific experience by ID

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "description": "The ID of the experience to retrieve",
      "type": "string"
    }
  },
  "required": [
    "id"
  ]
}
🟢list_tags

List all category tags

Input Schema

{
  "type": "object",
  "properties": {}
}
🟢render_activity_tiles(id)

Render activity tiles for a list of activity IDs, returning an embeddable widget URI

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "description": "ID or comma separate list of activity IDs to render as tiles",
      "type": "string"
    }
  },
  "required": [
    "id"
  ]
}
🟢search_experiences(categoryId, endDate, latLng, query, regionId, ...)

Search for travel experiences with comprehensive filtering options. Returns available categories, tags, and regions with IDs for further filtering.

Input Schema

{
  "type": "object",
  "properties": {
    "categoryId": {
      "description": "Limit to only a specific activity category",
      "type": "string"
    },
    "endDate": {
      "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)",
      "type": "string"
    },
    "latLng": {
      "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.",
      "type": "string"
    },
    "query": {
      "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.",
      "type": "string"
    },
    "regionId": {
      "description": "When you have determined the user wants something in a specific region (found w/ search_regions) limit to only a specific region ID",
      "type": "string"
    },
    "startDate": {
      "description": "Return experiences that are available on or after this date. YYYY-MM-DD format (e.g., '2025-06-19')",
      "type": "string"
    },
    "tagId": {
      "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)",
      "type": "string"
    }
  }
}
🟢search_regions(limit, query)

Search for regions by name

Input Schema

{
  "type": "object",
  "properties": {
    "limit": {
      "description": "Maximum number of regions to return (default: 50)",
      "type": "integer"
    },
    "query": {
      "description": "Search query to match against region names",
      "type": "string"
    }
  },
  "required": [
    "query"
  ]
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded6 tools
verifiedversion not recorded6 tools