MCP server for Australian tax, super, and financial calculations — use inside Claude Desktop
Five well-named financial calculation tools with clear, domain-specific descriptions (avg 180 chars). All tools have complete JSON Schema input definitions with type constraints, descriptions, and sensible defaults. Tool annotations (readOnlyHint, idempotentHint, destructiveHint) are present and correct. Output schemas are documented in docstrings. However, output structure is returned as JSON strings rather than structured objects, and error handling lacks recovery guidance. No pagination or result limits needed for these single-value calculators, but descriptions could be more concise per LLM-optimization guidelines (50-200 chars target).
Calculate capital gains tax (CGT) for an asset sale. Applies the 50% CGT discount for assets held 12+ months, computes taxable gain, and integrates with income tax.
Calculate HECS/HELP loan repayment for the 2025-26 year. Determines the annual repayment amount based on income, estimates remaining years to repay, and shows the repayment schedule.
Calculate Australian PAYG income tax for a resident individual. Uses the ATO 2025-26 tax brackets plus Medicare levy to produce income tax, Medicare levy, net income, and effective tax rate.
Calculate superannuation contributions for the 2025-26 year. Computes employer super guarantee (11.5%) plus optional employee salary-sacrifice and checks against the concessional cap ($30,000).
Compare two salary packages across Australian states. Calculates take-home pay after tax, super, and stamp duty on property purchase to help evaluate job offers or relocation decisions.
Output returned as JSON strings instead of structured objects. LLMs must parse string output, wasting tokens and increasing hallucination risk. Return typed objects with fields like {filing_year: str, gross_income: float, income_tax: float, ...} instead of stringified JSON.
Error handling lacks recovery guidance. If an invalid state is passed to compare_salary_packages, the tool should return 'Invalid state: got "XX", must be one of: NSW, VIC, QLD, WA, SA, TAS, ACT, NT' rather than a generic error. This enables LLM self-correction.
Tool descriptions exceed LLM-optimization target (50-200 chars). Current avg ~180 chars is acceptable but some (calculate_hecs_repayment, calculate_capital_gains_tax) are verbose. Trim to core action: 'Calculate HECS/HELP repayment for 2025-26 based on income and debt.' vs current multi-line explanation.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
compare_salary_packages property_value parameter has default=0 but is optional for stamp duty comparison. If omitted, stamp duty is silently 0, which may mislead users. Either make it required or document that omitting it skips stamp duty calculation.
No input validation error messages. If calculate_payg_tax receives income=-100 (violates ge=0), the error should be 'Income must be >= 0, got -100' not a generic validation error. Pydantic validates but doesn't customize messages for LLM clarity.