Retrieve FDA docket comments, attachments and draft/final guidance for reviewable analysis.
MCPpedia last refreshed this data
com.blackswancausallabs/regintel-mcp is an MCP server that retrieve FDA docket comments, attachments and draft/final guidance for reviewable analysis. Its tool list has not been published yet over stdio, sse and http, requires no API key, and scores 38/100 on MCPpedia's security, maintenance and efficiency rubric.
Config is the same across clients - only the file and path differ.
{
"mcpServers": {
"com-blackswancausallabs-regintel-mcp": {
"url": "<see-readme-for-url>"
}
}
}Are you the author?
Add this badge to your README to show your security score and help users find safe servers.
Retrieve FDA docket comments, attachments and draft/final guidance for reviewable analysis.
This server supports HTTP transport. Be the first to test it - help the community know if it works.
Five weighted categories - click any category to see the underlying evidence.
No known CVEs.
No package registry to scan.
Be the first to review
Have you used this server?
Share your experience - it helps other developers decide.
Sign in to write a review.
Others in health
MCP server for the ClinicalTrials.gov v2 API. Search trials, retrieve study details and results, and match patients to eligible trials.
Search ClinicalTrials.gov: find studies, retrieve results, match patients to candidate trials.
MCP server providing seamless access to FHIR APIs for AI tools and healthcare applications
Control FL Studio with Claude: in-DAW mixing, diagnosis, routing, and composition.
MCP Security Weekly
Get CVE alerts and security updates for com.blackswancausallabs/regintel-mcp and similar servers.
Start a conversation
Ask a question, share a tip, or report an issue.
Sign in to join the discussion.
Regulatory intelligence from FDA regulations.gov dockets: who commented, what they asked for, and what changed between the draft and final guidance.
Black Swan Causal Labs · blackswancausallabs.com
Retrieval lives in the MCP server. Judgment lives in skills. Humans sit at the checkpoints.
| Layer | Component | Status |
|---|---|---|
| Data | regintel-mcp server (this repo, MIT) | Phase 1 built. Fetch, cache, extract, diff. No interpretation. |
| Method | skills: submitter-taxonomy, comment-theming, draft-final-concordance | Built |
| Orchestration | /docket-analysis <docketId> with 4 human checkpoints | Built; first run on FDA-2020-D-2307 |
| Output | Docket Lens explorer (reads one analysis.json; PolyForm Noncommercial) | Built for FDA-2020-D-2307 |
Python 3.11 or later.
git clone https://github.com/Black-Swan-Causal-Labs/regintel-mcp.git
cd regintel-mcp
python3 -m venv .venv && .venv/bin/pip install -e .
cp .env.example .env # then paste your key into .env
API key: get a free key at https://open.gsa.gov/api/regulationsgov/ and put it in .env as REGULATIONS_GOV_API_KEY=.... .env is gitignored. The key is sent only as the X-Api-Key header and never appears in logs, the cache or any output. DEMO_KEY is fine for single lookups but too rate-limited for a full corpus pull. Personal keys allow 1,000 requests/hour.
Register with an MCP client. MCP is an open standard, so the server works with any compatible assistant (Claude, OpenAI Codex, others). For Claude Code, from the repo directory:
claude mcp add regintel-mcp -- "$(pwd)/.venv/bin/python" -m regintel_mcp
When installed as a Claude plugin, .mcp.json starts the server from the plugin root.
Every tool reads the local SQLite cache (data/cache.sqlite) first. It only touches the network on a cache miss or when called with refresh=true.
| Tool | Does |
|---|---|
search_dockets(query, agency="FDA", docket_type?, limit=25) | Keyword search over dockets |
get_docket(docket_id) | Docket metadata and total comment count |
list_documents(docket_id) | Notices, draft and final guidance, meeting material, with every file URL |
list_comments(docket_id, include_withdrawn=false) | All comments, paginated internally. Flags is_stub, duplicate_of and agency_duplicate_count (flags only; nothing is dropped) |
get_comment(comment_id) | Body, submitter fields, attachments and extracted attachment text |
build_corpus(docket_id, with_attachments=true) | Pulls every comment and attachment into the cache. Resumable. Reports stubs, duplicates, OCR needs and failures |
get_guidance_text(ref) | A guidance document (doc ID or URL) split into numbered sections |
diff_guidance(draft_ref, final_ref) | Section-aligned draft-vs-final diff with paragraph changes and moved-paragraph detection |
export_corpus(docket_id) | Writes output/<docket>/corpus.jsonl for skills and subagents |
For long pulls outside a chat: .venv/bin/python -m regintel_mcp build-corpus FDA-2020-D-2307.
How the diff works: the text layer is extracted with pdfplumber. Running headers, draft line numbers, footnotes and the table of contents are removed. Sections are split on the guidance's own Roman, letter and number headings, then matched draft→final by heading (parent-qualified first) and then by heading plus text similarity. Paragraphs are diffed within each matched section, and paragraphs that moved to a different section are labelled. Everything is deterministic: there are no model calls in the server.
API behaviour verified against the live service is recorded in docs/api-notes.md.
Docket Lens (explorer/template.html) is a single page that reads one analysis.json and shows three linked views: who spoke, what they asked for (a themes × submitter-type heatmap