Skip to main content
Glama

Doorfarer

Server Details

Door-to-door trips: every airport within reach of your home, with the train or bus there.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A4.6/5.0

Scored across 4 tools

Disambiguation5/5

Each tool has a clearly distinct role in the travel workflow: search bookable trips, check monthly price patterns, inspect a selected trip, or report a problem. find_trips and price_calendar are related, but their descriptions sharply distinguish live/bookable search from instant historical fare guidance.

Naming Consistency4/5

All tool names use consistent snake_case and are readable. However, they mix verb_noun forms (find_trips, send_feedback) with noun_noun forms (price_calendar, trip_details), so the pattern is not fully uniform.

Tool Count5/5

Four tools is well-scoped for a focused door-to-door travel search server. Each tool earns its place: search, price calendar, trip details, and feedback.

Completeness4/5

The surface covers the core discovery lifecycle: find trips, assess flexible timing, inspect a chosen trip with booking links and calendar file, and report failures. Native booking or transaction tools are absent, but the workflow is not a dead end because booking links are returned.

Available Tools

4 tools
find_tripsFind door-to-door tripsA
Read-onlyIdempotent
Inspect

Finds the best round trips from where someone lives, not just from one airport: it adds the train or bus to every airport they can reach and ranks all options door to door, by price, by total travel time, or balanced. Use it when someone wants flights from their home town, could fly from several airports, or asks for the cheapest or fastest way to get somewhere, e.g. "I live in New Haven: should I fly to Lisbon from JFK, Newark, Boston or Hartford?" Not for a search from one airport already chosen. For a one-way trip set one_way (the trip length is then ignored). Multi-city: search each leg as one_way only when the user gave dates for it; otherwise ask for the dates. Set mode only when the user says how they get to the airport (car, train, bus, any): by default a home in the US compares driving, a taxi to a near airport and public transport, and a home elsewhere uses the train or bus. A named departure airport is an ordinary search: pass it as from_airports, with the home town the user gave. A month or holiday without a year means the next one coming; don't ask which year, and don't ask for the trip length or to confirm a town: search, and the answer says what it assumed. Any town or village works. The first search from a town we haven't seen takes about 20 seconds while we look up its train and bus connections; tell the user you're checking the connections from their town to each airport. Later searches from that town take a second or two. Give the home town and where to: airport, city or country codes, a list of them, or a region such as "Iberia" or "Southeast Asia". For "anywhere", a continent ("Asia") or "somewhere warm" it finds the cheapest places itself: pass "anywhere", "abroad" (another country) or the continent, or for warm, sunny or a beach the countries that fit the season with anywhere true; it searches the best 6 cities door to door. Dates are optional, but dates says where they came from: use "assumed" when the user gave none and you picked them (or left them out). Without them it searches departures in the next 3 months at 2-14 nights and says so. If the user gave no hint of when at all, one quick question about timing is fine. Example call: {"home": "New Haven", "destinations": ["LIS"], "dates": "from_user", "depart_from": "2027-03-01", "depart_to": "2027-03-31", "nights_min": 5, "nights_max": 9, "travellers": 2}. Show the answer's rows as a table with the airports each trip flies from and to, and give every booking link exactly as returned, as a clickable link (don't shorten or rewrite it); show the picks and at most a few more rows, and relay the answer's notes. Airports more than 8.5 hours from the door are left out and named in the answer (max_ground_hours changes that: set it only if the user says how far they would travel). Say when a ground leg is an estimate. If the answer's status isn't "ok", tell the user plainly what its note says and don't invent prices. Keep the user's own dates, trip length and places: if nothing is found, say so and offer to widen them, instead of widening on your own. Prices are in the traveller's home currency unless currency is given, per person; use the totals the answer gives for a party and don't convert or add up prices yourself. Prices come from recent searches on Aviasales and can change. Booking links are affiliate links: Doorfarer may earn a commission if you book, at no extra cost to you. Say so when you show them, and only then. When the user picks a trip, trip_details gives it step by step with a calendar file; when they ask which month is cheapest, price_calendar answers first, instantly. If an answer is wrong or confusing, report it with send_feedback.

