
VERIDEX
es.veridexiav0.1.1Updated Oct 7, 2026
Verify Spanish companies by CIF: registry data, status and BORME filings, paid per call over x402.
Overview
Lets an assistant verify Spanish companies by CIF against BORME registry data, with explainable risk scoring, paid per call in USDC via x402.
- What it does
- A thin MCP client over the public VERIDEX API with three tools. verify_company_by_cif returns registry data, BORME status, recent filings and a 0-100 explainable risk score; the first call returns an HTTP 402 payment challenge instead of data. get_veridex_info and health_check are free and report price, network, asset, pay-to address and API status. Errors come back as typed results with ok: false rather than exceptions.
- When to use it
- Use it when an assistant needs to check a Spanish company's legal status, filings or risk before a transaction, onboarding or due-diligence step. It suits agents that can hand a payment challenge to a wallet the user controls. It is not useful if you only need free lookups or cannot settle x402 payments.
- Requirements
- Remote endpoint at or the local Python package veridex-mcp requiring Python 3.10+ and the mcp and httpx dependencies. Optional environment variables: VERIDEX_API_URL, VERIDEX_API_KEY (not needed for the paid endpoint), VERIDEX_TIMEOUT_SECONDS. Network access to api.veridexia.es. A wallet you control is needed to settle the x402 payment.
Installation
In SourceWeft
- Open VERIDEX in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.
Other MCP clients
Add this to your client's mcpServers config.
{
"mcpServers": {
"veridex-mcp": {
"type": "http",
"url": "https://mcp.veridexia.es/mcp"
}
}
}README
veridex-mcp
Servidor MCP (Model Context Protocol) para VERIDEX: verificación de empresas españolas por CIF contra el BORME, con puntuación de riesgo explicable y el ciclo de pago x402 resuelto paso a paso.
Una vez configurado, cualquier agente (Claude Desktop, Cursor, VS Code, Claude Code…) puede descubrir y usar la verificación sin que tú escribas una línea de HTTP.
Qué es y qué no es
Es un cliente MCP fino sobre la API pública de VERIDEX: tres herramientas, tipos explícitos, errores tipados y el reto de pago x402 decodificado para que el agente sepa exactamente cuánto cuesta, en qué red, en qué activo y a qué dirección.
No es una wallet. Este servidor no firma, no custodia claves y no envía transacciones. No puede pagar por ti — y eso es deliberado: un servidor MCP que pudiera mover fondos en nombre del usuario sería una wallet sin dueño. Lo que hace es entregar al agente una petición de pago completa y exacta, y dejar que la settle una wallet que tú controlas.
Tampoco modifica la API: es un consumidor puro de api.veridexia.es.
Las tres herramientas
verify_company_by_cif
risk.assurance es el campo que más se malinterpreta: assurance: "none" con
value: 0 significa no sabemos nada de esta empresa, no esta empresa es segura. El
servidor lo dice explícitamente en guidance cuando ocurre.
Instalación
Requiere Python 3.10+.
Eso instala el paquete veridex-mcp en modo editable junto con sus dependencias
(mcp>=1.9,<2 y httpx), y deja disponible el ejecutable veridex-mcp.
Comprueba que arranca:
Windows: si el host lanza el servidor con un intérprete concreto, usa
python -m veridex_mcpcon la ruta completa al Python del entorno virtual. Es la forma más fiable de que el proceso correcto arranque.
Variables de entorno
Configurar los hosts
Claude Desktop
Edita el fichero de configuración:
- Windows:
%APPDATA%\Claude\claude_desktop_config.json - macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
Si prefieres el ejecutable instalado en lugar del módulo:
Cierra Claude Desktop por completo (icono de bandeja incluido) y vuelve a abrirlo. Los
servidores MCP se lanzan al arrancar; el icono de herramientas aparecerá junto al cuadro de
texto. Hay un ejemplo listo para copiar en el fichero claude_desktop_config.json, en la
raíz del paquete.
Cursor
Configuración global en ~/.cursor/mcp.json, o por proyecto en .cursor/mcp.json:
VS Code
VS Code 1.102+ usa .vscode/mcp.json (la clave es servers, no mcpServers):
También puedes ejecutarlo desde la paleta de comandos con MCP: Add Server. Comprueba
con veridex-mcp --transport streamable-http y el
MCP Inspector si quieres ver las
herramientas sin un agente de por medio.
El flujo de pago x402, paso a paso
x402 es un protocolo de pago sobre HTTP: en lugar de una API key, se paga por petición. La
primera llamada a un recurso de pago devuelve HTTP 402 Payment Required con un reto
que describe exactamente cuánto, dónde y en qué activo. Se settle ese reto con una wallet,
se repite la petición con el resultado en la cabecera X-PAYMENT, y el recurso responde con
el contenido.
Con este servidor MCP el flujo tiene cuatro pasos:
1. El agente pide el precio (gratis)
Llama a get_veridex_info, que lee https://api.veridexia.es/.well-known/x402. Obtiene:
2. El agente llama a verify_company_by_cif sin pago
La API responde 402:
200000 con 6 decimales son 0,20 USDC.
No es un error. Es la primera mitad del ciclo, y el servidor la devuelve como resultado
normal (ok: false) con el campo payment completo, no como una excepción:
Reintentar en bucle no sirve de nada: el reto es idéntico en cada intento. Por eso
retryable es false.
3. Una wallet que tú controlas settle el reto
Aquí es donde entra el dinero, y donde este servidor se aparta a propósito. La wallet (la de tu usuario, o el proveedor x402 que uses) construye un payload de pago firmado para ese reto exacto — misma red, mismo activo, misma dirección, mismo importe — y lo serializa en base64.
4. El agente repite la llamada con el pago
Misma herramienta, mismo CIF, y el payload base64 en x_payment:
El servidor lo envía como cabecera:
Y ahora sí:
idempotency_key merece la pena. Si la conexión se cae justo después de enviar el pago,
reutilizar la misma clave hace que el reintento devuelva el resultado original en lugar de
cobrar dos veces.
Alternativa sin agente de por medio: el mismo ciclo con
curl, útil para depurar:
Cuándo te cobran y cuándo no
Ejemplo: Claude Desktop verificando una empresa
Con la configuración de arriba y Claude Desktop reiniciado, una conversación real:
Tú: Verifica la empresa con CIF A58818501 y dime si tiene riesgo.
Claude llama a la herramienta y recibe el 402:
Claude: La verificación cuesta 0,20 USDC en la red Base, pagaderos a
0x2bDc11AEB751EC845aE5fED5bbf7c73BF6D0C4E3. No puedo firmar ni enviar el pago yo mismo: este servidor MCP no tiene wallet.Para completarlo, settle este reto con una wallet tuya y pégame aquí el payload base64 resultante:
Si prefieres, dime y te indico cómo hacerlo desde tu wallet.
Tú: Aquí lo tienes:
eyJ4NDAyVmVyc2lvbiI6MSwic2NoZW1lIjoiZXhhY3QiLCJuZXR3b3JrIjoiYmFzZSIsInBheWxvYWQiOnsi…
Claude vuelve a llamar a verify_company_by_cif pasando ese valor en x_payment, recibe el
200 y responde:
Claude: Empresa verificada.
- Nombre: MOCK TECNOLOGIAS SA — Sociedad Anónima, Málaga
- Situación: Activa sin incidencias (último depósito en BORME: 2025-08-09)
- Constituida: 2015-10-02 · Capital: 45.000 €
- Riesgo: 15/100 (banda baja), confianza alta, conclusivo
status_active(+15): la sociedad figura activa sin incidencias publicadas- Actos recientes: 2026-08-28, Sección Primera — Cambio de domicilio social
- Fuente: prometiam (respuesta en directo, no cacheada)
No hay publicaciones de insolvencia ni señales adversas registradas.
Si el CIF no existiera, Claude no habría pagado nada y lo diría tal cual:
Claude: El CIF
A58818501tiene formato válido pero no aparece en el BORME ni en ninguna de las fuentes configuradas. No se ha realizado ningún cargo. ¿Quieres que compruebe si el CIF está bien escrito?
Catálogo de errores
Todos los fallos llegan como resultado normal con ok: false y un error tipado — nunca
como una excepción, para que el agente pueda leer error.code, decidir y actuar en lugar de
ver interrumpido su turno.
El estado siempre incluye guidance: una frase imperativa con el siguiente paso concreto,
escrita para que la siga un modelo.
Desarrollo
Estructura:
Todo el logging va a stderr. Bajo el transporte stdio, stdout es el canal JSON-RPC:
un solo print() corrompe el framing y el host reporta un error de parseo que no nombra la
causa real. Es la forma más común de que un servidor MCP "conecte pero no haga nada", así
que main.configure_logging() es explícito en lugar de delegar en basicConfig().
Publicar en PyPI
El pyproject.toml ya está listo (nombre veridex-mcp, licencia MIT, license-files):
Licencia
MIT. El texto completo viaja en el paquete, en el fichero LICENSE.
VERIDEX · https://api.veridexia.es · manifiesto de descubrimiento: https://api.veridexia.es/.well-known/x402
Source: README.md at commit c59db0b
Tools
0Version history
1- v0.1.1LatestOct 7, 2026

