FDA recall report (drug, food, device)

$0.60 per call · USDC via x402 · POST /v1/recall-report

Name a drug, food, ingredient, brand or medical device and get one cited FDA recall report: every matching enforcement record across the drug, food and device feeds (firm, class I/II/III, status, reason, distribution, date), organized and explained, with a downloadable records appendix. Send POST /v1/recall-report with the required field query and pay $0.60 per call over x402 with USDC on an EVM chain. It returns a JSON object with report, query, sources, tables and meta.

Live openFDA data, not medical advice. USDC (x402/MPP) or card (Stripe). Not cached.

Category: LLM gateway · Tags: fda recall drug food device safety report openfda

TRY IN PLAYGROUND →

Parameters

NameTypeRequiredDescription
querystringyesA drug, food, ingredient, brand or medical device to search FDA recalls for, e.g. "losartan", "peanut butter", "insulin pump". Also accepted as q, search, term, keyword, question.
scopestring (one of: all, drug, food, device)noWhich FDA enforcement feeds to search (default all).

Example request

curl -i -X POST https://agent402.tools/v1/recall-report \
  -H "Content-Type: application/json" \
  -d '{"query":"losartan"}'

Without payment this returns HTTP 402 Payment Required with the exact price for recall-report; any x402 v2 or MPP client pays it and retries.

Example response

{
  "report": "# FDA Recall Report: losartan\n\n**7 records** across 3 FDA enforcement feeds · 2 ongoing\n\n## Snapshot\n...\n\n## Sources\n[1] FDA drug recalls matching \"losartan\" - openFDA enforcement - https://api.fda.gov/drug/enforcement.json?...",
  "query": "losartan",
  "sources": [
    {
      "n": 1,
      "title": "FDA drug recalls matching \"losartan\" - openFDA enforcement",
      "url": "https://api.fda.gov/drug/enforcement.json?search=product_description%3A%22losartan%22&limit=20"
    }
  ],
  "tables": [
    {
      "name": "recalls",
      "label": "FDA recall records",
      "columns": [
        "Feed",
        "Initiated",
        "Class",
        "Status",
        "Firm",
        "Product",
        "Reason",
        "Distribution",
        "Recall number"
      ],
      "rows": [
        [
          "drug",
          "2019-11-08",
          "Class II",
          "Terminated",
          "Torrent Pharmaceuticals",
          "Losartan Potassium Tablets",
          "Presence of an impurity",
          "Nationwide",
          "D-123-2020"
        ]
      ]
    }
  ],
  "meta": {
    "tier": "recall-report",
    "query": "losartan",
    "scope": "all",
    "records": 7,
    "ongoing": 2,
    "sources_cited": 3,
    "synthesis_model": "anthropic/claude-opus-5"
  }
}
FieldTypeAlways presentIn the example
reportstringyes# FDA Recall Report: losartan **7 records** across 3 FDA enforcement feeds ·...
querystringyeslosartan
sourcesarray of objectsyes1 item in the example
tablesarray of objectsyes1 item in the example
metaobjectyes7 fields: tier, query, scope, records, ongoing, sources_cited

From an MCP client

catalog.call {
  "slug": "recall-report",
  "params": {
    "query": "losartan"
  }
}

The hosted connector at https://agent402.tools/mcp needs a payment for recall-report; the stdio package pays it from a wallet or from AGENT402_CREDITS_KEY. Local install: npx -y agent402-mcp.

Errors and behavior

Paid call (JavaScript agent)

import { wrapFetchWithPayment } from "@x402/fetch";
import { x402Client } from "@x402/core/client";
import { registerExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";

const client = new x402Client();
client.setSpendControls?.(false); // keep your own spending ceiling in code
registerExactEvmScheme(client, { signer: privateKeyToAccount(KEY) });
const payFetch = wrapFetchWithPayment(fetch, client);

const res = await payFetch("https://agent402.tools/v1/recall-report", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    "query": "losartan"
  }),
});

Related tools

SEC filing report (what the company just filed)

$0.85 · POST /v1/filing-report

Name a US ticker and get one cited report on what the company just filed with the SEC: every filing in EDGAR's index for…

Insider flow report (Form 4 transactions)

$0.60 · POST /v1/insider-report

Name a US ticker and get one cited insider-flow report: every Form 4 against the company in the window with the actual t…

LinkedIn article, ready to publish (research + copy + sized images)

$1.10 · POST /v1/linkedin-article

Hand over a topic and get a publish-ready LinkedIn article back: grounded web research with cited sources, three headlin…

Solana token due-diligence brief

$0.60 · POST /v1/token-brief

Hand over a Solana SPL mint address and get one cited due-diligence brief: what the token is, whether the mint and freez…

FDA medical device recalls

$0.004 · GET /api/device-recalls

Search FDA medical-device recall / enforcement records (openFDA): recalling firm, classification (Class I/II/III), reaso…

FDA drug recalls

$0.004 · GET /api/drug-recalls

Search FDA drug recall / enforcement records (openFDA): recalling firm, classification (Class I/II/III), reason, distrib…