Descripción general
El servidor MCP es un servidor remoto sin estado en https://mcp.cazvid.com/mcp. Apunta cualquier cliente MCP hacia él (Claude Code, conectores personalizados de Claude.ai, el modo desarrollador de ChatGPT, Cursor, VS Code) y el agente obtiene quince herramientas que envuelven las APIs públicas de Job Builder, Candidate Search, Webhooks, Job Search y CRM de CazVid. El servidor no guarda secretos: reenvía tu clave de API de CazVid a la API upstream, y toda la aplicación de cuotas y planes ocurre en el upstream.
Un solo endpoint, solo Streamable HTTP
Todo el tráfico es un POST al único endpoint /mcp con el transporte Streamable HTTP. GET /mcp devuelve 405 (el servidor no abre ningún stream iniciado por el servidor). No hay transporte solo-SSE ni stdio.
Conectar un cliente
Proporciona tu clave de API de CazVid de una de dos formas. Ambas usan la misma ruta de validación; elige la que soporte tu cliente.
Autenticación por encabezado (Claude Code, Cursor, VS Code)
Los clientes que pueden establecer encabezados de solicitud envían la clave como Authorization: Bearer <clave> o x-api-key: <clave> en POST /mcp. Esta es la forma principal.
Authorization: Bearer cazvid_jb_...
x-api-key: cazvid_jb_...Claude Code (CLI)
claude mcp add --transport http cazvid https://mcp.cazvid.com/mcp \
--header "Authorization: Bearer cazvid_jb_YOUR_KEY"Cursor (~/.cursor/mcp.json)
{
"mcpServers": {
"cazvid": {
"url": "https://mcp.cazvid.com/mcp",
"headers": { "Authorization": "Bearer cazvid_jb_YOUR_KEY" }
}
}
}VS Code (.vscode/mcp.json)
{
"servers": {
"cazvid": {
"type": "http",
"url": "https://mcp.cazvid.com/mcp",
"headers": { "Authorization": "Bearer cazvid_jb_YOUR_KEY" }
}
}
}Forma de ruta en la URL (conectores de Claude.ai, ChatGPT)
Las interfaces de conectores que solo exponen un campo de URL y no pueden establecer encabezados usan la forma de clave en la ruta POST /mcp/<clave>. En Claude.ai agrégalo en Configuración > Conectores > Agregar conector personalizado; en ChatGPT activa el modo desarrollador, agrega un conector con la autenticación en Sin autenticación y pega la URL.
https://mcp.cazvid.com/mcp/cazvid_jb_YOUR_KEY- La URL entonces contiene tu credencial. Mantenla privada - cualquiera con la URL puede gastar tu cuota.
- Rótala o revócala en cualquier momento en la app de CazVid en Perfil > Developer API; la URL anterior deja de funcionar de inmediato.
- El servidor establece
Referrer-Policy: no-referreren cada respuesta y nunca registra URLs, encabezados ni claves.
Las claves en la cadena de consulta (por ejemplo ?key=...) se ignoran - la llamada procede sin clave. Usa un encabezado o el segmento de ruta.
Herramientas
Las herramientas de cada familia se exponen como una sola lista plana. preview_job y create_job cubren la publicación de empleos; search_candidates cubre la búsqueda de candidatos; list_webhook_endpoints cubre los webhooks; search_jobs cubre la búsqueda de empleos; las nueve herramientas crm_* cubren el CRM; list_api_usage reporta las cuotas de las cinco familias.
| Herramienta | Qué hace | Cuota |
|---|---|---|
| preview_job | Genera un borrador de empleo (título, modalidad, salario, descripción opcional) a partir de un prompt. No se guarda nada. | Job Builder: 1 de 10/día |
| create_job | Crea un empleo real. Por defecto es un borrador revisable; solo lo envía a la revisión normal de CazVid con instrucción explícita. La idempotencia derivada del contenido hace que los reintentos sean seguros. | Job Builder: 1 de 10/día |
| list_api_usage | Reporta las cuotas de las cinco familias (usado, restante, hora de reinicio). No consume nada. | Gratis |
| search_candidates | Búsqueda de solo lectura del pool de candidatos con una consulta en lenguaje natural y filtros opcionales. Los resultados no incluyen datos de contacto. | Candidate Search: 1 de 100/día |
| list_webhook_endpoints | Lista de solo lectura de los endpoints de webhooks de la organización, con la URL, el estado, los eventos suscritos y las marcas de tiempo de cada uno. Nunca devuelve secretos de firma. | Gratis |
| search_jobs | Búsqueda de solo lectura de empleos públicos de CazVid con una consulta en lenguaje natural y filtros opcionales. Cada resultado incluye un applyUrl y ningún dato de contacto del reclutador. | Job Search: 1 de 500/día |
| crm_search_contacts | Lista o búsqueda de solo lectura de tus contactos del CRM, que devuelve filas compactas más el id del contacto. Aquí se omiten correos y teléfonos; pagina con una bandera hasMore. | CRM: 1 de 500/día |
| crm_get_contact | Detalle completo de solo lectura de un contacto del CRM por id, incluidos todos sus correos y teléfonos con su etiqueta, sus tags y el estado de su currículum. | CRM: 1 de 500/día |
| crm_upsert_contact | Crea un contacto en el CRM; solo el nombre es obligatorio. Deduplica por correo o teléfono dentro del workspace, así que una llamada repetida que lleve alguno de esos devuelve el contacto existente y un reintento es seguro. Un contacto creado solo con nombre no tiene clave de deduplicación, así que reintentarlo puede producir un segundo contacto. | CRM: 1 de 500/día |
| crm_update_contact | Actualiza campos de un contacto existente del CRM. Envía solo lo que cambia; los correos y teléfonos se limitan a uno cada uno y reemplazan la ranura principal en vez de agregarse. | CRM: 1 de 500/día |
| crm_delete_contact | Borrado suave de un contacto del CRM. Lo archiva y elimina sus interacciones y membresías de listas. Es destructivo, así que llámalo solo ante una petición explícita. | CRM: 1 de 500/día |
| crm_log_interaction | Agrega una entrada de línea de tiempo (correo, llamada, entrevista, nota) a un contacto del CRM, con un nombre de tipo de la taxonomía fija. Nunca se deduplica, así que no reintentes a ciegas. | CRM: 1 de 500/día |
| crm_list_interactions | Línea de tiempo de solo lectura de las interacciones de un contacto del CRM, de la más reciente a la más antigua, cada una con su tipo, fecha, nota y tags. Pagina con una bandera hasMore. | CRM: 1 de 500/día |
| crm_list_interaction_types | Lista de solo lectura de los nombres de tipo de interacción válidos para `crm_log_interaction`, agrupados por categoría. La taxonomía es una lista global fija. | CRM: 1 de 500/día |
| crm_upload_resume | Adjunta un currículum PDF, DOC o DOCX (base64 en línea, hasta 10 MB) a un contacto del CRM y lo encola para su análisis. El análisis es asíncrono y solo llena los campos vacíos del contacto. | CRM: 1 de 500/día, más 1 de 50/clave/día de subidas |
create_job crea por defecto un borrador revisable y solo publica cuando se lo pides explícitamente. Su clave de idempotencia se deriva del contenido de la solicitud, así que reintentar con argumentos idénticos en 24 horas devuelve el empleo ya creado en vez de un duplicado. search_candidates es de solo lectura y no devuelve datos de contacto. list_webhook_endpoints es de solo lectura y nunca devuelve secretos de firma; los endpoints se crean, verifican, rotan y eliminan en la app de CazVid o en la API REST. search_jobs es de solo lectura y devuelve empleos públicos, cada uno con un applyUrl y nunca datos de contacto del reclutador. En el CRM, crm_upsert_contact deduplica por correo o teléfono dentro del workspace, así que un reintento que lleve alguno de esos devuelve el contacto existente en vez de un duplicado (un contacto creado solo con nombre no tiene clave de deduplicación, así que reintentarlo puede producir un segundo contacto); crm_log_interaction nunca se deduplica, así que no reintentes a ciegas una llamada que pueda haber tenido éxito; y crm_delete_contact es un borrado suave que archiva el contacto junto con sus interacciones y membresías de listas.
Cuotas y claves
El servidor MCP usa la misma clave de CazVid Developer API y las mismas cuotas diarias por organización que las APIs REST. No hay nada nuevo que aprovisionar.
- Job Builder: 10 llamadas exitosas de
preview_jobocreate_jobpor organización por día UTC. - Candidate Search: 100 llamadas de
search_candidatespor organización por día UTC, más un límite de ráfaga de 20 por minuto. - Webhooks:
list_webhook_endpointsno consume cuota. El tope de la familia de webhooks es sobre las entregas de eventos, no sobre esta herramienta - hasta 5.000 entregas por organización por día. - Job Search: 500 llamadas de
search_jobspor organización por día UTC, más un límite de ráfaga de 30 por minuto. - CRM: 500 llamadas
crm_*por organización por día UTC, más un límite de ráfaga de 30 por minuto. Es una cuota separada de las demás familias, y cada llamada con cuota cuenta, incluidas las lecturas.crm_upload_resumeademás consume 1 de una cuota separada de subida de currículums de 50 por clave de API por día UTC. list_api_usageno consume cuota y reporta lo usado, lo restante y las horas de reinicio de las cinco familias.- Todas las cuotas se reinician a la medianoche UTC. Una llamada limitada por tasa devuelve la hora de reinicio y te dirige a
list_api_usage. - Las claves provienen de Perfil > Developer API en la app de CazVid. El alcance de job-search es gratuito - cualquier cuenta registrada de CazVid puede generar una clave para él. Los alcances de job-builder, candidate-search y crm requieren un plan Platinum, Diamond o Enterprise, y los webhooks requieren un plan Platinum o superior. Una sola clave puede llevar todos los alcances que permita tu plan.
Para los contratos completos de solicitud y respuesta, consulta la documentación de Job Builder API, la documentación de Candidate Search API, la documentación de Webhooks API, la documentación de Job Search API y la documentación de CRM API.
Conectar sin una clave
Conectarse y listar herramientas funciona sin una clave para que la configuración del conector nunca se rompa. Llamar a una herramienta sin clave no falla con error - devuelve una guía clara de cómo agregar tu clave.
- El handshake (
initialize) ytools/listfuncionan sin clave, así que un cliente puede completar la configuración y mostrar las quince herramientas. - Una llamada a una herramienta sin clave devuelve un mensaje legible que explica cómo conectarse, no un error de protocolo.
- Una vez que se proporciona una clave (por encabezado o forma de ruta), la misma llamada corre contra la cuota de tu organización.