Zovo Product Recall Check

Inventory recall screening

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
97%
Naming quality
100%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,813Tokens (tool definitions)
~5.9 KBTypical response size
Moderate attention impact (1.42% of 128k context)

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-http

What it can do

Tool inventory

Tools (3)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢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

Rate this Server

Evidence

Recent observations

verifiedversion not recorded3 tools