keycae-mcp
keycae-mcp 🔌
MCP Server for KeyCAE.ar — Argentine electronic invoicing (facturación electrónica) with ARCA/AFIP.
Let AI agents emit invoices, manage credentials, and handle delegations directly.
⚡ Quick Start
npx keycae-mcpThat's it. Your AI agent now has 10 tools for Argentine invoicing.
⚠️ Requisito: Delegación en ARCA
ANTES de facturar, debés delegar la facturación electrónica al representante de KeyCAE en ARCA:
Ingresá a ARCA Clave Fiscal
Buscá el servicio "Facturación Electrónica" (ws://wsfe)
Delegá al CUIT representante: 20254459306 (Amilcar Waldemar Serra)
Aceptá la relación de representación
Sin esta delegación, no podés emitir facturas. El MCP server te permite verificar el estado con check_delegation y solicitarla con request_delegation.
🔧 Configuration
Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"keycae": {
"command": "npx",
"args": ["-y", "keycae-mcp"],
"env": {
"KEYCAE_API_KEY": "sk_live_..."
}
}
}
}Cursor / Windsurf
Add to .cursor/mcp.json in your project:
{
"mcpServers": {
"keycae": {
"command": "npx",
"args": ["-y", "keycae-mcp"],
"env": {
"KEYCAE_API_KEY": "sk_live_..."
}
}
}
}🛠️ Available Tools
Tool | Description |
| Emit an Argentine electronic invoice (A, B, C, M, E) |
| Get details of a previously emitted invoice |
| List recent invoices |
| List digital certificates for the CUIT |
| Generate RSA keypair + CSR for ARCA |
| Check ARCA delegation status |
| Request ARCA delegation for invoicing |
| Look up taxpayer by CUIT |
| Check billing plan and usage |
| Health check |
💡 Example Usage
1. Check if ready to invoice
User: ¿Puedo facturar con el CUIT 20254459306?Agent calls check_delegation → confirms delegation is active, then list_credentials → confirms certificate is valid.
2. Request delegation (if not done)
User: Necesito delegar mi facturación a KeyCAEAgent calls request_delegation → starts the delegation process.
3. Emit a Factura B
User: Emití una factura B al CUIT 20333444555 por $15.000 ARS por "Servicios de consulting"Agent calls emit_invoice:
{
"cuit_emisor": "20254459306",
"punto_de_venta": 3,
"tipo_comprobante": "B",
"receptor": { "tipo_doc": "CUIT", "nro_doc": "20333444555" },
"conceptos": [{ "descripcion": "Servicios de consulting", "precio": 15000 }]
}📋 Invoice Types
Type | Description | When to use |
A | IVA discriminado | RI → RI |
B | IVA incluido | RI → Consumidor Final |
C | Exento | No genera IVA |
M | Monotributo | Monotributo emitter |
E | Exportación | International clients |
🔗 Links
🌐 keycae.ar — API & Dashboard
📖 docs.keycae.ar — Documentation
📄 llms.txt — AI Agent Reference
🔌 mcp.so — MCP Directory
🤖 glama.ai — Glama Directory
📦 Related Packages
keycae-ts— TypeScript SDKkeycae-cli— CLI tool
📄 License
MIT
Available Tools
12 toolscheck_delegationA
Check the ARCA/AFIP delegation status for the authenticated CUIT. Delegation is required before emitting invoices.
| 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 burden. It indicates a read-only 'check' operation but doesn't disclose what the status looks like, permissions needed, or rate limits. Minimal but consistent.
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 concise sentences: first states action, second provides context. No wasted words.
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?
Missing output schema; description doesn't explain return value (e.g., boolean or status details). For a simple 0-param tool, it covers purpose but not output behavior.
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?
No parameters; schema coverage is 100%. The description adds value by specifying the tool uses the 'authenticated CUIT' automatically, which the schema doesn't show. Baseline for 0 params 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 checks delegation status for the authenticated CUIT and explains that delegation is required before emitting invoices. This distinguishes it from siblings like check_emission_capability and request_delegation.
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 using this tool before emit_invoice by stating delegation is required. It doesn't explicitly exclude alternatives but provides clear context among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_emission_capabilityA
Check what types of invoices a CUIT can emit. Returns compatible invoice types based on tax condition (Monotributo, RI, Exento).
| Name | Required | Description | Default |
|---|---|---|---|
| cuit | Yes | CUIT to check (11 digits) |
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 discloses that the tool returns compatible invoice types based on tax condition, but does not mention any behavioral details like authentication, rate limits, or side effects. For a simple read-only check, the description is adequate but not comprehensive.
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 conveys the purpose and output without any extraneous words. It is front-loaded and efficient.
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 has only one parameter and no output schema or annotations, the description is nearly complete. It states the purpose and what it returns. Missing details like error handling for invalid CUITs are minor, and the description provides sufficient context for an agent to use the tool correctly.
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 the cuit parameter described as 'CUIT to check (11 digits)'. The tool description does not add additional semantic meaning beyond what the schema already provides, so baseline of 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 states the tool checks invoice emission capability for a given CUIT, specifying it returns compatible invoice types based on tax condition. It distinguishes itself from sibling tools like emit_invoice (which performs emission) and check_delegation (different functionality).
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 the tool is used before emitting invoices to verify capability, but does not explicitly state when to use it versus alternatives, nor when not to use it. No direct guidance on usage context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_credentialA
Generate a new RSA keypair and Certificate Signing Request (CSR) for ARCA/AFIP. The CSR must be submitted to AFIP to obtain a digital certificate.
| Name | Required | Description | Default |
|---|---|---|---|
| cuit | Yes | CUIT to create the credential for (11 digits) | |
| organization | Yes | Organization name | |
| common_name | No | Common name for the certificate |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses generating new keys and CSR but does not mention side effects (e.g., overwriting existing credentials) or authorization needs. Adequate but could be more informative.
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 sentences, front-loading the action and then a necessary usage note. No superfluous words.
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 and description does not explain what the tool returns (e.g., credential ID, CSR content). For a credential creation tool, missing output information reduces completeness significantly.
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% with basic descriptions. The tool description adds no extra meaning beyond the schema, so baseline 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?
Description clearly states the tool generates a new RSA keypair and CSR for ARCA/AFIP, with a specific verb (Generate) and resource (keypair/CSR). It is distinct from siblings like list_credentials or emit_invoice.
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 states that the CSR must be submitted to AFIP to obtain a digital certificate, providing clear context. However, no guidance on when not to use or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
emit_invoiceB
Emit an Argentine electronic invoice (factura electrónica) via ARCA/AFIP. Returns CAE, PDF URL, and QR code.
| Name | Required | Description | Default |
|---|---|---|---|
| cuit_emisor | Yes | CUIT of the invoice issuer (11 digits) | |
| punto_de_venta | Yes | Point of sale number (punto de venta) | |
| tipo_comprobante | Yes | Invoice type: A (IVA discriminado), B (consumidor final), C (exento), M (monotributo), E (exportación) | |
| receptor | Yes | Invoice recipient | |
| conceptos | Yes | Line items | |
| moneda | No | Currency code (PES for ARS) | PES |
| fecha_servicio | No | Service date (YYYY-MM-DD) for service invoices |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully disclose behavioral traits. It mentions the outputs (CAE, PDF URL, QR code) but omits important details such as side effects (the invoice is stored and cannot be undone), authentication requirements, rate limits, or error conditions. The description is insufficient for safe invocation.
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 long, front-loaded with the core purpose and outputs. Every sentence adds value, and there is no redundant 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?
Despite high complexity (nested objects, 7 parameters, no output schema), the description is minimal. It lacks details on error handling, return format, or necessary pre-checks (e.g., delegation). An agent would likely struggle to use this tool correctly without additional context.
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 input schema already documents all parameters thoroughly. The description adds no extra parameter meaning beyond summarizing outputs. Thus, the baseline score of 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 states the specific action 'emit an Argentine electronic invoice' with the official system 'ARCA/AFIP' and lists concrete outputs (CAE, PDF URL, QR code). It effectively distinguishes the tool from siblings like list_invoices (retrieval) or check_delegation (authorization).
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 no guidance on when to use this tool versus alternatives, nor does it mention prerequisites such as running check_delegation or check_emission_capability first. No 'when not to use' or context for selecting between sibling tools is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_billing_statusA
Check the current billing plan, monthly usage, and remaining invoice quota.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description only implies a read operation without disclosing any behavioral traits such as authorization requirements, rate limits, or side effects. The minimal description adds little beyond the obvious.
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 concise sentence of 12 words, front-loaded with the action and key objects. Every word is purposeful, achieving high efficiency.
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 zero parameters and no output schema, the description adequately conveys the tool's purpose and the type of information returned. It could potentially mention the format or whether it's for the current billing period, but overall it's sufficiently complete for a simple status check.
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, and the schema coverage is 100% (all parameters described). Per rubric, 0 parameters yields a baseline of 4. The description does not need to add parameter details.
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 verb 'Check' and specifies the resources: current billing plan, monthly usage, and remaining invoice quota. This distinguishes it from sibling tools like 'check_delegation' or 'create_credential'.
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?
No guidance is provided on when to use this tool versus alternatives. While the purpose implies usage for checking billing status, there is no mention of conditions, prerequisites, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_invoiceA
Get details of a previously emitted invoice by its ID.
| Name | Required | Description | Default |
|---|---|---|---|
| invoice_id | Yes | The invoice ID returned by emit_invoice |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, yet the description does not disclose read-only nature, permission requirements, or error handling. It only states 'Get details,' which is insufficient for full transparency.
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?
Single sentence, front-loaded with key information, no unnecessary words.
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 1-param tool, the description is adequate but does not specify what 'details' are returned. With no output schema, some added context on return structure would improve completeness.
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 clear description of invoice_id. The tool description echoes 'previously emitted,' adding minimal 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?
The description clearly states the action (Get details), resource (previously emitted invoice), and identifier method (by its ID), distinguishing it from siblings like emit_invoice and list_invoices.
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?
Implies usage when an invoice ID is available from emit_invoice. No explicit exclusions or alternative suggestions, but context is clear with sibling tools listed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keycae_healthA
Check if the KeyCAE API is healthy and reachable.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility. It states the tool checks health and reachability, which implies a read-only, non-destructive operation. While it could specify the response format or error handling, the description is adequate for a basic health check tool.
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 sentence of under 10 words, with no wasted or redundant information. It front-loads the core purpose effectively.
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 tool with no parameters and no output schema, the description is sufficient to convey its basic function. It could benefit from mentioning the expected response type or format, but is already complete enough for typical use.
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 zero parameters, and the schema coverage is 100% (empty), so the description adds no parameter semantics. Per the guideline, baseline 4 is appropriate since no parameters exist.
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 verb 'Check' and the resource 'KeyCAE API', with the outcome 'healthy and reachable'. This unambiguously defines the tool's function and distinguishes it from sibling tools that perform specific operations like check_delegation or emit_invoice.
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 the tool should be used as a preliminary health check before invoking other API operations, but it does not explicitly state when to use or exclude alternatives. However, given the tool's simple purpose, the context is clear enough for an AI agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_credentialsA
List all digital certificates (credentials) registered for the authenticated CUIT.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits such as read-only nature, authentication requirements, or output characteristics. The description only states the action without additional 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 a single, concise sentence that immediately conveys the tool's purpose. No unnecessary words, and it is front-loaded with the key action.
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 zero parameters and no output schema, the description is somewhat complete but lacks details about the output format or any additional context. For a simple listing tool, it meets the minimum but could be enriched.
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 input schema has zero parameters, and schema coverage is 100%. The description adds no parameter details, but none are needed. Baseline score of 4 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 states the verb 'list', the resource 'digital certificates (credentials)', and the scope 'for the authenticated CUIT'. It effectively distinguishes from sibling tools like 'create_credential' or 'check_delegation' which perform distinct actions.
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?
No guidance is provided on when to use this tool versus alternatives. It merely states what it does without specifying appropriate contexts, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_invoicesB
List recent invoices for the authenticated tenant.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of invoices to return | |
| offset | No | Offset for pagination |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It mentions 'recent' but lacks details on the time window, pagination behavior, default ordering, or any response format. This is minimal for a list tool.
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 concise sentence that conveys the core functionality without extraneous words or repetition.
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 lack of output schema or annotations, the description should provide more details on response structure, default filtering, or rate limits. It feels incomplete for guiding an AI agent effectively.
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 schema already documents 'limit' and 'offset'. The description adds no additional parameter meaning beyond stating 'recent invoices', which is a baseline expectation.
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 action ('list'), resource ('invoices'), and scope ('recent for the authenticated tenant'). This distinguishes it from sibling tools like 'get_invoice' (single invoice) and 'emit_invoice' (create).
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 listing recent invoices but does not explicitly state when to use this tool over alternatives like 'get_invoice' or provide context on prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_puntos_de_ventaA
List available points of sale (puntos de venta) for the authenticated CUIT. Shows which ones are enabled for electronic invoicing.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the burden of disclosure. It correctly indicates a read-only operation and mentions the scope (authenticated CUIT) and output focus (enabled for e-invoicing). It does not discuss rate limits or detailed response format, but it is sufficient for a simple listing tool.
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 sentence with no wasted words. It front-loads the primary action and resource, then adds qualifying detail about the authenticated user and enabled status.
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 zero-parameter tool with no output schema, the description adequately explains its purpose and what it shows. It does not mention pagination or ordering, but given the simplicity, the description is mostly 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?
The input schema has zero parameters, so the description does not need to add parameter meaning. Schema coverage is 100% (no parameters). The description provides enough context without repeating 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 verb 'List', the resource 'points of sale', and the context 'for the authenticated CUIT'. It also specifies what information is shown ('enabled for electronic invoicing'). This distinguishes it from sibling tools like 'emit_invoice' or 'list_credentials'.
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 when to use the tool: to retrieve available points of sale for the current user. It does not explicitly mention when not to use it or provide alternatives, but the purpose is straightforward and no sibling tool serves the same function.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_taxpayerB
Look up an Argentine taxpayer (contribuyente) by CUIT in the AFIP registry. Returns name, tax condition, and active activities.
| Name | Required | Description | Default |
|---|---|---|---|
| cuit | Yes | CUIT to look up (11 digits) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only states the lookup returns certain information, but does not mention authorization needs, error handling, rate limits, or whether the operation is read-only.
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 long and contains no wasted words. It efficiently communicates the tool's purpose and output.
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 (one parameter, no output schema, no nested objects), the description is reasonably complete. However, it lacks details on error conditions and the exact output structure, which would be helpful.
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 schema has 100% description coverage for the single parameter, describing it as 'CUIT to look up (11 digits)'. The description adds nothing beyond this, so the baseline of 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 states the tool looks up an Argentine taxpayer by CUIT, specifies the registry (AFIP), and lists the returned fields (name, tax condition, active activities). It distinguishes from sibling tools that handle delegations, invoices, etc.
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 no guidance on when to use this tool versus alternatives or when not to use it. There is no mention of prerequisites or context for invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
request_delegationA
Request ARCA/AFIP delegation for electronic invoicing. This authorizes KeyCAE (the representative) to emit invoices on your behalf. If Hermes auto-delegation is enabled, this is processed automatically.
| Name | Required | Description | Default |
|---|---|---|---|
| cuit | Yes | CUIT to delegate (11 digits) | |
| organization | Yes | Organization name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses the authorization effect and automatic processing condition, but lacks details on idempotence, side effects if already delegated, or whether the operation is safe/read-only.
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 sentences, no unnecessary words, front-loaded with the main action. Every sentence adds value, making it efficient.
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 annotations or output schema, the description covers the core functionality and automatic processing hint. It could include expected outcome or response format, but overall sufficient.
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 for cuit and organization. The tool description adds overarching purpose but no additional semantic details beyond what the schema already provides, so 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 states the tool requests ARCA/AFIP delegation for electronic invoicing, authorizing KeyCAE to emit invoices. This distinguishes it from sibling tools like check_delegation (checking delegation status) and emit_invoice (emitting invoices).
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 context that this is for authorizing KeyCAE and mentions an alternative (Hermes auto-delegation if enabled). However, it does not explicitly state when not to use this tool or prerequisites like checking existing delegation via check_delegation.
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. Dates show when Glama detected each change.
12 tool updates
v1.0.2- First observed
check_delegation - First observed
check_emission_capability - First observed
create_credential - First observed
emit_invoice - First observed
get_billing_status - First observed
get_invoice - First observed
keycae_health - First observed
list_credentials - First observed
list_invoices - First observed
list_puntos_de_venta - First observed
lookup_taxpayer - First observed
request_delegation
TDQS
All tools have clearly distinct purposes, covering delegation, credentials, invoices, points of sale, taxpayer lookup, and health check. No two tools overlap in functionality.
Most tools follow a consistent verb_noun pattern (e.g., check_delegation, emit_invoice). The only minor deviation is keycae_health, which uses a noun_noun format but is still clear.
12 tools is a well-scoped set for an electronic invoicing API. Each tool addresses a distinct aspect of the domain without being excessive or insufficient.
The set covers creation and retrieval but lacks critical operations like invoice cancellation, credential deletion, and delegation revocation. These missing lifecycle steps likely cause agent failures in common workflows.
Maintenance
Related MCP Connectors
Argentina AFIP/ARCA electronic invoices for AI agents - issue & query facturas, get CAE via WSFE.
Argentina CUIT/CUIL validation and AFIP fiscal QR generation. Pure, no-auth MCP tools.
Brazilian fiscal MCP server - issue NF-e, NFC-e, NFS-e, CT-e, MDF-e and DC-e via SEFAZ.
Hosted Argentine commerce MCP: real AFIP invoicing, MercadoPago, logistics, catalog & WhatsApp.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/AMKRS3/keycae-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server