Skip to main content
Glama

Log a journey

log_journey

Log a new journey (a precise movement between countries) for the authenticated user. Journey routes are ordered legs[], one entry per continuous movement. Airside connections stay one journey with multiple legs; if the traveler left the airport or cleared immigration, split into separate journeys. Domestic/never-left-country journeys are valid but ignored for day counts. Journey output leg times are departureAt/arrivalAt; write inputs use departureDate/arrivalDate. If unfamiliar with TripLedger semantics, call get_tripledger_guide first. legs[] is required and defines the route, timing, transport modes, and country-presence stamps. Dates are ISO 8601 with an explicit offset (e.g. 2026-07-14T09:30:00+01:00); timezones are IANA names (e.g. Europe/London) — both required. Country accepts an ISO alpha-2 code or an English name (e.g. FR or France); the resolved names are echoed back in the result. Supply status: booked for booking confirmations, completed for user-confirmed travel. Ask the user when ambiguous. If omitted, the existing date-based capture default applies (past arrival completed, otherwise booked). Optionally pass costs (an array of { amountMinor, currency, category?, ... }) to log the price in the same entry — each line becomes an expense tied to this record (Pro). Use one line per charge: the main fare/room plus any addon (luggage, seat selection, breakfast) or upgrade lines. If a matching record already exists, this returns a warning naming its ID instead of inserting a duplicate — pass allowDuplicate: true to create it anyway. If unfamiliar with TripLedger semantics, call get_tripledger_guide first.

Input Schema

NameRequiredDescriptionDefault
legsNoOrdered route legs. Required. One entry per continuous movement; airside connections are multiple entries.
costsNo
notesNo
statusNo
allowDuplicateNoSet true to create even if a matching record already exists (see the duplicate-guard note above). Defaults to false.
participantIdsNoTraveler IDs for this journey. Omit to use the self person; use list_people.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.9/5.0
Behavior5/5

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

Annotations only tell the agent this is a non-destructive, non-idempotent write. The description goes far beyond: a duplicate guard returns a warning with the existing ID unless allowDuplicate is set, costs each become expenses tied to the record (Pro-gated), domestic journeys are accepted but ignored for day counts, and resolved country names are echoed in the result.

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 purpose, then rules, then parameters – a sensible order, and nearly every sentence carries operational value. The one flaw is the verbatim repetition of 'If unfamiliar with TripLedger semantics, call get_tripledger_guide first' at both the start and the end, which wastes space in an already long 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?

With no output schema, the description still covers return behavior (resolved country names echoed, duplicate warning with ID), the write semantics, cost side effects, and the default status derivation. For a 6-parameter creation tool with nested leg objects, 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.

Parameters5/5

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

Schema coverage is only 50%, and the description compensates thoroughly: legs[] is required and defines route/timing/transport/country stamps, dates need ISO 8601 with explicit offset, timezones must be IANA names, country accepts alpha-2 or English name, and status accepts booked/completed with a stated default. It even disambiguates the output naming (departureAt/arrivalAt) from the input naming (departureDate/arrivalDate).

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 ('Log a new journey') and immediately defines the domain concept ('a precise movement between countries') for the authenticated user. This clearly separates creation from the sibling mutation tools like update_journey and delete_journey, and the multi-leg framing tells an agent exactly what unit is being created.

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 decision rules: airside connections stay one journey with multiple legs, but leaving the airport or clearing immigration requires splitting into separate journeys. It also specifies status selection (booked vs completed), tells the agent to ask when ambiguous, and points to get_tripledger_guide when semantics are unfamiliar.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources