Skip to main content
Glama

foxnaim · MCP-сервер Wanderlog: составление и правка маршрутов путешествий в диалоге с ИИ

Готовая основа под клиентский проект. Стек: TypeScript. Лицензия MIT сохранена, история коммитов и авторы оригинального проекта сохранены.

wanderlog-mcp

npm npm downloads License: MIT Node.js Coverage Status

An MCP server that lets Claude (or any MCP-compatible agent) view and build Wanderlog trip itineraries through conversation.

Instead of clicking through the Wanderlog UI to plan a trip, you just ask:

"Create a 14-day Japan Golden Route trip — Tokyo, Hakone, Kyoto, Nara, and Osaka."

The agent calls the tools, interleaves places and notes for each day, adds hotel blocks, ferries, buses, trains, rental cars, and checklists, and you end up with a fully populated Wanderlog trip in a few minutes.

See a real example: 14-day Japan Golden Route — built entirely by an AI agent using this MCP server.

What's New (Unreleased)

  • Custom-list lifecycle operations now reject duplicate or ambiguous section headings instead of silently changing the first match.

  • wanderlog_search_hotels — search Wanderlog's hotel aggregator across airbnb, expedia, google, and kayak. Returns ranked offers with per-vendor price comparison and faceted filter discovery so the LLM never has to memorise Wanderlog's internal enum values.

  • A failed startup authentication probe now gets one shared retry on the first tool call, allowing valid sessions to recover from a transient network or proxy error without restarting the server.

  • wanderlog_add_place accepts an optional place_id, so wanderlog_search_places (response_format: "detailed") now has somewhere to send its results — pass the id straight through to add the exact candidate when a name matches multiple branches or the wrong city, instead of hoping the top autocomplete match is right.

  • wanderlog_annotate_place now replaces a place's existing note instead of appending the new text to it, including notes that contain images.

  • Place lookups no longer fail with "Place not found" when Wanderlog's autocomplete returns an entry with no place ID ahead of the real result. This affected adding places, hotels, journal stops and transit endpoints, and wanderlog_search_places listed those entries as undefined.

Related MCP server: wanderlog-mcp

What's New in v0.3.1

  • Wanderlog rate-limits rapid edits — burst mutations (an LLM building a full itinerary) now retry automatically with backoff instead of failing with an opaque "Submit op timeout".

  • Rate-limit rejections that can't be retried surface as a clear error instead of a 10-second hang.

  • New day sections created by wanderlog_update_trip_dates now match Wanderlog's native section shape exactly.

What's New in v0.3.0

  • wanderlog_search_guides + wanderlog_get_guide — discover and read user-written Wanderlog travel guides. The LLM can ask "what guides exist for Vietnam?" and pull full itineraries to use as inspiration.

  • wanderlog_remove_note — remove standalone note blocks by natural-language reference.

  • wanderlog_edit_note — find-and-replace across note blocks, place annotations, and checklist titles/items.

  • Detailed mode no longer truncates place notes or note blocks — guides and itineraries render their full commentary.

  • Fixes: notes containing embeds no longer render as [object Object]; place references now match across hyphen/dash differences (e.g. "Roppongi Hills - Tokyo City View").

What's New in v0.2.0

  • wanderlog_rename_day — replace auto-generated day headings (e.g. "Barcelona") with descriptive ones ("Arrival — Feria de Abril"). Pass "" to reset back to the default.

  • Tools table now documents wanderlog_annotate_place and wanderlog_add_expense (shipped previously, missing from v0.1.0 docs).

What's New in v0.1.0

  • Full itinerary building: places, notes, hotels, and checklists in a single conversation

  • wanderlog_search_places — find real-world places near any destination using Wanderlog's place database

  • wanderlog_add_note — interleave transit tips, booking info, and local advice between places

  • wanderlog_add_checklist — pre-trip and per-day checklists (visa, currency, timed-entry tickets)

  • MCP server instructions injected at startup so Claude builds complete itineraries automatically

  • Startup auth probe — catches expired cookies immediately instead of failing mid-conversation

Example Prompts

"What trips do I have in Wanderlog?"
"Create a 7-day itinerary for Lisbon starting June 1 — include restaurants, day trips,
and a hotel near the waterfront."
"Add a day trip to Sintra on day 3 of my Lisbon trip."
"I'm spending 5 days in Tokyo — build me a full itinerary with museum visits, ramen spots,
and a ryokan in Shinjuku."
"Look at my Barcelona trip and add practical notes for getting between each place."
"Add a pre-trip checklist to my Paris trip — visa, currency, offline maps, travel insurance."
"Move my Rome trip back by two weeks."
"Give me the shareable link to my Kyoto itinerary."
"Remove the Colosseum from day 2 of my Rome trip."

Tools

Tool

What it does

wanderlog_list_trips

List trips in your account

wanderlog_get_trip

View a full itinerary, or filter to a single day

wanderlog_get_trip_url

Get a shareable wanderlog.com link

wanderlog_get_trip_forwarding_email

Get a trip's trip+<id>@wanderlog.com import address

wanderlog_search_places

Find real-world places near a trip's destination

wanderlog_search_guides

List user-written travel guides for a destination, with fallback suggestions when none exist

wanderlog_get_guide

Read the full content of a public Wanderlog guide (sections, places, notes)

wanderlog_search_hotels

Search Wanderlog's hotel aggregator (airbnb/expedia/google/kayak) with per-vendor deal comparison

wanderlog_create_trip

Create a new trip with destination + date range

wanderlog_add_place

Add a place to a specific day or general list

wanderlog_add_note

Add a note (transit tips, booking info, local advice)

wanderlog_edit_note

Find-and-replace text in notes, place annotations, and checklists

wanderlog_remove_note

Remove a standalone note block by natural-language reference

wanderlog_add_hotel

Add a hotel booking with check-in/check-out dates

wanderlog_add_transit

Add a ferry, bus, or train leg (carrier, from/to, dates/times) to the shared Transit section

wanderlog_add_car_rental

Add a rental car with pick-up/drop-off locations and times

wanderlog_add_checklist

Add a pre-trip or per-day checklist

wanderlog_add_expense

Log a budget expense (amount, category, currency), optionally linked to a place

wanderlog_list_expenses

List budget expenses, optionally filtered by description / date / amount / currency

wanderlog_remove_expense

Remove a budget expense by description (with optional date / amount / currency filters)

wanderlog_edit_expense

Change a budget expense's description, amount, currency, category, or date

wanderlog_annotate_place

Update an existing place with a note, start/end time, or both

wanderlog_remove_place

Remove a place by natural-language reference

wanderlog_move_block

Move an existing place or reservation block within its current section

wanderlog_update_trip_dates

Change a trip's date range

wanderlog_rename_day

Rename a day's heading (e.g. "Barcelona" → "Arrival — Feria de Abril")

wanderlog_add_section

Create a uniquely named custom list, optionally after another section

wanderlog_update_section

Rename a custom list while preventing duplicate headings

wanderlog_delete_section

Permanently delete a custom list and all blocks inside it

wanderlog_list_journal

List journal (travelogue) stops, optionally filtered by title or date

wanderlog_add_journal

Add a journal stop: a place + date/time + text entry

wanderlog_edit_journal

Edit a journal stop's title, text, or date/time (or the journal summary)

wanderlog_remove_journal

Remove a journal stop by title (with an optional date filter)

Managing custom lists

Custom sections are undated lists outside Wanderlog's protected default/system sections. Create one with wanderlog_add_section, rename it with wanderlog_update_section, and delete it with wanderlog_delete_section. Deleting is destructive: every block in that section is removed. Section headings used by these tools must be unique (matching ignores case); ambiguous or duplicate targets return errors without submitting a mutation.

Prerequisites

  • Node.js 22 or newer

  • A Wanderlog account

  • An MCP-compatible client: Claude Code, Claude Desktop, OpenAI Codex, Cursor, VS Code, or any stdio MCP host

Setup

Wanderlog doesn't have a public API, so wanderlog-mcp authenticates using your browser session cookie (connect.sid). It's valid for roughly a year and never leaves your machine.

Treat it like a password — it grants the same access you have in the Wanderlog UI.

Chrome / Edge

  1. Go to wanderlog.com and log in

  2. Press F12 to open DevTools

  3. Click the Application tab

  4. In the left sidebar expand Storage → Cookies → https://wanderlog.com

  5. Find the row where Name is connect.sid

  6. Click the row, then double-click the Value cell and copy the full string — it starts with s%3A and is ~100 characters long

Firefox

  1. Go to wanderlog.com and log in

  2. Press F12 to open DevTools

  3. Click the Storage tab

  4. In the left sidebar expand Cookies → https://wanderlog.com

  5. Find connect.sid in the table, click it, and copy the Value

Why can't I use document.cookie in the console? Wanderlog sets connect.sid with the HttpOnly flag, which deliberately blocks JavaScript from reading it (XSS protection). DevTools bypasses this restriction — that's why it works and the console doesn't.

Step 2 — Configure your MCP client

Claude Code

claude mcp add wanderlog-mcp npx wanderlog-mcp \
  --env WANDERLOG_COOKIE="s%3A...your value here..."

Claude Desktop

Edit claude_desktop_config.json:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

  • Linux: ~/.config/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "wanderlog": {
      "command": "npx",
      "args": ["wanderlog-mcp"],
      "env": {
        "WANDERLOG_COOKIE": "s%3A...your value here..."
      }
    }
  }
}

Restart Claude Desktop after saving.

Cursor

Settings → MCP → Add server, or edit ~/.cursor/mcp.json:

{
  "mcpServers": {
    "wanderlog": {
      "command": "npx",
      "args": ["wanderlog-mcp"],
      "env": {
        "WANDERLOG_COOKIE": "s%3A...your value here..."
      }
    }
  }
}

VS Code (GitHub Copilot)

Add to your workspace .vscode/mcp.json:

{
  "servers": {
    "wanderlog": {
      "type": "stdio",
      "command": "npx",
      "args": ["wanderlog-mcp"],
      "env": {
        "WANDERLOG_COOKIE": "s%3A...your value here..."
      }
    }
  }
}

OpenAI Codex

Edit ~/.codex/config.toml:

[mcp_servers.wanderlog]
command = "npx"
args = ["wanderlog-mcp"]

[mcp_servers.wanderlog.env]
WANDERLOG_COOKIE = "s%3A...your value here..."

Run /mcp inside Codex to confirm the server loaded.

Smithery (one-click install)

npx @smithery/cli install wanderlog-mcp --client claude

Step 3 — Verify

Ask your agent: "What trips do I have in Wanderlog?"

It should call wanderlog_list_trips and return your account's trips. If it fails, see Troubleshooting below.

The cookie lasts about a year but can die sooner if you log out of wanderlog.com, change your password, or Wanderlog revokes the session. When that happens every tool call returns:

Wanderlog session invalid or expired — Capture a fresh connect.sid cookie from wanderlog.com DevTools and update WANDERLOG_COOKIE in your MCP config.

Repeat Step 1 above, update your config, and restart your MCP client.

Troubleshooting

Server starts but list_trips returns an auth error Your cookie is expired or wrong. Re-capture it from DevTools and update your config.

npx wanderlog-mcp hangs or does nothing The server speaks stdio MCP — it's designed to be launched by an MCP host, not run directly in a terminal. Run it through Claude Code or Claude Desktop as described above.

Tools work but the agent ignores notes/checklists The server injects instructions into the MCP initialize response that tell the agent to interleave places and notes and add checklists. This works reliably with Claude. Other clients may vary.

Security

  • The cookie is stored only in your MCP client config, never committed or logged

  • wanderlog-mcp runs entirely on your machine — there's no relay server

  • The startup auth probe validates your cookie without printing its value

  • To revoke access: log out of wanderlog.com (invalidates all sessions), then re-capture

Contributing

Pull requests are welcome. Before submitting:

npm run build && npm run test

For changes to transport or tool code, also run:

