{
  "description": "Australian pay and tax calculations using the ATO's formulas. GET /api/<tool>?field=value or POST JSON. MCP clients can connect to /mcp instead.",
  "openapi": "https://aftertaxau.com/openapi.json",
  "mcp": "https://aftertaxau.com/mcp",
  "tools": [
    {
      "name": "take_home_pay",
      "description": "Take-home pay in Australia for a salary or hourly rate, for 2025-26 or 2026-27. Returns gross pay, PAYG tax withheld, net pay and the employer's 12% super for each week, fortnight and month and for the year, plus a basic estimate of the year's tax and refund that assumes no other income and uses the $1,000 standard deduction for work expenses (from 2026-27). Use it for questions like 'how much do I take home on $85,000'. For one specific pay with declaration details use payg_withholding; for a tax return estimate with deductions, other income, family or seniors offsets use annual_tax_estimate; to go from a target take-home to a salary use salary_for_take_home. Amounts in AUD. Read-only and deterministic; no network calls.",
      "url": "https://aftertaxau.com/api/take_home_pay",
      "inputSchema": {
        "type": "object",
        "properties": {
          "salary": {
            "type": "number",
            "minimum": 0,
            "description": "Annual salary in AUD, excluding super unless salaryIncludesSuper is true, e.g. 85000. Give salary or hourlyRate, not both."
          },
          "hourlyRate": {
            "type": "number",
            "minimum": 0,
            "description": "Hourly rate in AUD excluding super, including any casual loading, e.g. 35.5."
          },
          "hoursPerWeek": {
            "type": "number",
            "minimum": 0,
            "maximum": 168,
            "description": "Hours a week for hourlyRate. Default 38 (full time)."
          },
          "salaryIncludesSuper": {
            "type": "boolean",
            "description": "The salary is a total package that includes the 12% super guarantee. Default false."
          },
          "taxYear": {
            "type": "string",
            "enum": [
              "2025-26",
              "2026-27"
            ],
            "description": "Australian financial year (1 July to 30 June) whose withholding tables to use. Default 2026-27."
          },
          "taxFreeThreshold": {
            "type": "boolean",
            "description": "Tax-free threshold claimed with this employer. Default true (main job). Use false for a second job."
          },
          "tfnProvided": {
            "type": "boolean",
            "description": "Employee gave their tax file number. Default true. False applies the no-TFN rate."
          },
          "foreignResident": {
            "type": "boolean",
            "description": "Foreign resident for tax purposes. Default false."
          },
          "studyLoan": {
            "type": "boolean",
            "description": "Has a HELP, VSL, SSL or other study and training support loan. Default false."
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "salary_for_take_home",
      "description": "Works backwards from the take-home pay someone wants to the gross annual salary they need in Australia, for 2025-26 or 2026-27. Give the target take-home per week, fortnight, month or year; returns the salary needed (excluding super), the take-home and tax withheld for each pay period, and the employer's super on top. Use it for salary negotiations and questions like 'what do I need to earn to take home $1,500 a week'. It uses the same ATO withholding formulas as take_home_pay. AUD. Read-only and deterministic.",
      "url": "https://aftertaxau.com/api/salary_for_take_home",
      "inputSchema": {
        "type": "object",
        "properties": {
          "takeHome": {
            "type": "number",
            "minimum": 0,
            "description": "Take-home pay wanted, in AUD, for the period in 'per', e.g. 1500."
          },
          "per": {
            "type": "string",
            "enum": [
              "weekly",
              "fortnightly",
              "monthly",
              "year"
            ],
            "description": "The period takeHome is for."
          },
          "taxYear": {
            "type": "string",
            "enum": [
              "2025-26",
              "2026-27"
            ],
            "description": "Australian financial year (1 July to 30 June) whose withholding tables to use. Default 2026-27."
          },
          "taxFreeThreshold": {
            "type": "boolean",
            "description": "Tax-free threshold claimed with this employer. Default true (main job). Use false for a second job."
          },
          "studyLoan": {
            "type": "boolean",
            "description": "Has a HELP, VSL, SSL or other study and training support loan. Default false."
          },
          "foreignResident": {
            "type": "boolean",
            "description": "Foreign resident for tax purposes. Default false."
          }
        },
        "required": [
          "takeHome",
          "per"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "payg_withholding",
      "description": "Exact PAYG tax an Australian employer must withhold from one pay (weekly, fortnightly, monthly or quarterly) under ATO Schedule 1 (NAT 1004), with Schedule 8 for study loans and Schedule 9 for seniors, for 2025-26 or 2026-27. Use it in payroll code or when declaration details matter: tax-free threshold, TFN, residency, HELP, Medicare levy exemption or family variation, tax offsets. Returns whole dollars to withhold, take-home for the pay, the tax scale and a breakdown. For a whole-salary summary use take_home_pay; for a bonus or commission use bonus_withholding. Working holiday makers aren't supported and return an error. Read-only and deterministic.",
      "url": "https://aftertaxau.com/api/payg_withholding",
      "inputSchema": {
        "type": "object",
        "properties": {
          "earnings": {
            "type": "number",
            "minimum": 0,
            "description": "Gross earnings for this pay period in AUD, including taxable allowances and overtime, e.g. 3076.92 for a fortnight."
          },
          "period": {
            "type": "string",
            "enum": [
              "weekly",
              "fortnightly",
              "monthly",
              "quarterly"
            ],
            "description": "Pay period."
          },
          "payDate": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "description": "Pay date (YYYY-MM-DD). Picks the financial year's tables; overrides taxYear."
          },
          "taxYear": {
            "type": "string",
            "enum": [
              "2025-26",
              "2026-27"
            ],
            "description": "Australian financial year (1 July to 30 June) whose withholding tables to use. Default 2026-27."
          },
          "taxFreeThreshold": {
            "type": "boolean",
            "description": "Tax-free threshold claimed with this employer. Default true (main job). Use false for a second job."
          },
          "tfnProvided": {
            "type": "boolean",
            "description": "Employee gave their tax file number. Default true. False applies the no-TFN rate."
          },
          "foreignResident": {
            "type": "boolean",
            "description": "Foreign resident for tax purposes. Default false."
          },
          "studyLoan": {
            "type": "boolean",
            "description": "Has a HELP, VSL, SSL or other study and training support loan. Default false."
          },
          "medicareExemption": {
            "type": "string",
            "enum": [
              "none",
              "half",
              "full"
            ],
            "description": "Medicare levy exemption claimed. Default none."
          },
          "annualTaxOffset": {
            "type": "number",
            "minimum": 0,
            "description": "Total annual tax offsets claimed on the withholding declaration (AUD)."
          },
          "medicareFamily": {
            "type": "object",
            "description": "Medicare levy variation declaration (lower withholding for low-income families).",
            "properties": {
              "spouse": {
                "type": "boolean"
              },
              "children": {
                "type": "integer",
                "minimum": 0
              }
            },
            "additionalProperties": false
          },
          "seniors": {
            "type": "string",
            "enum": [
              "single",
              "couple",
              "illness-separated"
            ],
            "description": "Claims the seniors and pensioners tax offset with this status (uses Schedule 9)."
          }
        },
        "required": [
          "earnings",
          "period"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "bonus_withholding",
      "description": "PAYG tax to withhold from a bonus, commission or other one-off payment made with a regular Australian pay, using ATO Schedule 5 Method A, for 2025-26 or 2026-27. Use it for 'how much tax comes out of my bonus'. Returns the tax on the bonus only, never more than 47% of it; work out the regular pay's withholding separately with payg_withholding. Amounts in AUD. Read-only and deterministic.",
      "url": "https://aftertaxau.com/api/bonus_withholding",
      "inputSchema": {
        "type": "object",
        "properties": {
          "earnings": {
            "type": "number",
            "minimum": 0,
            "description": "Regular gross earnings for the pay period the bonus is paid with (AUD), excluding the bonus."
          },
          "bonus": {
            "type": "number",
            "minimum": 0,
            "description": "The bonus or commission amount (AUD)."
          },
          "period": {
            "type": "string",
            "enum": [
              "weekly",
              "fortnightly",
              "monthly",
              "quarterly"
            ],
            "description": "Pay period."
          },
          "periodsCovered": {
            "type": "integer",
            "minimum": 1,
            "description": "Pay periods the bonus relates to, if less than a year."
          },
          "payDate": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "description": "Pay date (YYYY-MM-DD)."
          },
          "taxYear": {
            "type": "string",
            "enum": [
              "2025-26",
              "2026-27"
            ],
            "description": "Australian financial year (1 July to 30 June) whose withholding tables to use. Default 2026-27."
          },
          "taxFreeThreshold": {
            "type": "boolean",
            "description": "Tax-free threshold claimed with this employer. Default true (main job). Use false for a second job."
          },
          "tfnProvided": {
            "type": "boolean",
            "description": "Employee gave their tax file number. Default true. False applies the no-TFN rate."
          },
          "foreignResident": {
            "type": "boolean",
            "description": "Foreign resident for tax purposes. Default false."
          },
          "studyLoan": {
            "type": "boolean",
            "description": "Has a HELP, VSL, SSL or other study and training support loan. Default false."
          }
        },
        "required": [
          "earnings",
          "bonus",
          "period"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "annual_tax_estimate",
      "description": "Australian income tax for a whole financial year and the likely refund or bill: tax at resident or foreign rates, low income tax offset, seniors and pensioners tax offset, Medicare levy with low-income and family reductions, Medicare levy surcharge and compulsory HELP/study loan repayments, compared with the tax withheld. Applies the $1,000 standard deduction for work-related expenses from 2026-27 and the working Australians tax offset (up to $250) from 2027-28. Use it for tax return estimates and questions involving deductions, other income, overtime, bonuses, couples and families, seniors or private health cover. For per-pay take-home figures use take_home_pay. Supports 2025-26, 2026-27 and 2027-28 (an estimate with no refund). estimatedRefund is positive for a refund and negative for a bill. AUD. Read-only and deterministic.",
      "url": "https://aftertaxau.com/api/annual_tax_estimate",
      "inputSchema": {
        "type": "object",
        "properties": {
          "salary": {
            "type": "number",
            "minimum": 0,
            "description": "Salary or wages for the year from one employer (AUD), excluding super, overtime and bonuses."
          },
          "taxYear": {
            "type": "string",
            "enum": [
              "2025-26",
              "2026-27",
              "2027-28"
            ],
            "description": "Financial year. Default 2026-27."
          },
          "overtime": {
            "type": "number",
            "minimum": 0,
            "description": "Overtime earnings for the year (AUD)."
          },
          "bonus": {
            "type": "number",
            "minimum": 0,
            "description": "Bonuses paid in the year (AUD)."
          },
          "otherIncome": {
            "type": "number",
            "minimum": 0,
            "description": "Other taxable income with no tax withheld, e.g. interest (AUD)."
          },
          "deductions": {
            "type": "number",
            "minimum": 0,
            "description": "Work-related expenses the person would itemise (AUD). From 2026-27 residents with work income get at least the $1,000 standard deduction, so amounts up to $1,000 don't change the result."
          },
          "otherDeductions": {
            "type": "number",
            "minimum": 0,
            "description": "Deductions not covered by the standard deduction, such as gifts to charity and tax agent fees (AUD)."
          },
          "payFrequency": {
            "type": "string",
            "enum": [
              "weekly",
              "fortnightly",
              "monthly"
            ],
            "description": "How often the salary is paid, for tax withheld. Default fortnightly."
          },
          "salaryIncludesSuper": {
            "type": "boolean",
            "description": "salary is a package including the 12% super guarantee."
          },
          "privateHospitalCover": {
            "type": "boolean",
            "description": "Has private patient hospital cover all year. Default true (no Medicare levy surcharge)."
          },
          "family": {
            "type": "object",
            "description": "Spouse and dependent children, for the Medicare levy family reduction and surcharge thresholds.",
            "properties": {
              "spouse": {
                "type": "boolean"
              },
              "spouseIncome": {
                "type": "number",
                "minimum": 0,
                "description": "Spouse's taxable income (AUD)."
              },
              "dependants": {
                "type": "integer",
                "minimum": 0,
                "description": "Dependent children."
              }
            },
            "additionalProperties": false
          },
          "sapto": {
            "type": "string",
            "enum": [
              "single",
              "couple",
              "illness-separated"
            ],
            "description": "Eligible for the seniors and pensioners tax offset, with this status."
          },
          "taxFreeThreshold": {
            "type": "boolean",
            "description": "Tax-free threshold claimed with this employer. Default true (main job). Use false for a second job."
          },
          "tfnProvided": {
            "type": "boolean",
            "description": "Employee gave their tax file number. Default true. False applies the no-TFN rate."
          },
          "foreignResident": {
            "type": "boolean",
            "description": "Foreign resident for tax purposes. Default false."
          },
          "studyLoan": {
            "type": "boolean",
            "description": "Has a HELP, VSL, SSL or other study and training support loan. Default false."
          }
        },
        "required": [
          "salary"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "super_guarantee",
      "description": "Australian superannuation guarantee (12%) an employer must pay on ordinary time earnings, or the split of a total package that includes super into base salary and super (package divided by 1.12). Use it for 'how much super is paid on $X' or 'what is the base salary in a $X package'. Returns AUD amounts. Doesn't apply the maximum super contribution base. Read-only and deterministic.",
      "url": "https://aftertaxau.com/api/super_guarantee",
      "inputSchema": {
        "type": "object",
        "properties": {
          "amount": {
            "type": "number",
            "minimum": 0,
            "description": "Earnings (AUD), or the total package if includesSuper is true."
          },
          "includesSuper": {
            "type": "boolean",
            "description": "amount is a package that includes super. Default false."
          }
        },
        "required": [
          "amount"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "identifier_validation",
      "description": "Checks an Australian Business Number (ABN), Australian Company Number (ACN) or tax file number (TFN) with the official check-digit algorithms, or the format of a BSB or bank account number. Returns valid true or false, with the normalised form or the reason it fails. Use it before storing or submitting an identifier. It confirms the number is well formed, not that it is registered or belongs to anyone: use the ABR's ABN Lookup for registration. Runs locally; nothing is sent anywhere.",
      "url": "https://aftertaxau.com/api/identifier_validation",
      "inputSchema": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "abn",
              "acn",
              "tfn",
              "bsb",
              "bank_account"
            ],
            "description": "Which identifier: abn, acn, tfn, bsb or bank_account."
          },
          "value": {
            "type": "string",
            "description": "The number, with or without spaces or dashes, e.g. \"51 824 753 556\"."
          }
        },
        "required": [
          "type",
          "value"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "tax_rates",
      "description": "Official Australian individual tax rates and thresholds for 2025-26, 2026-27 or 2027-28: resident and foreign resident brackets, low income tax offset, Medicare levy and surcharge thresholds, HELP repayment thresholds, seniors offset and the 12% super guarantee. Use it to quote or check rates, for example the 15% rate from 1 July 2026 and 14% from 1 July 2027. To calculate tax on an amount, use take_home_pay, payg_withholding or annual_tax_estimate rather than applying the brackets by hand. Read-only.",
      "url": "https://aftertaxau.com/api/tax_rates",
      "inputSchema": {
        "type": "object",
        "properties": {
          "taxYear": {
            "type": "string",
            "enum": [
              "2025-26",
              "2026-27",
              "2027-28"
            ],
            "description": "Financial year. Default 2026-27."
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "gst_calculation",
      "description": "Adds 10% Australian GST to a price, or works out the GST included in a GST-inclusive price (the price divided by 11). Returns the price excluding GST, the GST and the price including GST, rounded to the cent. Use it for invoices, quotes and receipts. It doesn't decide whether an item is GST-free or input-taxed. AUD. Read-only and deterministic.",
      "url": "https://aftertaxau.com/api/gst_calculation",
      "inputSchema": {
        "type": "object",
        "properties": {
          "amount": {
            "type": "number",
            "minimum": 0,
            "description": "The price in AUD, e.g. 110."
          },
          "includesGst": {
            "type": "boolean",
            "description": "true if amount already includes GST (to take it out). Default false (GST is added)."
          }
        },
        "required": [
          "amount"
        ],
        "additionalProperties": false
      }
    }
  ]
}