Romania Invoice MCP
Romania Invoice MCP 🇷🇴 — How can my AI agent issue an e-Factura factura electronica in Romania?
Use it in 60 seconds
Paste this into your MCP client config (Claude Desktop, Cursor, Windsurf, or any MCP-capable agent):
{
"mcpServers": {
"romania-invoice": {
"type": "http",
"url": "https://inv-ro.wishpool.app/mcp"
}
}
}Nothing to install. Credentials, when you need them, travel as HTTP headers on each request and are never stored — see the threat model.
Or run it yourself
Would you rather not send production credentials to a server you do not control? Deploy this identical code to your own account and point your agent at your own URL:
git clone https://github.com/junter1989k-ai/romania-invoice-mcp && cd romania-invoice-mcp && npx vercel --prodMIT-licensed. Self-hosting removes us from the picture entirely, at no cost and with no loss of function.
Remote MCP server that lets any AI agent issue Romania e-Factura electronic invoices (factura electronica) into the national ANAF/SPV system. It builds UBL 2.1 CIUS-RO XML (Romania's CIUS of EN 16931) and uploads it under the merchant's own ANAF access token. Stateless, bring-your-own credentials, never stores anything.
Live endpoint: https://inv-ro.wishpool.app/mcp · Registry: app.wishpool/romania-invoice-mcp
Quick start
{
"mcpServers": {
"romania-invoice": {
"type": "http",
"url": "https://inv-ro.wishpool.app/mcp",
"headers": {
"x-anaf-token": "<your ANAF access token>",
"x-anaf-cif": "RO12345678"
}
}
}
}You complete a one-time ANAF OAuth in your browser with your qualified digital certificate and hold the access token (~90 days) + refresh token (~365 days). Requests default to the ANAF test rail (no fiscal effect); add x-anaf-mode: production for the live rail. Your certificate never reaches this server.
Tools
Tool | What it does |
| Build a UBL 2.1 CIUS-RO invoice from customer CIF + name + address + lines (name, qty, net unit price, VAT rate 19/9/5/0) and upload to ANAF e-Factura. Returns |
| Poll ANAF status by |
| Download the ANAF response ZIP (base64) by |
Amounts are in RON. No cancel at API level — corrections are new invoices. Token refresh is out of scope in v1 (the merchant refreshes via their own ANAF OAuth app).
Owner policy guardrails ride optional headers (x-agentpay-max-amount, x-agentpay-approval-above, x-agentpay-allowed-tools) — set by the human owner in client config; the agent cannot relax them.
Endpoints wrapped (ANAF e-Factura REST)
Base: TEST
https://api.anaf.ro/test/FCTEL/rest· PRODhttps://api.anaf.ro/prod/FCTEL/restUpload:
POST /upload?standard=UBL&cif={cif}(raw UBL XML body) →index_incarcareStatus:
GET /stareMesaj?id_incarcare={index}→ starein prelucrare|ok|nokDownload:
GET /descarcare?id={id_descarcare}→ ZIP
Develop
node test/serve.js # local server on :3232
node test/e2e.js # protocol + validation + VAT math + UBL structure + fake-token live probesSafety
Pure stateless translation layer over the national ANAF e-Factura API. The qualified certificate and OAuth stay with the merchant; the access token travels per-request in a header, nothing is stored. Privacy policy.
Sister servers
Local invoices, one family: Mexico CFDI (inv-mx) · Brazil NF-e (inv-br) · Chile DTE (inv-cl) · Peru CPE (inv-pe) · India GST (inv-in). Local payments in 81 countries: mcp.wishpool.app.
MIT licensed.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/junter1989k-ai/romania-invoice-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server