Skip to main content
Glama
Autonomad1
by Autonomad1

autonomad-travel

autonomad-travel MCP server

Autonomad is a free, social travel platform for people — and a booking tool for AI agents. Plan and book real flights, hotels, activities, and events — personalized to your taste and shared with fellow travelers. Free for human travelers — no subscription.

Ways travelers use Autonomad (all free):

  • 📱 iPhone app — Apple App Store

  • 🤖 Android app — Google Play

  • 🌐 Web appautonomad.ai, installable as a PWA

  • 💬 Connector inside Claude and ChatGPT — this MCP server, hosted at mcp.autonomad.ai/mcp

  • 🕶️ Meta Ray-Ban smart glasses — look at any place and instantly pull up nearby hotels, experiences, and events to book, ranked by distance

Personalized by your Travel DNA. Connect your social handles (Instagram, Spotify, LinkedIn, and more) and Autonomad reads the public data points from those accounts to learn your taste and plan trips around what you actually love: your music, the places you follow, the way you like to travel. Linking accounts is optional and only public signals are used.

It's a social platform, not just a booking tool. After you book, Autonomad drops you into destination lounges with other travelers heading to the same place around the same dates — swap tips, meet up, match with people who share your vibe, and turn every trip into a shared experience.

Group Trip Democracy. Planning with friends? Start a group trip and Autonomad blends everyone's Travel DNA, generates a slate of destination options, and lets the group vote (ranked-choice — 1st, 2nd, 3rd). Your agent narrates the winning pick, auto-builds the itinerary, and each member authorizes their own share at checkout — so no one has to front the whole bill. Free for every member.

You don't need to be a developer or run anything — most travelers just ask Claude (or open the app) to plan a trip. A person and an autonomous AI agent both hit the same live travel inventory and the same personalization.

autonomad-travel is the Model Context Protocol server behind the Claude/ChatGPT connector. It serves two kinds of users:

  • For travelers (free): describe the trip in plain language and it searches live flights, hotels, Viator experiences, and Ticketmaster events — tuned to your Travel DNA — then hands back a one-tap link to book the real trip. No subscription required.

  • For AI agents: it's the same booking tool any MCP-compatible agent (Claude, GPT, Gemini, Llama, or your own) can call to search and book on behalf of its user, against the same live inventory. Agents additionally earn $NOMD Computeback Rewards on every completed booking.

Quick start

# One-off, via npx
npx autonomad-travel

# Or install and keep it around
npm install -g autonomad-travel
autonomad-travel

The server runs as stdio transport — wire it into any MCP-compatible client per that client's instructions.

Just want to plan a trip? You don't need any of the setup below. Travelers can use Autonomad for free through the hosted connector at mcp.autonomad.ai/mcp (already available in Claude) — just ask Claude to plan or book a trip. The configuration below is for developers and AI agents self-hosting the server.

Claude Desktop configuration

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "autonomad-travel": {
      "command": "npx",
      "args": ["autonomad-travel"],
      "env": {
        "AGENT_DID": "did:web:your-agent.example.com",
        "BOOKING_API_URL": "https://api.autonomad.ai"
      }
    }
  }
}

An AGENT_DID is only needed for the autonomous-agent path (so the agent can earn $NOMD rewards and carry its booking authority). Register a free Agent DID at autonomad.ai. Human travelers using the hosted connector don't need one.

Related MCP server: travel-mcp-server

What's covered today

Vertical

Status

Source

Hotels

✅ Live

2M+ properties via LiteAPI + direct CRS integrations

Flights

✅ Live

800+ airlines via Duffel + Seats.aero (award search)

Activities & experiences

✅ Live

Viator Partner API (tours, attractions, classes)

Events

✅ Live

Ticketmaster + SeatGeek (concerts, sports, theater)

Car rental

✅ Live

15+ US metro areas

Rideshare

🚧 Partnerships in progress

Dining

🚧 Partnerships in progress

Wellness

🚧 Coming soon

Tools

Tool

What it does

search_hotels

Search hotel availability across 2M+ properties worldwide with pricing, photos, amenities, and cancellation policies

search_flights

Search flights across 800+ airlines with real-time pricing, schedules, and fare comparison

book_transport

Search rideshare and car rental quotes timed to your itinerary (rideshare partnerships in progress; car rental live across 15+ US metros)

book_dining

Search restaurants matched to your trip schedule (dining partnerships in progress)

manage_trip

