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.
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.
Preflight the current credential
Before attempting a management operation, inspect the credential against the same deployed API you will call:X-Locus-Tenant-Id header.
Handle authorization errors
A missing scope returns HTTP403 with stable machine-readable evidence:
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
- Sign in as the workspace owner with
credentials:manageand complete MFA or passkey step-up. - Issue a new credential with only the required scopes and, when supported, an expiry.
- Store the raw value immediately in the intended server-side secret store. Locus returns it only once.
- Call the credential preflight endpoint and one non-destructive target route.
- Move the integration to the new credential.
- Revoke the old credential and confirm it receives
401while the new credential continues to work. - Review the credential/security audit in the dashboard.
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.