dominican-republic-invoice-mcp
Let AI agents issue Dominican Republic e-CF invoices on the official DGII rail — get a seed, sign it with your DGII certificate, exchange for a token, submit…
What it can do
- Get Seed: Step 1 of DGII authentication: fetch a fresh "semilla" (seed) XML from the DGII Autenticacion service — GET /Autenticacion/api/Autenticacion/Semilla. No credentials, no fiscal effect. Return
- Get Token: Step 2 of DGII authentication: exchange your SIGNED semilla for a session token — POST /Autenticacion/api/Autenticacion/ValidarSemilla (multipart field "xml"). You take the seed from get_se
- Submit Invoice: Step 3: submit an ALREADY-SIGNED e-CF (comprobante fiscal electronico) to DGII for validation — POST /Recepcion/api/FacturasElectronicas (multipart field "xml", Bearer token). Your bil
What data it sees
Do you need an account
No: the server works without sign-in
Let AI agents issue Dominican Republic e-CF invoices on the official DGII rail — get a seed, sign it with your DGII certificate, exchange for a token, submit your signed e-CF and poll the TrackId. Stateless: signing stays merchant-side, nothing stored. Free TesteCF sandbox.
How to connect
How to connect dominican-republic-invoice-mcp to Claude
The server address to paste into Claude settings:
https://dominican-republic-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 dominican-republic-invoice-mcp to ChatGPT
The server address to paste into ChatGPT settings:
https://dominican-republic-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 dominican-republic-invoice-mcp to Cursor
The server address to paste into Cursor settings:
https://dominican-republic-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 (4)
Raw names from tools/list. Only developers need these.
| get_seed | Step 1 of DGII authentication: fetch a fresh "semilla" (seed) XML from the DGII Autenticacion service — GET /Autenticacion/api/Autenticacion/Semilla. No credentials, no fiscal effect. Returns { seed_xml, valor, fecha }: a short-lived XML document you must SIGN with your DGII-recognized digital certificate (Digifirma or another approved CA), then pass to get_token. This server only fetches the seed — the signing happens on YOUR side. Environment header (set once in your MCP client, per-request): x-dgii-env: test (default = TesteCF certificacion, open, NO fiscal effect) | prod (eCF produccion, real fiscal effect). There is NO static API key — DGII authentication is certificate-based: you sign the semilla and each e-CF with your own DGII-recognized digital certificate (Digifirma or another approved CA). This server never signs and never stores a token or certificate. Optional owner-policy headers x-agentpay-max-amount / x-agentpay-approval-above / x-agentpay-allowed-tools. |
| get_token | Step 2 of DGII authentication: exchange your SIGNED semilla for a session token — POST /Autenticacion/api/Autenticacion/ValidarSemilla (multipart field "xml"). You take the seed from get_seed, sign it with your DGII-recognized digital certificate merchant-side, and pass it here as base64 (signed_seed_xml). Returns { token, expira, expedido } — a Bearer token valid ~1 hour; use it for submit_invoice and query_status. If the seed is not correctly signed DGII returns HTTP 400 (e.g. "Archivo no valido." when the file is missing/not XML). This server forwards the signed bytes untouched and never stores the token. Environment header (set once in your MCP client, per-request): x-dgii-env: test (default = TesteCF certificacion, open, NO fiscal effect) | prod (eCF produccion, real fiscal effect). There is NO static API key — DGII authentication is certificate-based: you sign the semilla and each e-CF with your own DGII-recognized digital certificate (Digifirma or another approved CA). This server never signs and never stores a token or certificate. Optional owner-policy headers x-agentpay-max-amount / x-agentpay-approval-above / x-agentpay-allowed-tools. |
| submit_invoice | Step 3: submit an ALREADY-SIGNED e-CF (comprobante fiscal electronico) to DGII for validation — POST /Recepcion/api/FacturasElectronicas (multipart field "xml", Bearer token). Your billing software BUILDS the e-CF XML (e-NCF, RNC emisor/comprador, Totales, ITBIS) and SIGNS it with your DGII-recognized certificate; this server does NOT generate or sign the XML — it forwards the signed bytes with your token. DGII replies { trackId, mensaje, error }: a trackId is your acuse de recibo (receipt) — the document was RECEIVED for asynchronous validation, NOT yet accepted. Poll query_status with the trackId until estado is "Aceptado" (fiscally valid) / "Aceptado Condicional" / "Rechazado" (rejected — read mensajes, fix, resubmit with a new e-NCF). An "error" with no trackId means DGII rejected the submission outright. Environment header (set once in your MCP client, per-request): x-dgii-env: test (default = TesteCF certificacion, open, NO fiscal effect) | prod (eCF produccion, real fiscal effect). There is NO static API key — DGII authentication is certificate-based: you sign the semilla and each e-CF with your own DGII-recognized digital certificate (Digifirma or another approved CA). This server never signs and never stores a token or certificate. Optional owner-policy headers x-agentpay-max-amount / x-agentpay-approval-above / x-agentpay-allowed-tools. |
| query_status | Step 4: query the validation status of a submitted e-CF by its trackId — GET /ConsultaResultado/api/Consultas/Estado?TrackId={id} (Bearer token). Returns { trackId, estado, codigo, rnc, encf, secuenciaUtilizada, fechaRecepcion, mensajes[] }. estado enum: "En Proceso" (still validating — poll again) / "Aceptado" (ACCEPTED, fiscally valid) / "Aceptado Condicional" (accepted with observations in mensajes) / "Rechazado" (REJECTED — read mensajes for the reason, fix and resubmit with a new e-NCF). Poll this after submit_invoice until estado is no longer "En Proceso". Environment header (set once in your MCP client, per-request): x-dgii-env: test (default = TesteCF certificacion, open, NO fiscal effect) | prod (eCF produccion, real fiscal effect). There is NO static API key — DGII authentication is certificate-based: you sign the semilla and each e-CF with your own DGII-recognized digital certificate (Digifirma or another approved CA). This server never signs and never stores a token or certificate. Optional owner-policy headers x-agentpay-max-amount / x-agentpay-approval-above / x-agentpay-allowed-tools. |