Zovo Product Recall Check
Server Details
Inventory recall screening
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 3 tools
The three tools target distinct operations: inventory screening, keyword/date search, and detail lookup by recall number. However, check_inventory_for_recalls and search_recalls both query live recall data and can export files, so a broadly phrased recall request could cause some initial confusion.
All names use snake_case and begin with an action verb, but check_inventory_for_recalls is noticeably more verbose and includes 'for' while get_recall_details and search_recalls follow a simpler verb_noun pattern.
Three tools are well-scoped for a focused consumer-product recall checker, and each tool earns its place by covering a distinct part of the workflow.
The surface covers searching recalls, retrieving full details, and screening inventory, which are the core operations. Minor gaps may exist around direct UPC/batch lookup or browsing recent recalls without a keyword, but workarounds are available.
Available Tools
3 toolscheck_inventory_for_recallsCheck inventory for recallsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | Stock list in input order, 1–100 items. Example: [{"product":"thermal laminator","model":"TL1302Z"}]. | |
| recalled_since_year | No | First announcement year through the current UTC year; defaults to current year minus 14. Example: 2026. |
Output Schema
| Name | Required | Description |
|---|---|---|
| kind | Yes | |
| rows | Yes | |
| counts | Yes | |
| source | Yes | |
| coverage | Yes | |
| downloads | Yes | |
| source_url | Yes | |
| total_items | Yes | |
| failed_years | Yes | |
| retrieved_utc | Yes | |
| records_checked | Yes | |
| recalled_since_year | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld, non-destructive, so the safety profile is covered; the description adds non-obvious behavior: it reads live recall data, emits XLSX and CSV files, caps at 1–100 items, and carries accuracy caveats ('word matches require verification', 'models written with spaces can be missed'). It stops short of covering runtime or what happens to unmatched items, keeping it below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, front-loaded with the usage trigger, then behavior, then caveats, then exclusions. No sentence is redundant with another or with the structured fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described; annotations cover the safety profile. The description supplies the remaining operational context (live data source, file outputs, item limits, scope exclusion) that an agent needs to select and invoke this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents items, UPC/brand/model/product, and recalled_since_year. The description still adds useful matching semantics beyond the schema: word-based matching needs verification and spaced model numbers can be missed, which tells the agent how to interpret the text fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('check my inventory for recalls', 'run a resale recall check') and adds concrete output behavior (XLSX/CSV screening files). It is clearly distinguishable from search_recalls and get_recall_details, which are lookup/detail tools rather than batch inventory screening.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Opens with an explicit trigger clause ('Use this when the user wants to...') listing three paraphrase variants of the intent, and closes with an explicit exclusion: 'Do not use for food, drugs or vehicle recalls.' Both when-to-use and when-not-to-use are present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_recall_detailsGet recall detailsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| recall_number | Yes | One to ten recall numbers. Example: ["27024"]. |
Output Schema
| Name | Required | Description |
|---|---|---|
| kind | Yes | |
| rows | Yes | |
| source | Yes | |
| coverage | Yes | |
| source_url | Yes | |
| total_count | Yes | |
| failed_years | Yes | |
| retrieved_utc | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent and non-destructive, so the bar is lower; the description still adds useful behavior: records are 'full live' reads, the batch size is 1–10, and missing records return per-number errors rather than failing the whole call. No auth or rate-limit context, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the use condition, followed by scope, return fields and the negative case. Two sentences plus one clause, every one carrying information an agent needs to select and call the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter lookup with an output schema and full annotation coverage, nothing essential is missing: trigger, exclusion, batch limit, returned fields and partial-failure behavior are all present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and already documents the 4–8 character pattern, the 1–10 array bounds and an example ('27024'). The description's '1–10 recall numbers' restates the schema rather than adding new semantics, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Reads full live records for 1–10 recall numbers', plus the fields returned (hazard, remedy, contact, retailers, units, UPCs, image links). It implicitly separates itself from search_recalls by requiring recall numbers, but never names the sibling to make the split explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Opens with an explicit trigger ('Use this when the user wants cpsc recalls, a recalled products list, or is this product recalled and has a recall number') and adds a real exclusion ('Do not use for recalls outside consumer products'). It stops short of routing the agent to search_recalls or check_inventory_for_recalls when the user lacks a recall number.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_recallsSearch recallsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| date_to | No | Inclusive YYYY-MM-DD no later than today UTC; defaults to today UTC. Example: 2026-10-21. | |
| keywords | No | Product, brand, hazard, UPC or model keywords; blank lists the date range. Example: laminator. | |
| match_in | No | Field for word matching; default any. Example: hazard. | |
| date_from | No | Inclusive YYYY-MM-DD from 2000, defaults to 365 days before date_to. Example: 2026-10-01. |
Output Schema
| Name | Required | Description |
|---|---|---|
| kind | Yes | |
| rows | Yes | |
| source | Yes | |
| date_to | Yes | |
| coverage | Yes | |
| keywords | Yes | |
| match_in | Yes | |
| date_from | Yes | |
| downloads | Yes | |
| source_url | Yes | |
| total_count | Yes | |
| failed_years | Yes | |
| retrieved_utc | Yes | |
| exported_count | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, but the description adds substantive behavioral context: the search spans at most 15 calendar years since 2000, previews up to 20 rows, and exports the newest 2,000 results to XLSX and CSV. These are meaningful operational details beyond what the annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with zero waste. Usage guidance and domain scope are front-loaded, followed by key data-range and output behavior, then the exclusion. Each sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema, rich annotations, and full schema description coverage, so the description need not explain return values. It still adds the date-range limit and preview/export behavior, making the definition complete for an agent to select and invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the parameter definitions already carry most semantics. The description still adds a useful constraint not fully captured in the schema: date filtering touches at most 15 calendar years since 2000. It does not elaborate on match_in behavior or keyword matching nuances beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: searches live consumer-product recall data by keyword and dates. It clearly scopes the domain (consumer products) and excludes food, drugs, and vehicles, but does not explicitly differentiate from the sibling tools check_inventory_for_recalls or get_recall_details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use language (product recalls, recall lists, consumer product recall search) and a clear when-not-to-use exclusion (food, drugs, vehicle recalls). It does not name specific alternative tools for those excluded cases, so it stops short of full alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
- First observed
check_inventory_for_recalls - First observed
get_recall_details - First observed
search_recalls
Related MCP Connectors
Recall for agents: lot genealogy, exposure tracing, attested remedy. Containment is not remedy.
Analyze inventory levels and optimize stock allocation to reduce waste and avoid stockouts.
Search recall records by company name or product keywords.
Match consumer products to official CPSC recalls and purchase source-linked evidence.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceAggregates food recall and stop-sale data from Korean food safety authorities and enables checking inventory items against recalls by lot number.-
- AlicenseNot gradedqualityCmaintenanceEnables determining whether a specific product unit is affected by FDA/CPSC recalls by evaluating the unit's lot, date, and other codes against frozen recall notices, returning affected, not affected, or needed-code questions.MIT
- AlicenseNot gradedqualityCmaintenanceLets an assistant check a personal inventory against EU Safety Gate, German medicine shortage, US vehicle campaign and software end-of-support registers, returning graded matches together with each source's coverage and known blind spots. Read-only, so it can query what is watched, past notices and source status but cannot alter inventory or acknowledge findings.6 npmMIT
- AlicenseNot gradedqualityCmaintenanceEnables a household to save the cars, products, foods and medicines it owns, then ask by voice whether any of them has been recalled, checking NHTSA, CPSC and FDA data and speaking the urgent and newly found notices first. Keeps a per-household list across sessions so repeat checks report only what has changed since last time.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.