agentorist

Booking gateway for AI agents — discover events, movies & hotels, hand off to partner checkout.

Should I use this

Quality & Safety

A
Description quality
94%
Schema completeness
88%
Naming quality
94%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,791Tokens (tool definitions)
~2.4 KBTypical response size
Moderate attention impact (1.40% 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": {
    "agentorist": {
      "url": "https://mcp.agentorist.com/mcp"
    }
  }
}

Remote endpoints

https://mcp.agentorist.com/mcpstreamable-http

What it can do

Tool inventory

Tools (7)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢list_verticals

List all booking verticals Agentorist currently supports. Returns a dict with each vertical's name and description. Call this first to discover what's bookable before constructing other tool calls.

Input Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "additionalProperties": true
}
🟢search(vertical, query, location, territory, when, ...)

Search for bookable items within a vertical.

Input Schema

{
  "type": "object",
  "properties": {
    "vertical": {
      "type": "string",
      "description": "One of the names returned by list_verticals (e.g. \"movies\",\n\"events\", \"experiences\", \"hotels\", \"cars\")."
    },
    "query": {
      "type": "string",
      "description": "Natural-language query — movie title, event keyword, tour name,\ntheme like \"beach getaway\", etc."
    },
    "location": {
      "type": "string",
      "description": "City, postcode, or \"lat,lng\"."
    },
    "territory": {
      "default": "US",
      "type": "string",
      "description": "ISO country code (US, GB, etc.). Default US."
    },
    "when": {
      "default": "",
      "type": "string",
      "description": "Optional ISO date filter (YYYY-MM-DD) for events."
    },
    "agent_client": {
      "default": "",
      "type": "string",
      "description": "Optional — name of the calling agent (Claude, ChatGPT, etc.)."
    },
    "locale": {
      "default": "",
      "type": "string",
      "description": "Optional BCP-47 locale ('en-US', 'fr-FR', 'de-DE', 'ja-JP', etc.).\nCurrently consumed by the 'experiences' vertical to localise the\nViator response and hand-off URL. Auto-detected from the query\nwhen the language is unambiguous."
    },
    "hotel_name": {
      "default": "",
      "type": "string"
    },
    "check_in": {
      "default": "",
      "type": "string"
    },
    "check_out": {
      "default": "",
      "type": "string"
    },
    "adults": {
      "default": 0,
      "type": "integer"
    },
    "children": {
      "default": 0,
      "type": "integer"
    },
    "rooms": {
      "default": 1,
      "type": "integer"
    },
    "budget_range": {
      "default": "",
      "type": "string"
    },
    "hotel_class": {
      "default": "",
      "type": "string"
    },
    "pickup_date": {
      "default": "",
      "type": "string"
    },
    "dropoff_date": {
      "default": "",
      "type": "string"
    },
    "driver_age": {
      "default": 0,
      "type": "integer"
    }
  },
  "required": [
    "vertical",
    "query",
    "location"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "additionalProperties": true
}
🟢search_all(query, location, when, territory, agent_client, ...)

Search every Agentorist vertical at once — the answer to "what's on?". Use this when the user's request spans verticals or doesn't clearly name one ("what's on tonight", "anything to do in Boston?", "Friday night plans"). For specific single-vertical queries ("movies tonight", "Italian restaurants"), `search_all` auto-narrows to the hinted vertical so you don't waste calls. Returns `results_by_vertical` keyed by movies/events/local, plus `total_count` and `bookable_total` for quick summaries.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "Natural-language query. Empty string is fine (= browse)."
    },
    "location": {
      "type": "string",
      "description": "City, postcode, or \"lat,lng\"."
    },
    "when": {
      "default": "",
      "type": "string",
      "description": "Optional time hint (\"tonight\", \"weekend\", or ISO date)."
    },
    "territory": {
      "default": "US",
      "type": "string",
      "description": "ISO country code (US, GB, etc.). Default US."
    },
    "agent_client": {
      "default": "",
      "type": "string",
      "description": "Optional — name of the calling agent."
    },
    "locale": {
      "default": "",
      "type": "string",
      "description": "Optional BCP-47 locale ('en-US', 'fr-FR', 'de-DE', etc.).\nForwarded to verticals that localise their response (experiences)."
    }
  },
  "required": [
    "query",
    "location"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "additionalProperties": true
}
🟢find_options(vertical, item_id, location, when, agent_client)

