JobsPipe

Busca ofertas de empleo en vivo de más de 30 bolsas de trabajo, fuentes ATS y servicios públicos de empleo, normalizadas en un solo esquema; lee una oferta completa; guarda una búsqueda como señal para recibir notificaciones de nuevas coincidencias; detecta el stack tecnológico de una empresa. Servidor remoto con inicio de sesión OAuth, cuenta gratuita para empezar.

Documentación

Servidor MCP

Conecta agentes de IA y clientes MCP a JobsPipe: busca ofertas de empleo en vivo mediante el Protocolo de Contexto de Modelos, iniciando sesión con OAuth o una clave de API.

JobsPipe ejecuta un servidor de Protocolo de Contexto de Modelos para que agentes de IA y clientes compatibles con MCP (Claude, ChatGPT, Cursor y hosts MCP personalizados) puedan buscar ofertas de empleo en vivo directamente, sin que escribas ningún código HTTP.

El servidor habla MCP sobre HTTP Streamable en:

https://mcp.jobspipe.dev/mcp

Cómo funciona

El servidor MCP es una capa delgada sobre la API de JobsPipe. Cada llamada de herramienta que necesita datos se reenvía a la API bajo tu cuenta, por lo que:

  • Los resultados, las fuentes y la frescura son idénticos a la API REST.
  • El uso cuenta contra tu plan, y se aplican la cuota y los límites de velocidad de tu plan.

Hay dos formas de autenticarse, y ambas llegan a la misma cuenta.

Inicio de sesión con OAuth (predeterminado)

Los clientes que admiten la autorización de MCP (conectores de Claude y ChatGPT, Claude Code y otros hosts que implementan el descubrimiento de OAuth) solo necesitan la URL. Cuando un cliente se conecta sin credenciales, el servidor responde 401 con un encabezado WWW-Authenticate que apunta a sus metadatos de recursos protegidos:

WWW-Authenticate: Bearer realm="jobspipe", resource_metadata="https://mcp.jobspipe.dev/.well-known/oauth-protected-resource"

El cliente sigue ese enlace al servidor de autorización en https://api.jobspipe.dev (metadatos en /.well-known/oauth-authorization-server), se registra y te envía a una pantalla de inicio de sesión y consentimiento de JobsPipe. Utiliza el flujo de código de autorización con PKCE (S256) y tokens de actualización, y luego envía el token de acceso como Authorization: Bearer <token> en cada solicitud. No es necesario copiar ninguna clave en ningún lugar.

La pantalla de consentimiento nombra la aplicación, muestra las URL de redirección que registró y enumera lo que está solicitando. Aprobar permite que esa aplicación busque empleos y analice pilas tecnológicas como tú: cada llamada cuenta contra tu plan, igual que las tuyas propias, y puede crear o cambiar tus señales guardadas. No puede ver tu contraseña, cambiar tu facturación ni acceder a nada fuera de tu propia cuenta. La aprobación pertenece a la cuenta con la que has iniciado sesión en ese momento, y la aplicación solo se envía de vuelta a una URL de redirección que registró.

Si un token caduca o se revoca, el servidor responde 401 con Access token is invalid or expired. Reconnect to continue.: vuelve a conectar el cliente para iniciar sesión de nuevo.

Encabezado de clave de API

Para clientes sin soporte de OAuth, scripts y CI, usa la misma clave de API que usas para la API REST: una clave que comienza con jp_live_. Crea o copia una desde tu panel de control y envíala en cualquiera de los dos encabezados:

Authorization: Bearer jp_live_xxxxxxxxxxxxxxxxxxxxxxxx
x-api-key: jp_live_xxxxxxxxxxxxxxxxxxxxxxxx

x-api-key se lee solo cuando no hay un encabezado Authorization: Bearer. Un valor de portador que no comience con jp_live_ se trata como un token de acceso de OAuth.

Una conexión sin credenciales en absoluto se rechaza con 401 Unauthorized. Una clave jp_live_ no se valida al conectarte, solo cuando una herramienta llega a la API; consulta Límites y errores.

Instálalo