npm run test:integration

Disclaimer

wanderlog-mcp is an unofficial third-party tool, not affiliated with or endorsed by Wanderlog. It works by calling Wanderlog's private web-client API, which may change without notice. Use at your own risk.

License

MIT — see LICENSE


Made by shaikhspeare

Available Tools

33 tools
wanderlog_add_car_rentalAdd a rental carA

Adds a rental car to a Wanderlog trip, covering a pick-up and drop-off window. Locations are matched against Google Places near the trip. The rental firm is whatever you pick as the location — there is no separate company field. A "Rental cars" section is created if absent.

Returns confirmation with the resolved pick-up and drop-off.

NameRequiredDescriptionDefault
notesNoFree-text notes shown on the block (optional).
trip_keyYesThe trip to add the rental car to.
pickup_dateYesPick-up date.
pickup_timeYesPick-up time (24h).
dropoff_dateYesDrop-off date.
dropoff_timeYesDrop-off time (24h).
pickup_locationYesPick-up location — agency branch or airport, e.g. 'Europcar Cancun Airport'.
dropoff_locationYesDrop-off location.
confirmation_numberNoBooking/confirmation number (optional).

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations at all, the description carries the entire burden and does well: it discloses that locations are geocoded against Google Places near the trip, that a "Rental cars" section is auto-created if absent, and that the response returns the resolved pick-up and drop-off. It does not cover what happens when place matching fails, whether duplicate rentals are allowed, or whether the call is idempotent, which keeps it out of the top band.

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 sentences, front-loaded with the action, then the location-resolution rule, then the section side effect, then the return value. Each sentence carries information; the phrasing is slightly chatty ("whatever you pick as the location") but 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 nine-parameter mutation tool with no annotations and no output schema, the description supplies the important missing pieces: geocoding behavior, the side effect of creating a section, and what the call returns. Only failure modes and error behavior are absent, which is a modest gap given everything else it covers.

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 beyond the schema by clarifying the semantics of pickup_location — the company name is folded into the location string, and there is deliberately no separate firm parameter. The returned "resolved" locations also warn the agent that the input string may be normalized.

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 and resource: "Adds a rental car to a Wanderlog trip, covering a pick-up and drop-off window." That is concrete enough to separate it from wanderlog_add_place, wanderlog_add_hotel and wanderlog_add_transit, but none of those siblings are named, so the differentiation is by noun alone.

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: an agent can infer this is the tool for car rentals, and the note that "the rental firm is whatever you pick as the location — there is no separate company field" is a genuinely useful pre-call instruction. There is still no explicit when-to-use/when-not guidance, no mention of prerequisites such as an existing trip_key, and no routing to alternatives.

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

wanderlog_add_checklistAdd a checklist to a Wanderlog tripA

Adds a checklist to a Wanderlog trip. Each item starts unchecked and can be ticked off in the Wanderlog app.

Add at least one checklist per trip. Common patterns:

  • In a custom section: a packing list or "before departure" checklist

  • On day 1: an arrival-day checklist ("pick up Oyster card", "check into hotel", "buy SIM")

  • On specific days: day-of tasks ("bring swimsuit", "charge camera", "carry cash for market")

Supply "day" for a dated itinerary day or "section" for an undated section such as "Notes" or "Trip Preparations". When both are provided, "section" takes precedence. Omit both to add to the default "Places to visit" list.

Returns a confirmation including the checklist title and item count.

NameRequiredDescriptionDefault
dayNoOptional day to add the checklist to. Accepts 'day 2', 'May 4', or ISO '2026-05-04'. If 'section' is also provided, the section takes precedence. Omit both to add to the 'Places to visit' list.
itemsYesChecklist items. Each string becomes one checkbox item, initially unchecked.
titleNoOptional title for the checklist (e.g. 'Packing list'). Omit for an untitled checklist.
sectionNoOptional undated section to add the checklist to, identified by its heading (e.g. 'Notes', 'Trip Preparations', or 'Places to visit'). Matching is case-insensitive and takes precedence over 'day'. Omit both to add to the 'Places to visit' list.
trip_keyYesThe trip to add the checklist to. Use wanderlog_list_trips if you don't know the key.

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations supplied, the description carries the full burden and does a decent job: it discloses the initial state of items (unchecked), the precedence rule between 'section' and 'day', the default fallback container, and the shape of the confirmation. It does not cover failure behavior such as an unmatched section heading or an invalid trip key, 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 one-sentence purpose, then usage patterns, then parameter precedence, then return value — a sensible order. The three-bullet pattern list is longer than strictly necessary and repeats the notion of per-day checklists, but each bullet does illustrate a distinct placement decision.

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 non-destructive creation tool with no annotations and no output schema, the description covers purpose, placement semantics, iteration default, and return value. Only error handling and duplicate/matching behavior for 'section' remain unexplained, a modest 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%, so the schema already documents every parameter including accepted day formats and case-insensitive section matching. The description mostly restates those rules; its only added value is illustrating typical section/day choices through the pattern examples. 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 first sentence names a specific verb and resource ('Adds a checklist to a Wanderlog trip') and the following sentence pins down the unit of work ('each item starts unchecked'), which distinguishes it from sibling note/place/section adders 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 Guidelines5/5

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

It gives an explicit usage norm ('Add at least one checklist per trip') plus concrete scenario patterns (packing list, arrival-day, day-of tasks) and a routing rule for the three-way choice of day, section, or default list. An agent knows exactly when to reach for this tool and which parameter form to pick.

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

wanderlog_add_expenseAdd a budget expense to a Wanderlog tripA

Adds a budget expense to a Wanderlog trip. Optionally links the expense to a place so it shows up on that place in the budget tracker; omit "place" to log a standalone (unlinked) expense.

Use this to give the trip a cost dimension — estimated meal costs, entrance fees, transport passes, etc. If you link a place, it must already exist in the trip.

Returns confirmation with the expense amount and description.