NameRequiredDescriptionDefault
homeYesThe traveller's home town or village, e.g. "New Haven" or "Hamden, US". Not an airport. Add the country when the name is common. At most 80 characters.
modeNoHow the user gets to the airport: public (train or bus), train, bus, car (their own, parked at the airport), or any (car, taxi and public compete). Leave out unless the user says: then any for a home in the US, public elsewhere.
datesYes"from_user" whenever the user named any time at all (a month, season, holiday, "next week"); "assumed" only when they named none and you picked dates or left them out.
limitNoRows to return, 1-25. Default: the picks plus the best trip from each airport.
one_wayNoTrue if the user wants one way only: then the trip length is ignored.
anywhereNoTrue to find the cheapest places anywhere in the countries or regions named, instead of searching each one's biggest airports. A continent (Asia, Europe), "anywhere" or "abroad" (outside the home country) in destinations always searches this way. For "somewhere warm" or "a beach", pass the countries that fit the season and set this.
currencyNoISO code (USD, GBP, EUR) to show prices in. Default: the traveller's home currency.
priorityNoWhat matters most.balanced
depart_toNoThe window to leave in: last day. A window of at most 183 days, within the next 12 months.
nights_maxNoTrip length in nights: longest. Default 14. 1 to 30.
nights_minNoTrip length in nights: shortest. Default 2. 1 to 30.
travellersNoAdults travelling together. 1 to 9.
depart_fromNoThe window to leave in: first day. Leave out with depart_to for the next 3 months. A window of at most 183 days, within the next 12 months.
destinationsYesWhere to: airport codes (LIS), city codes (NYC), country codes (PT), a region, a continent (Asia), "anywhere" or "abroad" (outside the home country). At most 6.
from_airportsNoOnly these departure airports. For narrowing a previous answer. At most 8.
max_ground_hoursNoThe most hours from the front door to the departure airport, one way. Default 8.5: farther airports are left out and named in the answer. Set it only when the user says how far they would travel to the airport, or to include the far ones the answer names.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations only cover the safety profile (readOnly, idempotent, open-world); the description adds the material behavior: first search from an unknown town takes ~20 seconds, later ones a second or two, prices come from recent Aviasales searches and can change, booking links are affiliate links, an 8.5-hour ground cutoff drops and names airports, and a non-"ok" status must be relayed rather than prices invented.

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

Conciseness3/5

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

Purpose and routing are front-loaded and most sentences carry real instruction, but the block is very long and several rules are stated twice (dates semantics, the anywhere/warm-country handling, the max_ground_hours default already in the schema), and output-formatting guidance is interleaved with search guidance rather than grouped.

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 16-parameter tool with no output schema, the description still tells the agent what the answer contains (rows with origin/destination airports, notes, status, booking links, totals and currency) and how to present it. Nothing required to call it or interpret the result correctly is missing.

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?

Schema coverage is 100%, so the baseline is 3, but the description adds interpretation rules absent from the schema: a month or holiday without a year means the next one, don't ask for trip length, dates "assumed" vs "from_user" when the user gave no timing, and set mode only when the user states how they reach the airport. A worked example call anchors several parameters at once.

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?

States a specific verb and resource with scope: door-to-door round trips from a home town rather than from a single airport, ranking by price, total travel time, or balanced. It explicitly names the excluded case ("Not for a search from one airport already chosen"), so it is distinguishable from a plain flight search at a glance.

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?

Gives explicit triggers (user names a home town, several airports, or asks for cheapest/fastest), explicit exclusions (single airport already chosen), and per-case routing: one_way for one-way, leg-by-leg for multi-city with dates only, ask for dates otherwise. It also routes to siblings — trip_details when a trip is picked, price_calendar for cheapest-month questions, send_feedback for bad answers.

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

price_calendarCheapest month from homeA
Read-onlyIdempotent
Inspect

Shows the cheapest month to travel from someone's home town to a place, for each airport within reach: what fares on each route usually cost per month (from the fares Doorfarer has seen, not live prices) plus the train or bus to the airport. Instant. Use it when the user's dates are flexible or they ask when it's cheapest to go; then call find_trips for the month they choose to get bookable trips. Needs the home town; months as "2027-03", at most 12. Prices per person, in the home currency unless currency is given.

NameRequiredDescriptionDefault
homeYesThe traveller's home town or village, e.g. "New Haven" or "Hamden, US". Not an airport. Add the country when the name is common.
one_wayNoTrue for one-way fares.
currencyNoISO code (USD, GBP, EUR). Default: the home's.
month_toNoLast month. Default: 6 months in all.
month_fromNoFirst month, "2027-03". Default: this month.
destinationsYesWhere to: airport codes (LIS), city codes (NYC) or country codes (PT).

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already cover read-only/idempotent/non-destructive, and the description adds genuinely new context: prices come from observed fares, not live availability, and results are 'Instant'. It also discloses the ground-transport leg and per-person/home-currency pricing. Slightly short of 5 because it doesn't say how the estimates should be caveated for booking.

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?

Front-loaded with the core definition, then usage, then the hand-off, then prerequisites and units. Dense but every clause carries information; only the pricing-unit sentence trails slightly long.

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?

With no output schema, the description carries the burden of explaining what comes back ('what fares on each route usually cost per month ... plus the train or bus to the airport'), which it does. It leaves the exact shape of the per-airport, per-month result implicit.

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?

Schema coverage is already 100%, so baseline is 3, but the description adds constraints the schema doesn't: month strings must be '2027-03' with at most 12 months, and prices default to the home currency unless `currency` is given. It also reinforces that 'home' is a town, not an airport.

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?