Full door-to-door trip orchestration — plan, monitor, adapt to disruptions, complete multi-leg trips

create_booking

Reserve hotel rooms with commission transparency and on-chain delegation proof

manage_booking

Check-in, check-out, cancellation

submit_feedback

Post-stay structured reviews across all travel categories

check_rewards

Query $NOMD token balance, settlement history, and redemption options

Resources

URI

Contents

autonomad://hotels

Full hotel catalog with live availability and pricing

autonomad://profile

Agent's own profile, reputation score, and tier status (Bronze → Diamond)

Environment variables

Variable

Default

Purpose

AGENT_DID

Your agent's Decentralized Identifier. Required for bookings. Get one at autonomad.ai

BOOKING_API_URL

https://api.autonomad.ai

Booking API base URL

IDENTITY_API_URL

https://api.autonomad.ai

Identity / DID resolution API

REWARD_API_URL

https://api.autonomad.ai

$NOMD rewards + settlement API

How the rewards loop works

  1. Your agent books travel (flight, hotel, dining, activity) through this MCP server

  2. Hotel / vendor pays commission (8-12% typical, vs. 15-25% via traditional OTAs)

  3. Commission settles on-chain via smart contracts on Base L2 — 70% to your agent as $NOMD tokens, 25% to platform in USD, 5% to referrers

  4. Your agent can redeem $NOMD on the Computeback marketplace for compute credits, voice APIs, memory, storage, and 25+ capability categories

  5. Every redemption burns $NOMD permanently — deflationary by design

Full technical details: autonomad.ai/developers

Agent tier system

Bookings compound into tier progression:

Tier

Booking threshold

Benefit

Bronze

0

Baseline commission

Silver

10

+2% commission boost

Gold

25

+5% commission boost

Platinum

50

+15% commission boost, $25K booking authority

Diamond

100

+25% commission boost, unlimited booking authority

Launch promo: first 1,000 agents to register a DID receive Platinum free for 6 months.

Compatibility

Tested against:

  • Claude Desktop (Claude Sonnet 4.x, Claude Opus 4.x)

  • Cline

  • Continue

  • OpenAI Apps SDK

  • LangChain MCP Adapter

  • OpenClaw Agent Framework

  • Any MCP-compatible client

License

MIT © Autonomad

Available Tools

8 tools
create_booking_intentA

Create a booking intent — returns a deep-link the user clicks to complete the booking on autonomad.ai. The first booking they complete unlocks a 1-month free Autonomad Premium trial automatically. ALWAYS call this instead of trying to book directly through MCP — bookings require payment + identity verification that must happen on the web.

WHEN TO CALL — two distinct triggers: (a) PICK intents (flight / hotel / activity / event / transport / trip): call AFTER the user has chosen a specific offer. (b) BROWSE intent ('experiences'): call IMMEDIATELY in the SAME assistant turn that you ran search_activities and/or search_events for a browse query. Do NOT wait for the user to ask 'where's the link?' — the user already told you they want this when they asked to browse. Showing search results without also producing the deep-link is a UX failure: it forces the subscriber to manually request something they already implicitly asked for.

