Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

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

0 this week 78 Trust /100
Trust breakdown (7 categories)

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
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
Install

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

# add to Claude Code
claude mcp add neptun2000-heor-agent -- npx -y heor-agent-mcp
// .cursor/mcp.json
{
  "mcpServers": {
    "neptun2000-heor-agent": {
      "command": "npx",
      "args": [
        "-y",
        "heor-agent-mcp"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "neptun2000-heor-agent": {
      "command": "npx",
      "args": [
        "-y",
        "heor-agent-mcp"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add neptun2000-heor-agent -- npx -y heor-agent-mcp
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "neptun2000-heor-agent": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "heor-agent-mcp"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add neptun2000-heor-agent --command npx --arg -y --arg heor-agent-mcp
# ~/.hermes/config.yaml
mcp_servers:
  neptun2000-heor-agent:
    command: "npx"
    args: ["-y", "heor-agent-mcp"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "neptun2000-heor-agent": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "heor-agent-mcp"
      ]
    }
  }
}
# add to Vellum
assistant mcp add neptun2000-heor-agent -t stdio -c npx -a -y heor-agent-mcp
// mcp.json
{
  "mcpServers": {
    "neptun2000-heor-agent": {
      "command": "npx",
      "args": [
        "-y",
        "heor-agent-mcp"
      ]
    }
  }
}
Changelog

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.

Diagnostics

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 →

MCP tools · 51 exposed · ~19,913 tokens

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 →

Tool Tokens
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.

NameTypeReqDescription
conditionstring
output_formatstring
rowsarrayyes
target_countriesarrayExpected 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.

NameTypeReqDescription
actionstringyes
ai_disclosure_levelstring
claimobject
claim_idstringFor 'get' / 'remove'.
import_fromobjectFor '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_idstringyes

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.

NameTypeReqDescription
baseline_itemsarrayOptional: baseline scores for change-from-baseline and responder analysis.
compare_cohortstringNatural-history reference cohort for trajectory comparison. nnipps=MSA, ppmi=PD, adni=AD.
itemsarrayyesPer-item scores. Supply all items for complete scoring, or a subset for partial scoring with a note.
scalestringyesClinical outcome scale: umsars | updrs | mds_updrs | adas_cog | moca | mmse
time_point_monthsnumberTime 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.

NameTypeReqDescription
ai_disclosure_levelstringAI 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…
comparatorstringyes
indicationstringyes
interventionstringyes
interviewee_rolestring
unmeasurable_confoundersarrayConfounders 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.

NameTypeReqDescription
ai_disclosure_levelstringAI 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_extractionsarrayConfounder variables YOU extracted from the corpus. Each MUST cite a paper in corpus_papers.
comparatorstringyesComparator, e.g. glatiramer acetate
comparison_typestringAnalysis 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_papersarrayThe 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…
indicationstringyesIndication, e.g. relapsing-remitting multiple sclerosis
interventionstringyesIntervention, e.g. dimethyl fumarate
literature_sourcesarraySources for open_search mode (passed to literature_search).
modestringclosed_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.
outcomestringOptional primary outcome
populationstringOptional population refinement
project_idstringOptional: also load corpus from a project workspace raw/literature store.
runsnumberSearch 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.

NameTypeReqDescription
ai_disclosure_levelstring
claim_idsarrayOptional: restrict the check to these claim ids.
claimsarrayInline claims (override registry claims with the same id).
deliverablesarrayyesDocuments to check, each a {name, text}.
project_idstringLoad 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.

NameTypeReqDescription
ai_disclosure_levelstring
decision_contextstring
discordant_outcomesarrayOutcomes flagged discordant by evidence.triangulation.
domainsarrayyesEvidence-base state per domain.
indicationstringyes
interventionstringyes
single_source_outcomesarrayOutcomes 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.

NameTypeReqDescription
comparisonsarrayyesDirect 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.
decisionsarrayMethodological decisions made in conversation (source selection, comparator choice, screening criteria, model structure...). Each entry records the choice, the rationale (why), alternatives rejected,…
methodstringauto (default): Bucher for simple paths, Frequentist NMA for 3+ edges. Or force a specific method.
targetobjectOptional: 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.

NameTypeReqDescription
connected_networkbooleanyesTrue if there is a connected evidence network linking the treatments of interest via at least one common comparator.
decisionsarrayMethodological decisions made in conversation (source selection, comparator choice, screening criteria, model structure...). Each entry records the choice, the rationale (why), alternatives rejected,…
effect_modifier_imbalancestringSeverity of imbalance in identified effect modifiers across trial populations. Default 'unknown'.
effect_modifiers_identifiedbooleanTrue if effect modifiers have been identified through clinical input or literature review. Default false.
h2h_availablebooleanTrue if at least one head-to-head RCT compares the treatments directly. Default false.
heterogeneity_i2_pctnumberOptional: I² statistic (%) across studies of the same comparison. If absent, homogeneity is assessed qualitatively.
ipd_available_for_interventionbooleanTrue if individual patient data (IPD) are available from the sponsor's trial. Default false.
n_studies_per_comparisonnumberOptional: minimum number of studies per pairwise comparison. Informs choice between Bucher (k=1) and NMA (k≥2).
outcome_typestringPrimary outcome type — guides estimator recommendations.
subgroup_data_availablebooleanTrue 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.

NameTypeReqDescription
querystringOriginal search query (optional, for context)
resultsarrayyesArray 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.

NameTypeReqDescription
decisionsarrayMethodological decisions made in conversation (source selection, comparator choice, screening criteria, model structure...). Each entry records the choice, the rationale (why), alternatives rejected,…
effect_modifiersarrayyesNames of covariates that are effect modifiers (must appear in both trials' covariates)
index_trialobjectyesTrial with data to be reweighted (the trial for which you want to adjust)
methodstringauto (default): MAIC when >=2 modifiers and N>=50, else STC
outcome_namestringName of the outcome being compared (e.g., 'HbA1c change')
output_formatstring
projectstringProject ID for persistence
target_trialobjectyesTrial 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.

NameTypeReqDescription
instrumentstringAssessment instrument. auto (default) detects from study_type. rob2 for RCTs, robins_i for observational, amstar2 for systematic reviews.
outcomesarrayOutcomes of interest for contextual domain assessment (optional)
output_formatstring
studiesarrayyesArray 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).

NameTypeReqDescription
ai_disclosure_levelstringAI 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…
endpointstringEndpoint name (e.g., 'OS', 'PFS', 'DFS'). Default: 'OS'.
event_dataarrayPatient-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_dataarrayKaplan-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_formatstring
projectstringProject ID for persistence
time_unitstringTime 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.

NameTypeReqDescription
ai_disclosure_levelstringAI assistance disclosure level. "off" = no disclosure; "standard" = default; "submission" = adds ISPOR ELEVATE-GenAI citation.
indicationstringyes
interventionstringyes
magnitude_tolerancenumberRelative tolerance for calling two effect estimates 'similar' (0.15 = within 15%).
outcomesarrayyes

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.

NameTypeReqDescription
auto_check_regulatorybooleanWhen 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_burdenobjectEpidemiology data for the indication
drugstringyesDrug or intervention name
economic_burdenobjectDirect and indirect economic burden of the disease
indicationstringyesDisease/condition being treated
jurisdictionsarrayyesTarget market(s) for this unmet need assessment
literature_evidencearrayOptional: pass literature_search results here to include as supporting evidence
qol_impactobjectPatient-reported and health-related quality of life impact
treatment_landscapeobjectCurrent 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.

NameTypeReqDescription
toolstringWhich 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.

NameTypeReqDescription
ai_disclosure_levelstringAI 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_recordobjectA prior HEORAgent AuditRecord (audit_record mode). Auto-derives transparency/citation/auditability.
contextobject
modestring'describe' = score a workflow_description + probes; 'audit_record' = auto-derive from a HEORAgent AuditRecord.
probesobjectOne probe per dimension. Each is {answer: 'yes'|'no'|'partial'|null, detail?}. Omit or null → scored 'insufficient' (never a pass).
workflow_descriptionstringFree-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.

NameTypeReqDescription
ai_disclosure_levelstringAI 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_sectionstringOptional: the markdown_report from confounder_identification (IQWiG Pufulete Step 1). Rendered verbatim as an 'Annex: Confounder Identification' before the gap analysis. Design log #43.
decisionsarrayMethodological decisions made in conversation (source selection, comparator choice, screening criteria, model structure...). Each entry records the choice, the rationale (why), alternatives rejected,…
drug_namestringyesGeneric or brand name of the drug/intervention.
evidence_summaryClinical 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_inequalitiesobjectHealth 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_outcomeobjectOptional: 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_bodystringyesHTA 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)…
indicationstringyesDisease or condition being treated (e.g., 'type 2 diabetes', 'non-small cell lung cancer').
mfn_contextobjectOptional 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_resultsJSON output from models.cost_effectiveness — used to populate the Economic Evidence Summary section.
output_formatstringOutput format. 'text' returns markdown; 'json' returns structured sections; 'docx' generates a Word document and saves to disk.
picosarrayJCA-specific: list of PICOs from the scoping decision. Each PICO generates its own dossier section. If omitted, a default single PICO is generated.
projectstringProject ID for knowledge base persistence. When set, dossier draft is saved to ~/.heor-agent/projects/{project}/raw/dossiers/
pv_classificationobjectOptional: 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_landscapearrayOptional: 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_resultsOutput 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_modifierobjectNICE 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_typestringyesSubmission type. 'sta'/'mta' for NICE; 'initial'/'renewal'/'variation' for JCA; 'early_access' for accelerated pathways.
unmet_need_summarystringOptional: 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_outcomeobjectOptional: 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.

NameTypeReqDescription
ai_disclosure_levelstringAI 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_factsarrayAgent-extracted Peers/Precedent/Drift/Delta facts, each with a citation (doi/pmid/url). Verified via verify_citations; unverified facts are labelled, not asserted.
drugstringyesAssessed drug (generic).
drug_classstringDrug class, e.g. 'IL-17 inhibitor'.
indicationstringyesIndication, e.g. 'plaque psoriasis'.
line_of_therapystringe.g. '2L after anti-TNF'.
peer_drugsarrayClass members to look up as peers in the G-BA precedent KB (each returns its rating + zVT, or `unknown`).
zvt_candidatesarrayCandidate 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.

NameTypeReqDescription
actionstringyes
ai_disclosure_levelstring
project_idstringyes
sectionsarrayFor '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.

NameTypeReqDescription
ai_disclosure_levelstringAI 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…
convenearrayWhich seats to convene. Default: the full roster for the selected hta_body.
dossier_markdownstringFallback when no ppdd_pack is supplied.
dossier_sectionsobject
drugstringyes
drug_classstringRequired by jca.pico_scope for hta_body='eu_jca' seats; defaults to 'other' (with a caveat finding) when omitted. Ignored for other bodies.
hta_bodystringHTA body. Default: gba. Each body has its own default seat roster (see convene).
indicationstringyes
model_resultsobject
picoobject
ppdd_packobjectThe verified evidence pack from hta.gba_ppdd (design log #49). Pass its content object directly.
question_setarrayBatch '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_scenariosarrayCandidate 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.

NameTypeReqDescription
ai_disclosure_levelstringAI 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_markdownstringThe dossier draft (e.g. piped from hta.dossier or hta.workflow output). The primary input — the scan reads this.
dossier_sectionsobjectStructured dossier text as an alternative/supplement to dossier_markdown.
drugstringyesGeneric drug name.
hta_bodystringHTA body to simulate. 'nice' = NICE EAG clarification letter; 'gba_iqwig' = G-BA/IQWiG formal-assessment objections. FDA, HAS, EU JCA are v2.
indicationstringyesIndication / population.
max_questionsnumberCap on returned questions (highest severity kept first). The summary still reports the full count.
model_resultsobjectEconomic-model results object (from cost_effectiveness_model) if no dossier_markdown is supplied — signals that a model exists.
picoobjectPICO. 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.

NameTypeReqDescription
actionstringyes'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_icernumberOptional: current ICER to project forward under new UK 5L.
base_incremental_qalynumberOptional: current incremental QALY gain to project forward under new UK 5L.
indication_typestringIndication 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_setstringValue 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.

NameTypeReqDescription
ai_disclosure_levelstringAI 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_regulatorybooleanWhen 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_inputsobjectOptional cost-effectiveness model inputs. Sensible defaults applied when omitted (efficacy_delta=0.25; drug_cost_annual=1000; SoC=0).
confounder_candidate_extractionsarrayOptional agent-extracted confounder candidates for Phase 2.5; each must cite a screened paper (pmid/doi/title). Design log #43.
decisionsarrayMethodological decisions made in conversation (source selection, comparator choice, screening criteria, model structure...). Each entry records the choice, the rationale (why), alternatives rejected,…
drugstringyesDrug or intervention name.
drug_classstring
fetch_full_textbooleanWhen 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_bodystringTarget HTA body for the dossier draft.
include_confounder_identificationbooleanWhen 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.
indicationstringyesDisease or condition (free text).
is_orphanbooleanOrphan-designated medicinal product. Affects JCA scope eligibility (orphans enter JCA scope 2028 vs 2030 for general medicinal products).
jurisdictionsarray
literature_runsnumberNumber of dedup-stability passes for the literature_search phase. 3 is the project default for HTA-grade reproducibility.
max_literature_resultsnumber
perspectivestringEconomic perspective for the cost-effectiveness model phase.
picoobjectOptional PICO criteria for the screening phase (defaults derived from drug + indication).
require_real_ce_inputsbooleanWhen 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_modelbooleanSkip the cost-effectiveness model phase (e.g., for clinical-only dossiers).
sourcesarray
submission_typestring
unmet_need_inputsobjectOptional 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.

NameTypeReqDescription
icf_textstringyesThe ICF body text. Plain text or markdown both work.
jargon_checkbooleanWhether to run the medical-jargon dictionary lookup. Default true.
target_grade_levelintegerTarget 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.

NameTypeReqDescription
benign_behaviouralbooleanSet true for benign behavioural interventions in adults (45 CFR 46.104(d)(3)).
blood_draw_within_limitsbooleanSet true for blood collection within OHRP volume limits (45 CFR 46.110 cat 2).
broad_consent_obtainedbooleanSet true when broad consent has been obtained for secondary research / specimen storage (45 CFR 46.104(d)(7-8)).
data_handlingstringyes
exempt_category_hintstringHint: flag this as 45 CFR 46.104(d)(1) educational practices research.
expedited_category_claimarrayExpedited 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_demonstrationbooleanSet true for federally supported research / demonstration project (45 CFR 46.104(d)(5)).
funding_sourcestringyes
indicationstringyes
interventionstringyes
jurisdictionsarray
marketed_drugbooleanSet true when the study uses a marketed drug per labeling (drives expedited cat 1, post-marketing PSUR framework).
multi_siteboolean
noninvasive_collectionbooleanSet true for prospective biospecimen collection by noninvasive means (45 CFR 46.110 cat 3).
noninvasive_procedurebooleanSet true for noninvasive data collection (ECG, EEG, blood pressure, ultrasound) (45 CFR 46.110 cat 4).
population_includes_decisionally_impairedboolean
population_includes_pediatricboolean
population_includes_pregnantboolean
population_includes_prisonersboolean
pv_classificationobjectOptional structured output from pv_classify. Only primary_category is read; PASS_imposed triggers CTR Annex III SAE timelines.
recording_collectionbooleanSet true for voice / digital / image recording collection (45 CFR 46.110 cat 6).
risk_levelstring
study_designstringyes
taste_testbooleanSet 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.

NameTypeReqDescription
biomarker_statusstringOptional biomarker status (e.g., 'EGFR T790M positive', 'PD-L1 TPS ≥50%').
drugstringyesDrug name.
drug_classstringyes
force_proceed_out_of_scopebooleanOverride 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…
indicationstringyesDisease/condition.
is_orphanbooleanOptional. Orphan-designated medicinal product. Affects JCA scope eligibility (orphans enter scope from 13 January 2028 vs 13 January 2030 for general medicinal products).
jurisdictionsarray
line_of_therapystring
mechanism_of_actionstring
regulatory_contextstring

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.

NameTypeReqDescription
pathstringyesRelative path (e.g. 'wiki/trials/sustain-6.md' or 'raw/literature/pubmed_12345.md')
projectstringyesProject 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.

NameTypeReqDescription
case_sensitivebooleanCase-sensitive search (default false)
max_resultsnumberMax matches to return (default 20, max 100)
pathsarrayWhich subtrees to search. Default: both.
projectstringyesProject ID (must exist)
querystringyesSearch 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]].

NameTypeReqDescription
contentstringyesMarkdown content. Can include YAML frontmatter and [[wikilinks]].
pathstringyesRelative path starting with 'wiki/', ending with .md (e.g. 'wiki/trials/sustain-6.md')
projectstringyesProject 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.

NameTypeReqDescription
ai_disclosure_levelstringAI 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…
articlesarrayyesArticles to retrieve (max 20). Each needs at least one of pmid / pmcid / doi.
force_refreshbooleanBypass the 24h cache and re-fetch. Default false.
include_tablesbooleanInclude extracted tables (baseline characteristics, results) separately from prose. Default true.
max_chars_per_articlenumberPer-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.

NameTypeReqDescription
ai_disclosure_levelstringAI 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_ofstringISO date the refresh runs (defaults to today); drives next_refresh_due.
modestringyes'init' = lock protocol + baseline search; 'refresh' = re-run + diff vs previous_records.
new_records_thresholdnumberMaterial-change threshold for new-record count.
previous_recordsarrayrefresh only — the prior run's record set, from your store (e.g. Supabase).
prior_run_indexnumberrefresh only — the prior run_index for bookkeeping.
protocolobjectyes
recommended_cadencestring
review_idstringOpaque 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.

NameTypeReqDescription
ai_disclosure_levelstringAI 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…
criteriaobjectyesPICO inclusion criteria
decisionsarrayMethodological decisions made in conversation (source selection, comparator choice, screening criteria, model structure...). Each entry records the choice, the rationale (why), alternatives rejected,…
exclude_study_typesarrayAdditional study types to exclude (e.g., ['case_report', 'narrative_review']). Editorials/commentaries are always excluded.
include_thresholdnumberRelevance score threshold for inclusion (0-1, default 0.3). Lower = more inclusive.
min_yearnumberExclude studies published before this year
output_formatstring
projectstringProject ID for persistence
resultsarrayyesArray 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.

NameTypeReqDescription
date_fromstringExclude results before this date (ISO format: YYYY-MM-DD)
decisionsarrayMethodological decisions made in conversation (source selection, comparator choice, screening criteria, model structure...). Each entry records the choice, the rationale (why), alternatives rejected,…
free_text_querystringPlain 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_planarrayPer-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_resultsnumberMaximum results to return (default: 20, max: 100)
output_formatstringOutput format. 'docx' requires hosted tier.
projectstringProject ID for knowledge base persistence. When set, results are saved to ~/.heor-agent/projects/{project}/raw/literature/
querystringResearch question or PubMed Entrez query. For PubMed with a SIGN strategy, use pipeline_inputs.pubmed_query.
runsnumberNumber of search runs (1-5, default 1). Multiple runs deduplicate and rank by consistency. Use runs=3 for comprehensive, stable results.
sourcesarrayData 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_typesarrayFilter 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.

NameTypeReqDescription
admin_cost_annualnumberAnnual administration cost (applies to both arms). Default 0.
ae_cost_annualnumberAnnual adverse event cost for intervention. Default 0.
comparatorstringyesCurrent standard of care
comparator_ae_cost_annualnumberAnnual adverse event cost for comparator. Default 0.
comparator_cost_annualnumberyesAnnual drug cost for comparator
displacementarrayExisting treatments displaced by intervention (share of patients switching, cost saved)
drug_cost_annualnumberyesAnnual drug acquisition cost for intervention
eligible_populationnumberyesNumber of eligible patients in Year 1
indicationstringyesDisease or condition
interventionstringyesNew drug or treatment
market_shareobjectyesExpected market share of intervention by year (0-1). Missing years extrapolate from last defined.
monitoring_cost_annualnumberAnnual monitoring cost for intervention. Default 0.
output_formatstringUse '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…
perspectivestringyesPayer perspective: 'nhs' (UK NHS), 'us_payer' (US commercial/Medicare), or 'societal' (broader costs incl. productivity). Determines currency and cost categories.
population_growth_ratenumberAnnual population growth rate (e.g., 0.02 for 2%). Default 0.
projectstringProject ID for persistence
time_horizon_yearsnumberBudget 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.

NameTypeReqDescription
ai_disclosure_levelstringAI 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_inputsobjectyesClinical efficacy and safety parameters driving the Markov transitions.
comparatorstringyesComparator (standard of care)
cost_inputsobjectyesAnnual costs per patient in the base currency for the selected perspective.
decisionsarrayMethodological decisions made in conversation (source selection, comparator choice, screening criteria, model structure...). Each entry records the choice, the rationale (why), alternatives rejected,…
indicationstringyesDisease or condition
interventionstringyesDrug or treatment name
mfn_sensitivityobjectOptional 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_typestringModel type. Default: markov. Use 'partsa' for oncology — requires survival_inputs (the handler now hard-fails when partsa is set without it).
output_formatstringUse '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…
perspectivestringyesEconomic perspective: 'nhs' (UK NHS, WTP £25-35K/QALY), 'us_payer' ($100-150K/QALY ICER standard), or 'societal' (broader costs incl. productivity).
projectstringProject ID for knowledge base persistence. When set, model run is saved to ~/.heor-agent/projects/{project}/raw/models/
psa_iterationsnumberPSA iterations (default: 1000, max: 10000)
run_owsabooleanRun one-way sensitivity analysis (default: true). Set to false to skip OWSA and speed up large PSA runs.
run_psabooleanRun probabilistic sensitivity analysis (default: true)
scenariosarrayOptional scenario analysis: array of named parameter overrides. Each scenario re-runs the model with the specified changes. Max 10 scenarios.
summary_metricstringSummary 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_inputsobjectRequired 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_horizonstringyesModelling horizon: 'lifetime', '5yr', '10yr', or years as number
utility_inputsobjectQALY 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.

NameTypeReqDescription
drugstringyesDrug or intervention name
hta_targetsarrayHTA bodies to target (optional). Case-insensitive — "NICE"/"Nice"/"nice" are all accepted.
indicationstringyesDisease/condition being treated
notesstringFree-text project notes (optional)
project_idstringyesShort 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.

NameTypeReqDescription
ai_disclosure_levelstring
backgroundstring
conclusionsstring
fundedboolean
medical_writing_supportboolean
methodsstring
objectivestring
project_idstringRequired when reference_claim_ids is non-empty.
reference_claim_idsarrayClaim ids from the registry to insert into Results (single source of truth).
resultsstring
study_designstring
targetstringJournal or congress, e.g. 'ISPOR 2026', 'Value in Health'.
titlestringyes
trial_registration_idstring
typestringyes
word_limitnumberOverride 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.

NameTypeReqDescription
drugstringyesDrug name.
imposed_by_authorityboolean
indicationstringyesDisease/condition.
jurisdictionsarray
multi_countryboolean
population_includes_paediatricboolean
population_includes_pregnantboolean
primary_objectivestringyes
regulatory_contextstringyes
study_designstringyes

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.

NameTypeReqDescription
ai_disclosure_levelstringAI assistance disclosure level. "off" = no disclosure; "standard" = default; "submission" = adds ISPOR ELEVATE-GenAI citation.
data_sourcestring
drug_classstringyesTherapeutic class label, e.g. 'anti-CGRP migraine mAbs'.
events_of_interestarrayAdverse events to report on explicitly across all products (matched by substring), e.g. ['cardiovascular','constipation'].
grand_totalnumbera+b+c+d — all reports in the database. Supply (with per-product total_reports and per-AE event_total) to enable disproportionality.
indicationstringyes
productsarrayyesAt least two products to compare.
reporting_period_monthsnumber
top_nnumber

No output schema declared.

No examples provided.

Common questions

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.