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.

Endpointhttps://api.recallsapi.com/mcp
TransporteHTTP Streamable, POST con respuestas JSON (sin flujo SSE; GET responde 405). Se aceptan lotes JSON-RPC.
Versiones de protocolo2025-06-18, 2025-03-26, 2024-11-05
Autenticacióninitialize y tools/list están abiertos. tools/call necesita tu clave API como Authorization: Bearer <key> (o X-API-Key).
MediciónCada 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

HerramientaArgumentosQué hace
check_productname, 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_recallsquery (obligatorio), category, since (AAAA-MM-DD), limit (1 a 50, predeterminado 10)Búsqueda de texto completo en todas las fuentes.
check_vehiclevin, o make, model y yearCampañ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_recallid (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_product usando 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.