Skip to main content
Glama

Server Details

Deterministic Mexican/LatAm verification + sanctions & PEP screening for AI agents. Pay via x402.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over 37 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A3.6/5.0

Scored across 27 tools

Disambiguation4/5

Most tools target clearly distinct resources and actions: validar_* covers different identifiers, verificar_* covers different document types, and consultar_ley vs buscar_ley are cleanly separated. A few names share vocabulary that could cause misselection, especially catalogo_servicios, catalogo_leyes, and consultar_catalogo, plus verificacion_completa relative to the individual verificar_* tools.

Naming Consistency3/5

The dominant pattern is Spanish snake_case verb_noun (consultar_*, validar_*, verificar_*), which is predictable and readable. However, several tools break the pattern with noun-led names (catalogo_leyes, estado_servicio, tipo_cambio, verificacion_completa) and a few English-prefixed names (screening_listas, screening_monitorear), making the convention mixed rather than uniform.

Tool Count2/5

With 27 tools, this exceeds the 25+ threshold where the surface becomes too heavy for an agent to navigate efficiently. Many tools are individually useful, but the set could reasonably be split into separate servers by domain (legal, payroll, validation, verification, account management).

Completeness4/5

The surface covers the main lifecycle well: discovery (catalogs, precios, estado), execution (calculations, verifications, screening), validation (constancias, identifiers), and account management (saldo, uso, obligaciones). Minor gaps exist, such as no way to update or cancel registered obligations and no explicit tool to stop screening_monitorear, but these are not core to the main verification workflows.

Available Tools

27 tools
buscar_leyBuscar en la legislacionBInspect

Busqueda de texto completo en la legislacion mexicana. Devuelve articulos con extracto, cita y fuente. Filtra por materia, ambito, entidad o un documento_id. Consume saldo (servicio LEGAL; tarifa vigente en consultar_precios) cuando hay resultados; una busqueda sin coincidencias no cobra. Trae deslinde.

ParametersJSON Schema
NameRequiredDescriptionDefault
qYes
ambitoNo
limiteNo
entidadNo
materiaNo
documentoNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
notaNo
totalNo
consultaNo
deslindeNo
resultadosNo
operacion_idNo

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnlyHint=false and openWorldHint=true, but the description adds valuable context: it consumes balance (LEGAL service) only when results are found, and includes a disclaimer. This goes beyond the annotations and clarifies side effects and cost behavior, which is important for agent decision-making.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences long, starting with the core purpose, then filters, then cost and disclaimer. It is efficient and front-loaded, with no redundant phrasing. The structure is logical and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With six parameters, no schema descriptions, and an output schema present, the description covers purpose, filters, and cost but leaves gaps. It does not explain the meaning or accepted values of parameters like materia, ambito, or entidad, nor does it clarify the required 'q' parameter. The return format is presumably covered by the output schema, so that is acceptable. Overall, it is adequate but not exhaustive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It mentions filters for materia, ambito, entidad, and documento, mapping to four of the six parameters. However, it omits the required 'q' parameter (the search query) and 'limite' (limit), leaving the most essential parameter undocumented. This partial coverage earns a 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool performs full-text search in Mexican legislation and returns articles with excerpt, citation, and source. It specifies the resource and action distinctly, though it doesn't explicitly contrast with sibling tools like consultar_ley or catalogo_leyes. The filters are mentioned, but the differentiation from alternatives is not explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 like consultar_ley or catalogo_leyes. It notes the cost implications, which is relevant for usage decisions, but there is no explicit statement of use cases or exclusions. An agent would have to infer when to choose this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

calcular_imssCalcular cuotas IMSS e InfonavitAInspect

Cuotas IMSS + Infonavit sobre el salario base de cotizacion (SBC) diario. Consume saldo (servicio NOMINA; tarifa vigente en consultar_precios). Riesgos de Trabajo solo si pasas prima_riesgo (la que el IMSS asigno a la empresa). Declara version y deslinde; no calcula fuera de la vigencia cargada.

ParametersJSON Schema
NameRequiredDescriptionDefault
diasNo
sbc_diarioYes
prima_riesgoNo
fecha_calculoNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
diasNo
totalNo
detalleNo
conceptoNo
servicioNo
sbc_diarioNo
uma_diariaNo
base_calculoNo
cuota_obreraNo
nota_riesgosNo
operacion_idNo
cuota_patronalNo

TDQS

A3.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only indicate non-read-only, non-idempotent, non-destructive, but the description adds crucial behavioral context: it consumes saldo (a financial side effect), it only works within the loaded validity period, and it declares version and disclaimer. These are significant disclosures that go beyond annotations and help the agent understand side effects and constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, with three sentences that carry essential information. It front-loads the core purpose and then adds behavioral notes. No filler or redundancy. The only slight issue is the density of jargon (e.g., 'SBC', 'NOMINA', 'deslinde') which may require domain knowledge, but it is efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (4 parameters, output schema present), the description covers key behavioral constraints (validity period, balance consumption) but omits details about the 'dias' and 'fecha_calculo' parameters. It also does not mention error conditions or output format specifics, though an output schema exists. The description is adequate but leaves gaps for an agent unfamiliar with IMSS terminology.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It explains sbc_diario (daily SBC) and prima_riesgo (optional for Riesgos de Trabajo), but it does not clarify the meaning of 'dias' or 'fecha_calculo'. With four parameters and half undocumented, the description falls short of providing sufficient parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (calculate) and resource (IMSS and Infonavit quotas) based on daily SBC. It distinguishes itself from sibling calculation tools like calcular_isr and calcular_laboral by naming the exact subject matter. The mention of 'Riesgos de Trabajo' as an optional component adds further specificity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides contextual guidance: it consumes balance (saldo) and references consultar_precios for current rates, implying it's a paid service. However, it does not explicitly state when to use this tool versus alternatives like calcular_isr or calcular_laboral, nor does it give exclusion criteria. The condition for using prima_riesgo is clear, but the overall routing guidance is implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

calcular_isrCalcular ISR de nominaAInspect

ISR mensual de nomina (LISR art. 96) sobre una base gravable, para una fecha. Consume saldo (servicio NOMINA; tarifa vigente en consultar_precios). Declara la tabla y su vigencia; si la fecha cae fuera de la tabla cargada, no calcula y lo advierte. Resultado matematico, no resolucion oficial.

ParametersJSON Schema
NameRequiredDescriptionDefault
base_gravableYes
fecha_calculoNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
conceptoNo
servicioNo
excedenteNo
cuota_fijaNo
isr_causadoNo
base_calculoNo
operacion_idNo
base_gravableNo
limite_inferiorNo
porcentaje_excedenteNo

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description goes well beyond annotations by disclosing that the tool 'Consume saldo (servicio NOMINA; tarifa vigente en consultar_precios),' which is important cost behavior. It also explains date-dependent table validity and the warning behavior when the date falls outside the loaded table, plus the caveat 'Resultado matematico, no resolucion oficial.' These are meaningful non-obvious behavioral traits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded: it states the core operation first, then cost, validity behavior, and the official-status caveat. Every sentence contributes a distinct, non-redundant fact with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter calculation tool with an output schema, the description covers purpose, parameter semantics, cost, date-dependent failure behavior, and the limitation that the result is not an official resolution. Nothing critical needed to invoke the tool correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It maps base_gravable to the taxable payroll base and links fecha_calculo to the table validity and out-of-range warning, adding real meaning beyond the schema titles. It does not explain default behavior or formats, but the schema already provides types.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Calcular ISR mensual de nomina (LISR art. 96) sobre una base gravable, para una fecha.' This identifies the operation, the legal basis, and the domain, making it clearly distinguishable from sibling tools like calcular_imss and calcular_laboral.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage context is implied: it is for monthly payroll ISR calculations on a taxable base for a given date. However, it never explicitly states when to use this tool versus alternatives, nor does it name conditions or exclusions beyond the date-out-of-table behavior.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

