MCP Server

TapTax

uk.co.taptax/taptax

What this MCP does

Tracks UK self-employed income, expenses, mileage, invoices and tax estimates, and prepares Making Tax Digital updates.

add_transaction
Add income or an expense
Record a business income or expense in the signed-in person's TapTax, such as a receipt or a payment. The category is the HMRC self-employment box it belongs in. The same entry added twice within 10 minutes is recorded once.
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['type', 'amount', 'date', 'description', 'category'], 'properties': {'date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'The date on the receipt or of the payment'}, 'type': {'enum': ['income', 'expense'], 'type': 'string'}, 'amount': {'type': 'number', 'maximum': 10000000, 'description': 'In pounds, VAT included', 'exclusiveMinimum': 0}, 'category': {'enum': ['costOfGoods', 'constructionIndustryScheme', 'staffCosts', 'travelCosts', 'premisesRunningCosts', 'maintenanceCosts', 'adminCosts', 'advertisingCosts', 'businessEntertainmentCosts', 'interest', 'financialCharges', 'badDebt', 'professionalFees', 'depreciation', 'other', 'turnover'], 'type': 'string', 'description': 'For an expense, its HMRC self-employment box (SA103F): costOfGoods: materials, parts and stock used in the work or sold on, e.g. trade and building suppliers such as Screwfix, Toolstation, City Electrical Factors, Edmundson Electrical, Travis Perkins, Wickes; constructionIndustryScheme: payments to subcontractors under the Construction Industry Scheme; staffCosts: wages, salaries and pension contributions for employees, and payments to non-CIS subcontractors; travelCosts: car, van and travel: fuel, vehicle insurance, servicing and repairs, road tax, parking, tolls, public transport and taxi fares, and hotels and meals on overnight business trips; premisesRunningCosts: rent, business rates, power, heating, water, insurance and security for business premises (never vehicles); maintenanceCosts: repairs and maintenance of business premises, machinery and equipment; adminCosts: phone, broadband, postage, stationery, printing, small office items, and software and app subscriptions such as accounting or tax software (TapTax, Xero, QuickBooks); advertisingCosts: advertising, marketing and website costs; businessEntertainmentCosts: entertaining clients or customers; interest: interest on business loans and overdrafts; financialCharges: bank, overdraft, card and payment-processing charges; badDebt: money owed to the business that will not be paid and was counted as income; professionalFees: accountants, solicitors and other professional fees, and professional indemnity insurance; depreciation: depreciation of equipment (rare in a bank transaction); other: other allowable business costs, e.g. protective clothing, trade and professional body memberships, public liability insurance. For income: turnover (sales and fees) or other (other business income).'}, 'personal': {'type': 'boolean', 'default': False, 'description': 'True for a personal (non-business) payment'}, 'description': {'type': 'string', 'maxLength': 500, 'minLength': 1, 'description': 'Supplier or client, and what it was for'}}}
check_mtd_status
Check if Making Tax Digital applies
Say whether and when Making Tax Digital for Income Tax applies to someone, from their qualifying income: self-employment turnover plus property income, before expenses, as on their Self Assessment return. Employment and pension income do not count.
Read only
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['selfEmploymentTurnover'], 'properties': {'propertyIncome': {'type': 'number', 'default': 0, 'maximum': 100000000, 'minimum': 0}, 'selfEmploymentTurnover': {'type': 'number', 'maximum': 100000000, 'minimum': 0}}}
check_tax_code
Check a PAYE tax code
Check whether a UK PAYE tax code (e.g. 1257L, BR, K475, 1257L W1/M1) looks right for a salary and circumstances, explain what it means, and estimate any over- or under-payment. Flat-rate codes (BR, D0, D1) are only judged when hasMultipleJobs is known; without it the verdict is needs_info. Returns a verdict tier; refund figures are estimates, not amounts owed.
Read only
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['taxCode', 'grossSalary'], 'properties': {'taxCode': {'type': 'string', 'maxLength': 20, 'minLength': 1, 'description': 'The code as printed on a payslip or P45'}, 'taxYear': {'enum': ['2026-27', '2025-26', '2024-25', '2023-24', '2022-23'], 'type': 'string', 'description': 'Tax year the code applies to; defaults to the current one'}, 'scotland': {'type': 'boolean', 'description': 'True for a Scottish taxpayer'}, 'grossSalary': {'type': 'number', 'maximum': 1000000, 'minimum': 0, 'description': 'Annual gross pay from this job, in pounds'}, 'monthsOnCode': {'type': 'integer', 'maximum': 12, 'minimum': 1, 'description': 'For emergency codes: how many monthly payslips were paid on it so far'}, 'hasCompanyCar': {'type': 'boolean'}, 'hasMultipleJobs': {'type': 'boolean', 'description': 'Whether the person has another job or pension; omitted when unknown'}, 'hasPrivateMedical': {'type': 'boolean'}, 'hasMarriageAllowance': {'type': 'boolean'}, 'receivesStatePension': {'type': 'boolean'}, 'marriageAllowanceDirection': {'enum': ['transferring', 'receiving'], 'type': 'string'}}}
create_invoice
Create an invoice
Create a draft invoice in the signed-in person's TapTax, numbered in their sequence and using their saved business details. The invoice is created as a draft and is not sent. Free plans include 3 invoices; paid plans are unlimited.
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['clientName', 'items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object', 'required': ['description', 'unitPrice'], 'properties': {'quantity': {'type': 'number', 'default': 1, 'maximum': 99999, 'exclusiveMinimum': 0}, 'unitPrice': {'type': 'number', 'maximum': 10000000, 'minimum': 0, 'description': 'In pounds, before VAT'}, 'description': {'type': 'string', 'maxLength': 500, 'minLength': 1}}}, 'maxItems': 50, 'minItems': 1}, 'notes': {'type': 'string', 'maxLength': 2000}, 'dueDate': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Exact due date; otherwise dueInDays applies'}, 'dueInDays': {'type': 'integer', 'default': 30, 'maximum': 120, 'minimum': 0, 'description': 'Payment terms in days when no dueDate is given (0 = due on receipt)'}, 'issueDate': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Defaults to today'}, 'clientName': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'clientEmail': {'type': 'string', 'format': 'email', 'pattern': "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", 'description': 'The client email; required to send the invoice'}, 'clientAddress': {'type': 'string', 'maxLength': 500}, 'vatRatePercent': {'type': 'number', 'maximum': 100, 'minimum': 0, 'description': 'VAT rate for a VAT-registered business, e.g. 20'}}}
estimate_self_employed_tax
Estimate self-employed tax
Estimate UK income tax and Class 4 National Insurance for a sole trader from turnover and allowable expenses, with the take-home figure, effective and marginal rates, payments on account and tailored tips, from HMRC's published rates for the tax year. Works from the figures given, without a TapTax account.
Read only
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['turnover'], 'properties': {'taxYear': {'enum': ['2024-25', '2025-26', '2026-27'], 'type': 'string', 'description': 'UK tax year, e.g. "2026-27" (6 April 2026 to 5 April 2027). Defaults to the current one.'}, 'expenses': {'type': 'number', 'default': 0, 'maximum': 10000000, 'minimum': 0, 'description': 'Allowable business expenses, in pounds (excluding mileage if businessMiles is given)'}, 'turnover': {'type': 'number', 'maximum': 10000000, 'minimum': 0, 'description': 'Self-employed income before expenses, in pounds'}, 'otherIncome': {'type': 'number', 'maximum': 10000000, 'minimum': 0, 'description': 'Other taxable income such as a salary or pension, in pounds'}, 'businessMiles': {'type': 'number', 'maximum': 200000, 'minimum': 0, 'description': 'Business miles driven in a car or van, claimed at the approved mileage rate'}, 'studentLoanPlan': {'enum': ['none', 'plan1', 'plan2', 'plan4', 'postgrad'], 'type': 'string'}, 'taxDeductedAtSource': {'type': 'number', 'maximum': 10000000, 'minimum': 0, 'description': 'Tax already paid through PAYE or CIS deductions this year'}, 'pensionContributions': {'type': 'number', 'maximum': 1000000, 'minimum': 0, 'description': 'Personal pension contributions paid (relief at source), in pounds'}}}
get_mileage_summary
Get my mileage
The signed-in person's business mileage for a tax year: total miles, the deductible amount at the approved rates, and the most recent trips.
Read only
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'taxYear': {'enum': ['2024-25', '2025-26', '2026-27'], 'type': 'string'}}}
get_mtd_deadlines
Making Tax Digital deadlines
List the standard Making Tax Digital quarterly update periods and deadlines for a tax year, and which one is next. Updates are cumulative from 6 April.
Read only
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'taxYear': {'enum': ['2024-25', '2025-26', '2026-27'], 'type': 'string', 'description': 'Defaults to the current tax year'}}}
get_tax_position
Get my tax position
The signed-in person's tax year so far, as the TapTax dashboard shows it: business income, expenses and profit counted by the filing rule, the estimated income tax and Class 4 NI, how many transactions still need a business-or-personal decision, which quarterly updates they have filed through TapTax, and the next deadline.
Read only
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'taxYear': {'enum': ['2024-25', '2025-26', '2026-27'], 'type': 'string', 'description': 'Defaults to the current tax year'}}}
list_invoices
List my invoices
The signed-in person's invoices, newest first, with each one's live status (a sent invoice past its due date reads as overdue) and the totals outstanding and overdue.
Read only
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'limit': {'type': 'integer', 'default': 25, 'maximum': 100, 'minimum': 1}, 'status': {'enum': ['all', 'unpaid', 'overdue', 'paid', 'draft'], 'type': 'string', 'default': 'all', 'description': 'unpaid = sent, viewed or overdue'}}}
list_transactions
List my transactions
Search the signed-in person's income and expense transactions, newest first. Filter by tax year or dates, type, text in the description, or needsReview=true for the ones still waiting for a business-or-personal decision (the review queue).
Read only
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'to': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'On or before this date'}, 'from': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'On or after this date'}, 'type': {'enum': ['income', 'expense'], 'type': 'string'}, 'limit': {'type': 'integer', 'default': 25, 'maximum': 100, 'minimum': 1}, 'search': {'type': 'string', 'maxLength': 100, 'minLength': 2, 'description': 'Text to find in the description'}, 'taxYear': {'enum': ['2024-25', '2025-26', '2026-27'], 'type': 'string'}, 'needsReview': {'type': 'boolean'}}}
log_mileage_trip
Log a business trip
Record a business journey in the signed-in person's mileage log. TapTax prices it at the approved mileage rate for the tax year (tiered after 10,000 car miles). Commuting to a permanent workplace is not business mileage. Mileage tracking is on the Pro plan.
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['date', 'from', 'to', 'miles', 'purpose'], 'properties': {'to': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$'}, 'from': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'miles': {'type': 'number', 'maximum': 99999, 'description': 'Business miles for this trip', 'exclusiveMinimum': 0}, 'purpose': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'vehicle': {'enum': ['car', 'motorcycle', 'bicycle'], 'type': 'string', 'default': 'car', 'description': 'Vans count as car'}}}
mark_invoice_paid
Mark an invoice paid
Record that the client has paid an invoice (dated today). Stops any payment reminders.
Destructive Idempotent
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['invoiceId'], 'properties': {'invoiceId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}
prepare_quarterly_update
Prepare my quarterly update
Get the signed-in person's Making Tax Digital quarterly update ready: the cumulative income, expenses and profit from 6 April to the end of the quarter, what still needs reviewing, and a card with a button that opens TapTax to check and file it. Filing itself always happens in the TapTax app, never from the chat, so HMRC receives the details of the device the person files from.
Read only
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'quarter': {'type': 'integer', 'maximum': 4, 'minimum': 1, 'description': '1 = to 5 July, 2 = to 5 October, 3 = to 5 January, 4 = to 5 April'}, 'taxYear': {'enum': ['2024-25', '2025-26', '2026-27'], 'type': 'string', 'description': 'Defaults to the current tax year'}}}
send_invoice
Email an invoice to the client
Email an invoice with its PDF to the client address on it, from the person's business name. This sends a real email to the client.
Destructive Open world
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['invoiceId'], 'properties': {'invoiceId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}
update_transaction
Update or review a transaction
Change a transaction the signed-in person owns: mark it business or personal (this is how the review queue is cleared), or correct its category, description, amount or date.
Destructive Idempotent
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['id'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$'}, 'amount': {'type': 'number', 'maximum': 10000000, 'exclusiveMinimum': 0}, 'category': {'enum': ['costOfGoods', 'constructionIndustryScheme', 'staffCosts', 'travelCosts', 'premisesRunningCosts', 'maintenanceCosts', 'adminCosts', 'advertisingCosts', 'businessEntertainmentCosts', 'interest', 'financialCharges', 'badDebt', 'professionalFees', 'depreciation', 'other', 'turnover'], 'type': 'string'}, 'description': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'businessOrPersonal': {'enum': ['business', 'personal'], 'type': 'string'}}}
Added
prepare_quarterly_update
Oct. 4, 2026, 2:40 a.m.
Added
mark_invoice_paid
Oct. 4, 2026, 2:40 a.m.
Added
send_invoice
Oct. 4, 2026, 2:40 a.m.
Added
create_invoice
Oct. 4, 2026, 2:40 a.m.
Added
list_invoices
Oct. 4, 2026, 2:40 a.m.
Added
log_mileage_trip
Oct. 4, 2026, 2:40 a.m.
Added
update_transaction
Oct. 4, 2026, 2:40 a.m.
Added
add_transaction
Oct. 4, 2026, 2:40 a.m.
Added
get_mileage_summary
Oct. 4, 2026, 2:40 a.m.
Added
list_transactions
Oct. 4, 2026, 2:40 a.m.
Added
get_tax_position
Oct. 4, 2026, 2:40 a.m.
Added
get_mtd_deadlines
Oct. 4, 2026, 2:40 a.m.
Added
check_mtd_status
Oct. 4, 2026, 2:40 a.m.
Added
check_tax_code
Oct. 4, 2026, 2:40 a.m.
Added
estimate_self_employed_tax
Oct. 4, 2026, 2:40 a.m.