MCP
Let compatible assistants use Invoicey through validated tools.
Invoicey exposes its invoicing tools over the Model Context Protocol, so an assistant that speaks MCP can look up companies, build invoices, issue them, mark them paid and email them.
MCP tools call the same handlers and validate against the same schema as the web app. The supported fields and rules stay aligned.
Connect
Streamable HTTP at https://invoicey.app/api/mcp. Create a personal key under
Settings → API keys — see API keys.
{
"mcpServers": {
"invoicey": {
"url": "https://invoicey.app/api/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}Your key resolves to your user and binds every tool call to your default workspace (updated when you switch workspaces or change it under Settings → API keys).
Client-specific setup: Cursor · Claude Code.
The tools
| Tool | Purpose |
|---|---|
lookup_business | ARES lookup by IČO |
search_business | ARES search by company name |
create_invoice | Build, validate and render an invoice |
list_invoices | Summaries, with status and displayStatus |
get_invoice | One invoice with its full payload |
mark_invoice_paid | Record payment |
send_invoice_email | Email the PDF and ISDOC |
list_presets · get_preset · save_preset · delete_preset | Manage presets |
Full input and output shapes: MCP tool reference.
Presets
Presets are what make this safe enough to use.
Issuer presets hold a complete issuer — name, IČO, DIČ, address, bank account, VAT status.
create_invoice takes a preset ID and injects the issuer server-side. The model never supplies the
"from" party, so it cannot hallucinate your bank account onto an invoice.
Invoice template presets hold a partial draft — standard line items, VAT settings, payment defaults — merged underneath whatever the assistant specifies. Useful for a monthly retainer where only the period changes.
Save presets from the assistant once, then refer to them by name or ID.
Validation is not verification
The schema guarantees an invoice is well-formed, not that it is right. It cannot tell that the model billed 40 hours when you worked 4. Read what it produced — issuing and sending are the irreversible steps.
Try a complete request
Look up NFCtron by IČO. Using my "s.r.o." issuer preset, invoice them 40 hours of consulting at 1 800 CZK, due in 14 days. Return the draft for review; do not issue it yet.
Limitations
- One workspace per key. A personal key binds to your default workspace; there is no per-call override. Change the default via the sidebar switcher or Settings → API keys.
- No scopes. A key is full access to that workspace, including sending email.
- No import tool. Historical import is web-only by design.
- No
unmark_invoice_paid. Web only. - MCP does not create issuers or clients. Those are managed in the web UI; MCP consumes them through presets.