epitaxy

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

Should I use this

Quality & Safety

A
Description quality
96%
Schema completeness
65%
Naming quality
100%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~483Tokens (tool definitions)
~440 BTypical response size
Minimal attention impact (0.38% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

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

Runnable packages

pypiepitaxy-mcp0.1.4stdio

Remote endpoints

https://drugs.crossgrain.xyz/v1/mcpstreamable-http

What it can do

Tool inventory

Tools (5)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢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.

Input Schema

{
  "type": "object",
  "properties": {}
}
🟢list_drug_shortages(status, generic_name, company_id, limit)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "description": "for example Current or Resolved"
    },
    "generic_name": {
      "type": "string"
    },
    "company_id": {
      "type": "string"
    },
    "limit": {
      "type": "integer"
    }
  }
}
🟢list_drug_recalls(classification, company_id, limit)

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

Input Schema

{
  "type": "object",
  "properties": {
    "classification": {
      "type": "string"
    },
    "company_id": {
      "type": "string"
    },
    "limit": {
      "type": "integer"
    }
  }
}
🟢list_federal_drug_contracts(agency, company_id, limit)

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

Input Schema

{
  "type": "object",
  "properties": {
    "agency": {
      "type": "string"
    },
    "company_id": {
      "type": "string"
    },
    "limit": {
      "type": "integer"
    }
  }
}
🟢get_supplier_exposure(award_id, company_id, min_confidence, limit)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "award_id": {
      "type": "string",
      "description": "federal award identifier"
    },
    "company_id": {
      "type": "string"
    },
    "min_confidence": {
      "type": "string",
      "enum": [
        "probable",
        "weak"
      ],
      "description": "weak needs a paid key"
    },
    "limit": {
      "type": "integer"
    }
  }
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded5 tools
verifiedversion not recorded5 tools
verifiedversion not recorded5 tools