Skip to main content
Glama

Server Details

Tineo exposes an MCP server at https://api.tineo.ai/mcp for authorized tool use.

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
Uptime
100.0% over 22 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

B3.4/5.0

Scored across 99 tools

Disambiguation3/5

Several tool groups overlap: discover vs search_hotels/search_attractions/search_tours, places_search vs cities_search, and multiple booking-link and flight-lookup tools. Descriptions are detailed and often cross-reference alternatives, which helps, but with 99 tools misselection remains plausible.

Naming Consistency3/5

Mostly snake_case and readable, but conventions are mixed: trip_create vs get_trip_weather vs search_hotels vs discover, plus singular/plural pairs like library_list_item_add and library_list_items_add. There is no single predictable verb_noun or noun_verb pattern across the set.

Tool Count1/5

99 tools far exceeds the 50+ threshold for an extreme mismatch. Even for a broad travel assistant, this is an unwieldy surface with high selection cost and many overlapping capabilities.

Completeness3/5

The surface covers many domains broadly, but there are notable lifecycle gaps: no library-list create, no trip-expense delete, no friend removal, and no travel-document create/update/delete. These are more than minor omissions for a mature travel-management server.

Available Tools

99 tools
affiliate_program_catalogAffiliate Program CatalogA
Read-onlyIdempotent
Inspect

Return Tineo's travel-affiliate catalog with truthful implementation status. Use only for questions about supported affiliate programs, never for a link to a specific or previously searched travel result. With generic search intent, validated generic adapters may include safe Tineo-owned CTA links. A card with bookingLink=null is metadata only, not a booking handoff or live inventory.

NameRequiredDescriptionDefault
limitNoOptional result cap. Defaults to 54.
localeNoOptional locale. Defaults to en.
endDateNoOptional local end/check-out date in YYYY-MM-DD format.
trip_idNoOptional Tineo trip ID (from trips_list) this request is for. Used only to default the currency to that trip's currency when currency is omitted and the user has no preferred currency; ignored if the trip is not found or not accessible to the user.
currencyNoOptional ISO-style three-letter display currency. Omit to use the user's preferred currency, then the currency of the trip given by trip_id, then USD.
locationNoOptional city or destination used to build the provider search.
verticalNoOptional category filter, such as Hotels, Tours, Flights, Trains, or Transfers.
startDateNoOptional local start/check-in date in YYYY-MM-DD format.
travelersNoOptional traveler count. Defaults to 1.
searchTermNoConcrete search intent. Required to generate booking CTA buttons.
includeResearchNoInclude catalogued/research programs. Defaults to true.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the burden is lower. The description adds real behavioral context beyond them: generic adapters may attach safe Tineo-owned CTA links, and a card with bookingLink=null is metadata only rather than a booking handoff or live inventory. This meaningfully clarifies what the output can and cannot do.

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?

Four compact sentences, with the core purpose front-loaded before the exclusion and the output caveats. Each sentence carries a distinct constraint, though the phrasing ('truthful implementation status', 'validated generic adapters') is denser than needed.

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?

There is no output schema, so the description compensates by explaining the bookingLink=null case and CTA-link behavior. With all 11 parameters optional and fully schema-documented, plus annotations covering safety, the remaining gaps are minor and an agent has enough to invoke it 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?

Schema description coverage is 100%, so all 11 parameters are already documented, making 3 the baseline. The description references search intent (mapping loosely to searchTerm) and bookingLink semantics but adds no syntax, format, or default detail beyond the schema. No parameter-specific value is added.

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

Purpose4/5

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

States a specific verb ('Return') and resource ('Tineo's travel-affiliate catalog') with the qualifier 'truthful implementation status'. It distinguishes itself from booking-link siblings by saying it is 'never for a link to a specific or previously searched travel result', so an agent can separate it from flight_booking_link/ground_transfer_booking_links. Slightly muddied by the abstract phrase 'truthful implementation status'.

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?

Gives an explicit use condition ('Use only for questions about supported affiliate programs') and an explicit exclusion ('never for a link to a specific or previously searched travel result'), which routes the agent toward the booking-link tools. It does not name the sibling tools directly, so the alternative identification is inferred rather than stated.

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

assistant_airbnb_search_tripSearch Airbnbs for a TripA
Read-onlyIdempotent
Inspect

Search Airbnb listings for an existing Tineo trip. Derives location and dates from the trip; the model may override. location must be a city or area, not a whole country (ask the user which city). Each card has distance_km from the requested place and in_requested_area; listings outside the area come last. If none are in the area, say so with their distances and do NOT re-search the same place with a reworded location string. Amenity filtering only via the amenities enum; there is NO keyword/free-text filter, so tell the user anything else can't be filtered. If structuredContent.status is 'unavailable', do NOT retry the same search: share structuredContent.fallback_search_url (a prefilled airbnb.com search), offer a hotel search, or a support ticket.

NameRequiredDescriptionDefault
adultsNo
infantsNoInfants under 2. Airbnb does not count them as guests.
trip_idYesTineo trip ID. Defaults below are derived from this trip when omitted.
check_inNoCheck-in date YYYY-MM-DD.
childrenNo
currencyNoISO 4217 currency code (default USD).
locationNoOptional override for the trip's destination.
min_bedsNo
amenitiesNoOnly listings with ALL of these amenities. These are the only supported amenity filters; there is no keyword/free-text filter.
check_outNoCheck-out date YYYY-MM-DD.
price_maxNo
price_minNo
room_typeNo
max_resultsNoDefault 5, max 5.
min_bedroomsNo
min_bathroomsNo

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/openWorld, so the safety bar is covered, yet the description adds substantial behavior beyond them: location and dates are derived from the trip with model override, out-of-area listings are sorted last, and the unavailable-status path has a no-retry policy with three concrete fallbacks. This is genuine operational context, not restatement.

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 the trip-derivation rule are front-loaded, and every sentence carries an actionable rule rather than filler. It runs long as a single dense paragraph, so the fallback and no-search-substitution rules are slightly less scannable than they could be, but nothing is wasted.

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, no-output-schema tool, the description is unusually complete: it explains card fields (distance_km, in_requested_area), ordering, the empty-area case, the filter limitation, and the structuredContent.status/fallback_search_url contract. An agent has what it needs to call the tool and to handle its edge outcomes without an output schema.

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?

With 16 parameters and 50% schema coverage, the description compensates well by clarifying the most error-prone inputs: location must be a city/area rather than a country, and the amenities enum is the only filter (no keyword/free-text). It adds little for numerics like adults/children/min_beds/price/room_type, which remain schema-only.

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 (Search) and resource (Airbnb listings) scoped to 'an existing Tineo trip,' which cleanly separates it from the sibling assistant_airbnb_search_user that presumably searches by user profile rather than trip. An agent can identify the tool and its scope without opening the 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?

Gives explicit when-to-use and when-not guidance: location must be a city, not a country (ask the user), do not re-search the same place with reworded strings when nothing is in the area, and if structuredContent.status is 'unavailable' do not retry but instead use fallback_search_url, offer a hotel search (search_hotels sibling), or open a support ticket. Alternatives and exclusions are named outright.

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

assistant_airbnb_search_userSearch AirbnbsA
Read-onlyIdempotent
Inspect

Search Airbnb listings by location and dates. Use when the user is not asking about a specific trip in Tineo. Returns a slim list of cards (title, type, rating, host, URL). location must be a city or area, not a whole country (ask the user which city). Each card has distance_km from the requested place and in_requested_area; listings outside the area come last. If none are in the area, say so with their distances and do NOT re-search the same place with a reworded location string. Amenity filtering only via the amenities enum; there is NO keyword/free-text filter, so tell the user anything else can't be filtered. If structuredContent.status is 'unavailable', do NOT retry the same search: share structuredContent.fallback_search_url (a prefilled airbnb.com search), offer a hotel search, or a support ticket.

NameRequiredDescriptionDefault
adultsNo
infantsNoInfants under 2. Airbnb does not count them as guests.
check_inYesCheck-in date YYYY-MM-DD.
childrenNo
currencyNoISO 4217 currency code (default USD).
locationYesCity, neighborhood, or landmark with its region and country (e.g., 'Lisbon, Portugal', 'Brooklyn, NY, USA', 'Orange, NSW, Australia').
min_bedsNo
amenitiesNoOnly listings with ALL of these amenities. These are the only supported amenity filters; there is no keyword/free-text filter.
check_outYesCheck-out date YYYY-MM-DD.
price_maxNo
price_minNo
room_typeNo
max_resultsNoDefault 5, max 5.
min_bedroomsNo
min_bathroomsNo

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/openWorld/non-destructive, yet the description adds substantial behavioral context beyond them: the returned card fields, area-membership ordering via distance_km/in_requested_area, the amenity-only filtering constraint (no keyword filter), and the unavailable-status handling with fallback_search_url and the explicit 'do NOT retry' rule.

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?

The description is front-loaded with purpose and scope, and each sentence contributes actionable guidance rather than filler. It is somewhat dense and run-on, but the length is justified by the tool's complexity (15 params, no output schema, sibling disambiguation).

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 correctly explains the return value (slim list of cards) and even the structuredContent.status/fallback_search_url failure path. Combined with the location and amenity constraints, it is nearly complete for invocation; the gap is the unaddressed remaining query parameters.

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 47%, below the 50% threshold, so the description carries a compensation burden. It adds real meaning for location ('must be a city or area, not a whole country') and amenities (enum-only, no free-text), but says nothing about guests, price, room_type, beds/bathrooms, or max_results, leaving half the parameters undocumented in both places.

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+resource ('Search Airbnb listings by location and dates') and explicitly carves out scope with 'Use when the user is not asking about a specific trip in Tineo,' clearly distinguishing it from the sibling assistant_airbnb_search_trip. It also characterizes the output shape, so the agent knows exactly what this 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 gives explicit when/when-not guidance (trip-specific vs general search), a location pre-condition to resolve with the user, an anti-pattern rule ('do NOT re-search the same place with a reworded location string'), and concrete alternatives for the unavailable case (fallback_search_url, hotel search, support ticket). This is the strongest form of routing guidance.

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

audit_travel_documentsAudit Travel DocumentsA
Read-onlyIdempotent
Inspect

Audit expiration dates of the user's travel documents (passports, visas, insurance) and flag expired, expiring soon (<180 days), or expiring before trip end.

NameRequiredDescriptionDefault
trip_idNoOptional trip ID to check documents against that trip's dates.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is covered. The description goes beyond that by disclosing the actual classification thresholds — the 180-day window and the trip-end comparison rule — which is real behavioral context an agent cannot get from the annotations or schema.

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?

A single tightly written sentence with the action front-loaded and the flag criteria enumerated parenthetically. Every clause carries information and nothing is padded.

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?

For a read-only tool with no output schema, the description conveys what is examined and the categories that will be flagged, which is enough for correct invocation. It stops short of describing the actual return shape or what happens when trip_id is omitted, which leaves a minor gap.

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% for the single trip_id parameter, so the baseline is 3. The description only lightly reinforces the schema by tying trip_id to the 'expiring before trip end' criterion; it does not add format, default-behavior, or omission semantics beyond what the schema already says.

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 (audit), a specific resource (the user's travel documents: passports, visas, insurance), and the exact outcome criteria (expired, expiring soon <180 days, expiring before trip end). No sibling tool does document auditing, so an agent can select this without ambiguity.

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

Usage Guidelines3/5

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

Usage is implied rather than stated: the optional trip_id and the 'expiring before trip end' criterion signal that the tool is for pre-trip document checks. There is no explicit when-to-use, when-not-to-use, or named alternative (e.g. the related travel_document_assign_trip), so guidance remains inferential.

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

batch_segment_createCreate itinerary itemsAInspect

Create multiple segments in a trip in one call. Put each item's values in fields, named as segment_get_schema returns them (Activity activityType is one of: tour, dining, show, spa, class, sports, sightseeing, other). Each item succeeds or fails on its own: valid items are created and failed items are returned by index with the reason, so resend only the failed items. Max 50 segments per call; split larger itineraries into several calls. Segment dates must fall within the parent trip dates. Dates up to 1 day outside the trip extend it, with a warning; further out, call trip_update first. For an Activity, Lodging, EventTicket or Parking at a real place, call places_search first and put the result's place ID in fields.placeId: Tineo links that place (map pin and coordinates) and fills a missing name, address, phone and website. Never invent a time: if the user has not given or chosen one, ask, or send the date only (YYYY-MM-DD) in startDateTime and Tineo stores it as time not set. Send a clock time only when the user stated it or a booking shows it.

NameRequiredDescriptionDefault
trip_idYesThe trip ID to add segments to
segmentsYesArray of segments to create. Each must have segment_type and fields.

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only declare write/non-idempotent/non-destructive, but the description adds substantial behavior: per-item partial success/failure with index-based failure reporting, the 50-segment cap, date-range auto-extension with a warning, place-linking side effects (map pin, coordinates, and auto-filled name/address/phone/website), and the 'time not set' semantics. This is far richer than the annotations alone.

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?

Long, but front-loaded with the core action and then ordered by importance: batching, partial-failure handling, limits, date rules, place linking, time rules. Nearly every sentence carries actionable constraint, though the density is dense enough that a tighter grouping would help.

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 batch write tool with no output schema, the description supplies the missing return behavior (failed items returned by index with reasons) and covers prerequisites, limits, and edge-case date handling. An agent has everything needed to call it correctly.

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 earns extra by cross-referencing segment_get_schema for field naming, defining the Activity activityType values, and specifying startDateTime formats (YYYY-MM-DD vs. clock time) plus the placeId contract that the generic 'fields' object does not document.

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 ('Create multiple segments in a trip in one call'), immediately distinguishing the batch operation from the single-item segment_create sibling. An agent knows exactly what this does without opening the 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 when-to-use and when-to-escalate: split itineraries larger than 50 segments, resend only failed items, call trip_update for dates more than 1 day outside the trip, and call places_search before creating Activity/Lodging/EventTicket/Parking at a real place. Alternatives and preconditions are named, not inferred.

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

checklist_items_addAdd Checklist ItemsAInspect

Add one or more tasks to the end of an existing trip checklist. Get checklist_id from trip_checklists. Each item has text and an optional category (the section heading it appears under). A checklist holds at most 100 tasks; tasks are a flat list with no subtasks. Calling this twice adds the tasks twice. To create a new checklist use segment_create (type Note, isChecklist true). Never show IDs to users.

NameRequiredDescriptionDefault
itemsYesTasks to append, in order.
checklist_idYesThe checklist note's segment ID (checklist_id from trip_checklists).

TDQS

A4.4/5.0
Behavior5/5

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

Adds substantial context beyond the annotations: appends to the end, 100-task cap, flat list with no subtasks, and the concrete consequence of non-idempotency ('calling this twice adds the tasks twice'), which explains what idempotentHint=false actually means. Also flags the 'never show IDs to users' presentation rule.

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?

Front-loaded with the core action, then ordered supporting facts (ID source, item shape, limits, idempotency, alternative, display rule). Dense with zero filler sentences.

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?

For a 2-parameter append tool with no output schema, it covers constraints, idempotency, prerequisites, and alternatives thoroughly. It omits any hint about the response shape or ordering feedback, which is minor.

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%, so the baseline is 3. The description restates that each item has text plus an optional category as 'the section heading it appears under', but adds little syntax or format detail beyond what the schema already documents.

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+resource+scope: 'Add one or more tasks to the end of an existing trip checklist.' The appended-at-end behavior and 'existing checklist' qualifier distinguish it cleanly from checklist_item_update, checklist_items_reorder, checklist_items_remove, and segment_create.

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?

Gives a prerequisite (get checklist_id from trip_checklists) and routes to the right alternative for creating a checklist ('use segment_create (type Note, isChecklist true)'). It does not spell out an explicit when-not-to-use case, but the sibling routing is clear and actionable.

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

checklist_items_removeRemove Checklist ItemsA
DestructiveIdempotent
Inspect

Permanently remove one or more tasks from a trip checklist. Get checklist_id and the item IDs from trip_checklists. Confirm with the user before removing. To delete a whole checklist use segment_delete. Never show IDs to users.

NameRequiredDescriptionDefault
item_idsYesIDs of the tasks to remove (itemId from trip_checklists).
checklist_idYesThe checklist note's segment ID (checklist_id from trip_checklists).

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already flag destructiveHint=true and idempotentHint=true, but the description adds meaningful context: the removal is 'permanent', it requires user confirmation, and IDs must never be surfaced. These behavioral constraints go beyond the structured hints.

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?

Four short, front-loaded sentences with no filler; the destructive action and confirmation rule lead. The 'never show IDs' sentence is slightly tangential but still relevant to invocation behavior.

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 annotations covering the safety profile, full schema coverage, and no output schema, the description supplies everything needed: permanence, confirmation requirement, ID sourcing, and the sibling alternative. Nothing an agent needs to call it correctly is missing.

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%, and the schema itself documents both checklist_id and item_ids as coming from trip_checklists, so the description largely restates that provenance. The 'never show IDs to users' note adds a presentation constraint but no new parameter mechanics. Baseline 3 applies.

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?

Specific verb+resource (remove tasks from a trip checklist) with explicit scope ('one or more tasks'). It also distinguishes itself from the whole-checklist deletion path by naming segment_delete, so an agent can route without opening schemas.

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?

Gives clear usage context: source the IDs from trip_checklists, confirm with the user first, and use segment_delete for a full checklist. Lacks explicit exclusion against adjacent item-level tools (checklist_item_update, checklist_items_reorder), but the intent is unambiguous.

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

checklist_items_reorderReorder Checklist ItemsA
DestructiveIdempotent
Inspect

Put a trip checklist's tasks in a new order. Get checklist_id and the item IDs from trip_checklists, then send order listing every task ID exactly once in the new order. The app groups tasks under their section headings in first-appearance order. Never show IDs to users.

NameRequiredDescriptionDefault
orderYesEvery task ID on the checklist, in the new order.
checklist_idYesThe checklist note's segment ID (checklist_id from trip_checklists).

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare destructive/idempotent/openWorld, so the safety profile is covered. The description adds real behavior beyond them: tasks are grouped under section headings in first-appearance order, and the order array must contain every task ID exactly once. It doesn't clarify what happens to omitted IDs, which is the one gap given destructiveHint=true.

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?

Four tight sentences, purpose front-loaded, then prerequisite, then format constraint and grouping behavior. The trailing UI note ('Never show IDs to users') is slightly tangential but brief and harmless.

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 and full param coverage, the description supplies the prerequisite chain, the required input shape, and the grouping semantics — enough to call it correctly. Only the treatment of omitted IDs is left unstated.

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 baseline is 3, but the description adds meaning about the order parameter — it must list every task ID exactly once — reinforcing the schema's uniqueItems/minItems constraints and explaining the section-grouping consequence of the ordering.

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 (put in a new order) and resource (a trip checklist's tasks), which cleanly distinguishes it from the sibling mutators checklist_items_add, checklist_items_remove, and checklist_item_update. An agent can tell what it does without opening the schema.

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?

It gives a clear prerequisite workflow — get checklist_id and item IDs from trip_checklists first — and specifies the required shape of the call (every task ID exactly once). It does not name a when-not-to-use case or contrast against checklist_item_update, so it stops short of full routing guidance.

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

checklist_item_updateUpdate Checklist ItemA
DestructiveIdempotent
Inspect

Change one task on a trip checklist: its text, its category (section heading), or whether it is done. Get checklist_id and item_id from trip_checklists. Send only what changes. checked true marks the task done for the current user (on a shared trip it shows complete once every traveler ticks it); checked false unticks it. category "" removes the task from its section. Never show IDs to users.

NameRequiredDescriptionDefault
textNoNew task text.
checkedNotrue marks the task done for the current user; false unticks it.
item_idYesThe task's itemId from trip_checklists.
categoryNoNew section heading; "" clears it.
checklist_idYesThe checklist note's segment ID (checklist_id from trip_checklists).

TDQS

A4.3/5.0
Behavior4/5

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

Annotations cover the safety profile (destructive, non-read-only, idempotent), but the description adds genuinely useful behavior the annotations cannot convey: shared-trip completion semantics (done only once every traveler ticks it), the fact that checked=false unticks, and that an empty category removes the task from its section. It does not mention error behavior or what happens with concurrent edits, which keeps it below a 5.

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 verb and resource, then proceeds through mutable fields, ID sourcing, and per-field semantics in a logical order with no filler. The closing instruction 'Never show IDs to users' is off-topic for tool invocation (a presentation rule) and slightly dilutes an otherwise tight paragraph.

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?

For a 5-parameter mutation tool with no output schema, the description covers the mutation surface, the partial-update contract, ID provenance, and the highest-risk behavioral nuance (shared-trip completion). It lacks only edge-case handling (invalid item_id, text trimming) to be fully self-sufficient.

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 meaning beyond the field docs: it explains the cross-user effect of checked on a shared trip and clarifies that an empty category detaches the item from its section rather than merely blanking a label. The 'send only what changes' framing also clarifies that all three optional fields are independently omittable.

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 (change) and a precisely scoped resource (one task on a trip checklist), then enumerates the three mutable aspects: text, category, done-state. That scope cleanly separates it from checklist_items_add, checklist_items_remove, checklist_items_reorder, and library_list_item_update without opening any schema.

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?

Gives a real prerequisite ('Get checklist_id and item_id from trip_checklists') and a usage rule ('Send only what changes'), which tells the agent this is a partial update rather than a full replace. It stops short of explicit exclusions or naming which sibling to use for adjacent operations (reorder, delete).

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

diagnose_failed_importDiagnose Failed ImportA
Read-onlyIdempotent
Inspect

Triage a failed, held, or partially processed email import on the user's account. Returns the failure step, error message, likely reason, and actionable next steps.

NameRequiredDescriptionDefault
trip_idNoOptional trip ID to look up the most recent non-clean import for that trip.
import_idNoSpecific EmailImport ID to diagnose.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and non-destructive, so safety is covered. The description adds genuine value by enumerating the diagnostic payload (failure step, error message, likely reason, next steps), which is the only source for return semantics since no output schema exists.

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, zero filler: the first states scope and trigger, the second lists the return contents. Purpose is front-loaded and nothing is redundant.

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, trigger, and return contents, which is sufficient for a read-only diagnostic tool with a fully documented two-parameter schema. The one gap is behavior when neither optional parameter is supplied, which is not addressed anywhere.

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 both parameters are documented in the schema, including that trip_id resolves the most recent non-clean import. The description adds no syntax or resolution detail beyond that, so the baseline 3 applies.

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

Purpose4/5

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

Specific verb ('Triage') plus resource ('failed, held, or partially processed email import') and an explicit statement of what the tool returns. It is clearly distinguishable from the nearest sibling, import_parse_text_preview, though it never names that sibling to reinforce the boundary.

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 trigger condition is clear: use this when an import has failed, is held, or processed partially. It gives no explicit when-not guidance or alternatives, and does not say how to obtain an import_id when one is unknown, but the usage context itself is unambiguous.

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

discoverDiscover travel optionsA
Read-onlyIdempotent
Inspect

Search for hotels, restaurants, attractions, or activities to recommend to the traveler, returned as rich visual cards (image, rating, price level, link). Use this when the user wants suggestions or things to do/eat/stay near a place.

NameRequiredDescriptionDefault
queryNoOptional refinement, such as "luxury", "family friendly", "tapas", or "museums".
categoryYesWhat to discover: hotels, restaurants, attractions, or activities.
latitudeNoOptional latitude to bias the search.
locationNoCity or area to search in, such as "Madrid" or "Lisbon, Portugal". Provide this when latitude/longitude are unknown.
longitudeNoOptional longitude to bias the search.
max_resultsNoMax cards to return, 1-10. Defaults to 8.
check_in_dateNoOptional YYYY-MM-DD check-in date (hotels).
check_out_dateNoOptional YYYY-MM-DD check-out date (hotels).

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare the safety profile (readOnly, idempotent, openWorld, non-destructive), so the bar is lower. The description adds genuine context beyond them by disclosing the return shape (visual cards containing image, rating, price level, and link), which is exactly what an agent needs to decide whether the output fits the task.

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 tight sentences: purpose and return format first, usage condition second. Nothing is redundant and the most decision-relevant information is 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?

With 8 fully documented params, a required category, and annotations covering safety, the description is complete enough to invoke correctly, and it describes the return content in lieu of an output schema. The one meaningful omission is any differentiation from the overlapping sibling search tools.

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%, so the schema already documents all 8 parameters including the category enum, dates, and coordinates. The description adds no syntax or format detail beyond echoing the category values, so the baseline 3 is appropriate.

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

Purpose4/5

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

States a specific verb (search/discover) and enumerates the resources (hotels, restaurants, attractions, activities) plus the return format (rich visual cards). It's clear what the tool does, but it never distinguishes itself from close siblings like search_hotels, search_attractions, or search_tours, so an agent has to guess which to call.

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

Usage Guidelines3/5

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

The sentence 'Use this when the user wants suggestions or things to do/eat/stay near a place' gives real usage context, which implies when to reach for it. However, it offers no when-not guidance and does not name the overlapping alternatives (search_hotels, search_attractions, search_tours), leaving the routing decision to inference.

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

duplicate_checklistDuplicate ChecklistAInspect

Duplicate a checklist into one or more new checklists on the same trip. Each copy keeps item text and sections; every item starts unchecked. Provide source_note_id (a checklist segment ID from trip_details) and one title per copy (max 10).

NameRequiredDescriptionDefault
titlesYesOne title per copy (1 to 10, each up to 200 characters).
source_note_idYesID of the checklist to copy (from trip_details).

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare a non-destructive, non-idempotent write, so the bar is lower, and the description still adds substantive behavior: copies retain item text and sections, every item starts unchecked, copies are limited to 10 and stay on the same trip. What it omits is the response shape and whether the source must be non-empty.

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 with no filler: action and scope first, then behavior of the copies, then required inputs. Every clause carries information an agent needs.

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?

There is no output schema, yet the description never indicates what is returned (e.g., new checklist IDs or titles), which is the one thing an agent needs to chain follow-up calls. Everything else for correct invocation is present given the full schema coverage.

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% and both parameters are documented there, including the 1-10 range and 200-character limit. The description mainly restates the schema (segment ID from trip_details, one title per copy, max 10) rather than adding new semantics, so baseline 3 is appropriate.

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

Purpose4/5

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

States a specific verb (duplicate) and resource (checklist), plus the outcome: one or more new checklists on the same trip. This is clearly distinct from creation siblings like segment_create or batch_segment_create, though it never names an alternative explicitly, which keeps it at a 4 rather than a 5.

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

Usage Guidelines3/5

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

It gives the prerequisite that source_note_id comes from trip_details, which is real usage context, but offers no when-to-use vs when-not guidance and never points to a sibling tool for adjacent operations. Usage is implied rather than stated.

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

estimate_transfer_drive_timeEstimate Transfer Drive TimeA
Idempotent
Inspect

Estimate the drive time of a Transfer or Transport segment (taxi, car service, airport transfer, ground transport) from its pickup and drop-off at its pickup time, using Apple Maps traffic prediction. apply=false (default) only reports the estimate; apply=true saves it as the estimated drop-off time so the Tineo calendar and iCal feed show the real ride length instead of a flat hour. A drop-off time already on the booking or set by the user is never changed, and a failed lookup changes nothing. Present the result as an estimate.

NameRequiredDescriptionDefault
applyNoSave the estimate as the drop-off time. Default false.
segment_idYesID of the Transfer or Transport segment.

TDQS

A4.5/5.0
Behavior5/5

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

Goes well beyond the annotations by naming the external data source (Apple Maps traffic prediction), which explains the openWorldHint, by spelling out the side effect of apply=true (calendar and iCal feed reflect real ride length instead of a flat hour), and by guaranteeing that existing drop-off times are never overwritten and a failed lookup is a no-op. This effectively confirms idempotentHint and destructiveHint=false with concrete semantics.

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-loads what the tool does, then the apply semantics, then the safety guarantees; every sentence carries information. It is a long single sentence plus two shorter ones, slightly wordy but not padded.

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 still tells the agent that the result is a reported estimate rather than a value to be treated as fact, and it covers the mutation semantics and failure behavior. It could say more about the estimate's return shape or precision, but for a 2-param tool this is close to complete.

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 meaning the schema lacks: not just that apply saves the estimate, but the downstream consequence (calendar/iCal show true ride length vs. a flat hour) and the protective rule that a pre-existing or user-set drop-off time is left alone. segment_id semantics remain solely in 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?

States a specific verb (estimate) plus the exact resource (drive time of a Transfer/Transport segment) and the inputs it derives from (pickup, drop-off, pickup time). An agent can distinguish it from siblings like segment_update or get_routes without opening the schema.

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?

Clearly explains the two operating modes: apply=false reports only, apply=true persists the estimate. It also states the guardrails for when not to expect a change (existing drop-off, failed lookup). It doesn't explicitly name an alternative tool for recomputing or clearing an estimate, so it stops short of 5.

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

fetchFetch Tineo ItemA
Read-onlyIdempotent
Inspect

Use this when the user wants the full text for a specific Tineo search result. Pass an ID returned by search, such as trip:{id}, segment:{id}, travel-document:{id}, or document:{id}.

NameRequiredDescriptionDefault
idYesID returned by the search tool

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the safety profile is covered. The description adds useful behavior the annotations do not: the expected ID prefix schemes (trip:, segment:, travel-document:, document:) and the fact that it returns full text rather than a summary. It omits error behavior for invalid or stale IDs.

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, no filler, front-loaded with the usage condition followed by the parameter format. Every clause earns its place.

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?

For a one-parameter read tool with annotations covering safety and no output schema, the description supplies purpose, trigger, and ID format. It leaves minor gaps around invalid-ID handling and whether returned text is ever truncated, but nothing essential to invoking it correctly.

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 baseline is 3, but the description goes beyond the schema by enumerating the concrete ID formats (trip:{id}, segment:{id}, etc.) that the schema's single `id` string leaves open. That is genuine added meaning for the only parameter.

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 (fetch) and resource (the full text of a specific Tineo search result), and distinguishes itself from the sibling `search` tool by positioning search as the producer of the IDs it consumes. An agent can tell them apart 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 Guidelines4/5

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

"Use this when the user wants the full text for a specific Tineo search result" gives a clear triggering condition, and it names `search` as the source of valid IDs. It does not state any when-not case, but for a simple read tool that is a minor omission.

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

flight_quickaddAdd flight to tripAInspect

Look up a real flight by number and date, then create it as a segment in the trip. Combines flight_quickadd_lookup + segment_create in one call. May take 2-5 seconds due to external flight data lookup. Segment dates must fall within the parent trip dates; use trip_update first to extend the trip.

NameRequiredDescriptionDefault
airlineNoFull airline name as fallback (e.g., 'American Airlines'). Used only if airline_code is not provided.
trip_idYesThe trip ID to add the flight to
airline_codeNoIATA or ICAO airline code (AA, UA, DL, AAL). Optional if embedded in flight_number.
flight_numberYesFlight number, e.g. 'AA3242', 'UA100', or just '3242' if airline_code is provided
departure_dateYesDeparture date in YYYY-MM-DD format

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare the write/non-idempotent/open-world profile, and the description adds two pieces of genuinely non-structured context: a 2-5 second latency warning from the external flight data lookup and the trip-date constraint. It does not mention that repeat calls create duplicate segments, which matters given idempotentHint=false, keeping it below a 5.

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 tight sentences; the core action and its composition are front-loaded, followed by the latency caveat and the constraint. No filler or restated name/title.

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?

For a compound write tool with no output schema, the description covers purpose, composition, latency, and the date constraint, and points to the remediation tool. It omits failure behavior (what happens if the flight lookup returns no match) and non-idempotent duplicate risk, leaving minor 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 five parameters including the airline-vs-airline_code fallback logic. The description adds only the departure_date/trip-date relationship, so the baseline 3 for schema-complete coverage 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?

States a specific compound action (look up a real flight by number and date, then create it as a segment) and explicitly names the two sibling tools it wraps, flight_quickadd_lookup and segment_create. An agent can distinguish this from calling segment_create directly 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 Guidelines4/5

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

Clear context for when to use it (flight lookup + segment creation in one call) and it routes the agent to trip_update when segment dates would fall outside the parent trip dates. It does not explicitly state when to prefer the two underlying tools separately, so it falls short of full when/when-not guidance.

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

flight_quickadd_lookupLook up a flightA
Read-onlyIdempotent
Inspect

Look up flight details by airline, flight number, and departure date before creating or editing a flight segment. Use this when the user gives a flight number and wants to add, preview, or verify a flight.

NameRequiredDescriptionDefault
airlineNoOptional airline name or callsign, such as American Airlines
airline_codeNoOptional IATA or ICAO airline code, such as AA, UA, DL, or AAL
flight_numberYesFlight number, with or without the airline prefix, such as AA3242 or 3242
departure_dateYesLocal scheduled departure date in YYYY-MM-DD format

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safe read-only profile is covered. The description adds workflow context by framing the call as a pre-creation/pre-edit verification step, but says nothing about lookup failure when no flight matches or the open-world nature of the query beyond the openWorldHint annotation.

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 short sentences, front-loaded with the verb and resource, followed by the usage trigger. No redundant restatement of the tool name or schema fields; every clause earns its place.

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 agent can still infer the tool returns flight details, and the annotations cover the safety and idempotency profile. The main gap is unstated behavior on no-match or ambiguous airline input, but for a simple lookup this is largely adequate.

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%, so each of the four parameters already carries its own description and example. The description only echoes the field set (airline, flight number, departure date) and omits airline_code, adding no format or disambiguation guidance beyond the schema.

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

Purpose4/5

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

States a specific verb and resource ('Look up flight details') plus the exact inputs that identify the flight (airline, flight number, departure date). It does not differentiate itself from the closest siblings, flight_quickadd and flight_route_lookup, which an agent would likely weigh against it.

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?

Gives a clear triggering context ('when the user gives a flight number and wants to add, preview, or verify a flight') and its sequencing relative to segment creation/editing. It names no alternatives or exclusions, so the agent must infer when flight_quickadd or flight_route_lookup is preferable.

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

flight_route_lookupFlight Route LookupA
Read-onlyIdempotent
Inspect

Find scheduled flights by route and date when the flight number is NOT known: origin airport, destination airport, local departure date, and optionally an airline. Returns matching flights with their flight numbers so the exact flight can then be added via flight_quickadd. Use flight_quickadd_lookup instead when the user already has the full flight number.

NameRequiredDescriptionDefault
dateYesLocal departure date in YYYY-MM-DD format.
originYesDeparture airport IATA code, such as BUD.
destinationYesArrival airport IATA code, such as SKG.
airline_codeNoOptional IATA airline code filter, such as W6 for Wizz Air.

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety and idempotency profile is fully covered. The description adds useful context that it returns matching flights with their flight numbers and feeds into flight_quickadd, but says nothing about result volume, pagination, or empty-route behavior. Given annotations carry the behavioral load, this is adequate but not rich.

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, front-loaded with the verb and the key disambiguating condition, then the alternative in the second sentence. No filler.

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 read-only lookup with no output schema, the description supplies what an agent needs: the required inputs, the fact that it returns flight numbers, the follow-up call, and the sibling to use instead when the flight number is known. Nothing material is missing.

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%: every parameter (origin, destination, date, airline_code) already has a format hint in the schema. The description restates the same fields at a high level (origin airport, destination, local departure date, optional airline) without adding syntax or constraints beyond the schema. Baseline 3 applies.

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 ('Find scheduled flights by route and date') and immediately scopes it with 'when the flight number is NOT known'. It distinguishes itself from the sibling flight_quickadd_lookup by naming that alternative. An agent can disambiguate from the other flight tools without opening any 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?

Explicitly gives the when ('flight number is NOT known') and the when-not ('use flight_quickadd_lookup instead when the user already has the full flight number'). It also names the downstream step (add via flight_quickadd), completing the workflow context.

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

flight_status_for_segmentCheck saved flight statusA
Read-onlyIdempotent
Inspect

Get current flight status for an existing flight segment in a user's trip. Use this when the user asks if a flight in their itinerary is delayed, canceled, on time, boarding, or has gate/terminal updates. Status is cached for a few minutes, so call it once per flight per answer; calling again for the same flight soon after returns the same result. The text says when the provider last updated the data.

NameRequiredDescriptionDefault
idNoAlias for segment_id
segment_idYesThe flight segment ID from a trip itinerary or segment details result

Output Schema

NameRequiredDescription
typeNo
flightNo
matchedNo
flightStatusNo

TDQS

A4.5/5.0
Behavior5/5

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

Adds real behavioral context the annotations cannot express: results are cached for a few minutes, so repeated calls for the same flight return the same payload, implying 'call once per flight per answer.' It also notes the response text carries the provider's last-update time, which sets freshness expectations beyond readOnly/idempotent hints.

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 tight sentences, front-loaded with purpose then usage then the caching caveat, which is exactly where an agent needs it before deciding to re-call. No filler.

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?

An output schema exists, so return-value description is unnecessary; annotations cover safety and open-world behavior; the description covers caching and data-freshness semantics. Nothing an agent needs to call this correctly is missing.

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% and both parameters are documented there, including the 'id' alias for segment_id, so the schema does the heavy lifting. The description adds no extra meaning about the identifier's origin or the alias behavior, so baseline 3 applies.

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 precise verb+resource+scope: 'current flight status for an existing flight segment in a user's trip.' That scope phrase implicitly separates it from siblings like flight_route_lookup (schedules/routes) and get_flight_airport_conditions (airport-level, not a saved segment).

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?

Gives concrete triggering situations ('delayed, canceled, on time, boarding, or gate/terminal updates'), which is clearer than generic context. It stops short of naming an alternative for adjacent cases (e.g. airport conditions or route lookups), so it lacks explicit when-not guidance.

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

forwarding_address_createCreate Forwarding AddressA
Idempotent
Inspect

Create the authenticated user's personal Tineo forwarding address when they explicitly ask for one. Tineo reads email sent to that address and adds the travel bookings it finds to the user's trips, so the user can forward confirmations from any inbox or give it to a travel agent or booking site. Never replaces or changes an existing address: if one already exists it is returned unchanged. Use forwarding_address_get to read addresses without creating one.

NameRequiredDescriptionDefault
confirmedYesMust be true, set only after the user explicitly asks to create a forwarding address.

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond annotations by explaining what the address is for (email ingestion, booking extraction), its non-destructive/no-op behavior on existing addresses ('Never replaces or changes an existing address: if one already exists it is returned unchanged'), and hands off to the read sibling. This clarifies why idempotentHint is true in behavioral terms.

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?

Three sentences, purpose front-loaded. Each sentence carries distinct value (what it is, what it enables, the no-replace guarantee, the alternative). Slightly longer than strictly needed but no wasted content.

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 single-param, no-output-schema tool, the description covers the required intent gate, the side-effect-free behavior on existing state, and the routing to the read sibling. Nothing needed to call it correctly is missing.

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 single 'confirmed' parameter is already documented. The description reinforces the explicit-user-intent condition but adds no syntax or value detail beyond the schema, so the baseline 3 applies.

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 ('Create the authenticated user's personal Tineo forwarding address') and distinguishes itself from the sibling forwarding_address_get by naming it as the read-only alternative. An agent can tell what it does without opening the 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?

Explicitly states the trigger condition ('when they explicitly ask for one') and names the alternative tool ('Use forwarding_address_get to read addresses without creating one'). Both when-to-use and how-to-avoid are covered.

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

forwarding_address_getGet Forwarding AddressA
Read-onlyIdempotent
Inspect

Read the authenticated user's Tineo email forwarding addresses without changing anything. Returns the personal forwarding address when one exists, any other active personal addresses, and the universal trips@tineo.ai address, which works for mail forwarded from the user's primary or registered email. A personal address can also receive mail sent by an assistant or travel provider. If the user has no personal address and wants one, use forwarding_address_create after they ask for it.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare the safe read profile (readOnlyHint, idempotentHint, destructiveHint=false), and the description's 'without changing anything' is consistent with them. It goes beyond the annotations by explaining the semantics of the universal trips@tineo.ai address and the fact that a personal address can receive mail from assistants and travel providers. It stops short of return shape/ordering specifics, so 4 rather than 5.

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 action and the non-mutating constraint, with the sibling routing last. Four sentences, all carrying information; the middle sentences on the trips@tineo.ai address and assistant/travel-provider delivery are dense but earn their place for a tool whose whole value is explaining address semantics.

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?

There is no output schema, so the description compensates by describing what comes back: the personal address when one exists, other active personal addresses, and the universal address — including the empty case. For a zero-param read tool this is everything an agent needs to call it and interpret the answer.

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?

The tool takes zero parameters, so per the rubric the baseline is 4. There is nothing for the description to disambiguate, and it does not clutter itself with irrelevant parameter talk.

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 ('Read') and resource ('the authenticated user's Tineo email forwarding addresses') and immediately scopes it as non-mutating. It also enumerates the three kinds of addresses returned, so the agent knows exactly what data this tool surfaces versus the many sibling tools in the catalog.

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 names the alternative ('use forwarding_address_create') and the condition that selects it ('If the user has no personal address and wants one... after they ask for it'). This both routes the agent to the sibling and adds a consent gate, which is more than most definitions provide.

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

friend_request_acceptAccept Friend RequestA
Destructive
Inspect

Accept an INCOMING pending friend request by request_id (from friend_requests_pending). This connects you and notifies the sender, so confirm with the user before calling.

NameRequiredDescriptionDefault
request_idYesThe incoming request id from friend_requests_pending.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=false, and openWorldHint=true, so the safety profile is covered. The description adds real behavioral context beyond that: accepting establishes a mutual connection and notifies the sender, and it advises user confirmation before the irreversible action. It does not address failure modes (e.g., stale request_id).

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, both front-loaded with the essential action and scope first, then the consequence and caution. No filler or restated title text.

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?

For a one-parameter mutation whose annotations already declare the destructive, non-idempotent profile, the description supplies the missing pieces: the source of the id, the side effects, and the confirmation requirement. Only minor gaps remain, such as behavior on an invalid or already-resolved request.

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 single request_id property already states it is the incoming request id from friend_requests_pending, so the description repeats rather than extends that. Baseline 3 applies since the schema carries the parameter 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?

States a specific verb (Accept) and resource (INCOMING pending friend request) and explicitly scopes it to incoming requests identified by request_id. It also names the sibling tool that supplies the id (friend_requests_pending), so an agent can distinguish it from friend_request_decline, friend_request_send, and friend_request_resend without opening a schema.

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?

Gives a clear precondition and workflow cue: the request_id comes from friend_requests_pending, and it tells the agent to confirm with the user before calling. It does not state what to do if the request no longer exists or explicitly compare against the decline alternative, so it stops short of full when/when-not guidance.

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

friend_request_declineDecline Friend RequestA
Destructive
Inspect

Decline an INCOMING pending friend request by request_id (from friend_requests_pending). Confirm with the user before calling.

NameRequiredDescriptionDefault
request_idYesThe incoming request id from friend_requests_pending.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=false, so the safety profile is covered. The description adds genuinely useful context beyond that: only incoming pending requests qualify, where to source the id, and a required user-confirmation step before the destructive call.

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?

A single front-loaded sentence carrying the action, the constraint, the id source, and the confirmation rule, with no filler.

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 one-parameter destructive mutation, the definition covers the action, the eligibility constraint, the parameter source, the confirmation obligation, and relies on annotations for the safety/idempotency profile. No output schema is needed for a simple acknowledge-style action.

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?

With schema coverage at 100% and a single required parameter, the schema fully documents request_id and even names its source. The description restates the same provenance, adding no syntax or format detail beyond structured fields, so the baseline 3 applies.

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 (decline) plus resource (incoming pending friend request) and constrains scope to INCOMING requests, which cleanly separates it from friend_request_accept, friend_request_send, and friend_request_resend. An agent can identify the correct tool without opening any schema.

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?

Gives clear preconditions: the request must be an incoming pending one, and the id should come from friend_requests_pending. It also adds an operational guideline ('Confirm with the user before calling'). It does not explicitly name friend_request_accept as the alternate action, but the routing is unambiguous from context.

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

friend_request_resendResend Friend RequestA
Destructive
Inspect

Resend the notification email for one of YOUR OUTGOING pending friend requests by request_id (from friend_requests_pending). This re-emails the recipient, so confirm with the user first and pass confirmed=true. Throttled on an escalating cadence (60s after the original send, 24h after the first resend) and capped at 2 total resends per request.

NameRequiredDescriptionDefault
confirmedYesMust be true. Set only after the user confirms they want to resend.
request_idYesThe outgoing request id from friend_requests_pending.

TDQS

A4.5/5.0
Behavior5/5

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

On top of annotations (destructiveHint=true, idempotentHint=false, openWorldHint=true), it discloses the key behavioral facts an agent could not infer: this re-sends an email to a third party, requires confirmation first, is throttled on an escalating cadence (60s then 24h), and is capped at 2 resends total.

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 dense sentences that lead with the action and scope, then the confirmation requirement, then the rate limits. No filler and no repetition of the title.

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 two-parameter mutation with annotations and no output schema, the description covers actor scope, prerequisite lookup tool, user-confirmation gate, and rate-limit behavior. Nothing material is missing for correct invocation.

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%, so both parameters are already documented in the schema, making 3 the baseline. The description only restates the confirmation requirement and the origin of request_id, adding no new syntax or format detail 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 names a specific verb (resend) and resource (the notification email for an outgoing pending friend request), and narrows scope to YOUR OUTGOING requests identified by request_id. It also points to friend_requests_pending as the source of that id, which cleanly separates it from friend_request_send and friend_request_accept.

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?

It states the precondition (an existing outgoing pending request, id obtained from friend_requests_pending) and a required user-confirmation workflow before calling. It does not explicitly name an alternative tool or say when NOT to use this, but the throttle cap of 2 resends supplies a practical boundary.

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

friend_request_sendSend Friend RequestA
Destructive
Inspect

Send a friend request to another user by user_id, or by email. This emails a real person, so ALWAYS confirm the recipient with the user before calling, and pass confirmed=true only once they agree. Provide exactly one of user_id or email. If the email belongs to someone not on Tineo, an invitation to join is sent instead. For privacy, the email path always reports the same neutral result whether or not the address is registered.

NameRequiredDescriptionDefault
emailNoTarget email address. Provide this OR user_id, not both.
messageNoOptional personal note (max 280 chars).
user_idNoTarget user id (e.g. from friends_list or a suggestion). Provide this OR email, not both.
confirmedYesMust be true. Set only after the user has confirmed they want to send this request/invite.

TDQS

A4.4/5.0
Behavior5/5

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

Annotations mark this destructive/openWorld, and the description goes well beyond that, disclosing that a real person is emailed, that confirmation is mandatory, that unregistered emails become invitations, and that the email path returns a deliberately neutral result for privacy. These are exactly the consequences an agent needs before invoking a non-idempotent, outward-facing action.

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?

Front-loads verb+resource, then the mandatory confirmation gate, then parameter constraints, then edge-case behavior. Four tight sentences, none wasted, in a sensible priority order.

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 send tool with no output schema, the description covers the action, required human confirmation, parameter constraints, and the two edge behaviors (invitation fallback, privacy-neutral response). An agent has everything needed to call it safely.

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 meaning beyond the schema: it clarifies the email path can trigger an invitation and always yields a neutral result, and reinforces the confirmation semantics of confirmed. That is genuine added semantic value over the field descriptions.

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

Purpose4/5

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

States a specific verb+resource ('Send a friend request') and the two targeting mechanisms (user_id or email), so the agent knows exactly what the tool does. It does not, however, differentiate itself from related siblings like friend_request_resend or friend_request_accept, leaving the routing to inference.

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?

Gives a strong, actionable precondition: confirm the recipient with the user first and pass confirmed=true only after agreement, plus the 'exactly one of user_id or email' rule. It stops short of naming alternative tools (e.g. resend for an existing request), so it lacks explicit when-not guidance.

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

friend_requests_pendingPending Friend RequestsA
Read-onlyIdempotent
Inspect

List the authenticated user's pending friend requests, split into incoming (awaiting your response) and outgoing (awaiting the other person). Returns the counterpart's name only, never their email. Use the returned request_id with friend_request_accept / friend_request_decline / friend_request_resend.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare the safe read-only profile (readOnlyHint, idempotentHint, destructiveHint=false), so the description earns credit for adding genuine behavior: the incoming/outgoing split and the privacy guarantee that only the counterpart's name is returned, never their email. It omits any note on result size or pagination, keeping it just shy of a 5.

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, each doing distinct work: what is listed and how it is split, what the return contains, and which siblings consume the request_id. Front-loaded and waste-free.

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 return-shape burden and does so by describing the incoming/outgoing structure and the request_id field. The only gap is absence of pagination or volume guidance for a potentially unbounded list, which is minor.

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?

The tool takes zero parameters, so the schema has nothing to explain and the baseline is 4. Nothing in the description needs to compensate for missing parameter documentation.

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 ('List the authenticated user's pending friend requests') and immediately adds the meaningful scope distinction of incoming vs outgoing. An agent can distinguish this from friends_list and the accept/decline/resend siblings without opening any schema.

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 routes the agent downstream ('Use the returned request_id with friend_request_accept / friend_request_decline / friend_request_resend'), which is strong when-to-use guidance. It stops short of stating when not to use this tool or contrasting with friends_list, so it is clear context without explicit exclusions.

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

friends_listList FriendsA
Read-onlyIdempotent
Inspect

List the authenticated user's accepted friends (paged). Returns each friend's name, home location, your label for them (Friend/Family) and your two-way trip-sharing state. Never returns other users' email addresses.

NameRequiredDescriptionDefault
pageNo1-based page number. Default 1.
searchNoOptional case-insensitive name filter.
page_sizeNoFriends per page (max 50). Default 20.

TDQS

A4.1/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, so the safety profile is covered. The description adds genuinely new behavior: the exact shape of what is returned per friend and an explicit privacy guarantee that other users' email addresses are never returned, which the schema does not express.

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 short sentences, front-loaded with the core operation, then return contents, then the privacy constraint. No filler, no repetition of the title, and each sentence carries distinct 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?

With no output schema, the description steps in to enumerate the returned fields, and pagination parameters plus safety hints are already handled by the schema and annotations. An agent has everything needed to call this correctly and interpret the response.

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%, so page, search and page_size are fully documented with defaults and bounds. The description only says '(paged)' and adds no format or semantic detail beyond the schema, so the baseline 3 applies.

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 ('List the authenticated user's accepted friends') with scope qualifiers that separate it from sibling tools like friend_requests_pending. The parenthetical '(paged)' and the enumerated return fields make the operation unambiguous without opening the schema.

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

Usage Guidelines3/5

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

The word 'accepted' implicitly distinguishes this from friend_requests_pending, but the description never names an alternative or states a condition for choosing this tool over siblings. Usage is inferable rather than stated, which is the definition of a 3.

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

generate_packing_listGenerate Packing ListA
Idempotent
Inspect

Create a weather- and activity-aware packing checklist for a trip, grouped into sections and saved as a pinned checklist note. Never changes an existing list: if one already exists it is returned unchanged; use packing_list_regenerate to replace it. Requires the trip to have at least 3 substantive segments. Provide the trip_id from trips_list. For one list per person, pass people (max 6). Tineo builds the list on its servers with its AI model provider, sending the trip's title, dates, destinations, itinerary items, weather forecast, any context_notes, and each person's age band and notes (never their name).

NameRequiredDescriptionDefault
peopleNoOptional. One personalized list per person (max 6), titled with the person's name.
trip_idYesTineo trip ID (from trips_list).
context_notesNoOptional packing-relevant details the user asked to include, such as planned activities or special gear. Pass only what the user wants reflected in the list. Never include health conditions, medical details or other sensitive personal information.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations declare it is a write (readOnlyHint=false), open-world, idempotent, non-destructive operation. The description adds substantial beyond-annotations context: the no-op-if-exists semantics, the 3-segment precondition, the data transmitted to the third-party AI provider, and a privacy statement (names and sensitive health data never sent). This is rich behavioral disclosure.

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-loads purpose, then the critical no-op/replace distinction, then preconditions and parameters. Slightly long and dense, and the privacy sentence is a touch verbose, but every sentence carries real information. Just short of a 5 due to mild density.

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 mutation tool with no output schema, the description covers the action, its idempotent/no-op behavior, the precondition, the alternative, parameter semantics, and a privacy boundary for third-party data sharing. Nothing an agent needs to call it correctly is missing.

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% and the nested people object is thoroughly documented in-schema, so the schema does the heavy lifting. The description adds a little value ('max 6', 'one list per person', 'the person's age band and notes but never their name'), but mostly restates what the schema already states, 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?

Specific verb+resource ('Create a weather- and activity-aware packing checklist'), plus it names the resulting artifact ('pinned checklist note') and explicitly distinguishes itself from the sibling packing_list_regenerate. An agent can tell it apart from other checklist tools without opening the 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?

Gives explicit when-to-use behavior ('Never changes an existing list: if one already exists it is returned unchanged'), names the alternative ('use packing_list_regenerate to replace it'), and states a precondition ('Requires the trip to have at least 3 substantive segments'). Routing and prerequisites are fully specified.

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

get_day_of_travel_briefDay Of Travel BriefB
Read-onlyIdempotent
Inspect

Get airport day-of-travel intelligence combining cached airport conditions and ground-transportation guides (trains, shuttles, taxis) for an airport code or flight segment.

NameRequiredDescriptionDefault
iata_codeNo3-letter IATA airport code, such as ATL.
flight_segment_idNoOptional flight segment ID (from trip_details) to check departure and arrival airports.

Output Schema

NameRequiredDescription
noteNo
typeNo
airportsNo
retrievedAtNo

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false. The description adds useful behavioral context by stating the data is 'cached' and combines two source types, but it provides no further detail on freshness limits or failure modes.

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?

The description is a single front-loaded sentence with no filler. The parenthetical examples are useful but could be trimmed, making it efficient though not maximally tight.

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

Completeness3/5

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

An output schema exists, so return values need not be explained, and annotations cover the safety profile. However, the description leaves selection ambiguous against sibling tools that cover the same underlying data, and it omits freshness or parameter-precedence details.

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 both parameters are fully documented in the schema. The description's phrase 'for an airport code or flight segment' confirms the two input modes but adds no precedence or mutual-exclusivity detail beyond what the schema already provides, so the baseline of 3 is appropriate.

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

Purpose4/5

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

The description states a specific verb ('Get') and resource ('airport day-of-travel intelligence') with clear scope ('combining cached airport conditions and ground-transportation guides ... for an airport code or flight segment'). It does not distinguish itself from siblings like get_flight_airport_conditions or ground_transfer_booking_links, which overlap in content.

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

Usage Guidelines2/5

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

There is no explicit when-to-use guidance, nor are alternatives named. The phrase 'for an airport code or flight segment' hints at input scenarios but does not say when to choose this tool over get_flight_airport_conditions or ground_transfer_booking_links.

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

get_flight_airport_conditionsFlight Airport ConditionsA
Read-onlyIdempotent
Inspect

Get cached airport conditions, delay indices, weather, and flight rules for an IATA airport code (e.g. "ORD") or a flight segment's departure and arrival airports. Cache-only: reads existing airport intelligence and never triggers an external fetch.

NameRequiredDescriptionDefault
route_toNoOptional destination IATA airport code when checking a specific route.
iata_codeNo3-letter IATA airport code, such as ORD or LHR.
flight_segment_idNoOptional flight segment ID (from trip_details) to look up both departure and arrival conditions.

TDQS

A3.8/5.0
Behavior4/5

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

The annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world. The description nonetheless adds a genuinely useful trait beyond them: 'Cache-only ... never triggers an external fetch', which tells the agent results may be stale and that a cache miss will not be refreshed. It stops short of saying what is returned on a miss.

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, front-loaded with what is returned, then the cache-only constraint. Every clause carries information and nothing is padded.

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 usefully enumerates the returned fields, and the annotations cover the safety profile. The remaining gap is the zero-required-parameter case: it never says what happens when no argument is supplied, or what a cold cache returns.

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 all three parameters are already documented in the schema, including route_to's role and flight_segment_id returning both departure and arrival. The description restates these relationships without adding new syntax, precedence, or combination rules (e.g. what happens if both iata_code and route_to are supplied).

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

Purpose4/5

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

States a specific verb (get) and resource (cached airport conditions) and enumerates the payload: delay indices, weather, flight rules. The airport/segment scope is clear enough to separate it from siblings like get_trip_weather or flight_status_for_segment, but no sibling is named explicitly, so the differentiation is inferred rather than asserted.

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

Usage Guidelines3/5

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

The two accepted lookup shapes (an IATA code, or a route via route_to, or a flight_segment_id) are described, which implies usage contexts. However there is no explicit when-to-use guidance, no statement of when to prefer this over get_trip_weather / flight_status_for_segment, and no exclusion rules.

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

get_flight_change_historyFlight Change HistoryA
Read-onlyIdempotent
Inspect

Get recorded historical timeline of flight schedule changes, gate changes, and delays for flights monitored on the user's trips.

NameRequiredDescriptionDefault
trip_idNoOptional trip ID to filter changes for flights on that trip.
since_daysNoLookback window in days. Default 30.
flight_dateNoOptional flight departure date in YYYY-MM-DD format.
airline_codeNoOptional 2-letter airline code, such as UA.
flight_numberNoOptional flight number, such as 1234.
flight_segment_idNoOptional flight segment ID.

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, covering the safety profile. The description adds that records are historical and limited to the user's monitored trips, which is useful scoping context, but says nothing about availability, ordering, or return format.

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?

A single well-formed sentence that front-loads the core resource and appends the scoping constraint. No filler, though it could be marginally tighter.

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?

For a read-only lookup with no required parameters, full schema coverage, and complete annotations, the description is adequate to invoke it correctly. Absence of return-shape detail is minor given the low-risk read nature and lack of an output schema.

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%, so all six parameters (trip_id, since_days, flight_date, airline_code, flight_number, flight_segment_id) are already documented in the schema with formats and defaults. The description adds no filtering semantics or interaction rules beyond what the schema provides, so the baseline of 3 applies.

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

Purpose4/5

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

States a specific verb (Get) and resource (recorded historical timeline of flight schedule, gate changes, and delays), scoped to the user's monitored trips. The word 'historical' implicitly differentiates it from live-status siblings like flight_status_for_segment, but no sibling is named explicitly, keeping it below a 5.

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

Usage Guidelines3/5

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

The scoping to 'flights monitored on the user's trips' implies when the tool applies, but there is no explicit when-to-use guidance, no mention of prerequisites, and no named alternative such as flight_status_for_segment for live status. Usage is inferable but not stated.

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

get_routesGet RoutesA
Read-onlyIdempotent
Inspect

Compare available driving, transit, walking, and bicycling route summaries between two places using Google Maps. Returns duration and distance estimates for supported modes, plus Uber, Lyft, Waymo, and Google Maps handoff buttons for the destination. Set origin to 'home' for the user's saved home address. Ground time excludes airport check-in and security. Fares, detailed legs, flights, and ferries are unavailable.

NameRequiredDescriptionDefault
timeNoISO 8601 date-time with an explicit UTC offset. Required for leave_by or arrive_by; omit for leave_now.
modesNoModes to compare. Defaults to all four.
originYesStarting place or address (1 to 300 characters), or 'home' for the user's private saved home address.
time_modeNoWhen to travel. Default leave_now.
destinationYesEnding place or address (1 to 300 characters).

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds real behavioral context beyond that: what the response contains (duration and distance per mode, handoff buttons for Uber/Lyft/Waymo/Maps), that ground time excludes airport check-in and security, and which data classes are unavailable.

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 action and scope, then layers returns, the 'home' convenience, a caveat about ground time, and an availability disclaimer. Every sentence carries information, though the final two sentences are slightly list-like and could be tightened.

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 must describe return values, and it does so at a summary level (duration/distance estimates plus booking handoff buttons). Combined with full schema coverage of the five parameters, an agent has what it needs, though return format details and pagination/limits remain unspecified.

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%, so all five parameters including the enum values and the 'home' origin sentinel are already documented in the schema. The description's restatement of the 'home' behavior and the supported modes duplicates rather than extends that, so the baseline 3 applies.

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 (Compare) and resource (route summaries between two places) and enumerates the supported modes, which cleanly separates it from siblings like flight_route_lookup or places_search. An agent can identify this as the multi-modal ground routing tool without opening the schema.

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?

Gives clear context for use (comparing driving/transit/walking/bicycling between two places) and effective exclusions by stating what is unavailable (fares, detailed legs, flights, ferries), which routes the agent elsewhere for those needs. It does not, however, name a specific sibling alternative or state prerequisites, so it stops short of full when/when-not guidance.

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

get_travel_statsGet Travel StatsA
Read-onlyIdempotent
Inspect

Get lifetime travel summary statistics across all owned and shared trips: total trips, completed trips, total segments, and segment counts by type.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is covered. The description adds the meaningful scope fact that shared trips are included, but says nothing about latency, rate limits, caching, or how aggregated data is refreshed.

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?

A single sentence that front-loads the scope and then lists the returned metrics with zero filler. Every clause contributes information an agent needs.

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 no output schema, the description carries the burden of describing the return payload and does so by naming the four metric groups. Combined with the zero-parameter schema and read-only annotations, an agent has everything needed to invoke it correctly.

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?

The tool takes zero parameters, which is the baseline-4 case; there is nothing for the description to disambiguate. The enumeration of returned metrics is useful but belongs to output disclosure rather than parameter semantics.

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 (Get) and resource (lifetime travel summary statistics) and enumerates exactly which metrics are returned: total trips, completed trips, total segments, and segment counts by type. The scope 'across all owned and shared trips' also distinguishes it from per-trip tools like get_trip_expense_summary.

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

Usage Guidelines3/5

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

The phrase 'lifetime travel summary statistics across all owned and shared trips' implies this is the global aggregate tool, as opposed to per-trip siblings, but no when-to-use or when-not-to-use condition is stated and no alternative tool is named. Usage is only inferable.

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

get_trip_expense_summaryTrip Expense SummaryA
Read-onlyIdempotent
Inspect

Get trip spend totals, per-currency breakdowns, traveler balances, and calculated who-pays-whom settlement suggestions for a trip.

NameRequiredDescriptionDefault
trip_idYesTineo trip ID (from trips_list).
include_settlementsNoWhether to include optimal who-pays-whom settlement suggestions. Default true.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered by structured data. The description adds that settlements are 'calculated' (a computed, not stored, result), which is useful context, but says nothing about authorization needs, data freshness, or edge cases. With annotations carrying the behavioral load, a 3 is appropriate.

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?

A single sentence, front-loaded with the verb and resource, listing the concrete outputs with zero filler. Every clause earns its place.

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?

For a read-only summary tool with no output schema, the description adequately enumerates the returned data (totals, per-currency breakdowns, balances, settlements). Annotations cover the safety profile and the schema covers both params, so nothing critical is missing; only deeper behavioral detail is absent.

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% – trip_id and include_settlements are both fully documented, including the default for include_settlements. The description's mention of 'settlement suggestions' loosely maps to include_settlements but adds no syntax or format detail beyond the schema. Baseline 3 when the schema does the heavy lifting.

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

Purpose4/5

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

States a specific verb (Get) and resource (trip expense summary) and enumerates the outputs: spend totals, per-currency breakdowns, traveler balances, and settlement suggestions. An agent can tell it apart from siblings like get_travel_stats or trip_details, though it never names an alternative explicitly.

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

Usage Guidelines3/5

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

The phrase 'for a trip' and the settlement/balance focus imply when it is useful, but there is no explicit when-to-use, when-not-to-use, or named alternative. Usage is inferred from purpose rather than stated.

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

get_trip_weatherTrip WeatherA
Read-onlyIdempotent
Inspect

Get trip weather. Daily detail returns a city-grouped forecast bounded to trip dates with confidence tiers; current or hourly detail returns observed or near-term conditions for one trip city. Provide trip_id from trips_list.

NameRequiredDescriptionDefault
hoursNoHourly forecast horizon, default 12 hours. Used only when detail is hourly.
detailNoWeather detail. Default daily.
city_idNoTrip city ID, used for current or hourly weather. If omitted on a multi-city trip, the result lists available city IDs.
trip_idYesTineo trip ID (from trips_list).
max_daysNoOptional forecast horizon cap in days. Default 16.

Output Schema

NameRequiredDescription
typeNo
citiesNo
detailNo
tripIdNo
outcomeNo
weatherNo
availableCitiesNo

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds real behavioral context: the forecast is bounded to trip dates with confidence tiers, and omitting city_id on a multi-city trip returns the available city IDs rather than failing. It still doesn't describe pagination or response shape, but that gap is minor given the 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?

Two sentences, no filler, and the detail-mode behavior is front-loaded before the prerequisite. The leading 'Get trip weather' clause is mildly redundant with the title, keeping it off a 5.

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?

For a read-only lookup with an output schema and 100% parameter coverage, the description supplies the mode semantics, the trip-scoping constraint, and the city-fallback behavior an agent needs. Nothing critical is missing, though explicit sibling routing would make it fully self-sufficient.

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 every parameter, including the hours/detail/city_id interplay, is already documented in the schema. The description restates the detail-mode mapping and the city_id fallback behavior without adding syntax or format detail beyond what the schema provides, so the baseline of 3 applies.

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

Purpose4/5

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

The description opens with a specific verb+resource ('Get trip weather') and then distinguishes the three detail modes by what each returns, so an agent can tell daily from current/hourly. It does not explicitly contrast itself against nearby weather-related siblings such as get_flight_airport_conditions, so it stops short of a 5.

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

Usage Guidelines3/5

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

It gives the required prerequisite ('Provide trip_id from trips_list') and implicitly routes detail=current/hourly to single-city near-term conditions, but never states when to prefer this tool over alternatives or any exclusion cases. Usage is implied rather than prescribed.

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

import_parse_text_previewPreview Travel Text ImportA
Read-onlyIdempotent
Inspect

Parse pasted travel confirmation text into proposed itinerary segments without saving anything. Use this before creating segments from copied email, PDF, or booking text.

NameRequiredDescriptionDefault
textYesTravel confirmation, booking, or itinerary text to parse: one booking confirmation per call, or a few days of an itinerary. A whole trip page listing many bookings can exceed the 90-second parse limit, so split it. Raw text is used only for parsing and is not echoed back.
trip_idNoOptional trip ID used only to verify access and give the parser trip context
user_hintNoOptional user-provided context, such as provider name or expected segment type
max_segmentsNoMaximum number of segment previews to return, from 1 to 20. Defaults to 10.

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, covering the safety profile. The description adds that parsing produces 'proposed' segments and saves nothing, which is mildly redundant with the read-only hint but clarifies the preview nature. It does not add deeper behavioral context like rate limits, error behavior, or output format.

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 tight sentences with no waste. The purpose and non-persistence are front-loaded, followed by a clear usage instruction. Every sentence earns its place.

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 the tool's purpose and when to use it, and the input schema is fully described. With no output schema, it would be slightly more complete if it described the shape or fields of the returned segment previews, but the core need is met.

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%, so the input schema already documents every parameter thoroughly, including the 90-second parse limit. The description contributes no parameter-level meaning beyond what the schema provides, making the baseline of 3 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?

The description states a specific verb ('Parse') and resource ('pasted travel confirmation text') and clarifies the output ('proposed itinerary segments') and the key constraint ('without saving anything'). It implicitly distinguishes itself from segment_create by being a non-persistent preview, so an agent can tell it apart from creation tools without opening schemas.

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?

It gives a clear usage trigger: 'Use this before creating segments from copied email, PDF, or booking text.' This tells the agent exactly when to reach for it. However, it does not name a specific alternative (e.g., segment_create) or say when not to use it, leaving minor inference to the agent.

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

known_participantsKnown Trip ParticipantsA
Read-onlyIdempotent
Inspect

Search people the authenticated user previously added to trips. Use before traveler_add, then obtain explicit invitation consent and confirm the email address.

NameRequiredDescriptionDefault
namesYesNames to match against prior trip participants.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare this a safe, idempotent, read-only, non-open-world operation, so the safety burden is covered. The description adds genuinely useful behavioral context beyond that: a consent requirement and email-confirmation step. However, it says nothing about what the search returns or matching behavior, so it adds only moderate value on top of the 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?

Two tight sentences with the purpose front-loaded and the workflow guidance following. Every clause earns its place, though the second sentence bundles several instructions (sequencing, consent, email confirmation) fairly densely.

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?

For a single-parameter read-only search with no output schema, the description covers purpose, sequencing relative to traveler_add, and a consent precondition. The main remaining gap is that it never indicates what the search returns, which would help an agent act on the result.

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% for the single 'names' parameter, and the schema documents that it is the names matched against prior participants. The description adds no syntax, format, or matching detail beyond the schema, so the baseline 3 for full coverage applies.

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

Purpose4/5

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

States a specific verb and resource: 'Search people the authenticated user previously added to trips.' An agent can immediately tell this queries prior trip participants. It does not explicitly differentiate from similarly named siblings like trip_travelers or friends_list, but the purpose itself is unambiguous.

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 positions the tool in a workflow: 'Use before traveler_add,' which names the alternative/next step and when to invoke it. It also adds a precondition (obtain explicit invitation consent). It stops short of stating when NOT to use it, so it is clear context rather than full routing guidance.

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

library_list_clear_completedClear Completed Library List ItemsA
DestructiveIdempotent
Inspect

Permanently delete every completed item from an owned Library List. Tell the user how many items will be removed; call with confirmed=true only after they confirm. Use the listId and expectedVersion from the latest library_list_get. On library_version_mismatch, read the list again and reconsider the change; never retry blindly. Library Lists only, not trip checklists.

NameRequiredDescriptionDefault
listIdYesLibrary List ID from library_lists_search or library_list_get.
confirmedYesTrue only after the user explicitly confirms this exact change. Without it the tool changes nothing and returns the change for review.
expectedVersionYesOpaque version from the latest library_list_get or Library List tool result.

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare destructive=true and idempotent=true, but the description adds the crucial human-in-the-loop constraint that confirmed=true is required and that unconfirmed calls change nothing, plus the version-conflict recovery path. This is behavior an agent cannot derive from the annotations alone.

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?

Front-loads the destructive action, then the confirmation requirement, then the sourcing and error-handling instructions. Every clause is load-bearing with no filler.

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 destructive mutation with no output schema, the description covers scope, prerequisites, confirmation workflow, parameter sourcing, and conflict recovery — everything an agent needs to invoke it safely and correctly.

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 goes further by tying listId and expectedVersion to their source (latest library_list_get) and explaining confirmed as a user-confirmation gate. That workflow meaning exceeds the field-level schema text.

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: 'Permanently delete every completed item from an owned Library List.' It also draws an explicit scope boundary against the many sibling deletion tools by noting 'Library Lists only, not trip checklists.' An agent can distinguish it from library_list_delete, library_list_item_delete, and checklist_items_remove immediately.

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 a full when-to-use protocol: confirm the removal count with the user, call with confirmed=true only after confirmation, and source listId/expectedVersion from the latest library_list_get. It even prescribes recovery behavior on library_version_mismatch (re-read and reconsider, never retry blindly), leaving nothing to inference.

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

library_list_deleteDelete Library ListA
DestructiveIdempotent
Inspect

Delete an entire owned Library List and all of its items. Name the list to the user first; call with confirmed=true only after they confirm. Use the listId and expectedVersion from the latest library_list_get. On library_version_mismatch, read the list again and reconsider the change; never retry blindly. Library Lists only, not trip checklists.

NameRequiredDescriptionDefault
listIdYesLibrary List ID from library_lists_search or library_list_get.
confirmedYesTrue only after the user explicitly confirms this exact change. Without it the tool changes nothing and returns the change for review.
expectedVersionYesOpaque version from the latest library_list_get or Library List tool result.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already flag this as destructive and non-idempotent-safe, but the description adds genuine behavioral context beyond them: the mandatory user-confirmation gate, the fact that without confirmed=true nothing changes and the pending change is returned for review, and the version-conflict recovery procedure.

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?

Five tightly packed sentences, front-loaded with the destructive scope and confirmation requirement, then the sourcing and error-handling rules. No filler or redundancy.

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 destructive, confirmation-gated mutation with no output schema, the description covers everything an agent needs: what is destroyed, the confirmation requirement, how to obtain required parameters, and how to handle version mismatches. Nothing material is missing.

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%, so the schema already documents listId, confirmed, and expectedVersion thoroughly — including the confirmation semantics. The description's guidance to source values 'from the latest library_list_get' largely echoes the schema, so it stays at the baseline for a fully-covered 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?

States a specific verb (delete) and resource (Library List) with explicit scope: the entire list and all of its items. It also draws a clear boundary — 'Library Lists only, not trip checklists' — which separates it from the checklist siblings, and the 'entire...all of its items' framing distinguishes it from library_list_item_delete.

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 an explicit workflow: name the list to the user first, only pass confirmed=true after they confirm, and source listId/expectedVersion from the latest library_list_get. It also prescribes the recovery path on library_version_mismatch (re-read and reconsider, never retry blindly), leaving little to inference.

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

library_list_getRead Library ListA
Read-onlyIdempotent
Inspect

Read one owned Tineo Library List, including every stable item UUID and its version. Read before editing; preserve fields the user did not ask to change. Never use trip segment IDs or guess list/item IDs.

NameRequiredDescriptionDefault
listIdYes
itemTypeNolist

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover readOnly/idempotent/non-destructive/non-open-world, so the bar is lower, but the description adds real behavior: the payload includes every stable item UUID and its version, and it flags the edit-preservation concern. It does not describe pagination, though a single-list read likely has none.

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 short sentences, front-loaded with the read scope, then the workflow rule, then the guardrail. Nothing is filler and the ordering matches how an agent would act.

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 usefully says what comes back (item UUIDs and versions) and covers safety via annotations. The remaining gap is parameter documentation for itemType and the source of a valid listId.

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 0% for two parameters, so the description must compensate. It gives genuine semantics for listId (it is not a trip segment ID and must be a known/real ID, not guessed), but says nothing about itemType (enum with default 'list') or where a valid listId is obtained.

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 ('Read one owned Tineo Library List') with scoping word 'one' and 'owned' that separates it from the sibling library_lists_search. An agent can pick it 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 Guidelines4/5

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

'Read before editing' gives an explicit when-to-use rule that ties it to the library_list_edit sibling, and 'Never use trip segment IDs or guess list/item IDs' gives a clear when-not caveat. It stops short of naming the alternate lookup tool (library_lists_search) for obtaining a listId.

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

library_list_item_addAdd Library List ItemA
Idempotent
Inspect

Add one item to an owned Library List. Generate one new itemId UUID for the item and reuse it on retries, so a retried call never adds a duplicate. Use the listId and expectedVersion from the latest library_list_get. On library_version_mismatch, read the list again and reconsider the change; never retry blindly. Library Lists only, not trip checklists.

NameRequiredDescriptionDefault
textYesThe item's text.
itemIdYesNew caller-generated UUID for the item; reuse the same value when retrying.
listIdYesLibrary List ID from library_lists_search or library_list_get.
expectedVersionYesOpaque version from the latest library_list_get or Library List tool result.

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare idempotentHint=true, but the description explains the mechanism behind it: a caller-generated itemId reused on retries so a retried call never duplicates. It also discloses the version-mismatch failure mode and the required recovery behavior, which annotations cannot convey.

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?

Four compact sentences, all front-loaded on the action, and each one carries distinct, non-redundant information (purpose, idempotency, sourcing, error handling, scope). No filler.

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?

No output schema exists, but the description covers the full contract an agent needs: which ID/version to supply, how to retry safely, how to react to version mismatch, and what this tool explicitly does not touch. Nothing essential 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 baseline is 3, but the description adds cross-tool provenance for listId and expectedVersion ('from the latest library_list_get') and the 'latest' qualifier on expectedVersion, which clarifies freshness expectations beyond the schema text.

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 plus scope: 'Add one item to an owned Library List.' The singular 'one item' plus the explicit 'Library Lists only, not trip checklists' distinguishes it from the plural sibling library_list_items_add and from checklist_items_add.

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 preconditions ('Use the listId and expectedVersion from the latest library_list_get'), an error-recovery path ('On library_version_mismatch, read the list again and reconsider the change; never retry blindly'), and a scope exclusion ('not trip checklists'). This is when/when-not/alternative guidance at a high level of specificity.

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

library_list_item_deleteDelete Library List ItemA
DestructiveIdempotent
Inspect

Permanently delete one item from an owned Library List. Show the user the exact item first; call with confirmed=true only after they confirm. Use the listId and expectedVersion from the latest library_list_get. On library_version_mismatch, read the list again and reconsider the change; never retry blindly. Library Lists only, not trip checklists.

NameRequiredDescriptionDefault
itemIdYesExisting item ID from library_list_get.
listIdYesLibrary List ID from library_lists_search or library_list_get.
confirmedYesTrue only after the user explicitly confirms this exact change. Without it the tool changes nothing and returns the change for review.
expectedVersionYesOpaque version from the latest library_list_get or Library List tool result.

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, but the description goes further: it emphasizes permanence, explains the confirmed=true gate (without it the tool changes nothing), and prescribes recovery on library_version_mismatch ('read the list again... never retry blindly'). This is exactly the behavioral context annotations cannot carry.

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?

Five short sentences, action front-loaded, followed by confirmation workflow, value sourcing, and error recovery. Every sentence carries distinct operational value with no filler.

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 destructive, version-guarded mutation with no output schema, the description covers the confirmation gate, parameter provenance, and version-conflict handling. Nothing an agent needs to invoke it safely 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 sourcing semantics beyond the schema by telling the agent to pull listId and expectedVersion 'from the latest library_list_get.' It does not add format or edge-case meaning for itemId, so it sits just above baseline.

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 ('Permanently delete one item from an owned Library List') and explicitly bounds scope with 'Library Lists only, not trip checklists,' which separates it from the checklist_items_remove sibling. An agent can identify the operation and its object without opening the 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?

Gives explicit sequencing ('Show the user the exact item first; call with confirmed=true only after they confirm'), names the source tools for the required values (library_list_get), and states the exclusion ('not trip checklists'). When-to-use, prerequisites, and the alternative boundary are all present.

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

library_list_items_addAdd Library List ItemsA
Idempotent
Inspect

Add several items to an owned Library List in one call, in order (for example a whole packing or to-do list). Give each item its own new itemId UUID and reuse the same values on retries, so a retried call never adds duplicates. Up to 100 items per call; split longer lists. Use the listId and expectedVersion from the latest library_list_get. On library_version_mismatch, read the list again and reconsider the change; never retry blindly. Library Lists only, not trip checklists.

NameRequiredDescriptionDefault
itemsYesThe new items in order.
listIdYesLibrary List ID from library_lists_search or library_list_get.
expectedVersionYesOpaque version from the latest library_list_get or Library List tool result.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations declare idempotentHint=true and destructiveHint=false, but the description goes further by explaining the mechanism that makes retries safe (caller-generated itemIds reused on retry) and the exact error-recovery path for version conflicts. It also discloses the 100-item ceiling, none of which is in 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?

The what, the idempotency contract, the limits, and the failure-handling rule are packed into five tight sentences with the primary action front-loaded and no filler.

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 mutation tool with no output schema, it covers the essentials an agent needs: batch limits, version preconditioning, retry safety, and error recovery. Nothing required to call it correctly is missing.

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% and the schema already documents itemId reuse semantics, listId provenance, and expectedVersion opaque format. The description's guidance on where to obtain listId/expectedVersion and the 'in order' constraint largely restates what the schema already says, so it earns baseline rather than added value.

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 (add), resource (several items), and scope (an owned Library List, in one call, in order) that an agent can act on directly. It also excludes trip checklists, which cleanly separates it from the many checklist_* and library_list_item_* siblings.

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 prescribes the workflow: fetch listId and expectedVersion from library_list_get, split lists over 100 items, and handle library_version_mismatch by re-reading rather than blindly retrying. It also names the boundary case (Library Lists, not trip checklists), leaving nothing to inference.

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

library_list_items_reorderReorder Library List ItemsA
DestructiveIdempotent
Inspect

Reorder the items of an owned Library List. orderedItemIds must contain every current item ID exactly once, in the new order. Show the user the proposed order first; call with confirmed=true only after they confirm. Use the listId and expectedVersion from the latest library_list_get. On library_version_mismatch, read the list again and reconsider the change; never retry blindly. Library Lists only, not trip checklists.

NameRequiredDescriptionDefault
listIdYesLibrary List ID from library_lists_search or library_list_get.
confirmedYesTrue only after the user explicitly confirms this exact change. Without it the tool changes nothing and returns the change for review.
orderedItemIdsYesEvery current item ID exactly once, in the new order.
expectedVersionYesOpaque version from the latest library_list_get or Library List tool result.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare it non-read-only, idempotent, and destructive; the description adds substantial context beyond them — a required-confirmation gate, version preconditions, and conflict-recovery policy that no annotation covers. It stops short of explaining what makes the operation destructive (nothing is deleted since every item must appear exactly once), so the destructiveHint is left unaddressed.

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?

Front-loads the core action, then presents the constraint, confirmation gate, parameter sourcing, and error policy in dense, waste-free sentences. Every sentence carries a distinct operational instruction.

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?

No output schema exists, and the description compensates by covering the confirmation flow, versioning preconditions, conflict handling, and scope limits — everything an agent needs to invoke this mutation correctly without blindly retrying.

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%, so the baseline is 3. The description restates the orderedItemIds constraint ('every current item ID exactly once, in the new order') and points to library_list_get for listId/expectedVersion, but adds little meaning beyond what the schema already documents per-parameter.

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 (reorder) and resource (items of an owned Library List), and explicitly distinguishes itself from the closest sibling with 'Library Lists only, not trip checklists' — separating it from checklist_items_reorder. An agent can identify the correct tool 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?

Gives explicit preconditions (use listId/expectedVersion from the latest library_list_get), a gated confirmation flow ('show the proposed order first; call with confirmed=true only after they confirm'), and recovery guidance for library_version_mismatch ('read the list again and reconsider; never retry blindly'). It also names the excluded alternative scope.

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

library_list_item_updateUpdate Library List ItemA
DestructiveIdempotent
Inspect

Change one existing item in an owned Library List (text, completed, color, notes, priority, dueDate), for example to check it off. Changes only the fields named in updateFields. Use the listId and expectedVersion from the latest library_list_get. On library_version_mismatch, read the list again and reconsider the change; never retry blindly. Library Lists only, not trip checklists.

NameRequiredDescriptionDefault
itemIdYesExisting item ID from library_list_get.
listIdYesLibrary List ID from library_lists_search or library_list_get.
updatesYesNew values for the fields named in updateFields.
updateFieldsYesThe fields the user asked to change. Only these keys of updates are applied. To clear a nullable field, name it here and set it to an empty string, only when the user asks to clear it.
expectedVersionYesOpaque version from the latest library_list_get or Library List tool result.

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare idempotentHint=true and destructiveHint=true, so the safety profile is partially covered. The description adds valuable behavior beyond that: it is a partial update ('Changes only the fields named in updateFields') and it uses optimistic concurrency via expectedVersion with a mismatch-retry policy. It stops short of describing what 'destructive' means here (e.g. field clearing), which the schema's updateFields description covers instead.

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?

Front-loaded with the core action, then scoping, then the concurrency/error contract. Each sentence earns its place: field list, partial-update rule, parameter sourcing, mismatch recovery, and scope exclusion.

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 mutation tool with no output schema, the description supplies what the annotations cannot: partial-update semantics, the concurrency token contract, and a safe error-recovery rule. Combined with the fully documented schema, an agent has everything needed to invoke it correctly.

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 description coverage is 100%, so the baseline is 3. The description adds meaning beyond the schema by clarifying that only keys named in updateFields are applied and by specifying that listId/expectedVersion come from the latest library_list_get, reinforcing the optimistic-concurrency contract.

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 ('Change one existing item in an owned Library List'), enumerates the mutable fields, and gives a concrete example ('to check it off'). It also explicitly excludes the adjacent sibling by scope ('Library Lists only, not trip checklists'), so an agent can distinguish it from checklist_item_update.

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 workflow guidance: 'Use the listId and expectedVersion from the latest library_list_get' and a recovery path for 'library_version_mismatch' ('read the list again and reconsider the change; never retry blindly'). It also names the boundary condition against trip checklists. When-to-use and error handling are both present.

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

library_list_updateUpdate Library ListA
DestructiveIdempotent
Inspect

Change one owned Library List's own details (title, emoji, color, description). Changes only the fields named in updateFields; never touches the list's items. Use the listId and expectedVersion from the latest library_list_get. On library_version_mismatch, read the list again and reconsider the change; never retry blindly. Library Lists only, not trip checklists.

NameRequiredDescriptionDefault
listIdYesLibrary List ID from library_lists_search or library_list_get.
updatesYesNew values for the fields named in updateFields.
updateFieldsYesThe fields the user asked to change. Only these keys of updates are applied. To clear a nullable field, name it here and set it to an empty string, only when the user asks to clear it.
expectedVersionYesOpaque version from the latest library_list_get or Library List tool result.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare idempotentHint=true, destructiveHint=true, and openWorldHint=false, so the safety profile is largely structured. The description still adds real value beyond that: it discloses partial-update semantics via updateFields and the version-mismatch recovery behavior. It stops short of stating permissions or exactly what 'destructive' means here, hence not a 5.

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?

Front-loaded with the core action, then scoping, then the concurrency workflow and failure branch. Every clause carries distinct, actionable information with no filler.

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 mutation tool with full annotation coverage, 100% schema coverage, and no output schema, the description supplies the missing operational context: the partial-update contract, the item-safety guarantee, and the version-conflict recovery procedure. Nothing needed to invoke it correctly is missing.

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 schema already documents updates, updateFields (including the empty-string clear convention), listId, and expectedVersion in detail. The description's parameter content (field list, updateFields scoping, listId/expectedVersion sources) largely restates the schema, so the baseline 3 applies.

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 ('Change one owned Library List's own details') and enumerates the affected fields. It explicitly distinguishes itself from item operations ('never touches the list's items') and from trip checklists, so an agent can separate it from library_list_item_update and checklist_item_update without opening any 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?

Gives the precondition for the required optimistic-concurrency args ('Use the listId and expectedVersion from the latest library_list_get'), an explicit error-recovery path ('On library_version_mismatch, read the list again...never retry blindly'), and a scope exclusion ('Library Lists only, not trip checklists'). When-to-use, when-to-recover, and when-not-to-use are all covered.

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

packing_list_regenerateRegenerate Packing ListA
Destructive
Inspect

Regenerate a trip's existing packing checklist: replaces the generated items the user has not touched, and keeps every item the user checked, added or edited. Use only after the user asks to redo or refresh the list. With people, only those people's lists are regenerated (a person without a list gets a new one); a trip with no list yet gets a new one. Provide the trip_id from trips_list. Tineo builds the list on its servers with its AI model provider, sending the trip's title, dates, destinations, itinerary items, weather forecast, any context_notes, and each person's age band and notes (never their name).

NameRequiredDescriptionDefault
peopleNoOptional. One personalized list per person (max 6), titled with the person's name.
trip_idYesTineo trip ID (from trips_list).
context_notesNoOptional packing-relevant details the user asked to include, such as planned activities or special gear. Pass only what the user wants reflected in the list. Never include health conditions, medical details or other sensitive personal information.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true and non-idempotency, but the description adds genuinely new behavior: exactly what is destroyed (untouched generated items) versus preserved (user-checked/added/edited items), and that generation happens on Tineo's servers via an AI model provider. It even discloses the data payload sent and the privacy exclusions (names never sent), which no annotation conveys.

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 action and merge rule, followed by usage gating, scoping, and the data-handling note. Dense but each sentence carries distinct information; the final data-flow sentence is long yet earns its place given the privacy implications.

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 destructive, non-idempotent, no-output-schema tool, the description covers everything an agent needs: trigger condition, merge behavior, people scoping, trip_id sourcing, and server-side processing with privacy exclusions. Nothing material is left unspecified.

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 real meaning: trip_id's source (trips_list), and that passing 'people' regenerates only those people's lists while creating new ones for list-less people. It reinforces rather than merely repeats the schema's own descriptions.

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 ('Regenerate a trip's existing packing checklist') and immediately defines the merge semantics: untouched generated items are replaced while checked/added/edited items are kept. This uniquely distinguishes it from the sibling generate_packing_list, which an agent can now tell apart 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 Guidelines4/5

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

Gives an explicit trigger condition ('Use only after the user asks to redo or refresh the list') plus scoping rules for people and list-less trips, and points to trips_list for the trip_id. It stops short of naming generate_packing_list as the alternative for a first-time list, which is the key routing decision.

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

place_detailsView place detailsA
Read-onlyIdempotent
Inspect

Look up a selected place ID for its name, address, map URL, coordinates, photos, and timezone when missing from places_search. Google rich business details are disabled: do not use this tool to answer opening-hours, open-now, price, website, phone, or rating questions. Missing fields mean unavailable, not closed or absent. Previously cached optional details may be stale.

NameRequiredDescriptionDefault
languageNoOptional BCP 47 language code for place data
place_idYesThe provider place ID returned by places_search

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already cover the safety profile (readOnly, idempotent, openWorld, non-destructive), and the description layers on context those annotations cannot express: Google rich business details are disabled, missing fields mean unavailable rather than closed/absent, and cached optional details may be stale. These are exactly the failure modes an agent would otherwise misread.

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?

Four short sentences, ordered purpose first, then the negative routing, then two interpretation caveats. No filler, and the most decision-relevant constraint (what this tool cannot answer) is 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 no output schema, the description still tells the agent which fields to expect, how to interpret absent fields, and that cached values may be stale. Nothing needed to call or interpret this tool correctly is missing.

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%, so both place_id and language are already documented in the schema, and the description correctly ties place_id back to places_search output. It adds nothing about the language parameter's effect on returned data, so the 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?

States a specific verb (look up) and resource (place ID) and enumerates the exact fields returned: name, address, map URL, coordinates, photos, timezone. It also positions itself relative to the sibling places_search by scoping its use to IDs already obtained there.

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 an explicit trigger ('when missing from places_search') and explicit exclusions naming six question categories (opening-hours, open-now, price, website, phone, rating) the tool must not be used for. This is a rare case of a description telling the agent both when to use it and when not to.

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

search_airport_loungesSearch Airport LoungesA
Read-onlyIdempotent
Inspect

Requires Tineo Ultra access. Search Tineo's populated first-party airport-lounge catalog by IATA and optional terminal/gate. Returns terminal, concourse, stored gate reference, location, access, amenity, rating, and day-pass fields with categorical gate relevance (not walking distance).

NameRequiredDescriptionDefault
gateNoOptional gate, such as A17.
terminalNoOptional terminal or concourse, such as Terminal 5 or Concourse A.
iata_codeYesRequired 3-letter IATA airport code, such as ATL.
max_resultsNoMaximum lounges returned. Default 10.

Output Schema

NameRequiredDescription
gateNo
noteNo
typeYes
loungesYes
terminalNo
localDateNo
timeFormatNoThe signed-in user's saved time format. Absent or auto uses the host locale.
airportIataYes
totalMatchesYes
schemaVersionYes
airportTimeZoneNo

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive and closed-world, so the safety profile is covered. The description adds material behavioral context beyond that: the access-tier requirement and the caveat that gate relevance is categorical rather than walking distance, which prevents misinterpretation of results. It stops short of describing matching or empty-result behavior, so not a 5.

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, zero filler, and the access prerequisite and search scope are front-loaded before the return-value detail. Every clause carries information.

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?

For a read-only search with full annotation coverage and an output schema, the description covers access requirements, search scope, returned field categories, and the key gate-relevance caveat. Minor omissions (matching semantics, behavior on zero results) keep it just short of complete.

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%, so the baseline is 3. The description mirrors the schema parameters (IATA, terminal/gate) without adding syntax or interaction rules, and says nothing about max_results; the one nuance it adds concerns result interpretation rather than parameter usage.

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 ('Search Tineo's populated first-party airport-lounge catalog') and narrows scope by key ('by IATA and optional terminal/gate'). This is clearly distinguishable from sibling search tools like search_hotels, search_attractions, and places_search without opening a schema.

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

Usage Guidelines3/5

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

It gives a real eligibility prerequisite ('Requires Tineo Ultra access'), which is useful context, but says nothing about when to prefer this over alternatives or when it is inapplicable. Usage is implied rather than stated, so a 3 is appropriate.

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

search_attractionsSearch Attractions & SightsA
Read-onlyIdempotent
Inspect

Search for popular tourist attractions, sights, landmarks, and things to do in a destination using TripAdvisor and Google Places. Returns attraction cards with ratings, descriptions, addresses, and ticket/experience links. Use when the user asks about top sights, landmarks, or attractions in a city.

NameRequiredDescriptionDefault
limitNoMaximum number of attractions to return (max 10).
queryYesDestination name, landmark, or attraction search term (e.g. 'Rome', 'Eiffel Tower', 'museums in London').
locationNoOptional city/area location filter.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, and open-world behavior, so the bar is lower. The description adds useful context beyond that: it names the external providers (TripAdvisor, Google Places) and describes the return payload (cards with ratings, descriptions, addresses, ticket/experience links). It omits rate limits or result caching, but that is minor.

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?

Three sentences, front-loaded with the purpose, then output shape, then usage trigger. No filler, though "attractions/sights/landmarks/things to do" is slightly repetitive in its enumeration.

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?

There is no output schema, so the description correctly compensates by describing the returned cards. Purpose, output, and usage are all covered; only explicit sibling differentiation is missing, which keeps it from a 5.

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%, so all three parameters (query, limit, location) are already documented in the schema. The description adds no syntax, format, or filtering semantics beyond that. Baseline 3 is appropriate.

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

Purpose4/5

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

States a specific verb (search) and resource (attractions, sights, landmarks, things to do) and names the data sources (TripAdvisor, Google Places). It is clearly distinguishable in spirit from search_tours/search_hotels, though it does not explicitly contrast itself against the closely related places_search sibling.

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?

"Use when the user asks about top sights, landmarks, or attractions in a city" gives a clear trigger condition. However, it names no alternative tool and gives no when-not guidance, so an agent facing places_search or search_tours must still infer the boundary.

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

search_flight_pricesSearch Flight PricesA
Read-onlyIdempotent
Inspect

Never send more than 3 search_flight_prices calls in one turn: calls beyond 3 are rejected without searching. Search for flight itineraries with prices between two airports on a date using Google Flights. Returns available itineraries with prices, durations, airlines, layovers, and ranked route-search actions. Ages 12-17 are mapped as adults where a provider requires it; ages 0-1 are infants whose lap-versus-seat placement and provider policy must be confirmed before booking. Each account runs one search at a time; the second and third wait their turn and still return results. When the user names several airports, destinations, dates or trip lengths, search the 1 to 3 most likely combinations first (or one outbound_end_date range of up to 7 days), show the results, then ask before searching more. A queued or slow search returns lookupStatus pending with retry_after_seconds; it keeps its place and finishes on its own, so repeat the identical call after that wait to get its result. When the user rules out airlines or connection airports/countries, pass include_airlines/exclude_airlines/avoid_connection_airports/avoid_connection_countries so excluded routes are removed. Fares carry no baggage allowance: never claim a fare includes bags.

NameRequiredDescriptionDefault
trip_idNoOptional Tineo trip ID (from trips_list) this request is for. Used only to default the currency to that trip's currency when currency is omitted and the user has no preferred currency; ignored if the trip is not found or not accessible to the user.
currencyNoOptional ISO-style three-letter currency code. Omit to use the user's preferred currency, then the currency of the trip given by trip_id, then USD.
max_stopsNoOptional maximum number of stops (0 = nonstop only, 1 = up to 1 stop).
child_agesNoAge of each traveler under 18. Ages 12-17 are provider-mapped as adults where required; ages 2-11 are children and 0-1 are infants. Confirm lap-versus-seat placement with the user/provider for ages 0-1.
adult_countNoNumber of adult travelers (default 1).
cabin_classNoCabin class preference: 'economy', 'premium_economy', 'business', or 'first'. Default is 'economy'.
return_dateNoOptional return date in YYYY-MM-DD format for round-trip searches.
outbound_dateYesOutbound date in YYYY-MM-DD format. To compare several departure days, pass outbound_end_date in this one call rather than sending one call per day.
arrival_airportYesArrival airport IATA code, such as CDG.
exclude_airlinesNoOptional. Remove itineraries with any flight on these airlines (IATA code, airline name, or alliance). Single-date searches only.
include_airlinesNoOptional. Keep only itineraries where every flight is on one of these airlines: 2-character IATA code such as LH, airline name, or an alliance (Star Alliance, oneworld, SkyTeam). Single-date searches only.
departure_airportYesDeparture airport IATA code, such as JFK.
outbound_end_dateNoOptional inclusive end date for a cheapest-returned-fare-per-day calendar, up to 7 outbound dates beginning at outbound_date. Each day reports priced, no_results, failed, or not_searched; prices are live estimates and may change. Economy cabin only: omit cabin_class or use economy with a range.
avoid_connection_airportsNoOptional. Remove itineraries that connect at these airports (3-letter IATA codes). Single-date searches only.
avoid_connection_countriesNoOptional. Remove itineraries that connect in these countries (prefer ISO 3166 alpha-2 codes such as US, TR, RU; translate names to English). Single-date searches only.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations cover read-only/idempotent safety, but the description adds substantial non-obvious behavior: 3-call cap with rejection, one-search-at-a-time queuing with later calls still returning results, pending + retry_after_seconds semantics with identical-call retry, no baggage allowance disclaimer, and infant/lap confirmation requirement.

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?

Front-loaded with the most critical constraint (3-call cap) which is good. But it's a dense run-on paragraph mixing many distinct topics (queuing, children policies, exclusions, baggage) without structure; some sentences could be trimmed.

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 15-param search tool with no output schema, the description covers return shape (itineraries with prices, durations, airlines, layovers, ranked actions), async/queuing behavior, rate limits, and edge cases (children ages, baggage). An agent has what it needs to call correctly.

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. The description still adds cross-parameter guidance (outbound_end_date economy-only; use range instead of per-day calls; exclusion params only on single-date searches) that isn't fully captured per-param.

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 (search) plus resource (flight itineraries with prices) plus source (Google Flights) and the exact inputs (two airports on a date). Clearly distinct from siblings like flight_booking_link or flight_route_lookup.

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 when-to guidance: search 1-3 likely combinations first, show results, then ask before searching more; use outbound_end_date for multi-day comparison; use exclusion params when user rules out airlines/connections. Also caps at 3 calls per turn with consequences stated.

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

search_hotelsSearch Hotels & LodgingA
Read-onlyIdempotent
Inspect

Search for hotels and accommodations. Ordinary searches use the text query. Dated radius searches use a geographic bounding box and exact distance filter; SearchAPI does not apply the text query or style preferences within the radius. Provider coverage may be incomplete and prices may change. A hotel_place_id without radius_meters searches by the resolved hotel name; with radius_meters it searches nearby. Only a unique identity match retains its offer links.

NameRequiredDescriptionDefault
limitNoMaximum number of hotel results to return (max 10).
queryNoSearch query or destination city (e.g. 'hotels in Tokyo'). Required for ordinary hotel search. Google Hotels can mix in properties from nearby towns or districts; cards outside the searched place carry outsideRequestedArea and distanceFromAreaKm, and areaNote says how many. When the user wants a specific neighbourhood, get its coordinates or center_place_id from places_search and use a radius search. Radius search ignores this text in provider selection and filters by geography only. For hotel_place_id without radius_meters, the resolved property name is used for provider search and identity matching.
trip_idNoOptional Tineo trip ID (from trips_list) this request is for. Used only to default the currency to that trip's currency when currency is omitted and the user has no preferred currency; ignored if the trip is not found or not accessible to the user.
check_inNoCheck-in date in YYYY-MM-DD format (alias: checkIn).
currencyNoOptional ISO-style three-letter currency code. Omit to use the user's preferred currency, then the currency of the trip given by trip_id, then USD.
latitudeNoRadius center latitude. Supply together with longitude instead of a place ID. Query may be omitted for a coordinate-only radius search.
check_outNoCheck-out date in YYYY-MM-DD format (alias: checkOut).
longitudeNoRadius center longitude. Supply together with latitude instead of a place ID. Query may be omitted for a coordinate-only radius search.
adult_countNoNumber of adults (alias: adults).
radius_metersNoGeographic search radius, default 1000 meters when center_place_id or coordinates are given. Requires stay dates and a center. Text query and style preferences are not applied to radius provider selection.
hotel_place_idNoOptional specific hotel place ID. Searches priced inventory by hotel name, or nearby when radius_meters is supplied. Retains offer links only if identity is uniquely verified. Requires check_in and check_out.
center_place_idNoOptional place ID for the radius center, from places_search. Requires check_in and check_out.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive/open-world, so the bar is lower. The description adds non-obvious behavior beyond them: provider coverage may be incomplete, prices may change, style/text preferences are dropped inside a radius, and offer links survive only on a unique identity match.

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?

Content is front-loaded with purpose, then modes, then caveats, and no sentence is wasted. Some clauses (e.g. 'Only a unique identity match retains its offer links') are terse enough to require a second read, keeping it from a 5.

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?

For a 12-parameter read-only search with full schema coverage and annotations covering safety, the description supplies the mode semantics and limitations an agent needs. It never sketches the response shape, but with no output schema this is a minor gap rather than a blocker.

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 description coverage is already 100%, so baseline is 3. The description goes further by explaining the interaction between hotel_place_id and radius_meters and how provider search and identity matching use the resolved name, adding interpretation the schema alone doesn't convey.

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

Purpose4/5

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

The opening sentence gives a concrete verb+resource (search hotels/accommodations) that is clearly distinct from siblings like search_attractions, search_tours, and search_airport_lounges. It does not explicitly name or contrast those siblings, so it stops short of a 5.

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 lays out the operating modes well: ordinary text-query search, dated radius search, and hotel_place_id lookups with/without radius_meters, including the caveat that the text query is ignored within a radius. It does not, however, route the agent toward or away from alternative sibling tools.

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

search_toursSearch Tours & ActivitiesA
Read-onlyIdempotent
Inspect

Search for bookable tours, activities, excursions, and experiences at a destination using GetYourGuide with Viator and Tiqets travelpayouts fallbacks. Returns tour options with titles, prices, ratings, durations, and booking links. Use when the user asks about things to do, tours, activities, excursions, or experiences in a city or destination. Search one destination per call.

NameRequiredDescriptionDefault
dateNoOptional date in YYYY-MM-DD format to filter tours available on that day.
limitNoMaximum number of tour results to return (default 10, max 30).
queryYesSearch query for ONE destination, optionally with an activity type (e.g. 'walking tour Rome', 'snorkeling Cancun'). Never list several cities in one query: for a multi-city trip, call this tool once per city.
trip_idNoOptional Tineo trip ID (from trips_list) this request is for. Used only to default the currency to that trip's currency when currency is omitted and the user has no preferred currency; ignored if the trip is not found or not accessible to the user.
currencyNoOptional ISO-style three-letter currency code. Omit to use the user's preferred currency, then the currency of the trip given by trip_id, then USD.
providerNoPreferred tour provider to search ('all', 'getyourguide', or 'viator'). Default is 'all'.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, openWorld, non-destructive, so safety is covered. The description adds genuinely useful behavior beyond that: the provider chain (GetYourGuide primary, Viator and Tiqets fallbacks) and the return shape. It omits rate limits and does not explain why 'tiqets' appears in the fallback text but not in the provider enum.

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?

Four tight sentences, front-loaded with purpose then return shape then usage then constraint. Minor redundancy between the resource list in sentence one and the 'things to do, tours, activities' list in sentence three, but nothing is wasted.

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 no output schema, the description correctly fills the gap by enumerating the returned fields (titles, prices, ratings, durations, booking links). Combined with the usage trigger and per-call destination rule, an agent has everything needed to invoke it 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?

Schema description coverage is 100%, so all six parameters (including currency fallback chain and trip_id defaults) are already fully documented in the schema. The description's 'Search one destination per call' merely restates what the query parameter description already says, adding no new parameter meaning. Baseline 3 applies.

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 (Search) plus resource (bookable tours, activities, excursions, experiences) and names the primary source (GetYourGuide) with fallbacks. This clearly distinguishes it from siblings like search_attractions, search_hotels, and search_flight_prices.

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 trigger conditions are given: 'Use when the user asks about things to do, tours, activities, excursions, or experiences in a city or destination.' The 'one destination per call' constraint is a useful operational rule. However, it never names the closest alternative (search_attractions) or says when to prefer one over the other.

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

segment_associate_placeAssociate Place With SegmentA
Destructive
Inspect

Attach a Google Place to an ALREADY-EXISTING segment retroactively — writes a place association and syncs the segment's address/city/country/coordinates from the place. Use when a segment has a venue/name but no address (e.g. imported from a ticket confirmation with venue-only data). Requires a place_id from places_search/place_details. For CarRental/Transfer segments pass role "origin" or "destination"; omit for single-location segments (Activity, Lodging, EventTicket, Parking), which default to "primary".

NameRequiredDescriptionDefault
roleNoWhich location this place represents. Default "primary".
place_idYesGoogle Place ID from a prior places_search/place_details call.
segment_idYesSegment ID (from segment_details/trip_details) to attach the place to.

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and non-idempotent, and the description adds real context by explaining what gets written and that it syncs address/city/country/coordinates. It stops short of stating whether an existing address is overwritten, which would fully justify the destructive flag.

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 parenthetical and em-dash construction front-loads the core action and then layers conditions. Every clause carries actionable information (prerequisite, role rules) with no filler.

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 mutation tool with no output schema, the description covers what it does, the prerequisite source of place_id, and the per-segment role behavior — everything needed to invoke it correctly.

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 schema documents place_id, segment_id, and the role enum. The description goes beyond that by explaining where place_id comes from and when to pass origin/destination versus omitting role for single-location segments, adding conditional semantics the schema does not.

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+resource ('Attach a Google Place to an ALREADY-EXISTING segment') and clarifies the retroactive scope, distinguishing it from segment_create/segment_update. An agent can tell exactly what it does without opening the 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?

Explicitly gives the when: segments with a venue/name but no address, e.g. imported from a ticket confirmation. It also names the prerequisite data source (place_id from places_search/place_details) and routes role usage per segment type, leaving little to inference.

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

segment_createCreate itinerary itemAInspect

Create a new segment in a trip. FIRST call segment_get_schema to get the required fields for the segment type. Required in fields, besides trip_id: Flight airline (or a flightNumber starting with the airline code, e.g. UA 123), departureAirportCode, arrivalAirportCode, startDateTime; Lodging propertyName, startDateTime; Activity title, startDateTime; EventTicket eventName, startDateTime; CarRental rentalCompany, startDateTime; Train and Ferry operator, departureCity, arrivalCity, startDateTime; Transfer provider, pickupLocation, dropoffLocation, startDateTime; Parking facilityName, startDateTime; Note title; Poll title, options. Then provide the trip_id, segment_type, and fields matching the schema. Segment dates must fall within the parent trip dates. Dates up to 1 day outside the trip extend it, with a warning; further out, call trip_update first. For an Activity, Lodging, EventTicket or Parking at a real place, call places_search first and put the result's place ID in fields.placeId: Tineo links that place (map pin and coordinates) and fills a missing name, address, phone and website. Never invent a time: if the user has not given or chosen one, ask, or send the date only (YYYY-MM-DD) in startDateTime and Tineo stores it as time not set. Send a clock time only when the user stated it or a booking shows it.

NameRequiredDescriptionDefault
fieldsNoField values matching the schema for the segment type. Get schema first with segment_get_schema. Activity activityType is one of: tour, dining, show, spa, class, sports, sightseeing, other (other words are mapped or saved as other). title is optional for Flight, Lodging, Transfer, CarRental and Parking: Tineo derives one (e.g. "AA72 SYD → LAX", the property name, "Transfer to <dropoff>").
trip_idYesThe trip ID to add the segment to
segment_typeNoThe type of segment to create (Flight, Lodging, CarRental, Train, Transfer, Ferry, EventTicket, Parking, Activity, Note, Poll)

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only mark this as a non-idempotent write; the description goes well beyond them by disclosing the date-extension-with-warning rule, the place-linking side effect (map pin, coordinates, name/address/phone/website fill), and the time-not-set storage behavior. These are non-obvious behavioral traits an agent must know.

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?

Long but dense and front-loaded with the purpose and the mandatory first step. The per-type required-field enumeration is necessary given the branching schema; only the bridging sentence about providing trip_id/segment_type/fields is mildly redundant.

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 complex, nested-object write tool with no output schema, the description covers prerequisites, validation constraints, error paths (trip_update), and side effects. An agent has everything needed to invoke it correctly.

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%, but the description adds real meaning: per-segment-type required fields, title derivation for Flight/Lodging/Transfer/CarRental/Parking, activityType enum values, and how fields.placeId changes behavior. This substantially exceeds the schema text, though it does not restate the trip_id/segment_type parameters directly.

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 ('Create a new segment in a trip') and is clearly distinct from sibling writers like batch_segment_create and segment_update. The agent knows exactly what the tool does without opening the 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?

Gives explicit sequencing and prerequisites: call segment_get_schema FIRST, call places_search first for real-place segments, call trip_update when dates fall further than 1 day outside the trip, and ask the user rather than inventing a time. When-to-use and when-to-do-something-else are both spelled out.

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

segment_deleteDelete itinerary itemB
Destructive
Inspect

Delete a segment from a trip. This action cannot be undone.

NameRequiredDescriptionDefault
segment_idYesThe ID of the segment to delete

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and idempotentHint=false. The description reinforces this with 'This action cannot be undone,' adding irreversibility emphasis beyond the flags. However, it says nothing about permissions, cascading effects on associated bookings/places, or rate limits, which would be valuable for a delete.

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 short sentences, zero waste, with the destructive warning front-loaded immediately after the purpose. Ideal size for a simple delete.

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?

For a one-parameter delete with annotations covering the safety profile and no output schema needed, the description is essentially complete. Only minor gaps remain around side effects on linked data.

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?

With a single parameter at 100% schema description coverage, the schema fully documents segment_id. The description adds no format, sourcing, or constraint detail beyond the schema, so the baseline of 3 is appropriate.

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

Purpose4/5

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

States a specific verb ('Delete') and resource ('segment from a trip'), so an agent immediately knows the operation. It does not explicitly distinguish itself from siblings like segment_update or trip_delete, but the resource name is unambiguous.

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

Usage Guidelines2/5

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

There is no guidance on when to use this versus alternatives (e.g., segment_update for edits, batch_segment_create for bulk adds, trip_delete for whole-trip removal). Usage is only implied by the verb.

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

segment_detailsView itinerary itemA
Read-onlyIdempotent
Inspect

Get full details for a specific trip segment. Returns complete information based on segment type: flight details (airline, flight number, airports, terminals, seats, baggage), hotel details (property, address, check-in/out times, room type, amenities), activity details (venue, tickets, timing), event ticket details (event name, venue, timing, vendor, order, confirmation), car rental details (company, vehicle, pickup/dropoff locations), or transfer details (provider, transfer type, pickup/dropoff locations, addresses, and local times). bookingContext describes whether Tineo can prepare an in-app reviewed change or needs the full editor; it is not a save confirmation or additional write authority.

NameRequiredDescriptionDefault
segment_idYesThe unique identifier of the segment to fetch details for

Output Schema

NameRequiredDescription
canEditNo
segmentNo
bookingContextNo
duplicateStatusNo

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, non-openWorld, so the safety burden is carried. The description adds value by disclosing the per-type return payloads and, notably, clarifying that bookingContext indicates change-preparedness and is explicitly NOT a save confirmation or write authority, which prevents a misuse.

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 a clear one-line purpose, followed by scoping detail and a useful bookingContext caveat. The per-segment-type field enumeration is somewhat long and partly redundant with the output schema, costing a point, but every sentence carries meaning.

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 a rich output schema covering return values and full annotations covering safety, the agent has nearly everything needed. The description rounds out intent and the bookingContext semantics; only the lack of routing guidance to sibling tools leaves a minor gap.

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?

One parameter at 100% schema description coverage, so the schema alone documents segment_id. The description adds no syntax, format, or sourcing guidance beyond what the schema provides, making the baseline of 3 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?

States a specific verb (Get full details) and resource (specific trip segment), and the enumeration per segment type makes the scope unambiguous. An agent can distinguish this from trip_details (trip-level) and segment_get_schema (schema-level) without opening any schema.

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

Usage Guidelines3/5

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

Usage is implied: call this to fetch details for a known segment. However, no guidance is given on when to prefer it over segment_get_schema or trip_details, nor any prerequisite (e.g., needing a valid segment_id from trips_hub/segment_create). Minimum viable but with a clear gap.

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

segment_get_schemaGet itinerary item fieldsA
Read-onlyIdempotent
Inspect

Get the schema for a segment type. CALL THIS FIRST before creating/updating segments. Returns required fields and their types for the specified segment type. Supported types: Flight, Lodging, CarRental, Train, Transfer, Ferry, EventTicket, Parking, Activity, Note, Poll.

NameRequiredDescriptionDefault
segment_typeYesThe segment type to get schema for (Flight, Lodging, CarRental, Train, Transfer, Ferry, EventTicket, Parking, Activity, Note, Poll)

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already establish the safe read-only, idempotent profile. The description adds useful behavioral context beyond them: it discloses a call-order requirement and states the return content ('required fields and their types'), which is especially valuable because no output schema exists.

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?

The description is front-loaded with the action and the critical call-order instruction. It is efficient overall, though the supported-type list duplicates the schema's enum-like descriptions rather than adding new 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 simple one-parameter read-only tool with rich annotations but no output schema, the description supplies the essential missing pieces: what the tool returns and when to call it. An agent has enough information to invoke it 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?

Schema description coverage is 100%, and the single segment_type parameter is already fully documented in the input schema. The description repeats the supported-type list but adds no syntax, format, or validation semantics beyond what the schema provides, so the 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?

The description states a specific verb ('Get') and resource ('schema for a segment type'), and distinguishes the tool from siblings by explaining it retrieves field metadata rather than creating or updating segments. The supported-type list makes the resource scope unambiguous.

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?

It gives clear usage context with 'CALL THIS FIRST before creating/updating segments,' which routes the agent appropriately relative to segment_create and segment_update. It does not explicitly name those sibling tools or state when not to use this tool, so it stops short of a full 5.

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

segment_updateUpdate itinerary itemA
DestructiveIdempotent
Inspect

Update an existing segment. Only provide the fields you want to change. Get field names from segment_get_schema if unsure. Segment dates must fall within the parent trip dates; use trip_update first to extend the trip. To change a checklist's tasks use checklist_items_add, checklist_item_update, checklist_items_remove or checklist_items_reorder (IDs from trip_checklists). The result lists the saved value of every field you sent, read back from Tineo, so do not call segment_details to confirm the change. On an Activity, Lodging, EventTicket or Parking, fields.placeId (a place_id from places_search) attaches that place the same way segment_associate_place does, replacing the stored address with the place's. Never invent a time: if the user has not given or chosen one, ask, or send the date only (YYYY-MM-DD) in startDateTime and Tineo stores it as time not set. Send a clock time only when the user stated it or a booking shows it.

NameRequiredDescriptionDefault
idNoAlias for segment_id (widget compatibility)
fieldsNoField values to update. Only include fields that should be changed. Send null to clear an optional field; an empty string is ignored and the stored value is kept.
segment_idNoThe ID of the segment to update

TDQS

A4.6/5.0
Behavior4/5

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

Beyond annotations (destructiveHint/idempotentHint/readOnlyHint), it discloses the return behavior ('lists the saved value of every field you sent, read back from Tineo'), the placeId side effect of replacing the stored address, and the date/time storage semantics (date-only stored as time-not-set). It does not, however, spell out permission/auth requirements or what happens to sibling trip dates when a segment is mutated.

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?

The purpose is front-loaded and every sentence carries operational value, but the paragraph is dense and long, packing null/empty-string, place, and time rules into one block without visual separation. It earns its length more than most, though it could be tightened.

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 no output schema, the description compensates by explaining the return payload, and it covers the tricky edge cases (date-bounded prerequisites, time handling, place attachment, checklist delegation) that an agent needs to call it correctly.

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 real param-level meaning beyond the schema: the startDateTime accepted formats (YYYY-MM-DD vs a clock time), the time-not-set behavior, and the fields.placeId mechanism with its triggering segment types (Activity/Lodging/EventTicket/Parking).

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 opens with a specific verb+resource ('Update an existing segment') and immediately scopes it as a partial update ('Only provide the fields you want to change'). It also names the sibling it is NOT for checklist tasks, and routes to segment_get_schema and trip_update, so an agent can distinguish it from segment_create/segment_delete/checklist_item_update without opening any 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 guidance is given on multiple axes: how to use it (only send changed fields), where to get field names (segment_get_schema), a hard precondition (segment dates must fall within parent trip dates, else trip_update first), alternatives for checklist tasks (the four checklist_* tools), and an explicit 'do not call segment_details to confirm'. This is when/when-not/alternatives coverage.

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

settings_readRead Tineo SettingsA
Read-onlyIdempotent
Inspect

Reads the user's Tineo display and notification settings: units, date and time formats, flight monitoring, and trip reminder emails.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
layoutNo
schemaYes
valuesYes

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered. The description adds the scope of what is read (user-scoped display and notification settings), but says nothing about auth requirements, defaults, or per-user vs global behavior, so it adds only moderate value.

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?

A single front-loaded sentence with the verb and resource leading and the scope list trailing. Each clause earns its place by naming a distinct settings area, with no filler.

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?

For a zero-parameter, read-only tool with complete annotations and an output schema, the description supplies the categories of returned settings and nothing essential is missing. It could be marginally stronger by noting whose settings (account-level vs trip-level), but the output schema covers return structure.

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?

With zero parameters and full schema description coverage, there is nothing for the description to disambiguate at the parameter level; the 0-param baseline of 4 applies. No syntax or argument nuance is needed for a no-argument read tool.

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

Purpose4/5

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

The description states a specific verb ("Reads") and resource ("the user's Tineo display and notification settings") and enumerates the covered categories: units, date/time formats, flight monitoring, and trip reminder emails. This is clear enough for an agent to distinguish it, though it doesn't explicitly name the read/write counterpart settings_update in text.

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

Usage Guidelines3/5

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

There is no explicit when-to-use guidance or exclusion, but the read verb plus the sibling settings_update make the usage context strongly implied (read current settings before modifying them). It stops at implied usage rather than stating conditions or alternatives.

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

settings_updateUpdate Tineo SettingsB
DestructiveIdempotent
Inspect

Changes the user's Tineo display and notification settings. Only include settings the user asked to change.

NameRequiredDescriptionDefault
setYes

Output Schema

NameRequiredDescription
valuesYes

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already disclose the safety profile (readOnlyHint=false, destructiveHint=true, idempotentHint=true, openWorldHint=false). The description adds genuine behavioral context by implying a partial merge rather than a full replace, but it never explains what the destructiveHint means here — whether omitted settings are preserved or reset, or whether the change needs confirmation.

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?

Two sentences, front-loaded with the action and followed immediately by the constraint, with no filler. It is tight but so brief that it borders on under-specification rather than being optimally informative.

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

Completeness3/5

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

An output schema exists, so return values need no explanation, and the minProperties:1 constraint is conveyed by the sparse-update sentence. For a mutation tool with a nested six-field object and destructiveHint=true, however, the description leaves the merge/destructive behavior and permission requirements unstated.

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 0%, so the description carries the burden, and it only goes as far as framing the six nested fields as "display" (formats, units) and "notification" (flight monitoring, trip reminders) settings. It adds useful grouping but no per-parameter meaning, enum semantics, or format strings beyond what the schema already lists.

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

Purpose4/5

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

States a specific verb (Changes) and resource (the user's Tineo display and notification settings), and the read/write pairing with the sibling settings_read is easy to infer. It stops short of naming that sibling or distinguishing itself from other update tools, but an agent can tell what it does without opening the schema.

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

Usage Guidelines3/5

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

"Only include settings the user asked to change" gives one useful operating rule for invoking it (send a sparse update, not a full snapshot). There is no explicit when-to-use/when-not guidance and no reference to settings_read as the alternative for inspection, so usage is only implied.

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

support_ticket_createCreate Support TicketA
Destructive
Inspect

Create a Tineo support ticket after the user explicitly asks or confirms and notify Tineo support by email. Use when the assistant cannot complete a request, a tool fails, or the requested capability is unsupported. Tineo attaches the user's app version, platform, device model and OS version automatically, so do not ask for them or list them as unknown.

NameRequiredDescriptionDefault
sourceNoWhy the support ticket is being created.
summaryYesShort support-ticket summary.
trip_idNoRelated trip ID, if known.
confirmedYesMust be true only after the user directly asks to create a ticket or confirms the assistant's offer.
segment_idNoRelated segment ID, if known.
attachmentsNoOptional image attachments as base64 data URIs.
descriptionYesUser-facing explanation of what failed or could not be completed.
failure_contextNoThe failed Tineo tool name and its error text, if a Tineo tool failed.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare the write/external profile (readOnlyHint=false, destructiveHint=true, openWorldHint=true, idempotentHint=false). The description adds genuinely new behavioral context: an email is dispatched to Tineo support, and app version, platform, device model and OS version are auto-attached, with an explicit instruction not to ask for them. It does not say whether the ticket can be edited or withdrawn afterward.

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, each earning its place: action plus side effect first, then usage triggers, then the auto-attachment caveat. Nothing is repeated from the schema and the most decision-relevant information is 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?

For a create tool with no output schema, the description covers the trigger conditions, the confirmation gate, the external email side effect, and auto-collected metadata. The only gap is that it does not hint at what is returned (e.g., a ticket identifier), which would help an agent close the loop with the user.

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%, so all eight parameters (including the confirmed gate, source enum, and attachments) are already documented in the schema. The description's only parameter-adjacent guidance is about auto-attached device fields the agent should not supply, which is context rather than added parameter semantics. Baseline 3 applies.

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 ('Create a Tineo support ticket') plus the key side effect ('notify Tineo support by email'), and the trigger condition. No sibling tool overlaps with this function, so differentiation is inherent, and an agent can identify the action immediately.

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 names the situations that select this tool: the assistant cannot complete a request, a tool fails, or the capability is unsupported. It also states the hard prerequisite that the user must explicitly ask or confirm. It stops short of naming any alternative or when-not-to-use case, so it is clear but not exhaustive.

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

tineo_pingCheck Tineo connectionA
Read-onlyIdempotent
Inspect

Check that Tineo is connected and the user is signed in. Returns the signed-in account's name and email; it does not list trips.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
typeNo
userNo

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already establish readOnly, idempotent, non-destructive, and closed-world behavior, so the safety profile is covered. The description adds useful scope context (a signed-in check, not a data listing) beyond what the annotations say, though it omits any failure/auth-expired behavior an agent might want.

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 tight sentences with no filler. The purpose is front-loaded and the scoping caveat follows immediately.

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?

An output schema exists, so return values need no elaboration, and the annotations carry the safety profile. For a parameterless connectivity check, nothing an agent needs to invoke it correctly is absent.

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?

The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a parameterless tool applies. No parameter semantics are needed or missing.

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: verifies Tineo connectivity and the signed-in user. It also draws a boundary against a likely confusion point in this sibling set by noting it does not list trips, so an agent can distinguish it from trips_list without opening a schema.

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 condition for use (verify the connection/account is live before doing other work) is clear from the phrasing, and the closing clause steers agents away from treating it as a trip-listing call. No explicit alternative tool is named, which keeps it short of a 5.

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

travel_document_assign_tripAssign Travel Document To TripA
DestructiveIdempotent
Inspect

Move or assign a travel document (insurance, visa, passport scan, voucher) to another trip the user OWNS, or back to the general library. Provide document_id from a documents listing and trip_id from trips_list. Omit trip_id (or pass null) to move the document to the library. Only trips the user owns are valid targets. The document's linked files move with it; a file also attached to another document is left in place and reported. If more than one document could match the request, confirm which one before moving. Returns the document, its previous and new trip, and how many linked files were re-pointed.

NameRequiredDescriptionDefault
trip_idNoTarget trip id owned by the user; omit or null to unassign the document to the library.
document_idYesId of the travel document to move.

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the mutation profile is covered. The description adds non-obvious cascade behavior beyond that: linked files move with the document, while a file also attached elsewhere is left in place and reported, plus the owned-trip restriction. It stops short of describing error/permission failure behavior, but adds real value over the 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?

Action and scope are front-loaded, followed by input sourcing, the unassign rule, ownership constraint, side effects, and return shape. Every sentence carries information; only the restated omit-trip_id rule slightly overlaps the schema description.

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 two-parameter mutation with no output schema, the definition covers target sourcing, the unassign path, ownership restriction, ambiguous-match handling, the file cascade side effect, and even the response contents (document, previous/new trip, count of re-pointed files). An agent has everything needed to call it safely.

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 baseline is 3, and both parameters are already documented in the schema. The description adds value by naming the source endpoints for each id (documents listing, trips_list) and restating the omit/null-to-library semantic as an operational instruction rather than a field note.

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 (move/assign) plus resource (travel document) and the two possible destinations (another owned trip or the general library). It is clearly distinguishable from siblings like audit_travel_documents or trip_update without opening any 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?

Explicitly says where to obtain inputs (document_id from a documents listing, trip_id from trips_list), when to omit trip_id (library), the ownership precondition, and to confirm when multiple documents could match. This is when/when-not/alternative routing in one place.

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

traveler_addAdd trip travelerA
Destructive
Inspect

Add a traveler only after known_participants and the user's explicit invitation decision. With an invitation, pass email and invite_confirmed=true; this creates and sends the trip invitation. If the user explicitly declines, omit email and pass invite_confirmed=false. If the email matches someone the user already added to a trip, that existing traveler's name is reused instead of creating a second identity for the same person.

NameRequiredDescriptionDefault
nameYesTraveler's display name
emailNoConfirmed invitation email. Required when invite_confirmed=true and forbidden when false.
trip_idYesThe trip ID to add the traveler to
invite_confirmedYesTrue only after the user explicitly confirms sending an invitation. False only after they explicitly decline.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare the mutation, open-world, destructive, and non-idempotent profile, but the description adds genuinely non-obvious behavior: that this creates AND sends the trip invitation, that the user must have explicitly confirmed, and that a matching email reuses an existing traveler identity rather than creating a duplicate. It still says nothing about failure modes or required permissions.

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?

Four sentences, no padding, and the critical gating rule is front-loaded before the branch mechanics. Slightly dense but every sentence carries actionable information.

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?

For a 4-parameter mutation tool with no output schema, the description covers gating, side effects, and dedup behavior, which is enough to invoke it correctly. It omits any indication of what is returned or what happens to the record if the invitation send fails.

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% and the schema already documents name, email, trip_id, and invite_confirmed, including the conditional requirement on email. The description restates the email/invite_confirmed pairing without adding new format or value constraints, so a baseline 3 is appropriate.

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

Purpose4/5

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

The description states a concrete verb and resource ('Add a traveler') and immediately qualifies the scope with the invitation-decision flow, so the agent knows this creates trip membership and may send an invite. It does not explicitly contrast itself with nearby siblings like traveler_assign or traveler_update_email, which keeps it a step below a 5.

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?

It gives an explicit precondition (run/consult known_participants first, after the user's invitation decision) and spells out both branches: invite → email + invite_confirmed=true; decline → omit email + invite_confirmed=false. No alternative tool is named for the non-invitation path, so it falls short of full 'when/when-not/alternatives' coverage.

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

traveler_assignAssign traveler to itinerary itemA
Idempotent
Inspect

Assign one or more travelers to one or more segments in a single call. To put the same travelers on several segments (for example every flight of a trip), pass all of them in segment_ids and all travelers in traveler_ids in one call instead of one call per segment. Up to 50 segments and 50 travelers per call, and at most 200 segment-traveler pairs. Assigning an already-assigned traveler is a no-op, and each segment succeeds or fails on its own: the result lists what was assigned and, per segment, what failed and why.

NameRequiredDescriptionDefault
segment_idNoOne segment ID to assign travelers to. Use segment_ids for several.
segment_idsNoSegment IDs to assign the same travelers to, in one call.
traveler_idNoOne trip traveler ID to assign. Use traveler_ids for several.
traveler_idsNoTrip traveler IDs (from trip_travelers) to assign to every listed segment.

TDQS

A4.5/5.0
Behavior5/5

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

Goes well beyond the annotations: idempotency behavior (already-assigned traveler is a no-op), partial-failure semantics (each segment succeeds or fails independently), and hard limits (50 segments, 50 travelers, 200 pairs). These are exactly the traits an agent needs to plan retries and error handling.

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?

Front-loads the core action, then the batching rationale, then limits and failure semantics. Three sentences, each carrying distinct, non-redundant 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?

With no output schema, the description compensates by describing the return shape (what was assigned, per-segment failures and why). Limits, idempotency, and failure model are all covered for a mutation 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?

Schema coverage is 100% and each parameter is already described in the schema, including the all-to-all pairing. The description only adds the 200 segment-traveler pair cap on top, so the baseline 3 holds.

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 (assign) plus both resources (travelers, segments) and the batch scope. An agent can distinguish it from siblings like travel_document_assign_trip and segment_associate_place without opening a schema.

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 tells the agent to use the plural arrays in one call rather than one call per segment, with a concrete example (every flight of a trip). Clear usage context, though it doesn't state any when-not-to-use case.

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

traveler_update_emailCorrect pending traveler emailA
DestructiveIdempotent
Inspect

Correct one pending, unaccepted trip traveler's email after the owner supplies the exact traveler ID and new email. A changed address revokes the old link and automatically sends a renewed invitation. Report invitationSent truthfully; an unchanged address sends nothing.

NameRequiredDescriptionDefault
emailYesNew email explicitly supplied by the owner
trip_idYesTrip ID owned by the caller
traveler_idYesExact pending traveler ID from trip_travelers

TDQS

A4.5/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing the concrete side effects: a changed address 'revokes the old link and automatically sends a renewed invitation,' an unchanged address 'sends nothing,' and the caller should 'report invitationSent truthfully.' These specifics explain what destructiveHint and idempotentHint mean in practice and are consistent with 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?

Three sentences, purpose front-loaded, each one carrying real information (scope, side effects, return-value guidance). No filler.

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 three-parameter mutation with no output schema, the description supplies the missing behavioral and response context, notably the invitationSent return signal and the revoke/resend consequence. Nothing an agent needs to invoke it correctly is absent.

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%, so all three parameters are already documented in the schema. The description reinforces that the email is owner-supplied and the traveler ID must be exact, but adds no syntax or format details beyond what the schema states; baseline 3 applies.

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?

Specific verb (correct/update) plus resource (a pending traveler's email) with explicit scope: 'one pending, unaccepted trip traveler's email.' The 'pending, unaccepted' qualifier distinguishes it from sibling traveler tools like traveler_add, traveler_assign, and trip_travelers.

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?

States the precondition clearly ('after the owner supplies the exact traveler ID and new email') and implicitly excludes accepted travelers via 'pending, unaccepted.' It does not name an alternative tool for non-pending travelers, so it stops short of full when-not routing.

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

trip_checklistsTrip ChecklistsA
Read-onlyIdempotent
Inspect

Read every checklist on a trip with its items. Returns each checklist's title and, for every task, a stable itemId, text, category (section heading), position (0-based stored order; the app groups tasks under their section headings in first-appearance order), isChecked (complete for everyone on a shared trip) and checkedByMe (on a shared trip a task you ticked stays unchecked until every traveler ticks it). Tasks are a flat list: there are no subtasks or nested items. Pass checklist_id (the checklist's segment ID) to read just one checklist. Call this before editing items so you have the item IDs. To create a checklist use segment_create (type Note, isChecklist true, checklistItems [{text, category?}]). To change tasks use checklist_items_add (append tasks), checklist_item_update (text, category, or checked to mark done/not done), checklist_items_remove, or checklist_items_reorder, passing checklist_id and the item IDs. Delete a whole checklist with segment_delete. Never show IDs to users.

NameRequiredDescriptionDefault
trip_idYesID of the trip (from trips_list).
checklist_idNoOptional. The checklist note's segment ID, to read just that one checklist.

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the readOnly/idempotent annotations, it discloses the full return contract (itemId stability, isChecked vs checkedByMe semantics on shared trips, flat task list with no subtasks, section-heading grouping order) and a usage constraint ('Never show IDs to users'). That is substantial behavioral context the annotations do not carry.

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 scoping constraint are front-loaded, and every sentence carries information (return fields, alternatives, ID-hiding rule). It is long but dense; the enumeration of return fields could be trimmed slightly without loss.

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 no output schema, the description compensates by fully describing the return shape and per-field semantics, plus the sibling routing needed for subsequent edits. An agent has everything required to call and interpret this 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?

Schema coverage is 100%, so both trip_id and checklist_id are already documented in the schema. The description's note that checklist_id reads a single checklist restates the schema's own text rather than adding new syntax or format detail, so baseline 3 applies.

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 opens with a specific verb and resource: 'Read every checklist on a trip with its items.' It clearly separates this read operation from sibling mutation tools (checklist_items_add, checklist_item_update, segment_delete), so an agent can distinguish it without inspecting other schemas.

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 states the trigger ('Call this before editing items so you have the item IDs'), offers a filtered variant ('Pass checklist_id ... to read just one checklist'), and routes each alternative operation to its dedicated sibling tool. This is near-complete when/when-not guidance.

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

trip_cities_listList Trip CitiesA
Read-onlyIdempotent
Inspect

List the ordered city associations for a trip. Returns trip_city_id values used by update, remove, and reorder.

NameRequiredDescriptionDefault
trip_idYesTrip ID.

TDQS

A4/5.0
Behavior4/5

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

Annotations already establish readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds behavior the annotations do not: results are ordered, and the salient return field is trip_city_id. It omits pagination/limit behavior, which keeps it below a 5.

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 short sentences, no filler, with the core purpose front-loaded and the return-value detail following. Every clause earns its place.

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 usefully names the returned identifier, which is the piece an agent needs to chain into update/remove/reorder. It is adequate for a simple single-param read tool, though it could note what else each association contains and the ordering criterion.

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?

There is a single parameter with 100% schema description coverage, so the schema already documents trip_id as a UUID. The description adds no format, constraint, or scoping detail beyond that. Baseline 3 is appropriate when the schema does the work.

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

Purpose4/5

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

States a specific verb and resource: 'List the ordered city associations for a trip.' It also references the sibling operations (update, remove, reorder) that consume its output, which implicitly separates it from those mutating tools. It stops short of an explicit 'this is the read counterpart to trip_city_add/remove/update' statement, so it is clear but not maximally differentiated.

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 gives a concrete reason to call it: to obtain trip_city_id values needed by update, remove, and reorder. That is real usage context rather than a vague hint. There is no explicit when-not guidance or a named alternative, so it falls short of a 5.

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

trip_cities_reorderReorder Trip CitiesA
DestructiveIdempotent
Inspect

Replace the trip city order using every current trip_city_id exactly once. The first city drives the automatic cover when an image is available.

NameRequiredDescriptionDefault
trip_idYesTrip ID.
ordered_trip_city_idsYesComplete ordered list of current trip_city_id values.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, yet the description adds real value: it discloses the 'every current trip_city_id exactly once' validation requirement and the side effect that the first city drives the automatic cover image. That side-effect disclosure goes meaningfully beyond structured data.

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 tight sentences with the core operation front-loaded and the constraint and side effect following. Zero filler; every clause earns its place.

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?

For a two-parameter mutation whose annotations already carry the safety profile, the description covers the operation, the enumeration constraint, and a notable side effect. It could say what happens on an incomplete/invalid list, but nothing essential for correct invocation 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 reinforces the schema's 'Complete ordered list' wording with the sharper 'exactly once' constraint, clarifying that this is a full replacement rather than a delta. This adds a validation nuance beyond the schema text.

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

Purpose4/5

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

States a specific verb+resource ('Replace the trip city order') and adds the key constraint that every current trip_city_id is used exactly once, which implicitly separates it from trip_city_add/remove/update. It does not explicitly name a sibling, but the operation is unambiguous to an agent.

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

Usage Guidelines3/5

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

Usage is implied by 'Replace the trip city order' and the required full enumeration, but there is no explicit when-to-use vs alternatives guidance and no exclusions. Adequate minimum viability for a reorder operation, with the constraint carrying most of the routing weight.

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

trip_city_addAdd Trip CityA
Idempotent
Inspect

Add a city to the end of a trip's ordered city list. This is idempotent when an equivalent city is already present. Pass city_name plus country: names are matched against the catalog (including aliases), a major city that shares its name with smaller places resolves to the major one, and a real town or island missing from the catalog (for example Bijagua or Santorini) is looked up in that country and added automatically.

NameRequiredDescriptionDefault
city_idNoExact city catalog ID. Provide this OR city_name.
countryNoCountry name or ISO code (for example CR or Costa Rica). Strongly recommended with city_name: it disambiguates same-named cities and lets Tineo add a place that is missing from the catalog.
trip_idYesTrip ID.
city_nameNoCity, town or island name. Provide this OR city_id; ambiguous names return candidates, so pass country as well.

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already declare idempotentHint=true and destructiveHint=false, but the description adds real behavioral context: equivalent-city idempotency, alias matching, major-city precedence over same-named smaller places, and automatic catalog miss handling (Bijagua, Santorini). That is substantive disclosure beyond 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.

Conciseness4/5

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

The core action and idempotency claim are front-loaded in the first sentence, then resolution rules follow. It is dense with useful detail rather than padded, though the second sentence runs long and could be split for scanability.

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?

For a write tool with no output schema, the definition covers input modes, idempotency, and name-resolution edge cases well. It does not state permission requirements or what the response contains when candidates are returned, leaving a small gap.

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 OR relationship between city_id and city_name and the country recommendation are already documented. The description still adds non-obvious semantics: names match the catalog including aliases, same-named cities disambiguate by country, and a missing real place is looked up and added automatically.

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: 'Add a city to the end of a trip's ordered city list.' The 'end'/'ordered list' framing cleanly separates it from trip_cities_reorder, trip_city_update, and trip_city_remove without needing to name them.

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?

Tells the agent when to supply city_name plus country and how the two input modes behave, including that ambiguous names return candidates. It stops short of naming the sibling lookup tool (cities_search) as an alternative path, so it lacks explicit alternatives/exclusions.

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

trip_city_removeRemove Trip CityA
DestructiveIdempotent
Inspect

Remove one city association from a trip by trip_city_id. Confirm this destructive action with the user first.

NameRequiredDescriptionDefault
trip_idYesTrip ID.
trip_city_idYesTrip-city association ID returned by trip_cities_list.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is covered. The description adds a genuinely useful behavioral requirement (user confirmation before executing) that goes beyond the annotations, but does not describe what is actually removed beyond the association or any auth requirements.

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 short sentences, the operation stated first and the confirmation caveat second. No filler or redundancy; every clause carries information.

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?

For a two-parameter destructive mutation with no output schema, the description covers the core action, the identifier scoping, and the confirmation requirement. It is largely complete, missing only minor details such as the effect on trip ordering or auth needs.

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%, so both parameters are fully documented in the schema itself. The description only restates 'by trip_city_id' without adding syntax, format, or sourcing detail beyond what the schema provides, so baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ('Remove one city association from a trip') and scopes it precisely via 'by trip_city_id'. The verb cleanly separates it from siblings like trip_city_add and trip_city_update, though it doesn't name those alternatives explicitly.

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

Usage Guidelines3/5

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

Provides one clear directive -- confirm the destructive action with the user first -- which implies the when-to-use context. However, it names no alternative tools (e.g., trip_city_update if the intent was to change rather than remove) and gives no conditions or prerequisites beyond the confirmation step.

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

trip_city_updateUpdate Trip CityA
DestructiveIdempotent
Inspect

Replace one trip-city association with another city. This never edits the shared city catalog record.

NameRequiredDescriptionDefault
city_idNoExact city catalog ID. Provide this OR city_name.
countryNoCountry name or ISO code (for example CR or Costa Rica). Strongly recommended with city_name: it disambiguates same-named cities and lets Tineo add a place that is missing from the catalog.
trip_idYesTrip ID.
city_nameNoCity, town or island name. Provide this OR city_id; ambiguous names return candidates, so pass country as well.
trip_city_idYesTrip-city association ID returned by trip_cities_list.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so safety is covered. The description adds genuinely useful boundary context: 'This never edits the shared city catalog record,' scoping the blast radius of the destructive operation. It stops short of saying whether the old association is recoverable or what the response returns.

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 short sentences, zero waste. The primary action is front-loaded and the boundary clarification follows immediately, each earning its place.

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?

For a 5-param mutation tool with full schema coverage and annotations covering the safety profile (destructive/idempotent/not-read-only), the description is nearly complete. Only a note on reversibility or confirmation of the replaced association would make it fully sufficient; no output schema exists, so return values are rightly not explained.

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% and each parameter carries a detailed description, including the city_id/city_name OR-relationship and the country disambiguation hint. The description text adds no parameter-level meaning beyond this, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb+resource: 'Replace one trip-city association with another city.' This semantically distinguishes it from the add/remove/reorder siblings, though it does not name any of them explicitly. An agent can tell what it does without opening the schema.

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

Usage Guidelines3/5

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

The 'replace' framing implies when the tool applies (an existing association needs to change city), but there is no explicit when-to-use guidance, no mention of trip_city_add vs trip_city_remove as alternatives, and no prerequisites. Usage is left to inference.

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

trip_cover_updateUpdate Trip Cover PhotoA
Destructive
Inspect

Set a trip's cover photo from an image URL or a place_photo_reference returned by places_search/place_details. Becomes the trip's hero image immediately. Provide the trip_id from trips_list.

NameRequiredDescriptionDefault
trip_idYesTineo trip ID (from trips_list).
image_urlNoDirect https:// image URL to use as the cover. Provide this or place_photo_reference.
place_photo_referenceNoA photoReference from a places_search/place_details photos entry. Provide this or image_url.

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false and destructiveHint=true, so the mutation/overwrite profile is covered. The description adds the timing detail that the photo "Becomes the trip's hero image immediately," which is real added value, but it omits auth/permission requirements and any note about overwriting an existing cover.

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?

Three short sentences with the core action front-loaded. The only mild redundancy is restating the two source parameters and the trip_id origin, but it stays efficient overall.

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?

For a low-complexity single-required-parameter setter with annotations covering the destructive/idempotent profile, the description covers purpose, valid input sources, and the immediate effect. It leaves return/response behavior and error handling unstated, but those are minor here.

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%, so the baseline is 3. The description's note that place_photo_reference comes from places_search/place_details and that trip_id comes from trips_list largely restates what the schema already documents, adding only slight provenance context.

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

Purpose4/5

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

States a specific verb and resource ("Set a trip's cover photo") and names the exact target field, so it is distinguishable from siblings like trip_rename or trip_update. It stops short of explicitly routing away from those siblings, which keeps it at a 4.

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

Usage Guidelines3/5

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

The description implies when to use it by naming the two accepted photo sources and where trip_id comes from (trips_list), but gives no explicit when-not conditions or alternative routing. Usage is inferable rather than stated.

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

trip_createCreate tripAInspect

Create a new trip with explicit start_date and end_date (YYYY-MM-DD), covering its planned segments. Returns its ID; the authenticated user becomes the owner.

NameRequiredDescriptionDefault
titleYesTrip title MUST be a human-readable destination name (e.g. 'Barcelona', 'Tokyo & Kyoto (Oct 2026)'). DO NOT use hyphenated airport corridor codes (e.g. 'DAC-IST-BCN-IST-DAC-CXB'). If unsure, provide destination city name or leave generic.
end_dateYesTrip end date in YYYY-MM-DD format
start_dateYesTrip start date in YYYY-MM-DD format
descriptionNoOptional trip description or notes
destinationNoPrimary destination city or region

TDQS

A3.7/5.0
Behavior4/5

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

With annotations already declaring readOnly=false, idempotent=false, destructive=false, and openWorld=false, the description adds useful context beyond them: it states the authenticated user becomes owner and that the new trip's ID is returned. It does not cover error conditions or uniqueness constraints, but it meaningfully supplements the safety 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?

The description is appropriately sized and front-loads the action. The second sentence efficiently covers the return value and ownership. However, 'covering its planned segments' is somewhat vague and does not clearly earn its place in the definition.

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?

For a 5-parameter creation tool with no output schema, the description adequately covers purpose, required date format, return value (ID), and ownership behavior. It leaves some edge cases unaddressed, such as date ordering rules or whether duplicate titles are allowed, but the schema carries field-level detail.

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%, so the baseline is 3. The description repeats the YYYY-MM-DD date format already documented in the schema and does not add actionable meaning for title, description, or destination. 'Covering its planned segments' is vague and does not map to any parameter.

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 uses a specific verb+resource ('Create a new trip') and clearly distinguishes the operation from sibling tools like trip_update, trip_delete, trip_rename, trips_list, and trip_details. It also specifies the required date scope.

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

Usage Guidelines2/5

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

The description gives no explicit when-to-use guidance or alternatives to this tool. It implies creation by name and verb, but does not say when to use trip_create versus trip_update, trip_restore, or other trip management siblings.

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

trip_deleteDelete tripA
Destructive
Inspect

Delete a trip owned by the authenticated user and its itinerary segments. Requires confirmed=true after explicit user confirmation. Also removes connected calendar events when automatic sync is enabled.

NameRequiredDescriptionDefault
trip_idYesID of the trip to delete.
confirmedYesTrue only after the user explicitly confirms deleting this trip and its itinerary.

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already mark this as destructive and non-idempotent, but the description adds critical behavior beyond them: cascade deletion of itinerary segments, the required confirmed flag after explicit user confirmation, and removal of connected calendar events when automatic sync is enabled. This gives the agent the side-effect profile needed to warn the user before invoking.

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, front-loaded with the core action, followed by the confirmation requirement and the external side effect. Every sentence earns its place and no extraneous detail is included.

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 destructive two-parameter tool with full schema coverage and no output schema, the description covers ownership, cascade scope, confirmation gating, and external calendar sync side effects. An agent has everything needed to decide when and how to call it safely.

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 both parameters are already documented. The description reinforces that confirmed must be true only after explicit user confirmation, but adds no new format or syntax beyond what the schema already states, so the baseline of 3 applies.

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 ('Delete') and resource ('a trip owned by the authenticated user and its itinerary segments'), and the cascade scope distinguishes it from sibling tools like segment_delete or trip_restore. An agent can identify exactly what is removed without opening the schema.

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?

It clearly states the prerequisite for use: confirmed=true after explicit user confirmation. It does not explicitly name an alternative (e.g., trip_restore) or a when-not-to-use condition, but the confirmation gate and ownership scope provide strong operational guidance.

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

trip_detailsView trip itineraryA
Read-onlyIdempotent
Inspect

Get detailed information about a specific trip. The text response includes the trip summary plus a chronological list of every segment (flights, hotels, activities, etc.) with each segment_id, so you can chain directly to segment_details, segment_update, segment_delete, or flight_status_for_segment without another search. Also includes traveler count. For full per-segment details, use segment_details with the returned segment_id. Use sections and segment_types to filter the response.

NameRequiredDescriptionDefault
trip_idYesThe unique identifier of the trip to fetch details for
sectionsNoOptional: filter which sections to include in the response. Values: 'segments', 'travelers'. Default: all sections.
segment_typesNoOptional: filter segments by type. Values: Flight, Lodging, CarRental, Train, Transfer, Ferry, EventTicket, Parking, Activity, Note, Poll. Default: all types.

Output Schema

NameRequiredDescription
tripNo
canEditNo
capabilitiesNo
contractVersionNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, but the description adds real value beyond them: it discloses the shape of the response (trip summary, chronological segment list with segment_ids, traveler count) and the chaining affordance that saves a follow-up search. No auth, error, or rate-limit notes, so it isn't exhaustive.

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 primary action and response contents, then chaining guidance, then filters. Efficient overall, though the segment_details routing is stated twice (once in the chain list, once as a separate sentence), which is mild redundancy.

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 read-only detail tool with an output schema and full annotation coverage, the description supplies everything needed to select and call it correctly: scope, response contents, downstream chaining, and filter parameters.

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%, so the schema already documents trip_id, sections, and segment_types with their allowed values. The description restates them as response filters without adding syntax or default semantics beyond what the schema says; 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?

States a specific verb and resource ('Get detailed information about a specific trip') and immediately disambiguates from the sibling that overlaps most, segment_details, plus trip-level list tools. An agent can pick it without opening the schema.

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 routes the agent: use the returned segment_id to chain into segment_details, segment_update, segment_delete, or flight_status_for_segment, and 'for full per-segment details, use segment_details.' It doesn't state when-not to use it versus trips_list or trips_hub, so it stops short of full coverage.

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

trip_expense_createAdd trip expenseAInspect

Add expenses to a trip's shared expense ledger, with who paid and how each is split. Uses the same rules as the Expenses screen in Tineo. For one expense, send description and amount; for several (a list of receipts, a spreadsheet, a whole trip's costs), send them all in expenses in one call, up to 50 per call, instead of one call per expense. Each item in expenses is added or rejected on its own; failed items come back by index with the reason, so resend only those. Get traveler IDs from trip_expenses_list. Defaults: payer is the user, date is today in the user's profile time zone, an equal split with everyone on the trip (all on the payer on a solo trip). Confirm the amounts, payers and splits with the user before calling; for a batch, confirm the list once.

NameRequiredDescriptionDefault
dateNoExpense date, YYYY-MM-DD. Defaults to today in the user's profile time zone; send the user's local date when you know it.
notesNo
splitNoWho the cost belongs to. type payer = all of it is the payer's cost (no split). equal = divided evenly among participants (omit participants for everyone on the trip). percentage = each participant's percentage, summing to 100. exact = each participant's amount, summing to the expense amount. To make an expense 100% one person's: if they paid, use type payer with paid_by set to them; if someone else paid, use percentage with only that person at 100.
amountNoTotal amount, greater than 0.
vendorNoMerchant or vendor.
paid_byNoTraveler ID from trip_expenses_list travelers, or "me". Defaults to me.
trip_idYesTineo trip ID (from trips_list).
categoryNo
currencyNo3-letter currency code. Defaults to the trip currency, else USD.
expensesNoSeveral expenses in one call, each with the same fields as a single expense. Use instead of description and amount at the top level.
descriptionNoWhat the expense was for, e.g. Travel insurance.

TDQS

A4.9/5.0
Behavior5/5

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

Annotations only carry generic hints, so the description carries the burden and does so well: per-item partial success with failed items returned by index and reason (so only those need resending), the 50-item cap, and the defaulting behavior for payer, date, and split. It also states the confirmation requirement before the mutation happens.

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?

Front-loads purpose, then batching, then failure semantics, then defaults, then the confirmation rule. Each sentence adds a distinct operational fact; nothing is padding.

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 mutation tool with 11 params, nested objects, and no output schema, the description covers the things an agent cannot infer: partial-failure semantics, batch limits, defaults, ID sourcing, and the confirmation step. Nothing essential 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 82% and the nested split object is already well documented in the schema, so the baseline is 3. The description still adds real value by contrasting the top-level single-expense fields with the expenses array and by restating the operative defaults (payer = user, date = today in profile TZ, equal split of everyone on the trip).

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 ('Add expenses to a trip's shared expense ledger') and immediately names the two aspects that distinguish it (who paid, how it's split). An agent can separate it from trip_expenses_list and trip_expense_update without opening the 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?

Gives explicit routing rules: batch many expenses into one call (up to 50) instead of one call per expense, and points to trip_expenses_list for traveler IDs. It also states the pre-call obligation to confirm amounts, payers and splits with the user.

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

trip_expenses_listTrip ExpensesA
Read-onlyIdempotent
Inspect

List a trip's individual expenses with who paid and how each is split, plus the trip's travelers (ID, name, and which one is the user). Use it to find an expense or traveler ID before trip_expense_update or trip_expense_create. For totals and who owes whom use get_trip_expense_summary.

NameRequiredDescriptionDefault
queryNoOptional words to match in the description, vendor or category.
trip_idYesTineo trip ID (from trips_list).

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and closed-world. The description adds genuine value beyond them by disclosing the shape of the returned data (expenses with payer and split, travelers with ID, name, and which is the user), which is not in any structured field since there is 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.

Conciseness5/5

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

Three tight sentences with no filler: content/scope first, then the ID-lookup use case, then the summary alternative. Every sentence earns its place and the most actionable routing info is 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 no output schema, the description compensates by summarizing what is returned, and with only two fully-documented params and annotation coverage of the safety profile, nothing an agent needs to select or call this tool is missing.

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% – both 'query' (description/vendor/category match) and 'trip_id' (Tineo trip ID from trips_list) are fully documented in the schema. The description does not add syntax or format meaning beyond that, so the baseline of 3 applies.

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 names a specific verb+resource ('List a trip's individual expenses') and adds scope detail (who paid, how each is split, plus travelers with ID/name/user flag). It is unmistakably distinct from get_trip_expense_summary and the expense write tools.

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 it ('to find an expense or traveler ID before trip_expense_update or trip_expense_create') and names the alternative for the other intent ('For totals and who owes whom use get_trip_expense_summary'). Both the routing condition and the excluded sibling are given.

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

trip_expense_updateEdit trip expenseA
DestructiveIdempotent
Inspect

Change an existing trip expense: amount, description, date, category, who paid, or how it is split (for example, make an expense 100% one person's). Get the expense ID and traveler IDs from trip_expenses_list. Send only the fields that change; a split replaces the whole split. Changing the amount of an equal or percentage split keeps the same people and proportions. Only the trip owner or an editor can edit expenses.

NameRequiredDescriptionDefault
dateNoExpense date, YYYY-MM-DD.
notesNo
splitNoWho the cost belongs to. type payer = all of it is the payer's cost (no split). equal = divided evenly among participants (omit participants for everyone on the trip). percentage = each participant's percentage, summing to 100. exact = each participant's amount, summing to the expense amount. To make an expense 100% one person's: if they paid, use type payer with paid_by set to them; if someone else paid, use percentage with only that person at 100.
amountNoTotal amount, greater than 0.
vendorNoMerchant or vendor.
paid_byNoTraveler ID from trip_expenses_list travelers, or "me".
categoryNo
currencyNo3-letter currency code.
expense_idYesExpense ID from trip_expenses_list.
descriptionNoWhat the expense was for, e.g. Travel insurance.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare this a mutating, destructive, idempotent operation; the description adds value beyond that by disclosing that a supplied split replaces the entire previous split, that changing an equal/percentage amount preserves people and proportions, and that owner/editor authorization is required. It stops short of describing the response or failure behavior for a tool 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?

Four tightly packed sentences with the action and mutable fields front-loaded; no filler. It is dense but every clause carries operational meaning (ID sourcing, partial update, split replacement, permissions).

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?

For a 10-parameter mutation with no output schema, the description covers the essentials an agent needs: where IDs come from, that only changed fields should be sent, split replacement semantics, and authorization. It omits error/validation behavior (e.g., split sums must match amount) and any statement about what the update returns, which are minor given the schema's enum and split constraints.

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 high (80%) and the nested split object is already well documented in the schema, so the baseline is 3. The description still earns credit for semantics not in the schema: 'a split replaces the whole split', the proportion-preserving rule when the amount changes, and a concrete 100%-one-person example.

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?

Opens with a specific verb+resource ('Change an existing trip expense') and enumerates the mutable fields (amount, description, date, category, payer, split). This cleanly separates it from sibling trip_expense_create and trip_expenses_list, which the description also names as the ID source.

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?

Gives concrete prerequisites (expense ID and traveler IDs come from trip_expenses_list), a permission constraint (only owner or editor), and the partial-update rule ('send only the fields that change'). It does not state when to prefer this over a delete-and-recreate or how it relates to trip_expense_create, but the operational context is clear.

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

trip_renameRename tripA
DestructiveIdempotent
Inspect

Rename a trip owned by the authenticated user. Returns the old and new titles. May synchronize the title to the trip owner's connected calendars when automatic sync is enabled.

NameRequiredDescriptionDefault
trip_idYesThe ID of the trip to rename
new_titleYesThe new trip title

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare it is a mutating, idempotent, open-world, destructive operation. The description adds genuinely new context: it returns the old and new titles and may propagate the title to the owner's connected calendars when auto-sync is on, a side effect the annotations do not convey.

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 tight sentences, each carrying distinct information: purpose, return value, and side effect. The purpose is front-loaded with no wasted wording.

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 usefully states what is returned (old and new titles) and warns of the calendar sync side effect. Complete for a simple two-parameter mutation.

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%, so both parameters (trip_id, new_title) are already documented. The description adds no syntax, format, or constraint detail beyond the schema, matching the baseline of 3.

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

Purpose4/5

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

States a specific verb (rename) and resource (trip) with a clear ownership scope ('owned by the authenticated user'). It is distinguishable from siblings like trip_update, though it does not explicitly contrast itself with them.

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

Usage Guidelines2/5

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

There is no guidance on when to rename versus using the broader trip_update tool, nor any stated preconditions or exclusions. Usage is only implied by the tool's purpose.

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

trip_restoreRestore deleted tripA
Idempotent
Inspect

Restore a deleted trip owned by the authenticated user, together with the itinerary items that were removed when it was deleted (items deleted separately before that stay deleted). Call without trip_id to list recently deleted trips. Call with trip_id to preview the restore; nothing changes until the user explicitly confirms and you call again with confirmed=true. May re-add the trip to the owner's connected calendars when automatic sync is enabled.

NameRequiredDescriptionDefault
trip_idNoID of the deleted trip to restore. Omit to list recently deleted trips.
confirmedNoTrue only after the user explicitly confirms restoring this trip. Without it the tool only returns a preview.
expected_deleted_atNoOptional deleted_at value from the preview. The restore is refused if the trip's deletion has changed since then.

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare the safety profile (readOnly=false, destructive=false, idempotent=true, openWorld=true), yet the description still adds substantive behavior: the cascade scope of restored itinerary items, the exclusion of separately-deleted items, the two-phase preview/confirm flow, and the open-world side effect of re-adding the trip to connected calendars. No annotation is contradicted.

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?

Four sentences, front-loaded with the core action and its cascade scope, then the mode routing and confirmation gate. Every sentence carries distinct, non-redundant information with no filler.

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?

For a mutation tool with no output schema, the definition covers the essential decision points: modes, confirmation gating, cascade behavior, and calendar side effects. Minor gaps remain around what the preview response contains, how far back 'recently deleted' reaches, and what happens on name conflicts, but nothing an agent needs to invoke it 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 description coverage is 100%, so the baseline is 3, and the description adds meaning beyond the schema by explaining how the parameters interact as a workflow: omitting trip_id switches the tool into list mode, and confirmed=true is what unlocks the mutation. The expected_deleted_at concurrency guard is only explained in the schema, not elaborated here.

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 ('Restore a deleted trip') plus a non-obvious scope: the itinerary items removed with the trip are also restored, while items deleted separately stay deleted. This distinguishes it clearly from sibling tools like trip_delete and trip_create, and the cascade rule is spelled out rather than left to inference.

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 routes between the tool's two modes: call without trip_id to list recently deleted trips, call with trip_id to preview. It also states the gating condition for the actual mutation ('nothing changes until the user explicitly confirms and you call again with confirmed=true'), leaving nothing to inference.

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

trip_sharing_getGet trip sharingA
Read-onlyIdempotent
Inspect

Read who can see the user's own trips, one trip (trip_id) or every trip they own (paged). For each trip it reports the three sharing mechanisms separately: people with per-trip access (access edit/view/invited/none, where invited means an invitation awaits acceptance and can still be revoked; invitation status pending/accepted/declined/expired, level view/edit, and traveler role), whether a public view link is active, and the trip's own friend-sharing switches (hidden from friends, plans shared with friends; per trip, not account settings). Pass friend_user_id (from friends_list) to also get that friend's exact state on each trip: per-trip access, invitation, and whether they see the trip summary or full plan through friend sharing (planVisibleVia: friend_grant = the user shares plans with this friend on every trip, trip_grant = this trip shares plans with all friends, or both). Use this before trip_sharing_set and to report sharing status. Only the trip owner can read this. Revoked invitations are deleted, so they are not listed. Never show IDs to the user.

NameRequiredDescriptionDefault
pageNo1-based page when trip_id is omitted. Default 1.
trip_idNoOptional trip ID. Omit to page through every trip the user owns.
page_sizeNoTrips per page (max 50). Default 25.
upcoming_onlyNoOnly trips that have not ended yet. Default false.
friend_user_idNoOptional friend user_id from friends_list. Adds that friend's access on each trip.

TDQS

A4.2/5.0
Behavior3/5

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

The annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is covered structurally. The description adds real behavioral context on top: owner-only authorization, the fact that revoked invitations are deleted and therefore absent from results, and an output-presentation rule (never show IDs). Missing details on pagination metadata or response shape keep it from the top band, but the added context exceeds annotation restatement.

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 scope are front-loaded in the opening sentence, and nearly every clause carries semantics an agent needs (invitation states, link activity, per-trip vs account switches). The middle section is heavily parenthetical and nested, which costs readability but the density is largely justified by the tool's complexity.

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 no output schema and five optional parameters, the description must carry the return-value burden, and it does: it enumerates the three sharing mechanisms, invitation states, the public-link flag, friend-sharing switches, and the planVisibleVia values. Authorisation and data-lifecycle caveats are also present.

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 still adds meaning by noting trip_id omission triggers paging across all owned trips and by explaining that friend_user_id (sourced from friends_list) unlocks per-friend state including the derived planVisibleVia semantics. That is genuine value beyond the schema text.

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 first sentence gives a specific verb (read) plus resource (trip sharing) and immediately scopes the two modes: single trip via trip_id or all owned trips via paging. It is distinguishable from trip_sharing_set, which is named as the mutation counterpart.

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?

States clearly when to call it ("before trip_sharing_set and to report sharing status") and names the prerequisite source for friend_user_id (friends_list). It also flags the owner-only restriction, though it offers no explicit when-not or alternative read path.

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

trip_sharing_setShare trips with a friendA
DestructiveIdempotent
Inspect

Give one friend view or edit access to the user's own trips, change their level, or remove it (access=none), for specific trips (trip_ids) or every trip the user owns (all_trips=true, 25 per page). Idempotent: it checks each trip first and only changes what differs, so re-running it never sends a duplicate invitation. New access is an invitation emailed to the friend, who gets access once they accept. Without confirmed=true nothing is written or emailed: it returns the plan per trip (would_invite, would_update_access, would_revoke, already_correct, already_invited, needs_attention). Show that plan, and call again with the same arguments plus confirmed=true only once the user has explicitly asked for this change, in this conversation or in the instructions of a scheduled task they set up; after they approve the plan, apply it without previewing or asking again. Results per trip: invited, invitation_updated, access_updated, revoked, already_correct, already_invited, needs_attention (with a reason, e.g. not the owner or access via the traveler list) or failed; report them to the user, describing invited trips as pending invitations rather than access already granted. Friend summaries are separate and never changed here: they follow the user's friend settings and each trip's hide-from-friends switch. Only friends can get access; for someone who is not a friend yet, offer friend_request_send first. If their friend request is still pending, the call changes nothing and returns friendRequest and a note: tell the user they haven't accepted yet, and only if the user still wants it, call again with confirmed=true and pending_friend_confirmed=true. Get friend_user_id from friends_list; never guess it from a name. Never show IDs to the user.

NameRequiredDescriptionDefault
pageNoWith all_trips, the 1-based page of 25 trips. Default 1.
accessYesview = can see the trip; edit = can change it; none = remove their per-trip access.
messageNoOptional note for new invitation emails (max 280 chars).
trip_idsNoTrip IDs to change. Provide this OR all_trips.
all_tripsNoApply to every trip the user owns, 25 per page. Provide this OR trip_ids.
confirmedNotrue applies the change. Omit or false to preview without writing or emailing anything.
upcoming_onlyNoWith all_trips, only trips that have not ended yet. Default false.
friend_user_idYesThe friend's user_id from friends_list. For access=none, any user_id listed with access in trip_sharing_get.
pending_friend_confirmedNoOnly when the friend request is still pending: true once the user, told they haven't accepted yet, still wants to grant this access.

TDQS

A4.6/5.0
Behavior4/5

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

Adds substantial context beyond the annotations: idempotency is explained by its mechanism (checks each trip, only changes what differs, no duplicate invitations), new access is an emailed invitation effective on acceptance, and every outcome code (invited, needs_attention, failed) plus the undo path (access=none) is spelled out. The destructiveHint is implicit in the revoke flow rather than explicitly framed as irreversible, which is the only gap.

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 action and the confirmation gate, and essentially every clause carries operative information (preview fields, outcome codes, error reasons, ID-hiding rule). It is a dense single block, though, and the outcome-code lists are repeated in both preview and result form, which adds bulk.

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 no output schema, the description fully compensates by enumerating the preview plan fields and the per-trip result values, including what to tell the user (pending invitations vs. granted access) and what to do on needs_attention. For a 9-parameter destructive, open-world tool, an agent has everything needed to call it correctly.

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 real workflow meaning the schema cannot: the two-step confirmed gate, the conditional pending_friend_confirmed=true re-call, the source of friend_user_id (never guessed from a name), and access=none accepting IDs from trip_sharing_get. Minor deduction for not elaborating all_trips/upcoming_only/paging 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?

Opens with a specific verb and resource: grant view/edit access to the user's own trips, change level, or remove with access=none, across trip_ids or all_trips. It is clearly distinguished from siblings by naming the adjacent tools it is not (trip_sharing_get, friends_list, friend_request_send).

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 routing rules: use friends_list for friend_user_id, offer friend_request_send for non-friends, and a precise when-to-confirm protocol (only after explicit user request in this conversation or a scheduled-task instruction; apply after approval without re-previewing). It even covers the pending-friend-request branch and the separate friend-summary path.

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

trips_hubTineo: My TripsA
Read-onlyIdempotent
Inspect

Opens the Tineo trips app: browse current, upcoming, and past trips and open a trip's day-by-day itinerary. The user launches it from the ChatGPT sidebar or a conversation panel.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
typeYes
sectionsYes
totalCountYes
activeCountYes
pastTruncatedYes
upcomingTruncatedYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already establish read-only, idempotent, non-destructive, closed-world behavior. The description adds meaningful context beyond annotations by identifying this as an app-opening UI surface and naming the launch points, which helps an agent understand this is not a data mutation or raw retrieval call.

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, front-loaded with the core action, then the launch context. Every sentence contributes useful selection context and there is no redundant restatement of annotations or schema.

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 tool has no parameters, rich annotations, and an output schema, so most structured context is already present. The description adequately explains the UI hub role, though it could more explicitly distinguish this from sibling trip-data tools for an agent choosing among many trip-related operations.

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?

The tool has zero parameters, so there is no parameter semantics to explain. The schema is empty and no additional parameter guidance is needed, making the baseline score appropriate.

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

Purpose4/5

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

The description gives a specific verb and resource: it opens the Tineo trips app and lets the user browse trips or open an itinerary. It is clearer than a generic name, though it does not explicitly contrast with sibling data tools such as trips_list or trip_details.

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

Usage Guidelines3/5

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

It states that the user launches it from the ChatGPT sidebar or a conversation panel, which implies a UI-entry context. It does not explicitly say when to use this instead of trips_list, trips_list/detail APIs, or other trip tools, so the guidance remains implied rather than explicit.

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

trips_listList tripsA
Read-onlyIdempotent
Inspect

List the user's trips. Use this when the user wants to see their trips, search for a specific trip, or asks about their travel plans.

NameRequiredDescriptionDefault
limitNoMaximum number of trips to return. Defaults to 10, max 50.
searchNoSearch query to filter trips by destination, name, or location
statusNoFilter by trip status: all, upcoming, past, or ongoing. Defaults to all.

Output Schema

NameRequiredDescription
tripsNo
filtersNo
totalCountNo

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so the full safety profile is covered structurally. The description adds only the implicit 'user's trips' scoping and nothing about defaults, pagination, or result size, so its incremental value is thin.

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?

Two short sentences, front-loaded with the core action, no filler. The second sentence restates 'see their trips' from the first while adding the search and travel-plans cases, a minor redundancy but not bloat.

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

Completeness3/5

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

An output schema exists, so return values need no explanation, and all three parameters are fully documented. The remaining gap is sibling disambiguation: with trip_details, trips_hub, and search in the same namespace, the description gives an agent no basis for choosing this tool over them.

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%, so limit, search, and status are all documented in the schema, including the default of 10, max 50, and the status values. The description adds no additional parameter meaning, so the baseline of 3 applies.

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

Purpose4/5

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

The description states a clear verb and resource: 'List the user's trips.' It also scopes to the user's own trips rather than all trips. However, it never distinguishes itself from close siblings like trip_details, trips_hub, or the generic search tool, so an agent can't tell from the text alone why it would pick this over those.

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?

It gives concrete trigger conditions: seeing trips, searching for a specific trip, or asking about travel plans. That covers the common cases well, but it names no alternatives or exclusions, so it offers no guidance on when to prefer trip_details or trips_hub instead.

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

trip_travelersList trip travelersB
Read-onlyIdempotent
Inspect

Get the list of travelers/participants for a specific trip. Returns names, emails, roles, and which segments each traveler is assigned to.

NameRequiredDescriptionDefault
trip_idYesThe unique identifier of the trip to get travelers for

Output Schema

NameRequiredDescription
tripIdNo
canEditNo
travelersNo

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered. The description adds the return payload shape (names, emails, roles, segment assignments), which is modest extra context, but says nothing about ordering, pagination, or behavior when trip_id is unknown.

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?

Two sentences, front-loaded with the purpose and followed by the return contents; nothing is padded or repetitive. The second sentence is arguably redundant given the output schema, which keeps this just short of a 5.

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?

For a single-parameter read tool with an output schema and full annotation coverage, the description is nearly sufficient: the agent knows what it does and what comes back, and the output schema handles return structure. The only real omission is guidance on when to prefer this over known_participants.

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?

There is only one parameter and the schema documents it at 100% coverage with a clear description ('unique identifier of the trip'). The description's phrase 'for a specific trip' merely restates the schema, adding no format, sourcing, or validation detail beyond it.

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

Purpose4/5

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

States a specific verb ('Get the list of') and resource ('travelers/participants') and scopes it to a specific trip, which is clear enough to act on. However, it never names the adjacent 'known_participants' or 'trips_hub' siblings, so an agent must infer the boundary between trip-scoped and global participant lookups.

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

Usage Guidelines2/5

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

The description gives no when-to-use guidance, no exclusions, and no alternatives. With sibling tools like known_participants, traveler_add, and traveler_assign in the same namespace, an explicit routing statement (e.g., 'use known_participants for the account-wide list') would be needed to lift this above no-guidance.

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

trip_updateUpdate tripA
Destructive
Inspect

Update trip dates, title, destination, or description for a trip the authenticated user can edit. May synchronize changes to the trip owner's connected calendars when automatic sync is enabled.

NameRequiredDescriptionDefault
nameNoAlias for title
titleNoNew trip title (e.g., 'Japan October 2026')
trip_idYesThe ID of the trip to update
end_dateNoTrip end date in YYYY-MM-DD format
start_dateNoTrip start date in YYYY-MM-DD format
descriptionNoOptional trip description or notes
destinationNoPrimary destination city or region
destination_scopeNoRequired as 'trip' when changing destination on a trip that already has dated itinerary items.
destination_confirmedNoRequired true when changing destination on a trip that already has dated itinerary items; confirms this is a parent-trip change, not an item location correction.

TDQS

A3.6/5.0
Behavior4/5

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

With destructiveHint=true already declared, the description earns credit for disclosing a non-annotation behavioral trait: changes may propagate to the trip owner's connected calendars when automatic sync is enabled. It also states the edit-permission requirement. It stops short of covering partial-update semantics or reversibility.

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?

Two tight sentences, front-loaded with the mutating action and its scope, then the side effect. Nothing is wasted, though the second sentence could be fused more compactly.

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

Completeness3/5

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

Without an output schema, the description should ideally say what comes back and whether this is a partial or full update. It covers permission and calendar-sync side effects but leaves the update semantics (can a single field be changed? does omitting a field clear it?) and return behavior to inference.

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 schema itself explains the tricky conditional parameters (destination_scope and destination_confirmed). The description only restates the field list already present in the schema, adding no format, aliasing, or conditional detail. Baseline 3 is appropriate.

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

Purpose4/5

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

States a specific verb (Update) and resource (trip) plus the exact field families affected: dates, title, destination, description. However, it does not distinguish itself from the sibling trip_rename, which appears to overlap on the title-editing surface, so an agent must guess which tool to pick for a rename.

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

Usage Guidelines3/5

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

The phrase 'for a trip the authenticated user can edit' gives a real precondition (edit permission) that narrows usage. But there is no when-not guidance and no mention of the alternative trip_rename or the more targeted trip_city_update / trip_cover_update siblings, so routing is only implied.

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. 1 tool update
    • Changedtrip_sharing_set1 field changed
      • addedInput schema / properties / pending_friend_confirmed
        Added value: +{
        +  "description": "Only when the friend request is still pending: true once the user, told they haven't accepted yet, still wants to grant this access.",
        +  "type": "boolean"
        +}
  2. 3 tool updates
    • Changedassistant_airbnb_search_trip1 field changed
      • addedInput schema / properties / infants
        Added value: +{
        +  "description": "Infants under 2. Airbnb does not count them as guests.",
        +  "maximum": 5,
        +  "minimum": 0,
        +  "type": "integer"
        +}
    • Changedassistant_airbnb_search_user1 field changed
      • addedInput schema / properties / infants
        Added value: +{
        +  "description": "Infants under 2. Airbnb does not count them as guests.",
        +  "maximum": 5,
        +  "minimum": 0,
        +  "type": "integer"
        +}
    • Changedtrip_create1 field changed
      • addedInput schema / properties / description
        Added value: +{
        +  "description": "Optional trip description or notes",
        +  "maxLength": 1000,
        +  "type": "string"
        +}
  3. 7 tool updates
    • Changedcities_search1 field changed
      • addedInput schema / properties / country
        Added value: +{
        +  "description": "Optional country name or ISO code (for example CR or Costa Rica) to limit results to that country. Pass it whenever the user named a country.",
        +  "maxLength": 100,
        +  "type": "string"
        +}
    • Changedimport_parse_text_preview1 field changed
      • changedInput schema / properties / text / description
        Previous value: -"Travel confirmation, booking, or itinerary text to parse. Raw text is used only for parsing and is not echoed back."New value: +"Travel confirmation, booking, or itinerary text to parse: one booking confirmation per call, or a few days of an itinerary. A whole trip page listing many bookings can exceed the 90-second parse limit, so split it. Raw text is used only for parsing and is not echoed back."
    • Changedsearch_hotels1 field changed
      • changedInput schema / properties / query / description
        Previous value: -"Search query or destination city (e.g. 'hotels in Tokyo'). Required for ordinary hotel search. Radius search ignores this text in provider selection and filters by geography only. For hotel_place_id without radius_meters, the resolved property name is used for provider search and identity matching."New value: +"Search query or destination city (e.g. 'hotels in Tokyo'). Required for ordinary hotel search. Google Hotels can mix in properties from nearby towns or districts; cards outside the searched place carry outsideRequestedArea and distanceFromAreaKm, and areaNote says how many. When the user wants a specific neighbourhood, get its coordinates or center_place_id from places_search and use a radius search. Radius search ignores this text in provider selection and filters by geography only. For hotel_place_id without radius_meters, the resolved property name is used for provider search and identity matching."
    • Changedsegment_create1 field changed
      • changedInput schema / properties / fields / description
        Previous value: -"Field values matching the schema for the segment type. Get schema first with segment_get_schema."New value: +"Field values matching the schema for the segment type. Get schema first with segment_get_schema. Activity activityType is one of: tour, dining, show, spa, class, sports, sightseeing, other (other words are mapped or saved as other). title is optional for Flight, Lodging, Transfer, CarRental and Parking: Tineo derives one (e.g. \"AA72 SYD → LAX\", the property name, \"Transfer to <dropoff>\")."
    • Changedsegment_update1 field changed
      • changedInput schema / properties / fields / description
        Previous value: -"Field values to update. Only include fields that should be changed."New value: +"Field values to update. Only include fields that should be changed. Send null to clear an optional field; an empty string is ignored and the stored value is kept."
    • Changedtrip_city_add2 fields changed
      • changedInput schema / properties / city_name / description
        Previous value: -"Exact city name. Provide this OR city_id; ambiguous names return candidates."New value: +"City, town or island name. Provide this OR city_id; ambiguous names return candidates, so pass country as well."
      • changedInput schema / properties / country / description
        Previous value: -"Optional country name or country code used to disambiguate city_name."New value: +"Country name or ISO code (for example CR or Costa Rica). Strongly recommended with city_name: it disambiguates same-named cities and lets Tineo add a place that is missing from the catalog."
    • Changedtrip_city_update2 fields changed
      • changedInput schema / properties / city_name / description
        Previous value: -"Exact city name. Provide this OR city_id; ambiguous names return candidates."New value: +"City, town or island name. Provide this OR city_id; ambiguous names return candidates, so pass country as well."
      • changedInput schema / properties / country / description
        Previous value: -"Optional country name or country code used to disambiguate city_name."New value: +"Country name or ISO code (for example CR or Costa Rica). Strongly recommended with city_name: it disambiguates same-named cities and lets Tineo add a place that is missing from the catalog."
  4. 2 tool updates
    • Changedassistant_airbnb_search_user1 field changed
      • changedInput schema / properties / location / description
        Previous value: -"City, neighborhood, or landmark (e.g., 'Lisbon, Portugal', 'Brooklyn')."New value: +"City, neighborhood, or landmark with its region and country (e.g., 'Lisbon, Portugal', 'Brooklyn, NY, USA', 'Orange, NSW, Australia')."
    • Changedsearch_flight_prices1 field changed
      • changedInput schema / properties / outbound_date / description
        Previous value: -"Outbound date in YYYY-MM-DD format."New value: +"Outbound date in YYYY-MM-DD format. To compare several departure days, pass outbound_end_date in this one call rather than sending one call per day."
  5. 2 tool updates
    • Changedtraveler_assign6 fields changed
      • changedInput schema / properties / segment_id / description
        Previous value: -"The segment ID to assign travelers to"New value: +"One segment ID to assign travelers to. Use segment_ids for several."
      • addedInput schema / properties / segment_ids
        Added value: +{
        +  "description": "Segment IDs to assign the same travelers to, in one call.",
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
      • changedInput schema / properties / traveler_id / description
        Previous value: -"Single trip traveler ID to assign"New value: +"One trip traveler ID to assign. Use traveler_ids for several."
      • changedInput schema / properties / traveler_ids / description
        Previous value: -"Array of trip traveler IDs to assign (for batch assignment)"New value: +"Trip traveler IDs (from trip_travelers) to assign to every listed segment."
      • addedInput schema / properties / traveler_ids / maxItems
        Added value: +50
      • removedInput schema / required
        Removed value: -[
        -  "segment_id"
        -]
    • Changedtrip_expense_create2 fields changed
      • addedInput schema / properties / expenses
        Added value: +{
        +  "description": "Several expenses in one call, each with the same fields as a single expense. Use instead of description and amount at the top level.",
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "amount": {
        +        "description": "Total amount, greater than 0.",
        +        "type": "number"
        +      },
        +      "category": {
        +        "enum": [
        +          "Transportation",
        +          "Lodging",
        +          "CarRental",
        +          "Food",
        +          "Activities",
        +          "Shopping",
        +          "Insurance",
        +          "Communication",
        +          "Tips",
        +          "Fees",
        +          "Other"
        +        ],
        +        "type": "string"
        +      },
        +      "currency": {
        +        "description": "3-letter currency code. Defaults to the trip currency, else USD.",
        +        "type": "string"
        +      },
        +      "date": {
        +        "description": "Expense date, YYYY-MM-DD. Defaults to today in the user's profile time zone; send the user's local date when you know it.",
        +        "type": "string"
        +      },
        +      "description": {
        +        "description": "What the expense was for, e.g. Travel insurance.",
        +        "type": "string"
        +      },
        +      "notes": {
        +        "type": "string"
        +      },
        +      "paid_by": {
        +        "description": "Traveler ID from trip_expenses_list travelers, or \"me\". Defaults to me.",
        +        "type": "string"
        +      },
        +      "split": {
        +        "additionalProperties": false,
        +        "description": "Who the cost belongs to. type payer = all of it is the payer's cost (no split). equal = divided evenly among participants (omit participants for everyone on the trip). percentage = each participant's percentage, summing to 100. exact = each participant's amount, summing to the expense amount. To make an expense 100% one person's: if they paid, use type payer with paid_by set to them; if someone else paid, use percentage with only that person at 100.",
        +        "properties": {
        +          "participants": {
        +            "items": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "amount": {
        +                  "description": "Required for exact splits.",
        +                  "type": "number"
        +                },
        +                "percentage": {
        +                  "description": "Required for percentage splits.",
        +                  "type": "number"
        +                },
        +                "traveler_id": {
        +                  "description": "Traveler ID from trip_expenses_list travelers, or \"me\".",
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "traveler_id"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "type": {
        +            "enum": [
        +              "payer",
        +              "equal",
        +              "percentage",
        +              "exact"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "type"
        +        ],
        +        "type": "object"
        +      },
        +      "vendor": {
        +        "description": "Merchant or vendor.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "description",
        +      "amount"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 50,
        +  "minItems": 1,
        +  "type": "array"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "trip_id",
        -  "description",
        -  "amount"
        -]New value: +[
        +  "trip_id"
        +]
  6. 2 tool updates
    • Addedtrip_sharing_get
    • Addedtrip_sharing_set

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Perplexity for social: ask what competitors are running across social and get answers grounded in real ad and creative data, not guesses.
    2
    Apache 2.0
  • A
    license
    A
    quality
    C
    maintenance
    Enables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.
    16
    4 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Browse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources