uruguay-invoice-mcp
Let AI agents submit Uruguay DGI e-Factura documents (CFE) — you WS-Security-sign the SOAP envelope with your own Uruguayan CA certificate, this server relays…
What it can do
- Submit Sobre: Submit a Sobre (envelope of one or more signed CFEs — e-Factura / e-Ticket and their notas) to Uruguay DGI e-Factura via the EFACRECEPCIONSOBRE webservice operation. You pass an ALREADY
- Submit Reporte Diario: Submit a Reporte Diario (daily report of the CFEs issued that day, including any anulados) to Uruguay DGI via the EFACRECEPCIONREPORTE webservice operation. Same shape as submit
- Query Envio Status: Query the status of a previous DGI submission via the EFACCONSULTARESTADOENVIO webservice operation — e.g. to fetch the 2nd message (per-CFE response) using the consulta_token + co
What data it sees
Do you need an account
No: the server works without sign-in
Let AI agents submit Uruguay DGI e-Factura documents (CFE) — you WS-Security-sign the SOAP envelope with your own Uruguayan CA certificate, this server relays it to DGI and translates the reply. Includes local IVA 22/10/0% math and an envelope builder. Stateless: nothing is signed or stored here.
How to connect
How to connect uruguay-invoice-mcp to Claude
The server address to paste into Claude settings:
https://uruguay-invoice-mcp--wishpool.run.tools
- Open Claude (claude.ai or the desktop app).
- Go to Settings → Connectors.
- Click Add custom connector.
- Paste the server address copied below into Remote MCP server URL and click Add.
- In a chat, click + → Connectors and switch the new connector on.
Custom connectors are available on Free, Pro, Max, Team and Enterprise plans (Free is limited to one). On Team and Enterprise an organization Owner adds the connector first under Organization settings → Connectors.
Authorization
After you click Add, a sign-in window for the service opens. Sign in with your own account and approve access. Claude never sees your password.
How to connect uruguay-invoice-mcp to ChatGPT
The server address to paste into ChatGPT settings:
https://uruguay-invoice-mcp--wishpool.run.tools
- Open ChatGPT in a browser (chatgpt.com). A Plus, Pro, Business, Enterprise or Edu plan is required.
- Turn on developer mode once: Settings → Apps → Advanced settings → Developer mode.
- Open Settings → Connectors and click Create.
- Fill in the form: Name (anything), Description (one line about what the service does), MCP server URL (copy it below).
- Under Authentication choose OAuth if the service requires sign-in, otherwise None. Click Create.
- In a new chat open + → Apps/Connectors and enable the connector.
OpenAI has renamed this section before (Connectors → Apps/Plugins). If the label differs, search settings for "developer mode". On Business/Enterprise workspaces an admin must allow custom connectors first.
Authorization
On first use ChatGPT opens the service's sign-in window. Sign in and approve access.
How to connect uruguay-invoice-mcp to Cursor
The server address to paste into Cursor settings:
https://uruguay-invoice-mcp--wishpool.run.tools
Fastest: click Open in Cursor below and confirm the prompt.
Manually:
- In Cursor open Settings → Cursor Settings → MCP and click Add new global MCP server.
- Paste the JSON copied below into
~/.cursor/mcp.json(per project:.cursor/mcp.jsonin the repo root). - Save the file. The server appears in the MCP list; authorize it there if asked.
Authorization
If the service needs sign-in, an authorize button appears next to the server in the MCP list.
Server tool list (6)
Raw names from tools/list. Only developers need these.
| submit_sobre | Submit a Sobre (envelope of one or more signed CFEs — e-Factura / e-Ticket and their notas) to Uruguay DGI e-Factura via the EFACRECEPCIONSOBRE webservice operation. You pass an ALREADY WS-Security-signed SOAP envelope (base64); this server forwards it to DGI and translates the reply. Result: accepted=true with estado AS (Sobre Recibido — DGI accepted the envelope) or accepted=false with estado BS (Sobre Rechazado — see motivos_rechazo). On acceptance DGI returns consulta_token + consulta_fechahora — use them later with query_envio_status to fetch the 2nd message (per-CFE response). How signing works: DGI requires message-level WS-Security — you sign the CFE XML, build + sign the Sobre, and X.509-sign the SOAP envelope with your Uruguayan CA certificate (e.g. from Correo Uruguayo), all merchant-side. This server stores nothing and never sees your private key; it forwards the finished envelope. Endpoint headers: x-dgi-mode = test (default, ePrueba sandbox — no fiscal effect) | homologacion | produccion; or x-dgi-endpoint to point at an explicit DGI webservice URL. Owner-policy headers x-agentpay-max-amount / x-agentpay-approval-above / x-agentpay-allowed-tools are honored. |
| submit_reporte_diario | Submit a Reporte Diario (daily report of the CFEs issued that day, including any anulados) to Uruguay DGI via the EFACRECEPCIONREPORTE webservice operation. Same shape as submit_sobre: pass an ALREADY WS-Security-signed SOAP envelope (base64) whose Body wraps your signed Reporte Diario XML; this server forwards it. Result carries the DGI acknowledgement (estado + any motivos_rechazo). The daily report is mandatory for emisores electrónicos. How signing works: DGI requires message-level WS-Security — you sign the CFE XML, build + sign the Sobre, and X.509-sign the SOAP envelope with your Uruguayan CA certificate (e.g. from Correo Uruguayo), all merchant-side. This server stores nothing and never sees your private key; it forwards the finished envelope. Endpoint headers: x-dgi-mode = test (default, ePrueba sandbox — no fiscal effect) | homologacion | produccion; or x-dgi-endpoint to point at an explicit DGI webservice URL. Owner-policy headers x-agentpay-max-amount / x-agentpay-approval-above / x-agentpay-allowed-tools are honored. |
| query_envio_status | Query the status of a previous DGI submission via the EFACCONSULTARESTADOENVIO webservice operation — e.g. to fetch the 2nd message (per-CFE response) using the consulta_token + consulta_fechahora that submit_sobre returned. Pass an ALREADY WS-Security-signed SOAP envelope (base64) whose Body wraps your signed consulta request; this server forwards it and returns the DGI response document. Safe/read-only at DGI. How signing works: DGI requires message-level WS-Security — you sign the CFE XML, build + sign the Sobre, and X.509-sign the SOAP envelope with your Uruguayan CA certificate (e.g. from Correo Uruguayo), all merchant-side. This server stores nothing and never sees your private key; it forwards the finished envelope. Endpoint headers: x-dgi-mode = test (default, ePrueba sandbox — no fiscal effect) | homologacion | produccion; or x-dgi-endpoint to point at an explicit DGI webservice URL. Owner-policy headers x-agentpay-max-amount / x-agentpay-approval-above / x-agentpay-allowed-tools are honored. |
| build_cfe_envelope | Helper (pure-local, NO network, NO signing): given your signed inner DGI XML document, returns the exact SOAP 1.1 envelope Body you must WS-Security-sign before submitting. This makes the DGI Datain/xmlData structure explicit so you sign the right bytes. operation = sobre (EFACRECEPCIONSOBRE, default) | reporte (EFACRECEPCIONREPORTE) | consulta (EFACCONSULTARESTADOENVIO). Returns the envelope XML plus its base64 (unsigned — you still must add the WS-Security X.509 signature over the Body, then base64 the SIGNED envelope for submit_sobre/submit_reporte_diario/query_envio_status). Nothing is sent anywhere. |
| calc_iva | Compute Uruguay IVA and CFE MontosTotales from line items (pure-local, NO network). Uruguay IVA: Tasa Básica 22%, Tasa Mínima 10%, Exento 0%. Give items with net_price (tax-EXCLUSIVE unit price), optional quantity, and either iva_rate (22 | 10 | 0) or indfact (3 | 2 | 1). Returns the CFE MontosTotales fields: MntNetoIvaTasaBasica / MntNetoIvaTasaMin / MntExento, IVATasaBasica=22 / IVATasaMin=10, MntIVATasaBasica / MntIVATasaMin, and MntTotal — ready to place in the CFE before you sign it. Amounts in UYU (or set moneda). |
| get_dgi_info | Reference (pure-local, NO network): the DGI e-Factura webservice endpoints, the three SOAP operations and their SOAPActions, the CFE document-type codes (TipoCFE), and the IVA rates/namespaces — so an agent can orient before signing. The test (ePrueba) endpoint is verified live; produccion must be confirmed against your DGI onboarding. No credentials needed. |