Pod

Available as Markdown and JSON. Pod is also available over MCP.

Reported issues for openfda-mcp-server

Pod holds 16 of 16 GitHub reports that passed its relevance review. This can include external user reports, maintainer-confirmed bugs, and concrete feature gaps. Treat them as evidence to inspect, not a count of distinct defects.

Back to openfda-mcp-server.

Most discussed

feat(drug_profile): accept drug_name as an alias of drug

Use case

openfda_drug_profile takes the drug as drug. A caller that sends { "drug_name": "aspirin" } gets -32602 (drug: expected string, received undefined, Unrecognized key: "drug_name"). drug_name is the name a model reaches for first, its meaning is not in doubt, and the tool has only the one parameter it could map to.

Proposed behavior

Accept drug_name (and name) as aliases of drug, so the call succeeds instead of costing a retry. The advertised schema keeps…

Read the thread · 2026-09-18 · closed · 2 comments

bug(count_values): uncountable fields lead to a suffix-toggle recovery loop

Server version

0.7.7

mcp-ts-core version

0.13.6

Runtime

Bun

Runtime version

Bun 1.4.0

Transport

HTTP (Streamable HTTP)

Description

Some advertised fields cannot be aggregated by openfda_count_values in either bare or .exact form. The bare field answers a 5xx illegal_argument_exception, and .exact answers 404 Nothing to count. Each not_aggregatable message suggests the other form, then falls back to openfda_describe_fields. That tool lists these…

Read the thread · 2026-08-11 · closed · 2 comments

bug(get_drug_label): selected table sections return raw SPL markup

Server version

0.7.8

mcp-ts-core version

0.13.6

Runtime

Bun

Runtime version

Bun 1.4.0

Transport

HTTP (Streamable HTTP)

Description

openfda_get_drug_label writes SPL *_table sections into content[] as raw SPL table markup with encoded entities. format() joins every section value verbatim, so a caller that selects a table section (or follows an outline that recommends one) must parse <table>, <content styleCode>, colspan/rowspan, and &#x2020;…

Read the thread · 2026-08-11 · closed · 2 comments

bug(search_recalls): staged device/recall rows drop identity and status columns

Server version

0.7.8

mcp-ts-core version

0.13.6

Runtime

Bun

Runtime version

Bun 1.4.0

Transport

HTTP (Streamable HTTP)

Description

openfda_search_recalls with stage: true stages rows against RECALLS_CANVAS_SCHEMA, which lists only enforcement fields. The canvas ignores fields outside the schema, so staged device/recall rows lose their identity (product_res_number), status (recall_status), root_cause_description, and event_date_* columns. SQL…

Read the thread · 2026-09-22 · closed · 1 comment

bug(count_values): "Nothing to count" on a countable field reports not_aggregatable

Server version

0.7.7

mcp-ts-core version

0.13.6

Runtime

Bun

Runtime version

Bun 1.4.0

Transport

stdio

Description

openfda_count_values reports not_aggregatable for a countable field when the search matches only records that lack the field. openFDA answers that case with 404 Nothing to count, which classifyError maps to not_aggregatable with a "drop .exact" correction. The field counts fine; the matched set simply carries no values for it, so the…

Read the thread · 2026-09-22 · closed · 1 comment

bug(canvas): staging search tools don't declare canvas_not_found or canvas_capacity_exhausted

Server version

0.7.5

mcp-ts-core version

0.13.6

Runtime

Bun

Runtime version

Bun 1.4.0

Transport

stdio

Description

The eight search tools that stage to DataCanvas (openfda_search_*, openfda_lookup_ndc) accept a canvas_id, but their errors[] contracts omit the two failures canvas.acquire() raises: canvas_not_found (a well-formed id that expired or never existed) and canvas_capacity_exhausted (minting a canvas at the tenant cap). Both reach the…

Read the thread · 2026-09-22 · closed · 1 comment

feat(canvas): staged responses never name openfda_dataframe_describe

Use case

Every openFDA search tool that stages to a DataCanvas hands back a canvas_id pointing only at openfda_dataframe_query — openfda_dataframe_describe is never named, in the enrichment notice, content[], the output-field descriptions, or any tool's own description. An agent holding the handle has the table name but no route to the column names, so it writes SQL against a schema it hasn't seen — a field the inline preview renders out of a JSON block…

Read the thread · 2026-08-13 · closed · 1 comment

bug(pagination): exhausted pages reset known totals to zero

Server version

0.7.7

mcp-ts-core version

0.13.6

Runtime

Bun

Runtime version

Bun 1.4.0

Transport

HTTP (Streamable HTTP)

Description

A search page requested past the end of its result set returns totalResults: 0. openFDA answers any skip at or beyond the match count with the same 404 No matches found! it uses for a zero-match query, and OpenFdaService.classifyError turns that 404 into meta.total: 0 without recovering the real total. The response then…

Read the thread · 2026-08-11 · closed · 1 comment

Most recent

feat(search_recalls): retain affected-lot codes in enforcement staging

Use case

