FDA import alert red lists
Server Details
Is a foreign supplier on an FDA import alert red list, detained at the US border? 14,000+ listings.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- joelp22-maker/referencesource-mcp
- GitHub Stars
- 0
TDQS
Scored across 6 tools
Each tool targets a distinct query shape: get_listing fetches one full record by ID, list_alert_firms returns all firms on an alert, list_import_alerts lists alert summaries, list_recent_listings filters by date, resolve_firm searches by firm name, and verify_quote checks claims. Although several return listing-like records, the input and output focus are clear enough that an agent can select correctly.
All names follow a snake_case verb_noun pattern (list_*, get_*, resolve_*, verify_*), and the verb reflects the operation type. Minor variation in verb choice is justified by different retrieval modes.
Six tools cover read-only access to a focused dataset without redundancy or bloat. The count feels deliberate for the domain.
The surface supports the main workflows: discover alerts, enumerate firms on an alert, search a supplier, view full detail, monitor recent additions, and validate claims. A minor gap is there is no cross-alert product-code or country-wide listing without making broad searches, so it is not a full faceted query API.
Available Tools
6 toolsget_listingGet one red-list entry in fullARead-onlyInspect
Everything FDA prints for one red-list entry: the firm name and address, the import alert and its title, the product code and description, FDA's stated reason (the Notes block — the actual finding, e.g. "Decomposition" or a confirmed laboratory result), and the date published, with the FDA page and a verbatim quote. Record IDs come from resolve_firm or list_alert_firms.
| Name | Required | Description | Default |
|---|---|---|---|
| record_id | Yes | The listing's record id, e.g. "argentina-54-16-molecular-dynamics-sas". |
Output Schema
| Name | Required | Description |
|---|---|---|
| listing | Yes | |
| register | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is known. The description adds value by detailing what the tool returns (the full content of a red-list entry), which is behavioral context beyond the annotations. It doesn't contradict the annotations.
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?
The description is detailed but not bloated; it front-loads the purpose ('Everything FDA prints for one red-list entry') and lists the components in a compact list. It is well-structured and each sentence contributes to understanding the tool's output.
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-record retrieval tool with one parameter and an output schema (not shown but present), the description is complete. It specifies what is returned, where to get the ID, and implicitly confirms no side effects. An agent has everything needed to call 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?
The schema has 100% coverage, including a description and example for the single parameter record_id. The description adds the useful context that IDs come from resolve_firm or list_alert_firms, but this is marginal beyond the schema's example. The baseline of 3 is appropriate for high schema coverage.
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?
The description clearly states the tool's purpose: retrieving a single red-list entry in full, enumerating all the components it returns (firm name/address, alert, product code, reason, date, page, quote). It differentiates from sibling tools like list_alert_firms (which lists firms) and resolve_firm (which resolves IDs) by focusing on a single full entry.
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?
The description explicitly states that record IDs come from resolve_firm or list_alert_firms, providing clear context for when to use this tool (after obtaining an ID from those tools). It doesn't explicitly list exclusion criteria for when not to use it, but the source-of-ID guidance is sufficient for a fetch-by-id operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_alert_firmsList the firms red-listed on one import alertARead-onlyInspect
Who is on this import alert? Returns the firms red-listed on one alert number (from list_import_alerts), newest listing first, optionally narrowed to a country — for example every Vietnamese firm on 16-120, or every firm on 66-57. Each with the FDA page and a verbatim quote.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many to return, 1–20. Default 20. | |
| country | No | Optional country filter. | |
| import_alert_number | Yes | The alert number as FDA prints it, e.g. "16-120" or "66-57". |
Output Schema
| Name | Required | Description |
|---|---|---|
| firms | Yes | |
| coverage | Yes | |
| register | No | |
| firms_matched | Yes | |
| firms_returned | No | |
| import_alert_number | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the read-only annotations, the description discloses useful behavior: results are ordered newest first, can be filtered by country, and each entry includes the FDA page and a verbatim quote. No contradictions with annotations.
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?
Two sentences with no wasted words. The opening question front-loads the purpose, and the second sentence packs ordering, filtering, and output content into a compact, readable form.
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?
With an output schema present and read-only annotations, the description supplies the missing behavioral context: data source, ordering, filtering, and result contents. It could explicitly name sibling alternatives, but an agent has enough to 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 schema already documents all parameters. The description adds value with concrete examples of import_alert_number formats and clarifies that country is an optional narrowing filter on top of an alert number.
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?
The description clearly states the operation: returns firms red-listed on one import alert number. It identifies the resource precisely, ties the input to list_import_alerts, and gives concrete examples that distinguish it from alert-level and firm-resolution siblings.
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?
The description implies the intended workflow by pointing to list_import_alerts as the source of alert numbers and shows how to narrow by country. It does not explicitly contrast with get_listing or resolve_firm, but the usage context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_import_alertsList the import alerts this register coversARead-onlyInspect
Which FDA import alerts are in here, and how many firms are on each? Returns the alert number, FDA's own title for it, the number of firms red-listed, how many countries they are in, and the newest listing date. Call this first to see what can be answered, and to get an alert number for list_alert_firms.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| alerts | Yes | |
| coverage | Yes | |
| register | No | |
| alerts_total | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context: it returns aggregate counts (firms, countries) and a 'newest listing date', and it frames the tool as a discovery/overview step. It doesn't describe pagination or sorting, but for a zero-parameter read-only tool that is a minor gap.
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, each earning its place: the first frames the question the tool answers, the second lists the return fields, the third gives usage sequencing. No filler or repetition of schema/annotation content.
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 zero-parameter, read-only, output-schema-bearing tool, the description is complete. It explains what the tool returns, why an agent would call it, and how it connects to a sibling tool. The output schema covers return structure, so the description doesn't need to restate it.
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?
The tool has zero parameters, so the schema carries no burden. The description compensates by explaining what the output contains and how it should be used, which is the only semantic content an agent needs. Baseline 4 for zero-parameter tools is appropriate.
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?
The description uses a specific verb ('list') with a clear resource ('FDA import alerts this register covers') and immediately distinguishes itself from siblings by naming list_alert_firms as the follow-up tool. It also states the exact fields returned, so an agent knows precisely what this tool produces.
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?
The description explicitly instructs when to call this tool ('Call this first to see what can be answered') and tells the agent to use the resulting alert number for list_alert_firms. This is direct routing guidance that leaves no ambiguity about sequencing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_recent_listingsList firms added to a red list since a dateARead-onlyInspect
Who has FDA red-listed recently? Returns the listings whose published date is on or after a date you give, newest first, optionally for one alert. Use this to watch a category — new detentions on the seafood alerts, say — rather than to look a firm up. The date FDA prints is when the FIRM was added to the alert.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many to return, 1–20. Default 20. | |
| since | Yes | ISO date, e.g. "2025-01-01". FDA prints MM/DD/YYYY; this filter compares an ISO form computed here from that string. | |
| import_alert_number | No | Optional: only this alert. |
Output Schema
| Name | Required | Description |
|---|---|---|
| since | Yes | |
| coverage | Yes | |
| listings | Yes | |
| register | No | |
| listings_matched | Yes | |
| listings_returned | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral nuance—"newest first" ordering and the subtle point that "The date FDA prints is when the FIRM was added to the alert"—which affects how an agent interprets results. No contradictions with annotations.
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, each earning its place: the opening question frames intent, the second states the core function, the third gives usage context, and the fourth clarifies an important date nuance. No filler or redundancy.
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?
Given the output schema exists and annotations cover the read-only safety profile, the description is complete for a correct invocation. It explains the filter semantics, ordering, optional alert scoping, and the FDA date interpretation, leaving no critical gap for this simple list tool.
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 description coverage is 100%, so parameters like since, limit, and import_alert_number are already documented. The description reinforces that filtering is optional per alert and that results are newest first, but it does not add significant new meaning beyond the schema's existing parameter descriptions.
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?
The description states a specific action—"Returns the listings whose published date is on or after a date you give, newest first, optionally for one alert"—with a clear verb and resource. It also distinguishes the tool's niche from firm-lookup workflows via "rather than to look a firm up," making it easy to tell apart from siblings like get_listing or resolve_firm.
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?
The description explicitly says when to use this tool: "Use this to watch a category—new detentions on the seafood alerts, say—rather than to look a firm up." This gives a clear intended context and an exclusion, though it does not name alternative sibling tools directly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_firmFind a firm on an FDA import alert red listARead-onlyInspect
Is this supplier red-listed by FDA? Search the import alert red lists by firm name or part of one (e.g. "Tonga Tiur", "Qingdao", "pharmacy"), optionally narrowed to a country. Returns each listing with the import alert number and name, the country, the date FDA published the listing, and the FDA page and verbatim quote it was read from. A firm can appear more than once — one record per alert it is listed on.
| Name | Required | Description | Default |
|---|---|---|---|
| country | No | Optional country filter, e.g. "CHINA", "Vietnam". FDA prints countries in capitals; matching is case-insensitive. | |
| firm_name | Yes | Firm name or part of one. Case-insensitive substring match. |
Output Schema
| Name | Required | Description |
|---|---|---|
| coverage | Yes | |
| listings | Yes | |
| register | No | |
| firm_name | Yes | |
| listings_matched | Yes | |
| listings_returned | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=true, destructiveHint=false), the description discloses that a firm may appear multiple times with one record per alert, and that results include the FDA page and verbatim quote. These are meaningful behavioral traits not captured in the structured metadata and help set expectations for output shape and interpretation.
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 front-load the core purpose, then cover search behavior, return contents, and the duplicate-record edge case. No wasted words; the question opener immediately conveys intent and each subsequent sentence contributes new information.
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 two-parameter read-only tool with an output schema, the description covers the search mechanics, optional filtering, return fields, and an important edge case. It does not address error handling or authentication, but these are unlikely to be required at this level and the existing content is sufficient for correct invocation.
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 description coverage is 100% and both parameters are already described precisely. The description adds value with concrete examples ('Tonga Tiur', 'Qingdao', 'pharmacy') and clarifies that country filtering is optional, helping agents construct realistic queries beyond the schema's formal wording.
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?
The description states a specific operation: searching FDA import alert red lists by firm name or part of one, optionally narrowed by country. It clearly identifies the resource and the action, and the duplicate-record note helps distinguish it from simpler lookup tools, but it does not explicitly name or contrast sibling tools.
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?
The opening question ('Is this supplier red-listed by FDA?') implies when to use the tool, and the optional country filter indicates a common usage variation. However, it provides no explicit guidance about when to prefer this tool over siblings like list_alert_firms or verify_quote, nor any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_quoteCheck a claimed import-alert fact against the registerARead-onlyInspect
Is this right? Check a claim about a red-list entry — the alert number a firm is on, its country, the date it was published, FDA's stated reason — against the register instead of trusting it. Says whether the claim matches a stored value, appears only in the verbatim FDA quote, or differs (and then what FDA's page says instead).
| Name | Required | Description | Default |
|---|---|---|---|
| field | No | Which field the claim is about, if you know it. Without it, every stored field of the record is checked. | |
| record_id | Yes | The listing's record id, from resolve_firm or list_alert_firms. | |
| claimed_value | Yes | The value to check, exactly as claimed, e.g. "Terminated" or "2026-10-29". |
Output Schema
| Name | Required | Description |
|---|---|---|
| match | No | |
| record | No | |
| verdict | Yes | matches_record: the claim equals a stored value (match.match_type says how exactly). matches_quote: it appears in the verbatim source quote but is not a stored value. differs: the record was found and says something else — stored_values shows what. not_found: the record was not located, which says nothing about whether the claim is true. |
| attestation | Yes | |
| quote_source | No | |
| claimed_value | Yes | |
| stored_values | No | |
| in_source_quote | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and destructiveHint, so safety is covered. The description adds clear behavioral detail: it says the tool reports whether the claim matches a stored value, appears only in the verbatim FDA quote, or differs, and if it differs, what the FDA page says instead. This goes beyond the annotations and gives the agent a precise expectation of the tool's behavior.
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?
The description is two sentences with no filler. The opening question immediately orients the agent, the resource and scope are stated, and the outcome is explained. Every phrase 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?
For a 3-parameter tool with an output schema, the description fully covers what the tool does, what it checks, and what it returns. It does not need to repeat return types since the output schema exists, and the sibling tools are clearly different. Nothing essential is missing for correct invocations.
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 each parameter (field, record_id, claimed_value) already has descriptions. The description adds a list of example fields (alert number, country, date, reason) that map to the 'field' parameter, which is mildly helpful but not essential. Since the schema carries the burden, a baseline score of 3 is appropriate.
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?
The description states a specific verb ('check'), resource ('a red-list entry' or 'the register'), and lists the fields it covers (alert number, country, date, reason). It also explains the distinct outcome (matches, verbatim-only, or differs with FDA's stated value), which clearly distinguishes it from sibling tools that list or resolve firms.
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?
The description implies usage: check a claim against the register 'instead of trusting it.' It gives a clear context for when to call it (verifying a fact) but does not explicitly name alternatives or conditions. It does not specify when not to use it, though the context is unambiguous given the sibling set.
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.
6 tool updates
- First observed
get_listing - First observed
list_alert_firms - First observed
list_import_alerts - First observed
list_recent_listings - First observed
resolve_firm - First observed
verify_quote
Related MCP Connectors
Federal contracts, FDA recalls, business registrations, Amazon products — B2B intel.
AI-powered organic supply chain verification: certification, OFAC, FDA import checks.
Screen people & companies against 12 US sanctions & exclusion lists (OFAC, LEIE, SAM, Medicaid).
FDA inspection outcomes, Form 483 observations, compliance actions and import refusals for drug…
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables querying FDA inspection outcomes, Form 483 observations, compliance actions, and import refusals, plus a combined firm risk profile, from the FDA Data Dashboard.MIT
- AlicenseAqualityBmaintenanceEnables querying FDA drug shortages and recalls joined with federal contract data to assess supplier exposure, with confidence-level evidence and no signup.5MIT
- AlicenseNot gradedqualityDmaintenanceEnables checking food additive safety, nutrition profiles, pesticide residues, and ingredient lists with regulatory flags and dietary compatibility. All data is sourced from authoritative bodies like JECFA, EFSA, and FDA.MIT
- AlicenseNot gradedqualityCmaintenanceEnables US import compliance by providing CBP customs ruling letter searches and antidumping/countervailing duty order lookups, answering how Customs has classified products and whether trade-remedy duties apply.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.