Skip to main content
Glama

A.X.E.L Filing (public tools)

uk_director_tax_year

Read-only

The director's whole year in one view: the company's corporation tax AND the director's own Self Assessment, side by side. Give either filingId (a saved CT600 draft, signed in) or the company's figures, plus the director's salary per tax year and each dividend with the date it was PAID (dividends are taxed in the tax year paid, which may differ from the company's year). Returns the company's profit, tax and profit after tax, each personal tax year's Self Assessment, Class 1 National Insurance on the salary (employee and employer, paid through payroll, with the Employment Allowance where it applies), payments on account, every due date, and the combined total. For what-ifs, call once per scenario and compare them side by side; when a scenario changes the salary, pass figures with staffCosts adjusted (salary plus employer NI) so corporation tax reflects it (see the guide). With MORE THAN ONE company, ask about every company they draw from and pass companies (or, signed in, useProfile: true to start from their saved answers): the Self Assessment covers all of it once, associated companies share the corporation tax limits, connected companies share one Employment Allowance, and NI can add the pay together. The user decides; present options, not a recommendation. Never ask for a UTR or National Insurance number.

Input Schema

NameRequiredDescriptionDefault
figuresNoThe return figures, all in POUNDS. periodStart/periodEnd are ISO dates.
directorYes
filingIdNoA saved CT600 draft to take the company figures from (needs a signed-in account)
companiesNoFor a person with MORE THAN ONE company: each company they draw salary or dividends from. Their Self Assessment is then worked out once on all of it, each company's corporation tax uses the associated-companies count from who controls what, connected companies share one Employment Allowance, and pay is added together for NI when businessInAssociation is true. Put the person's other income in director.years (otherDividends = companies NOT listed here) and leave director.dividends empty.
useProfileNoSigned in only: work out the person's WHOLE position from their saved profile (their Tax cockpit): every company on their account with its latest figures, plus companies not on A.X.E.L and income from elsewhere. The result's `inputs` echoes what was used, so a what-if can pass it back as `companies` with one thing changed.
businessInAssociationNoDo the companies share premises, staff, equipment or customers? If so HMRC adds the pay from them together for Class 1 NI (one set of thresholds). Ask when more than one company pays a salary.

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedInput schema / properties / companies / items / properties / figures / properties / taxAlreadyPaid
      Added value: +{
      +  "description": "Corporation tax the company has already paid HMRC for this period and has not had back (CT600 box 595), in pounds. 0 or absent if none. Not for a period over 12 months.",
      +  "type": "number"
      +}
    • addedInput schema / properties / figures / properties / taxAlreadyPaid
      Added value: +{
      +  "description": "Corporation tax the company has already paid HMRC for this period and has not had back (CT600 box 595), in pounds. 0 or absent if none. Not for a period over 12 months.",
      +  "type": "number"
      +}
  2. Changed1 schema field changed
    • changedInput schema / properties / useProfile / description
      Previous value: -"Signed in only: work out the person's WHOLE position from their saved profile (You and your companies): every company on their account with its latest figures, plus companies not on A.X.E.L and income from elsewhere. The result's `inputs` echoes what was used, so a what-if can pass it back as `companies` with one thing changed."New value: +"Signed in only: work out the person's WHOLE position from their saved profile (their Tax cockpit): every company on their account with its latest figures, plus companies not on A.X.E.L and income from elsewhere. The result's `inputs` echoes what was used, so a what-if can pass it back as `companies` with one thing changed."
  3. Changed3 schema fields changed
    • addedInput schema / properties / businessInAssociation
      Added value: +{
      +  "description": "Do the companies share premises, staff, equipment or customers? If so HMRC adds the pay from them together for Class 1 NI (one set of thresholds). Ask when more than one company pays a salary.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / companies
      Added value: +{
      +  "description": "For a person with MORE THAN ONE company: each company they draw salary or dividends from. Their Self Assessment is then worked out once on all of it, each company's corporation tax uses the associated-companies count from who controls what, connected companies share one Employment Allowance, and pay is added together for NI when businessInAssociation is true. Put the person's other income in director.years (otherDividends = companies NOT listed here) and leave director.dividends empty.",
      +  "items": {
      +    "properties": {
      +      "control": {
      +        "description": "Who controls it (over half the shares or votes): 'me' on their own, 'jointly' with others such as a partner (treated as the same group of people for each such company), 'no' not them. Companies with the same control are associated and connected. Ask.",
      +        "enum": [
      +          "me",
      +          "jointly",
      +          "no"
      +        ],
      +        "type": "string"
      +      },
      +      "dividends": {
      +        "items": {
      +          "properties": {
      +            "amount": {
      +              "type": "number"
      +            },
      +            "date": {
      +              "description": "YYYY-MM-DD, the date PAID",
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "date",
      +            "amount"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "dormant": {
      +        "description": "No trade or business at all in the period: never counts as associated",
      +        "type": "boolean"
      +      },
      +      "figures": {
      +        "description": "The company year's figures, if known; omit for a company whose accounts you do not have (no corporation tax side)",
      +        "properties": {
      +          "adminExpenses": {
      +            "description": "Running costs excluding staff and depreciation",
      +            "type": "number"
      +          },
      +          "associatedCompanies": {
      +            "type": "number"
      +          },
      +          "averageEmployees": {
      +            "type": "number"
      +          },
      +          "calledUpShareCapitalNotPaid": {
      +            "description": "Share capital called up but not yet paid by shareholders. An asset, shown before fixed assets.",
      +            "type": "number"
      +          },
      +          "capitalAllowances": {
      +            "description": "Equipment bought this period (AIA)",
      +            "type": "number"
      +          },
      +          "cashAtBank": {
      +            "type": "number"
      +          },
      +          "claimCarryBack": {
      +            "type": "boolean"
      +          },
      +          "costOfSales": {
      +            "type": "number"
      +          },
      +          "creditorsDueAfterOneYear": {
      +            "type": "number"
      +          },
      +          "creditorsDueWithinOneYear": {
      +            "type": "number"
      +          },
      +          "debtors": {
      +            "type": "number"
      +          },
      +          "deferredTax": {
      +            "description": "Deferred tax charge (or credit) for the period. Shown with the corporation tax charge as one tax line in the accounts. Never changes what HMRC is owed.",
      +            "type": "number"
      +          },
      +          "depreciation": {
      +            "type": "number"
      +          },
      +          "disallowableExpenses": {
      +            "description": "Expenses included in the accounts that corporation tax does not allow, added back in the computation: client entertaining, fines and penalties, and similar. Do NOT subtract these from the cost figures; they stay in the accounts and are added back for tax.",
      +            "type": "number"
      +          },
      +          "electricChargePoints": {
      +            "description": "100% allowance on electric vehicle charge-point equipment (CT600 box 713).",
      +            "type": "number"
      +          },
      +          "exporter": {
      +            "description": "Boxes 616-618. Did the company sell to customers outside the UK during the period? 'goods' = physical products sent abroad, 'services' = work done for overseas customers, 'both', or 'neither'. Does NOT affect the tax computation, but it is a statement of fact on a signed return, so it must be answered truthfully rather than defaulted.",
      +            "enum": [
      +              "goods",
      +              "services",
      +              "both",
      +              "neither"
      +            ],
      +            "type": "string"
      +          },
      +          "firstPeriod": {
      +            "description": "true = first accounting period (no comparative column)",
      +            "type": "boolean"
      +          },
      +          "fixedAssets": {
      +            "type": "number"
      +          },
      +          "fortyPercentFyaExpenditure": {
      +            "description": "COST of new main-rate plant and machinery bought on or after 1 January 2026 claimed under the FA 2026 40% first-year allowance; 40% is claimed this period and the remaining 60% is added to the main pool automatically (CT600 box 725 until 5 April 2027, box 696 after).",
      +            "type": "number"
      +          },
      +          "fullExpensing": {
      +            "description": "100% first-year allowance on new main-rate plant and machinery (CT600 box 688).",
      +            "type": "number"
      +          },
      +          "interestIncome": {
      +            "description": "Bank interest received (CT600 box 170)",
      +            "type": "number"
      +          },
      +          "lossesBroughtForward": {
      +            "type": "number"
      +          },
      +          "machineryAndPlantMainPool": {
      +            "description": "Writing-down allowance claimed on the main pool (18%, or 14% for periods beginning on or after 1 April 2026; hybrid rate across the change).",
      +            "type": "number"
      +          },
      +          "machineryAndPlantSpecialRatePool": {
      +            "description": "Writing-down allowance claimed on the special rate pool (6%).",
      +            "type": "number"
      +          },
      +          "mainPoolAdditions": {
      +            "description": "Main pool: expenditure added this period that AIA is not claimed on.",
      +            "type": "number"
      +          },
      +          "mainPoolBroughtForward": {
      +            "description": "Main pool: unrelieved qualifying expenditure brought forward from the previous period. Give this and we compute the writing-down allowance instead of trusting a typed one.",
      +            "type": "number"
      +          },
      +          "mainPoolDisposals": {
      +            "description": "Main pool: disposal proceeds, capped at original cost. More than the pool holds produces a balancing charge.",
      +            "type": "number"
      +          },
      +          "otherIncome": {
      +            "type": "number"
      +          },
      +          "participatorLoanReliefs": {
      +            "description": "CT600A Part 2: amounts repaid, released or written off within 9 months and 1 day of the period end, with the date.",
      +            "items": {
      +              "properties": {
      +                "date": {
      +                  "format": "date",
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "type": "string"
      +                },
      +                "repaid": {
      +                  "type": "number"
      +                },
      +                "writtenOff": {
      +                  "type": "number"
      +                }
      +              },
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          "participatorLoans": {
      +            "description": "CT600A Part 1: loans to directors, shareholders or their associates made in the period and still outstanding at the period end, whole pounds per person.",
      +            "items": {
      +              "properties": {
      +                "amount": {
      +                  "type": "number"
      +                },
      +                "name": {
      +                  "type": "string"
      +                }
      +              },
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          "participatorLoansOutstandingAllPeriods": {
      +            "description": "CT600A box A75: all loans to participators outstanding at the period end, including earlier periods.",
      +            "type": "number"
      +          },
      +          "participatorLoansRepaidBeforePeriodEnd": {
      +            "description": "CT600A Part 1 tick box: loans made in the period and repaid before the period end.",
      +            "type": "boolean"
      +          },
      +          "periodEnd": {
      +            "type": "string"
      +          },
      +          "periodStart": {
      +            "type": "string"
      +          },
      +          "priorCalledUpShareCapitalNotPaid": {
      +            "description": "Called up share capital not paid last year, for the comparative column.",
      +            "type": "number"
      +          },
      +          "priorCashAtBank": {
      +            "type": "number"
      +          },
      +          "priorCostOfSales": {
      +            "type": "number"
      +          },
      +          "priorCreditorsDueAfterOneYear": {
      +            "type": "number"
      +          },
      +          "priorCreditorsDueWithinOneYear": {
      +            "type": "number"
      +          },
      +          "priorDebtors": {
      +            "type": "number"
      +          },
      +          "priorDepreciation": {
      +            "type": "number"
      +          },
      +          "priorFixedAssets": {
      +            "type": "number"
      +          },
      +          "priorOtherCharges": {
      +            "type": "number"
      +          },
      +          "priorOtherIncome": {
      +            "type": "number"
      +          },
      +          "priorPeriodEnd": {
      +            "type": "string"
      +          },
      +          "priorPeriodStart": {
      +            "type": "string"
      +          },
      +          "priorProvisionsForLiabilities": {
      +            "description": "Provisions for liabilities last year, for the comparative column.",
      +            "type": "number"
      +          },
      +          "priorStaffCosts": {
      +            "type": "number"
      +          },
      +          "priorStocks": {
      +            "type": "number"
      +          },
      +          "priorTax": {
      +            "type": "number"
      +          },
      +          "priorTurnover": {
      +            "type": "number"
      +          },
      +          "priorYearTaxableProfit": {
      +            "type": "number"
      +          },
      +          "provisionsForLiabilities": {
      +            "description": "Deferred tax provisions, warranty claims and other future obligations. Deducted after creditors in arriving at net assets.",
      +            "type": "number"
      +          },
      +          "qualifyingDonations": {
      +            "type": "number"
      +          },
      +          "specialRatePoolAdditions": {
      +            "description": "Special rate pool: expenditure added this period.",
      +            "type": "number"
      +          },
      +          "specialRatePoolBroughtForward": {
      +            "description": "Special rate pool: balance brought forward (integral features, long-life assets, higher-emission cars).",
      +            "type": "number"
      +          },
      +          "specialRatePoolDisposals": {
      +            "description": "Special rate pool: disposal proceeds.",
      +            "type": "number"
      +          },
      +          "staffCosts": {
      +            "type": "number"
      +          },
      +          "stocks": {
      +            "type": "number"
      +          },
      +          "structuresAndBuildingsAllowance": {
      +            "description": "Structures and buildings allowance, 3% of qualifying construction cost (CT600 box 711).",
      +            "type": "number"
      +          },
      +          "stubCapitalAllowances": {
      +            "description": "Only when the period of account runs over 12 months, which HMRC files as TWO returns: how much of capitalAllowances was spent in the second (stub) period. Everything else is apportioned by days, but equipment relief belongs to the period the money was actually spent. Ask the user; default 0.",
      +            "type": "number"
      +          },
      +          "stubQualifyingDonations": {
      +            "description": "As stubCapitalAllowances, for qualifyingDonations: how much was paid in the second period. Default 0.",
      +            "type": "number"
      +          },
      +          "tradingStartDate": {
      +            "description": "When the company started trading or first had income, ISO date. Only needed in a FIRST year whose period of account runs over 12 months (incorporation to the accounting reference date, which is the normal shape). Corporation tax starts here, not at incorporation, so a company that began trading a few weeks in usually needs only ONE CT600. The accounts still cover the whole period of account. Ask the user; do not guess.",
      +            "type": "string"
      +          },
      +          "turnover": {
      +            "type": "number"
      +          },
      +          "zeroEmissionsCars": {
      +            "description": "First-year allowance on zero-emission cars (CT600 box 726).",
      +            "type": "number"
      +          },
      +          "zeroEmissionsGoodsVehicles": {
      +            "description": "First-year allowance on zero-emission goods vehicles (CT600 box 723).",
      +            "type": "number"
      +          }
      +        },
      +        "required": [
      +          "periodStart",
      +          "periodEnd"
      +        ],
      +        "type": "object"
      +      },
      +      "filingId": {
      +        "description": "Signed in: take this company's figures from a saved CT600 draft instead",
      +        "type": "string"
      +      },
      +      "name": {
      +        "type": "string"
      +      },
      +      "payroll": {
      +        "properties": {
      +          "directors": {
      +            "type": "number"
      +          },
      +          "othersLiableForEmployerNi": {
      +            "type": "boolean"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "salaries": {
      +        "description": "Salary from this company per tax year, keyed '2025-26' / '2026-27': { salary, taxDeducted }",
      +        "type": "object"
      +      }
      +    },
      +    "required": [
      +      "name"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / useProfile
      Added value: +{
      +  "description": "Signed in only: work out the person's WHOLE position from their saved profile (You and your companies): every company on their account with its latest figures, plus companies not on A.X.E.L and income from elsewhere. The result's `inputs` echoes what was used, so a what-if can pass it back as `companies` with one thing changed.",
      +  "type": "boolean"
      +}
  4. Changed3 schema fields changed
    • addedInput schema / properties / director / properties / becameDirectorDuringYear
      Added value: +{
      +  "description": "Became a director part-way through the tax year. Refused: a shorter NI earnings period needs HMRC's directors' calculator.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / director / properties / overStatePensionAge
      Added value: +{
      +  "description": "Over State Pension age: no employee National Insurance on salary (the company still pays employer NI)",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / director / properties / payroll
      Added value: +{
      +  "description": "For the Employment Allowance (up to £10,500 of employer NI). HMRC: a company with only one director cannot claim if that director is the only employee liable for employer NI. Ask both.",
      +  "properties": {
      +    "directors": {
      +      "description": "How many directors the company has",
      +      "type": "number"
      +    },
      +    "othersLiableForEmployerNi": {
      +      "description": "Is anyone else on the payroll paid more than £5,000 a year?",
      +      "type": "boolean"
      +    }
      +  },
      +  "type": "object"
      +}
  5. Added

TDQS

A4.6/5.0
Behavior5/5

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

Adds rich context beyond the readOnlyHint/destructiveHint annotations: it discloses out-of-scope refusals (eligibility), that associated companies share CT limits and connected companies share one Employment Allowance, that dividends are taxed in the year paid, and the explicit 'never ask for UTR/NI number' rule. The annotations only carry safety; the description carries the real behavioral burden.

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 purpose is front-loaded in the first clause, and the density is justified by a 6-parameter tool with deeply nested, complex schema. It is a wall of text with heavy parentheticals, which slightly hurts scanability, but most sentences carry non-redundant information.

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?

Given the tool's very high complexity plus an output schema that covers return values, the description still deliberately covers the tricky cases: multi-company associated/connected treatment, NI aggregation via businessInAssociation, what-if iteration, and eligibility refusals. An agent has enough to invoke it correctly.

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 coverage is high (83%), so the schema already documents most fields, but the description adds genuine interpretation: dividends must carry their PAID date (taxed in that year), staffCosts must include employer NI in what-ifs so CT reflects it, and filingId/useProfile require a signed-in account. This exceeds the baseline-3 high-coverage case.

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?

States a specific verb+resource: it delivers the director's whole year, combining the company's corporation tax AND the director's Self Assessment side by side. This is clearly distinguishable from siblings like compute_ct600 (company only) and estimate_uk_self_assessment (personal only).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

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

Gives concrete when-to-use guidance: pass filingId OR figures, call once per scenario for what-ifs, and use `companies`/`useProfile` with more than one company. It stops short of explicitly naming the sibling tools it displaces, so the agent must infer the routing from the combined-scope framing.

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