MCP server
Streamable HTTP, JSON-RPC 2.0, stateless. One endpoint. A 401 carries the RFC 9728 WWW-Authenticate header, which is what makes one-click connect appear in Cowork and claude.ai.
EndpointPOST https://vault.opscend.net/api/public/mcpProtocol2025-06-18AuthAuthorization: Bearer opvault_<48 hex> · or OAuthBatchnot supported · one message per request
initializeCopy
curl -X POST https://vault.opscend.net/api/public/mcp \
-H "Authorization: Bearer $OPVAULT_TOKEN" -H "content-type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize"}'
→ {"result":{"protocolVersion":"2025-06-18","serverInfo":{"name":"opvault","title":"OpVault"}}}
OAuth 2.1
Discovery, dynamic client registration, PKCE, a consent page in OpVault's own chrome. The issued access token is an opvault_ token, so bearer auth validates it unchanged.
Discovery/.well-known/oauth-authorization-serverResource/.well-known/oauth-protected-resourceRegisterPOST /api/public/oauth/registerAuthorizeGET /api/public/oauth/authorizeTokenPOST /api/public/oauth/token · PKCE S256
Tokens
Minted in Settings → Keys, revealed once, stored as a hash. Scopes read · write · run. A token only reaches its owner's rows; owner-class tools additionally require the account to be an OpVault admin.
Shapeopvault_[a-f0-9]{48}Validationproof of possession on every call · revoked tokens refusedRotationmint a new one, revoke the old; the trail keeps both
The AI lock
A sealed record returns its title and ai_locked: true — nothing else. Writes are refused. The attempt lands on the trail as permission_restricted. Enforced by views in the database, so a lock applied a moment ago is honoured on the next call.
record_read · sealed
{"id":"…","title":"podio-token","ai_locked":true,
"message":"This is sealed from AI. Its title is visible; its contents are not."}
The trail
Every call writes an event: actor, surface, action, target, state, detail, time. Read it back with read_audit, in the app, or export CSV. Nothing is ever deleted from it.
Bridge
A small daemon on your Mac. Pair it with a code; it runs Claude Code on your subscription, watches tagged folders into the file cabinet, and opens files locally. Loopback first, then a Cloudflare Tunnel that requires an OpVault origin and a paired device.
installCopy
$ curl -fsSL https://vault.opscend.net/bridge/install.sh | sh
$ opvault-bridge pair # shows a 6-digit code; type it in Devices
Errors
401no or bad bearer · WWW-Authenticate: Bearer resource_metadata=…-32601method not foundisError: truetool refused · message says why · attempt is on the trail403 · 1010the edge blocked a bot-shaped user agent; set one