Skip to main content
A connection answers two questions: where do we send a request, and what credential do we present. Create one under Connections in the dashboard.

Egress auth modes

mode
No credential. For endpoints that are public or protected some other way.
mode
A long-lived bearer token you store on the connection. Simple, and the same for every subject — your endpoint cannot tell one of your users from another, so the token’s own authority applies.
mode
We fetch a short-lived token per subject from your mint_url, then present it. Your endpoint verifies it, reads sub, and runs its own per-user authorization unchanged. This is the mode that keeps the subject’s authority intact end to end.A connection declares one mint URL, and it must handle both callers — see The mint endpoint. If it only handles your browser, the Playground cannot drive this connection.
A connection set to static must carry a bearer token; one set to minted must carry a mint URL. Validation enforces both.

Two secrets, two jobs

They are easy to conflate and must never collapse into one: If we held both, we could answer both ourselves — which would make us able to mint identities. Keeping them separate is what makes an intercepted session token useless on its own. See Signing and verification.

Opening the MCP door

A connection with an MCP login URL makes every published agent that uses it reachable from your users’ own AI clients. The URL is a page you host that authenticates your user and signs their subject back to us; identity is the only thing MCP export asks of you. It sits on the connection rather than the agent because identity belongs to the backend. Agents on different connections can serve different user pools; agents on the same one share it.

Choosing a connection at request time

An agent can pin a connection, or leave it open and take one per request:
  • Relay — Patchwork-Connection: <uuid or name>
  • Direct — the conn claim in the session token, which must be a UUID
If the agent wires a customer patch with no pinned connection and none is supplied, the call fails with 422 connection_required. Once a run has a connection, it is fixed for that run. Resuming a paused run with a different connection is refused — otherwise a multi-turn conversation could silently change which of your hosts it was talking to.

Testing one

Press Test on a connection. We POST a signed nonce to /patchwork/up on your host and check for a proof only computable with the shared request secret. Only verified means the trust is wired correctly. A bare ok cannot pass — it cannot fake the proof.