calcular_laboralCalculo laboral (LFT)AInspect

Calculo laboral mexicano (LFT) con desglose, fundamento y deslinde: concepto 'aguinaldo', 'prima_vacacional' o 'finiquito'. Consume saldo (servicio LABORAL; tarifa vigente en consultar_precios). Es resultado matematico, no resolucion oficial; cada respuesta declara con que tabla/version se calculo.

ParametersJSON Schema
NameRequiredDescriptionDefault
conceptoYes
fecha_bajaNo
fecha_ingresoNo
dias_aguinaldoNo
salario_diarioNo
dias_trabajadosNo
anios_antiguedadNo
incluir_indemnizacionNo
dias_pendientes_salarioNo

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnlyHint false, destructiveHint false), the description discloses that the tool consumes balance (cost), that results are mathematical and not official resolutions, and that each response declares the table/version used. These are valuable behavioral traits not captured in the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single dense sentence that packs in purpose, cost, and disclaimer. It is not front-loaded with the most critical info first and could benefit from bullet points or segmentation, but it is not overly verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 9-parameter tool with no output schema, the description is inadequate. It does not specify which parameters are required for each concept, the expected input formats, or the return structure beyond mentioning table/version declaration. An agent would struggle to invoke it correctly without additional information.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description must compensate, but it only mentions the 'concepto' parameter's possible values. The other eight parameters (fecha_baja, salario_diario, etc.) are left completely unexplained, leaving an agent without guidance on their meaning or which are relevant per concept.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool calculates Mexican labor concepts (aguinaldo, prima_vacacional, finiquito) under LFT, with breakdown, legal basis, and disclaimer. It distinguishes itself from sibling calculators like calcular_imss and calcular_isr by naming specific labor concepts, leaving no ambiguity about its domain.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by listing the supported concepts, but does not explicitly state when to use this tool versus alternatives, nor does it mention exclusions or refer to sibling tools. It does warn that it consumes balance, which is a usage consideration, but no explicit routing guidance is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

catalogo_leyesIndice de legislacion mexicanaA
Read-onlyIdempotent
Inspect

Indice de legislacion mexicana disponible (Constitucion, codigos y leyes federales, nacionales y de los 32 estados). Filtra por materia (Civil/Penal/Fiscal/Laboral/...), ambito (Federal/Estatal/Nacional), entidad o texto en el nombre. Devuelve el documento_id que necesitas para consultar_ley. Es GRATIS: es el catalogo, no el contenido.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNo
ambitoNo
entidadNo
materiaNo

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context beyond those annotations: it returns a document_id, it is free, and it exposes only the catalog, not the full content. It omits details like pagination or result limits, but the annotation coverage lowers the burden.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, each earning its place: scope, filter options, return value, and cost/positioning. It is front-loaded with what the tool is and avoids filler or repetition of the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a catalog tool with four optional parameters and no output schema, the description gives the essential invocation context: available filters, the returned document_id, and the relationship to consultar_ley. Minor gaps remain around how filters combine and what happens with multiple matches, but this is sufficient for correct selection and basic invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry the parameter meaning, and it largely does: it maps materia to examples (Civil/Penal/Fiscal/Laboral), ambito to examples (Federal/Estatal/Nacional), entidad as a filter, and 'texto en el nombre' to the q parameter. It does not explain matching semantics or all valid entidad values, but it makes every parameter understandable.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific resource: the index of available Mexican legislation, including the scope (Constitution, codes, federal/national/state laws). It also names the action (filter and return document_id) and distinguishes itself from content tools by saying it is 'el catalogo, no el contenido.' This makes its purpose and difference from consultar_ley explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description says it returns the document_id needed for consultar_ley, which tells the agent to use it as a lookup step before fetching content. It also clarifies that it is only the catalog, not the content itself. However, it does not explicitly mention alternatives like buscar_ley or state when not to use them.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

catalogo_serviciosCatalogo de serviciosA
Read-onlyIdempotent
Inspect

Catalogo publico de servicios de RESET Verifica: que hace cada uno, precio, inputs, si es deterministico y como se paga. NO requiere llave. Util para decidir si RESET resuelve tu problema antes de autenticarte o pagar. Dos modelos: prepago (cuenta + llave, REST o MCP, precios MXN) y x402 (pago por llamada en USDC sobre Base, sin cuenta).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Aporta contexto útil más allá de las annotations: el catálogo es público, no exige llave, y describe los dos modelos de pago (prepago y x402). Todo es coherente con readOnlyHint, idempotentHint y destructiveHint=false.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Dos frases densas pero bien estructuradas: la primera define qué es y qué contiene, la segunda explica cuándo usarlo y los modelos de pago. No hay relleno ni repetición del título o del schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Para una herramienta sin parámetros y sin output-schema, la descripción cubre lo necesario: alcance, contenido devuelto, requisito de llave y utilidad práctica. Las annotations ya cubren el perfil de seguridad y efectos, así que no falta información crítica para invocarla correctamente.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

El input-schema no tiene parámetros y la cobertura de descripción del schema es 100%, por lo que no hay semántica paramétrica que aclarar. La mención de 'inputs' se refiere al contenido del catálogo, no a argumentos de esta herramienta. Aplica el baseline de 4 para 0 parámetros.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Define con precisión el recurso: catálogo público de servicios de RESET Verifica, y especifica su contenido: qué hace cada servicio, precio, inputs, determinismo y forma de pago. Se distingue de herramientas hermanas como consultar_precios o consultar_catalogo al destacar que es público y que no requiere llave.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Indica cuándo usarlo: para decidir si RESET resuelve el problema antes de autenticarse o pagar. Añade que no requiere llave, lo que orienta al agente sobre prerequisitos. No nombra explícitamente alternativas ni exclusions, pero el contexto de uso es claro.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

consultar_leyTexto de un articulo de leyAInspect

Texto exacto de un articulo de ley mexicana, con su cita, ubicacion, fuente oficial, fecha de ultima reforma integrada y deslinde. Pasa el documento_id (de catalogo_leyes, p.ej. 'codigo_civil_federal') y el numero de articulo (p.ej. '1793' o '49 Bis'). Consume saldo (servicio LEGAL; tarifa vigente en consultar_precios). Es texto de referencia fechado, NO asesoria juridica ni copia certificada; verifica la vigencia.

ParametersJSON Schema
NameRequiredDescriptionDefault
articuloYes
documento_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
citaNo
textoNo
fuenteNo
articuloNo
deslindeNo
ubicacionNo
encontradoNo
documento_idNo
operacion_idNo
texto_sha256No

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the limited annotations, the description discloses that the call consumes balance under the LEGAL service, points to consultar_precios for current pricing, and warns that the output is dated reference text whose validity should be verified. These are material behavioral traits not present in the annotation fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three dense sentences cover outcome, required parameters with examples, and billing/legal caveats. No filler or repetition; the most identifying information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-required-parameter lookup with an output schema, the description is complete: it explains how to obtain the inputs, what the result includes, that it costs money, and that it is not certified legal advice. There are no major gaps for an agent deciding whether and how to call this tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Although the schema has no descriptions and 0% coverage, the tool description explains both parameters precisely: documento_id comes from catalogo_leyes with the example 'codigo_civil_federal', and articulo accepts numbers like '1793' or '49 Bis'. This fully compensates for the empty schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies the resource as the exact text of a Mexican law article and lists the contained elements (citation, location, official source, last reform date, disclaimer). It implies a direct lookup by documento_id and articulo, but does not explicitly contrast itself with buscar_ley, so sibling differentiation is not fully explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly says to pass the document_id from catalogo_leyes and an article number, gives examples, and states this is reference text, not legal advice or certified copy. It lacks an explicit 'when to use this vs buscar_ley' statement, but the instructions and exclusion are clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

consultar_preciosPrecios vigentesA
Read-onlyIdempotent
Inspect

