Integración con IA

MCP — Model Context Protocol

Veritra expone un servidor MCP JSON-RPC para agentes de IA. En lugar de llamar a endpoints REST y analizar respuestas, los agentes disponen de herramientas de alto nivel (tenders_search, leads_create_filter, …) con parámetros tipados.

¿Qué es MCP?

Model Context Protocol es un estándar abierto de Anthropic para conectar aplicaciones LLM con fuentes de datos y herramientas externas. Un cliente de IA (Claude Desktop, aplicación personalizada) lee la lista de herramientas disponibles desde el servidor MCP y decide cuál invocar según la conversación con el usuario.

El servidor MCP de Veritra funciona como transporte HTTP — sin procesos locales, solo un endpoint POST que acepta solicitudes JSON-RPC.

Endpoint y autenticación

POST/api/mcp

Utilice una clave de API de gestión (mrw_…) en el encabezado Authorization. El encabezado X-MRW-Client: mcp indica que la llamada proviene de un cliente MCP (utilizado internamente para seguimiento de audiencia y verificación de derechos).

Authorization: Bearer mrw_7fa7785c3d6e…
X-MRW-Client: mcp
Content-Type: application/json

Encontrará la clave en el panel de control tras el proceso de incorporación. La misma clave es válida para REST y MCP — no se requiere configuración adicional.

Estructura JSON-RPC

Cada solicitud y respuesta sigue la especificación JSON-RPC 2.0. tools/list para descubrimiento, tools/call para invocar una herramienta.

Solicitud

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "tenders_search",
    "arguments": { "qText": "rekonstrukce mostu", "limit": 10 }
  }
}

Respuesta

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [{ "type": "text", "text": "{ … JSON payload … }" }]
  }
}

En caso de error, la respuesta contiene un objeto error en lugar de result:

{
  "jsonrpc": "2.0",
  "id": 1,
  "error": { "code": -32602, "message": "Invalid params: qText is required" }
}

Descubrimiento (tools/list)

El cliente lee la lista de herramientas disponibles — el servidor devuelve definiciones de herramientas estándar MCP, incluyendo el esquema JSON de los parámetros.

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/list"
}

La respuesta contiene un array tools[] con objetos { name, description, inputSchema }. El cliente de IA utiliza inputSchema para validar los argumentos.

Catálogo de herramientas

Actualmente 9 herramientas en 4 categorías: licitaciones (búsqueda/detalle/filtros), leads (filtros), cuentas, suscripciones, meta.

tenders_search

Búsqueda en tiempo real de licitaciones en todos los portales. Devuelve las N principales licitaciones con detalle (título, valor, plazo, autoridad contratante, …).

ParámetroTipoDescripción
qTextstringTexto de búsqueda (texto completo en título + descripción).
industryTagsstring[]IDs de etiqueta de sector (con_buildings, it_development).
cpvPrefixesstring[]Prefijos CPV (45, 452).
regionsstring[]Códigos NUTS hoja (CZ010, CZ020, …).
minValuenumberValor estimado mínimo.
maxValuenumberValor estimado máximo.
deadlineFromstring (YYYY-MM-DD)Plazo de presentación >= AAAA-MM-DD.
deadlineTostring (YYYY-MM-DD)Plazo de presentación <= AAAA-MM-DD.
sort"newest"|"deadline"|"value"Ordenar.
limitnumberNúmero de resultados (máx. 1000). Para exportar el conjunto completo de datos utilice nextCursor o /matches/export (CSV/XLSX, hasta 5000 filas).
cursorstringCursor de paginación.

tenders_get_detail

Detalle de una licitación, incluyendo documentos y marcadores de preferencia.

ParámetroTipoDescripción
tenderId*numberID numérico de licitación.

tenders_list_industries

Devuelve la lista de etiquetas de sector (con_buildings, it_development, …) para filtrado — el agente puede mostrar al LLM un menú comprensible en lugar de memorizar IDs.

ParámetroTipoDescripción
locale"cs"|"en"|"de"|"sk"|"fr"Idioma de etiqueta (cs por defecto).

tenders_list_regions

Devuelve la lista de regiones NUTS para el país indicado (CZ por defecto).

ParámetroTipoDescripción
country"CZ"|"SK"|"FR"|"DE"País (CZ por defecto).

leads_list_filters

Lista de filtros LEADS guardados por el usuario.

Los filtros creados mediante MCP / REST también se utilizan en correos electrónicos, notificaciones push y webhooks — el agente puede configurarlos y el usuario los recibe a través de los canales habituales.

leads_create_filter