Find concrete bookable options for an item. For movies: showtimes for the given film. For events: ticket classes.

Input Schema

{
  "type": "object",
  "properties": {
    "vertical": {
      "type": "string",
      "description": "The vertical (e.g. \"movies\", \"events\")."
    },
    "item_id": {
      "type": "string",
      "description": "ID returned by `search` (film_id, event_id), or a title for fuzzy lookup."
    },
    "location": {
      "default": "",
      "type": "string",
      "description": "City, postcode, or \"lat,lng\" — required for movies."
    },
    "when": {
      "default": "today",
      "type": "string",
      "description": "ISO date (YYYY-MM-DD) or \"today\"/\"tomorrow\". Default \"today\"."
    },
    "agent_client": {
      "default": "",
      "type": "string",
      "description": "Optional — name of the calling agent (Claude, ChatGPT,\netc.). Pass the SAME value across search → find_options → book so\nthe trust stack can link the booking to its prior discovery."
    }
  },
  "required": [
    "vertical",
    "item_id"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "additionalProperties": true
}
🔴book(vertical, option_id, party_size, item_title, venue_name, ...)

Book an option (showtime, ticket class, etc.). If a partner API is connected, completes the booking inline with a confirmation code. Otherwise returns an affiliate deep link the agent should hand to the user.

Input Schema

{
  "type": "object",
  "properties": {
    "vertical": {
      "type": "string",
      "description": "The vertical (e.g. \"movies\", \"events\")."
    },
    "option_id": {
      "type": "string",
      "description": "showtime_id or ticket_id from find_options."
    },
    "party_size": {
      "default": 2,
      "type": "integer",
      "description": "Number of tickets/seats. Default 2."
    },
    "item_title": {
      "default": "",
      "type": "string",
      "description": "For affiliate fallback / logging."
    },
    "venue_name": {
      "default": "",
      "type": "string",
      "description": "For logging."
    },
    "location": {
      "default": "",
      "type": "string",
      "description": "For affiliate fallback."
    },
    "agent_client": {
      "default": "",
      "type": "string",
      "description": "Optional — name of the calling agent (Claude, ChatGPT, etc.)."
    }
  },
  "required": [
    "vertical",
    "option_id"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "additionalProperties": true
}
🟢list_venues(vertical, location, radius_km, agent_client)

List venues near a location, marked as bookable or not.

Input Schema

{
  "type": "object",
  "properties": {
    "vertical": {
      "type": "string",
      "description": "The vertical (e.g. \"movies\", \"events\")."
    },
    "location": {
      "type": "string",
      "description": "City, postcode, or \"lat,lng\"."
    },
    "radius_km": {
      "default": 15,
      "type": "number",
      "description": "Search radius. Default 15 km."
    },
    "agent_client": {
      "default": "",
      "type": "string",
      "description": "Optional — name of the calling agent (Claude, ChatGPT, etc.)."
    }
  },
  "required": [
    "vertical",
    "location"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "additionalProperties": true
}
🔴request_unsupported_booking(vertical, venue_name, item_title, when_iso, party_size, ...)

Log a booking request Agentorist can't yet fulfil. This is the demand-intelligence engine. Every call here becomes a data point sold to the venue as monthly missed-revenue insight. Optionally captures email so the user is notified when the venue joins.

Input Schema

{
  "type": "object",
  "properties": {
    "vertical": {
      "type": "string",
      "description": "Which vertical the request belongs to."
    },
    "venue_name": {
      "type": "string",
      "description": "Name of the venue the user wanted."
    },
    "item_title": {
      "type": "string",
      "description": "The film, event, or experience."
    },
    "when_iso": {
      "default": "",
      "type": "string",
      "description": "Requested time in ISO 8601 (optional)."
    },
    "party_size": {
      "default": 2,
      "type": "integer",
      "description": "Number of tickets."
    },
    "venue_chain": {
      "default": "",
      "type": "string",
      "description": "e.g. Vue, Odeon, Cineworld."
    },
    "location": {
      "default": "",
      "type": "string",
      "description": "City or area."
    },
    "user_email": {
      "default": "",
      "type": "string",
      "description": "Optional, for join-notification."
    },
    "agent_client": {
      "default": "",
      "type": "string",
      "description": "Calling agent (Claude, ChatGPT, etc.)."
    }
  },
  "required": [
    "vertical",
    "venue_name",
    "item_title"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "additionalProperties": true
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded7 tools
verifiedversion not recorded7 tools