Odel
Brazil Invoices (NFS-e nota fiscal de serviço)

Brazil Invoices (NFS-e nota fiscal de serviço)

@junter1989k-aiJavaScriptMITUpdated 1mo ago

Brazil NFS-e service invoices for AI agents via Focus NFe and NFe.io. Stateless, never stores data.

Server endpointStreamable HTTPNo authProbed

This is the third-party server itself — Odel doesn't run it. Hitting this URL directly talks straight to the upstream server with no auth or proxying. Connect through Odel to front it with managed auth.

Brazil Invoice MCP 🇧🇷 — How can my AI agent issue an NFS-e (nota fiscal de serviço) in Brazil?

Use it in 60 seconds

Paste this into your MCP client config (Claude Desktop, Cursor, Windsurf, or any MCP-capable agent):

{
  "mcpServers": {
    "brazil-invoice": {
      "type": "http",
      "url": "https://inv-br.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:

Deploy with Vercel

git clone https://github.com/junter1989k-ai/brazil-invoice-mcp && cd brazil-invoice-mcp && npx vercel --prod

MIT-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 Brazil NFS-e electronic service invoices (nota fiscal de serviço eletrônica, authorized by the municipality/prefeitura) via Focus NFe. Stateless, bring-your-own credentials, never stores anything.

Live endpoint: https://inv-br.wishpool.app/mcp · Registry: app.wishpool/brazil-invoice-mcp

Quick start

{
  "mcpServers": {
    "brazil-invoice": {
      "type": "http",
      "url": "https://inv-br.wishpool.app/mcp",
      "headers": { "x-focusnfe-token": "your_homologacao_token" }
    }
  }
}

Free homologação (sandbox) tokens from focusnfe.com.br issue test NFS-e with no fiscal effect. Add "x-focusnfe-mode": "production" with your produção token to issue real ones (sandbox is the default). Your digital certificate and inscrição municipal stay in your own Focus NFe account — this server never sees them.

Tools

ToolWhat it does
create_invoiceSubmit an NFS-e (nota fiscal de serviço) — provider CNPJ + inscrição municipal, buyer name + CPF/CNPJ, valor_servicos + discriminacao + item_lista_servico in, a ref out. Async: returns PROCESSING; poll query_invoice.
query_invoiceStatus check by ref: PROCESSING, AUTHORIZED (with numero + codigo_verificacao + url), ERROR (with message), or CANCELED.
cancel_invoiceVoid an authorized NFS-e at the prefeitura with a justificativa (15–255 chars).

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.

Async flow

NFS-e authorization at the prefeitura is asynchronous. create_invoice returns status: PROCESSING and a ref; call query_invoice with that ref until it reads AUTHORIZED (nota autorizada) or ERROR.

Develop

node test/serve.js   # local server on :3227
node test/e2e.js     # protocol + validation + fake-token live probes (real homologação endpoint)

Safety

Pure stateless translation layer. The prefeitura/SEFAZ authorization burden sits with Focus NFe; credentials travel per-request in headers, nothing is stored. Privacy policy.

Roadmap

v1 covers NFS-e (service invoices) — the fit for digital and service merchants. NF-e (nota fiscal eletrônica for physical goods) is planned for v2.

Sister servers

Mexico CFDI invoices are live: inv-mx.wishpool.app. Local payments in 81 countries, one family: mcp.wishpool.app · Taiwan e-invoice 電子發票 included. More invoice countries coming: Chile DTE · Peru CPE · India GST · Poland KSeF · Romania e-Factura · Italy SdI.

MIT licensed.