{
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-05",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.3",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "tool": {
    "category": "",
    "endpoint": "https://app.phasefolio.com/api/mcp",
    "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/phasefolio.json",
    "kind": "mcp",
    "listed": "indexed",
    "liveUrl": "https://www.anchorterminal.com/api/v1/live/phasefolio.json",
    "markdownUrl": "https://www.anchorterminal.com/tools/phasefolio.md",
    "mcpTools": {
      "check": {
        "checker": "anchor-check/1.0",
        "totalTokens": 6503,
        "counts": {
          "error": 0,
          "note": 0,
          "warn": 1
        },
        "findings": [
          {
            "rule": "TC10",
            "severity": "warn",
            "tool": "list_scenarios",
            "message": "\"limit\" is required and has a default",
            "fix": "Make it optional; the default says what happens when it's left out."
          }
        ]
      },
      "checkedAt": "2026-10-04T22:23:34Z",
      "count": 10,
      "note": "answered without the initialize handshake",
      "schemaTokens": 6503,
      "status": "ok",
      "tools": [
        {
          "name": "get_project",
          "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"
          },
          "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"
          },
          "annotations": {
            "destructiveHint": false,
            "idempotentHint": true,
            "openWorldHint": true,
            "readOnlyHint": true,
            "title": "Get Project"
          }
        },
        {
          "name": "list_scenarios",
          "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"
          },
          "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"
          },
          "annotations": {
            "destructiveHint": false,
            "idempotentHint": true,
            "openWorldHint": true,
            "readOnlyHint": true,
            "title": "List Scenarios"
          }
        },
        {
          "name": "get_scenario",
          "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"
          },
          "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"
          },
          "annotations": {
            "destructiveHint": false,
            "idempotentHint": true,
            "openWorldHint": true,
            "readOnlyHint": true,
            "title": "Get Scenario"
          }
        },
        {
          "name": "get_evidence",
          "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"
          },
          "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"
          },
          "annotations": {
            "destructiveHint": false,
            "idempotentHint": true,
            "openWorldHint": true,
            "readOnlyHint": true,
            "title": "Get Evidence"
          }
        },
        {
          "name": "get_dossier",
          "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"
          },
          "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"
          },
          "annotations": {
            "destructiveHint": false,
            "idempotentHint": true,
            "openWorldHint": true,
            "readOnlyHint": true,
            "title": "Get Asset Snapshot"
          }
        },
        {
          "name": "query_drug_risk",
          "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"
          },
          "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"
          },
          "annotations": {
            "destructiveHint": false,
            "idempotentHint": true,
            "openWorldHint": true,
            "readOnlyHint": true,
            "title": "Query Drug-Specific Risk"
          }
        },
        {
          "name": "query_benchmarks",
          "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"
          },
          "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"
          },
          "annotations": {
            "destructiveHint": false,
            "idempotentHint": true,
            "openWorldHint": true,
            "readOnlyHint": true,
            "title": "Query Network Benchmarks"
          }
        },
        {
          "name": "verify_export",
          "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"
          },
          "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"
          },
          "annotations": {
            "destructiveHint": false,
            "idempotentHint": true,
            "openWorldHint": true,
            "readOnlyHint": true,
            "title": "Verify Signed Export"
          }
        },
        {
          "name": "triage_asset",
          "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"
          },
          "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"
          },
          "annotations": {
            "destructiveHint": false,
            "idempotentHint": true,
            "openWorldHint": true,
            "readOnlyHint": true,
            "title": "Triage Asset"
          }
        },
        {
          "name": "get_methodology",
          "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\u0026A 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\u0026A/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\u0026A% 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"
          },
          "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"
          },
          "annotations": {
            "destructiveHint": false,
            "idempotentHint": true,
            "openWorldHint": true,
            "readOnlyHint": true,
            "title": "Get Methodology Section"
          }
        }
      ]
    },
    "name": "phasefolio",
    "note": "Indexed from the official MCP registry: facts and our own checks, not reviewed, so no score, grade or rank.",
    "packages": [
      {
        "registryType": "npm",
        "identifier": "@phasefolio/mcp",
        "version": "0.1.4",
        "transport": "stdio"
      }
    ],
    "pageJsonUrl": "https://www.anchorterminal.com/tools/phasefolio.json",
    "popularity": {
      "npmWeekly": 48
    },
    "registryName": "com.phasefolio/phasefolio",
    "remotes": [
      {
        "type": "streamable-http",
        "url": "https://app.phasefolio.com/api/mcp"
      }
    ],
    "repository": "",
    "reviewed": false,
    "slug": "phasefolio",
    "source": "the official MCP registry",
    "sourceUrl": "https://registry.modelcontextprotocol.io/v0.1/servers?search=com.phasefolio/phasefolio",
    "summary": "Biotech rNPV/PoS engine for AI agents. Signed exports, evidence register, asset landscape.",
    "updatedAt": "2026-05-03T08:52:53Z",
    "url": "https://www.anchorterminal.com/tools/phasefolio",
    "vendor": "phasefolio.com",
    "vendorUrl": "https://app.phasefolio.com",
    "version": "0.1.4",
    "websiteUrl": "https://app.phasefolio.com",
    "where": "both",
    "why": [
      "vendor"
    ]
  }
}
