Dominican Republic Invoices (DGII e-CF facturacion electronica)
Server Details
Dominican Republic DGII e-CF: AI agents authenticate and submit electronic invoices, stateless BYO.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Average 4.7/5 across 4 of 4 tools scored.
Each tool has a distinct purpose: get_seed fetches a seed, get_token exchanges it for a token, submit_invoice sends a signed invoice, query_status checks the status. No overlap.
All tools follow a consistent verb_noun pattern in snake_case: get_seed, get_token, query_status, submit_invoice.
Four tools cover the core authentication and invoice submission flow. Slightly minimal but appropriate for the narrow domain.
Covers the essential lifecycle: authentication, submission, and status check. Missing cancellation or retrieval tools, but not required for the stated purpose.
Available Tools
4 toolsget_seedARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and non-destructive behavior. The description adds that the server never signs or stores tokens/certificates, explicitly states no credentials are required, and details the environment header impact. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is somewhat lengthy but efficiently front-loaded with the core purpose. Each sentence adds necessary information: endpoint, authentication method, return format, environment, and compares to sibling tools. Minor redundancy could be trimmed but overall well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description fully explains the return format, the next step (get_token), authentication requirements, and environment configuration. It also addresses optional headers and contrasts with siblings, making it highly complete for a parameterless tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so the schema provides full coverage. The description adds value by explaining that the environment and optional owner-policy headers are set on the client side, not as parameters, which is helpful context. Baseline for zero parameters is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool fetches a fresh seed XML from the DGII Autenticacion service, specifying the HTTP method and endpoint. It distinguishes itself from siblings by being step 1 of authentication and explicitly contrasting with get_token.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use the tool (step 1 of DGII authentication), what it does not require (no credentials, no fiscal effect), and what to do after (pass seed to get_token). It also provides environment header instructions and clarifies authentication method, giving clear usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tokenAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| signed_seed_xml | Yes | The semilla XML from get_seed, SIGNED with your DGII-recognized digital certificate, base64-encoded (raw signed XML text is also accepted). Signing stays merchant-side; this server forwards the bytes untouched. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations show readOnlyHint=false, idempotentHint=false, destructiveHint=false. Description adds critical context: forwards bytes untouched, never stores token, token valid ~1 hour, certificate-based auth, environment header behavior. Exceeds what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Long description covering many details; well-structured (purpose, workflow, error, env, auth, optional headers) and front-loaded, but some redundancy (e.g., 'forwards bytes untouched' repeated). Could be more concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, but description explains response fields (token, expira, expedido) and token validity. Covers errors, environment, auth, and optional headers. Together with siblings and annotations, sufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage 100% with description of signed_seed_xml. Tool description expands with detail: origin (get_seed), signing requirement, format (base64 or raw XML), and that server forwards bytes untouched. Adds value beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it is step 2 of DGII authentication, exchanging signed semilla for a session token. Specifies HTTP endpoint and method, and distinguishes from siblings by mentioning token usage for submit_invoice and query_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly describes when to use: after get_seed, before submit_invoice/query_status. Provides error handling context (HTTP 400) and environment header usage. Lacks an explicit 'when not to use' but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_statusARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| token | No | The DGII session token from get_token (Bearer). Required. Can also be supplied via the x-dgii-token header. | |
| trackId | Yes | The trackId returned by submit_invoice (DGII acuse de recibo). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint, idempotentHint, etc. The description adds critical behavioral context: the server never signs/stores certificates, authentication is certificate-based, and there is no static API key. It also details the environment header and optional policy headers. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is fairly long but well-structured, starting with a clear step label, followed by HTTP path, return fields, enum values, polling logic, environment setup, and authentication details. Every sentence adds necessary information, though it could be slightly more terse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema is provided, so the description carries the full burden of explaining return values and behavior. It lists all fields, explains the estado enum in detail, and covers polling strategy, environment configuration, and authentication. The tool's complexity is fully addressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with basic descriptions. The description adds value by explaining that token can also be supplied via header and that trackId is the result from submit_invoice. This provides useful context beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'query the validation status of a submitted e-CF by its trackId'. It specifies the HTTP method and path, and distinguishes the tool from siblings by noting it is Step 4 after submit_invoice. No ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use instructions: poll after submit_invoice until estado is no longer 'En Proceso'. It explains each estado value and the corresponding action (poll again, accept, or fix and resubmit). No alternatives exist, so no exclusions needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_invoiceAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| token | No | The DGII session token from get_token (Bearer). Required. Can also be supplied via the x-dgii-token header. | |
| signed_ecf_xml | Yes | The FULL signed e-CF XML, base64-encoded (raw signed XML text is also accepted). You build and sign it with your DGII certificate merchant-side; this server forwards the bytes untouched. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false (modifies state) and destructiveHint=false. The description adds significant behavioral context: it forwards signed bytes unchanged, does not store token/certificate, explains DGII's reply (trackId as receipt not acceptance, error without trackId means rejection), and covers authentication details. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with core action and structured logically. It includes many details, sometimes verbose (e.g., owner-policy headers at end), but no unnecessary sentences. Slightly long but efficient for the complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description fully explains DGII's response format and error handling. It covers authentication (certificate-based), environment selection, and even optional headers. The agent has all necessary info to use this tool correctly, including polling with query_status.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions. The description adds value by explaining the token source (from get_token, Bearer, or header) and the signed_ecf_xml content (base64 or raw, must include e-NCF, RNC, etc.). This extra context aids the agent beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool submits an already-signed e-CF to DGII for validation, specifying the verb 'submit' and resource 'e-CF'. It distinguishes from siblings (e.g., query_status polls, get_token gets auth) by noting this is step 3, and clarifies it does not generate or sign XML.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit context: use after building and signing the e-CF, then poll with query_status. It mentions environment header and authentication requirements. However, it lacks an explicit 'when not to use' statement, though the step numbering and alternatives are implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!