Agents
Connect an agent to Saible over MCP
An application's agent reads its approved context with a signed receipt. A person's agent reads the console's API as that person and changes nothing.
- Context server/api/v1/context/mcpFor an application's agent, by the application's key. context_resolve serves the approved sections for a question with a receipt Saible signs. context_search and context_items list what is approved, without text.
- Operations server/api/v1/mcp/opsFor a person's own agent, by their own sign-in token. One read per console API operation their role may make, and setup proposals. Each read runs as the person, and the route's own checks decide. A proposal changes nothing until the person confirms it in the console.
{
"mcpServers": {
"saible-context": {
"type": "http",
"url": "https://saible.ai/api/v1/context/mcp",
"headers": { "Authorization": "Bearer ${SAIBLE_APP_KEY}" }
},
"saible-ops": {
"type": "http",
"url": "https://saible.ai/api/v1/mcp/ops",
"headers": {
"Authorization": "Bearer ${SAIBLE_TOKEN}",
"X-Saible-MFA": "${SAIBLE_MFA}"
}
}
}
}{
"mcpServers": {
"saible-ops": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://saible.ai/api/v1/mcp/ops",
"--header", "Authorization:${AUTH_HEADER}",
"--header", "X-Saible-MFA:${SAIBLE_MFA}"],
"env": { "AUTH_HEADER": "Bearer …", "SAIBLE_MFA": "…" }
}
}
}- Claude.aiSettings → Connectors → Add custom connector. Name it Saible and paste your region's operations address, for example https://saible.ai/api/v1/mcp/ops. Select Connect and sign in to Saible with your password and authenticator code, then allow the access Claude asks for.
- Claude DesktopThe same connector: Claude Desktop uses the connectors of your Claude.ai account. Add it in Settings → Connectors, as for Claude.ai.
- Claude CodeRun claude mcp add --transport http saible https://saible.ai/api/v1/mcp/ops, then /mcp in Claude Code and choose Authenticate. A browser opens for the Saible sign-in.
- Claude.ai and Claude DesktopDownload set-up-saible.zip from https://saible.ai/skills/set-up-saible.zip, then Settings → Capabilities → Skills → Upload skill.
- Claude CodeUnzip set-up-saible.zip into ~/.claude/skills/ (for you) or .claude/skills/ in a project (for everyone working in it).
- Use itAsk Claude to set up Saible. It reads your organisation, proposes each change, and sends you once to the confirmation tray in the console. Untick what you do not want and confirm the rest with your authenticator.
- Ledger recordEvery tool call Saible answers writes one record to the organisation's tamper-evident ledger: the server, the tool, who called it and the outcome. Never a query, an argument or a result. A call refused for exceeding the per-minute limit is not recorded.
- ReceiptA context_resolve record names the receipt's nonce and bundle root, so a receipt can be matched to the call that issued it.
- Data, not instructionsTool results reach the agent wrapped as data, with a line saying they are not instructions.
- RegionsUse your organisation's address: saible.ai (Ohio), eu-north-1.saible.ai (Stockholm), or your Dedicated instance's. A credential from one region is refused by the other.
- TokenThe operations server takes the token from signing in, with its multi-factor header. It expires after one hour.
- Proposalspropose_ tools register an application, create a team, connect a repository or a context source, route a policy change for approval, issue an emergency stop, retire an application, invite a person or set alert recipients, each as a proposal. The agent gets a link to /console/proposals/<id>, valid for 7 days. Home lists what is waiting.
- ConfirmingThe person reads the exact request and the agent's reason, then selects Run to confirm or Cancel to reject. Confirming needs a session that passed multi-factor authentication. Both are recorded in the ledger, with field names and never values.
- Confirming severalWaiting for your confirmation (/console/proposals) lists every proposal waiting for you, from your agent and from discovery, each ticked. Untick any, then confirm the rest in one step with one multi-factor check. Each runs as you through its own route, on its own: one refused does not undo another, and each shows its result. An approval is never confirmed there; a policy change confirmed there goes to a second person for approval. A proposal changed after it was shown is not run. The ledger keeps each item's record and one record that links the batch.
- TokensNo token or password goes through an agent: a proposal that names one is refused. The person types a source's token on the confirmation page.
- Connected agentsSettings → Connected agents lists each connection Claude or another client made, with its scopes and last use, and revokes it. A connection's token works only on the operations server and cannot confirm a proposal.
Steps
- 1Add Saible to Claude as a connector with your region's address, then sign in to Saible and allow the access Claude asks for.
- 2Install the Set up Saible skill and ask Claude to set up Saible. Confirm its proposals in the tray at /console/proposals.
- 3For the context server, register the application under Control → Registry and store its key.
- 4For the operations server, sign in with POST /api/v1/auth/login and /auth/login/mfa, and keep token and mfaToken in your environment.
- 5Put both servers in the project's .mcp.json and run claude mcp list.
- 6Ask a question, then find each tool call under Evidence → Ledger as an mcp_tool_called record.
For your agents
This topic is also documented as Agent Skills that your agents can load: connect-agent-mcp, live-context, registry. Request them from Saible.