Each step feeds the next: extraction returns an object, validation takes that same object and recalculates the totals, and categorisation turns the vendor and line items into an account code — which is the whole manual part of processing a bill.
An MCP service for invoice processing, served over Streamable HTTP and paid per call with x402 on Base mainnet. Three tools: extract structured fields from an invoice, validate an extracted invoice, and classify it into an accounting expense category. The same three operations are also exposed as a REST API.
- Vendor, client, invoice number, dates, line items, subtotal, VAT, total, bank details, payment terms and a confidence score
- Input accepted as pasted text, a public URL, or a PDF encoded as base64
- A completeness and arithmetic check returning severity-ranked issues, recalculated totals and a totals match flag
- An expense category with a confidence score, a suggested nominal account code and a tax-deductible likelihood
- Fourteen fixed categories, from software subscription and cloud infrastructure through to payroll and unknown
You run it: npm install then npm run dev serves it on http://localhost:3101, and the endpoint in the configuration example is a placeholder for your own deployment. Payments stay off until you enable them and set a receiving address, both through environment variables. Each of the three operations carries its own per-call price.
One command — npx -y mcp-remote https://your-deployment.up.railway.app/mcp
