Skip to main content
Locus Pro credentials are deliberately not interchangeable. Use the narrowest credential that can perform the operation, and never place a tenant secret key or dashboard token in an agent runtime or browser.
Personal accounts authenticate the dashboard with a human session and connect MCP clients through OAuth. They do not issue tenant, publishable, or sandbox keys and do not expose end-user, member, margin, or metering administration. The key lifecycle, management scopes, and workspace roles below are enterprise features unless stated otherwise.
For enterprise development and CI, prefer a sandbox key: it runs the metered request contract end to end without moving credits and carries no management authority at all.

Human signup and sign-in

On Create your Locus account, email/password signup verifies the email; configured Google, GitHub, and GitLab options create a Personal account from the provider identity; and Ethereum signup proves wallet control plus a recovery email. On Sign in, email/password and passkeys authenticate directly, external providers resolve an existing identity, and Ethereum requires a wallet that is already linked. Sign-in does not create a second account. Manage linked providers and wallets from Account security while recently authenticated. Wallet sign-in asks for an EIP-4361 message signature, not a transaction or access to funds. A wallet must be linked before it can sign you in. If the account has managed SMS or TOTP MFA, use a password or passkey so Cognito can enforce the enrolled factor. See Account setup and sign-in for personal-account creation, workspace invitations, and interrupted-signup recovery.

Credential matrix

Agent-native onboarding also returns an lcac_… compatibility credential for the self-registered Personal account. It authorizes only the explicit agent-account setup and maintenance routes documented in the onboarding flow. Use native MCP OAuth, not that compatibility credential, for ordinary tool use. The agent connection row is the odd one out. An lcac_… value is issued by an agent connection, a saved configuration that pins the account and expiry the credential must obey, plus any endpoint allowlist and spend limits you choose to set — so the credential is one field of a larger object rather than a standalone key. See what an agent connection is for how it differs from a tenant secret key, and why the two are not interchangeable even though both can authenticate a metered call.

Enterprise management scopes

Possessing a scope is necessary but not always sufficient. Workspace roles set the maximum scopes for a human member. High-risk operations such as API-key lifecycle, workspace membership changes, webhook-secret rotation, spend-control changes, auto-recharge, payout-destination changes, and Stripe Connect require the Cognito workspace owner with the applicable scope and MFA or passkey step-up completed in the last ten minutes. Admins, developers, billing members, viewers, and tenant secret keys cannot satisfy that owner boundary, even if their stored scopes contain the named scope. One deliberate exemption: Agent Connection create, rotate, and revoke can be automated by a tenant secret key holding credentials:manage, with no step-up, so servers can rotate short-lived agent credentials on their own.

Enterprise workspace roles and invitations

Locus Pro workspaces support these human roles: Only an owner can invite up to 20 email addresses at once from Team. The page title is Members. Each invitation assigns one non-owner role and expires after seven days. The recipient follows the single-use email link, signs in or creates the invited identity, and joins the existing workspace. Inviting, resending, revoking, changing a role, or removing a member requires recent MFA or passkey step-up.
Do not share a dashboard login between people. Invite each person separately and assign the narrowest role they need. Tenant API keys cannot list human member email addresses or manage workspace membership.

Preflight the current credential

Before attempting a management operation, inspect the credential against the same deployed API you will call:
The response contains only authorization metadata:
It never returns the raw credential, a key hash, Cognito claims, or an end-user token. Dashboard users with more than one membership must also send the exact X-Locus-Tenant-Id header.

Handle authorization errors

A missing scope returns HTTP 403 with stable machine-readable evidence:
Do not retry this response. Issue or rotate a deliberately scoped credential, or use the dashboard owner flow when the route requires human step-up. STEP_UP_REQUIRED means the owner must sign in with MFA again; it does not mean an API key should be granted more authority. A 401 means the credential is missing, malformed, expired, revoked, or the wrong credential type for that surface.

Issue and revoke safely

  1. Sign in as the workspace owner with credentials:manage and complete MFA or passkey step-up.
  2. Issue a new credential with only the required scopes and, when supported, an expiry.
  3. Store the raw value immediately in the intended server-side secret store. Locus returns it only once.
  4. Call the credential preflight endpoint and one non-destructive target route.
  5. Move the integration to the new credential.
  6. Revoke the old credential and confirm it receives 401 while the new credential continues to work.
  7. Review the credential/security audit in the dashboard.
To replace one credential in place, POST /api/credits/tenants/me/keys/KEY_UUID/rotate performs steps 2–6 as a single operation: the replacement inherits the key’s name, scopes, endpoint allowlist, pricing, and expiry; the superseded key keeps working for the requested gracePeriodSeconds overlap (capped at its own expiry) while every other key is untouched. PATCH /api/credits/tenants/me/keys/KEY_UUID renames a key without touching the credential; the audit trail records the previous name. For agent runtimes, create an Agent Connection rather than sharing lcr_…. Agent Connections are also returned once and should be constrained to the required endpoints and optional per-call/per-loop limits.