Recall Kitchen
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
US recalls MCP: free API key/signup or x402 $0.025 Base; some tools need key; verify↑limits
| Author | io.github.adamdecaf |
|---|---|
| Access | remote |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 161 ms |
| Last measured | 2026-10-24 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"Recall Kitchen": {
"url": "https://app.recallkitchen.com/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (20)
add_inventory_productAdd a product to this API key's inventory. Optional category is food, beverage, baby, household, electronics, vehicle, medical_device, drug, cosmetics, pet, or other. Requires a verified account (sign in at https://app.recallkitchen.com with the signup email). Unverified signup keys cannot add inventory.
Parameters:
name(required) — string — product namesku— string — optional SKU or UPCbrand— string — optional brandcategory— string — optional product category: food, beverage, baby, household, electronics, vehicle, medical_device, drug, cosmetics, pet, or other
Hints: read-only no · destructive no · idempotent yes · open-world no
add_watch_patternAdd a recall watch pattern for this API key. Same websearch syntax as search_product_recalls (AND, OR, -exclude, quoted phrases). New matches show up in Recall Kitchen. Requires an API key.
Parameters:
pattern(required) — string — websearch pattern: unquoted words are AND, OR is or, -term excludes, quoted phrases match as a unitweight— integer — optional weight 0-8, default 4
Hints: read-only no · destructive no · idempotent yes · open-world no
check_tracked_productsread-onlyCheck this API key's watch patterns and inventory against current indexed recalls (including historical notices). Does not create notifications. Generic patterns such as food or hazard only match in titles. Requires an API key.
Parameters:
limit— integer — maximum matches to returnoffset— integer — number of matches to skip
Hints: read-only yes · destructive no · idempotent yes · open-world no
create_api_keyCreate an additional API key for this account. Requires an existing API key. Unverified accounts may have only one key; verified accounts may have three. Usage is counted per account, not per key.
Parameters:
kind— string — optional kind: user or agent, default agentname— string — optional key name
Hints: read-only no · destructive no · idempotent no · open-world no
get_product_recallread-onlyGet a recall by id, including extracted lots, UPCs, model numbers, locations, contact info, and product photo URLs
Parameters:
id— string — alias for recall_idrecall_id— string — recall id returned by search tools
Hints: read-only yes · destructive no · idempotent yes · open-world yes
give_feedbackReport a bug, missing capability, bad search result, or confusing schema to the Recall Kitchen team. Use this instead of silently working around a problem. message is required and should include the MCP tool names you called, the actions you took, the query or identifiers, and any recall_id. Do not send API keys, photos, or PII. Optional category: bad_result, tool_error, missing_capability, confusing_schema, docs, other. Optional severity: blocked, workaround, annoyance. No API key or x402 required. Does not count against search quotas.
Parameters:
message(required) — string — describe the problem. Include the MCP tool names you called, the actions you took, the query or identifiers, and any recall_id. Do not send API keys, photos, or PII.category— string — optional: bad_result, tool_error, missing_capability, confusing_schema, docs, or otherseverity— string — optional: blocked, workaround, or annoyance
Hints: read-only no · destructive no · idempotent no · open-world no
list_api_keysread-onlyList this account's API keys (id, name, prefix, created). Secrets are not shown. Requires an API key.
Hints: read-only yes · destructive no · idempotent yes · open-world no
list_inventoryread-onlyList this API key's tracked inventory products. Requires an API key.
Parameters:
limit— integer — number of products to returnquery— string — optional inventory searchoffset— integer — number of products to skip
Hints: read-only yes · destructive no · idempotent yes · open-world no
list_recall_notificationsread-onlyList recall notifications for this API key. unread defaults to true (unread only); pass false for all. New matches show up in Recall Kitchen. Empty for new accounts until a new matching recall is published; not a backfill of check_tracked_products. message is a short plain-text summary. Requires an API key.
Parameters:
limit— integer — number of notifications to returnoffset— integer — number of notifications to skipunread— ['null', 'boolean'] — if true, only unread notifications; if false, include read. Default: true (unread only)
Hints: read-only yes · destructive no · idempotent yes · open-world no
list_watch_patternsread-onlyList this API key's recall watch patterns. Requires an API key.
Hints: read-only yes · destructive no · idempotent yes · open-world no
lookup_productread-onlyLook up a product by UPC/EAN. Returns found=false when unknown. Does not search recalls.
Parameters:
upc(required) — string — UPC or EAN barcode digits
Hints: read-only yes · destructive no · idempotent yes · open-world yes
mark_notification_readMark a recall notification as read (default) or unread. Requires an API key.
Parameters:
recall_id(required) — string — recall id from list_recall_notificationsread— ['null', 'boolean'] — if true, mark read; if false, mark unread. Default true
Hints: read-only no · destructive no · idempotent yes · open-world no
remove_inventory_productdestructiveRemove a product from this API key's inventory by id. Requires an API key.
Parameters:
id(required) — integer — inventory product id from list_inventory
Hints: read-only no · destructive yes · idempotent yes · open-world no
remove_watch_patterndestructiveRemove a recall watch pattern for this API key. Requires an API key.
Parameters:
pattern(required) — string — watch pattern to remove
Hints: read-only no · destructive yes · idempotent yes · open-world no
revoke_api_keydestructiveRevoke an API key by key_id from list_api_keys. Requires an API key. Revoking the current key will fail subsequent calls.
Parameters:
key_id(required) — string — key_id from list_api_keys
Hints: read-only no · destructive yes · idempotent yes · open-world no
search_product_recallsread-onlySearch product recalls by query. Query uses websearch syntax: unquoted words are AND, OR is or, -term excludes, quoted phrases match as a unit (example: Generac Generator -Portable). Optional filters: source (cpsc, fdafoodsafety, FDAMedWatch, usda, nhtsa, canada, openfda), since/until (YYYY-MM-DD), location (country, region, or place, ANDed with the query), offset, limit. Descriptions are truncated and extracted products are capped; use get_product_recall for the full text.
Parameters:
limit— integer — number of recalls to return, 1-100, default 3query— string — websearch query: unquoted words are AND, OR is or, -term excludes, quoted phrases match as a unit. Example: Generac Generator -Portablesince— string — optional published-on start date YYYY-MM-DDuntil— string — optional published-on end date YYYY-MM-DDyears— integer — optional published window in years (1-50). Ignored when since is setoffset— integer — number of recalls to skipsource— string — optional source filter: cpsc, fdafoodsafety, FDAMedWatch, usda, nhtsa, canada, or openfda. Aliases: FDA and food map to fdafoodsafety; medwatch maps to FDAMedWatch; vehicle, vin, and car map to nhtsa; healthcanada, cfia, and hc-sc map to canada; enforcement, res, and fdaenforcement map to openfda. For more than one source, pass sources.sources— array — optional sources to include (OR). Same values as sourcelocation— string — optional country, region, or place; ANDed with the query. USA, Canada, Mexico, EU, and Europe match places in that region. CA is California, not Canada.
Hints: read-only yes · destructive no · idempotent yes · open-world yes
search_product_recalls_by_upcread-onlySearch recalls by UPC/EAN or a barcode image URL/data URI/MCP image content. Matches extracted recall UPCs first. Returns found=false when the UPC is unknown.
Parameters:
upc— string — UPC or EAN barcode digitsurl— string — alias for image_urllimit— integer — number of recalls to return, 1-100, default 3offset— integer — number of recalls to skipbarcode— string — alias for upcimage_url— string — optional HTTPS URL or data:image/...;base64 URI of a barcode image
Hints: read-only yes · destructive no · idempotent yes · open-world yes
search_product_recalls_from_imageread-onlyPhoto (beta): identify products in a public HTTPS image URL, data:image/...;base64 URI, or MCP image content part. Local files are not supported. Each product includes match (upc, model, text, category) and confidence. Category matches omit recalls unless include_category_matches=true. Requires an API key or x402; not included in the free anonymous per-IP quota.
Parameters:
url— string — alias for image_urllimit— integer — number of recalls to return per product, 1-100, default 3image_url— string — photo (beta). HTTPS URL or data:image/...;base64 URI of a photo containing products. Local file paths are not supported.include_category_matches— boolean — if true, attach keyword recalls for generic items such as cups; default false
Hints: read-only yes · destructive no · idempotent yes · open-world yes
search_recalls_by_identifierread-onlySearch recalls by extracted UPC, lot code, model number, product name, or VIN. Multiple identifiers are AND-matched on the same product. VIN lookup lists NHTSA campaigns for the decoded year and make; confirm your vehicle on nhtsa.gov/recalls. lot_code matches extracted lot codes after normalizing spaces, case, and punctuation; if lots were not extracted, also searches notice title and description — verify against the notice. product_name falls back to the same full-text search as search_product_recalls when no exact extracted name matches, and returns a hint if still empty.
Parameters:
upc— string — product UPC or EAN as stored on the recallvin— string — 17-character VIN. Lookup lists NHTSA campaigns for the decoded year and make; confirm your vehicle on nhtsa.gov/recalls.limit— integer — number of recalls to returnoffset— integer — number of recalls to skiplot_code— string — lot or batch code. Matches extracted lot codes after normalizing spaces, case, and punctuation; if lots were not extracted, also searches the notice title and description. Verify against the notice.model_number— string — model number as stored on the recallproduct_name— string — extracted product name (exact match; if none, falls back to the same full-text search as search_product_recalls)
Hints: read-only yes · destructive no · idempotent yes · open-world yes
signupCreate a Recall Kitchen account and API key from an email. No API key or x402 payment required. Set accept_terms true only after you ask the person and they confirm they are 13 or older and accept the Terms (https://recallkitchen.com/terms), Privacy Policy (https://recallkitchen.com/privacy) and API Terms (https://recallkitchen.com/api-terms); never set it automatically or on the person's behalf. The key is returned once. Unverified accounts have lower rate limits (60 tool calls/hour, 400/day, one key) and can add a few watch patterns. Sign in at https://app.recallkitchen.com with the same email to verify, raise limits, and add inventory. Does not re-issue a key if the email already has an account.
Parameters:
email(required) — string — email address for the new accountaccept_terms(required) — boolean — Set true only after you ask the person and they confirm they are 13 or older and accept the Terms (https://recallkitchen.com/terms), Privacy Policy (https://recallkitchen.com/privacy) and API Terms (https://recallkitchen.com/api-terms). Never set this automatically or on the person's behalf.name— string — optional display name
Hints: read-only no · destructive no · idempotent no · open-world no
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.