Recall Kitchen MCP
An MCP server that enables AI agents to search public product recall notices from government agencies like CPSC, FDA, and USDA. It supports keyword, identifier, UPC, and image-based searches, allowing users to find specific recalls, track products, and receive notifications about safety alerts.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://app.recallkitchen.com/mcpWhat its tools do
20 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Read-only (11)
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Search for product recalls by keyword or UPC
- Retrieve detailed recall information including lots and locations
- Scan images to identify recalled products
- Track specific products for new recall notifications
Source and maintenance
- Maintenance checked
Protocol and capabilities
- Server
- recall-kitchen-mcp unknown
- MCP protocol negotiated in check
- 2025-11-25
- Tools
- 20 advertised
- Resources
- 2 advertised
- Resource templates
- 0 advertised
- Prompts
- 4 advertised
{
"tools": {
"listChanged": true
},
"logging": {},
"prompts": {
"listChanged": true
},
"resources": {
"listChanged": true
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
20 advertised
add_inventory_product
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.
{
"type": "object",
"required": [
"name"
],
"properties": {
"sku": {
"type": "string",
"description": "optional SKU or UPC"
},
"name": {
"type": "string",
"description": "product name"
},
"brand": {
"type": "string",
"description": "optional brand"
},
"category": {
"enum": [
"food",
"beverage",
"baby",
"household",
"electronics",
"vehicle",
"medical_device",
"drug",
"cosmetics",
"pet",
"other"
],
"type": "string",
"description": "optional product category: food, beverage, baby, household, electronics, vehicle, medical_device, drug, cosmetics, pet, or other"
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"id",
"name",
"brand",
"category",
"sku"
],
"properties": {
"id": {
"type": "integer"
},
"sku": {
"type": "string"
},
"name": {
"type": "string"
},
"brand": {
"type": "string"
},
"category": {
"type": "string"
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}add_watch_pattern
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.
{
"type": "object",
"required": [
"pattern"
],
"properties": {
"weight": {
"type": "integer",
"maximum": 8,
"minimum": 0,
"description": "optional weight 0-8, default 4"
},
"pattern": {
"type": "string",
"description": "websearch pattern: unquoted words are AND, OR is or, -term excludes, quoted phrases match as a unit"
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"pattern",
"weight"
],
"properties": {
"weight": {
"type": "integer"
},
"pattern": {
"type": "string"
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}check_tracked_products
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.
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"default": 3,
"maximum": 100,
"minimum": 1,
"description": "maximum matches to return"
},
"offset": {
"type": "integer",
"maximum": 100,
"minimum": 0,
"description": "number of matches to skip"
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"matches",
"offset"
],
"properties": {
"offset": {
"type": "integer"
},
"matches": {
"type": [
"null",
"array"
],
"items": {
"type": "object",
"required": [
"recall",
"reasons"
],
"properties": {
"recall": {
"type": "object",
"required": [
"id",
"source",
"title",
"description",
"url",
"publishedOn"
],
"properties": {
"id": {
"type": "string"
},
"url": {
"type": "string"
},
"title": {
"type": "string"
},
"source": {
"type": "string"
},
"status": {
"type": "string"
},
"extracted": {
"type": [
"null",
"object"
],
"properties": {
"images": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"stores": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"contact": {
"type": [
"null",
"object"
],
"properties": {
"emails": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"phones": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"websites": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
}
},
"additionalProperties": false
},
"products": {
"type": [
"null",
"array"
],
"items": {
"type": "object",
"properties": {
"upcs": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"lotCodes": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"packaging": {
"type": "string"
},
"useByDates": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"productName": {
"type": "string"
},
"modelNumbers": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
}
},
"additionalProperties": false
}
},
"locations": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"establishments": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"productsTruncated": {
"type": "boolean"
}
},
"additionalProperties": false
},
"description": {
"type": "string"
},
"publishedOn": {
"type": "string"
},
"descriptionTruncated": {
"type": "boolean"
}
},
"additionalProperties": false
},
"reasons": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"patterns": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"inventory": {
"type": [
"null",
"array"
],
"items": {
"type": "object",
"required": [
"id",
"name",
"brand",
"category",
"sku"
],
"properties": {
"id": {
"type": "integer"
},
"sku": {
"type": "string"
},
"name": {
"type": "string"
},
"brand": {
"type": "string"
},
"category": {
"type": "string"
}
},
"additionalProperties": false
}
}
},
"additionalProperties": false
}
},
"message": {
"type": "string"
},
"nextOffset": {
"type": [
"null",
"integer"
]
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}create_api_key
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.
{
"type": "object",
"properties": {
"kind": {
"enum": [
"user",
"agent"
],
"type": "string",
"description": "optional kind: user or agent, default agent"
},
"name": {
"type": "string",
"description": "optional key name"
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"key_id",
"name",
"kind",
"api_key",
"limits",
"message"
],
"properties": {
"kind": {
"type": "string"
},
"name": {
"type": "string"
},
"key_id": {
"type": "string"
},
"limits": {
"type": "object",
"required": [
"hourly",
"daily",
"max_keys_per_user",
"max_watch_patterns",
"max_inventory",
"allow_account_writes",
"tier"
],
"properties": {
"tier": {
"type": "string"
},
"daily": {
"type": "integer"
},
"hourly": {
"type": "integer"
},
"max_inventory": {
"type": "integer"
},
"max_keys_per_user": {
"type": "integer"
},
"max_watch_patterns": {
"type": "integer"
},
"allow_account_writes": {
"type": "boolean"
}
},
"additionalProperties": false
},
"api_key": {
"type": "string"
},
"message": {
"type": "string"
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}get_product_recall
Get a recall by id, including extracted lots, UPCs, model numbers, locations, contact info, and product photo URLs
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "alias for recall_id"
},
"recall_id": {
"type": "string",
"description": "recall id returned by search tools"
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"id",
"source",
"title",
"description",
"url",
"publishedOn"
],
"properties": {
"id": {
"type": "string"
},
"url": {
"type": "string"
},
"title": {
"type": "string"
},
"source": {
"type": "string"
},
"status": {
"type": "string"
},
"extracted": {
"type": [
"null",
"object"
],
"properties": {
"images": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"stores": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"contact": {
"type": [
"null",
"object"
],
"properties": {
"emails": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"phones": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"websites": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
}
},
"additionalProperties": false
},
"products": {
"type": [
"null",
"array"
],
"items": {
"type": "object",
"properties": {
"upcs": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"lotCodes": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"packaging": {
"type": "string"
},
"useByDates": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"productName": {
"type": "string"
},
"modelNumbers": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
}
},
"additionalProperties": false
}
},
"locations": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"establishments": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"productsTruncated": {
"type": "boolean"
}
},
"additionalProperties": false
},
"description": {
"type": "string"
},
"publishedOn": {
"type": "string"
},
"descriptionTruncated": {
"type": "boolean"
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}give_feedback
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.
{
"type": "object",
"required": [
"message"
],
"properties": {
"message": {
"type": "string",
"description": "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": {
"enum": [
"bad_result",
"tool_error",
"missing_capability",
"confusing_schema",
"docs",
"other"
],
"type": "string",
"description": "optional: bad_result, tool_error, missing_capability, confusing_schema, docs, or other"
},
"severity": {
"enum": [
"blocked",
"workaround",
"annoyance"
],
"type": "string",
"description": "optional: blocked, workaround, or annoyance"
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"accepted",
"message"
],
"properties": {
"message": {
"type": "string"
},
"accepted": {
"type": "boolean"
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}list_api_keys
List this account's API keys (id, name, prefix, created). Secrets are not shown. Requires an API key.
{
"type": "object",
"additionalProperties": false
}{
"type": "object",
"required": [
"keys",
"limits"
],
"properties": {
"keys": {
"type": [
"null",
"array"
],
"items": {
"type": "object",
"required": [
"key_id",
"name",
"kind",
"key_prefix",
"created_at"
],
"properties": {
"kind": {
"type": "string"
},
"name": {
"type": "string"
},
"key_id": {
"type": "string"
},
"created_at": {
"type": "string"
},
"key_prefix": {
"type": "string"
},
"last_used_at": {
"type": [
"null",
"string"
]
}
},
"additionalProperties": false
}
},
"limits": {
"type": "object",
"required": [
"hourly",
"daily",
"max_keys_per_user",
"max_watch_patterns",
"max_inventory",
"allow_account_writes",
"tier"
],
"properties": {
"tier": {
"type": "string"
},
"daily": {
"type": "integer"
},
"hourly": {
"type": "integer"
},
"max_inventory": {
"type": "integer"
},
"max_keys_per_user": {
"type": "integer"
},
"max_watch_patterns": {
"type": "integer"
},
"allow_account_writes": {
"type": "boolean"
}
},
"additionalProperties": false
},
"message": {
"type": "string"
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}list_inventory
List this API key's tracked inventory products. Requires an API key.
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"default": 3,
"maximum": 100,
"minimum": 1,
"description": "number of products to return"
},
"query": {
"type": "string",
"description": "optional inventory search"
},
"offset": {
"type": "integer",
"maximum": 100,
"minimum": 0,
"description": "number of products to skip"
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"products",
"offset"
],
"properties": {
"offset": {
"type": "integer"
},
"products": {
"type": [
"null",
"array"
],
"items": {
"type": "object",
"required": [
"id",
"name",
"brand",
"category",
"sku"
],
"properties": {
"id": {
"type": "integer"
},
"sku": {
"type": "string"
},
"name": {
"type": "string"
},
"brand": {
"type": "string"
},
"category": {
"type": "string"
}
},
"additionalProperties": false
}
},
"nextOffset": {
"type": [
"null",
"integer"
]
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}list_recall_notifications
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.
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"default": 3,
"maximum": 100,
"minimum": 1,
"description": "number of notifications to return"
},
"offset": {
"type": "integer",
"maximum": 100,
"minimum": 0,
"description": "number of notifications to skip"
},
"unread": {
"type": [
"null",
"boolean"
],
"description": "if true, only unread notifications; if false, include read. Default: true (unread only)"
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"notifications",
"offset"
],
"properties": {
"offset": {
"type": "integer"
},
"message": {
"type": "string"
},
"nextOffset": {
"type": [
"null",
"integer"
]
},
"notifications": {
"type": [
"null",
"array"
],
"items": {
"type": "object",
"required": [
"recall",
"sentOn",
"read"
],
"properties": {
"read": {
"type": "boolean"
},
"recall": {
"type": "object",
"required": [
"id",
"source",
"title",
"description",
"url",
"publishedOn"
],
"properties": {
"id": {
"type": "string"
},
"url": {
"type": "string"
},
"title": {
"type": "string"
},
"source": {
"type": "string"
},
"status": {
"type": "string"
},
"extracted": {
"type": [
"null",
"object"
],
"properties": {
"images": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"stores": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"contact": {
"type": [
"null",
"object"
],
"properties": {
"emails": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"phones": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"websites": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
}
},
"additionalProperties": false
},
"products": {
"type": [
"null",
"array"
],
"items": {
"type": "object",
"properties": {
"upcs": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"lotCodes": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"packaging": {
"type": "string"
},
"useByDates": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"productName": {
"type": "string"
},
"modelNumbers": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
}
},
"additionalProperties": false
}
},
"locations": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"establishments": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"productsTruncated": {
"type": "boolean"
}
},
"additionalProperties": false
},
"description": {
"type": "string"
},
"publishedOn": {
"type": "string"
},
"descriptionTruncated": {
"type": "boolean"
}
},
"additionalProperties": false
},
"sentOn": {
"type": "string"
},
"message": {
"type": "string"
}
},
"additionalProperties": false
}
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}list_watch_patterns
List this API key's recall watch patterns. Requires an API key.
{
"type": "object",
"additionalProperties": false
}{
"type": "object",
"required": [
"patterns"
],
"properties": {
"patterns": {
"type": [
"null",
"array"
],
"items": {
"type": "object",
"required": [
"pattern",
"weight"
],
"properties": {
"weight": {
"type": "integer"
},
"pattern": {
"type": "string"
}
},
"additionalProperties": false
}
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}lookup_product
Look up a product by UPC/EAN. Returns found=false when unknown. Does not search recalls.
{
"type": "object",
"required": [
"upc"
],
"properties": {
"upc": {
"type": "string",
"description": "UPC or EAN barcode digits"
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"upc",
"found"
],
"properties": {
"upc": {
"type": "string"
},
"hint": {
"type": "string"
},
"found": {
"type": "boolean"
},
"product": {
"type": [
"null",
"object"
],
"properties": {
"sku": {
"type": "string"
},
"upc": {
"type": "string"
},
"name": {
"type": "string"
},
"brand": {
"type": "string"
},
"format": {
"type": "string"
},
"category": {
"type": "string"
}
},
"additionalProperties": false
},
"branded_food": {
"type": [
"null",
"object"
],
"properties": {
"category": {
"type": "string"
},
"gtin_upc": {
"type": "string"
},
"brand_name": {
"type": "string"
},
"brand_owner": {
"type": "string"
},
"ingredients": {
"type": "string"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}mark_notification_read
Mark a recall notification as read (default) or unread. Requires an API key.
{
"type": "object",
"required": [
"recall_id"
],
"properties": {
"read": {
"type": [
"null",
"boolean"
],
"description": "if true, mark read; if false, mark unread. Default true"
},
"recall_id": {
"type": "string",
"description": "recall id from list_recall_notifications"
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"recall_id",
"read",
"updated"
],
"properties": {
"read": {
"type": "boolean"
},
"updated": {
"type": "boolean"
},
"recall_id": {
"type": "string"
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}remove_inventory_product
Remove a product from this API key's inventory by id. Requires an API key.
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer",
"description": "inventory product id from list_inventory"
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"id",
"removed"
],
"properties": {
"id": {
"type": "integer"
},
"removed": {
"type": "boolean"
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}remove_watch_pattern
Remove a recall watch pattern for this API key. Requires an API key.
{
"type": "object",
"required": [
"pattern"
],
"properties": {
"pattern": {
"type": "string",
"description": "watch pattern to remove"
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"pattern",
"removed"
],
"properties": {
"pattern": {
"type": "string"
},
"removed": {
"type": "boolean"
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}revoke_api_key
Revoke an API key by key_id from list_api_keys. Requires an API key. Revoking the current key will fail subsequent calls.
{
"type": "object",
"required": [
"key_id"
],
"properties": {
"key_id": {
"type": "string",
"description": "key_id from list_api_keys"
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"key_id",
"revoked"
],
"properties": {
"key_id": {
"type": "string"
},
"revoked": {
"type": "boolean"
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}search_product_recalls
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.
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"default": 3,
"maximum": 100,
"minimum": 1,
"description": "number of recalls to return, 1-100, default 3"
},
"query": {
"type": "string",
"description": "websearch query: unquoted words are AND, OR is or, -term excludes, quoted phrases match as a unit. Example: Generac Generator -Portable"
},
"since": {
"type": "string",
"description": "optional published-on start date YYYY-MM-DD"
},
"until": {
"type": "string",
"description": "optional published-on end date YYYY-MM-DD"
},
"years": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "optional published window in years (1-50). Ignored when since is set"
},
"offset": {
"type": "integer",
"maximum": 100,
"minimum": 0,
"description": "number of recalls to skip"
},
"source": {
"enum": [
"cpsc",
"fdafoodsafety",
"FDAMedWatch",
"usda",
"nhtsa",
"canada",
"openfda"
],
"type": "string",
"description": "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": {
"type": "array",
"items": {
"enum": [
"cpsc",
"fdafoodsafety",
"FDAMedWatch",
"usda",
"nhtsa",
"canada",
"openfda"
],
"type": "string"
},
"description": "optional sources to include (OR). Same values as source",
"uniqueItems": true
},
"location": {
"type": "string",
"description": "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."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"recalls",
"offset"
],
"properties": {
"offset": {
"type": "integer"
},
"recalls": {
"type": [
"null",
"array"
],
"items": {
"type": "object",
"required": [
"id",
"source",
"title",
"description",
"url",
"publishedOn"
],
"properties": {
"id": {
"type": "string"
},
"url": {
"type": "string"
},
"title": {
"type": "string"
},
"source": {
"type": "string"
},
"status": {
"type": "string"
},
"extracted": {
"type": [
"null",
"object"
],
"properties": {
"images": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"stores": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"contact": {
"type": [
"null",
"object"
],
"properties": {
"emails": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"phones": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"websites": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
}
},
"additionalProperties": false
},
"products": {
"type": [
"null",
"array"
],
"items": {
"type": "object",
"properties": {
"upcs": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"lotCodes": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"packaging": {
"type": "string"
},
"useByDates": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"productName": {
"type": "string"
},
"modelNumbers": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
}
},
"additionalProperties": false
}
},
"locations": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"establishments": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"productsTruncated": {
"type": "boolean"
}
},
"additionalProperties": false
},
"description": {
"type": "string"
},
"publishedOn": {
"type": "string"
},
"descriptionTruncated": {
"type": "boolean"
}
},
"additionalProperties": false
}
},
"nextOffset": {
"type": [
"null",
"integer"
]
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}search_product_recalls_by_upc
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.
{
"type": "object",
"properties": {
"upc": {
"type": "string",
"description": "UPC or EAN barcode digits"
},
"url": {
"type": "string",
"description": "alias for image_url"
},
"limit": {
"type": "integer",
"default": 3,
"maximum": 100,
"minimum": 1,
"description": "number of recalls to return, 1-100, default 3"
},
"offset": {
"type": "integer",
"maximum": 100,
"minimum": 0,
"description": "number of recalls to skip"
},
"barcode": {
"type": "string",
"description": "alias for upc"
},
"image_url": {
"type": "string",
"description": "optional HTTPS URL or data:image/...;base64 URI of a barcode image"
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"upc",
"found",
"recalls",
"offset"
],
"properties": {
"upc": {
"type": "string"
},
"hint": {
"type": "string"
},
"found": {
"type": "boolean"
},
"match": {
"type": "string"
},
"offset": {
"type": "integer"
},
"product": {
"type": [
"null",
"object"
],
"properties": {
"sku": {
"type": "string"
},
"upc": {
"type": "string"
},
"name": {
"type": "string"
},
"brand": {
"type": "string"
},
"format": {
"type": "string"
},
"category": {
"type": "string"
}
},
"additionalProperties": false
},
"recalls": {
"type": [
"null",
"array"
],
"items": {
"type": "object",
"required": [
"id",
"source",
"title",
"description",
"url",
"publishedOn"
],
"properties": {
"id": {
"type": "string"
},
"url": {
"type": "string"
},
"title": {
"type": "string"
},
"source": {
"type": "string"
},
"status": {
"type": "string"
},
"extracted": {
"type": [
"null",
"object"
],
"properties": {
"images": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"stores": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"contact": {
"type": [
"null",
"object"
],
"properties": {
"emails": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"phones": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"websites": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
}
},
"additionalProperties": false
},
"products": {
"type": [
"null",
"array"
],
"items": {
"type": "object",
"properties": {
"upcs": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"lotCodes": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"packaging": {
"type": "string"
},
"useByDates": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"productName": {
"type": "string"
},
"modelNumbers": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
}
},
"additionalProperties": false
}
},
"locations": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"establishments": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"productsTruncated": {
"type": "boolean"
}
},
"additionalProperties": false
},
"description": {
"type": "string"
},
"publishedOn": {
"type": "string"
},
"descriptionTruncated": {
"type": "boolean"
}
},
"additionalProperties": false
}
},
"confidence": {
"type": "number"
},
"nextOffset": {
"type": [
"null",
"integer"
]
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}search_product_recalls_from_image
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.
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "alias for image_url"
},
"limit": {
"type": "integer",
"default": 3,
"maximum": 100,
"minimum": 1,
"description": "number of recalls to return per product, 1-100, default 3"
},
"image_url": {
"type": "string",
"description": "photo (beta). HTTPS URL or data:image/...;base64 URI of a photo containing products. Local file paths are not supported."
},
"include_category_matches": {
"type": "boolean",
"description": "if true, attach keyword recalls for generic items such as cups; default false"
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"products",
"recalls"
],
"properties": {
"recalls": {
"type": [
"null",
"array"
],
"items": {
"type": "object",
"required": [
"id",
"source",
"title",
"description",
"url",
"publishedOn"
],
"properties": {
"id": {
"type": "string"
},
"url": {
"type": "string"
},
"title": {
"type": "string"
},
"source": {
"type": "string"
},
"status": {
"type": "string"
},
"extracted": {
"type": [
"null",
"object"
],
"properties": {
"images": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"stores": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"contact": {
"type": [
"null",
"object"
],
"properties": {
"emails": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"phones": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"websites": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
}
},
"additionalProperties": false
},
"products": {
"type": [
"null",
"array"
],
"items": {
"type": "object",
"properties": {
"upcs": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"lotCodes": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"packaging": {
"type": "string"
},
"useByDates": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"productName": {
"type": "string"
},
"modelNumbers": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
}
},
"additionalProperties": false
}
},
"locations": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"establishments": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"productsTruncated": {
"type": "boolean"
}
},
"additionalProperties": false
},
"description": {
"type": "string"
},
"publishedOn": {
"type": "string"
},
"descriptionTruncated": {
"type": "boolean"
}
},
"additionalProperties": false
}
},
"products": {
"type": [
"null",
"array"
],
"items": {
"type": "object",
"required": [
"product",
"match",
"confidence",
"recalls"
],
"properties": {
"match": {
"type": "string"
},
"product": {
"type": "object",
"properties": {
"sku": {
"type": "string"
},
"upc": {
"type": "string"
},
"name": {
"type": "string"
},
"brand": {
"type": "string"
},
"format": {
"type": "string"
},
"category": {
"type": "string"
}
},
"additionalProperties": false
},
"recalls": {
"type": [
"null",
"array"
],
"items": {
"type": "object",
"required": [
"id",
"source",
"title",
"description",
"url",
"publishedOn"
],
"properties": {
"id": {
"type": "string"
},
"url": {
"type": "string"
},
"title": {
"type": "string"
},
"source": {
"type": "string"
},
"status": {
"type": "string"
},
"extracted": {
"type": [
"null",
"object"
],
"properties": {
"images": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"stores": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"contact": {
"type": [
"null",
"object"
],
"properties": {
"emails": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"phones": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"websites": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
}
},
"additionalProperties": false
},
"products": {
"type": [
"null",
"array"
],
"items": {
"type": "object",
"properties": {
"upcs": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"lotCodes": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"packaging": {
"type": "string"
},
"useByDates": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"productName": {
"type": "string"
},
"modelNumbers": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
}
},
"additionalProperties": false
}
},
"locations": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"establishments": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"productsTruncated": {
"type": "boolean"
}
},
"additionalProperties": false
},
"description": {
"type": "string"
},
"publishedOn": {
"type": "string"
},
"descriptionTruncated": {
"type": "boolean"
}
},
"additionalProperties": false
}
},
"confidence": {
"type": "number"
}
},
"additionalProperties": false
}
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}search_recalls_by_identifier
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.
{
"type": "object",
"properties": {
"upc": {
"type": "string",
"description": "product UPC or EAN as stored on the recall"
},
"vin": {
"type": "string",
"description": "17-character VIN. Lookup lists NHTSA campaigns for the decoded year and make; confirm your vehicle on nhtsa.gov/recalls."
},
"limit": {
"type": "integer",
"default": 3,
"maximum": 100,
"minimum": 1,
"description": "number of recalls to return"
},
"offset": {
"type": "integer",
"maximum": 100,
"minimum": 0,
"description": "number of recalls to skip"
},
"lot_code": {
"type": "string",
"description": "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": {
"type": "string",
"description": "model number as stored on the recall"
},
"product_name": {
"type": "string",
"description": "extracted product name (exact match; if none, falls back to the same full-text search as search_product_recalls)"
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"recalls",
"offset"
],
"properties": {
"hint": {
"type": "string"
},
"offset": {
"type": "integer"
},
"recalls": {
"type": [
"null",
"array"
],
"items": {
"type": "object",
"required": [
"id",
"source",
"title",
"description",
"url",
"publishedOn"
],
"properties": {
"id": {
"type": "string"
},
"url": {
"type": "string"
},
"title": {
"type": "string"
},
"source": {
"type": "string"
},
"status": {
"type": "string"
},
"extracted": {
"type": [
"null",
"object"
],
"properties": {
"images": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"stores": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"contact": {
"type": [
"null",
"object"
],
"properties": {
"emails": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"phones": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"websites": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
}
},
"additionalProperties": false
},
"products": {
"type": [
"null",
"array"
],
"items": {
"type": "object",
"properties": {
"upcs": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"lotCodes": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"packaging": {
"type": "string"
},
"useByDates": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"productName": {
"type": "string"
},
"modelNumbers": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
}
},
"additionalProperties": false
}
},
"locations": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"establishments": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
},
"productsTruncated": {
"type": "boolean"
}
},
"additionalProperties": false
},
"description": {
"type": "string"
},
"publishedOn": {
"type": "string"
},
"descriptionTruncated": {
"type": "boolean"
}
},
"additionalProperties": false
}
},
"nextOffset": {
"type": [
"null",
"integer"
]
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}signup
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.
{
"type": "object",
"required": [
"email",
"accept_terms"
],
"properties": {
"name": {
"type": "string",
"description": "optional display name"
},
"email": {
"type": "string",
"description": "email address for the new account"
},
"accept_terms": {
"type": "boolean",
"description": "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."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"user_id",
"email",
"email_verified",
"key_id",
"api_key",
"limits",
"message"
],
"properties": {
"email": {
"type": "string"
},
"key_id": {
"type": "string"
},
"limits": {
"type": "object",
"required": [
"hourly",
"daily",
"max_keys_per_user",
"max_watch_patterns",
"max_inventory",
"allow_account_writes",
"tier"
],
"properties": {
"tier": {
"type": "string"
},
"daily": {
"type": "integer"
},
"hourly": {
"type": "integer"
},
"max_inventory": {
"type": "integer"
},
"max_keys_per_user": {
"type": "integer"
},
"max_watch_patterns": {
"type": "integer"
},
"allow_account_writes": {
"type": "boolean"
}
},
"additionalProperties": false
},
"api_key": {
"type": "string"
},
"message": {
"type": "string"
},
"user_id": {
"type": "string"
},
"email_verified": {
"type": "boolean"
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}Prompts
4 advertised
check_product
Search recalls for a product name or brand, then fetch the full notice if there is a hit.
- query
- product, brand, or hazard; websearch syntax (words AND, OR, -exclude, quoted phrase) (required)
- location
- optional place such as Iowa, United States, Canada, Mexico, EU, or Ontario
check_upc
Look up a UPC and search extracted recall UPCs.
- upc
- UPC or EAN digits (required)
list_vin_campaigns
VIN lookup lists NHTSA campaigns for the decoded year and make; confirm your vehicle on nhtsa.gov/recalls.
- vin
- 17-character vehicle identification number (required)
scan_image
Photo (beta): identify products in a photo and search matching recalls.
- image_url
- HTTPS image URL or data:image/...;base64 URI (required)
Resources
2 advertised
recall-sources — Recall sources
Government recall sources currently indexed.
recall://docs/sourcestool-guide — Recall Kitchen MCP tool guide
Which MCP tool to use for keyword, UPC, lot, image, and account tasks.
recall://docs/tools30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 999 ms
- 95th percentile latency
- 999 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 999 ms · metadata changed · 20 tool(s), 2 resource(s), 0 resource template(s), 4 prompt(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http recall-kitchen-mcp https://app.recallkitchen.com/mcpCodex
codex mcp add recall-kitchen-mcp --url https://app.recallkitchen.com/mcpCursor
{
"mcpServers": {
"recall-kitchen-mcp": {
"url": "https://app.recallkitchen.com/mcp"
}
}
}Cline
{
"mcpServers": {
"recall-kitchen-mcp": {
"type": "streamableHttp",
"url": "https://app.recallkitchen.com/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"recall-kitchen-mcp": {
"type": "http",
"url": "https://app.recallkitchen.com/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http recall-kitchen-mcp https://app.recallkitchen.com/mcpClaude Desktop
https://app.recallkitchen.com/mcpWindsurf
{
"mcpServers": {
"recall-kitchen-mcp": {
"serverUrl": "https://app.recallkitchen.com/mcp"
}
}
}Let your agent find its tools
Find servers like Recall Kitchen MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.