States a specific verb and resource ('Shows the cheapest month to travel from someone's home town to a place, for each airport within reach') and immediately narrows scope to fare history plus ground transport. An agent can distinguish it from find_trips without opening either schema.

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?

Explicit trigger ('when the user's dates are flexible or they ask when it's cheapest to go') and an explicit hand-off ('then call find_trips for the month they choose to get bookable trips'). It also states a prerequisite: needs the home town, not an airport.

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

send_feedbackReport a problem with DoorfarerAInspect

Tell Doorfarer's maker where Doorfarer fell short, so it can be fixed. Use it when a find_trips answer was wrong, confusing, or missing something you needed to help, or when the user asks you to pass something on. Write as the assistant that used the tool: what you asked for, what came back, what you expected instead. The report is about Doorfarer only, never about the user: leave out names, contact details, travel plans, reasons for travelling and anything the user said about themselves. Be specific and honest, including when the problem may have been your own call. Pass the search_id from the answer's last line. One report per search. If the user asked you to report something, tell them it's sent.

NameRequiredDescriptionDefault
kindYesbug: something is wrong. confusing: right but hard to use. idea: something that would help.
search_idNoThe id from the find_trips answer this is about, e.g. "s_7f3kq2m9xa".
suggestionNoWhat would have helped. At most 400 characters.
what_happenedYesWhat you asked for, what came back and what you expected. About Doorfarer, not the user. At most 600 characters.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations only say this is a non-read-only, non-destructive, closed-world, non-idempotent call. The description adds what annotations cannot: the report is transmitted to the product maker, is scoped to Doorfarer and never the user, and must exclude names, contact details, travel plans and personal disclosures. It also tells the agent to inform the user the report was sent, closing the loop on a write whose result is otherwise invisible with no output schema.

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?

Purpose and trigger conditions are front-loaded, followed by writing guidance, privacy rules and bookkeeping. Every sentence contributes, though the privacy paragraph and the 'be specific and honest' sentence overlap slightly and could be tightened into one clause.

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?

With no output schema, the description supplies the crucial missing return behavior — tell the user it's sent — and fully specifies the privacy boundary and deduplication rule. It stops short of saying whether the report is attributed to the assistant or whether the maker may reply, a minor gap for a fire-and-forget feedback 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?

Schema coverage is 100%, so the parameter definitions already carry the burden. The description still adds operational value by telling the agent where search_id comes from ('the answer's last line') and by constraining one report per search, plus guidance on what belongs in what_happened that the schema only paraphrases.

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?

Names a concrete verb-and-resource pair — send a report to Doorfarer's maker about where the product fell short — and frames its purpose as product feedback, which cleanly separates it from the read-only siblings find_trips, price_calendar and trip_details. An agent can tell instantly that this is the only outgoing-report tool in the set.

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?

Gives explicit trigger conditions: a find_trips answer that was wrong, confusing or missing information, or an explicit user request to pass something on. It also states the cadence constraint 'One report per search', which prevents duplicate filings, and defines the agent's voice when writing the report.

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

trip_detailsTrip step by stepA
Read-onlyIdempotent
Inspect

Shows one trip from a find_trips answer step by step, door to door: leaving home, the train or bus to the airport, the airport wait, the flight, the transfer into the city and arrival, then the way back, with local times. Also gives the booking link and a calendar file (.ics) the user can add. Pass a trip id from the find_trips answer ("Trip ids, row by row", or a row's id). Use it when the user picks a trip or asks how the journey works. Ids are kept for 72 hours.

NameRequiredDescriptionDefault
trip_idYesA trip id from the find_trips answer, e.g. "t_k3m9q2xa".

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, but the description adds meaningful context beyond them: local times, booking link, .ics calendar file, and the 72-hour retention window for trip ids. Those details materially affect whether and how an agent should call the tool.

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 front-loaded with the core behavior and then adds the necessary input source and retention constraint. Every sentence earns its place by clarifying what is returned or how to obtain the required id.

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 one required parameter, full schema coverage, and annotations covering safety traits, the description supplies the remaining operational context: what the output contains, how to obtain the id, and how long ids remain valid. No output schema is present, but the description sufficiently explains the return content.

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?

Schema coverage is 100%, so the baseline is 3. The description goes beyond the schema by explaining where the trip id comes from in the find_trips answer and by adding the important 72-hour retention constraint, though it does not add format or validation detail beyond that.

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 states a specific verb and resource: it shows one trip from a find_trips answer step by step. It clearly distinguishes this from the sibling find_trips by framing this as the detailed view of a selected trip, and it enumerates the journey segments the tool returns.

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?

It explicitly says when to use the tool: when the user picks a trip or asks how the journey works. It also routes the agent to the sibling find_trips as the source of the required trip id, which gives clear alternative-source guidance.

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. 4 tool updates
    • First observedfind_trips
    • First observedprice_calendar
    • First observedsend_feedback
    • First observedtrip_details

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources