Zovo Product Recall Check
Inventory recall screening
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"product-recalls": {
"url": "https://product-recalls.zovo.one/mcp"
}
}
}Remote endpoints
https://product-recalls.zovo.one/mcpstreamable-httpWhat it can do
Tool inventory
Tools (3)
🟢check_inventory_for_recalls(items, recalled_since_year)
Use this when the user wants to check my inventory for recalls, check items against cpsc recalls, or run a resale recall check. Reads live consumer-product recall data and generates XLSX and CSV screening files for 1–100 items, from a chosen year since 2000. Word matches require verification; models written with spaces can be missed. Do not use for food, drugs or vehicle recalls.
Input Schema
{
"type": "object",
"properties": {
"items": {
"minItems": 1,
"maxItems": 100,
"type": "array",
"items": {
"type": "object",
"properties": {
"product": {
"type": "string",
"maxLength": 200,
"description": "Product name, 2–200 characters; blank names receive a row error. Example: thermal laminator."
},
"brand": {
"description": "Optional brand printed on the item. Example: Acme.",
"type": "string",
"maxLength": 100
},
"model": {
"description": "Optional model number including a digit. Example: TL1302Z.",
"type": "string",
"maxLength": 60
},
"upc": {
"description": "Optional UPC with 8, 12, 13 or 14 digits. Example: 860006498115.",
"type": "string",
"maxLength": 20
}
},
"required": [
"product"
]
},
"description": "Stock list in input order, 1–100 items. Example: [{\"product\":\"thermal laminator\",\"model\":\"TL1302Z\"}]."
},
"recalled_since_year": {
"description": "First announcement year through the current UTC year; defaults to current year minus 14. Example: 2026.",
"type": "integer",
"minimum": 2000,
"maximum": 9007199254740991
}
},
"required": [
"items"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"kind": {
"type": "string"
},
"total_items": {
"type": "number"
},
"records_checked": {
"type": "number"
},
"recalled_since_year": {
"type": "number"
},
"counts": {
"type": "object",
"properties": {
"Recall found": {
"type": "number"
},
"Possible match - verify": {
"type": "number"
},
"No matching recall found in CPSC data": {
"type": "number"
},
"Error": {
"type": "number"
}
},
"required": [
"Recall found",
"Possible match - verify",
"No matching recall found in CPSC data",
"Error"
],
"additionalProperties": false
},
"rows": {
"type": "array",
"items": {
"type": "object",
"properties": {
"row": {
"type": "number"
},
"product": {
"type": "string"
},
"brand": {
"type": "string"
},
"model": {
"type": "string"
},
"upc": {
"type": "string"
},
"status": {
"type": "string"
},
"match_basis": {
"type": "string"
},
"recall_number": {
"type": "string"
},
"recall_date": {
"type": "string"
},
"title": {
"type": "string"
},
"hazard": {
"type": "string"
},
"remedy": {
"type": "string"
},
"recall_url": {
"type": "string"
},
"other_matches": {
"type": "array",
"items": {
"type": "string"
}
},
"note": {
"type": "string"
}
},
"required": [
"row",
"product",
"brand",
"model",
"upc",
"status",
"match_basis",
"recall_number",
"recall_date",
"title",
"hazard",
"remedy",
"recall_url",
"other_matches",
"note"
],
"additionalProperties": false
}
},
"downloads": {
"type": "object",
"properties": {
"xlsx": {
"type": "string"
},
"csv": {
"type": "string"
}
},
"required": [
"xlsx",
"csv"
],
"additionalProperties": false
},
"source": {
"type": "string"
},
"source_url": {
"type": "string"
},
"retrieved_utc": {
"type": "string"
},
"coverage": {
"type": "string"
},
"failed_years": {
"type": "array",
"items": {
"type": "number"
}
}
},
"required": [
"kind",
"total_items",
"records_checked",
"recalled_since_year",
"counts",
"rows",
"downloads",
"source",
"source_url",
"retrieved_utc",
"coverage",
"failed_years"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟢search_recalls(keywords, match_in, date_from, date_to)
Use this when the user wants product recalls, a recall list, or a consumer product recall search. Searches live consumer-product data by keyword and dates touching at most 15 calendar years since 2000; previews up to 20 rows and exports the newest 2,000 to XLSX and CSV. Do not use for food, drugs or vehicle recalls.
Input Schema
{
"type": "object",
"properties": {
"keywords": {
"description": "Product, brand, hazard, UPC or model keywords; blank lists the date range. Example: laminator.",
"type": "string",
"maxLength": 100
},
"match_in": {
"description": "Field for word matching; default any. Example: hazard.",
"type": "string",
"enum": [
"any",
"product",
"brand",
"hazard",
"title"
]
},
"date_from": {
"description": "Inclusive YYYY-MM-DD from 2000, defaults to 365 days before date_to. Example: 2026-10-01.",
"type": "string",
"maxLength": 10
},
"date_to": {
"description": "Inclusive YYYY-MM-DD no later than today UTC; defaults to today UTC. Example: 2026-10-21.",
"type": "string",
"maxLength": 10
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"kind": {
"type": "string"
},
"total_count": {
"type": "number"
},
"exported_count": {
"type": "number"
},
"date_from": {
"type": "string"
},
"date_to": {
"type": "string"
},
"keywords": {
"type": "string"
},
"match_in": {
"type": "string"
},
"rows": {
"type": "array",
"items": {
"type": "object",
"properties": {
"recall_number": {
"type": "string"
},
"recall_date": {
"type": "string"
},
"title": {
"type": "string"
},
"products": {
"type": "string"
},
"hazard": {
"type": "string"
},
"remedy": {
"type": "string"
},
"recall_url": {
"type": "string"
},
"note": {
"type": "string"
}
},
"required": [
"recall_number",
"recall_date",
"title",
"products",
"hazard",
"remedy",
"recall_url",
"note"
],
"additionalProperties": false
}
},
"downloads": {
"type": "object",
"properties": {
"xlsx": {
"type": "string"
},
"csv": {
"type": "string"
}
},
"required": [
"xlsx",
"csv"
],
"additionalProperties": false
},
"source": {
"type": "string"
},
"source_url": {
"type": "string"
},
"retrieved_utc": {
"type": "string"
},
"coverage": {
"type": "string"
},
"failed_years": {
"type": "array",
"items": {
"type": "number"
}
}
},
"required": [
"kind",
"total_count",
"exported_count",
"date_from",
"date_to",
"keywords",
"match_in",
"rows",
"downloads",
"source",
"source_url",
"retrieved_utc",
"coverage",
"failed_years"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟢get_recall_details(recall_number)
Use this when the user wants cpsc recalls, a recalled products list, or is this product recalled and has a recall number. Reads full live records for 1–10 recall numbers, including hazard, remedy, contact, retailers, units, UPCs and image links; missing records receive per-number errors. Do not use for recalls outside consumer products.
Input Schema
{
"type": "object",
"properties": {
"recall_number": {
"minItems": 1,
"maxItems": 10,
"type": "array",
"items": {
"type": "string",
"minLength": 4,
"maxLength": 8,
"pattern": "^[0-9A-Za-z-]+$",
"description": "A recall identifier of 4–8 letters, digits or hyphens. Example: 27024."
},
"description": "One to ten recall numbers. Example: [\"27024\"]."
}
},
"required": [
"recall_number"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"kind": {
"type": "string"
},
"total_count": {
"type": "number"
},
"rows": {
"type": "array",
"items": {
"type": "object",
"properties": {
"requested_number": {
"type": "string"
},
"status": {
"type": "string"
},
"recall_number": {
"type": "string"
},
"recall_date": {
"type": "string"
},
"title": {
"type": "string"
},
"recall_url": {
"type": "string"
},
"error": {
"type": "string"
}
},
"required": [
"requested_number",
"status",
"recall_number",
"recall_date",
"title",
"recall_url",
"error"
],
"additionalProperties": false
}
},
"source": {
"type": "string"
},
"source_url": {
"type": "string"
},
"retrieved_utc": {
"type": "string"
},
"coverage": {
"type": "string"
},
"failed_years": {
"type": "array",
"items": {
"type": "number"
}
}
},
"required": [
"kind",
"total_count",
"rows",
"source",
"source_url",
"retrieved_utc",
"coverage",
"failed_years"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}Community
Evidence