phasefolio
Biotech rNPV/PoS engine for AI agents. Signed exports, evidence register, asset landscape.
¿Debería usar esto?
Calidad y seguridad
Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.
Costo de contexto
Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.
Instalar
Instalación con un clic
Agrega esto a tu archivo `claude_desktop_config.json`:
{
"mcpServers": {
"phasefolio": {
"command": "npx",
"args": [
"@phasefolio/mcp"
]
}
}
}Paquetes ejecutables
0.1.4stdioPuntos de conexión remotos
https://app.phasefolio.com/api/mcpstreamable-httpQué puede hacer
Inventario de herramientas
Herramientas (13)
🟢get_project(project_id)
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.
Esquema de entrada
{
"type": "object",
"properties": {
"project_id": {
"type": "string",
"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)$",
"description": "UUID of the PhaseFolio project. Get from the project URL in the dashboard or from a prior list_scenarios call."
}
},
"required": [
"project_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"id": {
"type": "string",
"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)$",
"description": "Stable PhaseFolio project UUID."
},
"name": {
"type": "string",
"description": "Display name of the project."
},
"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."
},
"current_stage": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Current development stage, e.g. 'Phase 2'. Null for unset."
},
"created_at": {
"type": "string",
"description": "ISO 8601 timestamp of project creation."
},
"updated_at": {
"type": "string",
"description": "ISO 8601 timestamp of last project metadata update."
}
},
"required": [
"id",
"name",
"indication",
"modality",
"current_stage",
"created_at",
"updated_at"
],
"additionalProperties": false
}
},
"required": [
"data"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"description": "Canonical PhaseFolio envelope. Substantive payload is in `data`."
}🟢list_scenarios(project_id, limit)
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.
Esquema de entrada
{
"type": "object",
"properties": {
"project_id": {
"type": "string",
"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)$",
"description": "UUID of the parent project whose scenarios to list."
},
"limit": {
"default": 50,
"description": "Maximum number of scenarios to return (1–200). Defaults to 50; raise for projects with many what-if branches.",
"type": "integer",
"minimum": 1,
"maximum": 200
}
},
"required": [
"project_id",
"limit"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"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)$",
"description": "Scenario UUID. Pass to get_scenario, get_evidence, or get_dossier."
},
"label": {
"type": "string",
"description": "Human-friendly scenario name, e.g. 'Base Case' or 'Bear Case'."
},
"project_id": {
"type": "string",
"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)$",
"description": "UUID of the parent project."
},
"is_base": {
"type": "boolean",
"description": "True if this is the base case scenario for the project."
},
"created_at": {
"type": "string",
"description": "ISO 8601 timestamp."
},
"updated_at": {
"type": "string",
"description": "ISO 8601 timestamp of last scenario edit."
}
},
"required": [
"id",
"label",
"project_id",
"is_base",
"created_at",
"updated_at"
],
"additionalProperties": false
},
"description": "Scenarios in the project, newest first."
}
},
"required": [
"data"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"description": "Canonical PhaseFolio envelope. Substantive payload is in `data`."
}🟢get_scenario(scenario_id)
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 engine output — every signed export ties back to this payload.
Esquema de entrada
{
"type": "object",
"properties": {
"scenario_id": {
"type": "string",
"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)$",
"description": "UUID of the scenario. Get from list_scenarios or the scenario URL in the dashboard."
}
},
"required": [
"scenario_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"id": {
"type": "string",
"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)$",
"description": "Scenario UUID. Pass to get_scenario, get_evidence, or get_dossier."
},
"label": {
"type": "string",
"description": "Human-friendly scenario name, e.g. 'Base Case' or 'Bear Case'."
},
"project_id": {
"type": "string",
"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)$",
"description": "UUID of the parent project."
},
"is_base": {
"type": "boolean",
"description": "True if this is the base case scenario for the project."
},
"created_at": {
"type": "string",
"description": "ISO 8601 timestamp."
},
"updated_at": {
"type": "string",
"description": "ISO 8601 timestamp of last scenario edit."
},
"inputs": {
"description": "Full scenario inputs blob (stages, costs, durations, PoS, commercial assumptions, IRA settings). Schema mirrors the wizard input model."
},
"result": {
"description": "Full engine output blob: eNPV (USD M), rNPV (USD M), cumulative_pos, per_stage_breakdown[], top sensitivity drivers, optional Monte Carlo percentiles."
},
"modality": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Modality from inputs_json (echoed for convenience)."
},
"mfp_discount": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "IRA Maximum Fair Price discount magnitude (0–1) used in this scenario, if applicable."
}
},
"required": [
"id",
"label",
"project_id",
"is_base",
"created_at",
"updated_at",
"inputs",
"result",
"modality",
"mfp_discount"
],
"additionalProperties": false
}
},
"required": [
"data"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"description": "Canonical PhaseFolio envelope. Substantive payload is in `data`."
}🟢get_evidence(scenario_id)
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?'
Esquema de entrada
{
"type": "object",
"properties": {
"scenario_id": {
"type": "string",
"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)$",
"description": "UUID of the scenario whose evidence register entries to fetch."
}
},
"required": [
"scenario_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {},
"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."
}
},
"required": [
"data"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"description": "Canonical PhaseFolio envelope. Substantive payload is in `data`."
}🟢get_dossier(scenario_id)
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.
Esquema de entrada
{
"type": "object",
"properties": {
"scenario_id": {
"type": "string",
"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)$",
"description": "UUID of the scenario to fetch the asset snapshot payload for."
}
},
"required": [
"scenario_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"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"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"description": "Canonical PhaseFolio envelope. Substantive payload is in `data`."
}🟢query_landscape(project_id, phase_filter, recency_years)
Fetch the asset-anchored competitive landscape for a project — comparable trials, competing programs, sponsor activity, and biomarker overlap. Sourced from CT.gov + FDA + PhaseFolio's curated enrichment. Use when an analysis question asks 'who else is working on this?' or 'what's the competitive context?'
Esquema de entrada
{
"type": "object",
"properties": {
"project_id": {
"type": "string",
"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)$",
"description": "UUID of the project to anchor the landscape on. Indication × modality × biomarker filters derive from the project."
},
"phase_filter": {
"default": [],
"description": "Optional list of clinical phases to include (e.g. ['PHASE2','PHASE3']). Empty array means all phases.",
"type": "array",
"items": {
"type": "string"
}
},
"recency_years": {
"default": 10,
"description": "How many years back to look (1–50). Defaults to 10 — broad enough to catch development-stage peers without polluting with stale failures.",
"type": "integer",
"minimum": 1,
"maximum": 50
}
},
"required": [
"project_id",
"phase_filter",
"recency_years"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"data": {
"description": "Asset-anchored landscape payload: kpis (sponsor counts, trial counts, etc.), comparable_trials[] (NCT-keyed), competing_programs[], biomarker_overlap. Filtered by the project's indication × modality × biomarker."
}
},
"required": [
"data"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"description": "Canonical PhaseFolio envelope. Substantive payload is in `data`."
}🟢query_evidence_atlas(sub_indication, include_unverified, limit)
Fetch the published Evidence Atlas program universe for a sub-indication. Defaults to source-verified rows from public CT.gov + FDA; agent-labeled rows require include_unverified=true and remain explicitly labeled. Pending AI-serviced event_links are human_verified=false and review_status=pending_human_review until reviewed. Trial summaries and financial_links are source-derived facts; interpreted efficacy, PoS, and verdicts are not returned.
Esquema de entrada
{
"type": "object",
"properties": {
"sub_indication": {
"type": "string",
"pattern": "^[a-z0-9_-]{1,64}$",
"description": "Evidence Atlas sub-indication slug, e.g. 'ipf'."
},
"include_unverified": {
"default": false,
"description": "When true, include agent-labeled-not-verified rows in addition to source_verified rows. Rejected rows are never returned.",
"type": "boolean"
},
"limit": {
"default": 100,
"description": "Maximum number of programs to return, 1-328. Defaults to 100.",
"type": "integer",
"minimum": 1,
"maximum": 328
}
},
"required": [
"sub_indication",
"include_unverified",
"limit"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"coverage": {
"description": "Published Evidence Atlas coverage row with dated public CT.gov + FDA provenance."
},
"programs": {
"type": "array",
"items": {},
"description": "Program universe rows with CT.gov/FDA source links, registry-derived trial summary fields, source-linked financial_links facts, and explicit event_links when requested. Pending AI-serviced event rows remain agent_labeled, human_verified=false, review_status=pending_human_review, and require include_unverified=true."
},
"default_label_scope": {
"type": "string",
"const": "source_verified"
},
"unverified_rows_included": {
"type": "boolean"
}
},
"required": [
"coverage",
"programs",
"default_label_scope",
"unverified_rows_included"
],
"additionalProperties": false,
"description": "Evidence Atlas payload for one published sub-indication."
}
},
"required": [
"data"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"description": "Canonical PhaseFolio envelope. Substantive payload is in `data`."
}🟢query_drug_risk(project_id)
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 engine 2.6.0 drug-specific multipliers or flags.
Esquema de entrada
{
"type": "object",
"properties": {
"project_id": {
"type": "string",
"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)$",
"description": "UUID of the project whose reviewed drug-specific clinical-risk signals should be queried."
}
},
"required": [
"project_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"project_id": {
"type": "string",
"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)$",
"description": "Project UUID used to anchor the lookup."
},
"drug_name": {
"type": "string",
"description": "Project asset name used to match reviewed drug-specific signal rows."
},
"indication": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Project indication, if set."
},
"modality": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Project modality, if set."
},
"reviewed_count": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Number of reviewed approved/amended signals returned."
},
"pending_count": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Number of matching signal rows still waiting for human review."
},
"scoring_gate": {
"type": "string",
"const": "reviewed_at_not_null",
"description": "Human-review gate required before a signal can score."
},
"scoring_review_decisions": {
"type": "array",
"items": {
"type": "string"
},
"description": "Review decisions eligible for scoring or surfacing."
},
"phase1_orr_treatment": {
"type": "string",
"const": "flag_only_engine_2_6_0",
"description": "Phase 1 ORR is surfaced but not scored in engine 2.6.0."
},
"signals": {
"type": "array",
"items": {},
"description": "Reviewed signal rows with provenance, extracted values, review state, and OR metadata."
},
"extractor_versions": {
"type": "array",
"items": {},
"description": "Recent extractor prompt versions that produced this signal family."
}
},
"required": [
"project_id",
"drug_name",
"indication",
"modality",
"reviewed_count",
"pending_count",
"scoring_gate",
"scoring_review_decisions",
"phase1_orr_treatment",
"signals",
"extractor_versions"
],
"additionalProperties": false,
"description": "Drug-specific clinical-risk substrate for a project. Returns reviewed signals only; pending rows are counted but excluded from scoring."
}
},
"required": [
"data"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"description": "Canonical PhaseFolio envelope. Substantive payload is in `data`."
}🟢query_benchmarks(indication, modality, metric)
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.
Esquema de entrada
{
"type": "object",
"properties": {
"indication": {
"type": "string",
"description": "Indication name (e.g. 'NSCLC', 'Rheumatoid Arthritis', 'Atopic Dermatitis'). Free-form; the engine fuzz-matches to the canonical indication taxonomy."
},
"modality": {
"description": "Optional modality filter ('Antibody', 'Small Molecule', 'Cell Therapy', 'Gene Therapy', etc.). Omit to return cross-modality stats.",
"type": "string"
},
"metric": {
"type": "string",
"enum": [
"pos",
"cost",
"duration",
"all"
],
"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."
}
},
"required": [
"indication",
"metric"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"version": {
"type": "string",
"description": "Stable version identifier of this benchmark snapshot, e.g. 'preview-2026-04'."
},
"coming_soon": {
"description": "Set when this metric family hasn't published yet; explains when it will.",
"type": "string"
},
"available_metrics": {
"type": "array",
"items": {
"type": "string"
},
"description": "Network benchmark metric families with published numeric estimates."
},
"planning_defaults_excluded": {
"type": "boolean",
"description": "True when manual PhaseFolio planning defaults are intentionally excluded."
},
"note": {
"type": "string",
"description": "Plain-language benchmark-availability and provenance note."
},
"headlines": {
"description": "Headline aggregates returned at the public tier.",
"type": "array",
"items": {
"type": "object",
"properties": {
"metric": {
"type": "string",
"description": "Metric name, e.g. 'Phase II RA trial cost (median, USD M)'."
},
"value": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Numeric value; null when status='coming_soon'."
},
"n": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Sample size behind the value; null when status='coming_soon'."
},
"status": {
"type": "string",
"description": "Status, e.g. 'live' or 'coming_soon'."
}
},
"required": [
"metric",
"value",
"n",
"status"
],
"additionalProperties": false
}
},
"methodology_url": {
"type": "string",
"description": "Path to the methodology section that explains how these were computed."
}
},
"required": [
"version",
"available_metrics",
"planning_defaults_excluded",
"note",
"methodology_url"
],
"additionalProperties": false,
"description": "L1 (no-auth) returns a versioned headline set; L3 (bearer) will return granular slices once enough orgs are on the network."
}
},
"required": [
"data"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"description": "Canonical PhaseFolio envelope. Substantive payload is in `data`."
}🟢verify_export(hash)
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.
Esquema de entrada
{
"type": "object",
"properties": {
"hash": {
"type": "string",
"pattern": "^[a-f0-9]{64}$",
"description": "64-character hex SHA-256 of the signed artifact's content. Embedded in every signed PhaseFolio PDF (footer) and Excel (cover tab)."
}
},
"required": [
"hash"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"data": {
"oneOf": [
{
"type": "object",
"properties": {
"status": {
"type": "string",
"const": "valid"
},
"content_hash": {
"type": "string"
},
"signed_at": {
"type": "string",
"description": "ISO 8601 timestamp the artifact was signed by the engine."
},
"methodology_version": {
"type": "string",
"description": "Methodology version stamp at signing time, e.g. 'methodology@2026-04'."
},
"engine_version": {
"type": "string",
"description": "Engine version stamp at signing time. Sentinel 'unknown (pre-2026-05)' for legacy rows."
},
"benchmark_dataset_versions": {
"description": "Array of benchmark dataset versions used; '[]' for legacy rows."
},
"signals_used": {
"description": "Reviewed drug-specific signal provenance included in the signed content hash; [] for none or legacy rows."
},
"format": {
"type": "string",
"description": "Export format: 'pdf' or 'xlsx'."
},
"org": {
"type": "string",
"description": "Anonymized originating-org identifier, or display name if the org opted into public attribution."
},
"indication": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"modality": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"evidence_count": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"required": [
"status",
"content_hash",
"signed_at",
"methodology_version",
"engine_version",
"benchmark_dataset_versions",
"signals_used",
"format",
"org",
"indication",
"modality",
"evidence_count"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"status": {
"type": "string",
"const": "unknown"
},
"message": {
"type": "string"
}
},
"required": [
"status",
"message"
],
"additionalProperties": false
}
]
}
},
"required": [
"data"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"description": "Canonical PhaseFolio envelope. Substantive payload is in `data`."
}🟢query_sec_deal_terms(indication, deal_type, since, until, min_confidence, ...)
Query SEC EDGAR deal-term extractions by indication, deal type, date range, confidence, and review state. Returns per-deal rows with source quotes and accession URLs for verification; aggregate engine medians use the separate backend aggregate function.
Esquema de entrada
{
"type": "object",
"properties": {
"indication": {
"description": "Optional indication filter, e.g. 'antimicrobial'.",
"type": "string"
},
"deal_type": {
"description": "Optional deal type filter.",
"type": "string",
"enum": [
"license_in",
"license_out",
"collaboration",
"asset_acquisition"
]
},
"since": {
"description": "Optional inclusive effective_date lower bound in YYYY-MM-DD format.",
"type": "string"
},
"until": {
"description": "Optional inclusive effective_date upper bound in YYYY-MM-DD format.",
"type": "string"
},
"min_confidence": {
"default": 0.5,
"description": "Minimum extraction confidence threshold. Defaults to 0.5.",
"type": "number",
"minimum": 0,
"maximum": 1
},
"include_needs_review": {
"default": true,
"description": "Whether to include rows flagged needs_review. Defaults to true so admin users can see flags.",
"type": "boolean"
},
"limit": {
"default": 100,
"description": "Maximum rows to return, 1-500. Defaults to 100.",
"type": "integer",
"minimum": 1,
"maximum": 500
}
},
"required": [
"min_confidence",
"include_needs_review",
"limit"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"deals": {
"type": "array",
"items": {},
"description": "SEC EDGAR deal-term rows with accession_number, source_quote, extractor_version, and needs_review."
},
"count": {
"type": "number",
"description": "Number of rows returned."
},
"filters": {
"description": "Filters applied by the backend query.",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"required": [
"deals",
"count"
],
"additionalProperties": false
}
},
"required": [
"data"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"description": "Canonical PhaseFolio envelope. Substantive payload is in `data`."
}🟢triage_asset(text, fields)
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 + landscape metrics, and a meta block with engine/methodology/synthesis versions. Does NOT compute rNPV. Not an autonomous verdict.
Esquema de entrada
{
"type": "object",
"properties": {
"text": {
"description": "Unstructured asset text; triggers extraction (inputs_unconfirmed=true).",
"type": "string"
},
"fields": {
"description": "Pre-confirmed structured fields.",
"type": "object",
"properties": {
"modality": {
"type": "string"
},
"target": {
"type": "string"
},
"indication": {
"type": "string"
},
"stage": {
"type": "string"
},
"comparators": {
"default": [],
"type": "array",
"items": {
"type": "string"
}
},
"biomarker_strategy": {
"default": "none",
"type": "string"
}
},
"required": [
"modality",
"target",
"indication",
"stage",
"comparators",
"biomarker_strategy"
],
"additionalProperties": false
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"data": {}
},
"required": [
"data"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"description": "Canonical PhaseFolio envelope. Substantive payload is in `data`."
}🟢get_methodology(section)
Fetch a PhaseFolio methodology section's full content (rNPV engine, backtest, PoS calibration, IRA framework, development paths, 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.
Esquema de entrada
{
"type": "object",
"properties": {
"section": {
"type": "string",
"enum": [
"rnpv",
"backtest",
"pos-calibration",
"ira-framework",
"development-paths",
"stage-normalization",
"evidence-standards",
"network-benchmarks",
"cogs-benchmark",
"sga-benchmark",
"tax-benchmark",
"sec-deal-terms"
],
"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 engine 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; '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' covers the SEC EDGAR 8-K Item 1.01 deal-term extraction pipeline (cohort, extractor + classifier versions, fields extracted, v0 vs v1 scope)."
}
},
"required": [
"section"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"section_id": {
"type": "string",
"enum": [
"rnpv",
"backtest",
"pos-calibration",
"ira-framework",
"development-paths",
"evidence-standards",
"network-benchmarks",
"cogs-benchmark",
"sga-benchmark",
"tax-benchmark",
"sec-deal-terms"
],
"description": "Stable section identifier — reuse as the citation key."
},
"title": {
"type": "string"
},
"version": {
"type": "string",
"description": "Versioned identifier for this section's content, e.g. 'methodology@2026-04'."
},
"last_updated": {
"description": "ISO 8601 date of the last meaningful edit.",
"type": "string"
},
"citation_url": {
"type": "string",
"description": "Public canonical URL — cite this in analysis output."
},
"summary": {
"type": "string",
"description": "Short summary suitable for inline quoting (≤500 chars)."
}
},
"required": [
"section_id",
"title",
"version",
"citation_url",
"summary"
],
"additionalProperties": {}
}
},
"required": [
"data"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"description": "Canonical PhaseFolio envelope. Substantive payload is in `data`."
}Comunidad
Evidencia