Zovo Product Recall Check MCP
An MCP server that screens inventory against live consumer-product recall records from the U.S. CPSC. It allows agents to check up to 100 stock items by UPC, model, or product words, search recall records by keyword and date range, read full recall details, and download screening spreadsheets.
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://product-recalls.zovo.one/mcpWhat you can do with it
- Check inventory for recalls by UPC or model number
- Search recall records by keyword and date range
- Read full recall records and source links
- Download screening spreadsheets with action taken column
Source and maintenance
Protocol and capabilities
- Server
- product-recalls 1.0.0
- MCP protocol
- 2025-06-18
- Tools
- 3 advertised
- Resources
- 1 advertised
- Resource templates
- 1 advertised
- Prompts
- Not advertised
{
"tools": {
"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
3 advertised
check_inventory_for_recalls — Check inventory for recalls
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.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"items"
],
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"product"
],
"properties": {
"upc": {
"type": "string",
"maxLength": 20,
"description": "Optional UPC with 8, 12, 13 or 14 digits. Example: 860006498115."
},
"brand": {
"type": "string",
"maxLength": 100,
"description": "Optional brand printed on the item. Example: Acme."
},
"model": {
"type": "string",
"maxLength": 60,
"description": "Optional model number including a digit. Example: TL1302Z."
},
"product": {
"type": "string",
"maxLength": 200,
"description": "Product name, 2–200 characters; blank names receive a row error. Example: thermal laminator."
}
}
},
"maxItems": 100,
"minItems": 1,
"description": "Stock list in input order, 1–100 items. Example: [{\"product\":\"thermal laminator\",\"model\":\"TL1302Z\"}]."
},
"recalled_since_year": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 2000,
"description": "First announcement year through the current UTC year; defaults to current year minus 14. Example: 2026."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"kind",
"total_items",
"records_checked",
"recalled_since_year",
"counts",
"rows",
"downloads",
"source",
"source_url",
"retrieved_utc",
"coverage",
"failed_years"
],
"properties": {
"kind": {
"type": "string"
},
"rows": {
"type": "array",
"items": {
"type": "object",
"required": [
"row",
"product",
"brand",
"model",
"upc",
"status",
"match_basis",
"recall_number",
"recall_date",
"title",
"hazard",
"remedy",
"recall_url",
"other_matches",
"note"
],
"properties": {
"row": {
"type": "number"
},
"upc": {
"type": "string"
},
"note": {
"type": "string"
},
"brand": {
"type": "string"
},
"model": {
"type": "string"
},
"title": {
"type": "string"
},
"hazard": {
"type": "string"
},
"remedy": {
"type": "string"
},
"status": {
"type": "string"
},
"product": {
"type": "string"
},
"recall_url": {
"type": "string"
},
"match_basis": {
"type": "string"
},
"recall_date": {
"type": "string"
},
"other_matches": {
"type": "array",
"items": {
"type": "string"
}
},
"recall_number": {
"type": "string"
}
},
"additionalProperties": false
}
},
"counts": {
"type": "object",
"required": [
"Recall found",
"Possible match - verify",
"No matching recall found in CPSC data",
"Error"
],
"properties": {
"Error": {
"type": "number"
},
"Recall found": {
"type": "number"
},
"Possible match - verify": {
"type": "number"
},
"No matching recall found in CPSC data": {
"type": "number"
}
},
"additionalProperties": false
},
"source": {
"type": "string"
},
"coverage": {
"type": "string"
},
"downloads": {
"type": "object",
"required": [
"xlsx",
"csv"
],
"properties": {
"csv": {
"type": "string"
},
"xlsx": {
"type": "string"
}
},
"additionalProperties": false
},
"source_url": {
"type": "string"
},
"total_items": {
"type": "number"
},
"failed_years": {
"type": "array",
"items": {
"type": "number"
}
},
"retrieved_utc": {
"type": "string"
},
"records_checked": {
"type": "number"
},
"recalled_since_year": {
"type": "number"
}
},
"additionalProperties": false
}{
"title": "Check inventory for recalls",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}search_recalls — Search recalls
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.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"date_to": {
"type": "string",
"maxLength": 10,
"description": "Inclusive YYYY-MM-DD no later than today UTC; defaults to today UTC. Example: 2026-10-21."
},
"keywords": {
"type": "string",
"maxLength": 100,
"description": "Product, brand, hazard, UPC or model keywords; blank lists the date range. Example: laminator."
},
"match_in": {
"enum": [
"any",
"product",
"brand",
"hazard",
"title"
],
"type": "string",
"description": "Field for word matching; default any. Example: hazard."
},
"date_from": {
"type": "string",
"maxLength": 10,
"description": "Inclusive YYYY-MM-DD from 2000, defaults to 365 days before date_to. Example: 2026-10-01."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"kind",
"total_count",
"exported_count",
"date_from",
"date_to",
"keywords",
"match_in",
"rows",
"downloads",
"source",
"source_url",
"retrieved_utc",
"coverage",
"failed_years"
],
"properties": {
"kind": {
"type": "string"
},
"rows": {
"type": "array",
"items": {
"type": "object",
"required": [
"recall_number",
"recall_date",
"title",
"products",
"hazard",
"remedy",
"recall_url",
"note"
],
"properties": {
"note": {
"type": "string"
},
"title": {
"type": "string"
},
"hazard": {
"type": "string"
},
"remedy": {
"type": "string"
},
"products": {
"type": "string"
},
"recall_url": {
"type": "string"
},
"recall_date": {
"type": "string"
},
"recall_number": {
"type": "string"
}
},
"additionalProperties": false
}
},
"source": {
"type": "string"
},
"date_to": {
"type": "string"
},
"coverage": {
"type": "string"
},
"keywords": {
"type": "string"
},
"match_in": {
"type": "string"
},
"date_from": {
"type": "string"
},
"downloads": {
"type": "object",
"required": [
"xlsx",
"csv"
],
"properties": {
"csv": {
"type": "string"
},
"xlsx": {
"type": "string"
}
},
"additionalProperties": false
},
"source_url": {
"type": "string"
},
"total_count": {
"type": "number"
},
"failed_years": {
"type": "array",
"items": {
"type": "number"
}
},
"retrieved_utc": {
"type": "string"
},
"exported_count": {
"type": "number"
}
},
"additionalProperties": false
}{
"title": "Search recalls",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}get_recall_details — Get recall details
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.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"recall_number"
],
"properties": {
"recall_number": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[0-9A-Za-z-]+$",
"maxLength": 8,
"minLength": 4,
"description": "A recall identifier of 4–8 letters, digits or hyphens. Example: 27024."
},
"maxItems": 10,
"minItems": 1,
"description": "One to ten recall numbers. Example: [\"27024\"]."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"kind",
"total_count",
"rows",
"source",
"source_url",
"retrieved_utc",
"coverage",
"failed_years"
],
"properties": {
"kind": {
"type": "string"
},
"rows": {
"type": "array",
"items": {
"type": "object",
"required": [
"requested_number",
"status",
"recall_number",
"recall_date",
"title",
"recall_url",
"error"
],
"properties": {
"error": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "string"
},
"recall_url": {
"type": "string"
},
"recall_date": {
"type": "string"
},
"recall_number": {
"type": "string"
},
"requested_number": {
"type": "string"
}
},
"additionalProperties": false
}
},
"source": {
"type": "string"
},
"coverage": {
"type": "string"
},
"source_url": {
"type": "string"
},
"total_count": {
"type": "number"
},
"failed_years": {
"type": "array",
"items": {
"type": "number"
}
},
"retrieved_utc": {
"type": "string"
}
},
"additionalProperties": false
}{
"title": "Get recall details",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}Prompts
Not advertised
Resources
1 advertised
product-recalls-widget — Zovo Product Recall Check view
Interactive view for Zovo Product Recall Check.
ui://widget/product-recalls-v2-1.0.0-49ea0c9337a5a2e445b43ef478d47a057af6ca1bb6bfa2057641cae60595184f.htmlproduct-recalls-widget-legacy — Zovo Product Recall Check view (previous versions)
ui://widget/product-recalls-{version}.html30-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
- 933 ms
- 95th percentile latency
- 933 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 933 ms · metadata changed · 3 tool(s), 1 resource(s), 1 resource template(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http zovo-product-recall-check-mcp https://product-recalls.zovo.one/mcpCodex
codex mcp add zovo-product-recall-check-mcp --url https://product-recalls.zovo.one/mcpCursor
{
"mcpServers": {
"zovo-product-recall-check-mcp": {
"url": "https://product-recalls.zovo.one/mcp"
}
}
}Cline
{
"mcpServers": {
"zovo-product-recall-check-mcp": {
"type": "streamableHttp",
"url": "https://product-recalls.zovo.one/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"zovo-product-recall-check-mcp": {
"type": "http",
"url": "https://product-recalls.zovo.one/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http zovo-product-recall-check-mcp https://product-recalls.zovo.one/mcpClaude Desktop
{
"mcpServers": {
"zovo-product-recall-check-mcp": {
"url": "https://product-recalls.zovo.one/mcp"
}
}
}Windsurf
{
"mcpServers": {
"zovo-product-recall-check-mcp": {
"serverUrl": "https://product-recalls.zovo.one/mcp"
}
}
}Let your agent find its tools
Find servers like Zovo Product Recall Check MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.