{
  "schema_version": "draft",
  "name": "The Silicon Trail",
  "description": "One MCP server with two faces: a story builder that scaffolds, validates, lints, balances and submits story packs, and a player that runs a pack deterministically while the connected model narrates from the engine's facts.",
  "transport": {
    "type": "stdio",
    "command": "npm run mcp",
    "hosted": false,
    "note": "A local process started from a checkout of the repository, which is private today; the docs and llms.txt are the way in until it is published or shipped as a package."
  },
  "hostedTransport": {
    "type": "streamable-http",
    "url": "https://silicontrail.org/mcp",
    "hosted": true,
    "tools": [
      "list_packs",
      "start_run",
      "advance",
      "state",
      "ledger",
      "export_run",
      "create_room",
      "join_room",
      "room_state",
      "room_vote",
      "room_act"
    ],
    "note": "A hosted session over Streamable HTTP: POST initializes it, the SDK's own session id scopes every following call to that one run, or to the one room it is seated in, and 30 minutes with no call closes it. No auth, like the rest of the site; a limit of 600 calls a day per address, and the play and room tools share one window of 120 calls a minute, the same window the stdio path uses."
  },
  "docs": "https://silicontrail.org/llms-full.txt",
  "llms_txt": "https://silicontrail.org/llms.txt",
  "tools": [
    {
      "name": "validate_pack",
      "group": "builder",
      "description": "Runs a pack's JSON through the schema the game loads and returns the validator's own lines."
    },
    {
      "name": "lint_prose",
      "group": "builder",
      "description": "Checks a passage for banned names, second person and exclamation marks, with line and column."
    },
    {
      "name": "scaffold_pack",
      "group": "builder",
      "description": "Fills the template with ids and counts for a title, an act count and a premise, validated before it returns."
    },
    {
      "name": "balance_pack",
      "group": "builder",
      "description": "Plays a candidate pack through the balance policy and reports it against its own targets."
    },
    {
      "name": "submit_pack",
      "group": "builder",
      "description": "Opens a pull request carrying a validated pack for a person to read before it ships."
    },
    {
      "name": "list_packs",
      "group": "play",
      "description": "Every registered pack's card."
    },
    {
      "name": "start_run",
      "group": "play",
      "description": "Starts a run of a pack, replacing any run in progress, and returns the opening scene request."
    },
    {
      "name": "advance",
      "group": "play",
      "description": "Applies one wire action and replies with the next scene request and the engine's fixed outcome."
    },
    {
      "name": "state",
      "group": "play",
      "description": "The party strip: day, act, position, weather, supplies and every member's health."
    },
    {
      "name": "ledger",
      "group": "play",
      "description": "Every recorded change so far, in sentences, grouped by day."
    },
    {
      "name": "export_run",
      "group": "play",
      "description": "The run as setup, seed, actions and pack, replayable in the engine and the web game."
    },
    {
      "name": "create_room",
      "group": "play",
      "description": "Opens a room of up to four seats on a pack, takes seat 0, and returns the code and the join link."
    },
    {
      "name": "join_room",
      "group": "play",
      "description": "Takes a seat in an open room: the one asked for, or the lowest one free."
    },
    {
      "name": "room_state",
      "group": "play",
      "description": "The room as this seat sees it: seats, the open decision with its rule, the strip, the deaths, the permalink."
    },
    {
      "name": "room_vote",
      "group": "play",
      "description": "Casts this seat's ballot on the open decision, and says what it settled."
    },
    {
      "name": "room_act",
      "group": "play",
      "description": "Applies one wire action this seat may take alone in the room."
    }
  ],
  "resources": [
    {
      "uri": "silicon-trail://guide/authoring",
      "description": "The story-pack authoring guide."
    },
    {
      "uri": "silicon-trail://guide/fields",
      "description": "The generated field reference for pack.json."
    },
    {
      "uri": "silicon-trail://guide/balance",
      "description": "The balance guide and its targets."
    },
    {
      "uri": "silicon-trail://template/pack.json",
      "description": "The template pack, a complete short story."
    },
    {
      "uri": "silicon-trail://template/card.json",
      "description": "The template pack's card."
    },
    {
      "uri": "silicon-trail://library/personas",
      "description": "The machine persona library."
    },
    {
      "uri": "silicon-trail://library/characters",
      "description": "The studio character library."
    },
    {
      "uri": "silicon-trail://rules/prose",
      "description": "The house rules for prose."
    },
    {
      "uri": "silicon-trail://balance/targets",
      "description": "The balance targets a pack declares."
    },
    {
      "uri": "silicon-trail://prompts/system",
      "description": "The narrator's system prompt."
    },
    {
      "uri": "silicon-trail://prompts/narrator",
      "description": "The narrator prompt for the scene pending in the active run."
    }
  ],
  "version": "0.1.0"
}