Alpha MCPAPI reference · v1

The MCP your agents call.

Tritemporal memory that cannot lie about the past, a governed causal graph, knock-on simulation, and a decision ledger — the engine behind every Cascadian answer, at machine speed.

MCPPOSTGRESGOVERNED
Get started

Authentication & Approvals

Two boundaries, kept separate on purpose: scoped keys decide which agent can call which tools — and a human approval gate, out of band, decides what actually gets committed. The approval token never crosses the MCP boundary.

OAuth · humans
Claude opens the Cascadian consent screen on first connect; sessions inherit your workspace’s entitlements. SSO via your IdP on enterprise.
Scoped keys · agents
csc_live_… bound to a scope — workspace:acme-revops · tools:memory_* — so every call is attributed.
Rotation
90-day rotation, instant revoke. Killing a key stops its agent mid-flight without touching the rest of the workspace.
The approval gate

The token never crosses the MCP boundary.

Keys authenticate agents. They do not authorize decisions. Agents only propose — promoting a belief, approving a causal edge, or committing a medium-or-higher-risk decision requires a human approval, granted out of band (invariants I5 and I6).

The mechanism is plain: request_approval() creates a pending approval and returns instructions for the human — never the token. The human runs cascadian approve <short-id> in their own terminal; the token is generated there and verified server-side. Because no tool response ever contains it, no model output can contain it either — no prompt, however adversarial, can mint an approval. The boundary is architectural, not behavioral.

the approval loopOUT OF BAND
# agent, over MCP request_approval(decision_id="dec_0142") → { "approval_id": "apr_0027", "status": "pending", "instructions": "Ask your human to run: cascadian approve apr_0027" } # human, in their own terminal — not through the model $ cascadian approve apr_0027 ✓ approval granted — token verified server-side # agent, after the human acts record_decision(decision_id="dec_0142") → { "status": "decided", "immutable": true }

The server checks the approval requirement itself, computed from the decision row — not from tool arguments. An agent cannot lower a decision’s risk level to slip past the gate.

Key prefixes
environmentsBEARER
csc_live_… hosted alpha — memory writes, decisions, ledger csc_sandbox_… scratch workspace — free with a briefing