Discovery and the manifest

This page explains Pilotage's guaranteed entry point and the information a Client learns from it.

The manifest is layer #1 of the loop, the welcome card a zero-knowledge agent reads at the MCP handshake: the server's authoritative declaration of Languages, capabilities, and loop-tool addresses.

Every conformant MCP binding exposes pilotage_manifest. It takes an empty object and returns the manifest in structuredContent. An initialize response may also carry an inline manifest, and a resource may mirror it, but the tool is the guaranteed path across supported revisions and transports.

This is the central portion of Harborview's real manifest, exactly as the live server hands it over at the handshake:

{
  "pilotage": "1.1",
  "languages": [
    {
      "name": "buildingflow/1",
      "guides": "pilotage_get_guide",
      "catalog": "pilotage_catalog",
      "loop": {
        "validate": "validate_flow",
        "execute": "run_flow",
        "trace": "trace_run"
      },
      "capabilities": {
        "guides": true,
        "catalog": { "search": true },
        "validate": true,
        "plan": true,
        "execute": { "test_run": true, "idempotency": true },
        "trace_fetch": true
      },
      "locator": "json-pointer",
      "execution": "both",
      "trace": "full",
      "retention": "session"
    }
  ]
}

The loop key trace is present iff the engine supports fetching stored traces, and the capability trace_fetch declares that fetch door: false | true | { "narrate": boolean }.

The manifest prevents guessing. It says where the guides and catalog live, names the server-selected loop tools, declares the diagnostic locator, and states whether execution is immediate, deployable, or both. Its capability map also declares features such as test runs, idempotency, and trace_fetch.

Capabilities are composable but constrained. Every Language has guides and validation. A Language with environment-bound names has a catalog. Execute depends on validation and includes inline trace support. Trace fetch cannot be declared with no retention.

If an inline initialize manifest and the manifest-tool result differ, the tool result is authoritative because it is newer.

In the nautical register: the manifest is the harbor chart handed over at the pier; before the agent has taken a single sounding, it knows where the channels are.

Formal rules: Part II §4, Capabilities and composition, Part II §5.1, Manifest, and Part III §3, Discovery.

Next: Cold start · The loop