Server definition
- Hash
- sha256:e706911c1925c3e59b5bd7a074a68788b68311a3fd64aaef9597e8ab5cfd1a72
- What it is
- What a remote MCP server returned when asked what it offers: 10 tools
The blob, as servednamed by its sha256
{
"instructions": null,
"tools": [
{
"description": "Fetch the structured asset snapshot JSON for a scenario — the same content rendered in the PDF/Excel exports, in machine-readable form. Includes verdict, drivers, assumptions, evidence summary, and (if available) signed-export hashes pointing to the latest signed artifacts.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"scenario_id": {
"description": "UUID of the scenario to fetch the asset snapshot payload for.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"scenario_id"
],
"type": "object"
},
"name": "get_dossier",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"description": "Canonical PhaseFolio envelope. Substantive payload is in `data`.",
"properties": {
"data": {
"description": "Structured asset snapshot payload mirroring the PDF/Excel exports. Top-level keys include verdict, drivers, assumptions, evidence, and (when available) signed_export hashes. See get_methodology('evidence-standards') for the full structure."
}
},
"required": [
"data"
],
"type": "object"
}
},
{
"description": "Fetch the evidence register entries for a scenario — the citations, sources, and supporting documents the analyst attached to back the assumptions. Use this when an analysis question references 'what's the evidence for X?'",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"scenario_id": {
"description": "UUID of the scenario whose evidence register entries to fetch.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"scenario_id"
],
"type": "object"
},
"name": "get_evidence",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"description": "Canonical PhaseFolio envelope. Substantive payload is in `data`.",
"properties": {
"data": {
"description": "Array of evidence-register entries. Each entry has fields like assumption_path, source_url, source_date, excerpt, freshness, confidence — see /methodology/evidence-standards for the canonical schema.",
"items": {},
"type": "array"
}
},
"required": [
"data"
],
"type": "object"
}
},
{
"description": "Fetch a PhaseFolio methodology section's full content (rNPV model, backtest, PoS calibration, IRA framework, development paths, deal-term modelling, holding valuation, clinical stage normalization, evidence standards, network benchmarks, COGS benchmark, SG&A benchmark, tax benchmark, SEC EDGAR deal-term extraction). Designed for citation: each section has a stable URL and a methodology version identifier you can reference in analysis output.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"section": {
"description": "Which methodology section to fetch. 'rnpv' covers the core risk-adjusted NPV calculation: cumulative PoS, midpoint-discounted risk-adjusted development costs, the S-curve ramp/plateau/LOE revenue lifecycle net of COGS/SG&A/tax, WACC discounting, the rNPV and Unadjusted-NPV equations, Monte Carlo / expected NPV, and one-at-a-time sensitivity; 'backtest' covers the validation methodology and AUC/CI numbers; 'pos-calibration' covers the indication × modality × biomarker matrix, expanded modality normalization into the eight benchmark baselines, the scored multipliers including the model 2.6.0 biomarker_quality drug-specific multiplier (oncology solid tumor, Phase II/III), the Phase 1 ORR extracted-but-not-scored signal with its Phase 0 governance disclosure, and the non-scored drug-specific risk flags; 'ira-framework' covers the Year-9/Year-13 MFP cliff modeling and the separate IRA classification for expanded modalities such as RNA Therapeutics, Protein Degrader, Radioligand, Oncolytic Virus, and Cancer Vaccine; 'development-paths' covers development-path tiers, automatic-effect policy, and the no path-based PoS/default-multiplier rule; 'deal-term-modelling' covers how licensing deal terms map onto a scenario's deal structure (term-model mapping v1): what is modelled, not modelled and refused, the territory restriction and the approximations it names, milestone timing at stage ends, the cost-share rule, and the non-USD conversion-rate refusal; 'holding-valuation' covers how a Workspace holding is valued (scenario, share of asset value, look-through estimate, cost, not valued): each method's inputs, reason codes and completeness, the totals rules (never added across bases or currencies, estimates left out by default) and what the look-through estimate ignores; 'stage-normalization' covers exact clinical labels, work packages, canonical PoS gates, and the no label-only PoS modifier rule for Phase 1b/2a/2b, adaptive, pivotal, expansion, platform, bridging, and related labels; 'evidence-standards' covers source tiers and freshness rules; 'network-benchmarks' covers anonymization and cohort cuts; 'cogs-benchmark' covers the per-modality COGS% default bands and price-sensitivity methodology; 'sga-benchmark' covers the per-commercial-model SG&A% default bands (orphan/specialty/primary-care); 'tax-benchmark' covers the US-statutory-21% default tax rate, effective-rate reality, and the NOL cap; 'sec-deal-terms' is the retirement notice for the SEC EDGAR deal-term source (retired 2026-09-27), with its frozen versions.",
"enum": [
"rnpv",
"backtest",
"pos-calibration",
"ira-framework",
"development-paths",
"deal-term-modelling",
"holding-valuation",
"stage-normalization",
"evidence-standards",
"network-benchmarks",
"cogs-benchmark",
"sga-benchmark",
"tax-benchmark",
"sec-deal-terms"
],
"type": "string"
}
},
"required": [
"section"
],
"type": "object"
},
"name": "get_methodology",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"description": "Canonical PhaseFolio envelope. Substantive payload is in `data`.",
"properties": {
"data": {
"additionalProperties": {},
"properties": {
"citation_url": {
"description": "Public canonical URL — cite this in analysis output.",
"type": "string"
},
"last_updated": {
"description": "ISO 8601 date of the last meaningful edit.",
"type": "string"
},
"section_id": {
"description": "Stable section identifier — reuse as the citation key.",
"enum": [
"rnpv",
"backtest",
"pos-calibration",
"ira-framework",
"development-paths",
"deal-term-modelling",
"holding-valuation",
"evidence-standards",
"network-benchmarks",
"cogs-benchmark",
"sga-benchmark",
"tax-benchmark",
"sec-deal-terms"
],
"type": "string"
},
"summary": {
"description": "Short summary suitable for inline quoting (≤500 chars).",
"type": "string"
},
"title": {
"type": "string"
},
"version": {
"description": "Versioned identifier for this section's content, e.g. 'methodology@2026-04'.",
"type": "string"
}
},
"required": [
"section_id",
"title",
"version",
"citation_url",
"summary"
],
"type": "object"
}
},
"required": [
"data"
],
"type": "object"
}
},
{
"description": "Fetch a PhaseFolio project's metadata: indication, sub-indication, modality, biomarker, asset name, and stage at entry. Use this when you need to ground an analysis question in the project's clinical context before fetching scenarios.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"project_id": {
"description": "UUID of the PhaseFolio project. Get from the project URL in the dashboard or from a prior list_scenarios call.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"project_id"
],
"type": "object"
},
"name": "get_project",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"description": "Canonical PhaseFolio envelope. Substantive payload is in `data`.",
"properties": {
"data": {
"additionalProperties": false,
"properties": {
"created_at": {
"description": "ISO 8601 timestamp of project creation.",
"type": "string"
},
"current_stage": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Current development stage, e.g. 'Phase 2'. Null for unset."
},
"id": {
"description": "Stable PhaseFolio project UUID.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"indication": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Indication, e.g. 'NSCLC' or 'Rheumatoid Arthritis'. Null for unset."
},
"modality": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Modality, e.g. 'Antibody', 'Small Molecule'. Null for unset."
},
"name": {
"description": "Display name of the project.",
"type": "string"
},
"updated_at": {
"description": "ISO 8601 timestamp of last project metadata update.",
"type": "string"
}
},
"required": [
"id",
"name",
"indication",
"modality",
"current_stage",
"created_at",
"updated_at"
],
"type": "object"
}
},
"required": [
"data"
],
"type": "object"
}
},
{
"description": "Fetch a PhaseFolio scenario's complete inputs (stage costs, durations, PoS, commercial assumptions, IRA settings) and computed outputs (eNPV, rNPV, cumulative PoS, per-stage breakdown, top sensitivity drivers). This is the authoritative model output — every signed export ties back to this payload.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"scenario_id": {
"description": "UUID of the scenario. Get from list_scenarios or the scenario URL in the dashboard.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"scenario_id"
],
"type": "object"
},
"name": "get_scenario",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"description": "Canonical PhaseFolio envelope. Substantive payload is in `data`.",
"properties": {
"data": {
"additionalProperties": false,
"properties": {
"created_at": {
"description": "ISO 8601 timestamp.",
"type": "string"
},
"id": {
"description": "Scenario UUID. Pass to get_scenario, get_evidence, or get_dossier.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"inputs": {
"description": "Full scenario inputs blob (stages, costs, durations, PoS, commercial assumptions, IRA settings). Schema mirrors the wizard input model."
},
"is_base": {
"description": "True if this is the base case scenario for the project.",
"type": "boolean"
},
"label": {
"description": "Human-friendly scenario name, e.g. 'Base Case' or 'Bear Case'.",
"type": "string"
},
"mfp_discount": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "IRA Maximum Fair Price discount magnitude (0–1) used in this scenario, if applicable."
},
"modality": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Modality from inputs_json (echoed for convenience)."
},
"model_version": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Model version that produced `result` (the result's own engine_version key). Null when the scenario has not been computed."
},
"project_id": {
"description": "UUID of the parent project.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"result": {
"description": "Full model output blob: eNPV (USD M), rNPV (USD M), cumulative_pos, per_stage_breakdown[], top sensitivity drivers, optional Monte Carlo percentiles."
},
"updated_at": {
"description": "ISO 8601 timestamp of last scenario edit.",
"type": "string"
}
},
"required": [
"id",
"label",
"project_id",
"is_base",
"created_at",
"updated_at",
"inputs",
"result",
"model_version",
"modality",
"mfp_discount"
],
"type": "object"
}
},
"required": [
"data"
],
"type": "object"
}
},
{
"description": "List all scenarios in a PhaseFolio project. Returns scenario IDs, names, created/updated timestamps, and top-line eNPV/rNPV. Use this to discover what scenarios exist before fetching one in detail.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"limit": {
"default": 50,
"description": "Maximum number of scenarios to return (1–200). Defaults to 50; raise for projects with many what-if branches.",
"maximum": 200,
"minimum": 1,
"type": "integer"
},
"project_id": {
"description": "UUID of the parent project whose scenarios to list.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"project_id",
"limit"
],
"type": "object"
},
"name": "list_scenarios",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"description": "Canonical PhaseFolio envelope. Substantive payload is in `data`.",
"properties": {
"data": {
"description": "Scenarios in the project, newest first.",
"items": {
"additionalProperties": false,
"properties": {
"created_at": {
"description": "ISO 8601 timestamp.",
"type": "string"
},
"id": {
"description": "Scenario UUID. Pass to get_scenario, get_evidence, or get_dossier.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"is_base": {
"description": "True if this is the base case scenario for the project.",
"type": "boolean"
},
"label": {
"description": "Human-friendly scenario name, e.g. 'Base Case' or 'Bear Case'.",
"type": "string"
},
"project_id": {
"description": "UUID of the parent project.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"updated_at": {
"description": "ISO 8601 timestamp of last scenario edit.",
"type": "string"
}
},
"required": [
"id",
"label",
"project_id",
"is_base",
"created_at",
"updated_at"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"data"
],
"type": "object"
}
},
{
"description": "Query PhaseFolio benchmark availability. Source-backed PoS benchmarks are available separately; network cost distributions and duration percentiles are planned but currently return coming_soon with null estimates rather than PhaseFolio's manual planning defaults.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"indication": {
"description": "Indication name (e.g. 'NSCLC', 'Rheumatoid Arthritis', 'Atopic Dermatitis'). Free-form; the model fuzz-matches to the canonical indication taxonomy.",
"type": "string"
},
"metric": {
"description": "Which benchmark family to request. Cost and duration network benchmarks are currently coming_soon and return no estimate; manual wizard defaults are not returned as benchmarks.",
"enum": [
"pos",
"cost",
"duration",
"all"
],
"type": "string"
},
"modality": {
"description": "Optional modality filter ('Antibody', 'Small Molecule', 'Cell Therapy', 'Gene Therapy', etc.). Omit to return cross-modality stats.",
"type": "string"
}
},
"required": [
"indication",
"metric"
],
"type": "object"
},
"name": "query_benchmarks",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"description": "Canonical PhaseFolio envelope. Substantive payload is in `data`.",
"properties": {
"data": {
"additionalProperties": false,
"description": "L1 (no-auth) returns a versioned headline set; L3 (bearer) will return granular slices once enough orgs are on the network.",
"properties": {
"available_metrics": {
"description": "Network benchmark metric families with published numeric estimates.",
"items": {
"type": "string"
},
"type": "array"
},
"coming_soon": {
"description": "Set when this metric family hasn't published yet; explains when it will.",
"type": "string"
},
"headlines": {
"description": "Headline aggregates returned at the public tier.",
"items": {
"additionalProperties": false,
"properties": {
"metric": {
"description": "Metric name, e.g. 'Phase II RA trial cost (median, USD M)'.",
"type": "string"
},
"n": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Sample size behind the value; null when status='coming_soon'."
},
"status": {
"description": "Status, e.g. 'live' or 'coming_soon'.",
"type": "string"
},
"value": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Numeric value; null when status='coming_soon'."
}
},
"required": [
"metric",
"value",
"n",
"status"
],
"type": "object"
},
"type": "array"
},
"methodology_url": {
"description": "Path to the methodology section that explains how these were computed.",
"type": "string"
},
"note": {
"description": "Plain-language benchmark-availability and provenance note.",
"type": "string"
},
"planning_defaults_excluded": {
"description": "True when manual PhaseFolio planning defaults are intentionally excluded.",
"type": "boolean"
},
"version": {
"description": "Stable version identifier of this benchmark snapshot, e.g. 'preview-2026-04'.",
"type": "string"
}
},
"required": [
"version",
"available_metrics",
"planning_defaults_excluded",
"note",
"methodology_url"
],
"type": "object"
}
},
"required": [
"data"
],
"type": "object"
}
},
{
"description": "Fetch human-reviewed drug-specific clinical-risk signals for a project, including biomarker quality, Phase 1 ORR flag-only data, provenance, extractor versions, and pending-review counts. Use this before interpreting model 2.6.0 drug-specific multipliers or flags.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"project_id": {
"description": "UUID of the project whose reviewed drug-specific clinical-risk signals should be queried.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
}
},
"required": [
"project_id"
],
"type": "object"
},
"name": "query_drug_risk",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"description": "Canonical PhaseFolio envelope. Substantive payload is in `data`.",
"properties": {
"data": {
"additionalProperties": false,
"description": "Drug-specific clinical-risk substrate for a project. Returns reviewed signals only; pending rows are counted but excluded from scoring.",
"properties": {
"drug_name": {
"description": "Project asset name used to match reviewed drug-specific signal rows.",
"type": "string"
},
"extractor_versions": {
"description": "Recent extractor prompt versions that produced this signal family.",
"items": {},
"type": "array"
},
"indication": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Project indication, if set."
},
"modality": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Project modality, if set."
},
"pending_count": {
"description": "Number of matching signal rows still waiting for human review.",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"type": "integer"
},
"phase1_orr_treatment": {
"const": "flag_only_engine_2_6_0",
"description": "Phase 1 ORR is surfaced but not scored in model 2.6.0.",
"type": "string"
},
"project_id": {
"description": "Project UUID used to anchor the lookup.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"reviewed_count": {
"description": "Number of reviewed approved/amended signals returned.",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"type": "integer"
},
"scoring_gate": {
"const": "reviewed_at_not_null",
"description": "Human-review gate required before a signal can score.",
"type": "string"
},
"scoring_review_decisions": {
"description": "Review decisions eligible for scoring or surfacing.",
"items": {
"type": "string"
},
"type": "array"
},
"signals": {
"description": "Reviewed signal rows with provenance, extracted values, review state, and OR metadata.",
"items": {},
"type": "array"
}
},
"required": [
"project_id",
"drug_name",
"indication",
"modality",
"reviewed_count",
"pending_count",
"scoring_gate",
"scoring_review_decisions",
"phase1_orr_treatment",
"signals",
"extractor_versions"
],
"type": "object"
}
},
"required": [
"data"
],
"type": "object"
}
},
{
"description": "Produce a transparent, provenance-linked CONDITIONAL READ on a drug asset for deal triage. Pass either `text` (a teaser/abstract — fields are machine-extracted and the result is marked inputs_unconfirmed) or pre-confirmed `fields`. Returns a reasoning chain (each claim grounded or marked insufficient_evidence), mechanism-plausibility flags, PoS metrics, and a meta block with model/methodology/synthesis versions. Does NOT compute rNPV. Not an autonomous verdict.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"fields": {
"additionalProperties": false,
"description": "Pre-confirmed structured fields.",
"properties": {
"biomarker_strategy": {
"default": "none",
"type": "string"
},
"comparators": {
"default": [],
"items": {
"type": "string"
},
"type": "array"
},
"indication": {
"type": "string"
},
"modality": {
"type": "string"
},
"stage": {
"type": "string"
},
"target": {
"type": "string"
}
},
"required": [
"modality",
"target",
"indication",
"stage",
"comparators",
"biomarker_strategy"
],
"type": "object"
},
"text": {
"description": "Unstructured asset text; triggers extraction (inputs_unconfirmed=true).",
"type": "string"
}
},
"type": "object"
},
"name": "triage_asset",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"description": "Canonical PhaseFolio envelope. Substantive payload is in `data`.",
"properties": {
"data": {}
},
"required": [
"data"
],
"type": "object"
}
},
{
"description": "Verify a signed PhaseFolio export by content hash. Returns verification status (valid/tampered/unknown), issued timestamp, methodology version, and an anonymized originating-org identifier. Use this when a user shares a PhaseFolio asset snapshot and you want to confirm it's authentic before citing the analysis.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"hash": {
"description": "64-character hex SHA-256 of the signed artifact's content. Embedded in every signed PhaseFolio PDF (footer) and Excel (cover tab).",
"pattern": "^[a-f0-9]{64}$",
"type": "string"
}
},
"required": [
"hash"
],
"type": "object"
},
"name": "verify_export",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"description": "Canonical PhaseFolio envelope. Substantive payload is in `data`.",
"properties": {
"data": {
"oneOf": [
{
"additionalProperties": false,
"properties": {
"benchmark_dataset_versions": {
"description": "Array of benchmark dataset versions used; '[]' for legacy rows."
},
"content_hash": {
"type": "string"
},
"engine_version": {
"description": "Deprecated alias of model_version, kept for existing clients.",
"type": "string"
},
"evidence_count": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"format": {
"description": "Export format: 'pdf' or 'xlsx'.",
"type": "string"
},
"indication": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"methodology_version": {
"description": "Methodology version stamp at signing time, e.g. 'methodology@2026-04'.",
"type": "string"
},
"modality": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"model_version": {
"description": "Model version stamp at signing time. Sentinel 'unknown (pre-2026-05)' for legacy rows.",
"type": "string"
},
"org": {
"description": "Anonymized originating-org identifier, or display name if the org opted into public attribution.",
"type": "string"
},
"signals_used": {
"description": "Reviewed drug-specific signal provenance included in the signed content hash; [] for none or legacy rows."
},
"signed_at": {
"description": "ISO 8601 timestamp the artifact was signed at.",
"type": "string"
},
"status": {
"const": "valid",
"type": "string"
}
},
"required": [
"status",
"content_hash",
"signed_at",
"methodology_version",
"model_version",
"engine_version",
"benchmark_dataset_versions",
"signals_used",
"format",
"org",
"indication",
"modality",
"evidence_count"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"message": {
"type": "string"
},
"status": {
"const": "unknown",
"type": "string"
}
},
"required": [
"status",
"message"
],
"type": "object"
}
]
}
},
"required": [
"data"
],
"type": "object"
}
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:e706911c1925c3e59b5bd7a074a68788b68311a3fd64aaef9597e8ab5cfd1a72 | sha256sum