0s and 1s CIS calculators

Free UK CIS calculators: deductions, deadlines, late penalties, gross payment test, verification.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
100%
Naming quality
77%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (1)

  • LOWTool 'cis_gross_payment_turnover_test' name length outside 3-30 rangein cis_gross_payment_turnover_test

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~2,431Tokens (tool definitions)
~2.2 KBTypical response size
Moderate attention impact (1.90% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "cis": {
      "url": "https://0sand1s.co.uk/mcp"
    }
  }
}

Remote endpoints

https://0sand1s.co.uk/mcpstreamable-http

What it can do

Tool inventory

Tools (7)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢cis_deduction(gross, vat, materials, rate)

Works out the CIS deduction on a payment to a subcontractor, from the gross bill to the net payment. Takes the gross including VAT, the VAT, the subcontractor's materials and the rate (0, 20 or 30). VAT is never taxed under CIS and materials come off before the rate applies; the deduction is rounded down to the penny. Returns each step of the working, money in pence and pounds. Does not cover retentions, or decide which rate applies (verify the subcontractor with HMRC for that).

Input Schema

{
  "type": "object",
  "properties": {
    "gross": {
      "description": "The amount being paid, including any VAT, before the CIS deduction. Pounds, as a string like \"1,200.00\" or a number like 1200.",
      "type": "string"
    },
    "vat": {
      "description": "The VAT within the gross. Leave out or 0 under the domestic reverse charge. Pounds, as a string like \"1,200.00\" or a number like 1200.",
      "type": "string"
    },
    "materials": {
      "description": "What the subcontractor paid for materials, plant hire, consumables and fuel (not travel) on the job. Without VAT if the subcontractor is VAT registered, with it if not. Pounds, as a string like \"1,200.00\" or a number like 1200.",
      "type": "string"
    },
    "rate": {
      "type": "integer",
      "enum": [
        0,
        20,
        30
      ],
      "description": "The subcontractor's CIS rate in per cent: 20 if registered, 30 if not registered or unmatched when verified, 0 for gross payment status"
    }
  },
  "required": [
    "gross",
    "rate"
  ]
}
🟢cis_gross_up(net, materials, rate)

Finds the gross amount (excluding VAT) that leaves a given net payment after the CIS deduction, for a subcontractor quoted a take-home figure. Takes the net, the subcontractor's materials and the rate (0, 20 or 30). Where rounding lets two grosses give the same net, the larger is returned so CIS is never under-deducted. Returns the forward working on that gross, money in pence and pounds. VAT is not included; add it on top if the subcontractor charges it.

Input Schema

{
  "type": "object",
  "properties": {
    "net": {
      "description": "The payment the subcontractor should receive after the CIS deduction, excluding VAT. Pounds, as a string like \"1,200.00\" or a number like 1200.",
      "type": "string"
    },
    "materials": {
      "description": "The subcontractor's materials within the payment, as for cis_deduction. Pounds, as a string like \"1,200.00\" or a number like 1200.",
      "type": "string"
    },
    "rate": {
      "type": "integer",
      "enum": [
        0,
        20,
        30
      ],
      "description": "The subcontractor's CIS rate in per cent: 20 if registered, 30 if not registered or unmatched when verified, 0 for gross payment status"
    }
  },
  "required": [
    "net",
    "rate"
  ]
}
🟢cis_tax_month(date)

For a date, gives the CIS tax month it falls in (the 6th to the 5th), the tax year, the date the monthly return (CIS300) is due (the 19th, also the date for paying HMRC by any means other than electronically), and the date for paying HMRC electronically (the 22nd, moved back to the banking day before when the 22nd is a weekend or an England and Wales bank holiday). Bank holidays are known to bank_holidays_known_until; after that only weekends move the date.

Input Schema

{
  "type": "object",
  "properties": {
    "date": {
      "type": "string",
      "description": "Any date, such as a payment date or today, YYYY-MM-DD"
    }
  },
  "required": [
    "date"
  ]
}
🟢cis_late_penalties(tax_year, tax_month, filed_on, as_at, deductions, ...)

Works out the late filing penalties on one monthly CIS return under Finance Act 2009 Schedule 55: £100 the day after the 19th, £200 at 2 months, then the greater of £300 and 5% of the deductions at 6 and at 12 months (5% alone for a first return). Takes the tax year and month, the filing date or none, today's date, the deductions and whether a return had been filed before. Returns each penalty with its date and whether it is charged, avoided or still to come. Does not cover deliberate withholding, interest on late payment, or appeals.

Input Schema

