Skip to main content
Glama

Get one recall by agency and slug

get_recall
Read-only

Fetch the full Recall Canary record for a single U.S. federal recall, given the agency and slug returned by search_recalls. Includes the hazard description, the affected product list with lot codes and UPCs, the recommended consumer action, distribution, the agency source link, and the firm slug (firm.slug, with firm.page_url when the firm has a page) for search_recalls' firm filter. Also resolves preliminary agency press releases: an orphan, or a linked one that kept its own URL (its recalls in linked_recalls). Read-only.

Input Schema

NameRequiredDescriptionDefault
slugYesThe record slug from its URL, e.g. "acme-foods-peanut-butter". The 26-character ULID id is also accepted and resolves to what its URL shows (for a matched press release, often its recall).
agencyYesLowercase agency segment from the record URL. Part of the lookup key, not decoration: a correct slug under the wrong agency is a miss.

Output Schema

NameRequiredDescriptionDefault
idYes
urlYes
firmNo
riskNoThe agency rating as the page shows it (for example "High risk" for an FDA Class I recall). Null where the page shows no risk line.
slugNo
datesNo
notesYesCaveats for this record, including the aggregator-lag and not-a-clearance statement.
titleYesAgency-published title. Never model-written.
agencyYesKnown values: FDA, FDA_IRES, FSIS, CPSC, NHTSA, ADMIN.
reasonNoThe agency's own stated reason, not model-written.
statusNo
licenseYesAttribution and terms (DATA-LICENSE).
relatedNo
categoryNoKnown values: FOOD, DRUG, DEVICE, COSMETIC, CONSUMER_PRODUCT, VEHICLE, AUTO_EQUIPMENT.
html_urlYesAbsolute URL of the human-readable page.
productsNo
severityNoKnown values: CRITICAL, MODERATE, LOW.
timelineNoDated steps of the record, in date order. Each step names who acted on that date.
canonicalYesAbsolute URL of this representation.
firm_nameNo
listed_atNoSince api 2.6.0. The date the listing shows and sorts by; equals this record's search_recalls row. A recall's listing date is in dates.listed_at.
source_urlNoThe agency's own notice.
api_versionYes
descriptionNoFull agency description. FSIS: sanitized HTML; others: plain text. Sanitize or escape before display.
hazard_tagsYes
record_typeYes
snapshot_atYesISO-8601 UTC response-generation time, second precision. First key on purpose.
advisory_urlNo
ai_generatedYesProvenance: true where the field holds model-written text. Over-attributes on purpose.
distributionNo
published_atNoDeprecated: the stored pub_date.
display_titleNo
mcp_truncatedNoPresent only when a long list was cut to 25 for this response.
product_countNoThe true event scope, which may exceed products.length.
story_lead_idNoSet on a later record of a recall story; the lead it belongs to.
critical_flagsNoNHTSA-only in practice. An absent key means the agency did not state the flag. null for a withdrawn (RETRACTED) record.
identificationYesPage-derived identification: the products and codes the record names. Not a completeness guarantee; `partial` says when the list is incomplete, including when this response cut `products` to 25 (`mcp_truncated.identification_products`).
linked_recallsNo
press_releasesNo
story_lead_urlNo
units_affectedNo
consumer_actionNoThe "What to do" text. Null on a withdrawn alert.
display_summaryNo
source_recall_idNoAgency key; a CPSC one can be stale.
content_changed_atYesWhen the published content last changed.
products_truncatedNoTrue when `product_count` exceeds the length of `products`
agency_published_atNo
company_announced_atNo
company_product_listNoThe company's own list of the affected products, when the agency notice points to it instead of naming them. A product missing from `identification` may still be recalled: check this list.
display_summary_shortNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / properties / identification / description
      Previous value: -"Page-derived identification: the products and codes the record names. Not a completeness guarantee; `partial` says when the list is incomplete."New value: +"Page-derived identification: the products and codes the record names. Not a completeness guarantee; `partial` says when the list is incomplete, including when this response cut `products` to 25 (`mcp_truncated.identification_products`)."
  2. First observed

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false; the description restates "Read-only" but adds real substance: what the payload contains (hazard, lot codes/UPCs, consumer action, distribution, source link), the firm.slug/page_url exposure for the sibling's firm filter, and the orphan/linked-press-release edge case. That edge-case disclosure is genuine behavioral context an agent could not infer from the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the core action, then the payload inventory and edge cases. The field enumeration is long but each item (lot codes, UPCs, firm.slug for the firm filter) conveys something an agent would otherwise have to discover empirically.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists, so return values need no formal explanation, yet the description still summarizes the shape and explicitly covers the tricky press-release path. Combined with the 100% schema coverage and read-only annotation, nothing an agent needs to invoke this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema itself already explains the ULID acceptance, max length, and the agency enum's role as part of the lookup key. The description adds only provenance (both values come from search_recalls), so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Fetch the full Recall Canary record for a single U.S. federal recall") and pins the lookup key to agency + slug returned by search_recalls. An agent can immediately distinguish detail-fetch from the sibling search tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clearly establishes the follow-up pattern: call this with the agency and slug that search_recalls returned. It also notes the press-release resolution case, which tells the agent why a lookup might return a related recall. There is no explicit when-not, but the workflow context is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources