{
  "$schema": "https://verifymcp.io/schemas/changelog.json",
  "server": "com-plainrouter-mcp",
  "component": "plainrouter",
  "generated_at": "2026-09-20T16:42:30.116Z",
  "tracking_since": "2026-08-26",
  "counts": {
    "critical": 0,
    "security": 17,
    "functional": 0,
    "cosmetic": 0
  },
  "events": [
    {
      "id": "chg_01a09a3b-4339-71b6-9fb4-d0bacdb58146",
      "kind": "tool.description_changed",
      "family": "",
      "subject_kind": "tool",
      "subject": "get_performance",
      "subject_child": "",
      "from_code": null,
      "to_code": null,
      "from_value": null,
      "to_value": null,
      "materiality": "security",
      "direction": "neutral",
      "score_delta": null,
      "detail": {
        "tool": "get_performance"
      },
      "occurred_on": "2026-09-13",
      "occurred_at": "2026-09-13 10:06:09.78285+00",
      "observed_since": "2026-09-12",
      "source": "scan",
      "summary": "Tool “get_performance” rewrote its description, which is the text the model reads",
      "link": "https://verifymcp.io/servers/com-plainrouter-mcp/plainrouter#chg-chg_01a09a3b-4339-71b6-9fb4-d0bacdb58146"
    },
    {
      "id": "chg_01a09515-2e5d-71df-aa23-693dce258a9e",
      "kind": "tool.description_changed",
      "family": "",
      "subject_kind": "tool",
      "subject": "propose-actions",
      "subject_child": "",
      "from_code": null,
      "to_code": null,
      "from_value": null,
      "to_value": null,
      "materiality": "security",
      "direction": "neutral",
      "score_delta": null,
      "detail": {
        "tool": "propose-actions"
      },
      "occurred_on": "2026-09-12",
      "occurred_at": "2026-09-12 10:06:28.334036+00",
      "observed_since": "2026-09-11",
      "source": "scan",
      "summary": "Tool “propose-actions” rewrote its description, which is the text the model reads",
      "link": "https://verifymcp.io/servers/com-plainrouter-mcp/plainrouter#chg-chg_01a09515-2e5d-71df-aa23-693dce258a9e"
    },
    {
      "id": "chg_01a09515-2e5c-7244-993d-389b733bb758",
      "kind": "tool.description_changed",
      "family": "",
      "subject_kind": "tool",
      "subject": "get_signal_health",
      "subject_child": "",
      "from_code": null,
      "to_code": null,
      "from_value": null,
      "to_value": null,
      "materiality": "security",
      "direction": "neutral",
      "score_delta": null,
      "detail": {
        "tool": "get_signal_health"
      },
      "occurred_on": "2026-09-12",
      "occurred_at": "2026-09-12 10:06:28.334036+00",
      "observed_since": "2026-09-11",
      "source": "scan",
      "summary": "Tool “get_signal_health” rewrote its description, which is the text the model reads",
      "link": "https://verifymcp.io/servers/com-plainrouter-mcp/plainrouter#chg-chg_01a09515-2e5c-7244-993d-389b733bb758"
    },
    {
      "id": "chg_01a09515-2e5d-77ae-a21e-8d526bffd425",
      "kind": "server.name_changed",
      "family": "",
      "subject_kind": "server",
      "subject": "Plainrouter",
      "subject_child": "",
      "from_code": null,
      "to_code": null,
      "from_value": "PlainRouter",
      "to_value": "Plainrouter",
      "materiality": "security",
      "direction": "neutral",
      "score_delta": null,
      "detail": {
        "to": "Plainrouter",
        "from": "PlainRouter"
      },
      "occurred_on": "2026-09-12",
      "occurred_at": "2026-09-12 10:06:28.334036+00",
      "observed_since": "2026-09-11",
      "source": "scan",
      "summary": "The server changed its declared name (PlainRouter → Plainrouter)",
      "link": "https://verifymcp.io/servers/com-plainrouter-mcp/plainrouter#chg-chg_01a09515-2e5d-77ae-a21e-8d526bffd425"
    },
    {
      "id": "chg_01a09515-2e5d-7d1b-b8c2-8dd95988dc84",
      "kind": "server.instructions_changed",
      "family": "",
      "subject_kind": "server",
      "subject": "instructions",
      "subject_child": "",
      "from_code": null,
      "to_code": null,
      "from_value": null,
      "to_value": null,
      "materiality": "security",
      "direction": "neutral",
      "score_delta": null,
      "detail": {},
      "occurred_on": "2026-09-12",
      "occurred_at": "2026-09-12 10:06:28.334036+00",
      "observed_since": "2026-09-11",
      "source": "scan",
      "summary": "The server rewrote its instructions, which are the text every model session reads",
      "link": "https://verifymcp.io/servers/com-plainrouter-mcp/plainrouter#chg-chg_01a09515-2e5d-7d1b-b8c2-8dd95988dc84"
    },
    {
      "id": "chg_01a08ac8-221d-7f1f-a209-e877f3b44d98",
      "kind": "check.verdict",
      "family": "stability",
      "subject_kind": "check",
      "subject": "stability",
      "subject_child": "",
      "from_code": "stability.building_history",
      "to_code": "stability.churn",
      "from_value": "0.47",
      "to_value": "fail",
      "materiality": "security",
      "direction": "regression",
      "score_delta": null,
      "detail": {
        "days": "15",
        "added": "1",
        "breaks": "0",
        "removed": "4",
        "auth_transport": "0"
      },
      "occurred_on": "2026-09-10",
      "occurred_at": "2026-09-10 10:06:06.414547+00",
      "observed_since": "2026-09-09",
      "source": "scan",
      "summary": "Stability (0.47 → fail)",
      "link": "https://verifymcp.io/servers/com-plainrouter-mcp/plainrouter#chg-chg_01a08ac8-221d-7f1f-a209-e877f3b44d98"
    },
    {
      "id": "chg_01a08ac8-2224-7510-a220-764ba32e8fe6",
      "kind": "server.breaking_without_version_bump",
      "family": "",
      "subject_kind": "server",
      "subject": "0.3.2",
      "subject_child": "",
      "from_code": null,
      "to_code": null,
      "from_value": "0.3.2",
      "to_value": "0.3.2",
      "materiality": "security",
      "direction": "regression",
      "score_delta": null,
      "detail": {
        "removed": "4",
        "version": "0.3.2",
        "breaking": "0"
      },
      "occurred_on": "2026-09-10",
      "occurred_at": "2026-09-10 10:06:06.414547+00",
      "observed_since": "2026-09-09",
      "source": "scan",
      "summary": "A breaking change shipped without a version bump (still 0.3.2)",
      "link": "https://verifymcp.io/servers/com-plainrouter-mcp/plainrouter#chg-chg_01a08ac8-2224-7510-a220-764ba32e8fe6"
    },
    {
      "id": "chg_01a08ac8-2223-7f0d-a5e7-0f5a5476b319",
      "kind": "tool.removed",
      "family": "",
      "subject_kind": "tool",
      "subject": "launcher.preview_batch",
      "subject_child": "",
      "from_code": null,
      "to_code": null,
      "from_value": null,
      "to_value": null,
      "materiality": "security",
      "direction": "regression",
      "score_delta": null,
      "detail": {
        "tool": "launcher.preview_batch"
      },
      "occurred_on": "2026-09-10",
      "occurred_at": "2026-09-10 10:06:06.414547+00",
      "observed_since": "2026-09-09",
      "source": "scan",
      "summary": "Tool “launcher.preview_batch” was removed",
      "link": "https://verifymcp.io/servers/com-plainrouter-mcp/plainrouter#chg-chg_01a08ac8-2223-7f0d-a5e7-0f5a5476b319"
    },
    {
      "id": "chg_01a08ac8-2223-78f2-84d8-18e9b4142c2d",
      "kind": "tool.removed",
      "family": "",
      "subject_kind": "tool",
      "subject": "launcher.execute_batch",
      "subject_child": "",
      "from_code": null,
      "to_code": null,
      "from_value": null,
      "to_value": null,
      "materiality": "security",
      "direction": "regression",
      "score_delta": null,
      "detail": {
        "tool": "launcher.execute_batch"
      },
      "occurred_on": "2026-09-10",
      "occurred_at": "2026-09-10 10:06:06.414547+00",
      "observed_since": "2026-09-09",
      "source": "scan",
      "summary": "Tool “launcher.execute_batch” was removed",
      "link": "https://verifymcp.io/servers/com-plainrouter-mcp/plainrouter#chg-chg_01a08ac8-2223-78f2-84d8-18e9b4142c2d"
    },
    {
      "id": "chg_01a08ac8-2222-7e1a-a918-f38d4f6966a5",
      "kind": "tool.removed",
      "family": "",
      "subject_kind": "tool",
      "subject": "launcher.draft_batch",
      "subject_child": "",
      "from_code": null,
      "to_code": null,
      "from_value": null,
      "to_value": null,
      "materiality": "security",
      "direction": "regression",
      "score_delta": null,
      "detail": {
        "tool": "launcher.draft_batch"
      },
      "occurred_on": "2026-09-10",
      "occurred_at": "2026-09-10 10:06:06.414547+00",
      "observed_since": "2026-09-09",
      "source": "scan",
      "summary": "Tool “launcher.draft_batch” was removed",
      "link": "https://verifymcp.io/servers/com-plainrouter-mcp/plainrouter#chg-chg_01a08ac8-2222-7e1a-a918-f38d4f6966a5"
    },
    {
      "id": "chg_01a08ac8-2221-7208-9d8d-5fcd8fdf24aa",
      "kind": "tool.removed",
      "family": "",
      "subject_kind": "tool",
      "subject": "launcher.batch_status",
      "subject_child": "",
      "from_code": null,
      "to_code": null,
      "from_value": null,
      "to_value": null,
      "materiality": "security",
      "direction": "regression",
      "score_delta": null,
      "detail": {
        "tool": "launcher.batch_status"
      },
      "occurred_on": "2026-09-10",
      "occurred_at": "2026-09-10 10:06:06.414547+00",
      "observed_since": "2026-09-09",
      "source": "scan",
      "summary": "Tool “launcher.batch_status” was removed",
      "link": "https://verifymcp.io/servers/com-plainrouter-mcp/plainrouter#chg-chg_01a08ac8-2221-7208-9d8d-5fcd8fdf24aa"
    },
    {
      "id": "chg_01a06197-1686-75d2-8367-b221918c18ab",
      "kind": "tool.description_changed",
      "family": "",
      "subject_kind": "tool",
      "subject": "verify_signal_ingestion",
      "subject_child": "",
      "from_code": null,
      "to_code": null,
      "from_value": null,
      "to_value": null,
      "materiality": "security",
      "direction": "neutral",
      "score_delta": null,
      "detail": {
        "tool": "verify_signal_ingestion"
      },
      "occurred_on": "2026-09-02",
      "occurred_at": "2026-09-02 10:08:06.492502+00",
      "observed_since": "2026-09-01",
      "source": "scan",
      "summary": "Tool “verify_signal_ingestion” rewrote its description, which is the text the model reads",
      "link": "https://verifymcp.io/servers/com-plainrouter-mcp/plainrouter#chg-chg_01a06197-1686-75d2-8367-b221918c18ab"
    },
    {
      "id": "chg_01a042b1-2ef4-7b28-a92a-04c59275ef87",
      "kind": "check.unverifiable",
      "family": "transport",
      "subject_kind": "check",
      "subject": "transport",
      "subject_child": "",
      "from_code": "transport.verified",
      "to_code": "transport.auth_gated",
      "from_value": "pass",
      "to_value": "unverified",
      "materiality": "security",
      "direction": "regression",
      "score_delta": null,
      "detail": {
        "transport": "streamable-http"
      },
      "occurred_on": "2026-08-27",
      "occurred_at": "2026-08-27 10:08:23.266279+00",
      "observed_since": "2026-08-26",
      "source": "scan",
      "summary": "Transport (pass → unverified)",
      "link": "https://verifymcp.io/servers/com-plainrouter-mcp/plainrouter#chg-chg_01a042b1-2ef4-7b28-a92a-04c59275ef87"
    },
    {
      "id": "chg_01a042b1-2ef5-712f-a9f7-370e5156b3cc",
      "kind": "check.verdict",
      "family": "hsts",
      "subject_kind": "check",
      "subject": "hsts",
      "subject_child": "",
      "from_code": "headers.hsts_absent",
      "to_code": "headers.hsts_present",
      "from_value": "fail",
      "to_value": "pass",
      "materiality": "security",
      "direction": "improvement",
      "score_delta": null,
      "detail": {},
      "occurred_on": "2026-08-27",
      "occurred_at": "2026-08-27 10:08:23.266279+00",
      "observed_since": "2026-08-26",
      "source": "scan",
      "summary": "HSTS header (fail → pass)",
      "link": "https://verifymcp.io/servers/com-plainrouter-mcp/plainrouter#chg-chg_01a042b1-2ef5-712f-a9f7-370e5156b3cc"
    },
    {
      "id": "chg_01a042b1-2ef5-764f-b99d-769596060187",
      "kind": "check.reason",
      "family": "auth-oauth",
      "subject_kind": "check",
      "subject": "auth-oauth",
      "subject_child": "",
      "from_code": "auth.rfc9728_invoke",
      "to_code": "auth.rfc9728",
      "from_value": "pass",
      "to_value": "pass",
      "materiality": "security",
      "direction": "neutral",
      "score_delta": null,
      "detail": {},
      "occurred_on": "2026-08-27",
      "occurred_at": "2026-08-27 10:08:23.266279+00",
      "observed_since": "2026-08-26",
      "source": "scan",
      "summary": "Authorization (The endpoint enforces authorisation, advertised via RFC 9728 protected-resource metadata.)",
      "link": "https://verifymcp.io/servers/com-plainrouter-mcp/plainrouter#chg-chg_01a042b1-2ef5-764f-b99d-769596060187"
    },
    {
      "id": "chg_01a042b1-2ef3-7a89-9d17-e38a54aa5109",
      "kind": "check.unverifiable",
      "family": "tool-safety-injection",
      "subject_kind": "check",
      "subject": "tool-safety-injection",
      "subject_child": "",
      "from_code": "toolsafety.injection_clean",
      "to_code": "toolsafety.auth_gated",
      "from_value": "pass",
      "to_value": "unverified",
      "materiality": "security",
      "direction": "regression",
      "score_delta": null,
      "detail": {},
      "occurred_on": "2026-08-27",
      "occurred_at": "2026-08-27 10:08:23.266279+00",
      "observed_since": "2026-08-26",
      "source": "scan",
      "summary": "Tool safety (pass → unverified)",
      "link": "https://verifymcp.io/servers/com-plainrouter-mcp/plainrouter#chg-chg_01a042b1-2ef3-7a89-9d17-e38a54aa5109"
    },
    {
      "id": "chg_01a042b1-2ef6-773b-b8fd-9eebf5812c5b",
      "kind": "capture.status_changed",
      "family": "",
      "subject_kind": "server",
      "subject": "capture",
      "subject_child": "",
      "from_code": null,
      "to_code": null,
      "from_value": "verified",
      "to_value": "auth_gated",
      "materiality": "security",
      "direction": "regression",
      "score_delta": null,
      "detail": {
        "to": "auth_gated",
        "from": "verified"
      },
      "occurred_on": "2026-08-27",
      "occurred_at": "2026-08-27 10:08:23.266279+00",
      "observed_since": "2026-08-26",
      "source": "scan",
      "summary": "Endpoint reachability (reachable → behind authorisation)",
      "link": "https://verifymcp.io/servers/com-plainrouter-mcp/plainrouter#chg-chg_01a042b1-2ef6-773b-b8fd-9eebf5812c5b"
    }
  ],
  "days": [
    {
      "date": "2026-09-20",
      "total": 87,
      "delta": 1,
      "tracked": true,
      "explained": true,
      "beyond_event_horizon": false,
      "attribution": null,
      "event_count": 8
    },
    {
      "date": "2026-09-18",
      "total": 86,
      "delta": 1,
      "tracked": true,
      "explained": false,
      "beyond_event_horizon": false,
      "attribution": {
        "category": "Stability & Change Management",
        "from": 40,
        "to": 43,
        "delta": 3,
        "others": [],
        "accrual": null,
        "partial": false,
        "compared_to": "2026-09-17",
        "summary": "No change was recorded against any check on this day. Stability & Change Management went from 40 to 43."
      },
      "event_count": 0
    },
    {
      "date": "2026-09-17",
      "total": 85,
      "delta": 0,
      "tracked": true,
      "explained": true,
      "beyond_event_horizon": false,
      "attribution": null,
      "event_count": 3
    },
    {
      "date": "2026-09-16",
      "total": 85,
      "delta": 1,
      "tracked": true,
      "explained": false,
      "beyond_event_horizon": false,
      "attribution": {
        "category": "Stability & Change Management",
        "from": 33,
        "to": 37,
        "delta": 4,
        "others": [],
        "accrual": null,
        "partial": false,
        "compared_to": "2026-09-15",
        "summary": "No change was recorded against any check on this day. Stability & Change Management went from 33 to 37."
      },
      "event_count": 0
    },
    {
      "date": "2026-09-14",
      "total": 84,
      "delta": 1,
      "tracked": true,
      "explained": false,
      "beyond_event_horizon": false,
      "attribution": {
        "category": "Stability & Change Management",
        "from": 27,
        "to": 30,
        "delta": 3,
        "others": [],
        "accrual": null,
        "partial": false,
        "compared_to": "2026-09-13",
        "summary": "No change was recorded against any check on this day. Stability & Change Management went from 27 to 30."
      },
      "event_count": 0
    },
    {
      "date": "2026-09-13",
      "total": 83,
      "delta": 0,
      "tracked": true,
      "explained": true,
      "beyond_event_horizon": false,
      "attribution": null,
      "event_count": 1
    },
    {
      "date": "2026-09-12",
      "total": 83,
      "delta": 1,
      "tracked": true,
      "explained": true,
      "beyond_event_horizon": false,
      "attribution": null,
      "event_count": 4
    },
    {
      "date": "2026-09-11",
      "total": 82,
      "delta": -1,
      "tracked": true,
      "explained": true,
      "beyond_event_horizon": false,
      "attribution": null,
      "event_count": 3
    }
  ]
}