Awesome MCP Servers by AI Anytime

Directory / Search & discovery

Recall Kitchen

Search government product recall notices from CPSC, FDA, USDA, NHTSA and Health Canada by keyword, UPC, product name or vehicle, and fetch a full notice. Free API key or anonymous x402 pay-per-call. Endpoint: https://app.recallkitchen.com/mcp · Docs

Live  Answered an MCP handshake without credentials and listed 20 tools.

Category
Search & discovery
Transport
http
Source
https://github.com/Recall-Kitchen/rk-mcp
Endpoint
https://app.recallkitchen.com/mcp
Reports itself as
recall-kitchen-mcp unknown
Protocol
2025-06-18
Tools
20
Context cost
about 3,609 tokens for the tool definitions (estimated at four characters per token)
Tool definitions last changed
no change seen since first check
Handshake time
123 ms
Repository
2 stars · last push 2026-10-27 · Apache-2.0
Last checked
2026-11-03 10:54:46 UTC
Listed since
2026-11-03

Health and compatibility

Endpoint reachableVerifiedResponded in 123 ms
MCP handshake (initialize)VerifiedCompleted without credentials
Tool discovery (tools/list)Verified20 tools listed
AuthenticationVerifiedNone needed to connect
Protocol versionVerified2025-06-18
TransportVerifiedStreamable HTTP
Capabilities declaredVerifiedlogging, prompts, resources, tools

Last checked . Verified means the check saw it happen; it says nothing about whether the server is safe.

Recent history

1 daily check so far. Green answered, violet asked for auth, red did not answer.

Set up in your client

Claude Code

Run this in a terminal:

claude mcp add --transport http recall-kitchen https://app.recallkitchen.com/mcp

Claude Desktop

Open Settings → Connectors → Add custom connector and paste this URL:

https://app.recallkitchen.com/mcp

Or bridge it through mcp-remote in claude_desktop_config.json (needs Node.js):

{
  "mcpServers": {
    "recall-kitchen": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://app.recallkitchen.com/mcp"
      ]
    }
  }
}

Cursor

Add to Cursor

Or add it to ~/.cursor/mcp.json (or .cursor/mcp.json in a project):

{
  "mcpServers": {
    "recall-kitchen": {
      "url": "https://app.recallkitchen.com/mcp"
    }
  }
}

VS Code

Add to VS Code

Or add it to .vscode/mcp.json:

{
  "servers": {
    "recall-kitchen": {
      "type": "http",
      "url": "https://app.recallkitchen.com/mcp"
    }
  }
}

Or from a terminal:

code --add-mcp '{"name": "recall-kitchen", "type": "http", "url": "https://app.recallkitchen.com/mcp"}'

Windsurf

Add it to ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "recall-kitchen": {
      "serverUrl": "https://app.recallkitchen.com/mcp"
    }
  }
}

Other clients

Most clients accept this shape. The endpoint is:

https://app.recallkitchen.com/mcp
{
  "mcpServers": {
    "recall-kitchen": {
      "type": "http",
      "url": "https://app.recallkitchen.com/mcp"
    }
  }
}

If it does not connect

Tools 20

Names, descriptions and input schemas exactly as the server returned them on 2026-11-03. This is the server author's own text. Nothing is run from this page. Labels such as read-only are declared by the server and are not verified. Raw JSON

add_inventory_productcan modifyAdd a product to this API key's inventory. Optional category is food, beverage, baby, household, electronics, …

Add 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.

ParameterTypeDescription
namestringrequiredproduct name
brandstringoptionaloptional brand
categorystringoptionaloptional product category: food, beverage, baby, household, electronics, vehicle, medical_device, drug, cosmetics, pet, or other One of: food, beverage, baby, household, electronics, vehicle, medical_device, drug …
skustringoptionaloptional SKU or UPC

Example call (required arguments only, placeholder values):