Elige tu cliente. Cada ruta llega al mismo servidor y a la misma cuenta.

Claude Code

claude mcp add --transport http jobspipe https://mcp.jobspipe.dev/mcp --scope user

Luego ejecuta /mcp dentro de Claude Code y elige Autenticar para jobspipe: se abre un navegador, inicias sesión en JobsPipe y aparecen las herramientas. Omite --scope user para agregarlo solo al proyecto actual, o usa --scope project para escribir un .mcp.json que tu equipo pueda confirmar.

Para usar una clave de API en lugar de iniciar sesión, pásala como encabezado (y omite el paso de autenticación /mcp):

claude mcp add --transport http jobspipe https://mcp.jobspipe.dev/mcp \
  --scope user --header "Authorization: Bearer jp_live_xxxxxxxxxxxxxxxxxxxxxxxx"

Un .mcp.json confirmado lee la clave del entorno, por lo que no se verifica ningún secreto:

{
  "mcpServers": {
    "jobspipe": {
      "type": "http",
      "url": "https://mcp.jobspipe.dev/mcp",
      "headers": {
        "Authorization": "Bearer ${JOBSPIPE_API_KEY}"
      }
    }
  }
}

Claude (web, escritorio y móvil)

  1. Abre Configuración → Conectores y haz clic en Agregar conector personalizado.
  2. Pega https://mcp.jobspipe.dev/mcp como la URL del servidor MCP remoto.
  3. Haz clic en Conectar. Claude te envía a una pantalla de inicio de sesión y consentimiento de JobsPipe, y esa es toda la configuración: no hay clave que pegar ni ID de cliente que completar en Configuración avanzada.

En los planes Team y Enterprise, un propietario agrega el conector una vez en Configuración de la organización → Conectores, y luego cada miembro conecta su propia cuenta de JobsPipe desde Configuración → Conectores.

ChatGPT

ChatGPT se conecta a JobsPipe como un plugin respaldado por el servidor MCP. No puede enviar una clave de API, por lo que el inicio de sesión es la única ruta, y necesita el modo Desarrollador una vez.

  1. Abre Configuración → Seguridad e inicio de sesión y activa el modo Desarrollador. Debe permanecer activado mientras el plugin esté instalado.
  2. Abre Configuración → Plugins y haz clic en + para crear un plugin. Nómbralo JobsPipe e ingresa https://mcp.jobspipe.dev/mcp como la URL del servidor MCP. Deja Autenticación en OAuth.
  3. Haz clic en Crear y luego en Conectar. ChatGPT se registra, abre una pantalla de inicio de sesión y consentimiento de JobsPipe, y las herramientas quedan disponibles en un chat.

Dos cosas que parecen el plugin pero no lo son: una entrada de JobsPipe instalada desde Explorar plugins que muestra comandos curl y solicita una clave de API es un documento de habilidades, no este servidor, y ChatGPT responderá que "no tiene una clave de API utilizable"; elimínalo y crea el plugin anterior. Y si ChatGPT nunca muestra un inicio de sesión, el modo Desarrollador está desactivado.

ChatGPT no puede enviar una clave de API a un conector, por lo que OAuth es la única ruta allí. El servidor también responde a las herramientas search y fetch que requieren las funciones de investigación profunda y conocimiento de la empresa de ChatGPT, por lo que JobsPipe se puede usar como fuente de investigación y cada empleo que cita enlaza de vuelta a la publicación original.

Cursor

O agrégalo manualmente: ~/.cursor/mcp.json para cada proyecto, .cursor/mcp.json dentro de un proyecto:

{
  "mcpServers": {
    "jobspipe": {
      "url": "https://mcp.jobspipe.dev/mcp"
    }
  }
}
{
  "mcpServers": {
    "jobspipe": {
      "url": "https://mcp.jobspipe.dev/mcp",
      "headers": {
        "Authorization": "Bearer ${env:JOBSPIPE_API_KEY}"
      }
    }
  }
}

Cursor no tiene un campo type para servidores remotos: un url es suficiente. Abre Configuración → MCP para confirmar que jobspipe está conectado y para iniciar sesión si dejaste headers fuera.

