recallsapi.com US Recalls

Verificações de recall nos EUA para agentes: produto (UPC, modelo, NDC, lote), veículo (VIN) e busca de recalls em 9 agências dos EUA, com links de avisos das agências.

Servidor MCP hospedado

npx add-mcp 'https://api.recallsapi.com/mcp'

Instala no Claude Code, Codex, Cursor e outros

Documentação

Servidor MCP

Dê a um agente de IA consultas de recall com links de origem. O servidor fala o Model Context Protocol via Streamable HTTP.

Endpointhttps://api.recallsapi.com/mcp
TransporteStreamable HTTP, POST com respostas JSON (sem stream SSE; GET responde 405). Lotes JSON-RPC são aceitos.
Versões de protocolo2025-06-18, 2025-03-26, 2024-11-05
Autenticaçãoinitialize e tools/list são abertos. tools/call precisa da sua chave de API como Authorization: Bearer <key> (ou X-API-Key).
MediçãoCada chamada de ferramenta conta como uma chamada contra sua cota diária, como uma chamada REST.

Ainda não tem chave? Crie uma com POST /v1/keys (veja o quickstart).

Ferramentas

FerramentaArgumentosO que faz
check_productname, brand, upc, model, ndc, lot (pelo menos um); receipt (booleano, opcional)Este produto foi recolhido? Mesma correspondência do /v1/check, com confiança exata, forte ou possível, motivos e o link da agência, além de sinais de alerta antecipado e, com marca e modelo, contagens de eventos adversos do FDA MAUDE. receipt: true adiciona um recibo de verificação assinado.
search_recallsquery (obrigatório), category, since (AAAA-MM-DD), limit (1 a 50, padrão 10)Busca de texto completo em todas as fontes.
check_vehiclevin, ou make, model e yearCampanhas da NHTSA para um veículo. Campanhas são registradas para marca, modelo e ano (nível de modelo); se uma campanha inclui um veículo e se o reparo foi feito consta nos registros do fabricante do veículo, e qualquer concessionária da marca pode verificar com o VIN, gratuitamente.
get_recallid (por exemplo fda-H-1339-2026)O registro completo com todos os identificadores e o link da fonte.

Todas as quatro ferramentas são somente leitura. Cada resultado tem um resumo curto em texto para o modelo, com o link da fonte para cada recall, e structuredContent contendo o mesmo JSON da API REST. Problemas (sem entrada, id desconhecido, um VIN que não pode ser decodificado, chave ausente) retornam como resultado de ferramenta com isError: true.

Claude Code

Terminal

claude mcp add --transport http recallsapi https://api.recallsapi.com/mcp \
  --header "Authorization: Bearer rk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

Adicione --scope user para usar em todos os projetos. Para compartilhar com uma equipe via .mcp.json sem commitar a chave, referencie uma variável de ambiente:

.mcp.json

{
  "mcpServers": {
    "recallsapi": {
      "type": "http",
      "url": "https://api.recallsapi.com/mcp",
      "headers": {
        "Authorization": "Bearer ${RECALLSAPI_KEY}"
      }
    }
  }
}

Cursor

~/.cursor/mcp.json (ou .cursor/mcp.json em um projeto)

{
  "mcpServers": {
    "recallsapi": {
      "url": "https://api.recallsapi.com/mcp",
      "headers": {
        "Authorization": "Bearer ${env:RECALLSAPI_KEY}"
      }
    }
  }
}

Claude Desktop

O Claude Desktop inicia servidores locais a partir do arquivo de configuração, então uma pequena ponte, o pacote open-source mcp-remote, encaminha para o servidor remoto com sua chave. Ele precisa do 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"
      }
    }
  }
}

No macOS o arquivo é ~/Library/Application Support/Claude/claude_desktop_config.json; no Windows, %APPDATA%\Claude\claude_desktop_config.json. Reinicie o Claude Desktop após editar. Mantenha Authorization:${AUTH_HEADER} sem espaço: alguns clientes não escapam espaços dentro de args.

Qualquer outro cliente

Qualquer cliente que fale Streamable HTTP e possa enviar um cabeçalho funciona. A troca bruta:

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"}}}'

Resposta

{
  "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"}}}'

Resposta (structuredContent encurtado nesta 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
  }
}

Notificações como notifications/initialized recebem 202 Accepted sem corpo. Erros de protocolo usam códigos JSON-RPC: -32600 solicitação inválida, -32601 método desconhecido, -32602 ferramenta desconhecida.

Orientação para agentes

  • Comece com check_product usando o que o usuário tiver; adicione a marca sempre que souber.
  • Mostre o nível de confiança e o link da fonte com cada correspondência, e diga que uma correspondência deve ser confirmada contra o aviso da agência.
  • Não diga ao usuário que um produto é seguro porque nada correspondeu.