Tabla de precios vigente (MXN, IVA incluido). No requiere llave.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, openWorld, idempotent, and non-destructive behavior. The description adds useful context beyond those annotations: prices are current (MXN, IVA included) and no key is required, which helps the agent understand authentication and data semantics. It does not contradict the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise, with only two short clauses, and both carry meaningful information: the price table's nature/content and the lack of an authentication key. Every word earns its place, and the most important detail is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, read-only tool with rich annotations, the description covers what an agent needs: the data is a current price table in MXN with IVA included, and no key is required. No output schema exists, but the phrase 'tabla de precios' sufficiently indicates the return shape for this simple case.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters and schema description coverage is effectively 100%, so the baseline of 4 applies. The description does not need to explain parameters, and it correctly avoids fabricating any.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the resource clearly: a current price table in MXN including IVA. It lacks an explicit verb like 'returns' or 'queries', but the tool name 'consultar_precios' supplies that action, and the scope is distinct from sibling tools. It is not vague, though it does not explicitly differentiate from alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to use this tool versus any sibling, and it does not mention exclusions or alternatives. 'No requiere llave' is a useful prerequisite about authentication, but it is not a usage condition or comparison against other tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

consultar_saldoConsultar mi saldoA
Read-onlyIdempotent
Inspect

Tu saldo de paquete, usos individuales por producto con su vencimiento y ultimos movimientos. No tiene costo.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is established. The description adds value by stating the operation has no cost and by outlining result contents, but it does not go deeper into recency, limits, or data source behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single concise sentence states exactly what information is returned and adds only the essential cost fact. Nothing is wasted and the key content is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, read-only tool with complete annotations, the description is sufficient. It tells the caller what result data to expect (balance, usages, expirations, movements) and that the operation is free, so no output schema or further context is strictly necessary.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and an empty schema, so parameter semantics are trivially complete. The description does not need to explain parameter meaning and instead focuses on the result content, which is appropriate here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The title supplies the verb 'Consultar', and the description names the resource: package balance, per-product usage with expiration, and recent movements. It clearly identifies what information is returned and is distinguishable from siblings like consultar_uso by also covering balance and movements.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to use this tool versus alternatives such as consultar_uso or consultar_precios. 'No tiene costo' is a pricing note, not a usage condition, so an agent gets little help selecting this tool over nearby siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

consultar_usoConsultar mi consumo del periodoB
Read-onlyIdempotent
Inspect

Tu consumo del periodo (por servicio y detalle). Parametro mes en formato AAAA-MM. No tiene costo.

ParametersJSON Schema
NameRequiredDescriptionDefault
mesNo

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Las anotaciones ya cubren readOnly, idempotente y no destructivo; la descripción añade el dato de que no tiene costo y que el resultado es por servicio y detalle. No aclara qué ocurre si se omite 'mes' ni describe autenticación o límites, pero aporta algo más allá de las anotaciones.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Tres frases breves sin relleno: propósito, formato del parámetro y costo. La información importante está al inicio.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Para una herramienta simple de solo lectura, cubre propósito, formato y costo, pero no hay esquema de salida y no se describe la forma de la respuesta más allá de 'por servicio y detalle'. La ausencia de comportamiento ante 'mes' vacío deja un vacío relevante.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Con cobertura de esquema al 0%, la descripción debe compensar; aporta el formato AAAA-MM para 'mes', que es útil y no está en el esquema. Sin embargo, no explica el significado exacto del valor, si es obligatorio/opcional (aunque el esquema tiene default '') ni el comportamiento cuando se omite.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

La descripción identifica el recurso ('consumo del periodo') y el alcance ('por servicio y detalle'), dejando claro que devuelve el uso asociado al periodo. Aunque no diferencia explícitamente de herramientas hermanas como 'consultar_saldo' o 'consultar_precios', el término 'consumo' lo distingue razonablemente.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No ofrece pautas de cuándo usar esta herramienta frente a alternativas; en una lista con varias 'consultar_*' no se menciona, por ejemplo, que 'consultar_saldo' es para saldo y esta para consumo. Tampoco se indica cuándo no usarla.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

emitir_constanciaEmitir la constancia de una verificacionAInspect

Emite una constancia (recibo verificable) de una verificacion que ya hiciste, por su verification_id. Regresa un folio que cualquiera valida gratis con validar_constancia. No tiene costo extra.

ParametersJSON Schema
NameRequiredDescriptionDefault
verification_idYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=false (a mutation), and the description adds that it has no extra cost and returns a folio that is freely validatable. It doesn't detail any side effects or idempotency, but the annotations cover the basic mutability and non-idempotency, so the description adds some context without contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise (2 sentences) and front-loads the core purpose and the key parameter. It avoids repetition of the schema and provides essential information efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (1 param, no output schema), the description covers the main purpose and points to the validation sibling. However, it could benefit from clarifying what constitutes a 'verification you already did' and any prerequisites, but it is generally adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% coverage, as the parameter verification_id is just a string with no description. The description mentions it is the verification_id of a previously performed verification, but does not explain format, example, or how to obtain it, leaving the agent with limited guidance for a critical parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool emits a constancia (verifiable receipt) for a previously performed verification, identified by verification_id. It distinguishes itself from validar_constancia by noting it produces a folio that can be validated by that sibling tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is used after a verification has been completed, and references validar_constancia as the alternative for validating the folio. However, it does not explicitly state when not to use this tool, but the context is clear enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

estado_servicioEstado del servicio y sus fuentesA
Read-onlyIdempotent
Inspect

Estado del servicio y de las fuentes/tablas oficiales: cuando actualizo cada lista del SAT, vigencia de las tablas fiscales, version de catalogos y tarifas. No requiere llave.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive. The description adds that the tool requires no key and details what status information it provides (update times, validity, versions). This adds value beyond the annotations by clarifying the scope of the status report, though it does not describe the output format.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that front-loads the tool's purpose ('Estado del servicio y de las fuentes/tablas oficiales') and then enumerates what it covers. There is no redundant information, and it efficiently communicates the essential function.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no parameters, no output schema, and strong safety annotations, the description provides adequate context: it states what the tool reports and that no key is required. It could be more detailed about the exact response structure, but for a status check, this is acceptable. The description covers the necessary essentials.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the schema covers 100% by being empty. Per the baseline for 0 parameters, the description doesn't need to explain parameters, and it doesn't; it simply confirms no key is needed. This is sufficient.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool reports service status and official sources/tables, enumerating what it covers (SAT list updates, tax table validity, catalog versions, rates). This distinguishes it from sibling tools like consultar_catalogo or validar_* which operate on specific data. The verb 'estado' makes the purpose explicit, though it could be more specific about the exact output.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for checking service health and data freshness but does not explicitly state when to prefer it over alternatives. It notes that no key is required, which hints at accessibility, but lacks explicit usage guidance or exclusions. Given the many sibling tools, more explicit routing would help.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

registrar_obligacionRegistrar una obligacion por cobrarAInspect

Registra una obligacion (cuenta por cobrar) para conciliarla despues contra un pago. No tiene costo.

ParametersJSON Schema
NameRequiredDescriptionDefault
montoYes
referenciaYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate this is a mutating, non-idempotent operation, so the description is not required to restate that. It adds useful context: the registration is for later reconciliation and has no cost. However, it does not explain side effects, duplication behavior, or what happens after a successful registration.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: two short sentences with no filler. The core action and purpose are front-loaded, and the additional cost note is relevant and compact.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity tool with only two required parameters and no nested objects, the description gives enough surface-level context to attempt a call. However, it omits any guidance on what 'referencia' means, what a successful response looks like, and any edge conditions around the amount, making it only minimally complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description does little to clarify the two parameters. 'Monto' can be reasonably inferred as the amount of the receivable, but 'referencia' is ambiguous: it could be an invoice number, customer reference, or internal ID, and no format or uniqueness requirements are given.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb ('Registra') and resource ('obligacion (cuenta por cobrar)'), and adds the purpose of later reconciling against a payment. This strongly differentiates it from the sibling tools, which are mostly consultar/validar/calcular operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context: use this tool when you need to register an accounts-receivable obligation that will later be reconciled with a payment. It does not explicitly name alternatives or state when not to use it, so it falls short of a full 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

