accounting-mcp

8 EU accounting (x402 USDC on Base): reconcile, VAT, invoicing. Free health.

Should I use this

Quality & Safety

A
Description quality
91%
Schema completeness
99%
Naming quality
89%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (2)

  • LOWTool 'reconcile_transactions' description lacks action verbin reconcile_transactions
  • LOWTool 'categorise_expenses' description lacks action verbin categorise_expenses

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,551Tokens (tool definitions)
~1.7 KBTypical response size
Moderate attention impact (1.21% 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": {
    "accounting-mcp": {
      "url": "https://xero.api.ainode.tech/mcp"
    }
  }
}

Remote endpoints

https://xero.api.ainode.tech/mcpstreamable-http

What it can do

Tool inventory

Tools (9)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
⚪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

Rate this Server

Evidence

Recent observations

verifiedversion not recorded9 tools
verifiedversion not recorded9 tools