{"openapi":"3.1.0","info":{"title":"Open FDA Food Tobacco and Animal (BYOK) API","version":"0.1.0","description":"Open FDA Food Tobacco and Animal (BYOK) lets an AI assistant read your own Open FDA Food Tobacco and Animal data through the Open FDA Food Tobacco and Animal API with a key you supply (openFDA API key). Read-only: 5 tools (search_food_adverse_events, search_food_recalls, search_tobacco_problem_reports, search_animal_drug_adverse_events, count_safety_reports). The BYOK key travels with each...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-openfda-food-tobacco-animal.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-openfda-food-tobacco-animal/docs"},"termsOfService":"https://connectorbay.com/byok-openfda-food-tobacco-animal/terms"},"servers":[{"url":"https://byok-openfda-food-tobacco-animal.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-openfda-food-tobacco-animal/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/search_food_adverse_events":{"post":{"operationId":"search_food_adverse_events","summary":"Search FDA food, dietary supplement and cosmetic adverse event reports (CAERS): report number, dates, products involved,","description":"Search FDA food, dietary supplement and cosmetic adverse event reports (CAERS): report number, dates, products involved, reactions and outcomes. Reports are unverified and do not show that a product caused the event. Use for \"What adverse events were reported for energy drinks\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"search":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Search expression field:term, for example products.name_brand:\"energy drink\". Combine with AND / OR (written with spaces), put quotes around phrases, and use ranges like decision_date:[20240101 TO 20241231] on date fields (YYYYMMDD).","title":"Search"},"sort":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}],"default":null,"description":"Sort expression field:asc or field:desc, for example date_created:desc.","title":"Sort"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":5,"description":"Records to return, 1 to 100.","title":"Limit"},"skip":{"anyOf":[{"maximum":25000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of matching records to skip, 0 to 25000; use with limit to page.","title":"Skip"}},"title":"search_food_adverse_eventsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/search_food_recalls":{"post":{"operationId":"search_food_recalls","summary":"Search FDA food enforcement reports (recalls): recall number, status, classification (Class I to III), product descripti","description":"Search FDA food enforcement reports (recalls): recall number, status, classification (Class I to III), product description, reason for recall, recalling firm, location, distribution pattern and key dates. Use for \"Which food recalls in 2025 were Class I because of undeclared allergens\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"search":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Search expression field:term, for example classification:\"Class I\" AND reason_for_recall:allergen AND report_date:[20250101 TO 20251231]. Combine with AND / OR (written with spaces), put quotes around phrases, and use ranges like decision_date:[20240101 TO 20241231] on date fields (YYYYMMDD).","title":"Search"},"sort":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}],"default":null,"description":"Sort expression field:asc or field:desc, for example report_date:desc.","title":"Sort"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":5,"description":"Records to return, 1 to 100.","title":"Limit"},"skip":{"anyOf":[{"maximum":25000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of matching records to skip, 0 to 25000; use with limit to page.","title":"Skip"}},"title":"search_food_recallsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/search_tobacco_problem_reports":{"post":{"operationId":"search_tobacco_problem_reports","summary":"Search FDA reports of problems with tobacco products: report id, submission date, products, reported health problems and","description":"Search FDA reports of problems with tobacco products: report id, submission date, products, reported health problems and product problems. Reports are unverified. Use for \"What problems were reported with e-cigarettes\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"search":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Search expression field:term, for example tobacco_products:\"E-cigarette\". Combine with AND / OR (written with spaces), put quotes around phrases, and use ranges like decision_date:[20240101 TO 20241231] on date fields (YYYYMMDD).","title":"Search"},"sort":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}],"default":null,"description":"Sort expression field:asc or field:desc, for example date_submitted:desc.","title":"Sort"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":5,"description":"Records to return, 1 to 100.","title":"Limit"},"skip":{"anyOf":[{"maximum":25000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of matching records to skip, 0 to 25000; use with limit to page.","title":"Skip"}},"title":"search_tobacco_problem_reportsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/search_animal_drug_adverse_events":{"post":{"operationId":"search_animal_drug_adverse_events","summary":"Search FDA adverse event reports about animal drugs: report id, dates, reporter type, seriousness, number of animals aff","description":"Search FDA adverse event reports about animal drugs: report id, dates, reporter type, seriousness, number of animals affected, outcome, reactions, animal and drug details. Reports are unverified. Use for \"What adverse events were reported in dogs for carprofen\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"search":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Search expression field:term, for example drug.active_ingredients.name:\"carprofen\" AND animal.species:\"Dog\". Combine with AND / OR (written with spaces), put quotes around phrases, and use ranges like decision_date:[20240101 TO 20241231] on date fields (YYYYMMDD).","title":"Search"},"sort":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}],"default":null,"description":"Sort expression field:asc or field:desc, for example original_receive_date:desc.","title":"Sort"},"limit":{"anyOf":[{"maximum":25,"minimum":1,"type":"integer"},{"type":"null"}],"default":3,"description":"Records to return, 1 to 25.","title":"Limit"},"skip":{"anyOf":[{"maximum":25000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of matching records to skip, 0 to 25000; use with limit to page.","title":"Skip"}},"title":"search_animal_drug_adverse_eventsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/count_safety_reports":{"post":{"operationId":"count_safety_reports","summary":"Count how often each value of a field occurs among matching reports in one dataset (food, tobacco or animal and veterina","description":"Count how often each value of a field occurs among matching reports in one dataset (food, tobacco or animal and veterinary), for example the most frequent food reactions. Returns term and count pairs. Use for \"What are the most frequent reactions in food adverse event reports\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"category":{"description":"Endpoint group: food, tobacco or animalandveterinary.","enum":["food","tobacco","animalandveterinary"],"title":"Category","type":"string"},"dataset":{"description":"Dataset: event (food and animalandveterinary), enforcement (food recalls) or problem (tobacco).","enum":["event","enforcement","problem"],"title":"Dataset","type":"string"},"count":{"description":"Field to count, for example reactions.exact for food events or reported_health_problems.exact for tobacco problems.","maxLength":120,"title":"Count","type":"string"},"search":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Optional search expression restricting which records are counted, for example date_created:[20240101 TO 20241231].","title":"Search"},"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many distinct values to return, 1 to 1000 (most frequent first).","title":"Limit"}},"required":["category","dataset","count"],"title":"count_safety_reportsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}