Skip to main content
Glama

Calculate.co.nz NZ Calculators

nz_tax_code_calculator

Pick the correct New Zealand tax code for an IR330, and explain why.

Use for: 'what tax code should I use', 'M or ME tax code', 'secondary tax
code NZ', 'SB S SH ST SA which one', 'tax code for second job', 'am I on the
wrong tax code'.

THE WRONG CODE IS ONE OF THE FEW PAYROLL MISTAKES THAT COSTS MONEY QUIETLY
ALL YEAR, and there are two ways to get it wrong.

A SECONDARY CODE IS CHOSEN ON TOTAL INCOME ACROSS ALL JOBS, NOT ON WHAT THE
SECOND JOB PAYS. Someone earning $60,000 in a main job and $8,000 in a second
is SH, not SB. Choosing on the smaller figure under-taxes and produces a bill
at year end. ALWAYS ASK FOR TOTAL INCOME before answering a secondary code
question. If total_income_all_jobs is omitted this falls back to this job's
income and returns a warning saying the band is very likely wrong; pass that
warning on rather than reporting the code as settled.

ME IS NOT SIMPLY "M PLUS A CREDIT". The Independent Earner Tax Credit, worth
up to $520 a year, is withdrawn by receiving Working for Families, a main
benefit or NZ Super, so someone inside the $24,000 to $70,000 band can still
correctly be an M.

Add SL when a student loan is being repaid. On a SECONDARY job the repayment
is 12% of the gross with no threshold at all, because the repayment threshold
belongs to the main job. That catches people who expect the threshold twice.

Special tax codes, non-resident status and multiple secondary jobs are out of
scope here; those need Inland Revenue.

Args:
    annual_income: Income from THIS job, before tax.
    job_type: primary for the main job, secondary for any other.
    total_income_all_jobs: Total across every job. Needed for secondary.
    has_student_loan: Whether a student loan is being repaid.
    receives_wff_benefit_or_super: Working for Families, a main benefit or
        NZ Super. Any of these removes IETC eligibility.

Returns:
    The code, what it means, why it applies rather than the alternative, the
    flat rate for a secondary code, and any warning about the inputs.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
job_typeNoprimary
annual_incomeYes
has_student_loanNo
total_income_all_jobsNo
receives_wff_benefit_or_superNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations present, the description carries the full burden of behavioral disclosure, and it does so thoroughly. It explains fallback behavior when total_income_all_jobs is omitted, the warning it returns, why ME is not simply 'M plus a credit,' and the student-loan repayment rule on secondary jobs. These are non-obvious behaviors an agent must know to use the tool correctly.

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?

The description is long, but the content is dense and almost all of it earns its place given the genuine complexity of NZ tax codes. It is structured with 'Use for,' key warnings, Args, and Returns sections, and the most important usage guidance is front-loaded. A slight deduction is warranted for ALL-CAPS prose and some motivational framing that goes beyond strictly necessary operational guidance.

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?

Despite having no output schema, the Returns section explicitly lists what the caller will receive: the code, its meaning, why it applies over alternatives, the flat rate for secondary codes, and input warnings. Combined with out-of-scope boundaries and per-parameter guidance, the description is complete enough for an agent to invoke the tool and interpret its result correctly.

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

Parameters5/5

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

Schema description coverage is 0%, but the Args section fully compensates by explaining every parameter beyond its schema type. It clarifies annual_income as 'Income from THIS job, before tax,' total_income_all_jobs as 'Total across every job. Needed for secondary,' and receives_wff_benefit_or_super as removing IETC eligibility. This is precisely the domain context the input schema cannot convey.

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?

The opening sentence states a specific action and resource: 'Pick the correct New Zealand tax code for an IR330, and explain why.' The 'Use for' examples further clarify the exact user intents it serves, making it easy for an agent to distinguish this from the many other NZ calculator tools.

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?

The description gives explicit 'Use for' query patterns, tells the agent to always ask for total income, and clearly marks what is out of scope: 'Special tax codes, non-resident status and multiple secondary jobs are out of scope here; those need Inland Revenue.' This provides both when-to-use and when-not-to-use guidance with an alternative path.

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.

Resources