Skip to main content
Glama

taxapp.nz

Change an income record

update_income
DestructiveIdempotent

Changes an income record that is already there, by its id from list_income: when the money arrived, how much, who paid it, the contractor, property, tenancy, the bill a reimbursement pays back, or its notes. Its income type never changes. Send only what the person tells you: taxapp works out GST, KiwiSaver, the ACC levy, income tax and take-home from the amount again, exactly as the app does. 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_income shows it.

Input Schema

NameRequiredDescriptionDefault
paidNoThe amount received in NZD, as it arrived (including any GST).
clearNoOptional fields to empty, by parameter name, any of: property_id, tenancy_id, reimbursed_expense_id, notes.
notesNoFree text kept with the record, such as the invoice number ("Invoice number: 1234").
income_idYesThe income record's id, from list_income.
contact_idNoThe contact who paid, from list_contacts.
tenancy_idNoRent and reimbursements: the tenancy, from list_properties.
income_dateNoThe New Zealand date the money was received, yyyy-MM-dd.
property_idNoRent and reimbursements: the rental property, from list_properties.
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.
contractor_contact_idNoCommission only: the contractor who earned it, from list_contacts.
reimbursed_expense_idNoTenant reimbursements only: the rental bill it pays back, from list_expenses.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4/5.0
Behavior4/5

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

Annotations cover the safety profile (readOnlyHint=false, idempotentHint=true, destructiveHint=true), and the description adds genuinely non-obvious behavior: omitted parameters retain current values, tax fields are recomputed from the amount, and a Xero-synced record keeps its amount and date. It never explains the `clear` parameter that justifies destructiveHint=true, so the destructive dimension is left only to the annotation.

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 purpose and field list are front-loaded, but the passage runs long and includes filler that does not inform the call, notably "exactly as the app does" and the redundant re-explanation that omitted parameters keep current values. Readable, but not maximally economical.

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 output schema, it covers the essentials: what can change, what cannot, partial-update behavior, tax recomputation, the organisation guard, and the return value ("the changed record as list_income shows it"). The unexplained `clear` parameter is the main remaining 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 all 11 parameters and the baseline is 3. The description adds framing (partial-update semantics, amount drives recomputed tax) but omits the semantically important `clear` parameter, which is the one case where omitted-vs-cleared diverges.

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?

Names a specific verb and resource ("Changes an income record that is already there") and enumerates the mutable fields, drawing a clear line against create_income and the read-side get_income_record/list_income siblings. It also explicitly carves out the immutable attribute ("Its income type never changes"), which no sibling states.

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 real operational guidance: "Read the record first, and confirm the change with the person before making it," "Send only what the person tells you," and the organisation gate pointing at list_organisations. It lacks an explicit when-not clause or a named alternative tool for the read step, which would have pushed it to a 5.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.