VS Code y GitHub Copilot

O agrégalo a .vscode/mcp.json: ten en cuenta que la clave contenedora es servers, no mcpServers:

{
  "servers": {
    "jobspipe": {
      "type": "http",
      "url": "https://mcp.jobspipe.dev/mcp"
    }
  }
}

Para enviar una clave de API en lugar de iniciar sesión, deja que VS Code la solicite una vez y mantenla fuera del archivo:

{
  "servers": {
    "jobspipe": {
      "type": "http",
      "url": "https://mcp.jobspipe.dev/mcp",
      "headers": { "Authorization": "Bearer ${input:jobspipe-api-key}" }
    }
  },
  "inputs": [
    {
      "type": "promptString",
      "id": "jobspipe-api-key",
      "description": "JobsPipe API key",
      "password": true
    }
  ]
}

Windsurf

En ~/.codeium/windsurf/mcp_config.json, los servidores remotos usan serverUrl:

{
  "mcpServers": {
    "jobspipe": {
      "serverUrl": "https://mcp.jobspipe.dev/mcp",
      "headers": {
        "Authorization": "Bearer ${env:JOBSPIPE_API_KEY}"
      }
    }
  }
}

Cualquier otro cliente MCP

Apúntalo a https://mcp.jobspipe.dev/mcp sobre HTTP Streamable. Los clientes que implementan la autorización de MCP no necesitan nada más; el resto envía la clave como encabezado.

{
  "mcpServers": {
    "jobspipe": {
      "type": "http",
      "url": "https://mcp.jobspipe.dev/mcp",
      "headers": {
        "Authorization": "Bearer jp_live_xxxxxxxxxxxxxxxxxxxxxxxx"
      }
    }
  }
}

Una vez conectado, las herramientas a continuación aparecen automáticamente y el agente puede llamarlas.

Herramientas

HerramientaDescripción
searchEncuentra publicaciones y obtén resultados para citar, cada uno con un id, un título y un enlace.
fetchLee una publicación completa por el id que llevaba un resultado de search.
search_jobsBusca ofertas de empleo en vivo de más de 30 fuentes, normalizadas en un solo esquema, con todos los filtros.
create_signalGuarda una búsqueda y recibe avisos cuando algo nuevo coincida, por correo electrónico, Slack o un webhook firmado.
list_signalsLista las señales en tu cuenta, con sus filtros, destinos y cuándo se verificó cada una por última vez.
detect_company_tech_stackDetecta las tecnologías que una empresa sirve en su dominio, con puntuaciones de confianza.
search_documentationBusca en estos documentos y obtén las secciones coincidentes con su texto y un enlace.
list_pricing_plansLista los planes de JobsPipe con precio mensual, cuota de empleos y resultados máximos por llamada.
get_account_infoMuestra en qué cuenta está conectada la sesión, su plan y los créditos usados y restantes este mes.

search, fetch, search_jobs y detect_company_tech_stack llaman a la API y cuentan contra tu plan. Un empleo se cobra una vez por mes calendario, por lo que un fetch de una publicación que search ya devolvió es gratuito. search_documentation y list_pricing_plans son respondidas por el propio servidor MCP y no usan créditos. get_account_info, create_signal y list_signals leen o escriben en tu cuenta y tampoco usan créditos; una señal no cuesta créditos de empleo para evaluarse.

search y fetch

search y fetch son el par que las funciones de investigación y conector buscan por nombre (la investigación profunda y el conocimiento de la empresa de ChatGPT, entre ellas), por lo que una búsqueda de JobsPipe se puede citar en un informe como cualquier otra fuente. Son una vista más simple del mismo corpus que sirve search_jobs.

search toma un query y, opcionalmente, country_code (ISO 3166-1 alfa-2), city, remote, posted_within_days y limit (1 a 50, predeterminado 10). La consulta coincide con los títulos de las publicaciones: se prueba tal como está escrita primero y, si nada coincide, se prueba de nuevo con las palabras significativas, por lo que una pregunta completa aún devuelve algo. Responde con un arreglo results de { id, title, url }, donde url es la publicación en sí y es lo que se cita, y un bloque usage que indica cuánto costó la llamada.