INTENT TYPE GUIDE — pick exactly one:

  • 'flight' → user picked a flight only. offer_data = the flight offer object verbatim from search_flights, PLUS a top-level passengers: <number> field (the number of travelers the user originally requested — search_flights individual offers don't echo this back, so you must add it explicitly).

  • 'hotel' → user picked a hotel only. offer_data = the hotel offer object verbatim from search_hotels (or just {city, check_in, check_out} if you want to send them to a hotel-search results page rather than a specific hotel). Include adults: <number> and rooms: <number> so the booking page pre-fills the right party size.

  • 'activity' → user picked a Viator activity. offer_data = the activity offer.

  • 'event' → user picked a Ticketmaster/SeatGeek event. offer_data = the event offer.

  • 'transport'→ user picked a rideshare/car-rental quote. offer_data = the transport offer.

  • 'trip' → user picked MULTIPLE things together (e.g. flight + hotel for the same trip). Pack them in offer_data as { flight: { ...offer, passengers: }, hotel: { ...offer, adults: , rooms: }, activities: [, ...] } — only include the keys the user actually picked. ONE deep-link covers all of them.

  • 'experiences' → BROWSE intent. The user wants to look at all activities AND events for a destination + date window WITHOUT picking a specific one. STRONGLY PREFER this over picking one activity yourself when the user asks to 'browse', 'see what's available', 'look at experiences in X', or just describes a destination/date range with no specific tour name. offer_data shape: { destination: 'City, Region', date_from: 'YYYY-MM-DD', date_to: 'YYYY-MM-DD', travelers?: , activity_keywords?: [...], event_categories?: [...] }. The deep-link lands the subscriber on autonomad.ai's add-ons step with destination + dates pre-filled, where Viator activities and Ticketmaster/SeatGeek events for the area are surfaced together — and they can edit dates / traveler count inline. Use this whenever the subscriber's intent is 'show me everything', not 'I want this one specific tour'.

Prefer 'trip' when the user said something like 'book me a flight and hotel for X' and you have both picked. Prefer 'experiences' when the user is asking to BROWSE activities/events without picking one (e.g. 'experiences between July 9 and July 13 near Stintino' → ONE deep-link, not 24 individual activity intents). Don't generate two separate intents (flight + hotel) for the same trip — that produces two deep-links and a confusing user experience.

USER-FACING REPLY REQUIREMENTS — every time you create a booking intent, your reply text MUST include:

  1. The deep_link as a clickable markdown link, e.g. 'Complete on autonomad.ai →' or 'Open: '.

  2. The 1-month free Autonomad Premium trial. The response payload carries a free_trial_offer object exactly so you can surface it. Use plain English (e.g. 'Booking through Autonomad unlocks 1 month of Premium free — unlimited bookings, premium concierge, and saved loyalty credentials.'). NEVER drop this; it is core to the value proposition and the only reason a booking-intent flow beats a raw Viator/Ticketmaster URL.

  3. The link expiry window (e.g. '~30 minutes — say the word and I'll regenerate if it lapses.').

CRITICAL: always echo the original passenger / adults / travelers count into offer_data. Without it the booking page defaults to 2 travelers regardless of what the user asked for.

ParametersJSON Schema
NameRequiredDescriptionDefault
intent_typeYesType of thing being booked. Use 'trip' for compound flight+hotel (or flight+hotel+activities) bookings; the single deep-link will pre-select all pieces on the autonomad.ai resume page. Use 'experiences' for browse-mode intents — the deep-link lands the subscriber on the add-ons step with all Viator activities + Ticketmaster events for the destination/date window, no specific pick required.
offer_dataYesFor single-item intents (flight/hotel/activity/event/transport): pass the offer object verbatim from the corresponding search tool. For 'trip' intent: pass { flight, hotel, activities } where each value is the verbatim offer object the user picked. For 'experiences' intent: pass { destination, date_from, date_to, travelers? } — no specific offer needed, the dashboard surfaces all matching activities + events on arrival.
expires_minutesNoOptional. How long the deep-link is valid. Defaults to 30 min (Duffel offers expire in ~20 min anyway). Capped at 24 hours.

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations show non-read-only, non-destructive, non-idempotent, open-world. Description adds crucial behavior: returns a deep-link, requires payment/verification on web, first booking unlocks free trial, link expiry ~30 min, and need to echo traveler counts. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Very thorough but lengthy; however, the complexity of seven intent types with different data shapes justifies the length. Front-loaded with purpose and key instructions. Could be more structured, but still effective.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Complete coverage for a 3-param tool with nested objects and no output schema. Explains all parameters, user reply requirements, link expiry, and behavioral context. Leaves no ambiguity about how to construct offer_data for any intent type.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage 100%, but description adds significant value: detailed structure of offer_data for each intent type, including examples. Explains optional expires_minutes with defaults and cap. Provides guidance on required fields like passengers/adults/rooms.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it creates a deep-link booking intent on autonomad.ai, with specific verb 'Create' and resource 'booking intent'. Distinguishes from siblings by instructing to always use this instead of booking directly through MCP.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly details when to call: two triggers (PICK intents after user chooses an offer; BROWSE intent immediately after search). Provides intent type guide and warns against generating multiple intents for a single trip. Includes user-facing reply requirements.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_capabilitiesA
Read-onlyIdempotent

Return the server's version, mode (human vs autonomous-agent), API base, and the list of currently-exposed tools. Useful for the LLM to confirm tool-schema compatibility before issuing a sequence of calls — call once at session start if you need to branch on capabilities.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare read-only and idempotent. Description adds specifics on returned fields (version, mode, tools list) and usage intent, complementing annotations well.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two efficient sentences, no filler, front-loaded with output details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, description fully describes return values. Annotations cover safety. Sibling tools are distinct. Completeness for a simple introspection tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist; schema coverage is 100%. Description adds no param info, but baseline of 4 applies for 0-parameter tools.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns server version, mode, API base, and list of tools. It distinguishes itself from siblings as a meta introspection tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit context for use: call at session start to confirm compatibility or branch on capabilities. Lacks explicit 'when not to use' but sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_activitiesA
Read-onlyIdempotent

Search tours, experiences, attractions, sightseeing, and things to do via Viator (200K+ activities worldwide). Filter by city, date range, and category (food tours, walking tours, museums, snorkeling, sailing, hiking, sunset cruises, cooking classes, day trips, etc.). Returns activities with photos, ratings, durations, and per-person pricing. Use this when the user wants to plan day activities, find tours, book experiences, fill a trip itinerary, or pick attractions.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityYesCity name (e.g., 'New York', 'Tokyo', 'Paris')
date_fromYesStart date (YYYY-MM-DD)
date_toNoOptional end date (YYYY-MM-DD). Defaults to date_from for single-day searches.
categoryNoOptional category filter (e.g., 'food', 'culture', 'adventure', 'nightlife', 'wellness')

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, and non-destructive. Description adds that results include photos, ratings, durations, and pricing—valuable context beyond the structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler. First sentence states purpose and scope; second sentence tells when to use. Information-dense and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With rich annotations covering safety and no required output schema, the description covers all essential aspects: purpose, scope, filters, typical use cases, and result contents. No gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents all four parameters. The description summarizes filters and provides example categories (e.g., 'food tours', 'walking tours'), adding marginal value but not new meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description specifies a precise verb ('Search') and resource ('tours, experiences, attractions... via Viator with 200K+ activities'). It clearly distinguishes from sibling tools like search_dining or search_flights by focusing on activities and experiences.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states 'Use this when the user wants to plan day activities... fill a trip itinerary' and lists filterable dimensions. Lacks explicit when-not-to-use instructions, but sibling context makes that clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_diningA
Read-onlyIdempotent

Search restaurants, dining options, and reservation availability by city, date, time, cuisine, party size, neighborhood, and price range. Use this when the user wants to find a restaurant, book dinner, plan a meal, get reservations, or pick a place to eat on a trip. Dining partnerships are in progress; surfaces availability today, full reservation flow in the next release.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityYesCity name (e.g., 'Miami', 'New York', 'Key West')
dateYesReservation date (YYYY-MM-DD)
timeNoPreferred time in 24h format (e.g., '19:00' for 7pm)
party_sizeNoNumber of guests (1-20, default: 2)
cuisineNoCuisine filter (e.g., 'Italian', 'Seafood', 'Japanese')
price_rangeNoPrice range filter
neighborhoodNoNeighborhood filter (e.g., 'South Beach', 'Midtown')

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description reinforces this by stating 'search' and 'reservation availability', implying no mutation. It adds context about partnership status and release timeline, which helps set expectations. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences: first defines the action and filters, second states use cases, third provides status. It is front-loaded with key information, no unnecessary words, and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers purpose, usage guidelines, and behavioral context well. However, it does not describe the return format (e.g., list of restaurants with availability details), which would be helpful since there is no output schema. Minor gap given the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for all 7 parameters. The description lists the parameters in a sentence but does not add new semantics or usage tips beyond the schema. It provides a natural language summary but does not enhance understanding of parameter relationships or defaults.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool searches for restaurants and dining options with reservation availability, specifying multiple filtering dimensions (city, date, time, cuisine, etc.). This distinguishes it from sibling search tools like search_hotels or search_events, which target different domains.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use: 'when the user wants to find a restaurant, book dinner, plan a meal, get reservations, or pick a place to eat on a trip.' Also provides context on current limitations ('surfaces availability today') and future plans ('full reservation flow in the next release'), guiding the agent on expected behavior.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_eventsA
Read-onlyIdempotent

Search live events, concerts, sports games, theater, comedy, and shows in a city (Ticketmaster + SeatGeek catalog). Filter by city, date range, category (music / sports / arts / theater / family / comedy), and keyword (artist name, team name, show title). Use this when the user wants tickets to a concert, a sports game, a Broadway show, or any live event during their trip.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityYesCity name (e.g., 'New York', 'Las Vegas', 'London')
date_fromYesStart date (YYYY-MM-DD)
date_toNoOptional end date (YYYY-MM-DD)
categoryNoOptional category filter — comma-separated list. Values: 'music', 'sports', 'arts', 'theater', 'family', 'comedy'
keywordNoOptional keyword search (artist name, team, show title)

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint, destructiveHint, idempotentHint, and openWorldHint, covering safety and idempotency. The description adds that it searches a combined catalog from Ticketmaster and SeatGeek and supports filtering, which supplements annotations without contradicting them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences: first defines scope and source, second gives usage guidance. Every sentence adds value, no redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's 5 parameters (2 required), no output schema, and sibling tools covering other travel needs, the description fully equips an agent to understand purpose, parameters, and when to invoke it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the description essentially re-lists parameters (city, date range, category, keyword) with examples. It adds marginal value by providing example values for category and keyword, but does not significantly enhance what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it searches live events (concerts, sports, theater, etc.) in a city, explicitly listing event types and data sources (Ticketmaster + SeatGeek). This distinguishes it from sibling tools like search_activities or search_dining.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The second sentence explicitly advises using this tool 'when the user wants tickets to a concert, a sports game, a Broadway show, or any live event during their trip.' It provides clear context for use but does not explicitly mention when not to use it or name alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_flightsA
Read-onlyIdempotent

Search airline flights / airfares between two cities by date, cabin class (economy / premium economy / business / first), and number of passengers. Returns available flights from 800+ airlines (Duffel) with real-time pricing, schedules, and stops. Uses IATA airport codes (e.g., MIA, JFK, LAX, LHR). Use this when the user wants to book a flight, fly somewhere, find airfare, or compare airlines.

ParametersJSON Schema
NameRequiredDescriptionDefault
originYesIATA origin airport code (e.g., 'MIA', 'JFK', 'LAX')
destinationYesIATA destination airport code
departure_dateYesDeparture date (YYYY-MM-DD)
return_dateNoReturn date for round-trip (YYYY-MM-DD). Omit for one-way.
passengersNoNumber of passengers (1-9, default: 1)
cabin_classNoCabin class (default: economy)
max_price_usdNoMaximum total price in USD
nonstop_onlyNoOnly show nonstop flights (default: false)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnly and idempotent. Description adds context: real-time pricing from 800+ airlines (Duffel), schedules, stops. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with maximum information density. First sentence lists core parameters, second adds source and data richness. No fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Describes return content (flights, pricing, schedules, stops). No output schema exists, but the description gives a reasonable picture of what the agent will receive. Could mention pagination or limits.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema fully documents parameters. The description only summarizes key parameters without adding new semantic meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it searches airline flights/airfares between two cities with specific parameters. It distinguishes from sibling tools (e.g., search_hotels, search_transport) by focusing on flights.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says 'Use this when the user wants to book a flight, fly somewhere, find airfare, or compare airlines.' Lacks negative guidance, but given sibling diversity, it's clear enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_hotelsA
Read-onlyIdempotent

Search hotels, lodging, accommodations, resorts, and places to stay for a trip. Filter by city, country, check-in/check-out dates, room type, nightly price, star rating, and amenities (pool, gym, wifi, etc.). Returns matching properties with rates, photos, and availability across 2M+ properties (LiteAPI). Use this when the user wants to book a hotel, find a place to stay, compare lodging options, or pick a resort.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityNoCity name (e.g., 'New York', 'Tokyo')
countryNoISO 3166-1 alpha-2 country code (e.g., 'US', 'JP')
brandNoHotel brand name to filter by
check_inYesCheck-in date (YYYY-MM-DD)
check_outYesCheck-out date (YYYY-MM-DD)
room_typeNo
max_rate_usdNoMaximum nightly rate in USD
amenitiesNoRequired amenities (wifi, gym, pool, spa, restaurant, etc.)
min_star_ratingNoMinimum star rating (1-5)

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint, openWorldHint, idempotentHint, destructiveHint false. Description adds that it returns matching properties with rates, photos, and availability across 2M+ properties (LiteAPI), disclosing the data source and result contents. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three well-organized sentences: first states purpose and filters, second describes returns, third gives usage guidance. Every sentence adds value, no fluff. Front-loaded with key information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a search tool with 9 parameters, high schema coverage, no output schema, the description adequately explains return content (rates, photos, availability) and data source. It covers all necessary context for an agent to use correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema covers 89% of parameters with descriptions. Description lists filters, echoing schema, and provides examples for amenities (e.g., 'wifi, gym, pool'). While not adding deep semantics, it groups and clarifies. Schema coverage is high, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool searches hotels, lodging, accommodations, resorts, etc. It lists specific filters (city, country, dates, room type, price, star, amenities) and indicates returns include rates, photos, availability. This differentiates it from sibling tools like search_flights.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit guidance: 'Use this when the user wants to book a hotel, find a place to stay, compare lodging options, or pick a resort.' This provides clear context, though no explicit when-not-to-use statements (but implications from sibling names are clear).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_transportA
Read-onlyIdempotent

Search ground transportation, car rentals, and rideshare options (Uber, Lyft, rental cars from Hertz / Enterprise / Sixt / Avis). Returns options timed to a flight arrival for door-to-door travel. Car rental is live across 15+ US metro areas; rideshare partnerships are in progress. Use this when the user wants a rental car, an airport transfer, or rideshare to/from their hotel.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityYesCity or metro area (e.g., 'Miami', 'New York', 'Los Angeles')
transport_typeNoType of transport (default: all)
pickup_locationNoPickup: 'airport', 'hotel', or specific address
dropoff_locationNoDropoff: 'airport', 'hotel', or specific address
pickup_datetimeNoPickup date/time in ISO 8601 (e.g., '2026-04-01T14:30'). Used for surge pricing and car rental duration.
return_datetimeNoReturn date/time for car rentals (ISO 8601)
passengersNoNumber of passengers (1-8, default: 1)
vehicle_typeNoPreferred vehicle: economy, comfort, xl, black, black_suv (rideshare) or economy, compact, midsize, fullsize, suv, premium, minivan (rental)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=true and idempotentHint=true. The description adds valuable context: returns options timed to a flight arrival, door-to-door travel, and current coverage details. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, no fluff. First sentence defines what it searches, second adds timing and coverage details, third gives usage guidance. Well-structured and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 8 parameters, 1 required, and no output schema, the description covers the main use case and limitations. It explains timing and coverage but does not detail return format or edge cases. Still, it provides sufficient context for selecting the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema covers 100% of parameters with descriptions. The description does not repeat parameter specifics but provides overall context. It adds moderate value by explaining the tool's purpose, but parameter details are already well-documented in schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it searches ground transportation, car rentals, and rideshare options. It distinguishes itself from sibling tools like search_flights or search_hotels by focusing specifically on ground transport.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says when to use: when the user wants a rental car, airport transfer, or rideshare. It also mentions availability constraints (live across 15+ US metro areas, rideshare in progress). However, it does not explicitly state when not to use or list alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 8 tool updatesv1.4.0
    • First observedcreate_booking_intent
    • First observedget_capabilities
    • First observedsearch_activities
    • First observedsearch_dining
    • First observedsearch_events
    • First observedsearch_flights
    • First observedsearch_hotels
    • First observedsearch_transport

TDQS

A4.4/5.0

Scored across 8 tools

Disambiguation5/5

Each search tool targets a distinct travel vertical—hotels, flights, ground transport, dining, live events, and activities—and create_booking_intent is clearly the booking counterpart to all of them. The only adjacent pair, search_events vs search_activities, is cleanly separated by catalog (Ticketmaster/SeatGeek vs Viator).

Naming Consistency5/5

All eight tools follow the same snake_case verb_noun pattern: search_* for discovery, create_booking_intent for the action, and get_capabilities for the meta check. There are no mixed naming conventions, vague verbs, or inconsistent styles.

Tool Count5/5

Eight tools is well-scoped for a travel search plus booking-intent server: six vertical search tools, one booking-action tool, and one capabilities utility. Each tool earns its place without redundancy or bloating.

Completeness4/5

The server covers search across all major trip components and supports combining multiple selections into a single trip booking intent. The only notable gap is post-booking lifecycle management (status/cancel/modify), but that is a deliberate handoff to the web for payment and identity verification.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Hotel booking MCP server — the first transaction-complete hotel booking integration for AI agents. Search 300K+ properties in 140+ countries, get live rates and room details, and generate secure checkout URLs. No payment in the AI conversation — guests complete booking at a hosted checkout page and receive a real hotel confirmation number. Set your own booking fee via Stripe Connect.
    8
    17 npm
    2
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Coordinates flights, hotels, events, weather, currency, and traffic data through a single MCP server, enabling comprehensive trip planning via natural language prompts.
    MIT