{
  "type": "object",
  "properties": {
    "tax_year": {
      "description": "The tax year, by the calendar year it starts in: 2026 for 6 April 2026 to 5 April 2027",
      "type": "integer"
    },
    "tax_month": {
      "description": "The tax month, 1 to 12: 1 is 6 April to 5 May, 12 is 6 March to 5 April",
      "type": "integer"
    },
    "filed_on": {
      "description": "The day the return was filed. Leave out or null if it has not been filed, YYYY-MM-DD",
      "type": "string"
    },
    "as_at": {
      "type": "string",
      "description": "Today's date. Penalties on a return not yet filed run to this date, YYYY-MM-DD"
    },
    "deductions": {
      "description": "The CIS deductions the return shows, or would show. Leave out or 0 for a nil return. Pounds, as a string like \"1,200.00\" or a number like 1200.",
      "type": "string"
    },
    "filed_before": {
      "type": "boolean",
      "description": "true if the contractor had already filed a CIS return before this one was due (the usual case). false for the first return, which has no £300 minimum"
    }
  },
  "required": [
    "tax_year",
    "tax_month",
    "as_at"
  ]
}
🟢cis_gross_payment_turnover_test(business_type, partners, directors, close_company, shareholders, ...)

Checks the turnover test for CIS gross payment status (Finance Act 2004 Schedule 11, SI 2005/2045 reg 28): £30,000 net construction turnover for a sole trader; for a partnership or company, the lower of £30,000 for each partner or relevant person and £100,000. In a close company, shareholders count as well as directors. Returns the figure needed by each route, which one applies, and how far short. Covers the turnover test only, not the business test or the compliance test.

Input Schema

{
  "type": "object",
  "properties": {
    "business_type": {
      "type": "string",
      "enum": [
        "sole-trader",
        "partnership",
        "company"
      ],
      "description": "The subcontractor's business: sole-trader, partnership or company"
    },
    "partners": {
      "description": "Partnership only: the number of partners, the highest at any one time in the 12 months",
      "type": "integer"
    },
    "directors": {
      "description": "Company only: the number of directors, the highest at any one time in the 12 months",
      "type": "integer"
    },
    "close_company": {
      "type": "boolean",
      "description": "Company only: true if it is a close company (controlled by 5 or fewer people, or by its directors)"
    },
    "shareholders": {
      "description": "Close company only: shareholders who are not also directors, each counted once",
      "type": "integer"
    },
    "net_turnover": {
      "description": "Construction turnover for the last 12 months, less VAT and the cost of materials. Pounds, as a string like \"1,200.00\" or a number like 1200.",
      "type": "string"
    }
  },
  "required": [
    "business_type",
    "net_turnover"
  ]
}
🟢cis_needs_verification(payment_date, included_on_return_in_tax_years, last_verified_on)

Says whether a contractor must verify a subcontractor with HMRC before paying them (SI 2005/2045 reg 6): not needed if the subcontractor was on one of this contractor's CIS returns, or was verified by this contractor, in the tax year of the payment or the two before. Takes the payment date, the tax years the subcontractor was on a return and the last verification date, all supplied by the caller. Does not contact HMRC or verify anyone, and does not cover group companies or business transfers.

Input Schema

{
  "type": "object",
  "properties": {
    "payment_date": {
      "type": "string",
      "description": "The date of the payment about to be made, YYYY-MM-DD"
    },
    "included_on_return_in_tax_years": {
      "type": "array",
      "items": {
        "type": "integer"
      },
      "description": "Tax years (by the year each starts in) in which this contractor included the subcontractor on a CIS return. An array, or comma-separated like \"2025,2026\""
    },
    "last_verified_on": {
      "description": "The date this contractor last verified the subcontractor with HMRC, if ever, YYYY-MM-DD",
      "type": "string"
    }
  },
  "required": [
    "payment_date"
  ]
}
🟢cis_nil_return_check(tax_year, tax_month, paid_subcontractors_in_month, paid_subcontractors_before, mainstream_contractor, ...)

Says whether a contractor must file a CIS nil return for a tax month (SI 2005/2045 reg 4(9A) and (9B), inserted by SI 2026/289 from 6 April 2026): due when a mainstream contractor that has paid subcontractors before pays none that month, unless it told HMRC no later than 14 days before the month started. Takes the tax year and month and yes or no answers. Returns whether a nil return is due, why, and the date it is due. Does not file anything.

Input Schema

{
  "type": "object",
  "properties": {
    "tax_year": {
      "description": "The tax year, by the calendar year it starts in: 2026 for 6 April 2026 to 5 April 2027",
      "type": "integer"
    },
    "tax_month": {
      "description": "The tax month, 1 to 12: 1 is 6 April to 5 May, 12 is 6 March to 5 April",
      "type": "integer"
    },
    "paid_subcontractors_in_month": {
      "type": "boolean",
      "description": "true if any subcontractor was paid in that tax month, gross payments included"
    },
    "paid_subcontractors_before": {
      "type": "boolean",
      "description": "true if the contractor had paid any subcontractor before that tax month started"
    },
    "mainstream_contractor": {
      "type": "boolean",
      "description": "true for a mainstream contractor (a construction business). false for a deemed contractor, which is outside the nil return rule"
    },
    "told_hmrc_no_payments_on": {
      "description": "If the contractor told HMRC in advance that no payments would be made in that month, the date it did so. Leave out if not, YYYY-MM-DD",
      "type": "string"
    }
  },
  "required": [
    "tax_year",
    "tax_month",
    "paid_subcontractors_in_month",
    "paid_subcontractors_before"
  ]
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded7 tools