Crea un nuevo filtro LEADS. Las nuevas coincidencias activan webhook y resumen por correo electrónico.

ParámetroTipoDescripción
name*stringNombre visible del filtro.
regionsstring[]Códigos NUTS hoja (CZ010, CZ020, …).
industryTagsstring[]IDs de etiqueta de sector (con_buildings, it_development).
categoriesstring[]Códigos/prefijos CPV (heredado).
keywordsstring[]Palabras clave (coincidencia OR).
minValuenumberValor estimado mínimo.
maxValuenumberValor estimado máximo.
emailDigestbooleanEnviar resumen diario por correo electrónico.

account_create_webhook

Registre un endpoint webhook HTTPS para recibir eventos (leads.match.created, etc.). Devuelve el ID del endpoint y el secreto para verificación HMAC. El secreto se muestra UNA SOLA VEZ — guárdelo en su entorno.

ParámetroTipoDescripción
url*stringURL HTTPS accesible públicamente donde Veritra enviará eventos por POST.
enabledEvents*string[]Array de tipos de evento (p. ej. ['leads.match.created']).
descriptionstringEtiqueta descriptiva opcional.

Máx. 5 endpoints por cuenta. Para rotar el secreto use /api/v2/account/webhooks/:id/rotate-secret.

subscriptions_list_plans

Catálogo público de servicios y precios (LEADS, PRICING, PROCUREMENT). No requiere autenticación.

meta_list_services

Estado de todos los servicios de Veritra (disponibilidad, indicadores de obsolescencia).

Ejemplo con curl

Encontrar las 5 principales licitaciones de construcción por encima de 1M CZK en Praga:

curl -X POST https://veritra.io/api/mcp \
  -H "Authorization: Bearer mrw_…" \
  -H "X-MRW-Client: mcp" \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
      "name": "tenders_search",
      "arguments": {
        "industryTags": ["con_buildings"],
        "regions": ["CZ010"],
        "minValue": 1000000,
        "limit": 5
      }
    }
  }'

Configuración en Claude Desktop

Añadir en ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) o equivalente:

{
  "mcpServers": {
    "veritra": {
      "url": "https://veritra.io/api/mcp",
      "transport": "http",
      "headers": {
        "Authorization": "Bearer mrw_…",
        "X-MRW-Client": "mcp"
      }
    }
  }
}

Tras reiniciar Claude Desktop, verá el icono del servidor MCP conectado en la interfaz. Abra una conversación y pregunte, por ejemplo, '¿Cuáles son las licitaciones de construcción actuales en Praga por encima de un millón?' — Claude llamará a tenders_search de forma automática.

Otros clientes MCP

El servidor MCP funciona sobre transporte HTTP — compatible con cualquier cliente que use JSON-RPC 2.0 sobre HTTP. A continuación se muestran ejemplos para los más habituales.

Cursor / Continue / Cline / Zed

Cursor IDE tiene soporte MCP integrado. Edite ~/.cursor/mcp.json:

// ~/.cursor/mcp.json
{
  "mcpServers": {
    "veritra": {
      "url": "https://veritra.io/api/mcp",
      "headers": {
        "Authorization": "Bearer mrw_mgmt_…",
        "X-MRW-Client": "mcp"
      }
    }
  }
}

Continue.dev

Extensión de VS Code de código abierto. Añada a config.json:

// ~/.continue/config.json (snippet)
"mcpServers": [
  {
    "name": "veritra",
    "transport": { "type": "http", "url": "https://veritra.io/api/mcp" },
    "requestOptions": {
      "headers": {
        "Authorization": "Bearer mrw_mgmt_…",
        "X-MRW-Client": "mcp"
      }
    }
  }
]

Cliente HTTP MCP genérico / plugin ChatGPT / LLM personalizado

Si su cliente no tiene soporte MCP nativo, comuníquese con la API directamente mediante JSON-RPC 2.0. Las cabeceras Authorization + X-MRW-Client identifican su cuenta. La primera llamada es de descubrimiento (tools/list).

POST https://veritra.io/api/mcp HTTP/1.1
Authorization: Bearer mrw_mgmt_<your_key>
X-MRW-Client: mcp
Content-Type: application/json

{ "jsonrpc": "2.0", "id": 1, "method": "tools/list" }

Límites de uso

Las llamadas MCP están sujetas a los mismos límites de la API de gestión (60/min lectura, 10/min escritura, 5000/día). Si se superan, se devuelve HTTP 429 (Código de error JSON-RPC -32000).

¿Preguntas? michal@veritra.io