NameRequiredDescriptionDefault
dateNoDate of the expense, YYYY-MM-DD. Defaults to today if omitted.
placeNoOptional natural-language reference to link this expense to something in the trip — a place ('Sensō-ji', 'the hotel'), or a transit/rental reservation ('the ferry', 'the bus', 'the train', 'the rental car'). Omit to log an unlinked expense (counts toward the budget total but isn't attached).
amountYesCost amount (e.g. 50, 12.50).
categoryNoExpense category.other
currencyNoISO 4217 currency code (e.g. 'USD', 'JPY', 'EUR'). Defaults to USD.USD
trip_keyYesThe trip to add the expense to.
descriptionYesWhat the expense is for (e.g. 'Lunch at Ichiran Ramen', 'Subway day pass').

TDQS

A3.6/5.0
Behavior3/5

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

No annotations exist, so the description carries the full behavioral burden. It does disclose the return value ('confirmation with the expense amount and description') and the place-existence precondition, which is genuinely useful. It says nothing about permissions, whether the expense can be edited afterwards, or side effects on the trip budget total beyond the linked/unlinked distinction.

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 paragraphs, front-loaded with purpose and mode selection before the usage example. The place-linking point is restated in both paragraph one and the closing prerequisite sentence, which is mild redundancy but functional as a constraint reminder.

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 7-parameter mutation tool with no annotations and no output schema, the description covers purpose, mode selection, a precondition, and the return value. The remaining gap is mutation semantics — reversibility and any permission requirements — which matters somewhat for a write operation but is partially mitigated by the existence of wanderlog_edit_expense and wanderlog_remove_expense siblings.

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 every parameter is already documented in the schema, giving a baseline of 3. The description reinforces the semantics of the 'place' parameter (linked vs standalone) but adds no new detail such as currency/category interactions or date defaulting beyond what the schema states.

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 ('Adds a budget expense to a Wanderlog trip') and the second sentence clarifies the two modes of the operation (linked vs standalone). It separates it from siblings like wanderlog_edit_expense and wanderlog_remove_expense implicitly through the verb, but 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 Guidelines4/5

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

'Use this to give the trip a cost dimension — estimated meal costs, entrance fees, transport passes' provides concrete usage context and examples. It also states a real prerequisite ('If you link a place, it must already exist in the trip'). It does not, however, route the agent to a sibling for correcting or deleting an expense.

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

wanderlog_add_hotelAdd a hotel booking to a Wanderlog tripA

Adds a hotel booking to a Wanderlog trip with check-in and check-out dates. If the trip does not yet have a "Hotels and lodging" section, one is created automatically.

Returns confirmation with the resolved hotel name and the booking window.

NameRequiredDescriptionDefault
hotelYesHotel name to search for. Examples: 'Park Hyatt Tokyo', 'the cheap hostel near the train station'. Matched against Google Places near the trip's destination.
check_inYesCheck-in date, YYYY-MM-DD.
trip_keyYesThe trip to add the hotel to.
check_outYesCheck-out date, YYYY-MM-DD. Must be after check_in.

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the whole behavioral burden, and it does disclose two genuinely useful traits: a 'Hotels and lodging' section is auto-created when missing, and the call returns a resolved hotel name plus booking window. It says nothing about what happens when the hotel string matches multiple places, whether duplicate bookings are created on repeat calls, or failure behavior for unresolvable names.

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 action, then the side effect, then the return. No filler or redundant restatement of the tool name.

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 four-required-parameter mutation tool with no annotations and no output schema, the description covers purpose, an important side effect, and the shape of the response, which is the main gap left by the absent output schema. Only failure/ambiguity handling is missing, and that is a modest omission.

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 four parameters are already documented in the schema, including the Google Places matching behavior and the check_out-after-check_in constraint. The description only restates 'with check-in and check-out dates' and adds no format, range, or resolution semantics 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?

The description states a concrete verb and resource ('Adds a hotel booking to a Wanderlog trip') and pins the scope with check-in/check-out dates, which clearly separates it from wanderlog_add_place or wanderlog_add_car_rental. It stops short of naming any sibling explicitly, so differentiation comes from the resource noun rather than deliberate routing.

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?

Use is implied by the resource (create a lodging booking). There is no guidance on the obvious adjacent decision: whether the agent should first run wanderlog_search_hotels to resolve a name, or just pass a free-text query here, and no when-not guidance (e.g., for existing bookings or edits).

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

wanderlog_add_journalAdd a journal stop to a Wanderlog tripA

Adds a stop to a Wanderlog trip's journal (travelogue). A stop pins a place with a date/time and an optional text entry, and appears in the trip's journal timeline.

Place handling: the tool first reuses a place already in the trip (an itinerary place or an existing journal stop) that matches the name. If the place isn't in the trip yet, it does NOT add it silently — it returns a prompt suggesting you add it to the itinerary first (wanderlog_add_place), or re-call with allow_new_place: true to journal it as a new place.

NameRequiredDescriptionDefault
dateNoDate of the stop, YYYY-MM-DD. Defaults to today.
textNoThe journal entry text for this stop (your notes/story about the place).
timeNoTime of the stop, HH:mm. Defaults to 09:00.
placeYesThe place this journal stop is about (e.g. 'Marina Bay Sands', 'Gardens by the Bay'). Reuses a matching place already in the trip; if none matches, you'll be prompted to add it to the itinerary first (or pass allow_new_place).
titleNoTitle for the stop. Defaults to the place name.
trip_keyYesThe trip to add the journal stop to.
allow_new_placeNoSet true to journal a place that isn't in your itinerary — it's searched and added as a new (unplanned) place. Leave unset to be prompted instead.

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses that the tool will not silently create places, that it returns a prompt instead, and how to override that with allow_new_place. Gaps remain on mutation specifics such as permission requirements, what the successful return payload contains, and behavior when multiple places match.

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?

Purpose is front-loaded in the first sentence, and the second labeled paragraph ('Place handling:') covers the only non-obvious behavior. Every sentence carries information; nothing is redundant padding.

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 annotations and no output schema, the description covers the critical non-obvious behavior (place reuse and the prompt path). It does not describe the successful return value or error cases, which is a modest gap rather than a blocking one.

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 workflow meaning beyond the schema by explaining the place-resolution sequence and the explicit re-call option with allow_new_place: true. It does not add detail on date/time defaults or title fallback 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?

The description opens with a specific verb+resource ('Adds a stop to a Wanderlog trip's journal (travelogue)') and clarifies that a stop pins a place with date/time plus optional text appearing in the journal timeline. This distinguishes it cleanly from siblings like wanderlog_add_note and wanderlog_add_place.

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 concrete workflow: try to reuse an existing trip place, otherwise the tool prompts to use wanderlog_add_place or to re-call with allow_new_place: true. That is a clear when-to-use branch with a named alternative. It does not explicitly contrast with wanderlog_edit_journal or explain when to journal versus add a note, leaving some sibling selection to inference.

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

wanderlog_add_noteAdd a note to a Wanderlog tripA

Adds a text note to a Wanderlog trip. Notes appear inline between places in a day, acting as the connective tissue of the itinerary. Every well-built day should have notes between stops. Supply "day" for a dated itinerary day or "section" for an undated section such as "Notes" or "Food & Drink". When both are provided, "section" takes precedence. Omit both to add to the default "Places to visit" list.

When to add a note (do this after adding each place or group of places):

  • How to get there: "Walk 15 min along the South Bank, or take the Jubilee line one stop"

  • Practical tips: "Book tickets online at least 2 days ahead — sells out in summer"

  • Food/drink recs: "Try the salt beef bagel at Beigel Bake — cash only, open 24hrs"

  • Time guidance: "Budget 2-3 hours here. Open 10am-6pm, closed Tuesdays"

  • Neighborhood context: "This area is great for wandering — no rush, just explore the lanes"

Returns a confirmation of where the note was added.

NameRequiredDescriptionDefault
dayNoOptional day to add the note to. Accepts 'day 2', 'May 4', or ISO '2026-05-04'. If 'section' is also provided, the section takes precedence. Omit both to add to the 'Places to visit' list.
textYesThe note text. Plain text — can be multi-line.
sectionNoOptional undated section to add the note to, identified by its heading (e.g. 'Notes', 'Food & Drink', or 'Places to visit'). Matching is case-insensitive and takes precedence over 'day'. Omit both to add to the 'Places to visit' list.
trip_keyYesThe trip to add the note to. Use wanderlog_list_trips if you don't know the key.

TDQS

A4.2/5.0
Behavior4/5

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

No annotations exist, so the description carries the full burden: it discloses the destination-resolution precedence ('section' wins over 'day'), the default target list, and that the call returns a confirmation of where the note landed. It omits failure modes (e.g., what happens with an unmatched section name) and any auth or rate-limit context.

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?

Placement rules are front-loaded before the example bullets, and the structure is easy to scan. The five illustrative bullets are somewhat generous in volume but each demonstrates a distinct note type, so they mostly earn their place.

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 four-parameter mutation tool with no output schema, the description covers purpose, placement semantics, timing relative to other tools, and the shape of the return value. 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 coverage is 100% and the per-parameter descriptions already explain day formats, section matching, and precedence. The description's restatement of the day/section/default rule adds little beyond what the schema provides, 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 ('Adds a text note to a Wanderlog trip') and immediately explains where the note lands in the itinerary, which is what distinguishes it from sibling tools like wanderlog_edit_note and wanderlog_annotate_place.

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 explicit procedural guidance ('do this after adding each place or group of places') plus concrete content categories with example text, and defines the day/section/default resolution rules. It stops short of naming alternative tools or stating when not to add a note.

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

wanderlog_add_placeAdd a place to a Wanderlog tripA

Adds a place to a Wanderlog trip. Searches for the place near the trip's destination, picks the best match, and inserts it into either a specific day or the general "Places to visit" list.

If the top autocomplete match for "place" picks the wrong branch of a chain or the wrong city — a common problem for generic names — call wanderlog_search_places first with response_format: "detailed" to see numbered candidates with their place_id, then pass the right one as "place_id" instead. This skips the free-text search and adds that exact place. "place" is required unless "place_id" is given.

PREFERRED: Use the "note" parameter to attach practical context directly to each place — transit directions, what to order, booking tips, time guidance. This is better than a separate wanderlog_add_note call because the note lives on the place itself in the itinerary. Use the "start_time" and "end_time" parameters to give the place a scheduled time window.

Use standalone wanderlog_add_note only for freestanding commentary between places (neighborhood context, multi-stop transit, day-level tips that aren't about a specific place).

Returns a confirmation including the resolved place name and where it was added.

NameRequiredDescriptionDefault
dayNoOptional day to add the place to. Accepts 'day 2', 'May 4', or ISO '2026-05-04'. Omit to add the place to the trip's 'Places to visit' list (unscheduled).
noteNoOptional inline note attached directly to this place. Use for practical context: transit directions, what to order, booking tips, time guidance. Appears on the place itself in Wanderlog (not as a separate note block).
placeNoName of the place to add. Examples: 'Sensō-ji', 'a ramen place in Shinjuku', 'Louvre'. Will be matched against Google Places near the trip's destination; if multiple match, the top result is used. Required unless 'place_id' is provided.
sectionNoOptional custom section to also add the place to, identified by its heading (e.g. 'Food & Drink', 'Must-See Spots'). Can be combined with 'day' to insert the place into both locations in a single call.
end_timeNoOptional end time in HH:mm format (e.g. '11:30'). Only used with start_time.
place_idNoOptional Google place_id to add directly, bypassing the free-text search entirely. Get this from a prior wanderlog_search_places call made with response_format: 'detailed' — use it when the top autocomplete match for 'place' resolves to the wrong branch of a chain or the wrong city. Takes precedence over 'place' when both are given.
trip_keyYesThe trip to add to. Use wanderlog_list_trips if you don't know the key.
start_timeNoOptional start time in HH:mm format (e.g. '09:00'). Adds a scheduled time to the place.

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses that the place is matched against Google Places near the trip's destination, that the top match wins, that place_id bypasses search and takes precedence, and that the response confirms the resolved name and target location. It does not cover auth, failure modes when no match is found, or mutation side effects, which keeps it from 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 core action and outcome, then organized into a fallback paragraph and a 'PREFERRED' usage paragraph. It is somewhat long and restates some note/place_id semantics already in the schema, but every section contributes routing or behavioral information rather than 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 an 8-parameter mutation tool with no output schema, the description covers what the tool does, the two ways to identify a place, when to use each, how notes and times are attached, and what the confirmation contains. Nothing an agent needs in order 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.

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 the description adds real meaning beyond it: the precedence rule between 'place' and 'place_id', the 'place' is required unless place_id is given' constraint, the recommendation to prefer 'note' over a separate add_note call, and the pairing of start_time with end_time.

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 ('Adds a place to a Wanderlog trip') plus the scope detail that distinguishes outcomes: inserted into a specific day or the general 'Places to visit' list. It also names the sibling it complements (wanderlog_search_places), so an agent can distinguish it 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 Guidelines5/5

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

Gives an explicit fallback path when the free-text match is wrong (call wanderlog_search_places with response_format: 'detailed', then pass place_id). It also draws a clear boundary against wanderlog_add_note — use 'note' on this tool for place-attached context, standalone wanderlog_add_note only for freestanding commentary between places.

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

wanderlog_add_sectionAdd a custom section to a Wanderlog tripA

Adds a new custom section to a Wanderlog trip itinerary. Sections are containers for places, notes, and other blocks — use them to group content thematically (e.g. "Food & Drink", "Day Trips", "Must-See Spots") or to create additional place lists beyond the default "Places to visit".

The new section is empty; add places to it with wanderlog_add_place by passing the section heading as the "section" parameter, or use wanderlog_add_note / wanderlog_add_checklist.

Returns the heading and position of the inserted section. The heading must be unique among undated sections; duplicate or ambiguous insertion targets are rejected without making a change.

NameRequiredDescriptionDefault
headingNoHeading for the new section (e.g. 'Food & Drink', 'Must-See Spots'). Omit for an untitled section.
trip_keyYesThe trip to add the section to. Use wanderlog_list_trips if you don't know the key.
after_sectionNoInsert the new section immediately after an existing section identified by its heading (e.g. 'Places to visit', 'Food & Drink'). Omit to append at the end of the trip.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations only declare the write/non-destructive/non-idempotent profile; the description adds real behavior beyond that — the section is created empty, the heading must be unique among undated sections, and duplicate or ambiguous targets are rejected without making any change. It also states what is returned (heading and position), which the annotations do not cover.

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 paragraphs, front-loaded with the core action, then usage, then constraints and return value. No filler sentences; each one carries distinct 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?

For a three-parameter mutation tool with no output schema, the description covers purpose, follow-on workflow, the failure/atomicity condition, and the return payload. An agent has everything needed to call it correctly and to interpret the result.

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 the baseline would be 3; the description earns more by explaining that the created heading becomes the identifier passed as the 'section' parameter to wanderlog_add_place, and by tying the uniqueness constraint to the heading argument. The after_section insertion behavior is only implied in the description, since the schema documents it 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 ('Adds a new custom section to a Wanderlog trip itinerary') and immediately clarifies that sections are containers for places, notes and blocks, which separates it from wanderlog_add_place and wanderlog_add_note in the sibling list.

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 use cases (thematic grouping such as 'Food & Drink', 'Day Trips', or extra place lists beyond the default 'Places to visit') and routes the agent forward to wanderlog_add_place / wanderlog_add_note / wanderlog_add_checklist for filling the section. It does not contrast with wanderlog_update_section or wanderlog_delete_section, so the boundary against those siblings is left implicit.

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

wanderlog_add_transitAdd a ferry, bus, or train legA

Adds a ferry, bus, or train leg to a Wanderlog trip. Departure and arrival places are matched against Google Places near the trip's destination. Ferries, buses and trains share the trip's "Transit" section, which is created automatically if absent.

Returns confirmation with the resolved route and departure time.

NameRequiredDescriptionDefault
toYesArrival place (terminal/station).
fromYesDeparture place (terminal/station), resolved near the trip.
typeYesKind of transit reservation. Flights use their own flow; not here.
notesNoFree-text notes shown on the block (optional).
carrierYesOperator / line name, e.g. 'Brittany Ferries', 'FlixBus', 'SNCF'.
trip_keyYesThe trip to add the transit leg to.
arrive_dateYesArrival date.
arrive_timeYesArrival time (24h).
depart_dateYesDeparture date.
depart_timeYesDeparture time (24h).
confirmation_numberNoBooking/confirmation number (optional).

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations supplied, the description does carry real behavioral weight: it discloses that from/to strings are fuzzy-matched against Google Places near the trip's destination, that the shared 'Transit' section is auto-created if missing, and that the response confirms the resolved route and departure time. Gaps remain around failure modes (what happens when a place cannot be resolved) and whether duplicates are created.

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 zero filler, front-loaded with the action and scope, then resolution behavior, then return value. The final sentence earns its place because no output schema exists to communicate what comes back.

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 an 11-parameter mutation tool with no annotations and no output schema, the description covers what is created, where it lands, how places are resolved, and what is returned. It stops short of failure/permission behavior and duplicate handling, which an agent would still want before invoking a write.

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

Parameters4/5

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

Schema coverage is already 100%, so baseline is 3, but the description adds genuine meaning beyond the schema by explaining that 'from'/'to' are strings resolved via Google Places near the trip's destination rather than exact terminal IDs. It adds nothing about carrier or confirmation_number semantics, which the schema already covers.

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 ('Adds a ferry, bus, or train leg to a Wanderlog trip') and names the exact transit modes handled. It does not distinguish itself from the sibling wanderlog_add_car_rental, which is another transport-block creation tool, so an agent must infer 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 Guidelines3/5

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

Usage is only implied: an agent can infer this is the tool for creating transit blocks, but there is no explicit when-to-use / when-not-to-use statement, no mention of the car-rental or add_place siblings, and no prerequisite guidance (e.g. trip_key must exist, dates must be set on the trip).

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

wanderlog_annotate_placeUpdate a place with notes, times, or bothA

Updates an existing place in a Wanderlog trip with an inline note, start/end time, or both. Use this to enrich places that were already added — set practical context, scheduled times, or both in one call.

At least one of note, start_time, or end_time must be provided.

The place is resolved by natural-language reference (same syntax as wanderlog_remove_place). If ambiguous, returns a disambiguation list without making changes.

NameRequiredDescriptionDefault
noteNoSet or replace the inline note on this place. Practical context: transit, tips, timing, what to see.
placeYesNatural-language reference to the place. Examples: 'Sensō-ji', 'the hotel', 'Queenstown Gardens on day 2'. Supports ordinals for duplicates: '2nd Starbucks'.
end_timeNoSet or replace the end time (HH:mm format).
trip_keyYesThe trip containing the place.
start_timeNoSet or replace the start time (HH:mm format).

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations present the description carries the full load, and it does disclose meaningful behavior: it is a mutation ('updates', 'set or replace'), and on ambiguity it returns a disambiguation list without making changes — a key safety property an agent needs. It does not mention permission/auth requirements or what happens if no place matches at all.

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 resource, then constraints, then edge-case behavior — a sensible order. The second sentence ('set practical context, scheduled times, or both in one call') largely restates the first and could be trimmed, but nothing is confusing.

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, this covers the essentials: what it changes, the field-combination rule, reference syntax, and the ambiguity return path. Remaining gaps are the not-found case and the relationship to wanderlog_add_note, which are secondary.

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 a constraint the schema does not encode: at least one of note/start_time/end_time must be supplied even though only trip_key and place are required. It also reinforces natural-language place resolution, which is the least obvious parameter behavior.

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 names a specific verb (updates), resource (an existing place in a Wanderlog trip), and the exact fields it can set (inline note, start/end time, or both). 'Use this to enrich places that were already added' implicitly separates it from wanderlog_add_place, so an agent can route correctly 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 clear context (enrich already-added places; set context, times, or both in one call), a hard precondition ('at least one of note, start_time, or end_time must be provided'), and points to wanderlog_remove_place for the place-reference syntax. It stops short of explicit exclusions, notably how it relates to the sibling wanderlog_add_note or where to go when the place doesn't exist yet.

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

wanderlog_create_tripCreate a Wanderlog tripA

Creates a new Wanderlog trip for the given destination and date range. The trip is created empty (no places yet) with one pre-generated day section per day in the range.

After creating a trip, populate each day using ALL of these tools together — places alone make a flat list, but notes and checklists are what make an itinerary actually useful:

  1. wanderlog_add_place — add attractions, restaurants, and activities

  2. wanderlog_add_note — add between places for transit directions, practical tips, time warnings, or local recommendations (e.g. "Walk 10 min south along the river to the next stop" or "Closed Mondays — check hours before visiting")

  3. wanderlog_add_hotel — add accommodation with check-in/check-out dates

  4. wanderlog_add_checklist — add a packing list to the trip, or per-day task lists (e.g. "Day 1 prep: print tickets, charge camera, pack umbrella")

A good itinerary has notes after most places — think of them as the connective tissue that turns a list of pins on a map into a real travel plan.

Returns the new trip key so you can reference it in subsequent tool calls.

NameRequiredDescriptionDefault
titleNoOptional custom title. If omitted, Wanderlog auto-generates one like 'Trip to Lisbon'.
privacyNoTrip visibility. 'private' is the safe default.private
end_dateYesLast day of the trip, YYYY-MM-DD.
start_dateYesFirst day of the trip, YYYY-MM-DD.
destinationYesCity or region name to plan the trip around (e.g. 'Lisbon', 'Tokyo', 'Banff'). Resolved via Wanderlog's geo autocomplete — the top-ranked result is used.

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the burden and does reasonably well: it discloses that the trip is created empty, that day sections are auto-generated per day in the range, and that the new trip key is returned for subsequent calls. It omits auth/permission requirements, what happens when geo resolution picks a wrong city, and whether creation is idempotent — meaningful gaps for a mutation tool.

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?

The first and last sentences are well front-loaded and earn their place, but the middle is a multi-step itinerary-building tutorial for four other tools rather than guidance about this tool. It is useful behavioral shaping, yet disproportionate to a five-parameter create call and buries the return-value note at the end.

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 annotations and no output schema, the description covers creation semantics, resulting structure, and the return value (trip key), while the schema fully covers parameters. Remaining gaps are authorization and failure/ambiguity handling, which keep 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 destination, dates, title, and privacy are already fully documented including the geo-autocomplete resolution behavior. The description only restates destination and date range and adds nothing about title or privacy, so it meets the baseline without exceeding it.

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 ('Creates a new Wanderlog trip') scoped to destination and date range, and further specifies the resulting state: an empty trip with one pre-generated day section per day. That level of specificity makes it unambiguous against read-oriented siblings like wanderlog_list_trips and wanderlog_get_trip.

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

Usage Guidelines4/5

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

Provides strong downstream guidance about which tools to chain after creation (add_place, add_note, add_hotel, add_checklist) and why notes matter. It does not, however, state preconditions or when-not-to-use (e.g. that an existing trip should be reused rather than a duplicate created), so it stops short of full when/when-not coverage.

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

wanderlog_delete_sectionDelete a custom section from a Wanderlog tripA
DestructiveIdempotent

Deletes a custom section from a Wanderlog trip itinerary. The section and all blocks inside it are permanently removed.

Only custom sections (created via wanderlog_add_section or the Wanderlog UI) can be deleted. Day sections, the default "Places to visit" list, and system sections (hotels, flights, transit) are protected and cannot be removed with this tool.

Returns a confirmation with the deleted section's heading. If the heading matches more than one section, the tool fails without deleting either one.

NameRequiredDescriptionDefault
sectionYesThe section to delete, identified by its heading (e.g. 'Food & Drink'). Use wanderlog_get_trip to see available sections.
trip_keyYesThe trip to delete the section from.

TDQS

A4.7/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 adds substantive context beyond them: the section AND all blocks inside it are permanently removed, which section types are protected, that ambiguous headings cause a failure with nothing deleted, and what the tool returns. These are real operational facts an agent cannot get from the schema or annotations.

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

Conciseness5/5

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

Three tight paragraphs — action, eligibility constraints, behavior/return — front-loaded with the destructive verb. No filler and no restatement 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 destructive two-parameter tool with no output schema, the description covers the action, the constraint set, the failure mode, and the return value. There is no obvious gap an agent would need to guess about before calling.

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 the schema lacks: the 'section' parameter is matched by heading, and a non-unique heading causes a fail-without-delete rather than an arbitrary deletion. That uniqueness rule is genuinely new information about how the argument is resolved.

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 ('Deletes a custom section from a Wanderlog trip itinerary') and immediately scopes it to custom sections only, distinguishing it from the sibling wanderlog_add_section and wanderlog_update_section. An agent can tell 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 Guidelines4/5

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

Explicitly states the when-not: day sections, the default 'Places to visit' list, and system sections are protected. It also names where custom sections come from (wanderlog_add_section). It stops short of routing the agent to a specific alternative for the protected cases (e.g., rename_day or update_section), so it is clear context rather than full when/when-not/alternatives.

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

wanderlog_edit_expenseEdit a budget expense on a Wanderlog tripA

Edits an existing budget expense on a Wanderlog trip. Find the expense by a case-insensitive substring of its description, then change any of: description, amount, currency, category, date.

If none match, an error is returned. If several match, a numbered list is returned and nothing is changed — narrow with a more specific description or a date / amount / currency filter. Only the fields you supply via new_* are modified; all other fields on the expense are preserved.

NameRequiredDescriptionDefault
dateNoOptional exact date filter to disambiguate which expense to edit.
amountNoOptional exact amount filter to disambiguate which expense to edit.
currencyNoOptional ISO 4217 currency filter to disambiguate which expense to edit.
new_dateNoNew date for the expense, YYYY-MM-DD. Updates both the expense date and the budget day it's grouped under (Wanderlog's budget list displays this date). Omit to leave unchanged.
trip_keyYesThe trip whose expense to edit.
new_amountNoNew cost amount (e.g. 50, 12.50). Omit to leave unchanged.
descriptionYesCase-insensitive substring matching the description of the expense to edit.
new_categoryNoNew expense category. Omit to leave unchanged.
new_currencyNoNew ISO 4217 currency code (e.g. 'EUR'). Normalized to uppercase. Omit to leave unchanged.
new_descriptionNoNew description text. Omit to leave unchanged.

TDQS

A4/5.0
Behavior4/5

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

With no annotations at all, the description carries the full behavioral burden and does well: it discloses the ambiguity outcome (numbered list, no mutation), the failure outcome (error when nothing matches), and partial-update semantics ('Only the fields you supply via new_* are modified; all other fields on the expense are preserved'). It stops short of auth/permission requirements, reversibility, and what a successful response contains.

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: identification mechanism first, then the two failure modes, then the partial-update guarantee. No filler, no restating of the tool name, and the most consequential behavior (nothing is changed when ambiguous) is stated plainly.

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 tool with no annotations and no output schema, the description covers the risky parts well: ambiguity handling, no-match errors, and preserved fields. Gaps remain around authorization prerequisites and what a successful edit returns, which matters more here because no output schema exists to document 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 the schema already documents every parameter, including that date/amount/currency exist 'to disambiguate which expense to edit' and that new_* fields are omitted to leave values unchanged. The description largely restates that contract in prose rather than adding new meaning (e.g., no guidance on substring collisions, amount tolerance, or currency normalization edge cases beyond what the schema says). 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?

The description opens with a specific verb+resource: 'Edits an existing budget expense on a Wanderlog trip,' and adds the lookup mechanism (case-insensitive substring of description) plus the mutable fields. The word 'existing' and the verb 'Edits' separate it in practice from add_expense/remove_expense, but no sibling is named explicitly, so differentiation is inferred rather than stated.

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 operating guidance: no match returns an error, multiple matches return a numbered list with nothing changed, and the agent should narrow via a more specific description or a date/amount/currency filter. What's missing is routing guidance against the sibling mutation tools (add_expense, remove_expense, list_expenses) — it never says when to prefer this over those.

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

wanderlog_edit_journalEdit a journal stop or summary in a Wanderlog tripA

Edits a Wanderlog trip's journal. Usually you edit a single stop: find it by a case-insensitive substring of its title, then change its title, text, date, and/or time. You can also set the trip-level journal summary via new_summary (which doesn't require a stop title).

If none match, an error is returned. If several stops match, a numbered list is returned and nothing is changed. Only the fields you supply are modified; the stop's place, media, and unknown fields are preserved.

NameRequiredDescriptionDefault
dateNoOptional exact date filter to disambiguate which stop to edit.
titleNoCase-insensitive substring matching the title of the stop to edit. Required unless you are only setting new_summary.
new_dateNoNew date for the stop, YYYY-MM-DD. Omit to leave unchanged.
new_textNoNew journal entry text for the stop (replaces the existing text). Omit to leave unchanged.
new_timeNoNew time for the stop, HH:mm. Omit to leave unchanged.
trip_keyYesThe trip whose journal to edit.
new_titleNoNew stop title. Omit to leave unchanged.
new_summaryNoNew trip-level journal summary text (the overview shown above the stops). Edits the journal as a whole, not a stop — does not require a title.

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations present the description carries the full burden, and it does real work: it discloses that a no-match produces an error, an ambiguous match returns a numbered list and changes nothing, and that only supplied fields are modified while place, media, and unknown fields are preserved. It omits what a successful response looks like and any auth or permission expectations.

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, then the stop workflow, then the failure modes, in three tight paragraphs with no filler. The only redundancy is repeating the case-insensitive substring rule that already appears in the title parameter's schema description.

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 an eight-parameter mutation tool with no annotations and no output schema, the description covers the hard parts an agent needs: selector resolution, ambiguity handling, partial-update semantics, and the summary special case. The remaining gap is return-value shape on success, which matters somewhat without 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 coverage is 100%, so the baseline is 3 and the schema already explains each field including the optional/omit semantics. The description adds a little beyond it — the relationship between title and new_summary (summary mode needs no title) and the substring matching rule — but it largely restates matching behavior the schema itself documents, so the added meaning is modest.

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 ("Edits a Wanderlog trip's journal") and immediately splits the operation into its two distinct modes: editing a single stop selected by title, or setting the trip-level summary via new_summary. That framing cleanly separates it from siblings such as wanderlog_add_journal, wanderlog_remove_journal, and wanderlog_list_journal.

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 usage context: locate the stop by a case-insensitive substring of its title, optionally narrow with date, and use new_summary when you want the trip overview rather than a stop. It does not name an alternative tool for the cases where this one is wrong (e.g. adding vs editing a journal entry), so it falls short of full when/when-not routing.

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

wanderlog_edit_noteEdit note content in a Wanderlog tripA

Edits note content in a Wanderlog trip by finding and replacing a substring.

Searches across freestanding notes, place annotations, and checklist titles and items. The match is case-insensitive. If exactly one match is found, the replacement is made in place. If no matches are found, an error is returned. If multiple matches are found, a numbered list of previews is returned — call again with a more specific substring.

Use the optional 'day' filter to limit the search to a specific day.

NameRequiredDescriptionDefault
dayNoOptional day to search. Accepts 'day 2', 'May 4', or ISO '2026-05-04'. Omit to search the entire trip.
new_textYesReplacement text.
old_textYesSubstring to find and replace (case-insensitive).
trip_keyYesThe trip to edit.

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations supplied, the description carries the full behavioral burden and does substantial work: case-insensitive matching, three distinct outcome branches (single match replaces in place, zero matches errors, multiple matches returns numbered previews requiring a retry). It omits whether the edit is reversible/undoable and whether all in-note occurrences are replaced when only one location matches, which are meaningful gaps for a mutation tool.

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

Conciseness5/5

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

Front-loads what the tool does and where it searches, then walks through match outcomes in the order an agent would encounter them. No filler sentences, and the retry instruction is placed exactly where the multi-match behavior is described.

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 four-parameter mutation tool with no annotations and no output schema, the description covers search scope, matching semantics, and all outcome paths well enough to invoke correctly. What is missing is safety context (reversibility, permissions, whether the returned previews are actionable before confirmation) and any hint of the success payload shape.

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 four parameters are already documented, including the day format variants and case-insensitivity of old_text. The description only reinforces the day filter's purpose and the substring nature of old_text, adding little beyond structured data.

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 ('Edits note content in a Wanderlog trip by finding and replacing a substring') and immediately delimits scope to freestanding notes, place annotations, and checklist titles/items. This clearly separates it from wanderlog_add_note, wanderlog_remove_note, and wanderlog_edit_journal without the agent needing to open 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 concrete usage guidance: use a substring find/replace, narrow with the optional 'day' filter, and call again with a more specific substring when multiple matches come back. It does not explicitly say when to prefer a different sibling (e.g., remove_note or add_note) or whether whole-note rewriting is possible, but the operating context is clear.

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

wanderlog_get_guideRead a Wanderlog travel guideA

Fetches the full content of a public Wanderlog guide — sections, places, and notes — and renders it as readable text. Pass the guide_key from a wanderlog_search_guides response.

For your own trips, use wanderlog_get_trip instead.

NameRequiredDescriptionDefault
dayNoOptional day filter — pass a day heading or date to scope the output to one day.
guide_keyYesGuide's viewKey (the 'guide_key' returned by wanderlog_search_guides, e.g. 'hejurejdks').
response_formatNoOutput verbosity. 'concise' is a readable summary; 'detailed' adds addresses, phone numbers, ratings.concise

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. It discloses that the guide is public and that the tool renders full content as readable text, which establishes a safe read operation, but it does not mention error behavior for missing or private guides, authentication requirements, or rate limits.

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

Conciseness5/5

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

The description is two tight sentences that front-load what the tool does, then supply the parameter source and the sibling alternative. Every sentence earns its place, 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?

For a read-only guide-fetching tool with no output schema, the description gives a clear high-level account of what is returned: sections, places, notes, and readable text. It does not explain failure modes for invalid or private guide keys, but the essential information needed to invoke the tool correctly is present.

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, including the day filter and response_format enum, are already documented in the schema. The description mentions passing guide_key from a search response, but that repeats the schema description rather than adding new semantics, 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.

Purpose5/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: fetches the full content of a public Wanderlog guide, including sections, places, and notes, and renders it as readable text. It also clearly distinguishes this from wanderlog_get_trip for the user's own trips, so an agent can tell the tools 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 Guidelines5/5

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

It explicitly states when to use it (reading a public Wanderlog guide, using a guide_key from a wanderlog_search_guides response) and when not to use it (for your own trips, use wanderlog_get_trip instead). This names a concrete alternative and the condition that selects it.

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

wanderlog_get_tripGet a Wanderlog tripA

Returns the itinerary for one Wanderlog trip: the hotels list, the "places to visit" list, and each day's scheduled places.

Use concise format for summarizing or answering questions about a trip in natural language. Use detailed format when the user asks for specific info like addresses, phone numbers, hotel check-in/out dates, the numeric trip id, or the trip's forwarding email address.

If you don't know the trip_key, call wanderlog_list_trips first to find it.

NameRequiredDescriptionDefault
dayNoOptional filter to a single day. Accepts 'day 2', 'May 4', or ISO '2026-05-04'. Omit to return the whole trip.
trip_keyYesThe unique trip key from wanderlog_list_trips (e.g. 'vzyrsyhgxvonvxcz'). Required.
response_formatNoOutput verbosity. 'concise' (default) is a readable summary grouped by day; 'detailed' adds addresses, phone numbers, ratings, and check-in dates.concise

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations supplied, the description carries the full burden and does most of it: it discloses that this is a read operation, that output verbosity is caller-controlled, and that the day parameter narrows scope. It does not mention failure behavior for an unrecognized day string or whether any trip may be inaccessible to the caller, which keeps it short of full transparency.

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 return contents are front-loaded, followed by format guidance and then the prerequisite call, which is a sensible order. The third paragraph slightly repeats the format distinction already implied and adds a sentence an agent may not need on every invocation, but there is no filler prose.

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 no annotations, the description must explain what comes back — and it does, listing the three sections and distinguishing concise vs detailed payloads. It stops short of covering empty-trip behavior or invalid day handling, a minor gap for a low-risk read 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 all three parameters are already documented, making 3 the baseline. The description does add some meaning the enum text lacks — detailed format also surfaces the numeric trip id and the forwarding email — but it does not explain the day-filter syntax beyond what the schema already states, so the marginal gain is modest.

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 and resource ("Returns the itinerary for one Wanderlog trip") and enumerates the payload contents: hotels list, places-to-visit list, and each day's scheduled places. That specificity immediately separates it from wanderlog_list_trips, which only enumerates trips.

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 routing: use concise format for summarization/Q&A, detailed format when addresses, phone numbers, check-in/out dates, numeric trip id, or forwarding email are needed. It also names the prerequisite step ("If you don't know the trip_key, call wanderlog_list_trips first"), so the agent never has to guess the alternative.

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

wanderlog_get_trip_forwarding_emailGet a trip's email-import addressA

Returns the email address you can forward reservation emails to for automatic import into this trip.

Wanderlog parses forwarded flight, hotel, and rental car confirmations (from Booking.com, Airbnb, airlines, etc.) and attaches them to the trip, deduplicating against existing reservations. See: https://help.wanderlog.com/hc/en-us/articles/4625693334811

Use this when a user wants to set up automated import for a trip, for example, configuring a mail filter, an integration or copy pasting the address into a booking confirmation forward.

NameRequiredDescriptionDefault
trip_keyYesThe trip key from wanderlog_list_trips.

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations supplied, the description carries the load and does reasonably well: it explains what happens downstream (Wanderlog parses flight/hotel/car confirmations from Booking.com, Airbnb, airlines), that they are attached to the trip, and that they are deduplicated against existing reservations. It omits whether the address is permanent or per-trip-stable, and whether any authorization level is needed to obtain it.

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 answer is front-loaded in the first sentence, followed by behavior, a help link, and usage. The final sentence's list ('configuring a mail filter, an integration or copy pasting the address...') is slightly wordy but each item adds a concrete use case.

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 no output schema and no annotations, the description covers what is returned, how the imported data behaves, and when to call it. Minor gaps remain about the address's persistence and any restrictions on what email types are accepted beyond the examples given.

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 single parameter's schema description already points to wanderlog_list_trips as the source of the key. The description adds no further meaning about trip_key, 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 opens with a specific verb and resource: 'Returns the email address you can forward reservation emails to for automatic import into this trip.' No sibling tool offers this capability, and the scope (per-trip import address) is unmistakable.

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 explicitly when to use it – 'when a user wants to set up automated import for a trip' – and gives concrete examples (mail filter, integration, pasting into a forward). No when-not-to-use or alternative-tool guidance is given, but no plausible alternative exists among the siblings.

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

wanderlog_get_trip_urlGet the wanderlog.com URL for a tripA

Returns the wanderlog.com URL for a trip so the user can open it in a browser.

Three link variants are available via the mode parameter:

  • edit (default) — full-permission link for the owner

  • view — read-only link that's safe to share with anyone

  • suggest — suggest-mode link where collaborators can propose changes

If you don't know which mode the user wants, default to edit.

NameRequiredDescriptionDefault
modeNoWhich link variant to return. 'edit' (default) is the primary link with full permissions. 'view' is a read-only share link. 'suggest' is a suggest-mode share link where collaborators can propose changes.edit
trip_keyYesThe trip key from wanderlog_list_trips.

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does disclose security-relevant behavior — 'view' is read-only and 'safe to share with anyone', while 'edit' is full-permission — which is genuinely useful. It omits auth requirements, link permanence, and whether links can be revoked, leaving real gaps for a no-annotation tool.

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 purpose, then a compact, readable bulleted breakdown of the three modes and a fallback rule. Slightly redundant with the schema enum descriptions, but the structure is efficient.

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 lookup tool, the description covers purpose, every mode's meaning, and a default policy. Remaining unknowns — link lifetime or revocation and auth context — are minor for this operation.

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 mode enum and its values are already documented in the input schema, and the description largely repeats that. It adds only the tie-breaking default hint, which is already present as the schema default.

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: 'Returns the wanderlog.com URL for a trip', plus the intent ('so the user can open it in a browser'). That clearly separates it from data-returning siblings such as wanderlog_get_trip.

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 explicit direction on choosing a mode, including a default instruction ('If you don't know which mode the user wants, default to edit'). It does not, however, say when to call this versus a sibling like wanderlog_get_trip, so the guidance is contextual rather than comparative.

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

wanderlog_list_expensesList budget expenses on a Wanderlog tripA

Lists budget expenses on a Wanderlog trip, newest entries last.

Each line shows the amount, currency, description, category, and date. Use the optional description / date / amount / currency filters to narrow the list — handy for finding the exact expense to pass to wanderlog_remove_expense or wanderlog_edit_expense when several are similar.

Returns a friendly message when the trip has no matching expenses.

NameRequiredDescriptionDefault
dateNoOptional exact date filter, YYYY-MM-DD.
amountNoOptional exact amount filter (e.g. 50, 12.50).
currencyNoOptional ISO 4217 currency filter (e.g. 'USD'). Case-insensitive.
trip_keyYesThe trip whose expenses to list.
descriptionNoOptional case-insensitive substring to filter by expense description.

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are supplied, so the description carries the full burden and does well: it discloses ordering ('newest entries last'), the fields returned per line, and empty-state behavior ('friendly message when the trip has no matching expenses'). It does not mention read-only semantics, permissions, or behavior with very large expense lists, leaving minor gaps.

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, each doing work: purpose, return shape, and filter/routing advice. The ordering fact is front-loaded and there is 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?

With no output schema, the description properly covers return content, ordering, and the empty case, and all five parameters are documented in the schema. Minor omissions remain around whether trip_key is an ID or slug and any pagination behavior for long expense lists.

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 case-insensitivity for description/currency, the YYYY-MM-DD pattern, and the ISO 4217 constraint. The description only restates which filters exist, adding no syntax or matching semantics 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 ('Lists budget expenses on a Wanderlog trip') with explicit scope. The sibling set includes add/remove/edit expense tools, and the description makes clear this one only reads.

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 filters to find the exact expense to hand to wanderlog_remove_expense or wanderlog_edit_expense when several are similar. That is a concrete when-to-use next step. It lacks an exclusion note (e.g., when to prefer wanderlog_get_trip) but the context is clear.

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

wanderlog_list_journalList journal stops in a Wanderlog tripA

Lists the stops in a Wanderlog trip's journal (travelogue), in order.

Each line shows the stop's title, date/time, and a preview of its text entry. Use the optional title / date filters to narrow the list — handy for finding the exact stop to pass to wanderlog_edit_journal or wanderlog_remove_journal. Also reports the journal summary when set.

Returns a friendly message when the trip has no journal stops.

NameRequiredDescriptionDefault
dateNoOptional exact date filter, YYYY-MM-DD.
titleNoOptional case-insensitive substring to filter stops by title.
trip_keyYesThe trip whose journal to list.

TDQS

A4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full disclosure burden and does reasonably well: it specifies the per-line output shape (title, date/time, text preview), notes that the journal summary is reported when set, and covers the empty-state behavior ('Returns a friendly message when the trip has no journal stops'). It never explicitly states the operation is non-mutating or mentions pagination/limits, which is the main residual gap.

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 core capability is front-loaded in the first sentence, followed by the output shape, then filter usage, then the empty-state note — a clean information hierarchy. Every sentence earns its place, and no sentence repeats the tool title or name.

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 and no annotations, so the description must convey the return shape and safety profile itself; it does cover the return shape well and implies a read-only listing. For a simple 3-parameter read tool this is close to sufficient, with only the absence of an explicit read-only/non-mutating statement keeping it below full marks.

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 the date pattern, the case-insensitive substring semantics for title, and the required trip_key — so the description is not needed to explain any parameter. Its only added meaning is framing title/date as filters that narrow the listing, which is a modest restatement rather than new semantics. Baseline 3 is appropriate here.

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 and resource — 'Lists the stops in a Wanderlog trip's journal (travelogue), in order' — so the agent knows exactly what is returned and that ordering is preserved. It further disambiguates by naming the mutation siblings wanderlog_edit_journal and wanderlog_remove_journal as the downstream consumers of this read, though it never states the inverse contrast (i.e., what to call instead of this tool).

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

Usage Guidelines4/5

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

It gives clear context for the filters — 'Use the optional title / date filters to narrow the list' — and a concrete workflow reason to call it: 'handy for finding the exact stop to pass to wanderlog_edit_journal or wanderlog_remove_journal.' What's missing is any explicit when-not guidance (e.g., that trip-level details belong in wanderlog_get_trip rather than the journal listing), so it stops short of a full routing rule.

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

wanderlog_list_tripsList Wanderlog tripsA

Lists all Wanderlog trips in the authenticated user's account (owned and shared-with-you).

Returns a compact list with title, dates, place count, and trip_key. Use this tool first when the user mentions a trip by name but you don't have its trip_key yet — the key is required by wanderlog_get_trip and wanderlog_search_places.

Each line includes a [key: ...] suffix — extract that key for downstream tool calls. For the numeric trip id and the import/forwarding email address, request response_format='detailed'. The forwarding email can be used to import reservation confirmations into the trip; see also wanderlog_get_trip_forwarding_email.

NameRequiredDescriptionDefault
response_formatNoOutput verbosity. 'concise' (default) gives a one-line summary per trip; 'detailed' includes key, numeric id, owner, last-edited time, and the trip's forwarding email address.concise

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations, the description carries the burden and does well: it discloses the fields returned (title, dates, place count, trip_key), the line format with the [key: ...] suffix, and the extraction instruction an agent needs to chain calls. It leaves out whether results are paginated or whether very large accounts are truncated, which is the main remaining gap for a listing tool.

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 scope, then the return shape, then the selection guidance — a sensible order with no filler sentences. The final forwarding-email sentence is slightly tangential for a list tool but does route the agent to the right sibling, so it earns most of its place.

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?

The tool has a single optional enum parameter, no annotations, and no output schema, so the description must explain the return shape — and it does for both concise and detailed modes. Combined with the key-extraction instruction and sibling cross-references, an agent has everything needed to call it and use the result.

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 the intent behind the enum — concise versus detailed content differences and specifically what you gain from 'detailed' (numeric trip id, forwarding email) and why you'd want the email (importing reservation confirmations). That is meaning beyond the schema's field list, though the field list itself is largely restated.

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 all trips) plus the scope that matters operationally: owned plus shared-with-you. It also implicitly separates itself from wanderlog_get_trip by noting that this returns the trip_key while get_trip requires it.

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 ('use this tool first when the user mentions a trip by name but you don't have its trip_key yet') and names the downstream tools that depend on the key (wanderlog_get_trip, wanderlog_search_places). It also states when to switch to response_format='detailed' and points to wanderlog_get_trip_forwarding_email for the email use case.

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

wanderlog_move_blockMove a block within its itinerary sectionA

Moves an existing place or reservation block to another position within its current Wanderlog section without deleting or recreating it. The original block ID, notes, images, times, booking details, and other metadata are preserved.

Select the block using the same natural-language references as wanderlog_remove_place, including day filters and ordinal prefixes. Choose exactly one destination:

  • position: a 1-based position in the section's complete displayed block order

  • before: another place or reservation block in the same section

  • after: another place or reservation block in the same section

Positions count all displayed blocks, including notes and checklists — but notes and checklists cannot be used as before/after targets, which resolve only to place or reservation blocks. Cross-section moves are not supported; do not emulate them by removing and re-adding the block, which discards its ID, notes, times, and booking details. If a reference is ambiguous, nothing is changed and the tool returns candidates for a more specific retry.

NameRequiredDescriptionDefault
afterNoMove immediately after this naturally referenced place or reservation block in the same section. Notes and checklists are not valid targets.
blockYesNatural-language reference to the place or reservation block to move. Uses the same names, role keywords, day filters, and ordinal prefixes as wanderlog_remove_place.
beforeNoMove immediately before this naturally referenced place or reservation block in the same section. Notes and checklists are not valid targets.
positionNoMove to this 1-based position in the section's complete displayed block order, including notes and checklists.
trip_keyYesThe trip containing the block.

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations, the description carries the disclosure burden and does well: it promises preservation of ID, notes, images, times and booking details, and specifies that an ambiguous reference changes nothing and returns candidates. It does not state permission/auth requirements or what a successful response contains, leaving a modest gap for a mutation tool.

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

Conciseness5/5

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

Front-loaded with the effect and the preservation guarantee, then a compact bullet block for the three destination modes, then the failure behavior. No sentence is redundant and the structure mirrors how an agent would reason about the call.

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 annotations and no output schema, the description covers effect, constraints, aliasing to a sibling, and error/ambiguity behavior. Only the success response shape and any permission prerequisites are 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; the description adds genuinely new meaning by declaring the three destination options mutually exclusive (the schema has no oneOf) and by clarifying that positional counting includes notes/checklists while before/after targets exclude them.

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 (moves an existing place or reservation block) plus the precise scope (another position within its current section) and the key non-behavior (does not delete or recreate). This clearly separates it from wanderlog_add_place and wanderlog_remove_place.

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 enumerates the three mutually exclusive destination modes, states that exactly one must be chosen, rules out cross-section moves, and warns against the tempting remove-and-re-add workaround. It also points to wanderlog_remove_place as the shared reference syntax, giving an agent everything needed to pick this tool and call it correctly.

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

wanderlog_remove_expenseRemove a budget expense from a Wanderlog tripA

Removes a budget expense from a Wanderlog trip by matching a substring of its description.

The match is case-insensitive. If exactly one expense matches, it is deleted. If none match, an error is returned. If several match, a numbered list is returned and nothing is deleted — re-call with a more specific description or add a date / amount / currency filter to pick one.

NameRequiredDescriptionDefault
dateNoOptional exact date filter to disambiguate duplicates, YYYY-MM-DD.
amountNoOptional exact amount filter to disambiguate duplicates.
currencyNoOptional ISO 4217 currency filter to disambiguate duplicates. Case-insensitive.
trip_keyYesThe trip to remove the expense from.
descriptionYesCase-insensitive substring matching the expense description to remove.

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses case-insensitive matching, an error on zero matches, and that a multi-match returns a numbered list with nothing deleted. It omits permission requirements and whether deletion is reversible or undoable, which is a meaningful gap for a destructive operation.

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 the action and matching rule, then the three outcome branches in the order an agent will encounter them. No redundant restatement of the tool name or 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 destructive mutation with no output schema, the description explains return behavior for each branch (deleted, error, numbered list), which is the key missing piece. It lacks authorization or reversibility notes, the one thing an agent would still want before calling.

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 parameter is already self-documenting. The description restates the substring semantics and explains the disambiguation purpose of date/amount/currency filters, which adds only marginal meaning 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 and resource (removes a budget expense from a Wanderlog trip) plus the matching mechanism (substring of the description), which separates it from sibling mutations like wanderlog_remove_place and wanderlog_edit_expense without the agent needing to open another 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 description gives a concrete retry protocol: if several expenses match, re-call with a more specific description or add a date/amount/currency filter. It doesn't explicitly contrast with wanderlog_edit_expense or wanderlog_list_expenses as a pre-check 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.

wanderlog_remove_journalRemove a journal stop from a Wanderlog tripA

Removes a stop from a Wanderlog trip's journal by matching a substring of its title.

The match is case-insensitive. If exactly one stop matches, it is deleted. If none match, an error is returned. If several match, a numbered list is returned and nothing is deleted — re-call with a more specific title or add a date filter to pick one.

NameRequiredDescriptionDefault
dateNoOptional exact date filter to disambiguate duplicate titles, YYYY-MM-DD.
titleYesCase-insensitive substring matching the title of the journal stop to remove.
trip_keyYesThe trip to remove the journal stop from.

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does so unusually well: it discloses case-insensitive substring matching, the conditional-delete rule, the no-op guarantee on ambiguity, and the error path. It omits whether a deletion is reversible and what permissions are required, which are the remaining gaps for a destructive mutation.

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 one short paragraph covering each outcome path. No redundant restatement of the title or schema fields; every sentence adds a branch condition the agent must handle.

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, and the description covers the ambiguous and error return shapes but not the success response. For a three-parameter removal tool that is nearly complete; only the successful-deletion return value and irreversibility are 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 real meaning beyond the schema by explaining that 'title' is a substring matcher whose ambiguity is resolved interactively and that 'date' exists to disambiguate duplicate titles. This tells the agent how the parameters behave together, not just their types.

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 ('Removes a stop from a Wanderlog trip's journal') plus the matching mechanism. It is clearly distinguishable from the sibling tools wanderlog_add_journal and wanderlog_edit_journal 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?

Explains the operational conditions well: exactly one match deletes, no match errors, multiple matches returns a list and deletes nothing, with explicit remediation ('re-call with a more specific title or add a date filter'). It doesn't name sibling alternatives such as edit_journal for modifying rather than removing, but the when-to-use context is clear.

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

wanderlog_remove_noteRemove a note from a Wanderlog tripA

Removes a note block from a Wanderlog trip by matching a substring of its text content.

The match is case-insensitive. If exactly one note matches, it is deleted. If no notes match, an error is returned. If multiple notes match, a list of previews is returned — supply a more specific substring to narrow to one.

Use the optional 'day' filter to limit the search to a specific day.

NameRequiredDescriptionDefault
dayNoOptional day to search. Accepts 'day 2', 'May 4', or ISO '2026-05-04'. Omit to search the entire trip.
textYesSubstring to match against note content (case-insensitive).
trip_keyYesThe trip to remove from.

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations at all, the description carries the full burden and does much of it well: it discloses case-insensitive matching, that a single match causes deletion, that zero matches yields an error, and that multiple matches return a preview list rather than deleting. It omits reversibility (is the deletion undoable?) and any permission or auth expectations for a destructive operation, which keeps it from 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?

The opening sentence front-loads verb, resource and matching mechanism, then the branching outcomes are laid out in a compact decision sequence. The final sentence on the 'day' filter is slightly redundant with the schema description, but nothing is wasted 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 destructive, three-parameter tool with no annotations and no output schema, the definition covers the important edge cases (no match, ambiguous matches, disambiguation strategy) that an agent needs before invoking it. The remaining gaps are the consequences of deletion — reversibility, confirmation, and any post-delete return shape — which matter for a mutation tool with no annotation safety net.

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, including the day format variants and the case-insensitive substring semantics. The description restates the text-matching and day-scoping behaviour and only marginally adds value by framing 'day' as a narrowing filter rather than introducing new syntax or constraints.

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 (remove) and resource (a note block within a Wanderlog trip) and goes further by stating the selection mechanism — substring matching on note text. That verb+resource+mechanism combination makes it clearly distinguishable from wanderlog_edit_note and wanderlog_remove_place 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?

It gives actionable usage guidance for the tricky case: if multiple notes match, you get previews back and should retry with a more specific substring, and the optional 'day' filter narrows the search scope. What it doesn't do is explicitly route the agent between this tool and its near neighbours (edit_note, remove_place, delete_section), so it stops short of full sibling differentiation.

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

wanderlog_remove_placeRemove a place from a Wanderlog tripA

Removes a place (or flight, train, hotel — any block) from a Wanderlog trip based on a natural-language reference.

Supported reference forms:

  • Exact or partial name: "Queenstown Gardens", "Gardens"

  • Role keywords: "the hotel", "the flight", "the train"

  • Day filter: "Queenstown Gardens on May 4" or "... on day 3"

  • Ordinal prefix (for duplicates): "1st Queenstown Gardens", "second X", "last X"

  • Combined: "2nd Queenstown Gardens on May 4"

If the reference is ambiguous (multiple places match), the tool returns a numbered list of candidates and does NOT make any change. Re-call with an ordinal prefix ("1st X", "2nd X") or a more specific filter to pick the one you want.

NameRequiredDescriptionDefault
trip_keyYesThe trip to remove from.
place_refYesNatural-language reference to the place you want to remove. Examples: 'Queenstown Gardens', 'the hotel', 'the sushi place on day 3'. Supports ordinal prefixes for duplicates: '1st Queenstown Gardens', 'second Queenstown Gardens', 'last Queenstown Gardens'. Supports day filters via ' on ': 'Queenstown Gardens on May 4'. Ordinals and day filters can be combined: '2nd Queenstown Gardens on May 4'.

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the full burden, and it does disclose the highest-value non-obvious behavior: ambiguous references return a numbered candidate list and make no change. It omits reversibility, permission requirements, and confirmation behavior, which are gaps for a destructive operation.

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 one-line purpose, followed by a scannable bulleted list of reference forms and a closing note on ambiguity. Slight redundancy with the schema's place_ref description mildly lowers it from 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 two-parameter destructive tool with no annotations and no output schema, it covers reference syntax and the ambiguity fallback well. Missing are the consequences of removal (e.g. whether other schedule blocks shift) and permissions, which would round it out.

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 place_ref schema description already enumerates the same reference forms, so the description largely restates structured data. It does reinforce the semantics of natural-language resolution, but adds little operational 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?

States a specific verb ('Removes') and a precisely scoped resource ('a place (or flight, train, hotel — any block) from a Wanderlog trip'), which also implicitly separates it from siblings like wanderlog_remove_expense, wanderlog_remove_note, and wanderlog_move_block.

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 guidance on how to form references and, crucially, what to do when the reference is ambiguous (re-call with an ordinal or more specific filter). It does not explicitly contrast with sibling removal tools (e.g. remove_expense for expenses), so 4 rather than 5.

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

wanderlog_rename_dayRename a day heading in a Wanderlog tripA

Renames the heading/subheading of a specific day in a Wanderlog trip.

Day headings appear in the itinerary as the title for each day section (e.g. "Barcelona", "Ronda + Malaga"). Use this tool to replace them with more descriptive titles.

Pass an empty string for "heading" to reset the day back to Wanderlog's auto-generated heading.

NameRequiredDescriptionDefault
dayYesWhich day to rename. Accepts "day 3", "May 4", or "2026-05-04".
headingYesNew heading for the day. Use "" (empty string) to clear the heading back to the auto-generated default.
trip_keyYesThe trip containing the day to rename.

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are supplied, so the description carries the full disclosure burden. It does valuable work by explaining that an empty 'heading' resets to Wanderlog's auto-generated title, but it omits permissions required, what happens if the day doesn't exist or is ambiguous, and whether the original heading is recoverable.

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 paragraphs, front-loaded with the core action and followed by context and the edge-case behavior. The reset instruction partially duplicates the schema's own 'heading' description, which is minor redundancy rather than waste.

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 simple three-parameter mutation with a fully documented schema and no output schema, the description covers purpose, examples, and the reset edge case. The residual gap is the ambiguous 'heading/subheading' phrasing, which never clarifies whether one call sets both fields or only the heading.

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 three parameters including accepted day formats and the empty-string reset. The description reinforces the empty-string semantics and adds illustrative heading examples, but contributes no meaning beyond the schema, making the baseline 3 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 and resource ('Renames the heading/subheading of a specific day') and grounds it with a concrete example of what day headings look like in the itinerary. It does not explicitly distinguish itself from sibling tools like wanderlog_update_section or wanderlog_delete_section, which also touch itinerary structure, so it falls 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?

The sentence 'Use this tool to replace them with more descriptive titles' implies the intended use case, and the empty-string behavior gives a second usage mode (resetting). There is no explicit when-not guidance or named alternative for editing other itinerary elements, leaving routing to the agent's inference.

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

wanderlog_search_guidesSearch Wanderlog travel guidesA

Lists user-written Wanderlog travel guides for a destination — long-form recommendations and itineraries other travellers have published. Use this when the user asks for inspiration, an itinerary they can copy, or "what guides exist for X".

Specify exactly one of destination or geo_id. For free-text destinations the highest-popularity match is picked; up to 2 candidates appear in 'alternative_geos' as a soft hint. When the destination has no curated guides yet, the response carries 'alternative_geos_with_guides' with the top 5 nearby destinations that do.

Pass the returned guide_key to wanderlog_get_guide to read the full content of one guide.

NameRequiredDescriptionDefault
geo_idNoExplicit Wanderlog geo id (from a prior response's 'geo' or 'alternative_geos').
destinationNoFree-text destination (e.g. 'Vietnam', 'Kyoto'). Resolved via geoAutocomplete; multi-match auto-picks the highest-popularity geo and surfaces up to 2 candidates in 'alternative_geos'.
response_formatNoOutput verbosity. 'concise' (default) returns guide_key, title, author, place_count, view_count. 'detailed' adds blurb, like_count, edited_at, distinction, profile_picture_url, header_image_url.concise

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations supplied, the description carries the whole burden and does substantial work: it discloses the free-text resolution policy (highest-popularity match wins), the soft-hint escape hatch via 'alternative_geos' (up to 2), and the empty-result fallback that returns the top 5 nearby destinations with guides. That is exactly the kind of surprising behavior an agent needs warning about. It stops short of stating a result limit or pagination for the guide list itself, so it is not fully complete.

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 purpose, then inputs, then the next-step handoff — a sensible order with no filler sentences. It loses a little economy by restating the geoAutocomplete and alternative_geos mechanics that the schema parameter descriptions already spell out verbatim.

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, so the description must name the response surface, and it does: guide_key, alternative_geos, and alternative_geos_with_guides, plus what response_format changes in the payload indirectly through the schema. For a three-parameter read tool this covers what an agent needs to call it and interpret the result.

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 schema already documents geo_id, destination, and response_format in detail, and paragraph two largely repeats the resolution and alternative_geos behavior already present in the destination parameter. The genuinely additive piece is the mutual-exclusivity constraint ('exactly one of destination or geo_id'), which the schema does not encode via oneOf, plus the downstream use of the returned guide_key.

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: 'Lists user-written Wanderlog travel guides for a destination,' and qualifies the content as 'long-form recommendations and itineraries other travellers have published.' It also implicitly separates itself from wanderlog_get_guide by routing full-content reads there, so an agent can pick between the two on purpose alone.

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 reach for it ('user asks for inspiration, an itinerary they can copy, or what guides exist for X') and names the follow-on tool: 'Pass the returned guide_key to wanderlog_get_guide.' It also gives a hard input rule, 'Specify exactly one of destination or geo_id,' which is real selection guidance rather than a restatement of the name.

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

wanderlog_search_hotelsSearch hotels for a destinationA

Search Wanderlog's hotel aggregator (airbnb, expedia, google, kayak) for a destination and date range. Returns ranked offers with per-vendor deal comparison and an available_filters facet block the LLM can use to narrow.

Specify exactly one of destination or geo_id. For free-text destinations the highest-popularity match is picked; up to 2 candidates appear in alternative_geos as a soft hint — re-call with one of those geo_ids if the wrong city was chosen.

Use response_format='detailed' to include amenities, hotel class, and property type on each offer. The default 'concise' format omits those fields to keep token usage low.

NameRequiredDescriptionDefault
limitNoMaximum number of offers in the response.
geo_idNoExplicit Wanderlog geo id (usually obtained from a prior search's 'geo' or 'alternative_geos').
sort_byNoResult ordering.ratings
sourcesNoOverride the default vendor set ['airbnb','expedia','google','kayak'].
check_inYesCheck-in date, YYYY-MM-DD.
currencyNoISO 4217 currency code for prices (e.g. 'INR', 'USD', 'ARS'). Optional. When provided, the shared session's currency preference is updated before searching so all returned prices are in this currency. When omitted, prices are returned in the session's existing currency and no global preference is changed.
amenitiesNoRequired amenities; values come from 'available_filters.amenities' in a prior response.
check_outYesCheck-out date, YYYY-MM-DD. Must be after check_in.
room_countNoNumber of rooms.
adult_countNoNumber of adults.
destinationNoFree-text destination (e.g. 'Pattaya', 'Tokyo Shinjuku'). The highest-popularity matching geo is picked; up to 2 alternatives are returned in 'alternative_geos' for the LLM to re-call with geo_id if needed.
price_rangeNo[min, max] nightly price band in the response currency.
children_agesNoAges of children. Wanderlog prices children by age, not count — pass each child's age (e.g. [4, 9]).
hotel_classesNoStar ratings to keep, e.g. [4, 5].
lodging_typesNoLodging-type filter; values come from 'available_filters.lodging_types' in a prior response.
property_nameNoSubstring match against the property name.
response_formatNoOutput verbosity. 'concise' returns essential fields (name, price, rating, deals, location). 'detailed' also includes amenities, hotel_class, lodging_type, accommodation_type, and thumbnail.concise
min_beds_in_roomNoMinimum beds per room.
min_guest_ratingNoMinimum guest review score (Wanderlog's 0-10 scale).
accommodation_typesNoAccommodation-type filter; values come from 'available_filters.accommodation_types' in a prior response.
hotel_or_vacation_rentalNoRestrict to hotels, vacation rentals, or both.
vacation_rental_amenitiesNoVacation-rental-specific amenities; values come from 'available_filters' in a prior response.

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the burden and does reasonably well: it discloses the return shape (ranked offers, per-vendor deal comparison, available_filters facet block, alternative_geos), the popularity-based geo resolution behavior, and the token tradeoff between concise and detailed formats. It omits auth requirements, rate limits, and whether the search hits live vendor APIs or cache, which keeps it from 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 short paragraphs, each front-loaded with the decision that matters most: what the tool returns, how to disambiguate the destination, then the verbosity knob. No filler sentences and no restatement of the name or 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 22-parameter tool with no output schema and no annotations, the description does the essential work of describing return values, the geo fallback loop, and the verbosity tradeoff. What remains thin is guidance on the large filter surface and any note about pagination or result-count behavior beyond the limit parameter.

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; the description adds genuine value beyond it by spelling out the mutual-exclusivity constraint between destination and geo_id, the semantics of alternative_geos as a soft re-call hint, and the field-level difference between concise and detailed output. It leaves the filter parameters (amenities, lodging_types, price_range, etc.) to the schema, which is acceptable given full coverage.

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 — searching an aggregated hotel inventory across airbnb/expedia/google/kayak for a destination and date range — and distinguishes itself from siblings like wanderlog_search_places and wanderlog_add_hotel by naming the aggregator and vendor set. An agent can tell immediately this is the discovery tool for lodging offers, not trip mutation or generic place search.

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 explicit operational guidance: 'Specify exactly one of destination or geo_id', the fallback workflow of re-calling with a geo_id from alternative_geos when the wrong city is picked, and when to prefer response_format='detailed'. It does not name sibling alternatives (e.g. why not wanderlog_search_places or wanderlog_add_hotel), so it stops short of full when/when-not routing.

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

wanderlog_search_placesSearch places near a Wanderlog tripA

Search for real-world places (restaurants, attractions, hotels, parks, landmarks) near the destination of a Wanderlog trip. Returns candidate results with names and short descriptions.

Use this to resolve user requests like "find a good coffee shop in Queenstown" into specific place candidates. Results are geographically biased toward the trip's location, not global.

If the user wants to add a place to a trip, call this first with concise format to present options, then call again with detailed format to get place_ids for downstream actions.

NameRequiredDescriptionDefault
queryYesWhat to search for. Examples: 'sushi restaurant', 'hiking trail', 'coffee near the hotel'.
trip_keyYesThe trip to scope this search to. Search results are geographically biased toward the trip's destination.
response_formatNoOutput verbosity. 'concise' lists name + description only; 'detailed' adds the Google place_id needed for downstream tool calls.concise

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations supplied, the description carries the full burden and does well: it discloses the return shape (names + short descriptions, or place_ids in detailed mode), the important non-obvious trait that results are geographically biased rather than global, and the rationale for the two-pass pattern. It omits result-count limits, pagination, and what happens when the trip_key is invalid.

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 paragraphs, front-loaded with purpose then usage then workflow; each sentence contributes something. The final paragraph is slightly workflow-oriented rather than descriptive, but it is not padding.

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 3-parameter read tool with no annotations and no output schema, the description covers purpose, result content, geographic bias, and the concise/detailed progression adequately. Remaining gaps (result volume, failure modes, behavior on ambiguous queries) are minor but real.

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%, including explicit docs for trip_key, query, and the response_format enum, so the baseline is 3. The description adds only the practical sequencing of concise vs detailed; it does not extend the meaning of 'query' (e.g., free-text matching rules) or clarify search radius relative to the trip destination beyond what trip_key's schema text already says.

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 for real-world places') and enumerates the entity types covered (restaurants, attractions, hotels, parks, landmarks), plus the geographic scoping to the trip destination. It is not explicitly differentiated from the sibling wanderlog_search_hotels, which overlaps with the 'hotels' category it claims to cover, so an agent could still hesitate between the two.

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 concrete usage trigger ('resolve user requests like find a good coffee shop in Queenstown') and a sequencing rule when the goal is to add a place: concise first, then detailed to obtain place_ids. It does not name alternatives to use instead (e.g., wanderlog_search_hotels or wanderlog_search_guides) or state exclusions, so when-not guidance is missing.

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

wanderlog_update_sectionRename a custom section in a Wanderlog tripA
Idempotent

Renames the heading of a custom section in a Wanderlog trip.

Identify the section by its current heading. Use wanderlog_get_trip to see all sections and their current headings if you are unsure. Pass an empty string for "heading" to clear the section title.

Returns a confirmation showing the old and new heading. The current heading must identify exactly one section and the new heading must not duplicate another undated section.

NameRequiredDescriptionDefault
headingYesNew heading for the section. Pass "" (empty string) to clear it back to an untitled section.
sectionYesThe section to update, identified by its current heading (e.g. 'Food & Drink', 'Places to visit'). Use wanderlog_get_trip to see available sections.
trip_keyYesThe trip containing the section to update.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnly=false, idempotent=true and destructive=false, so the safety profile is covered. The description adds real context beyond that: the operation returns a confirmation with old and new headings, the current heading must resolve to exactly one section, and the new heading must not collide with another undated section. Only the effect of a failed uniqueness match is left unstated.

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 is stated in the first line and the operational hints follow in short, scannable sentences. A small amount of wording duplicates the schema (empty-string clearing is stated twice across description and parameter docs), but 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 correctly discloses that a confirmation with old and new headings is returned, and it surfaces both preconditions an agent needs to succeed. It is nearly complete for this complexity; only the behavior on validation failure and the effect on contained places is unaddressed.

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, including the empty-string clear behavior and the lookup hint for 'section'. The description restates this rather than adding new semantics such as case sensitivity or whether headings are trimmed, 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 precise verb+resource: renaming the heading of a custom section in a Wanderlog trip. The word 'custom' and 'heading' distinguish it from the sibling wanderlog_rename_day and from wanderlog_add_section/delete_section without requiring schema inspection.

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 operating guidance: identify the section by its current heading, consult wanderlog_get_trip when unsure, and pass an empty string to clear the title. It does not explicitly name alternatives such as wanderlog_rename_day or wanderlog_delete_section, so it stops short of a full when/when-not routing statement.

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

wanderlog_update_trip_datesUpdate a Wanderlog trip's date rangeA

Changes the date range of an existing Wanderlog trip. Preserves content on days that remain in the new range (they're kept in place with their blocks intact), adds empty day sections for newly-included days, and removes day sections for days no longer in range.

SAFETY: If the new range would delete days that currently contain places or notes, the tool refuses by default and returns a list of the content that would be lost. Pass force: true to override, or move the content to other days first.

Does not affect the Hotels, Flights, Transit, or Places-to-visit sections — only the per-day sections are added/removed.

NameRequiredDescriptionDefault
forceNoIf true, allows the update even when it would delete days that currently contain places. DEFAULT false — the tool refuses destructive removes with a helpful error listing what would be lost, so the user can move content first.
end_dateYesNew last day of the trip, YYYY-MM-DD. Must be >= start_date.
trip_keyYesThe trip to update.
start_dateYesNew first day of the trip, YYYY-MM-DD.

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the burden and mostly succeeds: it discloses exactly what is preserved (blocks stay in place), what is created (empty day sections), what is destroyed (day sections out of range), and the default refusal-with-loss-list behavior. Gaps remain around the success return value, reversibility of a forced deletion, and any permission 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?

Front-loaded with the primary effect, then a clearly labeled SAFETY block, then a scope-exclusion sentence. Every sentence contributes a distinct fact and the paragraphing makes the destructive path scannable.

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 annotations and no output schema, the description covers the destructive path, the guardrail, content preservation, and section scope well. Minor omissions are what a successful call returns and confirmation that the trip itself must already exist.

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 force parameter is already documented in detail in the schema, including its default and refusal semantics. The description reinforces force's purpose but adds no new syntax or format meaning for start_date, end_date, or trip_key beyond what the schema states.

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: 'Changes the date range of an existing Wanderlog trip.' The following sentences delineate exact scope (per-day sections only), which cleanly separates it from siblings like wanderlog_rename_day, wanderlog_add_section, and wanderlog_update_section.

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 operating conditions: it refuses destructive shrinks by default, lists the lost content, and tells the agent to either pass force:true or move content first. It also states the out-of-scope sections (Hotels, Flights, Transit, Places-to-visit), implicitly routing those needs elsewhere, though it never names a specific sibling tool to use instead.

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. 33 tool updatesv0.3.2
    • First observedwanderlog_add_car_rental
    • First observedwanderlog_add_checklist
    • First observedwanderlog_add_expense
    • First observedwanderlog_add_hotel
    • First observedwanderlog_add_journal
    • First observedwanderlog_add_note
    • First observedwanderlog_add_place
    • First observedwanderlog_add_section
    • First observedwanderlog_add_transit
    • First observedwanderlog_annotate_place
    • First observedwanderlog_create_trip
    • First observedwanderlog_delete_section
    • First observedwanderlog_edit_expense
    • First observedwanderlog_edit_journal
    • First observedwanderlog_edit_note
    • First observedwanderlog_get_guide
    • First observedwanderlog_get_trip
    • First observedwanderlog_get_trip_forwarding_email
    • First observedwanderlog_get_trip_url
    • First observedwanderlog_list_expenses
    • First observedwanderlog_list_journal
    • First observedwanderlog_list_trips
    • First observedwanderlog_move_block
    • First observedwanderlog_remove_expense
    • First observedwanderlog_remove_journal
    • First observedwanderlog_remove_note
    • First observedwanderlog_remove_place
    • First observedwanderlog_rename_day
    • First observedwanderlog_search_guides
    • First observedwanderlog_search_hotels
    • First observedwanderlog_search_places
    • First observedwanderlog_update_section
    • First observedwanderlog_update_trip_dates

TDQS

A3.9/5.0

Scored across 33 tools

Disambiguation4/5

Most tools map cleanly to one resource+action pair, and the descriptions actively disambiguate the tricky cases (add_note vs annotate_place vs the 'note' parameter on add_place; search_hotels vs add_hotel; search_guides vs get_guide). Residual overlap remains around note handling and block manipulation (annotate_place/remove_place/move_block all take the same natural-language reference syntax), but boundaries are stated well enough for reliable selection.

Naming Consistency4/5

Consistent snake_case with a uniform wanderlog_ prefix and verb-first names (list_trips, get_trip, add_place, remove_expense, edit_journal). Minor inconsistency in removal/update verbs: delete_section vs remove_place/remove_note/remove_expense, and update_section/update_trip_dates vs edit_note/edit_expense, plus the outlier annotate_place.

Tool Count3/5

33 tools is heavy and above the comfortable range, though the domain (trips, places, notes, checklists, expenses, journal, sections, transit, lodging, hotels search) genuinely justifies breadth. Some consolidation is plausible — e.g. the many note/place mutation tools and the add_* block-family — making this borderline rather than well-scoped.

Completeness4/5

Strong coverage: full CRUD for expenses and journal stops, add/edit/remove for places and notes, add/update/delete for sections, plus calendar management and read-side search for places, guides, and hotels. Gaps are minor and workaroundable — no hotel edit tool, no way to create flights (only forwarding-email import), no trip title rename or trip delete, and no explicit checklist removal (edit_note can rewrite items).

Maintenance

ActivityActive
ResponsivenessNo recent community issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables Claude or any MCP-compatible agent to view and build Wanderlog trip itineraries through conversation, including places, notes, hotels, transit, car rentals, checklists, expenses, and guides.
    214 npm
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables Claude or any MCP-compatible agent to view and build Wanderlog trip itineraries through conversation, including places, notes, hotels, transit, checklists, expenses, and guides.
    214 npm
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables Claude or any MCP-compatible agent to view and build Wanderlog trip itineraries through conversation, adding and editing places, notes, hotels, transit, checklists, expenses, and trip details.
    214 npm
    MIT