{
  "results": [
    {
      "id": "b1f3c0d2e4a5",
      "title": "Senior Data Engineer - Acme Corp (Berlin, Germany)",
      "url": "https://example.com/jobs/b1f3c0d2e4a5"
    }
  ],
  "usage": { "credits_charged": 1, "jobs_already_paid": 0 }
}

usage indica cuánto costó esa búsqueda: credits_charged son los créditos que usó, y jobs_already_paid es cuántas de las publicaciones fueron gratuitas porque tu cuenta ya las pagó este mes calendario. Está ausente en una cuenta que no se factura por empleo.

fetch toma el id de un resultado y responde esa publicación como { id, title, text, url, metadata }. text es la publicación como prosa legible (rol, empleador, ubicación, modalidad de trabajo, tipo de empleo, antigüedad, salario, fechas, habilidades y el cuerpo de la publicación), y metadata lleva los mismos hechos como campos de cadena individuales, más credits_charged y jobs_already_paid para lo que costó leerla. Un id que ya no se resuelve devuelve un error de herramienta que lo nombra; los ids dejan de resolverse una vez que una publicación se cierra.

Para cualquier cosa que estos dos no cubran (pisos salariales, habilidades, fuentes, postura de visa, idioma, códigos de industria u ocupación, paginación más allá de 50), usa search_jobs a continuación.

search_jobs

Cada filtro es opcional y se combina con AND. Los filtros de arreglo que terminan en _or coinciden con cualquiera de sus valores.

Texto y empresa

ParámetroTipoDescripción
job_title_orstring[]Coincide con empleos cuyo título contenga cualquiera de estas frases.
job_title_notstring[]Excluye empleos cuyo título contenga cualquiera de estas frases.
description_orstring[]Coincide con empleos cuya descripción contenga cualquiera de estas frases.
company_name_orstring[]Coincide con empleos de cualquiera de estos nombres de empresa exactos.
company_name_partial_match_orstring[]Coincide con empleos cuyo nombre de empresa contenga cualquiera de estos, p. ej., ["acme"] encuentra "Acme Corp" y "Acme Ltd".
employer_type_orstring[]Conserva solo estos tipos de empleador: employer (la propia empresa), agency, broker.
employer_type_notstring[]Elimina estos tipos de empleador. ["agency","broker"] conserva solo empleos publicados por la empresa contratante.
min_employee_countnumberEmpresas con al menos esta cantidad de empleados. Los empleos cuyo tamaño de empresa es desconocido se eliminan a menos que include_unknown_size sea verdadero.
max_employee_countnumberEmpresas con como máximo esta cantidad de empleados. Misma regla para tamaños desconocidos.
include_unknown_sizebooleanConserva empleos cuyo tamaño de empresa es desconocido al filtrar por cantidad de empleados. La mayoría de las publicaciones no llevan tamaño, por lo que un filtro de tamaño sin esto devuelve muchos menos resultados.

Ubicación

ParámetroTipoDescripción
job_country_code_orstring[]Códigos de país ISO a incluir, p. ej. ["US","GB"].
job_country_code_notstring[]Códigos de país ISO a excluir, p. ej. ["IN"].
job_location_orstring[]Ciudad o región contiene cualquiera de estos, p. ej. ["Seattle","WA"]. Los términos de tres caracteres o menos coinciden con valores completos (WA es Washington, nunca Iowa). Combínalo con job_country_code_or para desambiguar ciudades con el mismo nombre.
region_orstring[]Estados de EE. UU. y provincias canadienses como códigos ISO 3166-2, p. ej. ["US-NY","CA-ON"]. Más preciso que job_location_or para un estado o provincia.
metro_code_orstring[]Códigos de área metropolitana CBSA de EE. UU., p. ej. "35620" (Nueva York). Los empleos fuera de EE. UU. nunca coinciden.
remotebooleantrue devuelve solo remoto, false excluye remoto.
work_arrangement_orstring[]remote, hybrid o onsite — más fino que remote, que lee false tanto para híbrido como para presencial. Los empleos con modalidad desconocida nunca coinciden.

