Skip to main content
Glama

taxapp.nz

Add an income record

create_income
Idempotent

Adds one income record: money the organisation received. Commission income names the contractor who earned it (contractor_contact_id) and the business that paid it (contact_id). Rent and tenant reimbursements name the tenant who paid (contact_id) and the tenancy or property; a tenant reimbursement can also name the rental bill it pays back (reimbursed_expense_id, from list_expenses). Match the income type with list_choices, and look every id up first with list_contacts, list_properties and list_expenses; When the person's words match more than one, or none, show them the closest and ask which they mean; never guess an id. Add a missing payer with create_contact. Only for an organisation where this connection may add and change records (list_organisations says which). The answer is the saved record with its organisation's name; tell the person what was added and where. Send only the amount received: taxapp works out GST, KiwiSaver, the ACC levy, income tax and take-home from it.

Input Schema

NameRequiredDescriptionDefault
paidYesThe amount received in NZD, as it arrived (including any GST).
notesNoFree text kept with the record, such as the invoice number ("Invoice number: 1234").
contact_idYesThe contact who paid: the paying business for commission, the tenant for rent.
tenancy_idNoRent and reimbursements: the tenancy the payment is under, from list_properties.
income_dateYesThe New Zealand date the money was received, yyyy-MM-dd.
income_typeYescommission (a contractor's commission income), rental (rent from a tenancy) or tenantReimbursement (a tenant repaying a bill the owner paid).
property_idNoRent and reimbursements: the rental property, from list_properties.
allow_duplicateNoAdding is safe to repeat: the same details sent again return the record already made. Set true only when the person confirms they really want a second, identical record.
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 the tenant is paying back, an expense record from list_expenses (expense type rental, same property).

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?

Goes well beyond the annotations: it discloses the duplicate-handling contract behind allow_duplicate, the permission gate ('only for an organisation where this connection may add and change records'), the tax calculation behaviour (GST, KiwiSaver, ACC, income tax, take-home derived from the received amount), and what to report back to the user. These are behavioural facts 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?

A single dense paragraph that front-loads purpose before branching into type-specific rules and workflow guidance. Almost every sentence carries distinct information, though the id-resolution and reporting instructions could be tightened without loss.

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 11-parameter write tool with no output schema and only basic annotations, the description covers input resolution, permission preconditions, duplicate semantics, the derived tax computation, and the shape of the returned record ('the saved record with its organisation's name'). Nothing needed 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 description coverage is 100%, so the baseline is 3; the description earns above that by adding cross-parameter conditional logic (which ids are relevant per income_type) and the workflow for obtaining each id from its list_* tool. It slightly overlaps the schema's own 'Commission only' / 'Tenant reimbursements only' notes, so not a 5.

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 precise verb+resource ('Adds one income record: money the organisation received') and immediately disambiguates the three income_type variants, each with its own payer/payee semantics. An agent can distinguish this from create_expense, create_contact and update_income without opening a 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?

Explicitly states prerequisites and routing: match income type with list_choices, resolve every id via list_contacts/list_properties/list_expenses, never guess an id, ask the user when ambiguous, add a missing payer via create_contact, and only use where the connection permits adds/changes (list_organisations). It names both the alternatives and the conditions that select them.

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.