Skip to main content
Glama

taxapp.nz

Change an expense record

update_expense
DestructiveIdempotent

Changes an expense record that is already there, by its id from list_expenses: its date or due date, expense account, supplier, amount, property, the people liable for it, or its notes; its expense type never changes. Send only what the person tells you; taxapp works out every total from it. Give only what changes: every parameter left out keeps the value the record has now. Read the record first, and confirm the change with the person before making it. A record sent to Xero keeps its amount and date. Only for an organisation where this connection may add and change records (list_organisations says which). The answer is the changed record as list_expenses shows it.

Input Schema

NameRequiredDescriptionDefault
clearNoOptional fields to empty, by parameter name, any of: due_date, property_id, liable_contact_ids, notes.
notesNoFree text kept with the record, such as the invoice number ("Invoice number: 1234").
amountNoThe bill's total in NZD.
due_dateNoThe New Zealand date the bill is due, yyyy-MM-dd.
contact_idNoThe supplier or payee, from list_contacts.
expense_idYesThe expense record's id, from list_expenses.
property_idNoA rental cost's property, from list_properties.
expense_dateNoThe New Zealand date of the bill or cost, yyyy-MM-dd.
organisation_idNoThe id of the organisation to use, from list_organisations. Leave it out when the connection covers only one organisation; it is required when it covers more than one.
expense_account_idNoThe expense account to file it under, from list_expense_accounts.
liable_contact_idsNoEvery contractor or property owner liable for the cost, from list_contacts; replaces the list the record has now.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.8/5.0
Behavior5/5

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

Annotations cover the safety profile (destructiveHint=true, idempotentHint=true), and the description adds genuinely new behavior: omission means 'keep current value' for every non-sent parameter (clarifying the destructive clear path), expense type is immutable, and Xero-submitted records pin amount and date. This is the kind of context annotations cannot express.

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

Conciseness4/5

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

Front-loads the purpose and packs a lot of high-value constraints into a compact block. Slightly dense and run-on (the long field enumeration plus several rule clauses), but nearly every sentence carries operational weight.

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

Completeness5/5

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

With no output schema, the description still states the return ('the changed record as list_expenses shows it'), plus preconditions, permission gating, immutability, and Xero interaction. For an 11-parameter mutation tool this is complete.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning beyond the fields: patch semantics ('every parameter left out keeps the value the record has now'), the rule to send only user-supplied values, and the fact that taxapp derives totals. It does not spell out the 'clear' array behavior, which the schema handles.

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 (changes) and resource (an existing expense record), enumerates the mutable fields, and explicitly names the immutable one ('its expense type never changes'), which cleanly separates it from create_expense and update_* siblings.

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

Usage Guidelines5/5

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

Gives an explicit precondition ('Read the record first'), a workflow instruction ('confirm the change with the person before making it'), and a hard scope exclusion ('Only for an organisation where this connection may add and change records'). It also points at list_expenses/list_organisations as the sources of the required ids.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.