BioCatalystFeed
This server is a biotech/pharma catalyst monitoring toolkit that queries ClinicalTrials.gov, openFDA, NIH RePORTER, PubMed/Europe PMC/preprints, SEC EDGAR, EMA and the Federal Register, and tracks changes via saved snapshots.
Clinical trials: search by sponsor, condition, intervention, phase, status or change date (with
exclude/rank), fetch a single trial by NCT ID, and summarize a sponsor's pipeline by phase/status.Change tracking / watches: snapshot trial, grant, paper, EMA and AdCom queries into a local DB and retrieve what changed since a date (
trial_changes_sincewith critical/notable/minor severity, plus grant, paper, EMA and AdCom change feeds; FDA changes viafda_changes_since).FDA: Drugs@FDA submissions/approvals (incl. novel NME/BLA only), and Federal Register advisory committee meeting notices with parsed NDA/BLA numbers, sponsors, postponements and cancellations.
Grants: NIH RePORTER search by PI (middle-initial aware, exact option), organization (wildcard/exact), keyword, fiscal year and award-date window, with future-award flagging.
Papers: deduplicated search across PubMed, Europe PMC and bioRxiv/medRxiv by drug, affiliation, keyword and date (metadata + links only).
SEC: 8-K documents mentioning PDUFA, with unverified candidate dates and source links.
EMA: EU centrally authorised medicines — CHMP opinions, EC authorisations, refusals, withdrawals, suspensions, orphan/PRIME flags.
Company profile: one merged view per company name or ticker (trials pipeline, FDA applications/actions, grants, papers, preprints, SEC PDUFA candidates).
Digests: export detected changes as a JSON Feed 1.1 or RSS 2.0 document per source (trials, fda, grants, papers, sec, ema, adcom).
Provides tools for searching PubMed papers and preprints, with filters by drug, affiliation, date, and change detection for new publications; results are deduplicated by DOI/PMID across sources.
Generates RSS feed files from watch results and changes, allowing users to subscribe to updates in feed readers.
BioCatalystFeed
Website: https://biocat.ai · Contact: contact@biocat.ai
An open-source catalyst feed for biotech: see what changed across clinical trials, FDA and EMA actions, NIH grants, papers/preprints and SEC filings for the companies and drugs you follow. Use it as a CLI, as an MCP server for AI agents (Claude, Cursor, …), or as an Apify actor.
⚠️ Not investment, legal or medical advice. Data may be incomplete, delayed or wrong; PDUFA dates are unverified candidates from SEC filings. Always check the linked primary source.
What it does
Source | Command | What you get |
ClinicalTrials.gov API v2 (NLM) |
| search, sponsor pipelines, diffs: new trials, status/phase/enrollment/date, primary-endpoint, arm, intervention, site-count and results-posted changes, each labelled critical / notable / minor |
openFDA (Drugs@FDA, SPL labels) |
| approvals (incl. novel NME/BLA flag), submissions, label revisions, diffs |
NIH RePORTER |
| grants by org / PI (middle-initial aware) / keyword; new awards, amount changes |
PubMed + Europe PMC + bioRxiv/medRxiv |
| papers & preprints, deduplicated by DOI/PMID across sources |
SEC EDGAR |
| 8-K mentions of PDUFA dates (UNVERIFIED candidates, linked to the filing) |
European Medicines Agency (EMA) |
| EU centrally authorised medicines: CHMP opinions, EC authorisations, refusals, withdrawals, suspensions; orphan/PRIME flags; diffs |
Federal Register (FDA notices) |
| FDA advisory committee meetings: committee, meeting date, NDA/BLA numbers and sponsors from the agenda; postponements/cancellations; diffs |
openFDA complete response letters (FDA) |
| FDA complete response letters (CRLs) for NDAs/BLAs: company, application, product, deficiency topics (facility, product quality, clinical, safety ...), first-deficiency excerpt, PDF link; diffs flag new letters and Unapproved → Approved |
FDA decision calendar (SEC EDGAR 8-Ks + Federal Register + Drugs@FDA + openFDA CRLs) |
| one list of upcoming PDUFA dates (company-disclosed in 8-Ks), AdCom meetings, recent approvals and CRLs; filter by drug, company/ticker, condition, kind, date window or |
Trial readout calendar + Trials at Risk (ClinicalTrials.gov) |
| market-wide upcoming primary completion dates (ESTIMATED / ACTUAL), filter by sponsor/ticker, condition, intervention, phase, window, industry-only, ticker-only; watches report new readouts and slipped dates; |
All of the above |
| one merged company profile (name or ticker) |
Optional global coverage (--global / include_global). Off by default. When you turn it on, BCF also links to records in trial registries outside the US and EU, such as China's ChiCTR and other WHO-listed national registries, and flags papers from other jurisdictions. These records may come from research run under regulatory, ethics and data standards different from, and sometimes lighter than, those of the US or EU. They are labelled "non-FDA/EMA registry". The option is for users who want to see everything that is out there. Inclusion is not an endorsement or recommendation and is not medical, legal or investment advice.
Records are links (registry ID + URL, from ClinicalTrials.gov secondary IDs); papers get jurisdiction_flag from author-affiliation countries ("unknown" when none is found). Details: bcf --global --help or docs/GLOBAL.md.
Across tools: --exclude TERM … to drop noise, --rank for relevance ordering, and --rss / --json-feed digest
files on every watch (local files you can serve or feed into any reader; nothing is emailed).
Related MCP server: mcp-techTrend
Quickstart
python3 -m venv .venv && source .venv/bin/activate # macOS/Homebrew Python blocks global pip installs (PEP 668)
pip install biocatalystfeed
# no venv needed: uvx --from biocatalystfeed bcf --help or pipx install biocatalystfeed
bcf trials search --sponsor "Viking Therapeutics" --phase PHASE3
bcf trials search --sponsor TERN # known names/tickers are alias-resolved (CT.gov: "Terns, Inc."); --no-aliases to send as typed
bcf papers search --drug resmetirom --since 2026-09-01 --exclude mice rat --rank
bcf grants search --pi "Ioannou, George N" --since 2024-01-01 --no-future
bcf sec pdufa MDGL --since 2023-01-01
bcf profile Lilly MDGL "Viking Therapeutics" --md profiles.md
bcf ema search --status Opinion --since 2026-09-01 # latest CHMP opinions (EU)
bcf adcom upcoming --area drugs biologics # scheduled FDA advisory committee meetings
bcf crl search --since 2026-01-01 --status Unapproved # FDA complete response letters, newest first
bcf fda-decisions search --upcoming 90 # PDUFA dates (8-K) + AdComs in the next 90 days, soonest first
bcf fda-decisions search --company BBIO # all FDA decision events for a ticker (pdufa, adcom, approval, crl)
bcf fda-decisions search --drug semaglutide --kinds approval crl --since 2025-01-01
bcf readouts search --upcoming 60 --condition obesity # industry Ph2/3 primary completions in the next 60 days
bcf readouts search --sponsor VKTX --upcoming 720 --md vktx.md # one company's readouts + a Markdown digest
bcf readouts at-risk --condition NASH --html risk.html # Trials at Risk (stopped / overdue / delayed / enrollment shortfall)
# watches: first run = baseline, later runs report what changed (cron it daily)
bcf trials --db bcf.db watch --name obesity --condition obesity --phase PHASE3 --rss obesity.rss
bcf trials --db bcf.db changes --name obesity --min-severity critical # terminations, endpoint rewrites
bcf readouts --db bcf.db watch --name ph3-90d --phases PHASE3 --upcoming 90 --digest-html readouts.html --json-feed readouts.feed.json # notify: new readouts, date slips, ESTIMATED->ACTUAL
bcf fda-decisions --db bcf.db watch --name obesity-fda --condition obesity --json-feed fda.feed.json # notify: new/moved PDUFA dates, AdComs, approvals, CRLs
bcf papers --db bcf.db watch --name mdgl --affiliation "Madrigal Pharmaceuticals" --json-feed mdgl.feed.jsonGlobal flags such as --db go after the tool name and before the subcommand: bcf trials --db bcf.db changes, not bcf --db bcf.db trials changes or bcf trials changes --db bcf.db.
bcf trials changes prints a readable one-line-per-change summary; add --json for one JSON object per line.
PubMed --since/--until filter on the publication date shown in the output (Europe PMC uses first-publication date).
The old commands (trialwatch, fdawatch, grantwatch, paperwatch, secwatch, trialwatch-mcp) still work.
MCP server
{"mcpServers": {"biocatalystfeed": {"command": "uvx", "args": ["biocatalystfeed", "mcp"],
"env": {"BIOCATALYSTFEED_DB": "/path/to/bcf.db"}}}}(or point command at an installed biocatalystfeed-mcp). Listed in the official MCP Registry as
io.github.biocatalystfeed/biocatalystfeed.
Tools include search_trials, sponsor_pipeline, fda_approvals, company_profile, search_grants,
search_papers, sec_pdufa_mentions, ema_medicines, fda_adcom_meetings, fda_complete_response_letters, fda_decisions (FDA decision calendar), readout_calendar (trial readout calendar), trials_at_risk, snapshot_* (incl. snapshot_fda_decisions, snapshot_readouts) / *_changes_since, and changes_feed (RSS / JSON Feed / Markdown / HTML).
Provenance on every record (0.3.6). Every record returned by every MCP tool (stdio and hosted), and by bcf readouts
/ bcf fda-decisions / bcf trials search, carries verified_as_of (UTC), source_url (the official record or API URL),
verify_hash (sha256: of the record's canonical JSON, excluding the provenance and ticker fields; re-check with
biowatch.provenance.check(record)), and, where a company is named, ticker, ticker_confidence (1.0 source-given,
0.95 alias table, 0.9 SEC exact name, 0.6 SEC name prefix, 0 none) and ticker_method.
Configuration
Env var | Purpose |
| contact email put in the SEC User-Agent (SEC fair-access policy). Default is the project contact ( |
| full SEC User-Agent override |
| optional email sent to NCBI E-utilities |
| optional openFDA API key (free at open.fda.gov/apis/authentication); raises daily/minute rate limits. Never logged |
| optional NCBI E-utilities API key (free from your NCBI account settings); raises the PubMed limit from 3 to 10 req/s. Never logged |
| SQLite DB for the MCP server |
| JSON file extending the company alias table |
How it compares
Facts about DataLookout are from datalookout.com, its /citeline-alternative and /clinical-trial-monitoring pages (checked 2026-10-21 PT). We have not tested
their product. Fuller, cited comparison: docs/COMPARISON.md; three-way matrix incl. DropwatchHQ Bio Catalyst: samples/competitor_matrix.md.
BioCatalystFeed (open source) | DataLookout | |
Price | Free to self-host (BSL 1.1 from 0.4.0; 0.3.6 and earlier Apache-2.0); free hosted MCP endpoint (200 tool calls/day) | Free tier; Pro $49/month |
Sources | ClinicalTrials.gov, openFDA (approvals, labels, CRLs), NIH RePORTER, PubMed, Europe PMC, bioRxiv/medRxiv, SEC EDGAR (PDUFA dates), EMA, Federal Register (FDA AdComs) | ClinicalTrials.gov |
Change tracking | Diffs between your own runs (trials: status, phase, enrollment, dates, sponsor, title, why stopped, primary endpoints, arms, interventions, site counts, results posting; severity critical/notable/minor; plus FDA, EMA, AdCom, grant, paper and SEC changes) | Daily scan; 13 fields incl. status, enrollment, primary endpoints, interventions, results, site counts, completion dates; changes marked Stopped/Notable/Minor |
Delivery | CLI, MCP server for AI agents (local, or hosted read-only subset), RSS/JSON Feed files, Apify actor | Morning email digest + dashboard inbox |
Watch limits | None when self-hosted | Free: 1 sponsor + 1 disease watchlist + 1 saved search; Pro: 10 of each |
Scheduling | You run it (cron, Apify schedule) | Hosted, daily |
Setup | Python install | "2 minutes" (their claim) |
Pick DataLookout for a hosted, emailed, ClinicalTrials.gov-only digest. Pick BioCatalystFeed if you want several sources per company or ticker, agent/MCP access, or to self-host.
Trial change severity (v0.3.0)
Every trial change carries severity, and date changes carry shift_days:
critical: status moves to TERMINATED / SUSPENDED / WITHDRAWN, a why-stopped reason appears, or the primary endpoint(s) are rewritten.
notable: other status or phase changes, new trials, lead-sponsor changes, results posted, arm or intervention changes, enrollment changes of 20% or more, start / primary completion / completion dates moved 30+ days.
minor: everything else (small date or enrollment tweaks, site-count changes, title edits).
Filter with --min-severity notable|critical on bcf trials watch / changes, or min_severity in the MCP tool
trial_changes_since. Snapshots made by older versions start tracking the new fields on their next run, so upgrading
doesn't produce a burst of false changes.
Search filters (v0.2.1)
--excludetakes words or phrases (space- or comma-separated); matching is whole-word and case-insensitive, and a trailing*is a prefix wildcard (--exclude "murin*" rat).--rankscores title hits 3 and other-field hits 1 (simple plurals tolerated), +1 for exact multi-word phrases in the title and +2 when every query term matches; ties break by newest date. The score is inrelevance.
Data sources, limits and etiquette
Built-in throttles follow each source's published policy (e.g. NIH RePORTER 1 req/s, NCBI ≤3 req/s without key, SEC
≤10 req/s with a declared User-Agent, openFDA 1,000 req/day per IP without key). We store metadata and links only
for papers/preprints, never abstracts. Change detection only covers your own runs; there's no historical backfill.
PDUFA dates are regex extractions from company 8-K text (FDA does not publish PDUFA dates); bcf fda-decisions labels them confidence: company-disclosed with the filing link, and always read the filing. Data provided by the U.S. Food and Drug Administration (https://open.fda.gov). Source: European Medicines Agency
(EMA), https://www.ema.europa.eu. Full attributions are in NOTICE. Design notes
and per-source terms are in docs/DEVELOPER-NOTES.md.
Hosted MCP endpoint (free)
A free, read-only, rate-limited MCP endpoint (Streamable HTTP, no account) runs on Cloudflare Workers:
https://bcf-mcp.lively-recipe-5a12.workers.dev/mcp{"mcpServers": {"biocatalystfeed-hosted": {"type": "http", "url": "https://bcf-mcp.lively-recipe-5a12.workers.dev/mcp"}}}It offers 10 tools (search_trials, get_trial, fda_approvals, search_papers, fda_complete_response_letters,
fda_decisions, readout_calendar, trials_at_risk, fda_adcom_meetings, and the hosted-only paper_retraction_check), all with provenance fields, plus a cached
public GET /calendar.json (90-day readout calendar, refreshed every 6 h; feeds biocat.ai/calendar) over ClinicalTrials.gov, openFDA, PubMed, SEC EDGAR and the Federal Register. Free tier: 200 tool calls per IP per UTC day (resets at 00:00 UTC) and 30 requests/minute. initialize and tools/list don't count. Over the limit you get HTTP 429 with JSON-RPC error -32002, Retry-After and x-daily-* headers. /calendar.json is unmetered. API keys for higher limits are planned but not yet available. Self-hosting is free and unlimited: pip install biocatalystfeed.
Retraction warning (hosted only, free): paper_retraction_check takes up to 50 PMIDs or DOIs and reports, per paper, whether it is retracted, partially retracted, under an expression of concern or corrected, with links to each notice, the first notice date and how many sources agree (PubMed, Crossref including Retraction Watch records, OpenAlex). An OpenAlex-only signal is shown as possible_retraction with no warning. none_found means no notice was found, not that a paper is sound. One call counts as one tool call toward the free daily limit. Informational only; not medical or investment advice. Data: PubMed/MEDLINE (U.S. National Library of Medicine), Crossref metadata including the Retraction Watch Database (The Center for Scientific Integrity, openly available via Crossref), OpenAlex (CC0). This tool is not part of the source-available package.
Watches, change history and the other sources need the local install above. No request logs are kept; see
TERMS.md and PRIVACY.md. Source: worker/.
Contributing / Testing
git clone https://github.com/biocatalystfeed/biocatalystfeed && cd biocatalystfeed
python3 -m venv .venv && source .venv/bin/activate
pip install -e '.[dev]'
pytest # offline tests; live-API tests are skipped by default
TRIALWATCH_LIVE=1 pytest # also run tests that call the real public APIs (needs network; slower)Contributing & licence
See CONTRIBUTING.md, CODE_OF_CONDUCT.md and SECURITY.md (report vulnerabilities privately). Licence: version 0.4.0 and later is under the Business Source License 1.1. You can use, modify and self-host it for any purpose, including commercial internal use, but you cannot offer it to others as a competing catalyst, trial, FDA data, alert, API or MCP service. Each version becomes Apache-2.0 twelve months after its release. Versions 0.3.6 and earlier stay Apache-2.0. See NOTICE. For commercial licensing, contact contact@biocat.ai. BioCatalystFeed is
independent and not endorsed by NLM, NIH, FDA, SEC, EMA, the Office of the Federal Register, EMBL-EBI/Europe PMC, or bioRxiv/medRxiv.
Available Tools
22 toolsadcom_changes_sinceB
Detected FDA advisory committee changes (new_notice, meeting_date_change, ...) since an ISO date.
| Name | Required | Description | Default |
|---|---|---|---|
| since | Yes | ||
| watch | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses the change taxonomy (new_notice, meeting_date_change, ...) and the ISO-date input requirement, which is real behavioral context. However, it says nothing about what happens when the date is far in the past, whether results are paginated, or any auth/rate-limit traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the resource and the temporal constraint come first. Brevity is efficient but borders on under-specification given the undocumented `watch` parameter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values needn't be explained, and the changed-field taxonomy is a nice touch. But for a tool in a crowded sibling set with an undocumented optional parameter and no routing guidance, an agent still has gaps before calling it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% with 2 parameters. The description clarifies `since` as an ISO date, but `watch` — a nullable string with default null — is completely unexplained in both schema and description. Half the parameter surface is opaque, so compensation is only partial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: detecting FDA advisory committee changes, with example change types (new_notice, meeting_date_change) and a temporal qualifier. An agent knows exactly what domain and operation this covers. It does not differentiate from close siblings such as fda_changes_since, changes_feed, or snapshot_adcom, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Since an ISO date" implies a delta/refresh use case, but there is no explicit statement of when to use this versus snapshot_adcom (current state) or changes_feed (aggregated feed) — both present in a 21-tool sibling list. No prerequisites, exclusions, or alternatives are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
changes_feedC
Digest of detected changes as a feed document (format 'json' = JSON Feed 1.1, 'rss' = RSS 2.0). tool: trials | fda | grants | papers | sec | ema | adcom.
| Name | Required | Description | Default |
|---|---|---|---|
| tool | No | papers | |
| since | No | ||
| watch | No | ||
| format | No | json |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. It reveals the output serialization (JSON Feed 1.1 vs RSS 2.0), which is genuinely useful, but says nothing about the default lookback window when 'since' is omitted, what 'watch' scopes to, how many items a feed contains, or whether the feed is idempotent/pollable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact lines with the core purpose front-loaded and zero filler. The second line, a bare 'tool: a | b | c' fragment, is somewhat telegraphic and reads like a schema note rather than prose, but it is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation. But for a 4-parameter cross-source tool with zero annotations and zero schema descriptions, the definition leaves critical call-shaping questions unanswered: the default time window, the meaning of 'watch', and how this relates to the per-source change tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and there is no enum on 'tool', so the description does real work by enumerating the accepted tool values (trials, fda, grants, papers, sec, ema, adcom) and mapping json/rss to JSON Feed 1.1 / RSS 2.0. However, 'since' and 'watch' — half the parameters — receive no explanation at all in either the schema or the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: a digest of detected changes rendered as a feed document, with the two serialization formats named. The 'as a feed document' framing implicitly separates it from the structured * _changes_since siblings, but it never names them, so the differentiation is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use, when-not, or alternative is stated. An agent cannot tell from the description whether to call changes_feed instead of paper_changes_since or adcom_changes_since when it wants change data, or whether this is meant for feed readers / polling only.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
company_profileA
Merged company view: ClinicalTrials.gov pipeline (lead sponsor, alias-resolved) + FDA applications, novel approvals, recent FDA actions and label updates, plus (unless basic=True) NIH grants, PubMed papers (affiliation + key drugs), bioRxiv/medRxiv preprints via Europe PMC (last preprint_days; 0 = skip) and SEC 8-K PDUFA-date candidates (UNVERIFIED). Accepts name or ticker (e.g. 'Viking Therapeutics', 'TERN').
| Name | Required | Description | Default |
|---|---|---|---|
| basic | No | ||
| company | Yes | ||
| recent_days | No | ||
| preprint_days | No | ||
| include_collaborations | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose important behavior: alias-resolved sponsor matching, the basic=True shortcut, preprint_days=0 to skip preprints, and that SEC PDUFA candidates are UNVERIFIED. It omits cost/latency expectations for an aggregation tool and how ambiguous company names are resolved.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads 'Merged company view' and packs the source list and caveats into two dense sentences. Slightly run-on, but every clause carries information and nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex multi-source aggregation with no output schema and 0% parameter coverage, the description gives a good source inventory and key caveats. However, it leaves the output structure and two parameters undocumented, which is a meaningful gap for a tool this broad.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It documents company (name or ticker with examples), basic, and preprint_days (including the 0=skip sentinel), but never explains recent_days or include_collaborations, leaving two of five parameters ambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource and scope: a merged company view combining ClinicalTrials.gov, FDA, NIH, PubMed, preprints and SEC data. This distinguishes it clearly from the many single-source siblings such as search_trials or fda_approvals.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'Merged company view' and the basic=True switch that trims enrichment sources, but there is no explicit guidance on when to call this versus the individual source tools. An agent must infer that this is the overview tool and siblings are for targeted queries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ema_changes_sinceC
Detected EMA changes (new_medicine, status_change, opinion_date_change, ec_decision_date_change, ...) since an ISO date.
| Name | Required | Description | Default |
|---|---|---|---|
| since | Yes | ||
| watch | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does add real value by naming the change categories that can surface, but it says nothing about pagination, auth, deduplication, or whether results are bounded — gaps that matter for a change-feed tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence with no filler; the resource and temporal qualifier come first. The trailing '(...)' enumeration is slightly ragged but efficient overall.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values needn't be explained, but the ambiguous 'watch' parameter and the absence of any routing guidance against the many sibling snapshot/change tools leave real holes for a two-parameter delta tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds the 'ISO date' format hint for 'since', but the 'watch' parameter is never mentioned, leaving a required semantic entirely undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (EMA changes) and enumerates the change types detected (new_medicine, status_change, ec_decision_date_change), which lets an agent distinguish this from ema_medicines or snapshot_ema. It is clear without naming a sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this versus snapshot_ema, snapshot_watch, or changes_feed. The 'since an ISO date' phrasing implies incremental/delta polling, but the agent must infer that, and no exclusions or prerequisites are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ema_medicinesA
European Medicines Agency (EU) centrally authorised human medicines: CHMP opinions, EC authorisations, refusals, withdrawals, suspensions. Filter by holder/applicant, drug (name/INN/substance), keyword (indication or therapeutic area), status (e.g. 'Opinion', 'Authorised', 'Refused'), latest regulatory event date window YYYY-MM-DD, orphan / PRIME flags. Newest event first. Data: European Medicines Agency (EMA); cite EMA as the source.
| Name | Required | Description | Default |
|---|---|---|---|
| drug | No | ||
| rank | No | ||
| prime | No | ||
| since | No | ||
| until | No | ||
| holder | No | ||
| orphan | No | ||
| status | No | ||
| exclude | No | ||
| keyword | No | ||
| max_results | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden. It does disclose useful traits: results are ordered newest-event-first, the data source is EMA, and EMA must be cited. It does not state that the operation is read-only, does not explain max_results truncation or pagination behaviour for a default-100 result cap, and does not describe what an empty filter set returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the resource and scope, then filters, then ordering, then source/citation. Every clause carries information; no filler sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need no explanation, and the filter set is well covered. But with 11 parameters, zero annotation coverage and zero schema descriptions, the gaps around 'rank', 'exclude', and result-limit behaviour leave the agent guessing on parameters it will actually have to set.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it largely does: it clarifies drug matching (name/INN/substance), holder/applicant, keyword scope (indication or therapeutic area), status with concrete example values ('Opinion', 'Authorised', 'Refused'), and the since/until format (YYYY-MM-DD date window). Three of eleven parameters remain unexplained — notably 'rank' and 'exclude', whose semantics are not inferable from their titles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (EMA centrally authorised human medicines) and enumerates the record types it covers: CHMP opinions, EC authorisations, refusals, withdrawals, suspensions. It is clearly a filtered search over that dataset, which implicitly separates it from snapshot_ema / ema_changes_since, but it never names those siblings to make the distinction explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied through the available filters (holder, drug, keyword, status, date window, orphan/PRIME), so an agent can infer this is the query tool for arbitrary EMA medicine lookups. There is no explicit when-to-use guidance or exclusion against sibling tools like ema_changes_since (incremental deltas) or snapshot_ema (bulk capture), which is exactly what the agent must decide between here.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fda_adcom_meetingsA
FDA advisory committee (AdCom) meeting notices from the Federal Register: committee, meeting date, kind (meeting / amendment / postponement / cancellation), and, parsed from the notice's agenda, the NDA/BLA numbers and sponsors under discussion. since/until filter the notice publication date (YYYY-MM-DD; default last 365 days). area: drugs, biologics, devices, tobacco, other (default all but tobacco). upcoming=True keeps meetings dated today or later. keyword matches title/agenda/sponsor (e.g. a drug or company). agenda=True costs one request per notice. Source: Federal Register (U.S. government, public domain); check the notice and fda.gov for late changes.
| Name | Required | Description | Default |
|---|---|---|---|
| area | No | ||
| since | No | ||
| until | No | ||
| agenda | No | ||
| exclude | No | ||
| keyword | No | ||
| upcoming | No | ||
| committee | No | ||
| max_results | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses that agenda=True 'costs one request per notice' (a real cost/rate signal), gives default windows and the default tobacco exclusion, and warns to check the notice and fda.gov for late changes. It stops short of describing result ordering, pagination, or whether results are cached, which keeps it off a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with what the tool returns, then filter semantics, then source/caveat, so an agent can stop reading early. Dense but nearly every clause carries information; the parenthetical examples ('e.g. a drug or company') are slight filler but genuinely disambiguate keyword.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter, annotation-free tool with an output schema (so return shape needn't be explained), the description covers source, defaults, filter meaning, cost, and data-freshness caveats. The uncovered exclude and max_results parameters are the only meaningful omission for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate and mostly does: it supplies the YYYY-MM-DD format and default window for since/until, enumerates the area values (drugs, biologics, devices, tobacco, other) and their default, explains keyword's match fields, and explains upcoming and agenda's cost. Two of nine parameters — exclude and max_results — get no mention anywhere, which is the remaining gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the concrete resource (FDA advisory committee meeting notices from the Federal Register) and enumerates exactly what comes back: committee, meeting date, notice kind, and parsed NDA/BLA numbers and sponsors. An agent can tell it is a filtered listing tool, but the description never names the close siblings (snapshot_adcom, adcom_changes_since) that do the baseline-save and diff jobs, so differentiation is left implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: 'upcoming=True keeps meetings dated today or later' and 'keyword matches title/agenda/sponsor' hint at the retrieval scenarios, and the stated 365-day default tells an agent it must widen scope explicitly. However, there is no explicit when-to-use/when-not framing and no pointer to the snapshot/change-feed alternatives in the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fda_approvalsA
Drugs@FDA submissions/approvals from openFDA (ORIG + supplements), newest first. sponsor is alias-resolved (e.g. 'Lilly', 'MDGL'); since/until filter submission status date YYYY-MM-DD; novel_only = original NME/BLA approvals.
| Name | Required | Description | Default |
|---|---|---|---|
| since | No | ||
| until | No | ||
| sponsor | No | ||
| novel_only | No | ||
| max_results | No | ||
| application_number | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden, and it does disclose useful traits: record ordering (newest first), inclusion of originals plus supplements, and sponsor alias resolution. It omits permission/auth notes, pagination/max_results truncation behavior, and what the result set looks like beyond what the output schema implies.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense, front-loaded clauses with no filler; the source and scope lead, parameter hints follow. Slightly telegraphic but every fragment carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values needn't be explained, but with 0% schema coverage and six parameters, two parameters (max_results, application_number) are undocumented anywhere. For a read-only listing tool that is adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it does for four of six parameters: sponsor (alias-resolved, with examples), since/until (status date, YYYY-MM-DD), and novel_only (original NME/BLA only). max_results and application_number are left undocumented, but the semantic value added is substantial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (Drugs@FDA submissions/approvals), source (openFDA), and scope (ORIG + supplements) with ordering (newest first). This is enough to distinguish it from the change-feed siblings like fda_changes_since, though it never explicitly contrasts with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implied usage is clear — query approvals filtered by sponsor and date, or restrict to novel approvals. However, there is no explicit when-to-use versus alternatives such as fda_changes_since or sponsor_pipeline, so routing between siblings is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fda_changes_sinceA
List detected FDA changes (new submissions, approvals, label revisions) since an ISO date (from fdawatch watches).
| Name | Required | Description | Default |
|---|---|---|---|
| since | Yes | ||
| watch | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, but it does add real behavioral context: changes are 'detected' (i.e., derived from watch snapshots) and the source is fdawatch watches, and it names what counts as a change. It says nothing about result ordering, limits, or whether an empty result is possible when no watches exist, which are meaningful gaps for a no-annotation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence with the resource and the key parameter constraint front-loaded; no filler or restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the required parameter's format is covered. What remains missing is the semantics of the optional 'watch' filter and any ordering/pagination expectation — modest but real gaps for a 2-parameter listing tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It correctly pins 'since' to ISO date format, which is the highest-value detail for the required param. The optional 'watch' parameter is only obliquely referenced via 'from fdawatch watches' — no format, no statement that it filters to a single watch, and no indication of what happens when omitted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') plus resource ('detected FDA changes') and enumerates the change types (new submissions, approvals, label revisions), which differentiates it from grant_changes_since, trial_changes_since and ema_changes_since by domain. It does not explicitly address the cross-domain sibling changes_feed, so differentiation is strong but not fully spelled out.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The parenthetical 'from fdawatch watches' implies this only surfaces changes covered by configured watches, which is useful scoping context. However, there is no explicit statement of when to prefer this over changes_feed or the other *_changes_since tools, and no when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_trialA
Get one normalized trial record by NCT ID.
| Name | Required | Description | Default |
|---|---|---|---|
| nct_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. 'Get' implies a read operation and 'normalized' indicates the returned record is transformed, but details such as missing-ID behavior, data freshness, or response shape are not disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. It states the action, cardinality, resource, and key in one pass.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter lookup with no output schema, the description covers the core purpose but leaves the expected response content and error behavior underspecified. 'Normalized trial record' is useful but not fully concrete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It clarifies that the sole parameter is an NCT ID used to identify a single trial, but it does not provide expected format or validation details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and resource ('one normalized trial record') and states the lookup key ('by NCT ID'). This clearly distinguishes it from plural search tools like search_trials and change-oriented siblings like trial_changes_since.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'by NCT ID' implies the tool should be used when a specific trial identifier is already known, but the description does not explicitly say when to use this versus search_trials or trial_changes_since. Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
grant_changes_sinceC
Detected grant changes (new_award, award_amount_change, ...) since an ISO date.
| Name | Required | Description | Default |
|---|---|---|---|
| since | Yes | ||
| watch | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden for behavioral disclosure. It reveals the kind of changes returned but does not state whether the operation is read-only, whether it requires specific permissions, how results are ordered or paginated, or what 'watch' does.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It is concise, though the extreme brevity contributes to missing usage and parameter details, which are better captured elsewhere.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described. However, with no annotations and 0% schema description coverage, the description is critically incomplete for the unexplained 'watch' parameter and lacks any behavioral context an agent would need to invoke the tool reliably.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for both parameters. It explains that 'since' expects an ISO date, but the optional 'watch' parameter is completely undefined, leaving half the parameters semantically opaque.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource (grant changes) and lists example change types (new_award, award_amount_change), making the tool's purpose clear. However, it does not explicitly distinguish itself from siblings such as search_grants or snapshot_grants, leaving the agent to infer that it is a change-feed tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'since an ISO date' implies when to use the tool, but there is no explicit guidance on when to choose it over siblings like trial_changes_since or changes_feed, nor any exclusions. The optional 'watch' parameter is also left unexplained.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
paper_changes_sinceC
New papers/preprints detected since an ISO date.
| Name | Required | Description | Default |
|---|---|---|---|
| since | Yes | ||
| watch | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full behavioral burden. It implies a read-only time-scoped delta, but discloses nothing about result caps, ordering, whether it requires an existing watch/snapshot baseline, or rate limits — all material for a change-feed tool with a 'watch' parameter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler or redundancy. It is efficient, though the brevity here leans toward under-specification rather than true conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (2 params, 1 required) and an output schema exists, so return values need not be explained. Still, with no annotations and an undocumented 'watch' parameter, an agent lacks enough context to invoke it confidently when a watch is involved.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds useful format semantics for 'since' (ISO date), but the 'watch' parameter is completely unexplained — the agent cannot tell whether it is a watch identifier, a name, or a filter, and it is the only optional parameter on the tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb-phrase and resource: 'New papers/preprints detected since an ISO date.' An agent immediately knows this is a delta/change-detection query over papers. However, it does not differentiate itself from adjacent siblings such as search_papers, snapshot_papers, or changes_feed, which look similarly relevant to an agent choosing a tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus search_papers (search by query), snapshot_papers (baseline capture), or the umbrella changes_feed. Nothing tells the agent whether a prior snapshot_watch/snapshot_papers call is a prerequisite, or what happens if no baseline exists.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_grantsA
NIH RePORTER grants by organization (wildcard unless org_exact), PI name ('Jane A. Doe' or 'Doe, Jane A'; middle initials respected, pi_exact for strict), keyword (title/terms/abstract; quote phrases, OR allowed) and award notice date window YYYY-MM-DD. Newest award notice first; future-dated awards flagged and listed after current ones (include_future=False drops them). exclude drops grants mentioning any term; rank sorts by relevance.
| Name | Required | Description | Default |
|---|---|---|---|
| pi | No | ||
| org | No | ||
| rank | No | ||
| since | No | ||
| until | No | ||
| exclude | No | ||
| keyword | No | ||
| pi_exact | No | ||
| org_exact | No | ||
| max_results | No | ||
| fiscal_years | No | ||
| include_future | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden, and it does disclose non-obvious result behavior: newest award notice first, future-dated awards flagged and sorted after current ones, exclude drops any grant mentioning a term, and rank reorders by relevance. It says nothing about truncation behavior beyond max_results, rate limits, or error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense paragraph with no filler — nearly every clause maps to a parameter or a behavioral trait. It is somewhat cramped and semicolon-chained, which makes scanning harder than a short bulleted mode summary would be, but no sentence is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 12-parameter tool with zero annotation coverage, the description covers behavior and most parameters well, and an output schema exists so return values need no explanation. However, the two undocumented parameters (max_results, fiscal_years) mean an agent still cannot call the tool fully informed from this definition alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry all parameter meaning, and it does for roughly ten of twelve: PI formats and pi_exact, org wildcard and org_exact, keyword syntax, the since/until YYYY-MM-DD window, exclude, rank, and include_future. max_results and fiscal_years are never mentioned, leaving the fiscal_years integer list completely unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource ('NIH RePORTER grants') and enumerates the searchable dimensions (org, PI, keyword, award date), so the tool's purpose is unmistakable. It never names or contrasts the sibling snapshot_grants or grant_changes_since, so an agent must infer the search-vs-monitor split on its own.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage conditions are stated explicitly for each mode: wildcard matching 'unless org_exact', the two accepted PI name formats with 'pi_exact for strict', quoted phrases and OR in keyword, and include_future=False to drop future awards. What's missing is any guidance on when to choose this tool over the sibling change-tracking tools, which is left implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_papersA
Papers from PubMed, Europe PMC and bioRxiv/medRxiv preprints (via Europe PMC keyword search; bioRxiv API as fallback), deduplicated by DOI/PMID. sources subset of ["pubmed","europepmc","preprints"] (default all). affiliation/drug lists are OR'd; keyword is raw query syntax; since = YYYY-MM-DD. exclude drops titles containing any term; rank sorts by relevance. Metadata + links only.
| Name | Required | Description | Default |
|---|---|---|---|
| drug | No | ||
| rank | No | ||
| since | No | ||
| exclude | No | ||
| keyword | No | ||
| sources | No | ||
| affiliation | No | ||
| max_results | No | ||
| preprint_days | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does meaningful work: it discloses multi-source aggregation, Europe PMC keyword search with bioRxiv API fallback, and DOI/PMID deduplication. 'Metadata + links only' usefully bounds the return payload. Missing: pagination/truncation behavior relative to max_results, and any rate-limit or auth notes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Highly compact and front-loaded: source scope, dedup, then a walk through the filters in roughly schema order. The telegraphic, semicolon-chained fragments cost some readability but almost nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter, fully optional, annotation-free tool with no output schema, this covers the source list, dedup, filter combinatorics, date format and return shape. The gaps are the two integer parameters and any result-count/pagination caveats.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate and largely does — it defines the sources enum values, OR semantics for affiliation/drug, raw query syntax for keyword, YYYY-MM-DD for since, title-term dropping for exclude, and relevance sorting for rank. Only max_results and preprint_days are left unexplained, which keeps it from a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource ('Papers from PubMed, Europe PMC and bioRxiv/medRxiv preprints') and names the retrieval mechanism plus DOI/PMID dedup. It does not explicitly contrast itself with siblings like snapshot_papers or paper_changes_since, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Filter semantics (OR'd lists, raw query syntax, exclude, rank) imply how to shape a query, but there is no explicit 'use this when you want X, use snapshot_papers when you want Y' guidance. The agent must infer selection from the sibling names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_trialsB
Search ClinicalTrials.gov. phases e.g. ["PHASE2","PHASE3"]; statuses e.g. ["RECRUITING"]; changed_since YYYY-MM-DD. exclude drops trials whose title/conditions/interventions contain any term; rank sorts by relevance to the query.
| Name | Required | Description | Default |
|---|---|---|---|
| rank | No | ||
| phases | No | ||
| exclude | No | ||
| sponsor | No | ||
| statuses | No | ||
| condition | No | ||
| max_records | No | ||
| intervention | No | ||
| changed_since | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does disclose two non-obvious behaviors: that exclude drops trials based on title/conditions/interventions matching, and that rank sorts by relevance to the query. It says nothing about result volume/pagination, default behavior when all filters are omitted (a 9-param all-optional tool), or upstream rate limits, so the picture is only partially filled in.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences, no filler, with the core action front-loaded before the parameter notes. The compressed semicolon style is efficient, though it reads more like shorthand notes than a structured brief, which slightly hurts scannability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. But for a 9-parameter, all-optional, annotation-free tool, the description leaves the four string filters (sponsor, condition, intervention, max_records) and the no-filter default behavior entirely to inference, which is a meaningful gap for an agent constructing a query.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it partly does: it supplies value formats and examples for phases (["PHASE2","PHASE3"]), statuses (["RECRUITING"]), and changed_since (YYYY-MM-DD), plus the semantics of exclude and rank. However, sponsor, condition, intervention, and max_records (including its default of 50 and whether it caps results) get no explanation anywhere, leaving nearly half the parameters undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: "Search ClinicalTrials.gov." This clearly separates it from the sibling search_grants, search_papers, and ema_medicines tools without needing to name them. It stops short of explicitly distinguishing search_trials from get_trial or trial_changes_since, which keeps it from a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description never says when to choose search_trials over get_trial, trial_changes_since, or sponsor_pipeline, and it gives no prerequisites or exclusions. Usage is only implied by the word "Search" and by parameter examples, so the agent must infer the routing decision.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sec_pdufa_mentionsA
SEC EDGAR 8-K documents mentioning "PDUFA" for a company (name, ticker or CIK), with candidate PDUFA dates and source links. Candidates are UNVERIFIED regex extractions; best=True marks the date nearest each mention.
| Name | Required | Description | Default |
|---|---|---|---|
| since | No | ||
| until | No | ||
| company | Yes | ||
| max_docs | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description does real work: it discloses that candidates are regex extractions, that they are unverified, that best=True marks the date nearest each mention, and that source links are returned for checking. It omits operational traits such as how many documents are scanned by default (max_docs exists in schema but is unexplained) or any rate/pagination behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences with the scope and output shape front-loaded and the data-quality caveat immediately after. No filler or restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values needn't be explained, and the company-identifier flexibility is covered. However, the date-range and document-count parameters remain semantically undefined and there are no annotations to convey safety or cost profile, leaving meaningful gaps for a document-scanning tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does clarify the required `company` parameter accepts a name, ticker or CIK, which is genuinely additive, but says nothing about `since`/`until` (date format? inclusive?) or what `max_docs` bounds, leaving three of four parameters to inference.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: it returns SEC EDGAR 8-K documents mentioning 'PDUFA' for a named company, along with candidate dates and source links. This is clearly separable from structured-data siblings like fda_approvals or fda_adcom_meetings, since this tool mines filings text rather than returning curated events.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the resource description rather than stated: an agent can infer this is the tool for PDUFA hints buried in filings, but the description never says when to prefer it over fda_approvals or how to combine them. The 'UNVERIFIED regex extractions' caveat hints at a verification workflow but doesn't spell out when/when-not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
snapshot_adcomB
Snapshot FDA advisory committee notices into the local DB; returns new notices (new meetings, amendments, postponements, cancellations) and meeting-date changes since the previous snapshot. Source: Federal Register.
| Name | Required | Description | Default |
|---|---|---|---|
| area | No | ||
| name | Yes | ||
| since | No | ||
| keyword | No | ||
| committee | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It does disclose a meaningful side effect (persisting notices into the local DB) and enumerates the change categories returned (new meetings, amendments, postponements, cancellations), but says nothing about write/permission requirements, idempotency, or how many records come back.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence front-loads the action and the return payload, with the data source appended. No filler, though the return-value clause is long enough to strain readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, no annotations, and zero schema coverage on five parameters, the description should clarify filtering behavior and the snapshot lifecycle; it covers only the high-level purpose and the kind of changes returned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Five parameters at 0% schema description coverage, and the description mentions none of them — area, since, keyword, committee, and the required name are entirely unexplained. Even 'since' is ambiguous because the text refers to the snapshot delta rather than the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb (snapshot) and resource (FDA advisory committee notices), and states what the call returns: new notices and meeting-date changes. It is distinguishable from the read-only sibling fda_adcom_meetings, though it does not explicitly contrast with adcom_changes_since.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'since the previous snapshot' implies an incremental-refresh workflow, but the description never states when to choose this over fda_adcom_meetings or adcom_changes_since, nor whether a first run must precede it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
snapshot_emaB
Snapshot an EMA medicines query into the local DB; returns new medicines and status / opinion / EC decision / withdrawal changes since the previous snapshot. Data: European Medicines Agency (EMA).
| Name | Required | Description | Default |
|---|---|---|---|
| drug | No | ||
| name | Yes | ||
| since | No | ||
| holder | No | ||
| status | No | ||
| keyword | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full burden, and it does disclose two important traits: the operation writes persistent state ('into the local DB') and the diff is scoped to four specific change categories. It does not disclose whether snapshots are overwritten or versioned, what identity the snapshot is keyed by, or any auth/rate constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact clauses, front-loaded with the action, zero filler. The parenthetical list of change types is dense but each item adds information about what the diff covers.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a stateful, six-parameter tool with no annotations and no output schema, the description covers the action and the return categories but leaves parameter meaning, snapshot identity/naming, and repeat-run semantics unexplained. An agent could not confidently construct a correct first call, particularly for the required 'name' parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across six parameters and the description explains none of them: 'name' is required but never defined (snapshot identifier vs. query label), and 'drug', 'holder', 'status', 'keyword', 'since' are not addressed at all. 'since' is especially ambiguous — it reads like a date cutoff, yet the description ties change detection to 'the previous snapshot', leaving the two mechanisms unreconciled.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource ('Snapshot an EMA medicines query') plus an explicit account of what it returns: new medicines and status/opinion/EC-decision/withdrawal changes. It implicitly separates itself from the search sibling (ema_medicines) by framing this as a persisted snapshot, though it never names ema_medicines or ema_changes_since directly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'changes since the previous snapshot' implies a repeated monitoring workflow (run once to baseline, again later to diff), which is useful implied context. However, there is no explicit statement of when to prefer this over ema_medicines or ema_changes_since, and no note on first-run behavior when no prior snapshot exists.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
snapshot_grantsC
Snapshot a grant query into the local DB; returns new awards / amount / end-date changes since the previous snapshot.
| Name | Required | Description | Default |
|---|---|---|---|
| pi | No | ||
| org | No | ||
| name | Yes | ||
| since | No | ||
| keyword | No | ||
| org_exact | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose the key behavior that state is written to a local DB and that results are diffs against a prior snapshot, which is valuable. But it omits whether reusing the same name overwrites an existing snapshot, what the first call returns with no baseline, and whether the write is reversible - significant gaps for a stateful mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence with the action front-loaded and the return payload trailing, with no filler. It could be slightly clearer by splitting the persistence claim from the diff claim, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter stateful tool with no annotations, no output schema, and 0% schema coverage, the description is too thin. An agent can guess the general effect but not the snapshot naming/overwrite semantics or the meaning of the filter parameters, which are the main risks here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 6 parameters, so the description must compensate and does not. It never explains that 'name' is the required snapshot identifier, nor what pi/org/since/keyword/org_exact filter, nor whether org_exact modifies matching semantics of org - all of which are ambiguous from the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Snapshot a grant query into the local DB') plus the return payload, so the agent knows this both persists a query and diffs it. It is distinguishable from search_grants (read-only search) and grant_changes_since (diff without snapshot) by implication, but neither sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'since the previous snapshot' implies repeated invocation to build a diffing baseline, and the fact that a query is stored implies the snapshot is reused later. However, there is no explicit statement of when to prefer this over grant_changes_since or search_grants, nor of first-run behavior when no previous snapshot exists.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
snapshot_papersB
Snapshot a paper query (PubMed + optional preprints) and return papers new since the previous snapshot.
| Name | Required | Description | Default |
|---|---|---|---|
| drug | No | ||
| name | Yes | ||
| since | No | ||
| keyword | No | ||
| affiliation | No | ||
| preprint_days | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full behavioral burden. It discloses that this is a snapshot operation returning new results since a prior snapshot and that preprints may be included, but it does not explain snapshot persistence, naming behavior, permission requirements, or what happens when no prior snapshot exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. It communicates the core action and return semantics efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, no output schema, six parameters, and zero schema description coverage, the definition is too sparse. It omits key operational details such as snapshot storage/naming semantics and the meaning of most parameters, leaving the agent under-equipped to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across six parameters, so the description must compensate substantially. It vaguely references a paper query and optional preprints but does not explain the required 'name' parameter, the meaning of 'since', how drug/keyword/affiliation filters work, or what 'preprint_days' controls.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Snapshot a paper query') and clarifies the sources and return behavior ('PubMed + optional preprints', 'papers new since the previous snapshot'). It is clear enough to distinguish this from a plain paper search, though it does not explicitly name the sibling alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The mention of returning papers 'new since the previous snapshot' implies a recurring monitoring workflow, but there is no explicit guidance on when to use this versus search_papers or paper_changes_since. The intended usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
snapshot_watchC
Snapshot a saved query ('watch') into the local DB and return what changed since its previous snapshot.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| phases | No | ||
| sponsor | No | ||
| condition | No | ||
| intervention | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It discloses that the tool writes a snapshot into the local DB and returns a delta from the previous snapshot, which are meaningful traits, but it omits important details such as overwrite behavior, permissions, what happens when no prior snapshot exists, and the return format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted language. The parenthetical '(watch)' is helpful but slightly opaque, and the sentence remains tight and efficient overall.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with five parameters, no annotations, no output schema, and zero schema description coverage, the one-sentence description is not complete enough. It covers the core action but leaves parameter meanings and key behavioral details unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain the five parameters, but it does not. It indirectly suggests that 'name' identifies the saved query/watch, yet phases, sponsor, condition, and intervention are not mentioned at all, leaving most parameter semantics undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: snapshot a saved query ('watch') into the local DB and return changes since the previous snapshot. It is clear what the tool does, but it does not distinguish itself from sibling snapshot tools like snapshot_grants, snapshot_papers, snapshot_ema, or snapshot_adcom.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as snapshot_grants, snapshot_papers, or the corresponding *_changes_since tools. The only implied usage is restating the purpose, with no explicit conditions, exclusions, or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sponsor_pipelineB
Summarize a sponsor's trial pipeline by phase and status, with active trials sorted by primary completion.
| Name | Required | Description | Default |
|---|---|---|---|
| sponsor | Yes | ||
| max_records | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden. It usefully discloses output shape (phase/status grouping, active trials sorted by primary completion), but leaves key questions open: whether max_records caps the summary counts or only the active-trial list, what happens when a sponsor has no trials, and whether results are read-only snapshots of current data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the summary scope and sort behavior, zero filler. Everything stated earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No annotations and no output schema, so the description is the only source of behavioral detail; it does explain the returned structure well. However, given two undocumented parameters at 0% schema coverage, the description should have clarified sponsor identification and the max_records truncation semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate and largely does not. It implies 'sponsor' is a name but never says whether an ID or exact name is expected, and never mentions max_records (default 300) or what it bounds — a significant omission given the default silently truncates results.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — 'Summarize a sponsor's trial pipeline by phase and status' — plus a sort order for active trials. An agent can tell this is an aggregation view rather than a trial-by-trial search like search_trials or get_trial, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: 'summarize a sponsor's pipeline' suggests a portfolio overview rather than a targeted lookup. There is no explicit statement of when to prefer this over search_trials or get_trial, and no exclusions or prerequisites are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trial_changes_sinceB
List detected changes since an ISO date, optionally for one watch: new trials and status, phase, enrollment, date, primary-endpoint, arm, intervention, site-count and results-posted changes. Each change has a severity (critical = terminated/suspended/withdrawn, why-stopped added, primary endpoint rewritten; notable; minor) and date changes carry shift_days. min_severity ('notable' or 'critical') drops lower levels.
| Name | Required | Description | Default |
|---|---|---|---|
| since | Yes | ||
| watch | No | ||
| min_severity | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully explains severity levels, critical triggers, shift_days, and min_severity filtering, but omits read-only status, permissions, result limits, pagination, and ordering.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description front-loads the core action and uses compact enumerations for change types and severity semantics. It is dense but every sentence adds useful information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema covers return structure, and the description defines the input parameters well enough to invoke the tool. However, absence of annotations and schema descriptions means it should also cover watch ID source, result limits/pagination, and sibling routing; those gaps leave it only adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It defines all three parameters meaningfully: since as an ISO date, watch as an optional single watch, and min_severity with accepted values and filtering behavior. Watch identifier format/source is not specified, preventing a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and resource ('detected changes') scoped to trials, and enumerates trial-specific change types. This clearly separates it from search_trials/get_trial and from grant/fda/paper change tools, though it does not explicitly route away from changes_feed.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus alternatives such as changes_feed, snapshot_watch, or search_trials. The only behavioral guidance is about min_severity filtering, leaving the agent to infer the monitoring use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
22 tool updates
v0.3.1- First observed
adcom_changes_since - First observed
changes_feed - First observed
company_profile - First observed
ema_changes_since - First observed
ema_medicines - First observed
fda_adcom_meetings - First observed
fda_approvals - First observed
fda_changes_since - First observed
get_trial - First observed
grant_changes_since - First observed
paper_changes_since - First observed
search_grants - First observed
search_papers - First observed
search_trials - First observed
sec_pdufa_mentions - First observed
snapshot_adcom - First observed
snapshot_ema - First observed
snapshot_grants - First observed
snapshot_papers - First observed
snapshot_watch - First observed
sponsor_pipeline - First observed
trial_changes_since
TDQS
Scored across 22 tools
Most tools are separable by domain and action, especially search/get vs changes tools. However, the repeated snapshot_* and *_changes_since families, plus broad tools like company_profile and changes_feed, create overlap that an agent could misselect. Descriptions help, but the boundary between snapshotting a query and listing detected changes is not always immediately clear.
All names use snake_case and most follow recognizable domain/action families such as search_trials, snapshot_grants, and ema_changes_since. There are minor deviations like snapshot_watch versus domain-specific snapshot tools, grant_changes_since versus search_grants, and fda_adcom_meetings versus adcom_changes_since, but the set remains readable and predictable.
The 22-tool surface reflects a genuinely broad domain spanning trials, FDA, grants, papers, SEC, EMA, AdCom, and a unified feed. Still, 22 tools is heavy, and several per-source snapshot/change variants could potentially be consolidated. It sits in the borderline 16-25 range rather than being tightly scoped.
Coverage is strong for the core biotech-catalyst workflow: search, snapshot, and change detection exist for trials, grants, papers, EMA, and AdCom, with FDA approvals, SEC PDUFA mentions, company profiles, and a combined changes feed. Minor gaps remain, such as no dedicated FDA snapshot/watch-creation tool, only narrow SEC PDUFA coverage, and no detailed get tools for grants or papers beyond search results.
Maintenance
Related MCP Connectors
Biotech News MCP — aggregated biotech & pharma industry news: FDA approvals, clinical readouts…
Company/drug identification and published biopharma catalysts. DrugAlpha OAuth account required.
Pharma Intel MCP — Compound tools that chain ClinicalTrials.gov,
Verified biotech catalyst calendar (PDUFA/AdComm/trial readouts) anchored to official sources.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenancePharmaceutical R\&D Pipeline Intelligence for AI Agents — Clinical trials, FDA approvals, drug information & publications in one MCP server.5MIT
- AlicenseAqualityCmaintenanceMCP server pulling academic publications (arXiv, PubMed, HF Daily Papers), trending code (GitHub, HF Hub), and medical-device regulatory data (FDA 510(k), recalls) into newspaper-style briefings. Per-category round-robin, weighted configuration, sandbox-safe Python launcher.166MIT
- AlicenseAqualityDmaintenanceEnables biopharma catalyst research by aggregating signals from ClinicalTrials.gov, PubMed, SEC EDGAR, openFDA, and Yahoo Finance, with a single tool to audit a ticker/drug combination and return a forensic verdict.1022 npm5ISC
- AlicenseNot gradedqualityAmaintenanceRead-only biomedical MCP server connecting PubMed, ClinicalTrials.gov, ClinVar, gnomAD, OncoKB, Reactome, KEGG, UniProt, PharmGKB, CPIC, OpenFDA, Monarch Initiative, GWAS Catalog, and more. One command grammar for all biomedical entities — genes, variants, diseases, drugs, trials, articles, phenotypes, pathways, proteins, diagnostics, and adverse events. 27 tools. Apache-2.0 license.1Apache 2.0