Fuente

ParámetroTipoDescripción
source_orstring[]Coincide con cualquier fuente de recopilación, p. ej. ["linkedin","greenhouse"]. Se ignoran mayúsculas, espacios y puntuación; yc es un alias de ycombinator.
source_notstring[]Excluir fuentes. ["indeed","linkedin"] elimina los dos tableros más grandes; fija la lista de ATS en source_or para solo ATS.

Rol y clasificación

ParámetroTipoDescripción
employment_type_orstring[]full-time, part-time, contract, temporary, internship.
include_unlabeled_employment_typebooleanTambién devuelve empleos sin tipo de empleo (alrededor del 27% de las publicaciones).
job_seniority_orstring[]Niveles de antigüedad a incluir.
include_unlabeled_senioritybooleanTambién devuelve empleos sin antigüedad (alrededor del 55% de las publicaciones).
skills_orstring[]Slugs de habilidades, p. ej. ["python","kubernetes"].
esco_skill_id_orstring[]IDs de conceptos de habilidades ESCO (coincidencia exacta).
occupation_code_orstring[]Códigos ISCO-08; 4 dígitos exactos ("2512" Desarrolladores de software), 1-3 dígitos coinciden como prefijos.
isic_division_orstring[]Divisiones de industria del empleador ISIC Rev.4, 2 dígitos ("62" Programación informática).

Salario, beneficios y señales de publicación

ParámetroTipoDescripción
min_salary_usdnumberEl salario publicado (tope del rango, USD anualizado) alcanza este monto. Los empleos sin salario publicado nunca coinciden.
benefits_orstring[]Slugs de beneficios, p. ej. ["401k","health insurance"]. Solo datos estructurados de la fuente, por lo que la cobertura es parcial.
visa_sponsorship_orstring[]offers, no o citizenship_required, analizados del texto de la publicación. Los empleos que no dicen nada nunca coinciden.
has_recruiter_emailbooleantrue para solo empleos con un correo de reclutador analizado, false para solo empleos sin uno.
max_applicant_countnumberComo máximo este número de solicitantes. Solo LinkedIn expone los conteos, por lo que los empleos sin uno se descartan.
max_ghost_scorenumberExcluye empleos cuya puntuación de probabilidad fantasma (0-100) supere esto. Los empleos sin puntuación pasan.

Fechas, paginación y salida

ParámetroTipoDescripción
posted_at_gtestringSolo publicaciones en o después de esta fecha (YYYY-MM-DD).
posted_at_ltestringSolo publicaciones en o antes de esta fecha (YYYY-MM-DD).
posted_at_max_age_daysnumberSolo publicaciones más nuevas que esta cantidad de días.
last_verified_max_age_daysnumberSolo publicaciones que confirmamos vivas en su fuente por última vez dentro de esta cantidad de días.
statusstringactive (el predeterminado), closed o any. Las publicaciones cerradas conservan sus datos y son cómo se responde una pregunta de contratación pasada.
include_unknownstring[]Nombres de campos cuyos empleos sin etiquetar el filtro de ese campo debe conservar en lugar de descartar, p. ej. ["language"].
limitnumberFilas a devolver. El valor predeterminado es 25 y se limita al máximo de resultados por llamada de tu plan (25 en Free).
offsetnumberFilas a omitir, para paginación.
cursorstringContinuar una búsqueda anterior desde metadata.next_cursor.
detailstringcompact (el predeterminado) o full. El propio argumento de la herramienta, no un filtro de búsqueda.
include_total_resultsbooleanRellena metadata.total_results (ligeramente más lento).
blur_company_databooleanObsoleto e ignorado. El modo de vista previa se ha eliminado; cada búsqueda devuelve el registro completo y se factura por empleo.

Alrededor del 17% de las publicaciones llevan una modalidad, por lo que work_arrangement_or devuelve una porción real pero parcial y descarta silenciosamente el resto. Usa remote para amplitud, work_arrangement_or cuando híbrido y presencial deban distinguirse.

