Skip to main content
Glama

taxapp.nz

Add a tenancy

create_tenancy
Idempotent

Adds a tenancy: one or more tenants renting a rental property, or a room in it, from a start date at a weekly rent, with its bond. The property comes from list_properties (add a new one with create_property) and each tenant is a contact of type tenant from list_contacts (add a new tenant with create_contact first). A tenancy of the same property, tenants, room and start date is answered instead of added. Dates are New Zealand dates, yyyy-MM-dd; money is in NZD. Needs the rental module switched on. Only for an organisation where this connection may add and change records (list_organisations says which). The answer is the saved tenancy with its organisation's name; rent can then be added with create_income.

Input Schema

NameRequiredDescriptionDefault
notesNoFree text kept with the tenancy.
end_dateNoThe New Zealand date it ends, yyyy-MM-dd: a fixed term's end, or when a tenancy ended. Leave it out while it is ongoing.
term_typeYesfixed (an agreement with an end date) or periodic (ongoing until notice is given).
room_labelNoThe room rented, for a room-by-room tenancy. Leave it out when the whole property is rented.
start_dateYesThe New Zealand date the tenancy starts, yyyy-MM-dd.
bond_amountNoThe bond in NZD. Leave it out when there is none.
bond_numberNoThe Tenancy Services bond number, such as BN-12345678.
bond_statusNoWhere the bond stands: not-lodged (when left out), lodged (with Tenancy Services), refunded, or partially-refunded (give bond_refunded_amount).
property_idYesThe rental property, from list_properties. When the person's words match more than one, or none, show them the closest and ask which they mean; never guess an id.
weekly_rentYesThe weekly rent in NZD.
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.
tenant_contact_idsYesThe tenants' contact ids, from list_contacts (contact type tenant).
bond_refunded_amountNoFor a partially refunded bond: how much was refunded, in NZD.
landlord_contact_idsNoThe landlords on the bond: contact ids from list_contacts (contact type landlord).

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=false, idempotentHint=true and destructiveHint=false, but the description goes further: it names the exact dedupe key ('same property, tenants, room and start date is answered instead of added'), states the module must be switched on, states the organisation permission requirement, and names the return value. These are operational facts not derivable from the 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?

Dense but front-loaded: the first sentence defines the resource, the next two cover dependencies, then duplicate handling, formats, gating and the return. Every sentence carries a distinct operational fact with no filler or restatement of the tool name.

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 15-parameter mutation tool with no output schema, the description closes every gap an agent needs: what is created, what it depends on, dedupe behavior, module/permission gating, units and date format, what is returned, and the natural next step (create_income). Nothing material is missing.

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 15 parameters including formats, enums and defaults. The description reinforces dates as New Zealand yyyy-MM-dd and money as NZD, but adds little parameter-level meaning beyond what the schema carries. Baseline 3 applies when the schema does the heavy lifting.

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 ('Adds a tenancy') and immediately defines the domain object ('one or more tenants renting a rental property, or a room in it, from a start date at a weekly rent, with its bond'). An agent can distinguish this from update_tenancy, create_property and create_contact 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 Guidelines5/5

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

Explicitly states prerequisites and the alternatives to call first ('The property comes from list_properties (add a new one with create_property) and each tenant is a contact of type tenant from list_contacts (add a new tenant with create_contact first)'). It also names when-not conditions: the dedupe rule, the module requirement, and the permission gate via list_organisations.

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.