Epitaxy

xyz.crossgrainPublished by crossgrain.xyzOfficial publisherv0.1.4Updated Oct 24, 2026

Federal drug shortages and recalls joined to the federal contracts that buy those drugs.

VerifiedStreamable HTTPWeb executableData & AnalyticsBusiness & Commerce

Overview

AI-generated overview

Epitaxy exposes FDA drug shortages and recalls joined to US federal drug contracts, so an assistant can look up suppliers with shortage or recall exposure.

What you can do
Check data freshness, live segment count and last run state before relying on results. List current and resolved FDA drug shortages, filtered by status, generic name or company. List FDA drug recalls and enforcement reports, filtered by classification or company. List US federal drug contracts (product service code 6505) from USAspending, filtered by agency or company. Retrieve supplier exposure rows joining a federal contract to a supplier with an FDA shortage or recall, each with a confidence value and match method.
When to use it
Useful when investigating pharmaceutical supply risk, drug shortage or recall exposure among government suppliers, or federal drug procurement, and you want the join done for you with explicit confidence levels rather than raw source data.
Requirements
Works as a remote streamable HTTP endpoint or as a local stdio process via the epitaxy-mcp PyPI package (run with uvx). No signup or key is needed for the free tier; an optional EPITAXY_API_KEY unlocks paid tiers. EPITAXY_API_URL overrides the default base URL. Network access to the API host is required.
Before you install
Free tier is limited to 20 rows, omits evidence and weak matches, and delays data by 24 hours. Cross-source joins are never exact, so confidence values (exact, probable, weak) must be read before drawing conclusions. Paid plans cost money (monthly subscriptions, per-call USDC payments, or a one-off bulk purchase); the API key is a secret.

Installation

In SourceWeft

  1. Open Epitaxy in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/xyz.crossgrain%2Fepitaxy/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "epitaxy": {
      "type": "http",
      "url": "https://drugs.crossgrain.xyz/v1/mcp"
    }
  }
}

README

epitaxy

mcp-name: xyz.crossgrain/epitaxy

Federal drug shortages and recalls, joined to the federal contracts that buy those drugs. One call, no signup.

What it claims: this government supplier has an active FDA shortage or recall. What it does not claim: that a specific contract supplies a specific drug. Federal contract descriptions average 47 characters and almost never name the drug, so we say so instead of pretending otherwise.

Try it now, no key

bash
curl https://drugs.crossgrain.xyz/v1/exposure?limit=5

One row of the answer, shortened:

json
{"exposure_id": "0026624dec7b6d9f", "award_id": "SPE2DP25F109W", "company_id": "a4fdd4a7530f4962", "company_name": "TEVA PHARMACEUTICALS USA, INC.", "company_key": "teva pharmaceuticals usa", "shortage_id": "022c478fb3af28c4", "confidence": "probable", "match_method": "company_name_normalized"}

MCP

Remote, nothing to install:

json
{ "mcpServers": { "epitaxy": { "url": "https://drugs.crossgrain.xyz/v1/mcp" } } }

Local, stdio:

json
{ "mcpServers": { "epitaxy": { "command": "uvx", "args": ["epitaxy-mcp"] } } }

Tools: get_data_freshness, list_drug_shortages, list_drug_recalls, list_federal_drug_contracts, get_supplier_exposure.

Read the confidence field, always

valuemeaning
exactmatch on a shared identifier, here an NDC inside FDA data
probablenormalized company name, or a drug name token in the contract text
weakanything softer, an indication only

Matching on both company and drug at once is not promoted to exact. Cross source joins are never exact, because FDA and USAspending share no identifier. Anyone claiming otherwise has a different source or is guessing.

Free tier

Works forever, no key, no signup. Returns at most 20 rows, without the evidence field, without weak matches, and with data delayed by 24 hours. Nothing is stored: no counters, no IP addresses. If a version that old does not exist yet, you get the oldest one available, so the free tier is never empty while data exists.

Addressing

These two addresses are the same segment and both work permanently:

https://drugs.crossgrain.xyz/v1/exposurehttps://drugs.crossgrain.xyz/drugs/v1/exposure

Later segments arrive as /devices/v1/..., /food/v1/... and so on. A path whose segment is reserved but not live yet answers 404 with segment_not_live, it never returns another segment's data. An address that has been published is never withdrawn.

Paid

planpricecontents
Starter29 USD/mo10 000 calls
Pro99 USD/mo100 000 calls plus daily delta feed
x4020.004 USD/callUSDC on Base, no signup
Bulk dump199 USDone off, Stripe only

Sources and licence

  • openFDA, public domain, CC0 1.0 Universal
  • USAspending, public domain, code under CC0

Data is unvalidated and must not be used for medical decisions. This project is MIT licensed. Docs: https://drugs.crossgrain.xyz/docs

Source: README.md at commit 934d45b

Tools

5

get_data_freshness

Returns when the data was last activated, how many segments are live, and the state of the last run. Call this first when you need to know whether the data is fresh.

Takes no parameters.

list_drug_shortages

Current and resolved US drug shortages as reported by the FDA. Each row carries the generic name, the reporting company and its company_id. Filters: status, generic_name, company_id, limit.

Parameterslimitstatuscompany_idgeneric_name

list_drug_recalls

FDA drug recalls and enforcement reports. Filters: classification (Class I, II, III), company_id, limit.

Parameterslimitcompany_idclassification

list_federal_drug_contracts

US federal contracts for drugs, product service code 6505, from USAspending. Filters: agency, company_id, limit.

Parameterslimitagencycompany_id

get_supplier_exposure

The join: a federal contract whose supplier has an FDA shortage or recall. Every row carries company_name, confidence (exact, probable or weak) and match_method. A cross source join is NEVER exact, because FDA and USAspending share no identifier. The claim is: this government supplier has an active FDA shortage or recall. It does NOT claim that this contract delivers that drug. Without a key you get exact and probable matches only, at most 20 rows, without the evidence field.

Parameterslimitaward_idcompany_idmin_confidence

Version history

1
  1. v0.1.4LatestSep 16, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts