arca-agro-mcp
This server is an MCP read-only interface to ARCA (ex AFIP) agro web services, letting AI agents query electronic grain transport documents (CPE), taxpayer records, and invoices.
consultar_cpe: Fetch full details of a grain waybill by its CTG number (grain type, weights, status, dates, involved CUITs).
cpes_recibidas_en_planta: List grain waybills that arrived at a specific plant within a date range; returns totals by grain plus the 20 most recent (or full detail if
detalle: true).tipos_de_grano: Get the current grain codes recognized by ARCA, useful for translating codes from waybills.
ultimo_nro_orden: Retrieve the last issued waybill order number for a branch and CPE type, to detect numbering gaps.
consultar_padron: Look up a CUIT's legal name, tax key status, address, tax regime, taxes, and activities.
consultar_comprobante: Query details of an already issued invoice (amounts, VAT, CAE, status) — read-only, no authorization.
estado_servicios: Check if ARCA's servers are responding without using credentials, to distinguish outages from credential issues.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@arca-agro-mcp¿Qué dice la carta de porte con CTG 12345678901?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
arca-agro-mcp
El primer servidor MCP que consulta cartas de porte electrónicas de ARCA. Los demás MCP argentinos del organismo se detienen en factura electrónica y padrón.
Servidor MCP para consultar los web services agropecuarios de ARCA (ex AFIP) desde un agente: cartas de porte electrónicas, padrón de contribuyentes y comprobantes.
Es de solo lectura, y eso no es una convención de este repo sino una decisión
de diseño. Ninguna herramienta autoriza, confirma o anula documentos fiscales,
y la librería que usa por debajo —arca-agro-client—
tampoco implementa esas operaciones: no hay una bandera que las habilite. Una
carta de porte anulada por error es un hecho irreversible ante el organismo, y un
modelo de lenguaje no debería tener esa capacidad al alcance. Hay tests que
fallan si aparece una herramienta con nombre de escritura.
Instalación
No hace falta instalar nada: se descarga solo al arrancar.
Claude Code
claude mcp add arca-agro \
--env ARCA_CERT=/ruta/al/certificado.crt \
--env ARCA_KEY=/ruta/a/la/clave.key \
--env ARCA_CUIT=30123456789 \
-- npx -y arca-agro-mcpClaude Desktop u otro cliente con archivo de configuración
{
"mcpServers": {
"arca-agro": {
"command": "npx",
"args": ["-y", "arca-agro-mcp"],
"env": {
"ARCA_CERT": "/ruta/al/certificado.crt",
"ARCA_KEY": "/ruta/a/la/clave.key",
"ARCA_CUIT": "30123456789"
}
}
}
}Necesita Node 18+ y el comando openssl disponible, que se usa para firmar
localmente el pedido de ticket.
Related MCP server: Receita Federal: NFE
Qué hace falta antes
Un certificado X.509 emitido por ARCA para tu CUIT, con su clave privada. Se tramita en el portal, en Administración de Certificados Digitales.
Tener habilitado cada servicio en el Administrador de Relaciones. WSCPE, padrón y comprobantes se habilitan por separado.
La clave privada nunca sale de tu máquina: se usa para firmar el pedido de ticket y nada más. Aun así, es una credencial fiscal — tratala como tal y no la pongas en un archivo de configuración compartido.
Herramientas
Herramienta | Qué hace |
| Datos de una carta de porte por su CTG: grano, pesos, estado, CUIT que intervienen. |
| Cartas de porte que llegaron a una planta propia en un rango. Es la consulta del que recibe. |
| Códigos de grano que ARCA reconoce hoy, consultados en vivo. |
| Último número de orden emitido, para detectar saltos de numeración. |
| Razón social, estado de clave, domicilio, régimen e impuestos de un CUIT. |
| Detalle de un comprobante emitido: importes, IVA, CAE. |
| Si los servidores de ARCA responden. No usa el certificado. |
Preguntas que contesta bien:
¿Qué dice la carta de porte con CTG 12345678901?
¿Cuántas toneladas de soja entraron a la planta 22397 entre marzo y mayo?
¿Quién es el CUIT 30500120882 y qué régimen tiene?
¿Hay algún salto en la numeración de mis cartas de porte?
¿ARCA está caído o es problema de mis credenciales?
Sobre el volumen de datos
cpes_recibidas_en_planta devuelve por defecto un resumen: totales por grano más las
20 cartas más recientes. Una campaña entera son cientos de cartas y volcarlas
todas llena la ventana de contexto sin que nadie las lea. Con detalle: true se
listan completas — conviene solo para rangos cortos.
El PDF de la carta de porte tampoco viaja: pesa cientos de KB y no le sirve a un modelo. Si hace falta el archivo, se baja con la librería.
Qué hay abajo
Todo el trabajo sucio lo hace arca-agro-client,
donde además están documentados los quirks que cuesta descubrir: por qué el
Ticket de Acceso hay que cachearlo en disco, por qué el SOAPAction de WSCPE no
coincide con el nombre del elemento raíz, y por qué los comprobantes no conectan
con fetch.
Lo que ARCA no deja hacer
No hay forma de listar por web service las cartas de porte que uno despacha.
consultarCPEPorDestino lista lo que llega a una planta propia y exige su
número. Un productor que solo despacha no tiene con qué: ese listado solo se
consigue por el portal. Conviene saberlo antes de perder una tarde buscando el
parámetro correcto.
Qué no cubre
WSLPG (liquidación primaria de granos) no está: el servicio no permite listar por CUIT ni devuelve el PDF, así que no resuelve el caso de uso real, que es conciliar todo lo recibido.
Tampoco los remitos electrónicos ni las liquidaciones sectoriales (tabaco, lechería, pecuario). Se pueden agregar.
Desarrollo
npm install
npm run check
npm test
npx @modelcontextprotocol/inspector node server.jsAviso
Proyecto independiente, sin relación con ARCA. Verificá contra la fuente oficial antes de tomar una decisión fiscal o comercial.
Licencia
MIT
Available Tools
7 toolsconsultar_comprobanteConsultar un comprobante emitidoA
Detalle de un comprobante ya emitido: importes, IVA, CAE y estado. Solo consulta: no autoriza comprobantes ni pide CAE.
| Name | Required | Description | Default |
|---|---|---|---|
| numero | Yes | Número de comprobante | |
| puntoVenta | Yes | Punto de venta | |
| tipoComprobante | Yes | Tipo de comprobante (1 = Factura A, 6 = Factura B, ...) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It clearly states 'Solo consulta' and 'no autoriza comprobantes ni pide CAE,' disclosing its read-only nature and that it does not trigger authorization. This is strong, though it omits other aspects like authentication requirements.
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 a single, efficient sentence that front-loads the purpose and includes the key behavioral constraint. Every word earns its place with no fluff.
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?
For a simple query tool, the description covers purpose, behavior, and return contents. It does not differentiate from the similar sibling consultar_cpe, and there is no output schema, but the details given (importes, IVA, CAE, estado) are sufficient for an agent to know what to expect.
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 description coverage is 100%, as each parameter has a descriptive label. The tool description adds no extra parameter details beyond what the schema already provides, so the baseline of 3 applies.
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 states it provides details of an already issued voucher, specifying amounts, VAT, CAE, and status. This is a clear verb+resource, but it does not explicitly differentiate from sibling tools like consultar_cpe, so it misses the top score.
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 implies usage for querying vouchers and explicitly says it does not authorize or request CAE, which gives some context. However, it does not mention alternatives or exclusions relative to other tools, so guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
consultar_cpeConsultar una carta de porteA
Datos completos de una carta de porte electrónica a partir de su CTG: grano, pesos, estado, fechas y los CUIT que intervienen. Incluye los pesos tomados en la balanza del destino, que son los que sirven para conciliar contra balanza propia.
| Name | Required | Description | Default |
|---|---|---|---|
| nroCTG | Yes | Número de CTG (Código de Trazabilidad de Granos) de la carta de porte |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It states it returns full CPE data and emphasizes the destination scale weights. It doesn't disclose error behavior, permissions, or side effects, but for a read-by-id query the main behavior is reasonably conveyed.
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?
Two crisp sentences, front-loading the resource and data contents, with the additional reconciliation context in a separate sentence. No filler.
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?
For a single-required-parameter lookup with no output schema, it explains returned data and the reconciliation use case. It could have added response/error notes, but the essential calling context is present.
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% and the schema already documents nroCTG's meaning and pattern. The description only reinforces that the lookup is by CTG, adding no new semantic detail.
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 names the resource ('carta de porte electrónica') and the exact lookup key ('a partir de su CTG'), and enumerates the returned content (grano, pesos, estado, fechas, CUITs), making it clearly distinct from generic siblings.
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?
It gives a concrete context: destination scale weights are included because they reconcile against the caller's own scale. It does not explicitly state when to use another sibling, so it misses the exclusion part of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
consultar_padronConsultar el padrón por CUITA
Razón social, estado de la clave fiscal, domicilio, régimen impositivo, impuestos y actividades de un CUIT. Sirve para saber contra quién se está operando y qué tratamiento impositivo le corresponde.
| Name | Required | Description | Default |
|---|---|---|---|
| cuit | Yes | CUIT a consultar, con o sin guiones |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does not explicitly state that the operation is read-only, nor does it disclose any side effects, authentication requirements, rate limits, or error behavior. It implies a data retrieval but leaves the behavioral profile ambiguous.
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 two concise sentences that front-load the returned data fields and then provide the practical purpose. There is no fluff or redundant phrasing, making it efficient for an agent to parse.
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?
For a single-parameter lookup with no output schema, the description lists the specific data returned and the intended use case, which covers most of what an agent needs. It does not mention error handling or response format, but given the simplicity of the tool, this is adequate.
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 description coverage is 100%: the only parameter 'cuit' is fully described with a pattern and explanation. The description adds no additional meaning beyond the schema, so it earns the baseline score of 3 for not needing to compensate.
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 uses a specific verb ('consultar') and a concrete resource ('padrón por CUIT'), and enumerates the exact data fields returned (razón social, estado de la clave fiscal, domicilio, régimen impositivo, impuestos, actividades). This clearly distinguishes it from sibling tools that deal with CPEs, grain types, or service status—none of which involve CUIT lookup.
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 states a clear use case: 'saber contra quién se está operando y qué tratamiento impositivo le corresponde'. This tells the agent when this tool is appropriate. However, it does not explicitly mention when not to use it or name alternative tools, but given the siblings are unrelated, the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cpes_recibidas_en_plantaCartas de porte recibidas en una plantaA
Cartas de porte que LLEGARON a una planta propia dentro de un rango de fechas. Es la consulta del que recibe la mercadería, no del que la despacha: ARCA exige el número de planta y no ofrece el listado inverso. Quien solo despacha no puede usar esto. Por defecto devuelve un resumen (totales por grano y las 20 más recientes); pedir detalle solo para rangos cortos, porque una campaña entera son cientos de cartas.
| Name | Required | Description | Default |
|---|---|---|---|
| desde | Yes | Fecha de partida desde, YYYY-MM-DD | |
| hasta | Yes | Fecha de partida hasta, YYYY-MM-DD | |
| planta | Yes | Número de planta de destino. Obligatorio: ARCA rechaza la consulta sin él. | |
| detalle | No | Si es true, lista todas las cartas en vez del resumen. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations were provided, so the description carries the full burden. It discloses the default behavior (returns a summary with totals per grain and the 20 most recent), the existence of a detail mode, and the constraint about ARCA rejecting queries without plant number. It does not explicitly state it's read-only, but that is implicit. The performance warning about long campaigns adds useful context.
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 four sentences with no wasted words. It leads with the core purpose, then clarifies the audience, adds a technical constraint, and ends with behavioral guidance. Every sentence earns its place and is front-loaded with the most important information.
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 there is no output schema, the description explains the default return (summary) and the detail option, providing adequate context about what to expect. It covers purpose, usage, constraints, and parameter behavior. Minor gaps like exact output structure or error handling exist, but for a 4-parameter tool the description is fairly complete.
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 description coverage is 100%, so the baseline is 3. The description adds value beyond the schema by advising when to use the 'detalle' parameter ('solo para rangos cortos') and reinforcing the plant requirement ('ARCA exige el número de planta'). This gives practical guidance for parameter usage.
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 states a specific verb and resource: lists 'Cartas de porte que LLEGARON a una planta propia dentro de un rango de fechas'. It clearly distinguishes the tool from shipper-related queries by saying 'Es la consulta del que recibe la mercadería, no del que la despacha'. This is precise and differentiates it from likely siblings.
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 explicitly states when to use (receiver) and when not ('Quien solo despacha no puede usar esto'). It explains ARCA's requirement for the plant number and gives practical advice: 'pedir detalle solo para rangos cortos'. This provides clear context for selecting this tool over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
estado_serviciosEstado de los servicios de ARCAA
Chequea si los servidores de ARCA están respondiendo. No usa el certificado ni consulta datos de nadie: es lo primero que conviene mirar cuando algo falla, para separar una caída del organismo de un problema de credenciales.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden of behavioral disclosure. It does a good job by explicitly stating that the tool does not use the certificate and does not query data, making its read-only, credential-independent behavior clear. It does not describe the response format or possible error statuses, but that is a minor gap for a zero-input health check.
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 two sentences with no redundancy. The action is front-loaded in the first sentence, and the second sentence adds decision-relevant context about when to use the tool and why it is safe to use without credentials.
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 the zero-parameter schema, absence of output schema, and the data-oriented sibling tools, the description supplies the essential information: what the tool checks, when to call it first, and that it requires no credentials. It is complete enough for an agent to invoke it correctly, though it could be slightly richer by mentioning what kind of response the health check returns.
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?
The tool has zero parameters, so the schema is already complete and the description does not need to explain parameter details. The note about not using the certificate reinforces that no credentials are required, which is useful caller guidance beyond the empty 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 uses a specific verb and resource: Chequea si los servidores de ARCA están respondiendo. It also states what the tool is not for by noting it does not use the certificate or query anyone's data, which clearly separates it from data-querying siblings like consultar_cpe and consultar_padron.
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 gives an explicit usage context: it is lo primero que conviene mirar cuando algo falla, and explains its diagnostic purpose of distinguishing an ARCA outage from a credential problem. It does not name specific sibling tools or give when-not-to-use conditions, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tipos_de_granoTabla de códigos de granoA
Códigos de grano que reconoce ARCA hoy, consultados en vivo. Útil para traducir el código que trae una carta de porte, y para descartar códigos de planillas viejas que el organismo ya no reconoce.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It states the data is 'consultados en vivo' (live) and 'hoy' (current), implying dynamic behavior and potential latency or availability issues. However, it does not disclose response format, error handling, or any access requirements. For a simple read-only lookup, this is adequate but not rich.
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 a single, well-structured sentence that front-loads the core purpose and immediately follows with practical use cases. Every word earns its place; no fluff or redundancy.
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 the tool's simplicity (no parameters, no output schema), the description is reasonably complete. It explains what the tool provides and why it is useful. It does not describe the exact return format, but for a code lookup table this is likely inferable. The live-data aspect is mentioned, which is important for freshness.
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?
The tool has zero parameters, so the baseline is 4. The empty input schema is fully covered by the description, which needs no parameter explanations. The description adds meaning by clarifying the purpose of the codes, but no parameter semantics are needed.
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 provides current grain codes recognized by ARCA, with explicit use cases: translating codes from a carta de porte and discarding outdated codes. The verb 'consultar' is implied by 'consultados en vivo', and the resource (grain codes) is specific. It differentiates from siblings by being a lookup/reference tool rather than a document-specific query.
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 gives clear context for when to use it: to translate or validate grain codes against ARCA's current list. It does not explicitly name alternatives or exclusions, but the use cases are specific enough to guide an agent. The mention of 'descartar códigos de planillas viejas' implies a validation scenario, which is helpful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ultimo_nro_ordenÚltimo número de orden de CPEA
Último número de orden de carta de porte emitido para una sucursal y tipo de CPE. Sirve para detectar saltos de numeración.
| Name | Required | Description | Default |
|---|---|---|---|
| tipoCPE | No | Tipo de CPE. Default: 74 (carta de porte automotor). | |
| sucursal | No | Número de sucursal. Default: 0. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden. It discloses the output concept and scoping by sucursal and tipoCPE, but it does not describe edge cases such as behavior with no records or whether only valid CPEs are considered. This is adequate for a simple query but not deeply transparent.
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 two sentences with no filler; the core output is stated first and the use case follows. Every sentence earns its place.
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?
For a low-complexity tool with two optional parameters and no output schema, the description states the output concept and purpose adequately. It does not detail return format or error behavior, but those are minor for this kind of simple query.
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 description coverage is 100%, so both parameters already have types, defaults, and meaning. The description reinforces that sucursal and tipoCPE scope the result, but it adds no syntax or format details beyond the schema. Baseline 3 is appropriate.
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 identifies the returned value—the last waybill order number for a branch and CPE type—and its use case of detecting numbering gaps. It lacks an explicit action verb like 'returns' or 'gets,' but the noun phrase is unambiguous and semantically distinct from the sibling tools.
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 second sentence gives a concrete use case: 'Sirve para detectar saltos de numeración.' It does not name alternatives or exclusion conditions, but the context is clear enough for an agent to know when to select this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
7 tool updates
v1.1.0- First observed
consultar_comprobante - First observed
consultar_cpe - First observed
consultar_padron - First observed
cpes_recibidas_en_planta - First observed
estado_servicios - First observed
tipos_de_grano - First observed
ultimo_nro_orden
TDQS
Scored across 7 tools
Each tool targets a distinct entity or operation: CPE lookup, grain code catalog, service health, received CPE list, last order number, tax registry, and invoice detail. There is no meaningful overlap between tools.
All names are snake_case吠, but only three follow a verb_noun pattern with consultar_*. The rest are noun phrases like tipos_de_grano, estado_servicios, cpes_recibidas_en_planta, and ultimo_nro_orden, making the convention mixed though still readable.
Seven tools is well-scoped for a focused read-only agricultural/tax data server. Each tool earns its place and there is no unnecessary redundancy.
The set covers the main read-side needs: CPE details, received CPE lists, invoice details, tax registry data, grain codes, numbering gaps, and service health. It is intentionally query-only, so missing creation/authorization tools are not critical, though a tool to list issued CPEs by branch would close a minor gap.
Maintenance
Related MCP Connectors
Argentina AFIP/ARCA electronic invoices for AI agents - issue & query facturas, get CAE via WSFE.
Looks up the National Family Farming Registry (CAF) of an individual from the CPF. Platform-hosted,
Read-only gateway for durable agent identity, consent, recognized work, and signed receipts.
Read-only discovery for exact-commit Agent Skill validation, x402 payment, and signed receipts.
Related MCP Servers
- FlicenseCqualityBmaintenanceExposes read-only Aruba Fatturazione Elettronica API operations for managing electronic invoices, notifications, and providing fiscal document helpers.701-
- AlicenseNot gradedqualityCmaintenanceEnables consulting Brazilian electronic invoices (NFE) from official Receita Federal sources through a read-only MCP tool.MIT
- AlicenseNot gradedqualityCmaintenanceAllows consultation of NFS-e (electronic service invoices) from the Brazilian Federal Revenue official source, with a single read-only tool.MIT
- AlicenseNot gradedqualityCmaintenanceEnables querying official SEFAZ GO rural producer data via a single read-only tool, with pay-per-query credit based access.MIT