screening_listasScreening en listas de sancionesAInspect

Screening de un nombre o entidad contra listas de sanciones internacionales (OFAC, UE, UK, Canada), personas expuestas politicamente (PEP de los paises con servicio: MX, BR, CO, AR, DO, CA, US) y listas nacionales (Mexico, Brasil, Colombia, Argentina, R. Dominicana). Envia 'name'; opcional 'country' (ISO, p.ej. MX) y 'tax_id' para el cruce nacional; 'certificate'=true para recibir una constancia PDF (base64). Devuelve coincidencias con puntaje 0-100 y un registro por cada lista consultada (limpia o con hits). Consume saldo (servicio SCREEN; tarifa vigente en consultar_precios). Es evidencia, no una certificacion de cumplimiento: un resultado 'sin coincidencias' no exime del deber de debida diligencia.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
tax_idNo
countryNo
certificateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameNo
checkedNo
countryNo
resumenNo
summaryNo
nationalNo
pep_hitsNo
constanciaNo
request_idNo
certificateNo
match_foundNo
international_hitsNo

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description discloses meaningful behavioral details: it consumes paid balance (servicio SCREEN), returns scores 0-100, produces one record per consulted list, and explicitly warns that a 'no match' result is not a compliance certification. This is substantial value-add over the structured annotation flags.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but well-structured: purpose, parameter usage, output shape, cost, and compliance caveat each get their own sentence. Every clause earns its place, and the most important operational details are front-loaded before the caveat.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity and the presence of an output schema, the description is thorough: it names the lists and countries covered, explains the optional parameters, describes the return format, flags the cost, and clarifies the legal/evidentiary limitations. Nothing critical needed to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage, so the description carries the full burden for parameter semantics. It compensates well: it explains that 'name' is the required input, 'country' is an ISO code like MX, 'tax_id' is used for national cross-checking, and 'certificate=true' returns a base64 PDF. All four parameters are given practical meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb and resource: screening a name/entity against international sanctions lists, PEP lists, and national lists, naming exact sources (OFAC, EU, UK, Canada, etc.). It is clear, but it does not explicitly differentiate itself from the sibling screening_monitorear, so the agent has to infer the one-time vs. monitoring distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear usage context: it tells the agent what to send, optional parameters, the fact that it consumes balance, and that the result is evidence rather than certification. However, it does not explicitly state when to prefer this tool over screening_monitorear or other verification siblings, so it stops short of full when/when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

screening_monitorearVigilar un nombre en listasAInspect

Vigila un nombre: recibiras un webhook (MONITOREO_SCREEN, firmado) cuando aparezca una coincidencia NUEVA en sanciones, PEP o listas nacionales. Envia 'name'; opcional 'country' y 'tax_id'. Registra tu endpoint de webhook aparte. El alta no tiene costo.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
tax_idNo
countryNo

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds behavioral context beyond the annotations: the MONITOREO_SCREEN webhook, the signed event, the NEW-match trigger, and the need to register the endpoint separately. 'El alta' also confirms a registration side effect, consistent with readOnlyHint=false. It does not discuss duplicate registrations, but annotations already signal non-idempotency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences with no filler. The core purpose, webhook behavior, parameters, and cost are all front-loaded or clearly separated, and every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple 3-parameter tool, the description is mostly adequate: it explains the async outcome (webhook) and a key prerequisite (endpoint registration). However, with no output schema, it does not describe the immediate confirmation response or the webhook payload, and it does not mention how to stop monitoring.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description carries the burden for parameter meaning. It only repeats that 'name' is sent and 'country' and 'tax_id' are optional, which the schema already expresses through required/default fields. It adds no format, value, or semantic detail for country or tax_id.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('vigila un nombre'), the resource (sanctions/PEP/national lists), and the outcome (a signed webhook on a NEW match). It implies a monitoring behavior distinct from a one-time list search, though it does not explicitly name the sibling screening_listas tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Ongoing monitoring is implied through 'recibirás un webhook' and 'coincidencia NUEVA', but the description never states when to choose this tool over a one-time search or provides explicit exclusions. It gives context about registering a webhook endpoint but no direct alternative guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tipo_cambioTipo de cambio FIX de BanxicoAInspect

Tipo de cambio FIX (USD/MXN) oficial de Banxico, por fecha (opcional) y con conversion de un monto (opcional). Consume saldo (servicio DATO; tarifa vigente en consultar_precios). Devuelve la fecha del dato y la serie oficial.

ParametersJSON Schema
NameRequiredDescriptionDefault
fechaNo
montoNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
fixNo
fuenteNo
servicioNo
indicadorNo
conversionNo
fecha_datoNo
operacion_idNo

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnlyHint=false, destructiveHint=false), the description discloses that the tool is a paid DATO service that consumes balance, and it points to 'consultar_precios' for the fee. It also states the return content (date and official series), which adds value beyond the annotations. No contradiction exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact Spanish sentences front-load the core purpose, then add the cost warning and return description. No filler or redundancy, each clause carries distinct information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple 2-parameter lookup with an output schema, the description covers the main usage points: optional date, optional amount conversion, cost implication, fee lookup route, and output summary. It falls short only on date format and conversion semantics, which prevents a 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description must compensate for the bare schema titles 'Fecha' and 'Monto'. It says both are optional and that 'monto' is for conversion, but it does not specify the expected date format or the direction/currency of the amount conversion (USD to MXN vs MXN to USD), leaving ambiguity.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool as the official Banxico FIX USD/MXN exchange rate service, with optional date filtering and amount conversion. It states the resource (official Banxico FIX rate), the scope (by date, optional amount conversion), and the observable output (date and official series). Although no sibling is named, no sibling tool provides exchange rates, so it is effectively distinguishable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly warns that the tool consumes balance ('Consume saldo') and directs the user to 'consultar_precios' for the current fee, which is actionable usage guidance. It does not explicitly state when not to use it, but the fee pointer and optional-parameter explanation provide clear context for deciding to invoke it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validar_clabeValidar una CLABEAInspect

Valida la estructura de una CLABE: 18 digitos, digito de control y banco por prefijo. Consume saldo (servicio UTIL; tarifa vigente en consultar_precios). No confirma que la cuenta exista.

ParametersJSON Schema
NameRequiredDescriptionDefault
clabeYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
bancoNo
clabeNo
validaNo
detalleNo
advertenciaNo
codigo_bancoNo
operacion_idNo
digito_verificador_okNo

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses that the tool consumes saldo (a side effect) and is a UTIL service with a fee, which is beyond the annotations (readOnlyHint=false does not capture this). It also clarifies that it only validates structure, not existence, adding behavioral detail not present in annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences, each earning its place: purpose, cost/where to check, and limitation. It is front-loaded with the core action and has no redundant words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter validation tool with an output schema, the description covers all necessary aspects: what it validates, the cost and where to check it, and a key limitation. The output schema handles return values, so no further explanation is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate. It explains the structural requirements of a CLABE (18 digits, control digit, bank prefix), which directly informs the expected format of the 'clabe' parameter. While it does not explicitly state 'clabe must be an 18-digit string', the description implies it sufficiently.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Valida') and resource ('CLABE'), and enumerates exactly what is checked: 18 digits, control digit, and bank by prefix. It also explicitly states what it does NOT do (confirm account existence), which differentiates it from verification tools among the siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context: it is a paid service (consumes saldo) and indicates where to check the fee (consultar_precios). It also states a limitation ('No confirma que la cuenta exista'), implying that if existence verification is needed, another tool should be used, though it does not name a specific alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validar_constanciaValidar una constancia por folioA
Read-onlyIdempotent
Inspect

Valida publicamente una constancia por su folio: confirma que la verificacion existio, cuando y con que resultado. No requiere llave, no tiene costo.

