Skip to main content
Glama

Import a trip

import_trip

Bring in a trip with all its transport, stays, activities and expenses in one call — from another travel app, a spreadsheet, a calendar or booking emails, given as fields. Creates the trip, or adds to trip_id; then works out the places visited and the drives between them. Returns the new ids and any item that couldn't be added.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
tripNoThe trip to create. Leave out when adding to trip_id.
staysNoHotels and other accommodation.
trip_idNoAdd to this existing trip instead of creating one.
expensesNoOther spending.
transportNoFlights, trains, buses, ferries, rentals, drives.
activitiesNoRestaurants, places, activities, notes.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
addedNoEach item added: type and id.
failedNoEach item that couldn't be added, and why.
trip_idYesThe trip the items went to.
drives_addedNoDrives inferred between them.
places_addedNoPlaces worked out.
trip_createdNoWhether a new trip was made.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed11 schema fields changed
    • addedInput schema / properties / activities / items / properties / payment_method
      Added value: +{
      +  "description": "card or cash.",
      +  "enum": [
      +    "card",
      +    "cash"
      +  ],
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedInput schema / properties / activities / items / properties / payment_status
      Added value: +{
      +  "description": "paid, due (to pay before the trip) or on_arrival (pay there or on the day).",
      +  "enum": [
      +    "paid",
      +    "due",
      +    "on_arrival"
      +  ],
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedInput schema / properties / activities / items / properties / remind_on
      Added value: +{
      +  "description": "A day to be reminded about it. Date, YYYY-MM-DD. null clears it.",
      +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedInput schema / properties / activities / items / properties / remind_time
      Added value: +{
      +  "description": "Time of day for the reminder, \"HH:MM\" local; empty means 09:00.",
      +  "pattern": "^\\d{2}:\\d{2}$",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedInput schema / properties / stays / items / properties / check_in_time
      Added value: +{
      +  "description": "Check-in time, HH:MM local; empty means mid-afternoon.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedInput schema / properties / stays / items / properties / check_out_time
      Added value: +{
      +  "description": "Check-out time, HH:MM local; empty means late morning.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedInput schema / properties / stays / items / properties / payment_method
      Added value: +{
      +  "description": "card or cash.",
      +  "enum": [
      +    "card",
      +    "cash"
      +  ],
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedInput schema / properties / stays / items / properties / payment_status
      Added value: +{
      +  "description": "paid, due (to pay before the trip) or on_arrival (pay there or on the day).",
      +  "enum": [
      +    "paid",
      +    "due",
      +    "on_arrival"
      +  ],
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedInput schema / properties / transport / items / properties / payment_method
      Added value: +{
      +  "description": "card or cash.",
      +  "enum": [
      +    "card",
      +    "cash"
      +  ],
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedInput schema / properties / transport / items / properties / payment_status
      Added value: +{
      +  "description": "paid, due (to pay before the trip) or on_arrival (pay there or on the day).",
      +  "enum": [
      +    "paid",
      +    "due",
      +    "on_arrival"
      +  ],
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedInput schema / properties / trip / properties / budget_raw
      Added value: +{
      +  "description": "A budget with currency, e.g. \"AUD 8000\"; null clears it.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
  2. First observed

TDQS

A4.6/5.0
Behavior5/5

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

Annotations cover the safety profile (readOnly=false, destructive=false, openWorld=false), and the description adds genuinely new behavior: it discloses the derived post-processing ('works out the places visited and the drives between them') and, importantly, partial-failure semantics ('any item that couldn't be added'). These are non-obvious side effects an agent needs before calling it.

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, front-loaded with the core action and scope, then the mode logic and return contract. No filler, no redundancy with the 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 six-parameter, deeply nested import tool with an output schema, the description covers purpose, modes, side effects and return summary well. Minor gap: it doesn't say what happens if imported items duplicate existing ones, but the output schema already carries the return detail.

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 slightly exceeds that by clarifying the mutually-exclusive create-vs-append relationship between the 'trip' payload and 'trip_id', which is the one structural choice an agent must reason about when assembling the call.

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 ('Bring in a trip') plus the exact resource and enumerates everything it ingests (transport, stays, activities, expenses) in one call. It also names the outcomes ('Creates the trip, or adds to trip_id'), which cleanly separates it from get_trip, update_trip and list_trips.

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 frames the intended sources (another travel app, spreadsheet, calendar, booking emails) and states the two operating modes, so an agent can judge when it applies. It does not, however, explicitly name an alternative tool or give a when-not-to-use condition, so it stops 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.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.