recallsapi.com US Recalls
Verificaciones de retiros del mercado en EE. UU. para agentes: producto (UPC, modelo, NDC, lote), vehículo (VIN) y búsqueda de retiros en 9 agencias de EE. UU., con enlaces de avisos de agencias.
Servidor MCP alojado
npx add-mcp 'https://api.recallsapi.com/mcp'Se instala en Claude Code, Codex, Cursor y más
Documentación
Servidor MCP
Proporciona a un agente de IA consultas de retiradas de productos con enlaces a las fuentes. El servidor habla el Protocolo de Contexto de Modelo (MCP) sobre HTTP Streamable.
| Endpoint | https://api.recallsapi.com/mcp |
|---|---|
| Transporte | HTTP Streamable, POST con respuestas JSON (sin flujo SSE; GET responde 405). Se aceptan lotes JSON-RPC. |
| Versiones de protocolo | 2025-06-18, 2025-03-26, 2024-11-05 |
| Autenticación | initialize y tools/list están abiertos. tools/call necesita tu clave API como Authorization: Bearer <key> (o X-API-Key). |
| Medición | Cada llamada a herramienta cuenta como una llamada contra tu cuota diaria, como una llamada REST. |
¿Aún no tienes clave? Crea una con POST /v1/keys (consulta la guía de inicio rápido).
Herramientas
| Herramienta | Argumentos | Qué hace |
|---|---|---|
check_product | name, brand, upc, model, ndc, lot (al menos uno); receipt (booleano, opcional) | ¿Está retirado este producto? Mismo emparejamiento que /v1/check, con confianza exacta, fuerte o posible, razones y el enlace de la agencia, además de señales de alerta temprana y, con marca y modelo, recuentos de eventos adversos de FDA MAUDE. receipt: true añade un recibo de verificación firmado. |
search_recalls | query (obligatorio), category, since (AAAA-MM-DD), limit (1 a 50, predeterminado 10) | Búsqueda de texto completo en todas las fuentes. |
check_vehicle | vin, o make, model y year | Campañas de NHTSA para un vehículo. Las campañas se presentan para una marca, modelo y año (nivel de modelo); si una campaña incluye un vehículo y si su reparación está hecha, consta en los registros del fabricante del vehículo, y cualquier concesionario de la marca puede verificarlo con el VIN, gratis. |
get_recall | id (por ejemplo fda-H-1339-2026) | El registro completo con cada identificador y el enlace a la fuente. |
Las cuatro herramientas son de solo lectura. Cada resultado tiene un breve resumen de texto para el modelo, con el enlace a la fuente de cada retirada, y structuredContent contiene el mismo JSON que la API REST. Los problemas (sin entrada, id desconocido, un VIN que no se puede decodificar, una clave faltante) se devuelven como resultado de herramienta con isError: true.
Claude Code
Terminal
claude mcp add --transport http recallsapi https://api.recallsapi.com/mcp \
--header "Authorization: Bearer rk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Añade --scope user para usarlo en cada proyecto. Para compartirlo con un equipo mediante .mcp.json sin comprometer la clave, referencia una variable de entorno:
.mcp.json
{
"mcpServers": {
"recallsapi": {
"type": "http",
"url": "https://api.recallsapi.com/mcp",
"headers": {
"Authorization": "Bearer ${RECALLSAPI_KEY}"
}
}
}
}
Cursor
~/.cursor/mcp.json (o .cursor/mcp.json en un proyecto)
{
"mcpServers": {
"recallsapi": {
"url": "https://api.recallsapi.com/mcp",
"headers": {
"Authorization": "Bearer ${env:RECALLSAPI_KEY}"
}
}
}
}
Claude Desktop
Claude Desktop inicia servidores locales desde su archivo de configuración, por lo que un pequeño puente, el paquete de código abierto mcp-remote, reenvía al servidor remoto con tu clave. Requiere Node.js instalado.
claude_desktop_config.json
{
"mcpServers": {
"recallsapi": {
"command": "npx",
"args": [
"mcp-remote",
"https://api.recallsapi.com/mcp",
"--header",
"Authorization:${AUTH_HEADER}",
"--transport",
"http-only"
],
"env": {
"AUTH_HEADER": "Bearer rk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
}
}
}
En macOS el archivo es ~/Library/Application Support/Claude/claude_desktop_config.json; en Windows, %APPDATA%\Claude\claude_desktop_config.json. Reinicia Claude Desktop después de editarlo. Mantén Authorization:${AUTH_HEADER} sin espacio: algunos clientes no escapan espacios dentro de args.
Cualquier otro cliente
Cualquier cliente que hable HTTP Streamable y pueda enviar un encabezado funciona. El intercambio en bruto:
initialize
curl -s -X POST https://api.recallsapi.com/mcp \
-H "content-type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"my-agent","version":"1.0"}}}'
Respuesta
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"protocolVersion": "2025-06-18",
"capabilities": {
"tools": {
"listChanged": false
}
},
"serverInfo": {
"name": "recallsapi",
"title": "recallsapi.com: US product, food, drug, device and vehicle recalls",
"version": "0.1.2"
},
"instructions": "US recall lookups. Use check_product first with whatever the user has (name and brand, barcode, model, NDC, lot); search_recalls for topics; check_vehicle for cars. Always show the source link. Get an API key at https://recallsapi.com."
}
}
tools/call
curl -s -X POST https://api.recallsapi.com/mcp \
-H "Authorization: Bearer $RECALLSAPI_KEY" \
-H "content-type: application/json" \
-d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"check_product","arguments":{"upc":"041548000121"}}}'
Respuesta (structuredContent acortado en esta página)
{
"jsonrpc": "2.0",
"id": 3,
"result": {
"content": [
{
"type": "text",
"text": "1. [exact] Dreyer's Grand Ice Cream Inc.: Outshine Fruit Bars Black Cherry, 6 Bars, 2 (FDA, 2026-08-18). Hazard: Foreign object: products may contain glass pieces Source: https://api.fda.gov/food/enforcement.json?search=recall_number:%22H-1268-2026%22"
}
],
"structuredContent": "(same JSON as GET /v1/check)",
"isError": false
}
}
Notificaciones como notifications/initialized reciben 202 Accepted sin cuerpo. Los errores de protocolo usan códigos JSON-RPC: -32600 solicitud no válida, -32601 método desconocido, -32602 herramienta desconocida.
Orientación para agentes
- Comienza con
check_productusando lo que tenga el usuario; añade la marca siempre que la conozcas. - Muestra el nivel de confianza y el enlace a la fuente con cada coincidencia, y di que una coincidencia debe confirmarse contra el aviso de la agencia.
- No le digas al usuario que un producto es seguro porque no hubo coincidencias.