Una llamada típica de agente:

{
  "job_title_or": ["data engineer"],
  "remote": true,
  "posted_at_max_age_days": 14,
  "limit": 25,
  "include_total_results": true
}

La respuesta refleja la API REST: un bloque metadata (con total_results cuando se solicita) y un array data de publicaciones normalizadas: título, empresa, ubicación, país, rango salarial, antigüedad, fecha de publicación y la URL de postulación. Cada publicación también lleva sources (cada tablero donde se vio, no solo el primero), last_seen_at y verified_at (cuando una verificación confirmó por última vez que la publicación estaba viva, y cuándo miramos por última vez), y is_manager y job_function donde se conocen — is_manager es lo que distingue a un contribuidor individual principal de un director real, ya que seniority archiva ambos bajo "director". Consulta el esquema de empleo para la forma completa y para cuánto del corpus lleva cada campo.

Cuánto de cada publicación obtienes. Las filas vienen compactas por defecto: los campos por los que se lee una lista de resultados, con la descripción recortada a un fragmento y cualquier cosa vacía omitida. Una fila compacta dice description_truncated: true y description_chars cuando recortó uno, para que sepas que hay más para leer. Lee una publicación completa con fetch, o pasa detail: "full" para obtener cada campo de cada fila exactamente como la API REST lo responde.

Paginación. Pagina con cursor: toma metadata.next_cursor de una respuesta y envíalo de vuelta como cursor en la siguiente llamada, sin cambios, con los mismos filtros. Detente cuando una página vuelva sin next_cursor. offset todavía funciona y es más simple para un puñado de páginas, pero un cursor es más estable en un corpus que sigue creciendo y es la única forma de superar el límite de desplazamiento. Debido a que limit se limita silenciosamente al tamaño de página de tu plan, una página más corta que el limit que pediste no significa que llegaste al final.

Cuánto costó una llamada. metadata.credits_charged es lo que usó la llamada y metadata.jobs_already_paid es cuántas filas fueron gratuitas porque tu cuenta ya las pagó este mes calendario. Ambos están ausentes en una cuenta que no se factura por empleo.

create_signal y list_signals

Una señal es una búsqueda guardada que te avisa cuando algo nuevo coincide, para que un agente no tenga que volver a ejecutar la misma búsqueda en un temporizador. Las coincidencias se basan en la primera vez que una publicación entró al corpus, por lo que una republicación o un relleno no dispara de nuevo, y evaluar una señal no cuesta créditos de empleo.

create_signal toma:

ParámetroTipoDescripción
namestringUna etiqueta corta para esta señal.
filtersobjectLa búsqueda que define una coincidencia, en la forma que toma search_jobs, menos paginación y cualquier cosa que decida qué cuenta como nuevo: la señal mantiene su propia marca de agua.
destinationsobject[]A dónde van las coincidencias: { kind: "email" | "slack" | "webhook", target, cadence: "instant" | "daily" }. El correo electrónico está disponible en todos los planes.
modestringjobs se dispara en cada publicación nueva que coincide; companies (el predeterminado) se dispara la primera vez que una empresa coincide.
intentstringTexto libre que describe lo que estás vigilando.
idempotency_keystringTu propia clave para esta señal. Envía la misma clave en un reintento y la señal ya guardada se reproduce en lugar de crear una segunda.

Ejecuta los mismos filtros a través de search_jobs primero para ver qué devuelven antes de guardarlos.

Ambas herramientas responden la misma forma: create_signal una signal, list_signals un array de signals:

{
  "signal": {
    "id": "9f1c2f1e-...",
    "name": "Fintech hiring in Berlin",
    "mode": "jobs",
    "enabled": true,
    "filters": { "job_title_or": ["backend engineer"], "job_country_code_or": ["DE"] },
    "intent": "Berlin fintechs starting to hire backend engineers",
    "grade_leads": false,
    "created_at": "2026-09-22T10:00:00.000Z",
    "last_evaluated_at": null,
    "last_error": null,
    "consecutive_failures": 0,
    "destinations": [
      {
        "id": "7a2b3c4d-...",
        "kind": "webhook",
        "target": "https://example.com/hooks/jobspipe",
        "cadence": "instant",
        "enabled": true,
        "signing_secret": "whsec_..."
      }
    ]
  }
}