ParametersJSON Schema
NameRequiredDescriptionDefault
folioYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, destructiveHint=false. The description adds outcome semantics: it confirms existence, timestamp, and result, plus public/no-key/no-cost access. No contradictions; it extends the annotation profile with response content and access constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the core action and identifier, followed by access details. No filler; every clause adds information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read-only validation tool, the description covers purpose, identifier, result semantics, and access requirements. It does not detail error behavior or output structure, but with no output schema and rich annotations, it is sufficient for an agent to call correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema provides only name and type ('folio', string) with 0% description coverage. The description ties the parameter to the certificate ('por su folio') and indicates it is the lookup key, but does not specify format, length, or examples. Some meaning added, but not full compensation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb 'Valida' with resource 'constancia' and identifier 'folio', and describes the outcome: 'confirma que la verificacion existio, cuando y con que resultado.' This clearly distinguishes it from sibling validators like validar_curp (different resource) and emitir_constancia (opposite operation).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear context for when to use: public validation, no key required, no cost. It implicitly scopes to constancias by folio, but does not explicitly name sibling alternatives or state when not to use. The usage context is clear, though exclusions are implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validar_curpValidar una CURPAInspect

Valida una CURP: formato, digito verificador y decodificacion (fecha, sexo, entidad). Incluido con saldo de paquete. No confirma registro ante RENAPO.

ParametersJSON Schema
NameRequiredDescriptionDefault
curpYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
curpNo
sexoNo
validaNo
detalleNo
formato_okNo
advertenciaNo
fecha_validaNo
operacion_idNo
fecha_nacimientoNo
entidad_nacimientoNo
digito_verificador_okNo

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are sparse (readOnlyHint false, destructiveHint false, etc.). The description adds meaningful behavioral context: it confirms the tool performs local validation and decoding, and explicitly denies RENAPO registration confirmation, which is a side-effect disclosure. It also notes the package billing context ('Incluido con saldo de paquete'), which is a usage condition. 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three concise sentences. The primary purpose is front-loaded in the first sentence, the package inclusion is a short secondary note, and the limitation is stated last. Every sentence earns its place with zero filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has one parameter and an output schema (not shown). The description covers what it does, what it returns (decoded info implied), and the crucial limitation about RENAPO. It also mentions the package billing condition. For a simple validation tool, this is adequately complete; missing explicit error handling is acceptable given the output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry the parameter meaning. It clearly identifies the parameter as a CURP to validate, and the description of validation (formato, digito verificador, decodificacion) adds semantics beyond the schema's bare 'string' type. It does not explicitly state the expected format, but the purpose is evident.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Valida' and a specific resource 'CURP', and clearly enumerates the scope: formato, digito verificador, and decodificacion. It also explicitly states what it does not do ('No confirma registro ante RENAPO'), which further differentiates it from any sibling that might check official registry. This is unambiguous and distinct.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by naming the tool's purpose and scope. It does not explicitly name alternatives, but the limitation 'No confirma registro ante RENAPO' informs when not to use it (if official registration confirmation is needed). This is a clear contextual signal, though it stops short of naming a specific sibling alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validar_nssValidar un NSSAInspect

Valida un NSS (numero de seguro social): formato y digito Luhn. Incluido con saldo de paquete. No confirma afiliacion ante el IMSS.

ParametersJSON Schema
NameRequiredDescriptionDefault
nssYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
nssNo
validaNo
detalleNo
advertenciaNo
operacion_idNo
anio_registroNo
subdelegacionNo
digito_verificador_okNo

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only mark non-read-only and non-destructive; the description adds that the call is covered by package balance, implying a balance-consuming operation, and clarifies the scope with the affiliation disclaimer. The balance wording is slightly ambiguous but there is 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the core action and validation type, followed by billing and exclusion notes. Every sentence earns its place with no fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter validation tool with output schema present and annotations covering safety, the description covers purpose, scope, and billing context. It lacks an explicit alternative for affiliation confirmation, but that gap is minor given the tool's simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema coverage for the single 'nss' parameter, the description compensates by defining NSS as a social security number and indicating that format and Luhn digit are validated, giving the agent enough semantic grounding to populate the parameter with a user-provided NSS.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Valida'), a specific resource (NSS), and the exact validation criteria (formato y digito Luhn). The explicit disclaimer that it does not confirm IMSS affiliation prevents confusion with larger verification tools among the siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear exclusion: this tool does not confirm affiliation with IMSS, so agents know not to use it for that purpose. It also notes the package-balance inclusion. However, it stops short of naming an alternative sibling (e.g., verificacion_completa) for affiliation checks.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validar_rfcValidar un RFCAInspect

Valida la estructura de un RFC: formato, tipo de persona, fecha y digito verificador. Incluido con saldo de paquete. No confirma que este registrado ante el SAT.

ParametersJSON Schema
NameRequiredDescriptionDefault
rfcYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
rfcNo
validaNo
formato_okNo
advertenciaNo
fecha_validaNo
operacion_idNo
tipo_personaNo
digito_verificador_okNo

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already signal basic traits (readOnlyHint=false, openWorldHint=true, etc.), so the description's job is to add context. It adds the critical caveat that the tool does not confirm SAT registration, and mentions package balance inclusion, which hints at billing behavior. This goes beyond annotation data and helps set expectations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, all informative and front-loaded with the core purpose. The SAT registration caveat and package balance note are placed after the main function, maintaining a clean structure with no redundant phrasing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter tool with an output schema present, the description covers the essential purpose, validation scope, and a key limitation. The mention of package balance adds cost context. Missing details about RFC format expectations are minor given the single obvious parameter and validation-focused nature.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, but there is only one parameter (rfc), whose meaning is obvious from the tool name and description. The description implies that 'rfc' is the RFC string to validate and describes what validation checks, but does not specify input format constraints (length, case, pattern) beyond what validation implies. It adds some value but not enough to fully compensate for missing schema documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly identifies the resource (RFC), the action (validate structure), and specific aspects checked (formato, tipo de persona, fecha, dígito verificador). It also distinguishes itself from other validation tools by explicitly stating it does not confirm SAT registration, which is a unique qualifier among the sibling validar_* tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states what the tool does and explicitly excludes a common use case (confirming SAT registration), which helps agents avoid misuse. However, it does not name any alternative tools or provide explicit when-to-use versus sibling validar_* or verificar_* tools, leaving some inference required.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validar_tarjetaValidar una tarjeta bancariaAInspect

Valida una tarjeta (Luhn + BIN + marca). Envia el pan. No se conserva el numero completo. Incluido con saldo de paquete. No confirma cuenta ni fondos.

ParametersJSON Schema
NameRequiredDescriptionDefault
panYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
cargoNo
validaNo
detalleNo
pan_last4No

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses meaningful behavioral traits: it does not retain the full card number ('No se conserva el numero completo'), it is included with package balance ('Incluido con saldo de paquete'), and it does not confirm account/funds. These go beyond the sparse annotations, which only indicate no destructive action. There is 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences, front-loaded with the primary function and then adding behavioral notes. It is concise and free of fluff, but the behavioral notes are somewhat mixed in, and the structure could be improved by separating the core purpose from caveats. Still, it is efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter validation tool with an output schema present, the description covers the purpose, input, and key limitations. It does not mention error conditions or expected output, but those may be in the output schema. The inclusion of package balance and non-retention adds useful context, making it reasonably complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate. It mentions the input 'pan' (card number) but does not elaborate on format, length, or examples. The description adds the fact that the PAN is sent, which gives some meaning, but it could be more explicit about the expected format. For a single standard parameter, this is acceptable but not outstanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Valida') and resource ('una tarjeta'), and specifies the method ('Luhn + BIN + marca'). It clearly distinguishes from sibling validation tools like validar_curp or validar_clabe, as each targets a different identifier type. The purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for card validation and explicitly states what it does NOT do ('No confirma cuenta ni fondos'), which helps an agent avoid using it for account or fund checks. However, it does not explicitly name alternatives or provide a when-to-use vs. when-not-to-use condition beyond the negative limitation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verificacion_completaVerificacion completa de una transaccionAInspect

