io.github.veriko-mx-labs/veriko
OfficialYou can list and compare public plans without requiring an API key.
List public plans:
veriko_list_public_plans(read-only, no cost)Compare public plans:
veriko_get_public_plan_comparison(read-only, no cost)The README describes a broader server that can be configured via profiles to expose up to 66 operations (validations, CEP checks, webhooks, catalogs, beneficiaries, usage, account, dashboard, insights, finance, billing), but the provided schema only includes these two read-only plan tools.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@io.github.veriko-mx-labs/verikovalida esta transferencia SPEI"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Veriko MCP
Valida una transferencia SPEI sin salir del editor. Este servidor MCP conecta
Veriko a Claude, ChatGPT o Cursor: le pides al asistente que compruebe un pago
contra el CEP de Banxico, que te diga en qué quedó una validación anterior o
que te baje el comprobante, y responde con el dato, no con una sugerencia de
curl.
Cubre las 66 operaciones públicas de máquina a máquina. No incorpora ninguna operación de cookie, sesión o administración: lo que el asistente puede hacer aquí es exactamente lo que puede hacer una clave de API.
Estado:
0.1.0, preparado y sin publicar. El repositorio y los contratos ya son públicos. La publicación del paquete y el alta en el MCP Registry las hace Veriko; hasta entonces se usa desde este repositorio.
Probarlo ahora
Requiere Node.js 20 o posterior.
git clone https://github.com/veriko-mx-labs/veriko-mcp.git
cd veriko-mcp
npm ci
npm run buildQueda un servidor ejecutable en dist/index.js. Para verlo responder sin API
key, el perfil de planes públicos no necesita credenciales:
VERIKO_MCP_PROFILE=plans VERIKO_MCP_MAX_RISK=read node dist/index.jsEl proceso se queda esperando mensajes MCP por stdin; lo normal es que lo arranque tu cliente, no tú. Esta es la configuración del host, con la ruta absoluta a la copia que acabas de construir:
{
"mcpServers": {
"veriko": {
"command": "node",
"args": ["/ruta/a/veriko-mcp/dist/index.js"],
"env": {
"VERIKO_API_KEY": "veriko_...",
"VERIKO_MCP_PROFILE": "core",
"VERIKO_MCP_MAX_RISK": "write"
}
}
}
}La clave se obtiene en app.veriko.mx. Nunca se pasa como argumento de una
herramienta: el servidor sólo la lee de VERIKO_API_KEY, de modo que un texto
inyectado en una página que el modelo esté leyendo no puede pedírsela.
Related MCP server: commerce-validators
Lo que consume cuota
veriko_validate_direct y veriko_validate_ocr consumen cuota del plan y se
descuentan al aceptar la petición. Lo dice su propia descripción, porque quien
las invoca es un modelo y quien paga es una persona: un bucle de un agente
puede vaciar una cuota mensual en minutos. El resto del catálogo consulta,
exporta o descarga sin consumir validaciones.
Perfiles
VERIKO_MCP_PROFILE acepta core, all, una familia o varias familias
separadas por coma.
Perfil | Herramientas anunciadas |
| validar, listar, consultar y descargar CEP |
| ciclo completo de validaciones |
| endpoints y entregas |
| bancos, BIN y estado de Banxico |
| lista e importación masiva |
| consumo, límites y exportación |
| perfil y política de reintentos |
| resumen operativo |
| planes públicos |
| métricas agregadas |
| resúmenes, vistas previas y descargas |
| suscripción activa |
| las 66 operaciones disponibles |
El perfil decide qué familias ve el modelo. El riesgo se controla de forma
independiente con VERIKO_MCP_MAX_RISK:
read: sólo consultas y descargas;write(predeterminado): incluye validaciones y cambios normales;destructive: agrega eliminaciones, cancelaciones, rotación de secretos y la confirmación de importaciones.
Lo que cuesta anunciar cada perfil
Anunciar una herramienta gasta contexto antes de que el modelo llame a ninguna.
Estas cifras salen del propio servidor: bytes de la respuesta tools/list, con
npm run measure:catalog. Los tokens son una estimación a 3.6 bytes por token,
no una tokenización real, y sirven para comparar perfiles entre sí.
Perfil | Herramientas | Bytes de | Tokens estimados |
| 5 | 5,617 | ~1,560 |
| 13 | 13,272 | ~3,687 |
| 10 | 9,716 | ~2,699 |
| 4 | 2,204 | ~612 |
| 14 | 10,060 | ~2,794 |
| 7 | 3,756 | ~1,043 |
| 3 | 1,953 | ~543 |
| 1 | 558 | ~155 |
| 2 | 1,007 | ~280 |
| 4 | 2,365 | ~657 |
| 7 | 6,470 | ~1,797 |
| 1 | 503 | ~140 |
| 66 | 51,854 | ~14,404 |
Medido con Node 22 y riesgo destructive, para no ocultar herramientas. all
cuesta 9.2 veces lo que core; por eso el perfil predeterminado es core y se
amplía por familia cuando hace falta.
Arquitectura
Usa el SDK oficial de JavaScript como única capa de transporte hacia la API. El código lo importa mediante
@veriko-mx/sdk-runtime, un alias estable que permite cambiar la fuente de distribución sin reescribir el servidor.El SDK runtime viaja incluido en el tarball del MCP. El lockfile verifica el asset de origen durante el build y los consumidores no dependen de que esa URL siga disponible o conserve su contenido.
No acepta la clave de API como argumento de ninguna herramienta; sólo lee
VERIKO_API_KEYdel entorno.Anuncia herramientas según perfil y riesgo, pero conserva adaptadores para las 66 operaciones.
Las descargas se devuelven como recursos
veriko://artifact/...; nunca como base64 dentro de texto ni como escrituras automáticas en el workspace.Las cinco operaciones idempotentes reciben una clave estable derivada de la operación y los argumentos cuando el integrador no proporciona una.
Valida base64 canónico y los límites públicos antes de invocar el SDK: 12 MB para imágenes OCR y 20 MB para importaciones de beneficiarios. El transporte stdio admite completa una importación máxima.
Los errores usan
error.code, estado, puntero,requestIdyretryAftercuando existen; el texto traducible de la API no se usa como contrato.
Idempotencia
Si se pasa idempotencyKey, se conserva. Si falta, el servidor calcula
veriko_mcp_v1_<sha256> sobre el operationId y los argumentos canónicos. En
entradas binarias usa el hash del contenido, no una ruta local. La misma acción
produce la misma clave; cambiar un dato relevante produce otra.
Desarrollo
npm install
npm run check
npm run check:surface
npm run measure:catalogcheck:surface compara el catálogo completo contra el spec público filtrado del
SDK y fija su SHA-256. Una operación nueva, retirada o escondida, un esquema de
autenticación distinto de la clave de API o cualquier cambio contractual deja el
workflow de sincronización en rojo para revisión; no existe known_gaps ni
auto-merge.
La API real no se usa en las pruebas. test/server.test.ts conecta cliente y
servidor MCP en memoria con un SDK falso.
Transportes
La entrada publicada será stdio. El núcleo vive en createVerikoServer() y
no depende del transporte, de modo que un futuro Streamable HTTP puede reutilizar
catálogo, políticas, errores y recursos. Un endpoint remoto requerirá
autenticación por usuario y no se presentará como equivalente al paquete local.
Seguridad
Consulta SECURITY.md. Nunca abras issues con claves de API, payloads reales, comprobantes, números de cuenta o respuestas sin sanitizar.
Licencia
MIT.
Available Tools
2 toolsveriko_get_public_plan_comparisonComparar planes públicosARead-onlyIdempotent
Compara capacidades y precios públicos sin requerir API key.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, openWorld, idempotent, and non-destructive behavior, so the description's job is reduced. It adds one useful fact: no API key is needed. This does not contradict annotations, but it adds minimal extra context beyond what structured data already provides.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no wasted words. It states the action, the object, and a key constraint, achieving maximum clarity in minimal space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless tool with rich annotations, the description adequately conveys the tool's purpose and access requirement. While it doesn't specify the output format, the absence of parameters and the comparative nature of the task make the description sufficiently complete for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema fully covers them (100% coverage). The description adds no parameter-specific details because there are none to explain, which meets the baseline for a parameterless tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool compares public plan capabilities and prices, using a specific verb ('compares') and resource ('public plans'). It differentiates from the sibling 'list' tool by implying comparison rather than listing, though it doesn't explicitly name the alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description notes that no API key is required, which is a usage condition, but it does not explicitly state when to use this tool versus the sibling 'veriko_list_public_plans'. The usage context is implied by the word 'compare' rather than explicitly contrasted with listing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
veriko_list_public_plansListar planes públicosARead-onlyIdempotent
Lista los planes públicos sin requerir API key.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds the fact that no API key is required, which is a meaningful auth-related behavior not present in annotations. However, it does not disclose other behaviors such as pagination, result format, or any rate limits, leaving some gaps. With annotations carrying the safety information, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, compact sentence that starts with the action and the object. There is no filler or redundant information; every word earns its place. It is appropriately sized for a trivial parameterless list operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters, no output schema, and annotations cover safety, the description is complete for an agent to call it correctly. It states what the tool returns (public plans) and the key prerequisite (no API key required). Nothing essential is missing, and the sibling distinction is not critical given the different nature of the tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there are no parameter semantics to elaborate on. The schema coverage is 100% because the schema is empty and additionalProperties is false. The baseline for zero parameters is 4, and the description adds no unnecessary parameter information. This is sufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Lista' (lists) and the resource 'planes públicos' (public plans), making the purpose unambiguous. It is implicitly distinct from the sibling tool, which is about comparison, but the description does not explicitly name the alternative or differentiate itself. It's specific and clear enough to be understood on its own.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus the sibling 'veriko_get_public_plan_comparison'. The phrase 'sin requerir API key' is a prerequisite, not a usage condition. There is no mention of scenarios where one might prefer this tool over another, so an agent would have to infer the appropriate context.
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.
2 tool updates
v0.1.0- First observed
veriko_get_public_plan_comparison - First observed
veriko_list_public_plans
TDQS
Scored across 2 tools
The two tools have clearly distinct purposes: one lists all public plans, the other compares plans' capabilities and prices. There is no realistic confusion between retrieving a list and generating a comparison.
Both tool names follow the same veriko_<verb>_<noun> snake_case pattern, using intuitive verbs 'list' and 'get'. The naming is perfectly consistent across the small set.
Two tools is on the thin side for a standalone server, though the narrow public-plan browsing/comparison scope makes the count understandable. The server feels minimal but not unreasonable.
The server covers the core public-plan workflow: discover plans and compare them. Minor gaps such as fetching details for a single plan or richer pricing breakdowns could exist, but they are not obvious blockers for the stated purpose.
Maintenance
Related MCP Connectors
Deterministic Mexican/LatAm verification + sanctions & PEP screening for AI agents. Pay via x402.
LatAm Validate MCP — validate Latin-American banking and tax identifiers.
Verify companies, domains and counterparties before transacting. Sanctions, UBO, fraud scoring.
Deterministic banking, LEI, VAT, SWIFT & compliance checks via MCP with signed XDR-1 receipts.
Related MCP Servers
- AlicenseAqualityDmaintenanceCreate Pix charges (Woovi/OpenPix) · List payments & check status · Refund transactions · Multi-provider routing · Daily/per-tx spending limits · Human-in-the-loop confirmation · JSONL audit trail731 npmMIT
- FlicenseNot gradedqualityCmaintenanceProvides real validation and live registry lookups for ecommerce and fintech workflows, including EU VAT, EORI, email domain, IBAN, ABA routing, and GTIN checks.-
- AlicenseNot gradedqualityCmaintenanceEnables querying Brazilian toll payment information (Pedágio Digital) from an official source through a hosted, read-only MCP server, with pay-per-use prepaid credits and no platform credentials required.MIT
- AlicenseAqualityBmaintenanceEnables querying Mexico's SAT public lists to verify RFCs in bulk, search by business name, and obtain tax risk verdicts such as critical, high, medium, low, or clean.6MIT