El signing_secret de un destino de webhook se devuelve una vez, cuando se crea la señal: guárdalo entonces, porque un list_signals posterior no lo incluye. Consulta Señales para saber cómo se firman y reintentan las entregas.

detect_company_tech_stack

ParámetroTipoDescripción
domainstringObligatorio. Dominio a escanear, p. ej. "stripe.com". Las URL y www. se normalizan.
modestringauto (predeterminado) intenta una búsqueda HTTP rápida, luego un renderizado sin cabeza si los resultados son escasos. html o render fuerza una estrategia.

Devuelve domain, scanned_at, http_status y un array detected — cada entrada con slug, name, categories, confidence, version, website, saas y oss. Los resultados se almacenan en caché durante 14 días.

search_documentation

ParámetroTipoDescripción
querystringObligatorio, al menos 2 caracteres. Qué buscar, p. ej. "filter by salary" o "webhook signature".
limitnumberMáximo de secciones a devolver, un entero de 1 a 20. Predeterminado 5.

Devuelve el query y un array results de secciones, cada una con title, heading, url, excerpt y score.

list_pricing_plans

No toma parámetros. Devuelve currency (USD) y un array plans con el name, monthlyPriceUsd, monthlyJobs, maxResultsPerRequest y requestsPerSecond de cada plan.

get_account_info

No toma parámetros. Devuelve la cuenta con la que la conexión ha iniciado sesión: user_id, email, name, auth_type (oauth o api_key), plan, el month que cubren las cifras, monthly_credits, credits_used, credits_remaining, extra_credits, max_results_per_request y requests_per_second. No cuesta créditos. Es la misma respuesta que GET /v1/account, y la forma más rápida de verificar en qué cuenta aterrizó una conexión OAuth, o cuánto queda antes de una búsqueda grande.

Límites y errores

El servidor MCP hereda los límites de tu plan de la API REST. Solo los fallos de autenticación vuelven como un estado HTTP. Todo lo que sucede dentro de una herramienta — incluida una cuota agotada o un límite de velocidad — vuelve como un resultado normal de herramienta con isError: true y un cuerpo JSON como { "error": "Monthly request quota exceeded" }, para que el agente pueda leerlo y reaccionar.

DóndeQué obtienesSignificado
HTTP 401Connect with OAuth, or send a JobsPipe API key (jp_live_) ...No se envió ninguna credencial Authorization: Bearer o x-api-key.
HTTP 401Access token is invalid or expired. Reconnect to continue.El portador no es una clave jp_live_ ni un token OAuth vivo.
Resultado de herramienta, isError{ "error": "Invalid API key" }La clave jp_live_ no fue aceptada por la API.
Resultado de herramienta, isError{ "error": "Monthly request quota exceeded" }La cuota mensual de empleos de tu plan está agotada.
Resultado de herramienta, isError{ "error": "Rate limit exceeded" }Límite de velocidad por segundo excedido: reintenta después de un segundo.

Llama a get_account_info para ver tu propio plan, límites y créditos restantes, y a list_pricing_plans para ver la cuota, el límite de velocidad y el máximo de resultados por llamada para cada plan.

Otras superficies de agente

Más allá de MCP, JobsPipe es detectable por agentes autónomos:

[

Monitorea la contratación en empresas objetivo

Rastrea nuevas publicaciones en un conjunto de empresas para detectar señales de contratación.

](https://docs.jobspipe.dev/guides/monitor-companies)[

Conecta JobsPipe a tu asistente

Configuración paso a paso para cada asistente de IA que pueda hablar con JobsPipe — Claude, ChatGPT, Gemini, Grok, Perplexity, Le Chat, Cursor y los agentes de codificación — desde el listado del directorio o como un conector MCP personalizado.

](https://docs.jobspipe.dev/ai-agents/connect)