opbox

The auth.* family (1 verb). Every verb enters through the one front door: it is capability-checked, permission-checked, scope-checked and audited before it runs (see Security & permissions). Each entry below lists its capability, risk class (which fixes the minimum autonomy level), the minimum caller permission, its availability tier, whether it is idempotent, and any outbound egress.

Setauth.credentials.set

PropertyValue
Capabilityactor.write
Risk classSensitive - autonomy L2
Min. permissionMember
AvailabilityOn demand (MCP tier 2)
IdempotentNo
EgressNone - in-box (pure Postgres, no outbound call)

, SELF. Set the ACTING actor’s email + password (the legitimate-login credential, CC-OPBOX 9 D1). { email, password, currentPassword? }. A first-time set (no password yet) needs no currentPassword; a CHANGE requires the matching currentPassword. The password is argon2id-hashed (never plaintext, never returned); the email is globally unique (a cross-account collision -> a clean Conflict). A CHANGE bumps session_version (re-login, legacy parity); a first set does NOT (the caller’s current bearer keeps working). HUMAN actors only.

Call POST /v/auth.credentials.set with a JSON body; returns JSON (or { error, code }). Also exposed as the MCP tool auth.credentials.set.