Transaccion completa (COMBO): empresa por RFC + factura (XML CFDI) + pago (XML CEP) en una sola operacion, a precio combinado. Consume saldo (servicio COMBO; tarifa vigente en consultar_precios).

ParametersJSON Schema
NameRequiredDescriptionDefault
rfcYes
refsNo
cep_xmlYes
cfdi_xmlYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses that the operation consumes saldo and is a paid COMBO service, with current rates found in consultar_precios. This adds meaningful behavioral context beyond the annotations, which only indicate readOnly=false, idempotent=false, and destructive=false, and it is consistent with those flags.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences carry all essential information: the bundled scope, the three input components, the combined pricing, and the balance consumption. The text is front-loaded with the primary purpose and contains no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is largely complete for invoking the tool: it explains what the tool does, which inputs are needed and their format, that it consumes saldo, and where to find pricing. It does not describe the return value or the behavior of the optional refs parameter, but no output schema exists and these gaps are relatively minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With schema description coverage at 0%, the description compensates by mapping rfc to 'empresa', cfdi_xml to 'factura (XML CFDI)', and cep_xml to 'pago (XML CEP)'. However, the optional `refs` parameter is not explained, leaving a small gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the operation as a combined 'COMBO' transaction: company verification by RFC plus invoice (CFDI XML) plus payment (CEP XML) in one call. This distinguishes it from sibling tools like verificar_empresa, verificar_factura, and verificar_pago by making the bundled scope explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context: this is the all-in-one bundled operation 'a precio combinado' and it consumes account balance. It implies the agent should use this when all three verifications are needed, though it does not explicitly state the alternative of calling the three sibling tools separately or specify 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.

verificar_empresaVerificar empresa por RFCBInspect

Verifica una persona moral o fisica por RFC: SAT 69-B con historial, articulo 69 (firmes, no localizados, CSD sin efectos), contratacion publica y sancionados. Consume saldo (servicio COMPANY; tarifa vigente en consultar_precios). El resultado reproduce fuentes oficiales.

ParametersJSON Schema
NameRequiredDescriptionDefault
rfcYes
sancionadosNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
rfcNo
sat_69bNo
serviceNo
sat_art69No
constanciaNo
consultadoNo
advertenciaNo
result_codeNo
tipo_personaNo
engine_versionNo
verification_idNo
contratacion_publicaNo
proveedores_sancionadosNo

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnlyHint=false and destructiveHint=false, which is somewhat ambiguous (not read-only but not destructive). The description adds that it consumes saldo (affects balance) and that results reproduce official sources Horizons, which gives some transparency. However, it does not bias the openWorldHint or explain what actions are performed (e.g., data retrieval vs. report generation). The description does not contradict annotations, but adds minimal extra value beyond the saldo note.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, three sentences with no fluff. It front-loads the primary function, then the coverage scope, then the cost implication. It is well-organized and each sentence adds value, though the second sentence starts with 'Consume saldo' which is a bit unexpected but still relevant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has an output schema (not provided in input but mentioned), and has 2 parameters with one required. The description covers the core purpose and financial consequence (saldo), but does not specify what the output looks like (though output schema exists) or any prerequisites (e.g., valid RFC format). It lacks mention of error scenarios or authorization needs. Given the complexity is moderate, the description is adequate but not complete—it does not mention how to handle invalid RFCs or what causes failure.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, meaning the schema provides no descriptions for 'rfc' or 'sancionados'. The description mentions the tool verifies by RFC and covers sancionados, but does not explain the 'sancionados' boolean parameter—its meaning is implied (whether to include sanctioned entities) but not explicitly stated. The description partially compensates for the 0% coverage by explaining the company verification context, but could be clearer about the parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool verifies a persona moral o fisica by RFC, listing specific sources (SAT 69-B, articulo 69, contratacion publica, sancionados). It distinguishes from siblings by mentioning 'sancionados' and '69-B', but does not explicitly name a sibling or differentiate from 'verificacion_completa' which might be a broader tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives context that it consumes saldo and mentions a service (COMPANY) and tariff, but does not explicitly state when to use this tool versus alternatives. It does not say when not to use it or mention alternatives. The purpose is clear but usage guidance is implicit—the agent must infer it is for checking company status.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verificar_facturaValidar un CFDIAInspect

Valida un CFDI: XSD oficial del Anexo 20 y estado en vivo ante el SAT, con cruce 69-B del emisor. Envia el XML del CFDI en 'xml'. Consume saldo (servicio CFDI; tarifa vigente en consultar_precios).

ParametersJSON Schema
NameRequiredDescriptionDefault
xmlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
camposNo
sandboxNo
serviceNo
retencionNo
constanciaNo
consultadoNo
emisor_69bNo
estado_satNo
xml_sha256No
result_codeNo
engine_versionNo
validacion_xsdNo
verification_idNo
estructura_anexo20No
validaciones_formatoNo
validacion_aritmeticaNo
duplicado_en_organizacionNo

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnlyHint=false), the description discloses that this call consumes balance and points to consultar_precios for the rate, which is essential behavioral information for an agent to obtain user consent. It also reveals that validation happens against live SAT status, implying a real-time external dependency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences carry the entire payload: purpose, detailed scope, parameter mapping, and cost indicator. The most important information is front-loaded, with no filler or repetition of schema fields.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with one required parameter and an output schema, the description covers invocation, validation logic, and financial implication. The only marginal gap is the exact XML representation, but the presence of an output schema means the agent can infer the expected response format.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the parameter name 'xml' alone is ambiguous; the description fills the gap by explicitly stating 'Envia el XML del CFDI en ''xml'''. It still does not specify representation details like raw XML string vs base64, but it supplies the core semantic that the schema lacks.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and object ('Valida un CFDI') and immediately specifies what validation entails: XSD against Anexo 20, live SAT status, and 69-B cross-check. This distinguishes it from sibling validators like validar_rfc or validar_constancia without needing to name them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear operational context: the agent should send the CFDI XML in the 'xml' parameter, and it warns that this is a paid service whose current rate is listed in consultar_precios. It does not explicitly contrast against overlapping siblings like verificacion_completa or verificar_pago, but the use case is unmistakable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verificar_pagoConciliar un pago SPEI con su CEPAInspect

Procesa un CEP (comprobante SPEI) y lo concilia contra tus obligaciones registradas. Envia el XML del CEP en 'xml' y, opcional, las referencias a conciliar. Consume saldo (servicio SPEI; tarifa vigente en consultar_precios).

