accounting-mcp
8 EU accounting (x402 USDC on Base): reconcile, VAT, invoicing. Free health.
Should I use this
Quality & Safety
Findings (2)
- LOWin reconcile_transactions
- LOWin categorise_expenses
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
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": {
"accounting-mcp": {
"url": "https://xero.api.ainode.tech/mcp"
}
}
}Remote endpoints
https://xero.api.ainode.tech/mcpstreamable-httpWhat it can do
Tool inventory
Tools (9)
⚪health(echo)
Health check. Returns server status and optional echo.
Input Schema
{
"type": "object",
"properties": {
"echo": {
"type": "string",
"description": "Optional string to echo back"
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪reconcile_transactions(api_key_hash, from_date, to_date)
Match bank statement lines against unreconciled Xero transactions. Returns confidence-scored matches (>=0.8 matched, 0.5-0.8 suggested, <0.5 unmatched).
Input Schema
{
"type": "object",
"properties": {
"api_key_hash": {
"type": "string",
"description": "Customer API key hash identifying Xero token"
},
"from_date": {
"type": "string",
"description": "Start date filter (YYYY-MM-DD)"
},
"to_date": {
"type": "string",
"description": "End date filter (YYYY-MM-DD)"
}
},
"required": [
"api_key_hash"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪confirm_reconciliation(matches, api_key_hash)
Apply confirmed reconciliation matches to Xero. Marks matched bank transactions as reconciled.
Input Schema
{
"type": "object",
"properties": {
"matches": {
"type": "array",
"items": {
"type": "object",
"properties": {
"statement_line_id": {
"type": "string"
},
"bank_transaction_id": {
"type": "string"
}
},
"required": [
"statement_line_id",
"bank_transaction_id"
],
"additionalProperties": false
},
"description": "Array of confirmed statement-to-transaction matches"
},
"api_key_hash": {
"type": "string",
"description": "Customer API key hash identifying Xero token"
}
},
"required": [
"matches",
"api_key_hash"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪categorise_expenses(api_key_hash, from_date, to_date, region)
Suggest Portuguese tax categories for uncategorised Xero expenses. Returns category, VAT tier, deductibility, and VAT breakdown per transaction.
Input Schema
{
"type": "object",
"properties": {
"api_key_hash": {
"type": "string",
"description": "Customer API key hash identifying Xero token"
},
"from_date": {
"type": "string",
"description": "Start date filter (YYYY-MM-DD)"
},
"to_date": {
"type": "string",
"description": "End date filter (YYYY-MM-DD)"
},
"region": {
"type": "string",
"enum": [
"mainland",
"azores",
"madeira"
],
"default": "mainland",
"description": "Portuguese tax region"
}
},
"required": [
"api_key_hash"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪apply_categories(categories, api_key_hash)
Apply confirmed Portuguese tax categories to Xero transactions. Updates AccountCode and TaxType.
Input Schema
{
"type": "object",
"properties": {
"categories": {
"type": "array",
"items": {
"type": "object",
"properties": {
"transaction_id": {
"type": "string"
},
"category_code": {
"type": "string"
},
"region": {
"type": "string",
"enum": [
"mainland",
"azores",
"madeira"
]
}
},
"required": [
"transaction_id",
"category_code"
],
"additionalProperties": false
},
"description": "Array of transaction-to-category assignments"
},
"api_key_hash": {
"type": "string",
"description": "Customer API key hash identifying Xero token"
}
},
"required": [
"categories",
"api_key_hash"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢calculate_vat(amount, category, region, is_b2b, counterpart_country)
Calculate Portuguese VAT for a given amount, category, and region. Supports Mainland, Azores, and Madeira rates. Detects intra-community B2B reverse charge.
Input Schema
{
"type": "object",
"properties": {
"amount": {
"type": "number",
"exclusiveMinimum": 0,
"description": "Net amount (ex-VAT) to calculate VAT on"
},
"category": {
"type": "string",
"description": "Portuguese tax category code (e.g. office_supplies, food_restaurant)"
},
"region": {
"type": "string",
"enum": [
"mainland",
"azores",
"madeira"
],
"default": "mainland",
"description": "Portuguese tax region"
},
"is_b2b": {
"type": "boolean",
"default": false,
"description": "Whether the transaction is business-to-business"
},
"counterpart_country": {
"type": "string",
"minLength": 2,
"maxLength": 2,
"description": "ISO 3166-1 alpha-2 country code of the counterpart"
}
},
"required": [
"amount"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡draft_invoice(contact_name, contact_email, line_items, due_date, currency, ...)
Create a DRAFT invoice in Xero with VAT preview. Returns line totals and tax amounts for review before sending.
Input Schema
{
"type": "object",
"properties": {
"contact_name": {
"type": "string",
"description": "Invoice recipient name"
},
"contact_email": {
"type": "string",
"format": "email",
"description": "Invoice recipient email address"
},
"line_items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"description": {
"type": "string",
"description": "Line item description"
},
"amount": {
"type": "number",
"description": "Unit amount (ex-VAT)"
},
"quantity": {
"type": "number",
"default": 1,
"description": "Quantity (defaults to 1)"
},
"account_code": {
"type": "string",
"default": "200",
"description": "Xero account code (defaults to 200 - Sales)"
},
"tax_type": {
"type": "string",
"description": "Xero tax type override (e.g. OUTPUT2, EXEMPTOUTPUT)"
},
"category": {
"type": "string",
"description": "Portuguese tax category for automatic VAT lookup (e.g. professional_services, software_licenses)"
}
},
"required": [
"description",
"amount"
],
"additionalProperties": false
},
"description": "Invoice line items"
},
"due_date": {
"type": "string",
"description": "Due date (YYYY-MM-DD)"
},
"currency": {
"type": "string",
"default": "EUR",
"description": "Currency code (defaults to EUR)"
},
"reference": {
"type": "string",
"description": "Invoice reference number"
},
"notes": {
"type": "string",
"description": "Notes for internal use"
},
"api_key_hash": {
"type": "string",
"description": "Customer API key hash identifying Xero token"
}
},
"required": [
"contact_name",
"contact_email",
"line_items",
"due_date",
"api_key_hash"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡send_invoice(invoice_id, api_key_hash)
Authorise a DRAFT invoice and email it to the contact via Xero. Two-step: sets status to AUTHORISED then triggers email.
Input Schema
{
"type": "object",
"properties": {
"invoice_id": {
"type": "string",
"description": "Xero InvoiceID to authorise and send"
},
"api_key_hash": {
"type": "string",
"description": "Customer API key hash identifying Xero token"
}
},
"required": [
"invoice_id",
"api_key_hash"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪generate_report(report_type, from_date, to_date, api_key_hash)
Generate a financial report: P&L, Balance Sheet, Cash Flow (indirect method from balance sheet deltas), or VAT Summary with Portuguese SAF-T filing hints.
Input Schema
{
"type": "object",
"properties": {
"report_type": {
"type": "string",
"enum": [
"pnl",
"balance_sheet",
"cash_flow",
"vat_summary"
],
"description": "Report type to generate"
},
"from_date": {
"type": "string",
"description": "Start date (YYYY-MM-DD, defaults to 1st of current month)"
},
"to_date": {
"type": "string",
"description": "End date (YYYY-MM-DD, defaults to today)"
},
"api_key_hash": {
"type": "string",
"description": "Customer API key hash identifying Xero token"
}
},
"required": [
"report_type",
"api_key_hash"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Community
Evidence