{
  "method": "tools/call",
  "params": {
    "name": "add_inventory_product",
    "arguments": {
      "name": "..."
    }
  }
}
add_watch_patterncan modifyAdd a recall watch pattern for this API key. Same websearch syntax as search_product_recalls (AND, OR, …

Add 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.

ParameterTypeDescription
patternstringrequiredwebsearch pattern: unquoted words are AND, OR is or, -term excludes, quoted phrases match as a unit
weightintegeroptionaloptional weight 0-8, default 4

Example call (required arguments only, placeholder values):

{
  "method": "tools/call",
  "params": {
    "name": "add_watch_pattern",
    "arguments": {
      "pattern": "..."
    }
  }
}
check_tracked_productsread-onlyCheck this API key's watch patterns and inventory against current indexed recalls (including historical …

Check 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.

ParameterTypeDescription
limitintegeroptionalmaximum matches to return
offsetintegeroptionalnumber of matches to skip

Example call (required arguments only, placeholder values):

{
  "method": "tools/call",
  "params": {
    "name": "check_tracked_products",
    "arguments": {}
  }
}
create_api_keycan modifyCreate an additional API key for this account. Requires an existing API key. Unverified accounts may have …

Create 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.

ParameterTypeDescription
namestringoptionaloptional key name
kindstringoptionaloptional kind: user or agent, default agent One of: user, agent

Example call (required arguments only, placeholder values):

{
  "method": "tools/call",
  "params": {
    "name": "create_api_key",
    "arguments": {}
  }
}
get_product_recallread-onlyexternal accessGet a recall by id, including extracted lots, UPCs, model numbers, locations, contact info, and product photo …

Get a recall by id, including extracted lots, UPCs, model numbers, locations, contact info, and product photo URLs

ParameterTypeDescription
recall_idstringoptionalrecall id returned by search tools
idstringoptionalalias for recall_id

Example call (required arguments only, placeholder values):

{
  "method": "tools/call",
  "params": {
    "name": "get_product_recall",
    "arguments": {}
  }
}
give_feedbackcan modifyReport a bug, missing capability, bad search result, or confusing schema to the Recall Kitchen team. Use this …

Report 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.

ParameterTypeDescription
messagestringrequireddescribe 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.
categorystringoptionaloptional: bad_result, tool_error, missing_capability, confusing_schema, docs, or other One of: bad_result, tool_error, missing_capability, confusing_schema, docs, other
severitystringoptionaloptional: blocked, workaround, or annoyance One of: blocked, workaround, annoyance

Example call (required arguments only, placeholder values):

{
  "method": "tools/call",
  "params": {
    "name": "give_feedback",
    "arguments": {
      "message": "..."
    }
  }
}
list_api_keysread-onlyList this account's API keys (id, name, prefix, created). Secrets are not shown. Requires an API key.

List this account's API keys (id, name, prefix, created). Secrets are not shown. Requires an API key.

Takes no parameters.

Example call (required arguments only, placeholder values):

{
  "method": "tools/call",
  "params": {
    "name": "list_api_keys",
    "arguments": {}
  }
}
list_inventoryread-onlyList this API key's tracked inventory products. Requires an API key.

List this API key's tracked inventory products. Requires an API key.

ParameterTypeDescription
querystringoptionaloptional inventory search
limitintegeroptionalnumber of products to return
offsetintegeroptionalnumber of products to skip

Example call (required arguments only, placeholder values):

{
  "method": "tools/call",
  "params": {
    "name": "list_inventory",
    "arguments": {}
  }
}
list_recall_notificationsread-onlyList recall notifications for this API key. unread defaults to true (unread only); pass false for all. New …

List 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.

ParameterTypeDescription
unreadnull | booleanoptionalif true, only unread notifications; if false, include read. Default: true (unread only)
limitintegeroptionalnumber of notifications to return
offsetintegeroptionalnumber of notifications to skip

Example call (required arguments only, placeholder values):

{
  "method": "tools/call",
  "params": {
    "name": "list_recall_notifications",
    "arguments": {}
  }
}
list_watch_patternsread-onlyList this API key's recall watch patterns. Requires an API key.

List this API key's recall watch patterns. Requires an API key.

Takes no parameters.

Example call (required arguments only, placeholder values):

{
  "method": "tools/call",
  "params": {
    "name": "list_watch_patterns",
    "arguments": {}
  }
}
lookup_productread-onlyexternal accessLook up a product by UPC/EAN. Returns found=false when unknown. Does not search recalls.

Look up a product by UPC/EAN. Returns found=false when unknown. Does not search recalls.

ParameterTypeDescription
upcstringrequiredUPC or EAN barcode digits

Example call (required arguments only, placeholder values):

{
  "method": "tools/call",
  "params": {
    "name": "lookup_product",
    "arguments": {
      "upc": "..."
    }
  }
}
mark_notification_readcan modifyMark a recall notification as read (default) or unread. Requires an API key.

Mark a recall notification as read (default) or unread. Requires an API key.

ParameterTypeDescription
recall_idstringrequiredrecall id from list_recall_notifications
readnull | booleanoptionalif true, mark read; if false, mark unread. Default true

Example call (required arguments only, placeholder values):

{
  "method": "tools/call",
  "params": {
    "name": "mark_notification_read",
    "arguments": {
      "recall_id": "..."
    }
  }
}
remove_inventory_productcan modifydestructiveRemove a product from this API key's inventory by id. Requires an API key.

Remove a product from this API key's inventory by id. Requires an API key.

ParameterTypeDescription
idintegerrequiredinventory product id from list_inventory

Example call (required arguments only, placeholder values):

{
  "method": "tools/call",
  "params": {
    "name": "remove_inventory_product",
    "arguments": {
      "id": 0
    }
  }
}
remove_watch_patterncan modifydestructiveRemove a recall watch pattern for this API key. Requires an API key.

Remove a recall watch pattern for this API key. Requires an API key.

ParameterTypeDescription
patternstringrequiredwatch pattern to remove

Example call (required arguments only, placeholder values):

{
  "method": "tools/call",
  "params": {
    "name": "remove_watch_pattern",
    "arguments": {
      "pattern": "..."
    }
  }
}
revoke_api_keycan modifydestructiveRevoke an API key by key_id from list_api_keys. Requires an API key. Revoking the current key will fail …

Revoke an API key by key_id from list_api_keys. Requires an API key. Revoking the current key will fail subsequent calls.

ParameterTypeDescription
key_idstringrequiredkey_id from list_api_keys

Example call (required arguments only, placeholder values):

{
  "method": "tools/call",
  "params": {
    "name": "revoke_api_key",
    "arguments": {
      "key_id": "..."
    }
  }
}
search_product_recallsread-onlyexternal accessSearch product recalls by query. Query uses websearch syntax: unquoted words are AND, OR is or, -term …

Search 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.

ParameterTypeDescription
querystringoptionalwebsearch query: unquoted words are AND, OR is or, -term excludes, quoted phrases match as a unit. Example: Generac Generator -Portable
sourcestringoptionaloptional 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, … One of: cpsc, fdafoodsafety, FDAMedWatch, usda, nhtsa, canada, openfda
sourcesstring[]optionaloptional sources to include (OR). Same values as source
sincestringoptionaloptional published-on start date YYYY-MM-DD
untilstringoptionaloptional published-on end date YYYY-MM-DD
yearsintegeroptionaloptional published window in years (1-50). Ignored when since is set
locationstringoptionaloptional country, region, or place; ANDed with the query. USA, Canada, Mexico, EU, and Europe match places in that region. CA is California, not Canada.
offsetintegeroptionalnumber of recalls to skip
limitintegeroptionalnumber of recalls to return, 1-100, default 3

Example call (required arguments only, placeholder values):

{
  "method": "tools/call",
  "params": {
    "name": "search_product_recalls",
    "arguments": {}
  }
}
search_product_recalls_by_upcread-onlyexternal accessSearch recalls by UPC/EAN or a barcode image URL/data URI/MCP image content. Matches extracted recall UPCs …

Search 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.

ParameterTypeDescription
upcstringoptionalUPC or EAN barcode digits
barcodestringoptionalalias for upc
image_urlstringoptionaloptional HTTPS URL or data:image/...;base64 URI of a barcode image
urlstringoptionalalias for image_url
limitintegeroptionalnumber of recalls to return, 1-100, default 3
offsetintegeroptionalnumber of recalls to skip

Example call (required arguments only, placeholder values):

{
  "method": "tools/call",
  "params": {
    "name": "search_product_recalls_by_upc",
    "arguments": {}
  }
}
search_product_recalls_from_imageread-onlyexternal accessPhoto (beta): identify products in a public HTTPS image URL, data:image/...;base64 URI, or MCP image content …

Photo (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.

ParameterTypeDescription
image_urlstringoptionalphoto (beta). HTTPS URL or data:image/...;base64 URI of a photo containing products. Local file paths are not supported.
urlstringoptionalalias for image_url
limitintegeroptionalnumber of recalls to return per product, 1-100, default 3
include_category_matchesbooleanoptionalif true, attach keyword recalls for generic items such as cups; default false

Example call (required arguments only, placeholder values):

{
  "method": "tools/call",
  "params": {
    "name": "search_product_recalls_from_image",
    "arguments": {}
  }
}
search_recalls_by_identifierread-onlyexternal accessSearch recalls by extracted UPC, lot code, model number, product name, or VIN. Multiple identifiers are …

Search 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.

ParameterTypeDescription
upcstringoptionalproduct UPC or EAN as stored on the recall
lot_codestringoptionallot 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_numberstringoptionalmodel number as stored on the recall
product_namestringoptionalextracted product name (exact match; if none, falls back to the same full-text search as search_product_recalls)
vinstringoptional17-character VIN. Lookup lists NHTSA campaigns for the decoded year and make; confirm your vehicle on nhtsa.gov/recalls.
limitintegeroptionalnumber of recalls to return
offsetintegeroptionalnumber of recalls to skip

Example call (required arguments only, placeholder values):

{
  "method": "tools/call",
  "params": {
    "name": "search_recalls_by_identifier",
    "arguments": {}
  }
}
signupcan modifyCreate a Recall Kitchen account and API key from an email. No API key or x402 payment required. Set …

Create 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.

ParameterTypeDescription
emailstringrequiredemail address for the new account
namestringoptionaloptional display name
accept_termsbooleanrequiredSet 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 …

Example call (required arguments only, placeholder values):

{
  "method": "tools/call",
  "params": {
    "name": "signup",
    "arguments": {
      "email": "...",
      "accept_terms": false
    }
  }
}

Resources 2

Prompts 4

Badge

Maintain this server? Put its live status in your README:

MCP status badge

[![MCP status](https://mcp.aianytime.net/badge/recall-kitchen.svg)](https://mcp.aianytime.net/s/recall-kitchen/)

Edit this entry · Report a problem

More in Search & discovery

Checks record what a server answered, not whether it is safe. A listing is not a security audit; read a server's source and permissions before you connect it. Add a server · JSON · llms.txt · llms-full.txt

Browse: Agents, IDEs & developer tools · Search & discovery · Knowledge, memory & context · Media & generation · Security · Finance & markets · Marketing, content & social · Cloud, ops & data · Commerce, travel & logistics · Work & productivity · No account needed · Local servers