ParametersJSON Schema
NameRequiredDescriptionDefault
xmlYes
refsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
alertasNo
sandboxNo
serviceNo
evidenciaNo
retencionNo
cep_sha256No
constanciaNo
consultadoNo
result_codeNo
conciliacionNo
engine_versionNo
verification_idNo

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already note readOnlyHint=false; the description adds the crucial side effect that the call consumes saldo and references consultar_precios for the fee. It also notes reconciliation against registered obligations, implying the tool may alter or match records, though it stops short of saying exactly what changes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences: purpose, parameter instructions, and cost warning. No waste, and the load-bearing information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 2-parameter tool with an output schema, the description covers required input, optional input, and a cost side effect. It does not spell out return handling in prose, but that is covered by the output schema; the only minor gap is exact format requirements for xml/refs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema coverage, the description is the only source of meaning for the two parameters. It explains that 'xml' is the CEP XML and 'refs' is optional references to reconcile, but it does not specify the expected format (e.g., XML encoding or how refs are delimited).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the exact action: process a CEP (SPEI voucher) and reconcile it against registered obligations. This clearly separates it from invoice/company validation siblings and makes the tool's domain evident.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear context: use when you have a CEP XML and want to reconcile it against obligations. It also warns that this is a paid SPEI service and points to consultar_precios for current pricing, though it does not explicitly state when-not-to-use or name an alternative reconciliation 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.

  1. 14 tool updates
    • Changedbuscar_ley1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "legal_buscar — 1 muestra(s), 6 campos.",
        +  "properties": {
        +    "consulta": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Consulta"
        +    },
        +    "deslinde": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Deslinde"
        +    },
        +    "nota": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Nota"
        +    },
        +    "operacion_id": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Operacion Id"
        +    },
        +    "resultados": {
        +      "anyOf": [
        +        {},
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Resultados"
        +    },
        +    "total": {
        +      "anyOf": [
        +        {},
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Total"
        +    }
        +  },
        +  "title": "RLegalBuscar",
        +  "type": "object"
        +}
    • Changedcalcular_imss1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "fiscal_imss — 1 muestra(s), 12 campos.",
        +  "properties": {
        +    "base_calculo": {
        +      "anyOf": [
        +        {},
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Base Calculo"
        +    },
        +    "concepto": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Concepto"
        +    },
        +    "cuota_obrera": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Cuota Obrera"
        +    },
        +    "cuota_patronal": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Cuota Patronal"
        +    },
        +    "detalle": {
        +      "anyOf": [
        +        {},
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Detalle"
        +    },
        +    "dias": {
        +      "anyOf": [
        +        {},
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Dias"
        +    },
        +    "nota_riesgos": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Nota Riesgos"
        +    },
        +    "operacion_id": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Operacion Id"
        +    },
        +    "sbc_diario": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Sbc Diario"
        +    },
        +    "servicio": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Servicio"
        +    },
        +    "total": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Total"
        +    },
        +    "uma_diaria": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Uma Diaria"
        +    }
        +  },
        +  "title": "RFiscalImss",
        +  "type": "object"
        +}
    • Changedcalcular_isr1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "fiscal_isr — 1 muestra(s), 10 campos.",
        +  "properties": {
        +    "base_calculo": {
        +      "anyOf": [
        +        {},
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Base Calculo"
        +    },
        +    "base_gravable": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Base Gravable"
        +    },
        +    "concepto": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Concepto"
        +    },
        +    "cuota_fija": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Cuota Fija"
        +    },
        +    "excedente": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Excedente"
        +    },
        +    "isr_causado": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Isr Causado"
        +    },
        +    "limite_inferior": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Limite Inferior"
        +    },
        +    "operacion_id": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Operacion Id"
        +    },
        +    "porcentaje_excedente": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Porcentaje Excedente"
        +    },
        +    "servicio": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Servicio"
        +    }
        +  },
        +  "title": "RFiscalIsr",
        +  "type": "object"
        +}
    • Changedconsultar_ley1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "legal_articulo — 1 muestra(s), 10 campos.",
        +  "properties": {
        +    "articulo": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Articulo"
        +    },
        +    "cita": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Cita"
        +    },
        +    "deslinde": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Deslinde"
        +    },
        +    "documento_id": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Documento Id"
        +    },
        +    "encontrado": {
        +      "anyOf": [
        +        {
        +          "type": "boolean"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Encontrado"
        +    },
        +    "fuente": {
        +      "anyOf": [
        +        {},
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Fuente"
        +    },
        +    "operacion_id": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Operacion Id"
        +    },
        +    "texto": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Texto"
        +    },
        +    "texto_sha256": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Texto Sha256"
        +    },
        +    "ubicacion": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Ubicacion"
        +    }
        +  },
        +  "title": "RLegalArticulo",
        +  "type": "object"
        +}
    • Changedscreening_listas1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "screen_prepago — 2 muestra(s), 12 campos.",
        +  "properties": {
        +    "certificate": {
        +      "anyOf": [
        +        {},
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Certificate"
        +    },
        +    "checked": {
        +      "anyOf": [
        +        {},
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Checked"
        +    },
        +    "constancia": {
        +      "anyOf": [
        +        {},
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Constancia"
        +    },
        +    "country": {
        +      "anyOf": [
        +        {},
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Country"
        +    },
        +    "international_hits": {
        +      "anyOf": [
        +        {},
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "International Hits"
        +    },
        +    "match_found": {
        +      "anyOf": [
        +        {
        +          "type": "boolean"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Match Found"
        +    },
        +    "name": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Name"
        +    },
        +    "national": {
        +      "anyOf": [
        +        {},
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "National"
        +    },
        +    "pep_hits": {
        +      "anyOf": [
        +        {},
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Pep Hits"
        +    },
        +    "request_id": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Request Id"
        +    },
        +    "resumen": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Resumen"
        +    },
        +    "summary": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Summary"
        +    }
        +  },
        +  "title": "RScreenPrepago",
        +  "type": "object"
        +}
    • Changedtipo_cambio1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "economia_fix — 2 muestra(s), 7 campos.",
        +  "properties": {
        +    "conversion": {
        +      "anyOf": [
        +        {},
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Conversion"
        +    },
        +    "fecha_dato": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Fecha Dato"
        +    },
        +    "fix": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Fix"
        +    },
        +    "fuente": {
        +      "anyOf": [
        +        {},
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Fuente"
        +    },
        +    "indicador": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Indicador"
        +    },
        +    "operacion_id": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Operacion Id"
        +    },
        +    "servicio": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Servicio"
        +    }
        +  },
        +  "title": "REconomiaFix",
        +  "type": "object"
        +}
    • Changedvalidar_clabe1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "utilidad_clabe — 2 muestra(s), 8 campos.",
        +  "properties": {
        +    "advertencia": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Advertencia"
        +    },
        +    "banco": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Banco"
        +    },
        +    "clabe": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Clabe"
        +    },
        +    "codigo_banco": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Codigo Banco"
        +    },
        +    "detalle": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Detalle"
        +    },
        +    "digito_verificador_ok": {
        +      "anyOf": [
        +        {
        +          "type": "boolean"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Digito Verificador Ok"
        +    },
        +    "operacion_id": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Operacion Id"
        +    },
        +    "valida": {
        +      "anyOf": [
        +        {
        +          "type": "boolean"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Valida"
        +    }
        +  },
        +  "title": "RUtilidadClabe",
        +  "type": "object"
        +}
    • Changedvalidar_curp1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "utilidad_curp — 1 muestra(s), 11 campos.",
        +  "properties": {
        +    "advertencia": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Advertencia"
        +    },
        +    "curp": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Curp"
        +    },
        +    "detalle": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Detalle"
        +    },
        +    "digito_verificador_ok": {
        +      "anyOf": [
        +        {
        +          "type": "boolean"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Digito Verificador Ok"
        +    },
        +    "entidad_nacimiento": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Entidad Nacimiento"
        +    },
        +    "fecha_nacimiento": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Fecha Nacimiento"
        +    },
        +    "fecha_valida": {
        +      "anyOf": [
        +        {
        +          "type": "boolean"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Fecha Valida"
        +    },
        +    "formato_ok": {
        +      "anyOf": [
        +        {
        +          "type": "boolean"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Formato Ok"
        +    },
        +    "operacion_id": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Operacion Id"
        +    },
        +    "sexo": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Sexo"
        +    },
        +    "valida": {
        +      "anyOf": [
        +        {
        +          "type": "boolean"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Valida"
        +    }
        +  },
        +  "title": "RUtilidadCurp",
        +  "type": "object"
        +}
    • Changedvalidar_nss1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "utilidad_nss — 1 muestra(s), 8 campos.",
        +  "properties": {
        +    "advertencia": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Advertencia"
        +    },
        +    "anio_registro": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Anio Registro"
        +    },
        +    "detalle": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Detalle"
        +    },
        +    "digito_verificador_ok": {
        +      "anyOf": [
        +        {
        +          "type": "boolean"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Digito Verificador Ok"
        +    },
        +    "nss": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Nss"
        +    },
        +    "operacion_id": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Operacion Id"
        +    },
        +    "subdelegacion": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Subdelegacion"
        +    },
        +    "valida": {
        +      "anyOf": [
        +        {
        +          "type": "boolean"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Valida"
        +    }
        +  },
        +  "title": "RUtilidadNss",
        +  "type": "object"
        +}
    • Changedvalidar_rfc1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "utilidad_rfc — 2 muestra(s), 8 campos.",
        +  "properties": {
        +    "advertencia": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Advertencia"
        +    },
        +    "digito_verificador_ok": {
        +      "anyOf": [
        +        {
        +          "type": "boolean"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Digito Verificador Ok"
        +    },
        +    "fecha_valida": {
        +      "anyOf": [
        +        {
        +          "type": "boolean"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Fecha Valida"
        +    },
        +    "formato_ok": {
        +      "anyOf": [
        +        {
        +          "type": "boolean"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Formato Ok"
        +    },
        +    "operacion_id": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Operacion Id"
        +    },
        +    "rfc": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Rfc"
        +    },
        +    "tipo_persona": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Tipo Persona"
        +    },
        +    "valida": {
        +      "anyOf": [
        +        {
        +          "type": "boolean"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Valida"
        +    }
        +  },
        +  "title": "RUtilidadRfc",
        +  "type": "object"
        +}
    • Changedvalidar_tarjeta1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "utilidad_tarjeta — 1 muestra(s), 4 campos.",
        +  "properties": {
        +    "cargo": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Cargo"
        +    },
        +    "detalle": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Detalle"
        +    },
        +    "pan_last4": {
        +      "anyOf": [
        +        {},
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Pan Last4"
        +    },
        +    "valida": {
        +      "anyOf": [
        +        {
        +          "type": "boolean"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Valida"
        +    }
        +  },
        +  "title": "RUtilidadTarjeta",
        +  "type": "object"
        +}
    • Changedverificar_empresa1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "empresa_rfc — 3 muestra(s), 13 campos.",
        +  "properties": {
        +    "advertencia": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Advertencia"
        +    },
        +    "constancia": {
        +      "anyOf": [
        +        {},
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Constancia"
        +    },
        +    "consultado": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Consultado"
        +    },
        +    "contratacion_publica": {
        +      "anyOf": [
        +        {},
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Contratacion Publica"
        +    },
        +    "engine_version": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Engine Version"
        +    },
        +    "proveedores_sancionados": {
        +      "anyOf": [
        +        {},
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Proveedores Sancionados"
        +    },
        +    "result_code": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Result Code"
        +    },
        +    "rfc": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Rfc"
        +    },
        +    "sat_69b": {
        +      "anyOf": [
        +        {},
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Sat 69B"
        +    },
        +    "sat_art69": {
        +      "anyOf": [
        +        {},
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Sat Art69"
        +    },
        +    "service": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Service"
        +    },
        +    "tipo_persona": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Tipo Persona"
        +    },
        +    "verification_id": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Verification Id"
        +    }
        +  },
        +  "title": "REmpresaRfc",
        +  "type": "object"
        +}
    • Changedverificar_factura1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "factura_verificar — 1 muestra(s), 17 campos.",
        +  "properties": {
        +    "campos": {
        +      "anyOf": [
        +        {},
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Campos"
        +    },
        +    "constancia": {
        +      "anyOf": [
        +        {},
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Constancia"
        +    },
        +    "consultado": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Consultado"
        +    },
        +    "duplicado_en_organizacion": {
        +      "anyOf": [
        +        {
        +          "type": "boolean"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Duplicado En Organizacion"
        +    },
        +    "emisor_69b": {
        +      "anyOf": [
        +        {},
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Emisor 69B"
        +    },
        +    "engine_version": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Engine Version"
        +    },
        +    "estado_sat": {
        +      "anyOf": [
        +        {},
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Estado Sat"
        +    },
        +    "estructura_anexo20": {
        +      "anyOf": [
        +        {},
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Estructura Anexo20"
        +    },
        +    "result_code": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Result Code"
        +    },
        +    "retencion": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Retencion"
        +    },
        +    "sandbox": {
        +      "anyOf": [
        +        {
        +          "type": "boolean"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Sandbox"
        +    },
        +    "service": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Service"
        +    },
        +    "validacion_aritmetica": {
        +      "anyOf": [
        +        {},
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Validacion Aritmetica"
        +    },
        +    "validacion_xsd": {
        +      "anyOf": [
        +        {},
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Validacion Xsd"
        +    },
        +    "validaciones_formato": {
        +      "anyOf": [
        +        {},
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Validaciones Formato"
        +    },
        +    "verification_id": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Verification Id"
        +    },
        +    "xml_sha256": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Xml Sha256"
        +    }
        +  },
        +  "title": "RFacturaVerificar",
        +  "type": "object"
        +}
    • Changedverificar_pago1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "pago_cep — 1 muestra(s), 12 campos.",
        +  "properties": {
        +    "alertas": {
        +      "anyOf": [
        +        {},
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Alertas"
        +    },
        +    "cep_sha256": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Cep Sha256"
        +    },
        +    "conciliacion": {
        +      "anyOf": [
        +        {},
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Conciliacion"
        +    },
        +    "constancia": {
        +      "anyOf": [
        +        {},
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Constancia"
        +    },
        +    "consultado": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Consultado"
        +    },
        +    "engine_version": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Engine Version"
        +    },
        +    "evidencia": {
        +      "anyOf": [
        +        {},
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Evidencia"
        +    },
        +    "result_code": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Result Code"
        +    },
        +    "retencion": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Retencion"
        +    },
        +    "sandbox": {
        +      "anyOf": [
        +        {
        +          "type": "boolean"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Sandbox"
        +    },
        +    "service": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Service"
        +    },
        +    "verification_id": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Verification Id"
        +    }
        +  },
        +  "title": "RPagoCep",
        +  "type": "object"
        +}
  2. 3 tool updates
    • Removedacreditar_fondeo
    • Removedcrear_fondeo
    • Removedcrear_fondeo_x402
  3. 30 tool updates
    • First observedacreditar_fondeo
    • First observedbuscar_ley
    • First observedcalcular_imss
    • First observedcalcular_isr
    • First observedcalcular_laboral
    • First observedcatalogo_leyes
    • First observedcatalogo_servicios
    • First observedconsultar_catalogo
    • First observedconsultar_ley
    • First observedconsultar_precios
    • First observedconsultar_saldo
    • First observedconsultar_uso
    • First observedcrear_fondeo
    • First observedcrear_fondeo_x402
    • First observedemitir_constancia
    • First observedestado_servicio
    • First observedregistrar_obligacion
    • First observedscreening_listas
    • First observedscreening_monitorear
    • First observedtipo_cambio
    • First observedvalidar_clabe
    • First observedvalidar_constancia
    • First observedvalidar_curp
    • First observedvalidar_nss
    • First observedvalidar_rfc
    • First observedvalidar_tarjeta
    • First observedverificacion_completa
    • First observedverificar_empresa
    • First observedverificar_factura
    • First observedverificar_pago

Related MCP Connectors

Related MCP Servers

  • F
    license
    A
    quality
    C
    maintenance
    Verified Latin American data for autonomous AI agents via x402 micropayments. Sanctions screening (OFAC SDN + SARLAFT + CNBV + COAF + UAF) with EU AI Act Art.12/13 compliant hash-chain audit trail, entity enrichment (RUES/CNPJ/RFC), and real-time LATAM central bank rates including Argentina dólar blue. $0.02–$0.10 USDC per call on Base and Solana. No API key required.
    4
    1
    -
  • F
    license
    A
    quality
    B
    maintenance
    MCP server providing verified Latin American data via x402 micropayments. 4 MCP tools: vera_rates (central bank rates CO/MX/BR/CL/PE), vera_sanctions (OFAC+SARLAFT+CNBV+COAF+UAF screening, EU AI Act Art.13), vera_entity (RUES/CNPJ/RFC enrichment), vera_context (AI market intelligence). $0.02–$0.10 USDC per call.
    4
    -
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources