Odel
Recall Kitchen

Recall Kitchen

@recall-kitchen2GoApache-2.0Updated 3 days ago

US recalls MCP: free API key/signup or x402 $0.025 Base; some tools need key; verify↑limits

Server endpointStreamable HTTPNo authProbed

This is the third-party server itself — Odel doesn't run it. Hitting this URL directly talks straight to the upstream server with no auth or proxying. Connect through Odel to front it with managed auth.

rk-mcp

Go client and examples for Recall Kitchen MCP.

Recall Kitchen searches U.S. CPSC, FDA food, FDA MedWatch, USDA, and NHTSA vehicle recalls.

Hosted MCP

Public streamable HTTP: https://app.recallkitchen.com/mcp. Client config: .mcp.json. Docs: recallkitchen.com/docs.

  • Free with API key — mint a key via MCP signup or Integrations. Send X-API-Key: rk_... (required for Grok) or Authorization: Bearer rk_... (Claude/Cursor). Env placeholder: RECALL_KITCHEN_API_KEY.
  • Anonymous x402 — USDC on Base at $0.025/call, no signup.
  • Account tools (watches, inventory, notifications) need a key.
  • Rate limits — about 60 tool calls/hour unverified vs about 600/hour after verified sign-in at app.recallkitchen.com.

Local: http://localhost:8080/mcp. Server card: https://app.recallkitchen.com/.well-known/mcp/server-card.json.

Tool reference: recallkitchen.com/docs/#mcp. Implementation notes: docs/mcp.md.

Auth

Two ways to call tools:

  1. API key (recommended) — free, higher limits. Create a key in the app under Integrations. Send X-API-Key: rk_... (required for Grok) or Authorization: Bearer rk_... (Claude Code, Cursor).
  2. x402 — anonymous USDC on Base (~$0.025 / call). Set X402_EVM_PRIVATE_KEY. Watch, inventory, and notification tools still need an API key.

Grok's HTTP MCP client treats Authorization: Bearer as OAuth. Use X-API-Key for Grok.

# ~/.grok/config.toml
[mcp_servers.recall-kitchen]
url = "https://app.recallkitchen.com/mcp"
enabled = true

[mcp_servers.recall-kitchen.headers]
X-API-Key = "rk_..."
export RK_API_KEY=rk_...

Tools

Public (API key or x402)

ToolUse
search_product_recallsKeyword search. Optional source, since/until (YYYY-MM-DD), location, offset, limit (1–100, default 3).
search_recalls_by_identifierExact UPC, lot, model, extracted product name, or VIN (local year/make decode for NHTSA).
search_product_recalls_by_upcLook up a UPC and match extracted recall UPCs. found=false if unknown.
lookup_productCatalog / USDA branded-food info. Does not search recalls.
search_product_recalls_from_imagePublic HTTPS URL, data:image/...;base64 URI, or MCP image content. No local file paths.
get_product_recallFull description and extracted lots, UPCs, models, locations, contacts, image URLs.

Search results truncate descriptions and cap extracted products at 5. Call get_product_recall for the full notice.

location is ANDed with the query. CA matches California / "northern california". United States matches U.S. notices, not Canada/Ontario.

Account (API key required)

list_watch_patterns, add_watch_pattern, remove_watch_pattern, list_inventory, add_inventory_product, remove_inventory_product, check_tracked_products, list_recall_notifications.

Watch patterns use the same syntax as the search box: words are AND, OR is or, -term excludes, "quoted phrase" is a phrase.

Prompts: check_product, check_upc, scan_image, check_vin. Resources: recall://docs/tools, recall://docs/sources.

Go client

cc, err := rkmcp.NewClient(rkmcp.Config{
    ServerURL: "https://app.recallkitchen.com/mcp",
    APIKey:    os.Getenv("RK_API_KEY"),
})
recalls, err := cc.SearchProductRecalls(ctx, "contamination", 3)
detail, err := cc.GetProductRecall(ctx, recalls[0].ID)
hits, err := cc.SearchRecallsByIdentifier(ctx, rkmcp.IdentifierOptions{LotCode: "I31C"})

APIKey is also read from RK_API_KEY or RECALL_KITCHEN_API_KEY. The client sends X-API-Key. Anonymous clients can set EVMPrivateKey / X402_EVM_PRIVATE_KEY instead.

Module: github.com/Recall-Kitchen/rk-mcp/go.

Examples

git clone https://github.com/Recall-Kitchen/rk-mcp.git
cd rk-mcp/examples/go
export RK_API_KEY=rk_...
go run ./search_product_recalls -query "spinach" -location Iowa
go run ./get_product_recall            # searches, then fetches full text
go run ./search_by_identifier -name "infant formula"

See examples/go.

Other clients

  • Grok: X-API-Key header (see above).
  • Claude Code: claude mcp add --transport http recall-kitchen https://app.recallkitchen.com/mcp --header "Authorization: Bearer ${RK_API_KEY}"
  • Cursor: copy .mcp.json (X-API-Key + RECALL_KITCHEN_API_KEY). Authorization: Bearer also works.

Support

support@recallkitchen.com