The admin users of the platform — invited by email, activated by the user, governed by exactly one role.
Invite-based admin users, each governed by exactly one role.
Organization accounts are the people who sign into the admin UI and manage roles, spaces, agents and the other org resources. Each account carries a globally unique email, optional first/last name (set by the user themselves when they register, and changeable later only by that user), exactly one role, and a status. What an account can see and do is entirely determined by its role — KeenAgents refuses to attach an account to a role that does not exist, so permissions always trace back to a real, current role. Passwords are stored irreversibly hashed and are never returned by any read.
Accounts are invite-based: an administrator creates one with just an email and a role, KeenAgents emails a confirmation link, and the invited user finishes registration themselves — setting their own name and password on the confirmation page. Every rule on this page is enforced by the platform itself; the admin UI mirrors the same rules early for a better experience, but they cannot be bypassed by calling the API directly.
confirmed and blocked. The credential is never included in any response, and the account list also omits blocked — only the single-account detail includes it.No such role!. Renaming a role follows through to every account holding it automatically. Deleting a role moves its accounts to the default role and force-logs-out any session still carrying the deleted role, so no session ever keeps permissions from a role that is gone.Not allowed!). Your organization has exactly one owner, created at initial setup — even the owner cannot change the owner account's role, so the top of the hierarchy can never be accidentally demoted.24 hours — the initial owner activation link included — and are single-use: redeeming one invalidates it, and a newer invite or reset supersedes any older link. All failures answer the general 406 Action forbidden! so a failed attempt never reveals whether an email exists.From invite to Active — and what a password reset really does.
Confirmation failed. Check the email and use the latest mail link. (the API answers the general Action forbidden!).Account confirmed. Sign in with your new password. Names are set by the user at confirmation and cannot be changed from the Accounts pages — the person changes their own names from the avatar menu → Account (Profile card).Password set. Sign in with your new password.What every signed-in admin — the owner included — can do for themselves.
Every signed-in admin has a My Account page under the avatar menu → Account. Its Profile card lets you change your own first and last name; the Details card shows your email, role and status read-only (only an administrator changes those, from Accounts); the Password card has a single Send Reset Mail button — a reset link goes to your email and your current password stops working the moment you press it, so open the mail straight away and set the new password there.
How signing in works day to day, and why a password prompt sometimes reappears.
You sign in with your email and password. For security your session is time-limited — after a stretch of inactivity a password prompt appears in place, right where you were working. Re-enter your password and you continue exactly where you left off: nothing you had open or in progress is lost.
Your access changed — please sign in again. Sign back in to continue with the new permissions.This account is already created!. The admin UI caps length at 254 characters.No such role!. The protected targets are owner and admin; owner is never offered in any role select.1 (0 is treated as 1); page size defaults to 20; the items parameter sets it. Past-the-end pages clamp to the real last page, and the reply always reports the page you actually landed on — sync your pager off that, not off the page you asked for.10 filter rows per request; operators are equal | not | greater | less | like | not like | in | not in; values must be non-empty strings and in/not in take a comma-separated list. Anything off-vocabulary answers 406 Invalid filter!.name | mail | status | role | id | created at, directions asc | desc; off-vocabulary answers 406 Invalid sort!. Default order is email descending; name sorts by first name then last name with not-yet-named (New) accounts always at the bottom, and ordering is fully deterministic so pages never shuffle between requests.| Filter type | Behavior |
|---|---|
name | Case-insensitive; matches either first or last name for positive operators, and requires neither part to match for negative ones — accounts that have no name yet (New) never match a negative name filter. |
mail / id / role | Case-insensitive string matches; role is matched by its slug. |
status | Only active and new; operators equal | not | in | not in. |
created at / created from | Day-granular UTC windows over the creation date; operators equal | not | greater | less. |
account list URL grammar
<type>[.<operator>]=<value> bare key = equal name=jame multi-word operators dot-join name.not.like=jame dated types use underscores created_at, created_from sort=<field>[.<direction>] direction defaults to asc sort=created_at.desc page=<n> pager position page=2
owner. Success toasts, notes that the confirmation email was sent, and redirects to the new account's detail page.protected — read only for the owner, protected — role locked for admin accounts (role change locked, password reset and delete remain available). Email and names are read-only; the role select has a dirty-gated Save; Reset Password appears only on confirmed, non-owner accounts; delete is a two-step control hidden entirely for the owner.Your access changed — please sign in again. and their next sign-in carries the new permissions. Editing a role's permissions does the same for everyone signed in under that role, and deleting a role signs out everyone who held it. An MCP account is never signed out: it picks a role change up at its next authentication.MCP accounts may not access this resource; it can never create, edit, reset or delete a human account. See MCP Accounts.This link is incomplete — "The mail link was cut short by the mail client. Open the mail again and use the full link (or copy the entire address)."blocked flag renders as a red badge on the detail page, but no admin action currently sets or clears it.Action forbidden!, Not allowed!, bare 406s — revealing the failure class, never details such as whether an email exists; this keeps probing attackers blind. Check the platform's audit log instead of expecting the API message to explain.Keen Agents 2026
Documentation
Release 15