rk-mcp

MCP serverDev tools

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

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use rk-mcp to add inventory product

From the project's README

As published by recall-kitchen/rk-mcp in README.md.

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

Tools it offers (19)

What this server listed when ahel dialed its public endpoint in Sep 2026, with no key and no account of yours. The names are the server’s own.

  • add_inventory_product
  • add_watch_pattern
  • check_tracked_products
  • create_api_key
  • get_product_recall
  • list_api_keys
  • list_inventory
  • list_recall_notifications
  • list_watch_patterns
  • lookup_product
  • mark_notification_read
  • remove_inventory_product
  • remove_watch_pattern
  • revoke_api_key
  • search_product_recalls
  • search_product_recalls_by_upc
  • search_product_recalls_from_image
  • search_recalls_by_identifier
  • signup

Signals

GitHub stars
2
Last commit
Sep 2026

ahel review

  • S4low
    published under adamdecaf's namespace; repository belongs to recall-kitchen

Automated review, not a security audit. Ruleset v1.

Advanced
Delivery
recall-kitchen MCP server → your ahel gateway (mcp.ahel.ai) → every connected AI client.
Catalog kind
mcp-server
Gateway key
io-github-adamdecaf-recall-kitchen
Source
github.com/recall-kitchen/rk-mcp
Hosted endpoint
https://app.recallkitchen.com/mcp