A pharmacist analyzing staged drug recalls needs to identify affected lots and expiry dates. Enforcement records return code_info, but the staged table discards it, so that step cannot be completed through SQL.

Proposed behavior

Add nullable code_info to the enforcement staging schema in openfda_search_recalls and expose it through openfda_dataframe_describe.

Example: stage {"category":"drug","search":"openfda.generic_name:\"METFORMIN HYDROCHLORIDE\"","limit":2}.…

Read the thread · 2026-09-30 · open · 0 comments

feat(search): bounded retrieval for oversized single records

Use case

An exploratory openfda_search_adverse_events call can return a single 100 KB record even with limit:1. Reducing the page size cannot help a client that needs a bounded view of that report.

Related: #39

Proposed behavior

Add selective record-field retrieval or an outline for an oversized single record, retaining its identity and a concrete re-call route. Keep both response surfaces aligned and never render a real match as an empty page. Always disclose an over-budget…

Read the thread · 2026-09-30 · open · 0 comments

bug(search_animal_events): masked brands break the advertised search

Server version

0.7.9

mcp-ts-core version

0.13.6

Runtime

Bun

Runtime version

1.4.2

Transport

HTTP (Streamable HTTP)

Description

openfda_search_animal_events advertises drug.brand_name:"Bravecto", but the provider masks veterinary brands as MSK. Empty-result recovery recommends the same masked field and does not explain the limitation.

Steps to reproduce

  1. Search animal.species:"Dog" AND drug.brand_name:"Bravecto": zero reports.
  2. Count…

Read the thread · 2026-09-30 · open · 0 comments

bug(sort): unsupported directions silently return unsorted results

Server version

0.7.9

mcp-ts-core version

0.13.6

Runtime

Bun

Runtime version

1.4.2

Transport

HTTP (Streamable HTTP)

Description

The shared sort pattern accepts unsupported directions. openFDA returns success while ignoring the requested ordering; HTTP 200 does not establish that sorting worked.

Related: #38

Steps to reproduce

Call openfda_search_recalls with:

{"category":"drug","search":"openfda.generic_name:\"METFORMIN…

[Read the thread](https://github.com/cyanheads/openfda-mcp-server/issues/64) · 2026-09-30 · open · 0 comments

### bug(drug_profile): total excludes reports without seriousness

### Server version

0.7.9

### mcp-ts-core version

0.13.6

### Runtime

Bun

### Runtime version

1.4.2

### Transport

HTTP (Streamable HTTP)

### Description

`openfda_drug_profile` computes `adverse_events.total` by summing `serious` count buckets, silently excluding reports without that field.

### Steps to reproduce

1. Call `openfda_drug_profile` with `{"drug":"metformin"}`.
2. Search adverse events with…

[Read the thread](https://github.com/cyanheads/openfda-mcp-server/issues/63) · 2026-09-30 · open · 0 comments

### bug(field-catalog): correct outcome codes and date/identifier meanings

### Server version

0.7.9

### mcp-ts-core version

0.13.6

### Runtime

Bun

### Runtime version

1.4.2

### Transport

HTTP (Streamable HTTP)

### Description

`openfda_describe_fields` supplies incorrect field meanings that can misdirect queries and interpretation.

### Steps to reproduce

Call the tool for `drug/event`, `drug/shortages`, and `drug/ndc`.

### Actual behavior

- `patient.reaction.reactionoutcome`: `4=fatal, 5=unknown`; code 6 is omitted.
- Shortage date notes say YYYYMMDD,…

[Read the thread](https://github.com/cyanheads/openfda-mcp-server/issues/62) · 2026-09-30 · open · 0 comments

### bug(search_recalls): device recalls render enforcement fields as N/A

### Server version

0.7.3

### mcp-ts-core version

0.11.1

### Runtime

Bun

### Runtime version

Bun 1.3.14

### Transport

HTTP (Streamable HTTP)

### Description

`openfda_search_recalls` formats `device/recall` records with `device/enforcement`'s field names. `device/recall` has no `recall_number`, `status`, `voluntary_mandated`, or hazard-classification field — identity is `product_res_number`, status is `recall_status`, and `openfda.device_class` is a distinct device-class rating, not…

[Read the thread](https://github.com/cyanheads/openfda-mcp-server/issues/46) · 2026-08-11 · closed · 1 comment

### bug(count_values): exact-limit result sets report false truncation

### Server version

0.7.7

### mcp-ts-core version

0.13.6

### Runtime

Bun

### Runtime version

Bun 1.4.0

### Transport

HTTP (Streamable HTTP)

### Description

`openfda_count_values` marks every response whose row count equals `limit` as truncated, even when the result set is exhaustive. A binary field then claims that more distinct values may exist when both values are already present.

Related: #7

### Steps to reproduce

1. Call `openfda_count_values` with `{ "endpoint": "drug/event",…

[Read the thread](https://github.com/cyanheads/openfda-mcp-server/issues/44) · 2026-08-11 · closed · 1 comment

The remaining reports are on [the project's issue tracker](https://github.com/cyanheads/openfda-mcp-server/issues).