agentorist
Booking gateway for AI agents — discover events, movies & hotels, hand off to partner checkout.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
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-httpWhat it can do
Tool inventory
Tools (7)
🟢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
Evidence