A deployed flow entry inside one space: identity, run entry and activity switch.
The runnable identity of a deployed flow.
An agent names a flow entry point inside exactly one space — it is the thing external clients actually run. An agent cannot exist outside a space: the space is chosen at creation, and deleting the space deletes its agents. The record itself is deliberately light — a display name, the agentId slug, the run entry (startFlow + startNode), an active switch and timestamps.
Two identities matter and must not be confused: the generated row id is what admin pages address, while the agentId slug is what clients run by — and the same slug is what an Agent node's agentId setting names inside a flow. So there is just one human-facing id, the slug, used everywhere a flow or a client refers to the agent, and one row id used only by the admin console. Beyond identity, every agent carries two independent settings channels — runtime settings readable by your flow scripts, and partner-facing front settings delivered to partner sites — each capped at 1,000,000 characters. Agent lists stay fast no matter how large the settings grow.
agent not found in space.startFlow-startNode (for example MainFlow-Start). Both names are strict PascalCase with letters and digits only — a dash inside either name would corrupt the join, which is why dashes are forbidden.system/settings scripting resource. Saved on its own page, never delivered to partners.Exact validation — the platform is the authority; the UI mirrors it for fast feedback.
^[a-z]+(-[a-z]+)*$: lowercase letters in single-dash-separated words, no digits, no leading/trailing/double dashes; 3–100 characters; unique across the entire platform. The input sanitizes as you type — uppercase is lowercased, digits and spaces never enter the field.^[A-Z][A-Za-z0-9]*$: strict PascalCase, letters and digits only, 3–60 characters each, no dashes — the run entry is derived by joining them with a dash, so an internal dash would corrupt it.1,000,000 characters each; the live counter in the editor mirrors exactly the limit enforced on save. Saving an empty value legitimately clears the settings.^[a-z][a-z0-9]*(-[a-z0-9]+)*$ (kebab-case, digits allowed here, unlike the agent slug) and unique among the rows. Required is type-relative: 0 is a real number, false is a real boolean, but an untouched rich-text value (<p></p>) counts as empty.10 agents (a per-space limit, not an organization-wide number). Past the cap a create is refused with "Agent limit reached — a maximum of 10 agents per space is allowed!"; need more, deploy into another space.Both channels store a set of typed field rows — { displayName, fieldId, fieldType, required, value, valid }:
| fieldType | Editor | Notes |
|---|---|---|
input | Single-line input | The default type |
text | Textarea | Multi-line plain text |
richtext | Rich-text editor | An untouched value counts as empty for a required field |
number | Numeric input | 0 is a valid required value |
password | Masked input | Masked in the editor |
boolean | Checkbox | false is a valid required value |
array | List of string items | Value is a list of strings |
What happens between filling the form and a client getting an answer.
?space= URL parameter.StartFlow-StartNode (for example MainFlow-Start).{fieldId: value} map (valid rows only) through system/settings; front settings stay unreachable from scripts./agents — Agent Management landing, with cards leading to Create and List./agents/list — space-scoped: a space picker at the top, and ?space=<id> in the URL is the source of truth (refresh, shared links and back/forward land on the same view); nothing is fetched until a space is chosen — there is deliberately no cross-space agent list. Columns: Display Name, Agent ID, Entry, Status (Active / Inactive) and a Visit link./agents/create — the create form: required Space select, Display Name with slug-follow into Agent ID, input-level sanitization on the ID, and the PascalCase hint on Start Flow / Start Node./agents/<id> — Agent Details: a cross-link card to the owning space, the Active switch (inactive agents are refused at run time), the Agent ID with copy-to-clipboard and the rename warning, Save gated on real changes (dirty check), and a two-step Delete (Delete → Confirm delete) returning to the space's agent list./agents/<id>/json-settings and /agents/<id>/front-settings — one shared settings card per channel: the settings row builder (read-only row summaries; all editing happens in a Definition modal and a per-type Value modal), a valid/invalid badge, a live character counter ("N / 1,000,000 - allowed characters", red over the limit), and Update Settings enabled only when valid and under the limit and changed from the load-time baseline./agents/<id> — a Rebuild Resource Cache button rebuilds the served copy of all agents (the same job as Create on the Cache page) without leaving the record. It requires the cache scope's write level — separate from the agents edit scope. You rarely need it: a normal save refreshes the copy by itself. To push a change to a partner site, use the partner's Api Key page: Rebuild Resource Cache there rebuilds only what is bound to that key, then Wake notifies the site. See Resource Cache.Keen MCP Server
How an AI agent connects to your organization and what it may do under an MCP account.

The agent detail screen — display name, the agentId slug with copy, the run entry, the Active switch, and Save and Delete.
hasSettings flag are untouched. Like every other agent change, it reaches partner sites only through Rebuild → Wake on the partner's Api Key.valid: false. You can save a set containing invalid legacy rows (the editor blocks only new violations) — those rows simply never reach scripts or partners. If a field "isn't showing up" at run time, check its valid stamp first.hasSettings: boolean, and it tracks the runtime channel only. The settings travel exclusively through their dedicated settings pages.Keen Agents 2026
Documentation
Release 15