How access is authenticated
There are three separate ways to reach Oviond, each with its own credential:
API keys never work against MCP, and MCP tokens never work against the REST API — the surfaces are isolated by design.
Tenant isolation
Every request is scoped to the account of the authenticated credential. The account is derived from the token — never from anything in the request body or query — so one account can’t read or write another’s data by passing a different ID. Requesting a resource that belongs to another account returns404, so IDs outside your tenant aren’t even confirmed to exist.
API key handling
- Keys are generated with 32 bytes of cryptographic randomness and prefixed
oviond_. - Only a SHA-256 hash of the key is stored — Oviond can’t recover the raw key, and it’s shown to you exactly once at creation.
- Each key carries an access level — View (read-only), Edit (content writes), or Full — and inherits the role and client scope of the person who created it, capped at that level.
- Keys can be revoked at any time from Settings → API Keys or via the API Keys API;
last_used_atis tracked so you can spot stale keys.
MCP OAuth
The MCP server implements OAuth 2.1 for confidential and public clients:- Grants:
authorization_codeandrefresh_token. - PKCE: required,
S256. - Scope:
mcp. - Dynamic client registration, token revocation, and a JWKS endpoint are all published at
/.well-known/oauth-authorization-server.
Activity & request tracing
- Every response carries an
X-Request-Idheader (see Errors & request IDs); include it when you contact support so we can find the exact request. - Account activity is recorded in the in-app Activity Log.