Skip to main content
Glama

Edit a budget expense on a Wanderlog trip

wanderlog_edit_expense

Edit an existing Wanderlog trip budget expense by matching a description substring, then update its amount, currency, category, date, or description while preserving other fields.

Instructions

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.

Input Schema

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.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.3.2

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.