io.github.neptun2000/heor-agent
NPM · HEOR-AGENT-MCP · SCANNED SEP 21
HEOR MCP server: literature search, CEA, BIA, NMA/MAIC, HTA dossiers (NICE/FDA/EMA/JCA).
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security89
- No malware found by supply-chain analysis.Pass
- CVE check failed: a known high-severity CVE affects uuid 8.3.2, reached via exceljs > uuid. A fixed version is available. View diagnostics → Fail
- No install/post-install scripts declared.Pass
- 91 of 203 dependencies flagged as unhealthy (6 deprecated). View diagnostics → Partial
Provenance & Transparency45
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 78 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability74
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 19913 tokens (~390/item across 51 items; 51 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management87
- Stability observed for 26 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage91
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 74% of tool parameters carry a description.Partial
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 51 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 51 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
How do I install the io.github.neptun2000/heor-agent MCP server?
io.github.neptun2000/heor-agent runs locally as an npm package, launched with npx -y heor-agent-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
npm · heor-agent-mcp
claude mcp add neptun2000-heor-agent -- npx -y heor-agent-mcp
{
"mcpServers": {
"neptun2000-heor-agent": {
"command": "npx",
"args": [
"-y",
"heor-agent-mcp"
]
}
}
} {
"servers": {
"neptun2000-heor-agent": {
"command": "npx",
"args": [
"-y",
"heor-agent-mcp"
]
}
}
} codex mcp add neptun2000-heor-agent -- npx -y heor-agent-mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"neptun2000-heor-agent": {
"type": "local",
"command": [
"npx",
"-y",
"heor-agent-mcp"
],
"enabled": true
}
}
} openclaw mcp add neptun2000-heor-agent --command npx --arg -y --arg heor-agent-mcp
mcp_servers:
neptun2000-heor-agent:
command: "npx"
args: ["-y", "heor-agent-mcp"] {
"McpServers": {
"neptun2000-heor-agent": {
"Transport": "stdio",
"Command": "npx",
"Arguments": [
"-y",
"heor-agent-mcp"
]
}
}
} assistant mcp add neptun2000-heor-agent -t stdio -c npx -a -y heor-agent-mcp
{
"mcpServers": {
"neptun2000-heor-agent": {
"command": "npx",
"args": [
"-y",
"heor-agent-mcp"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 20 Sept 26 −2
- Security disclosure: unverified → fail ▼ functional
- Stability: pass → 0.83 functional
- 19 Sept 26 0
- Stability: 0.97 → pass security
- Security disclosure: fail → unverified ▼ functional
- 18 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.
- 16 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.
- 13 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 77 to 80. That category is still filling its 30-day observation window: 23 days of observed history at the previous scan, 24 at this one. The score rises as the window fills, whether or not the server changes.
- 12 Sept 26 −3
- Stability: pass → 0.77 functional
- 11 Sept 26 0
- Stability: 0.97 → pass security
- 10 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 21 Sept 2026 · Analysed npm/heor-agent-mcp@1.35.0
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | npm |
Background: How many MCP packages publish verified provenance →
Vulnerabilities 1 finding
| ID | CVE | Severity | Vector | Fix available |
|---|---|---|---|---|
| GHSA-w5hq-g745-h8pq | CVE-2026-41907 | high | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N | yes |
Background: What a vulnerability scan can and cannot prove →
Dependencies 203 packages
| Packages resolved | 203 |
|---|---|
| Deprecated | 6 |
| Stale | 88 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
epidemiology.extract ~168
Build a structured epidemiology extraction table (country × prevalence × incidence × definition × year) from agent-extracted rows. Applies an explicit source-quality hierarchy (IHME GBD/WHO > national survey/registry > systematic review > single observational study) and Hoy et al. 2012 / JBI prevalence-study checklist scoring. Use after literature_search (with literature_search_plan) and screen_abstracts for descriptive epidemiology — replaces risk_of_bias for prevalence/incidence reviews. Pass one row per country/source; the tool ranks preferred estimates per country.
| Name | Type | Req | Description |
|---|---|---|---|
| condition | string | – | – |
| output_format | string | – | – |
| rows | array | yes | – |
| target_countries | array | – | Expected countries (e.g. EU-5 list) — missing countries flagged in output |
No output schema declared.
No examples provided.
evidence.claim_registry ~335
Author evidence claims once and reference them by ID across deliverables (dossiers, publications, payer materials). A claim is a single source-of-truth statement — an ICER, an effect estimate, a prevalence — persisted in the project knowledge base. Actions: 'upsert' (create/update a claim; id auto-derived from the statement if omitted), 'list', 'get', 'remove', and 'import' (auto-register claims from a tool result — pass import_from {source_tool, result} with the structured output of models.cost_effectiveness (→ ICER, incremental QALYs, incremental cost) or models.budget_impact (→ net budget impact); the registry self-populates instead of manual upserts). Each claim carries a numeric_value + value_display + unit + keywords (anchors used by evidence.consistency_check to locate it in prose) + citation + source_tool/run for provenance + status (draft/verified/superseded). Requires an existing project (project.create). Pairs with evidence.consistency_check (detect drift across documents) and publication.draft (reuse claims). Enum values case-insensitive.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | – |
| ai_disclosure_level | string | – | – |
| claim | object | – | – |
| claim_id | string | – | For 'get' / 'remove'. |
| import_from | object | – | For 'import': auto-extract claims from a tool result. source_tool ∈ {models.cost_effectiveness, models.budget_impact}; result = that tool's structured output (the model_results / content object). |
| project_id | string | yes | – |
No output schema declared.
No examples provided.
evidence.clinical_scale ~244
Score neurology & cognitive outcome scales (UMSARS/UPDRS/MDS-UPDRS/ADAS-Cog/MoCA/MMSE). Returns total + subscale scores, MCID-based responder classification, and trajectory comparison vs NNIPPS/PPMI/ADNI reference cohorts. Integrates with jca_pico_scope for MSA (neurology_msa, orphan Phase 2 2028)/PD (neurology_pd)/AD (neurology_ad) indication categories.
| Name | Type | Req | Description |
|---|---|---|---|
| baseline_items | array | – | Optional: baseline scores for change-from-baseline and responder analysis. |
| compare_cohort | string | – | Natural-history reference cohort for trajectory comparison. nnipps=MSA, ppmi=PD, adni=AD. |
| items | array | yes | Per-item scores. Supply all items for complete scoring, or a subset for partial scoring with a note. |
| scale | string | yes | Clinical outcome scale: umsars | updrs | mds_updrs | adas_cog | moca | mmse |
| time_point_months | number | – | Time point in months from baseline (used for trajectory comparison). |
No output schema declared.
No examples provided.
evidence.confounder_expert_template ~286
Generate a clinician/patient interview guide (Pufulete Step 2/3) for the 'unmeasurable' confounders that literature cannot supply — patient treatment preference, tolerability expectation, etc. Pure template (no LLM, no network). Pass confounder_identification's expert_interview_required list as `unmeasurable_confounders`. Each confounder is probed against the two confounding criteria (associated with treatment AND outcome), measurability in available data, and proxy availability, plus DAG-elicitation prompts. Returns a ready-to-paste markdown checklist + structured survey_items.
| Name | Type | Req | Description |
|---|---|---|---|
| ai_disclosure_level | string | – | AI assistance disclosure level appended to the output. "off" = no disclosure (analyst scratch mode); "standard" = default visible block (model, tools called, sources, date, human-review reminder); "s… |
| comparator | string | yes | – |
| indication | string | yes | – |
| intervention | string | yes | – |
| interviewee_role | string | – | – |
| unmeasurable_confounders | array | – | Confounders to interview about (e.g. confounder_identification.expert_interview_required). Omit for an indication-aware default set. |
No output schema declared.
No examples provided.
evidence.confounder_identification ~644
IQWiG / Pufulete 2022 Step 1: systematically identify candidate CONFOUNDER variables for a non-randomised comparison, with full provenance. DETERMINISTIC — you (the agent) read each corpus paper and pass structured `candidate_extractions` (variable_name + source_paper_pmid/doi + source_location + verbatim_snippet); the tool enforces closed-corpus provenance (it NEVER cites a paper outside the corpus), verifies every source via Crossref/PubMed, dedupes, and proposes consolidation HINTS for human review. Emits an expert-interview block for confounders literature cannot supply (patient preference, tolerability). Output is always a DRAFT for human consolidation — never a complete list. Use this for IQWiG/G-BA confounder identification instead of generating confounder lists from memory.
| Name | Type | Req | Description |
|---|---|---|---|
| ai_disclosure_level | string | – | AI assistance disclosure level appended to the output. "off" = no disclosure (analyst scratch mode); "standard" = default visible block (model, tools called, sources, date, human-review reminder); "s… |
| candidate_extractions | array | – | Confounder variables YOU extracted from the corpus. Each MUST cite a paper in corpus_papers. |
| comparator | string | yes | Comparator, e.g. glatiramer acetate |
| comparison_type | string | – | Analysis context. non_randomized (default) = IQWiG/Pufulete CONFOUNDER identification. anchored_itc = EFFECT-MODIFIER identification for an anchored MAIC/STC (adjust for effect modifiers only; progno… |
| corpus_papers | array | – | The defined corpus (closed_corpus mode). Each paper: {pmid?, doi?, title, year?, abstract?, full_text_sections?}. Pass full_text_sections (from literature_fulltext) so the tool can confirm each candi… |
| indication | string | yes | Indication, e.g. relapsing-remitting multiple sclerosis |
| intervention | string | yes | Intervention, e.g. dimethyl fumarate |
| literature_sources | array | – | Sources for open_search mode (passed to literature_search). |
| mode | string | – | closed_corpus (default): only cite papers you pass in corpus_papers. open_search: the tool runs literature_search + screen_abstracts and freezes the screened set as the corpus. |
| outcome | string | – | Optional primary outcome |
| population | string | – | Optional population refinement |
| project_id | string | – | Optional: also load corpus from a project workspace raw/literature store. |
| runs | number | – | Search runs in open_search mode (1-3, default for stability). |
No output schema declared.
No examples provided.
evidence.consistency_check ~250
Detect drift of evidence claims across deliverables (HTA dossier, publication, GVD/AMCP payer materials). Loads claims from the project registry (project_id) and/or takes inline claims, then scans each supplied deliverable's text and flags where a DIFFERENT number sits next to a claim's keywords (drift — e.g. an ICER you updated in the model but not in the dossier) or where a claim is absent. Returns a claim × deliverable matrix, the list of drifting claims, and per-finding detail. Keyword-anchored + numeric: it catches drifting numbers near claim keywords, not paraphrased claims — a 'consistent' result is necessary, not sufficient. Pairs with evidence.claim_registry. Pure detection over caller-supplied text.
| Name | Type | Req | Description |
|---|---|---|---|
| ai_disclosure_level | string | – | – |
| claim_ids | array | – | Optional: restrict the check to these claim ids. |
| claims | array | – | Inline claims (override registry claims with the same id). |
| deliverables | array | yes | Documents to check, each a {name, text}. |
| project_id | string | – | Load claims from this project's registry. Optional if inline claims are supplied. |
No output schema declared.
No examples provided.
evidence.gap_analysis ~327
Generate an integrated Evidence Generation Plan (iEGP). Assess the evidence base across HEOR domains (epidemiology, disease_burden, clinical_efficacy, comparative_effectiveness, safety, economic_cea, budget_impact, hrqol_utilities, adherence, unmet_need, patient_experience) — each with a status (robust/limited/absent/discordant) — and the tool returns the gaps, a recommended evidence-generation activity for each, the tool that operationalises it, the deliverable it unblocks, and a severity-prioritised plan (gaps on decision-critical domains for the chosen context escalate). Optionally fold in discordant_outcomes / single_source_outcomes from evidence.triangulation. Returns a readiness score (% of domains robust) and a prioritised plan to close the gaps. Use after an SLR/triangulation pass to decide what evidence to generate next, and to feed the iEGP deliverable. Pairs with rwe.method_select (how to fill a gap) and workflow.living_evidence (the end-to-end flow). Pure logic; enum values case-insensitive.
| Name | Type | Req | Description |
|---|---|---|---|
| ai_disclosure_level | string | – | – |
| decision_context | string | – | – |
| discordant_outcomes | array | – | Outcomes flagged discordant by evidence.triangulation. |
| domains | array | yes | Evidence-base state per domain. |
| indication | string | yes | – |
| intervention | string | yes | – |
| single_source_outcomes | array | – | Outcomes with only RCT or only RWE evidence. |
No output schema declared.
No examples provided.
evidence.indirect ~350
Compute indirect treatment comparisons using the Bucher method (single common comparator) or frequentist network meta-analysis (full network). Requires user-supplied effect sizes (point estimates + 95% CI) from published trials. Supports MD, OR, RR, HR. Auto-selects method by network structure. When direct head-to-head A-vs-C evidence is also in the network, automatically tests Bucher's consistency assumption (z = (direct − indirect) / SE_diff) per NICE DSU TSD 18 / Cochrane 11.4.3 — flags |z|≥1.96 as 'substantial inconsistency' so the agent can warn the user before relying on the indirect estimate.
| Name | Type | Req | Description |
|---|---|---|---|
| comparisons | array | yes | Direct comparisons with effect sizes. Need at least 2 sharing a common comparator. Ask the user for: point estimate, 95% CI, outcome name, and effect measure (MD/OR/RR/HR) from each trial. |
| decisions | array | – | Methodological decisions made in conversation (source selection, comparator choice, screening criteria, model structure...). Each entry records the choice, the rationale (why), alternatives rejected,… |
| method | string | – | auto (default): Bucher for simple paths, Frequentist NMA for 3+ edges. Or force a specific method. |
| target | object | – | Optional: specific comparison to compute. Omit to compute all possible pairwise comparisons. |
No output schema declared.
No examples provided.
evidence.itc ~487
Assess the feasibility of an indirect treatment comparison (ITC) by walking through the three core assumptions (exchangeability, homogeneity, consistency) and recommending an appropriate method: direct comparison, Bucher, full NMA, anchored MAIC/STC, unanchored MAIC/STC, ML-NMR, NMR/subgroup meta-regression, or infeasible. Cites Cope 2014 (BMC Med), NICE DSU TSD 18 (Phillippo), Signorovitch 2023 (J Dermatol Treatment), and Cochrane Handbook Ch 10-11. Use this BEFORE running evidence.indirect or evidence.population_adjusted to select the right method.
| Name | Type | Req | Description |
|---|---|---|---|
| connected_network | boolean | yes | True if there is a connected evidence network linking the treatments of interest via at least one common comparator. |
| decisions | array | – | Methodological decisions made in conversation (source selection, comparator choice, screening criteria, model structure...). Each entry records the choice, the rationale (why), alternatives rejected,… |
| effect_modifier_imbalance | string | – | Severity of imbalance in identified effect modifiers across trial populations. Default 'unknown'. |
| effect_modifiers_identified | boolean | – | True if effect modifiers have been identified through clinical input or literature review. Default false. |
| h2h_available | boolean | – | True if at least one head-to-head RCT compares the treatments directly. Default false. |
| heterogeneity_i2_pct | number | – | Optional: I² statistic (%) across studies of the same comparison. If absent, homogeneity is assessed qualitatively. |
| ipd_available_for_intervention | boolean | – | True if individual patient data (IPD) are available from the sponsor's trial. Default false. |
| n_studies_per_comparison | number | – | Optional: minimum number of studies per pairwise comparison. Informs choice between Bucher (k=1) and NMA (k≥2). |
| outcome_type | string | – | Primary outcome type — guides estimator recommendations. |
| subgroup_data_available | boolean | – | True if subgroup data are available in comparator trials for adjustment. Default false. |
No output schema declared.
No examples provided.
evidence.network ~97
Analyze literature search results to build an evidence network map. Extracts intervention-comparator pairs from titles and abstracts, constructs a treatment comparison network, and assesses NMA (network meta-analysis) feasibility. Pass the results array from a prior literature.search call.
| Name | Type | Req | Description |
|---|---|---|---|
| query | string | – | Original search query (optional, for context) |
| results | array | yes | Array of LiteratureResult objects from a prior literature.search call (use output_format='json') |
No output schema declared.
No examples provided.
evidence.population_adjusted ~357
⚠️ EXPERIMENTAL / orientation-only. Approximate population-adjusted indirect comparison using summary-level statistics (mean, SD per covariate). True MAIC/STC per NICE DSU TSD 18 requires individual patient data (IPD) for one trial. This tool inflates the SE of a Bucher indirect comparison based on covariate imbalance (MAIC-style ESS penalty) and applies a simple linear adjustment based on standardized mean differences (STC-style). Point estimates should be interpreted as approximate — not submission-ready. For a definitive analysis, use IPD with an outcome regression model.
| Name | Type | Req | Description |
|---|---|---|---|
| decisions | array | – | Methodological decisions made in conversation (source selection, comparator choice, screening criteria, model structure...). Each entry records the choice, the rationale (why), alternatives rejected,… |
| effect_modifiers | array | yes | Names of covariates that are effect modifiers (must appear in both trials' covariates) |
| index_trial | object | yes | Trial with data to be reweighted (the trial for which you want to adjust) |
| method | string | – | auto (default): MAIC when >=2 modifiers and N>=50, else STC |
| outcome_name | string | – | Name of the outcome being compared (e.g., 'HbA1c change') |
| output_format | string | – | – |
| project | string | – | Project ID for persistence |
| target_trial | object | yes | Trial whose population is the matching target |
No output schema declared.
No examples provided.
evidence.risk_of_bias ~250
Assess risk of bias for a set of studies using the appropriate Cochrane instrument: RoB 2 (RCTs), ROBINS-I (observational studies), or AMSTAR-2 (systematic reviews/meta-analyses). Instrument is auto-detected from study_type or can be specified. Judgments are inferred from abstract text — domains without sufficient reporting are marked Unclear. Returns a per-study table and a rob_results object to pass to hta_dossier_prep for evidence-based GRADE assessment. Accepts `studies` as a single object OR an array; auto-wraps singletons. Enum values are case-insensitive — `"RoB2"`/`"rob2"`, `"AUTO"`/`"auto"` all work.
| Name | Type | Req | Description |
|---|---|---|---|
| instrument | string | – | Assessment instrument. auto (default) detects from study_type. rob2 for RCTs, robins_i for observational, amstar2 for systematic reviews. |
| outcomes | array | – | Outcomes of interest for contextual domain assessment (optional) |
| output_format | string | – | – |
| studies | array | yes | Array of study objects from screen_abstracts or literature_search (output_format='json') |
No output schema declared.
No examples provided.
evidence.survival ~345
Fit parametric survival distributions (Exponential, Weibull, Log-logistic, Log-normal, Gompertz) to either patient-level event-time data (preferred — true right-censored MLE per Collett 2015 / NICE DSU TSD 14) OR Kaplan-Meier step-summary data (legacy approximation, used when only published KM digitization is available). Returns AIC/BIC model comparison and extrapolation table. Supply EXACTLY ONE of `event_data` (patient-level rows) or `km_data` (KM table).
| Name | Type | Req | Description |
|---|---|---|---|
| ai_disclosure_level | string | – | AI assistance disclosure level. "off" = no disclosure; "standard" = default (model/tools/sources/date + human-review reminder); "submission" = adds ISPOR ELEVATE-GenAI citation. Default is tool-speci… |
| endpoint | string | – | Endpoint name (e.g., 'OS', 'PFS', 'DFS'). Default: 'OS'. |
| event_data | array | – | Patient-level event-time rows (PREFERRED — true MLE per NICE DSU TSD 14). Each row: { time, event } where event=1 for an observed event, event=0 for right-censoring. At least 5 rows required. |
| km_data | array | – | Kaplan-Meier step-summary data points (LEGACY approximation; use event_data when patient-level data is available). At least 3 required. Extract from published KM curves or trial reports. |
| output_format | string | – | – |
| project | string | – | Project ID for persistence |
| time_unit | string | – | Time unit for KM data (default: months) |
No output schema declared.
No examples provided.
evidence.triangulation ~339
Triangulate RCT vs real-world evidence per outcome. For each outcome supply what the randomised trials show (rct) and what real-world evidence shows (rwe) — each as a direction of benefit (favors: intervention/comparator/no_difference) plus an optional point estimate + measure. The tool classifies concordance (concordant / discordant / partial / single-source), and when both bodies give an estimate on the SAME measure, whether the real-world effect is LARGER (long-term use, broad heterogeneous populations) or SMALLER (efficacy–effectiveness gap) — sign-normalised by benefit_direction so 'larger' always means more benefit. Returns a per-outcome concordance table, a key message per outcome, an overall triangulation statement, and a concordance summary. Use to build the 'literature review of RCTs and RWE — key message per relevant outcome' section of a dossier, or to pressure-test whether RWE corroborates trial efficacy before a submission. RWE is treated as complementary to, not a substitute for, RCTs. Pure logic, no external calls; enum values case-insensitive.
| Name | Type | Req | Description |
|---|---|---|---|
| ai_disclosure_level | string | – | AI assistance disclosure level. "off" = no disclosure; "standard" = default; "submission" = adds ISPOR ELEVATE-GenAI citation. |
| indication | string | yes | – |
| intervention | string | yes | – |
| magnitude_tolerance | number | – | Relative tolerance for calling two effect estimates 'similar' (0.15 = within 15%). |
| outcomes | array | yes | – |
No output schema declared.
No examples provided.
evidence.unmet_need ~437
Generate a structured unmet need section for HTA dossiers (NICE STA, EMA, FDA, IQWiG, HAS, JCA, GVD, AMCP). Consume-only: first retrieve evidence with literature_search, then pass only cited facts across 4 HEOR dimensions — disease burden, treatment landscape, QoL impact, economic burden. By default (auto_check_regulatory=true), automatically checks current regulatory status of comparators in treatment_landscape.current_soc via primary-source databases (OpenFDA/EMA EPI) and injects verbatim label quotes with auto-numbered citations. Degrades gracefully on API errors — never blocks dossier output. Set auto_check_regulatory:false to skip. Produces a standardised markdown section plus a 1-paragraph unmet_need_summary for downstream tools. Pipe unmet_need_summary into hta_dossier(unmet_need_summary:...) to pre-fill NICE Section B (unmet need) or GVD Section 4. Design log #23 + #26.
| Name | Type | Req | Description |
|---|---|---|---|
| auto_check_regulatory | boolean | – | When true (default), automatically fans out regulatory.status_check for each drug in treatment_landscape.current_soc × inferred regions. Injects verbatim label quotes inline with auto-numbered citati… |
| disease_burden | object | – | Epidemiology data for the indication |
| drug | string | yes | Drug or intervention name |
| economic_burden | object | – | Direct and indirect economic burden of the disease |
| indication | string | yes | Disease/condition being treated |
| jurisdictions | array | yes | Target market(s) for this unmet need assessment |
| literature_evidence | array | – | Optional: pass literature_search results here to include as supporting evidence |
| qol_impact | object | – | Patient-reported and health-related quality of life impact |
| treatment_landscape | object | – | Current standard of care and its limitations. Use only evidence retrieved by literature_search or other audited sources. Regulatory/approval claims require current label/regulatory citation support;… |
No output schema declared.
No examples provided.
examples ~111
Get a pre-filled, copy-runnable JSON input for any of the heavy-schema tools (cost_effectiveness_model, budget_impact_model, survival_fitting, population_adjusted_comparison, evidence_indirect). Use when you want to demo a tool but don't want to invent inputs from scratch — the example is editable so you can tweak intervention names, costs, populations, etc. before calling the actual tool.
| Name | Type | Req | Description |
|---|---|---|---|
| tool | string | – | Which tool to get an example for. Omit to list all available examples. |
No output schema declared.
No examples provided.
governance.self_check ~422
Score an AI-assisted HTA/HEOR workflow against 6 governance dimensions (transparency, citation validation, human-in-the-loop, PHI/data handling, bias & equity, auditability), each traced to the verified ELEVATE-GenAI reporting domains (ISPOR Working Group on Generative AI, Value in Health 2025). Two modes: 'describe' (free-text workflow_description + structured probes — a blank probe scores 'insufficient', never a pass) and 'audit_record' (pass a prior HEORAgent AuditRecord to auto-derive transparency/citation/auditability). Returns a Red/Amber/Green/Insufficient scorecard, a use_case-gated verdict ('any Red blocks submission-ready'), tailored mitigations, a pipeable governance_summary, and an ELEVATE disclosure block. Governance subset only — does not score ELEVATE's model-evaluation domains (robustness, calibration, deployment/efficiency). Design log #34.
| Name | Type | Req | Description |
|---|---|---|---|
| ai_disclosure_level | string | – | AI assistance disclosure level appended to the output. "off" = no disclosure (analyst scratch mode); "standard" = default visible block (model, tools called, sources, date, human-review reminder); "s… |
| audit_record | object | – | A prior HEORAgent AuditRecord (audit_record mode). Auto-derives transparency/citation/auditability. |
| context | object | – | – |
| mode | string | – | 'describe' = score a workflow_description + probes; 'audit_record' = auto-derive from a HEORAgent AuditRecord. |
| probes | object | – | One probe per dimension. Each is {answer: 'yes'|'no'|'partial'|null, detail?}. Omit or null → scored 'insufficient' (never a pass). |
| workflow_description | string | – | Free-text description of the AI-assisted workflow: what the AI does and where its output goes. |
No output schema declared.
No examples provided.
hta.dossier ~1,246
Structure evidence into HTA body-specific submission format (NICE STA, EMA, FDA, IQWiG, HAS, EU JCA, or Global Value Dossier). Produces draft sections with gap analysis and auto-GRADE evidence quality tables. Accepts output from literature.search and models.cost_effectiveness. Enum values are case-insensitive — `"NICE"`/`"nice"`, `"STA"`/`"sta"` etc. all work.
| Name | Type | Req | Description |
|---|---|---|---|
| ai_disclosure_level | string | – | AI assistance disclosure level. "off" = no disclosure; "standard" = default (model/tools/sources/date + human-review reminder); "submission" = adds ISPOR ELEVATE-GenAI citation. Default is tool-speci… |
| confounder_section | string | – | Optional: the markdown_report from confounder_identification (IQWiG Pufulete Step 1). Rendered verbatim as an 'Annex: Confounder Identification' before the gap analysis. Design log #43. |
| decisions | array | – | Methodological decisions made in conversation (source selection, comparator choice, screening criteria, model structure...). Each entry records the choice, the rationale (why), alternatives rejected,… |
| drug_name | string | yes | Generic or brand name of the drug/intervention. |
| evidence_summary | – | – | Clinical evidence input. Accepts: a text summary string, OR a JSON array of LiteratureResult objects from literature.search (use output_format='json'). When passed as array, auto-generates a GRADE ev… |
| health_inequalities | object | – | Health inequalities evidence per NICE PMG36 May 2025 modular update. Required by NICE for interventions affecting disadvantaged groups. intervention_impact: 'narrows'/'neutral'/'widens'/'unknown'. |
| heterogeneity_per_outcome | object | – | Optional: I² and study count per outcome (from evidence_indirect tool). When provided, GRADE inconsistency is computed from I² instead of heuristic. Example: { 'overall survival': { i_squared_pct: 45… |
| hta_body | string | yes | HTA body/dossier format. 'nice'=UK NICE STA; 'ema'=EMA CTD; 'fda'=FDA prescribing info; 'iqwig'=Germany AMNOG; 'has'=France transparency committee; 'jca'=EU Joint Clinical Assessment (Reg. 2021/2282)… |
| indication | string | yes | Disease or condition being treated (e.g., 'type 2 diabetes', 'non-small cell lung cancer'). |
| mfn_context | object | – | Optional MFN pricing context. When basket_prices is supplied and hta_body is one of {nice, ema, fda, iqwig, has, jca, gvd}, renders an MFN Exposure section with ceiling math and gap-to-US analysis. D… |
| model_results | – | – | JSON output from models.cost_effectiveness — used to populate the Economic Evidence Summary section. |
| output_format | string | – | Output format. 'text' returns markdown; 'json' returns structured sections; 'docx' generates a Word document and saves to disk. |
| picos | array | – | JCA-specific: list of PICOs from the scoping decision. Each PICO generates its own dossier section. If omitted, a default single PICO is generated. |
| project | string | – | Project ID for knowledge base persistence. When set, dossier draft is saved to ~/.heor-agent/projects/{project}/raw/dossiers/ |
| pv_classification | object | – | Optional: structured PV classification from the pv_classify tool. When provided, the dossier includes a Pharmacovigilance Plan section with GVP module, ENCePP template, submission obligations, and RM… |
| regulatory_landscape | array | – | Optional: array of RegulatoryStatusResult objects from regulatory.status_check (via hta_workflow Phase 3.6). When provided and hta_body in {nice, jca, gvd}, renders a Regulatory Landscape section wit… |
| rob_results | – | – | Output from the evidence.risk_of_bias tool. When provided, the GRADE Risk of Bias domain uses the structured judgment (rob_judgment, downgrade, rationale) instead of a heuristic estimate. |
| severity_modifier | object | – | NICE PMG36 severity modifier inputs (replaced end-of-life modifier, April 2022). Provide absolute_qaly_shortfall (years) and/or proportional_qaly_shortfall (0-1). Modifier weight: <12 absolute AND <0… |
| submission_type | string | yes | Submission type. 'sta'/'mta' for NICE; 'initial'/'renewal'/'variation' for JCA; 'early_access' for accelerated pathways. |
| unmet_need_summary | string | – | Optional: 1-paragraph unmet need synthesis from the evidence.unmet_need tool. Pipe evidence.unmet_need result.unmet_need_summary here. Prepended to the Unmet Need section for NICE (Section B) and GVD… |
| upgrading_per_outcome | object | – | Optional: GRADE upgrading flags per outcome for observational evidence (Guyatt 2011). Keys are outcome names; values specify large_effect ('none'/'large'/'very_large'), dose_response (boolean), and p… |
No output schema declared.
No examples provided.
hta.gba_ppdd ~422
Verifiable PPDD evidence engine for a German G-BA (AMNOG) benefit assessment. Produces a Peers / Precedent / Drift / Delta pack for a drug-class + indication where every fact is provenance-tagged: peers are asserted only from a curated, verified G-BA precedent knowledge base (or agent citations verified via verify_citations); anything unverifiable is reported as `unknown`, NEVER fabricated. Recomputes peer relevance under each candidate zVT (appropriate comparator) — the dominant AMNOG risk. Deterministic (no LLM). Feeds hta_review_simulation and the virtual G-BA panel. YOU (the agent) supply peer_drugs (class members) and candidate_facts with citations; the tool enforces provenance. Design log #49.
| Name | Type | Req | Description |
|---|---|---|---|
| ai_disclosure_level | string | – | AI assistance disclosure level appended to the output. "off" = no disclosure (analyst scratch mode); "standard" = default visible block (model, tools called, sources, date, human-review reminder); "s… |
| candidate_facts | array | – | Agent-extracted Peers/Precedent/Drift/Delta facts, each with a citation (doi/pmid/url). Verified via verify_citations; unverified facts are labelled, not asserted. |
| drug | string | yes | Assessed drug (generic). |
| drug_class | string | – | Drug class, e.g. 'IL-17 inhibitor'. |
| indication | string | yes | Indication, e.g. 'plaque psoriasis'. |
| line_of_therapy | string | – | e.g. '2L after anti-TNF'. |
| peer_drugs | array | – | Class members to look up as peers in the G-BA precedent KB (each returns its rating + zVT, or `unknown`). |
| zvt_candidates | array | – | Candidate appropriate comparators (zVT) to run as scenarios. |
No output schema declared.
No examples provided.
hta.living_gvd ~244
Maintain a Living Global Value Dossier as a diffable artifact, so a refresh regenerates only the sections whose figures changed instead of the whole GVD. Actions: 'snapshot' (record which registry claims each GVD section is built from — pass sections [{name, claim_ids}] — capturing each claim's current value as the baseline) and 'refresh' (diff the snapshot against the live claim registry and return the stale sections to regenerate, with old→new values per claim). Builds on evidence.claim_registry (the single source of truth) and pairs with workflow.living_evidence (which calls this on each living-evidence cycle). Diff is by value (0.5% tolerance / exact), and also flags sections whose claims were removed/superseded. Requires an existing project. This tool computes the diff and regeneration list; regeneration itself is done by hta.dossier. Enum values case-insensitive.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | – |
| ai_disclosure_level | string | – | – |
| project_id | string | yes | – |
| sections | array | – | For 'snapshot': the GVD sections and the claim ids each is built from. |
No output schema declared.
No examples provided.
hta.panel_simulation ~626
Virtual HTA institutional-panel simulator. hta_body='gba' (default): faithful G-BA §35a hearing (mundliche Anhoerung) roster - IQWiG/Biostatistician, G-BA/GKV-SV Assessor, KOL/Clinical Expert, Patient Representative. hta_body='nice': NICE EAG statistician/technical team/clinical expert/patient expert. hta_body='eu_jca': JCA assessor/co-assessor/member-state PICO scope (requires drug_class). hta_body='us_payer': payer medical director/pharmacoeconomist. Each seat thin-wraps an existing deterministic HEORAgent tool over ONE shared, citation-verified evidence pack (pass the output of hta.gba_ppdd as ppdd_pack for the gba body). Argues value/evidence/comparator scope/access - NEVER a clinical treatment recommendation (enforced by an MLR guard that rewrites any 'recommend/prefer/choose X over Y' phrasing). Re-runs comparator-sensitive seats under each candidate zVT (appropriate comparator) via zvt_scenarios. Optional question_set batch mode fans anticipated dossier questions across the relevant seats. Deterministic (no LLM). Every artefact carries a SYNTHETIC-simulation banner and requires human review before submission use. Design log #50.
| Name | Type | Req | Description |
|---|---|---|---|
| ai_disclosure_level | string | – | AI assistance disclosure level appended to the output. "off" = no disclosure (analyst scratch mode); "standard" = default visible block (model, tools called, sources, date, human-review reminder); "s… |
| convene | array | – | Which seats to convene. Default: the full roster for the selected hta_body. |
| dossier_markdown | string | – | Fallback when no ppdd_pack is supplied. |
| dossier_sections | object | – | – |
| drug | string | yes | – |
| drug_class | string | – | Required by jca.pico_scope for hta_body='eu_jca' seats; defaults to 'other' (with a caveat finding) when omitted. Ignored for other bodies. |
| hta_body | string | – | HTA body. Default: gba. Each body has its own default seat roster (see convene). |
| indication | string | yes | – |
| model_results | object | – | – |
| pico | object | – | – |
| ppdd_pack | object | – | The verified evidence pack from hta.gba_ppdd (design log #49). Pass its content object directly. |
| question_set | array | – | Batch 'Q&A Mailbox' mode: a set of anticipated dossier questions, each fanned to the relevant convened seat(s) and answered by reusing the already-computed base-scenario findings (no new tool call).… |
| zvt_scenarios | array | – | Candidate appropriate comparators (zVT) to re-run as scenarios. |
No output schema declared.
No examples provided.
hta.review_simulation ~506
Predict the clarification questions an HTA body will ask about a dossier, BEFORE submission. Consumes an hta.dossier / hta.workflow output (dossier_markdown), structured dossier_sections, or just {drug, indication, pico, model_results} for a pre-mortem. Runs a deterministic gap/risk scan over a 10-category taxonomy (comparator, indirect comparison, survival extrapolation, clinical risk-of-bias, economic-model structure, utilities, decision uncertainty, subgroups, real-world evidence, innovation/added-benefit) and returns ranked ANTICIPATED questions with rationale, severity (critical/standard/minor), what-the-committee-looks-for, and a suggested response. Precedent links are whitelist-only (verified NICE TA table) and never claim a question was historically asked. v1 bodies: NICE EAG and G-BA/IQWiG (FDA, HAS, EU JCA → v2). Fully deterministic; carries an ISPOR ELEVATE-GenAI disclosure block. Design log #38.
| Name | Type | Req | Description |
|---|---|---|---|
| ai_disclosure_level | string | – | AI assistance disclosure level appended to the output. "off" = no disclosure (analyst scratch mode); "standard" = default visible block (model, tools called, sources, date, human-review reminder); "s… |
| dossier_markdown | string | – | The dossier draft (e.g. piped from hta.dossier or hta.workflow output). The primary input — the scan reads this. |
| dossier_sections | object | – | Structured dossier text as an alternative/supplement to dossier_markdown. |
| drug | string | yes | Generic drug name. |
| hta_body | string | – | HTA body to simulate. 'nice' = NICE EAG clarification letter; 'gba_iqwig' = G-BA/IQWiG formal-assessment objections. FDA, HAS, EU JCA are v2. |
| indication | string | yes | Indication / population. |
| max_questions | number | – | Cap on returned questions (highest severity kept first). The summary still reports the full count. |
| model_results | object | – | Economic-model results object (from cost_effectiveness_model) if no dossier_markdown is supplied — signals that a model exists. |
| pico | object | – | PICO. comparator drives the comparator and indirect-comparison detectors. |
No output schema declared.
No examples provided.
hta.utility ~295
Look up EQ-5D value set characteristics (UK 3L, England 5L, new UK 5L 2026, NICE DSU mapping) or estimate the ICER/QALY impact of the new UK EQ-5D-5L value set for a given indication type. Cites Biz, Hernández Alava, Wailoo (2026) Value in Health. Use when user asks about NICE 5L transition, UK utility value sets, or impact on NICE STA submissions.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | 'lookup' returns a single value set; 'compare' returns all four side-by-side; 'estimate_impact' returns ICER/QALY change estimates for an indication type. |
| base_icer | number | – | Optional: current ICER to project forward under new UK 5L. |
| base_incremental_qaly | number | – | Optional: current incremental QALY gain to project forward under new UK 5L. |
| indication_type | string | – | Indication category (required for 'estimate_impact'). 'non_cancer_qol_only' = chronic QoL-only conditions (migraine, UC, atopic dermatitis, HS, plaque psoriasis) — sees the biggest ICER increase. |
| value_set | string | – | Value set id (required for 'lookup'). 'uk_5l_new' is the 2026 one under NICE consultation. |
No output schema declared.
No examples provided.
hta.workflow ~999
End-to-end HTA submission orchestrator. One call runs literature_search (with PRISMA-style stability via runs=N) → screen_abstracts (PICO filter) → risk_of_bias (auto RoB 2/ROBINS-I/AMSTAR-2) → cost_effectiveness_model (Markov + 1k PSA, defaults from indication) → hta_dossier (auto-GRADE downgrade from RoB output) → validate_links (post-hoc URL audit). Returns a combined report with per-phase timings, the full dossier draft, and the URL validation table. Use as a single-shot drop-in replacement for the 4-5 separate prompts a generic LLM would need to chain these tools manually. Each phase wrapped in safe-run so single-step failures do not abort the pipeline.
| Name | Type | Req | Description |
|---|---|---|---|
| ai_disclosure_level | string | – | AI assistance disclosure level. "off" = no disclosure; "standard" = default (model/tools/sources/date + human-review reminder); "submission" = adds ISPOR ELEVATE-GenAI citation. Default is tool-speci… |
| auto_check_regulatory | boolean | – | When true (default), Phase 3.6 fans out regulatory.status_check across comparators from pico.comparator and unmet_need_inputs.treatment_landscape.current_soc. Results piped into hta_dossier as regula… |
| ce_inputs | object | – | Optional cost-effectiveness model inputs. Sensible defaults applied when omitted (efficacy_delta=0.25; drug_cost_annual=1000; SoC=0). |
| confounder_candidate_extractions | array | – | Optional agent-extracted confounder candidates for Phase 2.5; each must cite a screened paper (pmid/doi/title). Design log #43. |
| decisions | array | – | Methodological decisions made in conversation (source selection, comparator choice, screening criteria, model structure...). Each entry records the choice, the rationale (why), alternatives rejected,… |
| drug | string | yes | Drug or intervention name. |
| drug_class | string | – | – |
| fetch_full_text | boolean | – | When true (with include_confounder_identification=true), Phase 2.4 runs literature_fulltext over the screened papers and feeds the open-access Methods/Results sections + baseline tables into confound… |
| hta_body | string | – | Target HTA body for the dossier draft. |
| include_confounder_identification | boolean | – | When true, Phase 2.5 runs confounder_identification (IQWiG Pufulete Step 1) in closed_corpus mode over the screened literature and appends a 'Confounder Identification' annex. Design log #43. |
| indication | string | yes | Disease or condition (free text). |
| is_orphan | boolean | – | Orphan-designated medicinal product. Affects JCA scope eligibility (orphans enter JCA scope 2028 vs 2030 for general medicinal products). |
| jurisdictions | array | – | – |
| literature_runs | number | – | Number of dedup-stability passes for the literature_search phase. 3 is the project default for HTA-grade reproducibility. |
| max_literature_results | number | – | – |
| perspective | string | – | Economic perspective for the cost-effectiveness model phase. |
| pico | object | – | Optional PICO criteria for the screening phase (defaults derived from drug + indication). |
| require_real_ce_inputs | boolean | – | When true, SKIP the cost-effectiveness phase unless ce_inputs supplies real drug/comparator costs + an effect measure, instead of running it on fabricated defaults and emitting a placeholder ICER. De… |
| skip_ce_model | boolean | – | Skip the cost-effectiveness model phase (e.g., for clinical-only dossiers). |
| sources | array | – | – |
| submission_type | string | – | – |
| unmet_need_inputs | object | – | Optional structured inputs for Phase 3.5 (evidence.unmet_need). Only consumed when hta_body='gvd'. When supplied, the orchestrator runs evidence.unmet_need and pipes the resulting unmet_need_summary… |
No output schema declared.
No examples provided.
icf.readability_check ~204
Score the readability of an Informed Consent Form (ICF) text. Returns Flesch-Kincaid Grade Level, Flesch Reading Ease, Gunning Fog Index, SMOG Grade, plus per-sentence breakdown identifying the worst offenders, medical-jargon detection with plain-language alternatives, and a pass/borderline/fail verdict vs a target grade level (default 8 per FDA / NIH guidance). Pairs with irb_review when planning a study — investigators paste the ICF draft, get back a concrete rewrite list. Pure logic, no external API.
| Name | Type | Req | Description |
|---|---|---|---|
| icf_text | string | yes | The ICF body text. Plain text or markdown both work. |
| jargon_check | boolean | – | Whether to run the medical-jargon dictionary lookup. Default true. |
| target_grade_level | integer | – | Target US grade level for FKGL pass verdict. FDA/NIH typically 8; some IRBs use 6 (stricter). |
No output schema declared.
No examples provided.
irb.review ~755
Classify a planned study under 45 CFR 46 (US Common Rule) + EU CTR 536/2014 to produce an IRB / Ethics Committee submission scaffold. Returns: review tier (exempt §46.104 cat 1-8 / expedited §46.110 cat 1-7 / full-board §46.108), EU CTR review path with timeline, vulnerable-population obligations (Subpart B/C/D), GDPR Art. 9 + HIPAA §164.514 data-management plan, SAE-reporting framework (CTR Annex III / FDA IND / PSUR), ICF complexity tier, COI framework (PHS 42 CFR 50 / EU CTR Art. 14), and a ready-to-paste cover letter. v1 covers EU+US; UK/Japan/Canada planned for v2. Optional pv_classification input ties IRB review to the regulatory PV category — when primary_category is PASS_imposed, SAE timelines override to CTR Annex III. Enum values are case-insensitive — `"interventional"`/`"Interventional"`, `"us_irb"`/`"US_IRB"` etc. all work.
| Name | Type | Req | Description |
|---|---|---|---|
| benign_behavioural | boolean | – | Set true for benign behavioural interventions in adults (45 CFR 46.104(d)(3)). |
| blood_draw_within_limits | boolean | – | Set true for blood collection within OHRP volume limits (45 CFR 46.110 cat 2). |
| broad_consent_obtained | boolean | – | Set true when broad consent has been obtained for secondary research / specimen storage (45 CFR 46.104(d)(7-8)). |
| data_handling | string | yes | – |
| exempt_category_hint | string | – | Hint: flag this as 45 CFR 46.104(d)(1) educational practices research. |
| expedited_category_claim | array | – | Expedited review categories per 45 CFR 46.110 (1-7) the investigator believes apply. Tool will validate; if it disagrees, both are surfaced as advisory_warnings. |
| federal_demonstration | boolean | – | Set true for federally supported research / demonstration project (45 CFR 46.104(d)(5)). |
| funding_source | string | yes | – |
| indication | string | yes | – |
| intervention | string | yes | – |
| jurisdictions | array | – | – |
| marketed_drug | boolean | – | Set true when the study uses a marketed drug per labeling (drives expedited cat 1, post-marketing PSUR framework). |
| multi_site | boolean | – | – |
| noninvasive_collection | boolean | – | Set true for prospective biospecimen collection by noninvasive means (45 CFR 46.110 cat 3). |
| noninvasive_procedure | boolean | – | Set true for noninvasive data collection (ECG, EEG, blood pressure, ultrasound) (45 CFR 46.110 cat 4). |
| population_includes_decisionally_impaired | boolean | – | – |
| population_includes_pediatric | boolean | – | – |
| population_includes_pregnant | boolean | – | – |
| population_includes_prisoners | boolean | – | – |
| pv_classification | object | – | Optional structured output from pv_classify. Only primary_category is read; PASS_imposed triggers CTR Annex III SAE timelines. |
| recording_collection | boolean | – | Set true for voice / digital / image recording collection (45 CFR 46.110 cat 6). |
| risk_level | string | – | – |
| study_design | string | yes | – |
| taste_test | boolean | – | Set true for taste / food-quality / consumer-acceptance evaluation (45 CFR 46.104(d)(6)). |
No output schema declared.
No examples provided.
jca.pico_scope ~449
Produce the canonical EU Joint Clinical Assessment (JCA) PICO matrix for a drug-indication pair. Returns a consolidated PICO list (per JCA process under Reg. 2021/2282) plus country-specific comparator universes, outcome instrument preferences, population subgroup focus, and a heterogeneity warning. Pipe `pico_matrix.picos` directly into `hta_dossier({hta_body:"jca", picos: ...})`. v1 covers DE/FR/IT/ES/NL + UK (post-Brexit context). Heterogeneity warning fires at ≥3 distinct comparator molecules across ≥2 jurisdictions — a tool-level assumption, not a published EUnetHTA threshold; treat the warning as a prompt to run evidence_network + itc_feasibility, not as a definitive diagnosis. NSCLC EGFR-mutant comparator detail is currently modeled only for line_of_therapy="second_line"; other lines use a generic chemotherapy anchor with a warning. Enum values are case-insensitive — `"DE"`/`"de"`, `"first_line"`/`"First_Line"` etc. all work.
| Name | Type | Req | Description |
|---|---|---|---|
| biomarker_status | string | – | Optional biomarker status (e.g., 'EGFR T790M positive', 'PD-L1 TPS ≥50%'). |
| drug | string | yes | Drug name. |
| drug_class | string | yes | – |
| force_proceed_out_of_scope | boolean | – | Override the JCA scope eligibility check. Default false. Set true to produce a JCA-style matrix anyway when the indication is not yet in JCA scope (e.g., for protocol-design or anticipatory market-ac… |
| indication | string | yes | Disease/condition. |
| is_orphan | boolean | – | Optional. Orphan-designated medicinal product. Affects JCA scope eligibility (orphans enter scope from 13 January 2028 vs 13 January 2030 for general medicinal products). |
| jurisdictions | array | – | – |
| line_of_therapy | string | – | – |
| mechanism_of_action | string | – | – |
| regulatory_context | string | – | – |
No output schema declared.
No examples provided.
knowledge.read ~82
Read a file from a project's raw/ or wiki/ tree. Path is relative to project root. Only raw/ and wiki/ subtrees accessible.
| Name | Type | Req | Description |
|---|---|---|---|
| path | string | yes | Relative path (e.g. 'wiki/trials/sustain-6.md' or 'raw/literature/pubmed_12345.md') |
| project | string | yes | Project ID |
No output schema declared.
No examples provided.
knowledge.search ~136
Search a project's knowledge base (raw/ and wiki/) for text matches. Returns file paths with line numbers and snippets. Use this to find previously-retrieved literature, model runs, and compiled wiki content without re-querying external APIs.
| Name | Type | Req | Description |
|---|---|---|---|
| case_sensitive | boolean | – | Case-sensitive search (default false) |
| max_results | number | – | Max matches to return (default 20, max 100) |
| paths | array | – | Which subtrees to search. Default: both. |
| project | string | yes | Project ID (must exist) |
| query | string | yes | Search query — multi-term searches match ANY term (OR) |
No output schema declared.
No examples provided.
knowledge.write ~121
Write a file to the project's wiki/ tree. Path MUST start with 'wiki/' and end with '.md'. Use this to compile/organize evidence from raw/ files into a structured knowledge base. Supports Obsidian-style [[wikilinks]].
| Name | Type | Req | Description |
|---|---|---|---|
| content | string | yes | Markdown content. Can include YAML frontmatter and [[wikilinks]]. |
| path | string | yes | Relative path starting with 'wiki/', ending with .md (e.g. 'wiki/trials/sustain-6.md') |
| project | string | yes | Project ID |
No output schema declared.
No examples provided.
literature.fulltext ~331
Retrieve FULL TEXT (Methods/Results sections + baseline/results tables) for already-identified articles by PMID, PMCID, or DOI, from Europe PMC (PMC open-access subset + author manuscripts + preprints). License-gated: non-open-access articles return NO body text (full_text_available:false) — only a pointer. Use AFTER literature_search/screen_abstracts to read the methods text that abstracts omit — e.g. for confounder_identification (baseline-characteristics tables), risk_of_bias (randomization/blinding text), or survival/ITC data extraction. Deterministic fetch (no LLM); you read the returned sections. Pass up to 20 articles.
| Name | Type | Req | Description |
|---|---|---|---|
| ai_disclosure_level | string | – | AI assistance disclosure level appended to the output. "off" = no disclosure (analyst scratch mode); "standard" = default visible block (model, tools called, sources, date, human-review reminder); "s… |
| articles | array | yes | Articles to retrieve (max 20). Each needs at least one of pmid / pmcid / doi. |
| force_refresh | boolean | – | Bypass the 24h cache and re-fetch. Default false. |
| include_tables | boolean | – | Include extracted tables (baseline characteristics, results) separately from prose. Default true. |
| max_chars_per_article | number | – | Per-article character cap on prose sections (2000–200000, default 60000). Oversized bodies are truncated with a marker. |
No output schema declared.
No examples provided.
literature.living_review ~413
Protocol-locked LIVING systematic literature review with delta refresh. Stateless: the tool never stores anything — the caller persists state. Two modes: 'init' locks a protocol, runs a baseline literature.search, and returns the baseline records for you to persist; 'refresh' takes the protocol + your previous_records, re-runs the search, and returns the delta (new/dropped records, a deterministic material-change flag, recommended downstream re-runs, and the next-refresh date). Material change fires on: a new RCT, ≥ threshold new records, or a conference late-breaker. Cadence (monthly/quarterly/half_yearly/annual/conference_adhoc) is a recommendation surfaced to your scheduler (e.g. Vercel Cron) — there is no in-server timer. Pipe a material refresh into evidence_network / itc_feasibility. Design log #39.
| Name | Type | Req | Description |
|---|---|---|---|
| ai_disclosure_level | string | – | AI assistance disclosure level appended to the output. "off" = no disclosure (analyst scratch mode); "standard" = default visible block (model, tools called, sources, date, human-review reminder); "s… |
| as_of | string | – | ISO date the refresh runs (defaults to today); drives next_refresh_due. |
| mode | string | yes | 'init' = lock protocol + baseline search; 'refresh' = re-run + diff vs previous_records. |
| new_records_threshold | number | – | Material-change threshold for new-record count. |
| previous_records | array | – | refresh only — the prior run's record set, from your store (e.g. Supabase). |
| prior_run_index | number | – | refresh only — the prior run_index for bookkeeping. |
| protocol | object | yes | – |
| recommended_cadence | string | – | – |
| review_id | string | – | Opaque label for your bookkeeping; the server never looks it up. |
No output schema declared.
No examples provided.
literature.screen ~387
Screen literature search results using PICO criteria. Scores each abstract by relevance to the research question, classifies study design, and returns a ranked shortlist with inclusion/exclusion decisions and reasons. For descriptive epidemiology omit intervention/comparator and pass population + condition + outcomes. Pass the results array from a prior literature.search call (use output_format='json'). Follows Cochrane Handbook Chapter 4 screening methodology.
| Name | Type | Req | Description |
|---|---|---|---|
| ai_disclosure_level | string | – | AI assistance disclosure level appended to the output. "off" = no disclosure (analyst scratch mode); "standard" = default visible block (model, tools called, sources, date, human-review reminder); "s… |
| criteria | object | yes | PICO inclusion criteria |
| decisions | array | – | Methodological decisions made in conversation (source selection, comparator choice, screening criteria, model structure...). Each entry records the choice, the rationale (why), alternatives rejected,… |
| exclude_study_types | array | – | Additional study types to exclude (e.g., ['case_report', 'narrative_review']). Editorials/commentaries are always excluded. |
| include_threshold | number | – | Relevance score threshold for inclusion (0-1, default 0.3). Lower = more inclusive. |
| min_year | number | – | Exclude studies published before this year |
| output_format | string | – | – |
| project | string | – | Project ID for persistence |
| results | array | yes | Array of LiteratureResult objects from a prior literature.search call (use output_format='json') |
No output schema declared.
No examples provided.
literature.search ~1,059
Search PubMed, ClinicalTrials.gov, bioRxiv/medRxiv, ChEMBL, FDA Orange Book, FDA Purple Book, enterprise sources (Embase, ScienceDirect, Cochrane, Citeline, Pharmapendium, Cortellis), HTA cost reference sources (CMS NADAC, PSSRU, NHS National Cost Collection, BNF, PBS Schedule), LATAM sources (DATASUS, CONITEC, ANVISA, PAHO, IETS, FONASA), APAC sources (HITAP), and HTA appraisal/guidance sources (NICE TAs, CADTH CDR/pCODR, ICER, PBAC PSDs, G-BA AMNOG, HAS Transparency Committee, IQWiG, AIFA, TLV Sweden, INESSS Quebec) for evidence on a drug or indication. Returns structured results including HTA precedents and appraisal decisions with a full audit trail suitable for HTA submissions.
| Name | Type | Req | Description |
|---|---|---|---|
| date_from | string | – | Exclude results before this date (ISO format: YYYY-MM-DD) |
| decisions | array | – | Methodological decisions made in conversation (source selection, comparator choice, screening criteria, model structure...). Each entry records the choice, the rationale (why), alternatives rejected,… |
| free_text_query | string | – | Plain concept terms for Embase (Scopus), IHME GBD, and registry sources — from pipeline_inputs.free_text_query. Required when query contains [MeSH]/[tiab] field tags. |
| literature_search_plan | array | – | Per-source query plan from search.strategy_build pipeline_inputs.literature_search_plan. When provided, each step runs sequentially with its own sources and query (PubMed Entrez vs plain concept term… |
| max_results | number | – | Maximum results to return (default: 20, max: 100) |
| output_format | string | – | Output format. 'docx' requires hosted tier. |
| project | string | – | Project ID for knowledge base persistence. When set, results are saved to ~/.heor-agent/projects/{project}/raw/literature/ |
| query | string | – | Research question or PubMed Entrez query. For PubMed with a SIGN strategy, use pipeline_inputs.pubmed_query. |
| runs | number | – | Number of search runs (1-5, default 1). Multiple runs deduplicate and rank by consistency. Use runs=3 for comprehensive, stable results. |
| sources | array | – | Data sources to query. Default: pubmed, clinicaltrials, biorxiv, chembl, wiley, embase. Use 'europe_pmc' for Europe PMC (40M+ abstracts + full text + preprints + guidelines — broader full-text covera… |
| study_types | array | – | Filter results by study design. Values: 'rct' (randomised controlled trials), 'meta_analysis', 'observational' (cohort/case-control/cross-sectional), 'review' (systematic reviews, narrative reviews). |
No output schema declared.
No examples provided.
models.budget_impact ~550
Estimate the total budget impact of adopting a new intervention over 1-5 years. Follows ISPOR Budget Impact Analysis good practice guidelines (Mauskopf 2007, Sullivan 2014). Computes year-by-year net cost to payer, including market share uptake, treatment displacement, and population growth. IMPORTANT: drug_cost_annual and comparator_cost_annual are required numeric inputs. If the user has not provided them, use your training knowledge of published list prices (NHS BNF/Drug Tariff for nhs perspective, WAC/AWP for us_payer) or the most recent NICE appraisal cost inputs as your best estimate — do NOT refuse to run the model. Flag any self-sourced prices in the output as 'estimated from published list price' and state the source.
| Name | Type | Req | Description |
|---|---|---|---|
| admin_cost_annual | number | – | Annual administration cost (applies to both arms). Default 0. |
| ae_cost_annual | number | – | Annual adverse event cost for intervention. Default 0. |
| comparator | string | yes | Current standard of care |
| comparator_ae_cost_annual | number | – | Annual adverse event cost for comparator. Default 0. |
| comparator_cost_annual | number | yes | Annual drug cost for comparator |
| displacement | array | – | Existing treatments displaced by intervention (share of patients switching, cost saved) |
| drug_cost_annual | number | yes | Annual drug acquisition cost for intervention |
| eligible_population | number | yes | Number of eligible patients in Year 1 |
| indication | string | yes | Disease or condition |
| intervention | string | yes | New drug or treatment |
| market_share | object | yes | Expected market share of intervention by year (0-1). Missing years extrapolate from last defined. |
| monitoring_cost_annual | number | – | Annual monitoring cost for intervention. Default 0. |
| output_format | string | – | Use 'xlsx' for a structured Excel report with all inputs, year-by-year calculations, and audit trail in separate tabs. The workbook is a REPORT — editing cells does not re-run the model. Re-run by ca… |
| perspective | string | yes | Payer perspective: 'nhs' (UK NHS), 'us_payer' (US commercial/Medicare), or 'societal' (broader costs incl. productivity). Determines currency and cost categories. |
| population_growth_rate | number | – | Annual population growth rate (e.g., 0.02 for 2%). Default 0. |
| project | string | – | Project ID for persistence |
| time_horizon_years | number | – | Budget horizon in years (1-10, default 5) |
No output schema declared.
No examples provided.
models.cost_effectiveness ~884
Build a cost-utility analysis (ICER, QALY, PSA, sensitivity analysis) for a drug vs comparator. Follows ISPOR good practice guidelines and NICE reference case. Includes probabilistic sensitivity analysis (PSA), one-way sensitivity, and cost-effectiveness acceptability curve (CEAC). NOTE: utility inputs are value-set-dependent — UK submissions in 2026+ will transition from DSU 3L→5L mapping to the new UK EQ-5D-5L value set (NICE consultation 2026-04-15 to 2026-05-13). Use utility_value_set tool to check expected impact on ICER before finalising inputs.
| Name | Type | Req | Description |
|---|---|---|---|
| ai_disclosure_level | string | – | AI assistance disclosure level. "off" = no disclosure; "standard" = default (model/tools/sources/date + human-review reminder); "submission" = adds ISPOR ELEVATE-GenAI citation. Default is tool-speci… |
| clinical_inputs | object | yes | Clinical efficacy and safety parameters driving the Markov transitions. |
| comparator | string | yes | Comparator (standard of care) |
| cost_inputs | object | yes | Annual costs per patient in the base currency for the selected perspective. |
| decisions | array | – | Methodological decisions made in conversation (source selection, comparator choice, screening criteria, model structure...). Each entry records the choice, the rationale (why), alternatives rejected,… |
| indication | string | yes | Disease or condition |
| intervention | string | yes | Drug or treatment name |
| mfn_sensitivity | object | – | Optional MFN price-sensitivity sweep. When supplied, the output includes an mfn_sensitivity block with ICER per price point and WTP-crossover prices. Design log #27. |
| model_type | string | – | Model type. Default: markov. Use 'partsa' for oncology — requires survival_inputs (the handler now hard-fails when partsa is set without it). |
| output_format | string | – | Use 'xlsx' for a structured Excel report with inputs, transition matrix, PSA iterations, and CEAC in separate tabs. The workbook is a REPORT — editing cells does not re-run the model. Re-run by calli… |
| perspective | string | yes | Economic perspective: 'nhs' (UK NHS, WTP £25-35K/QALY), 'us_payer' ($100-150K/QALY ICER standard), or 'societal' (broader costs incl. productivity). |
| project | string | – | Project ID for knowledge base persistence. When set, model run is saved to ~/.heor-agent/projects/{project}/raw/models/ |
| psa_iterations | number | – | PSA iterations (default: 1000, max: 10000) |
| run_owsa | boolean | – | Run one-way sensitivity analysis (default: true). Set to false to skip OWSA and speed up large PSA runs. |
| run_psa | boolean | – | Run probabilistic sensitivity analysis (default: true) |
| scenarios | array | – | Optional scenario analysis: array of named parameter overrides. Each scenario re-runs the model with the specified changes. Max 10 scenarios. |
| summary_metric | string | – | Summary metric for the ICER numerator. 'qaly' (default, NICE reference case), 'evlyg' (equal value life-years gained — CMS IRA-compatible; CMS prohibits QALYs in Medicare IRA drug price negotiations… |
| survival_inputs | object | – | Required when model_type='partsa'. Median survival inputs (months) for OS/PFS, optional comparator overrides, and parametric distribution choice. Codex P1 fix (2026-05-07). |
| time_horizon | string | yes | Modelling horizon: 'lifetime', '5yr', '10yr', or years as number |
| utility_inputs | object | – | QALY weights for each health state (optional — defaults derived from efficacy if omitted). |
No output schema declared.
No examples provided.
project.create ~172
Initialize a new HEOR project workspace with directory skeleton and project.yaml metadata. Idempotent — returns existing project if already created. Required before using the `project` parameter in other tools. Enum values are case-insensitive — `"NICE"`, `"Nice"`, and `"nice"` all work for hta_targets.
| Name | Type | Req | Description |
|---|---|---|---|
| drug | string | yes | Drug or intervention name |
| hta_targets | array | – | HTA bodies to target (optional). Case-insensitive — "NICE"/"Nice"/"nice" are all accepted. |
| indication | string | yes | Disease/condition being treated |
| notes | string | – | Free-text project notes (optional) |
| project_id | string | yes | Short identifier (alphanumeric + hyphens, e.g. 'semaglutide-t2d') |
No output schema declared.
No examples provided.
publication.draft ~379
Draft a publication — abstract, manuscript, poster, or plain-language summary — that reuses claims from the project registry so the same source-of-truth figures appear in the publication as in the dossier. Structures the content per type (structured abstract / IMRaD manuscript / poster / lay summary), auto-selects the reporting guideline for the study_design (CONSORT for RCTs, STROBE for observational, PRISMA for systematic reviews, CHEERS for economic evaluations), enforces a word limit (default per type, overridable), and emits a GPP2022 + ICMJE compliance checklist (authorship criteria, disclosures, funding, trial registration, data-sharing). Pass reference_claim_ids + project_id to pull registered claims into the Results. Flags over-limit drafts, unregistered RCTs, and superseded claims; notes that AI cannot be an author (ICMJE). Pairs with evidence.claim_registry + evidence.consistency_check. Enum values case-insensitive.
| Name | Type | Req | Description |
|---|---|---|---|
| ai_disclosure_level | string | – | – |
| background | string | – | – |
| conclusions | string | – | – |
| funded | boolean | – | – |
| medical_writing_support | boolean | – | – |
| methods | string | – | – |
| objective | string | – | – |
| project_id | string | – | Required when reference_claim_ids is non-empty. |
| reference_claim_ids | array | – | Claim ids from the registry to insert into Results (single source of truth). |
| results | string | – | – |
| study_design | string | – | – |
| target | string | – | Journal or congress, e.g. 'ISPOR 2026', 'Value in Health'. |
| title | string | yes | – |
| trial_registration_id | string | – | – |
| type | string | yes | – |
| word_limit | number | – | Override the per-type default word limit. |
No output schema declared.
No examples provided.
pv.classify ~265
Classify a planned study into its EMA pharmacovigilance regulatory category (PASS imposed/voluntary, PAES, RMP Annex 4, DUS, active surveillance registry, pregnancy registry, spontaneous reporting, ICH E2E plan). Returns the matching GVP module + ENCePP study-category label (not a registered protocol ID — consult the ENCePP Code of Conduct checklist for templates) + submission obligations + RMP implications + FDA analogue. Use BEFORE preparing an HTA dossier or before designing a post-authorisation study. Pass the structured `pv_classification` output to `hta_dossier` to populate its Pharmacovigilance Plan section. Enum values are case-insensitive — `"RCT"`/`"rct"`, `"EU"`/`"eu"` etc. all work.
| Name | Type | Req | Description |
|---|---|---|---|
| drug | string | yes | Drug name. |
| imposed_by_authority | boolean | – | – |
| indication | string | yes | Disease/condition. |
| jurisdictions | array | – | – |
| multi_country | boolean | – | – |
| population_includes_paediatric | boolean | – | – |
| population_includes_pregnant | boolean | – | – |
| primary_objective | string | yes | – |
| regulatory_context | string | yes | – |
| study_design | string | yes | – |
No output schema declared.
No examples provided.
pv.comparative_safety ~414
Build a class-level comparative safety profile from spontaneous-report data (FAERS / EudraVigilance / VigiBase / WHO VigiBase). Ranks the top-N adverse events for each product in a drug class by reporting rate per 1,000 exposed (supply exposed_population per product) or by raw report count, lays the products side-by-side in a class-comparison matrix, and emits key observations — shared class profile, product-level differentiators, and explicit call-outs for events_of_interest (e.g. report that 'cardiovascular' did not rank in the top 10 for any product). Optionally layers in disproportionality (PRR/ROR/IC/EBGM) per drug-AE pair when you supply grand_total + per-product total_reports + per-AE event_total. Complements pv.signal_workflow (which scores one drug × one AE). ⚠️ Spontaneous-report rates reflect reporting behaviour, not incidence — output is a comparative reporting profile, hypothesis-generating only. Pure logic, no external calls.
| Name | Type | Req | Description |
|---|---|---|---|
| ai_disclosure_level | string | – | AI assistance disclosure level. "off" = no disclosure; "standard" = default; "submission" = adds ISPOR ELEVATE-GenAI citation. |
| data_source | string | – | – |
| drug_class | string | yes | Therapeutic class label, e.g. 'anti-CGRP migraine mAbs'. |
| events_of_interest | array | – | Adverse events to report on explicitly across all products (matched by substring), e.g. ['cardiovascular','constipation']. |
| grand_total | number | – | a+b+c+d — all reports in the database. Supply (with per-product total_reports and per-AE event_total) to enable disproportionality. |
| indication | string | yes | – |
| products | array | yes | At least two products to compare. |
| reporting_period_months | number | – | – |
| top_n | number | – | – |
No output schema declared.
No examples provided.
What is the io.github.neptun2000/heor-agent MCP server?
io.github.neptun2000/heor-agent is an MCP server listed in the public MCP registry as io.github.neptun2000/heor-agent. HEOR MCP server: literature search, CEA, BIA, NMA/MAIC, HTA dossiers (NICE/FDA/EMA/JCA). This page covers its npm package (heor-agent-mcp).
Is the io.github.neptun2000/heor-agent MCP server safe to use?
io.github.neptun2000/heor-agent scores 78 out of 100 on VerifyMCP. We recorded 1 known advisory against it as of 21 September 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the io.github.neptun2000/heor-agent MCP server expose?
io.github.neptun2000/heor-agent exposes 51 tools: literature.search, literature.fulltext, hta.gba_ppdd, hta.panel_simulation, models.cost_effectiveness, and 46 more. Their descriptions and schemas cost roughly 19,913 tokens of context every time the server is loaded.
Is the io.github.neptun2000/heor-agent MCP server still maintained?
io.github.neptun2000/heor-agent is still listed as active in the MCP registry. We last reached this channel on 21 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the io.github.neptun2000/heor-agent MCP server under?
io.github.neptun2000/heor-agent declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.