Field reference:
purpose — every field, type, default, and tier for this page.1. Purpose, Goals and Guidelines
A free-form Markdown body where you describe the agent’s intent. A good entry covers three areas:- Purpose — What problem does this agent solve?
- Goals — Any specific objectives the agent should strive for.
- Guidelines — How to achieve those goals, and the boundaries the agent must respect.
2. Identity, Behaviour, Preferences and Principles
A second free-form Markdown body that controls how the agent acts:- Identity — What role does the agent play? Give it a name and a clear role.
- Behaviour — Tone and personality.
- Preferences — How the agent should respond (concise vs. verbose, what to prefer, what to avoid).
- Principles — Core values and non-negotiable boundaries.
Agent Effort Level
Controls how much reasoning the agent puts into each reply — more effort means more thorough reasoning (and a higher cost per reply); less effort means faster, cheaper responses. Choose from six presets, in increasing order of effort and cost: Fast → Low → Medium → High → Extra → Max Medium is the default. This setting autosaves the moment you change it — it is not part of the page’s Save Changes flow.Response Limits
Optional circuit breakers that stop a single reply from running away. Both also autosave:- Max response time — once reached, the agent returns whatever it has so far instead of continuing. Leave as No limit for none.
- Max tool loops — how many tool-call rounds the agent may take before it must answer. Leave as Platform default for none.
3. Success Criteria
A structured checklist the agent must satisfy before declaring a task complete. The agent self-checks this list before calling the built-inmark_goal_complete tool.
When is the goal complete?
A plain-language finish line (max 1000 characters). The agent uses this as a semantic gate in addition to the required-field check below. Example: “When the customer has confirmed a date and time they will attend the demo.”Criteria list
Each criterion has:
If you have any optional criteria, an “Need at least N of M optional items” threshold appears. Set to 0 to make optional items truly optional.
A live status footer tells you whether the criteria look correct, warns about rows missing a label, and flags when everything is optional with no threshold set.
Verifying goals: Auto-check and Code Checks
Two optional layers verify that goals are actually met rather than self-reported:- AUTO-CHECK (toggle at the top of the Goals card) — after every reply, all active goals are assessed and per-subscriber met / partial / unmet progress is persisted and shown to the agent next turn.
- Add Code Check (per goal) — attach your own JS/Python that verifies the
goal against real data; an
unmetverdict blocksmark_goal_complete.
goal / ctx objects, the goal status map, and complete worked examples.
Stages
Stages are optional. Leave them empty and the agent works toward your Success Criteria in a single open conversation. Define them and the agent walks each subscriber through a sequence of stages — a step-by-step workflow. While a stage is active, that stage’s goals rebindmark_goal_complete, and the agent gets advance_stage / go_to_stage tools to move through the flow.
Branching is a Pro feature. Basic linear stages are available to everyone; the branch conditions, the “This stage ends the workflow” flag, and the flow-preview diagram require the Pro plan. The Custom expression branch guard additionally requires the Business plan.
Each stage
Branches
Each non-terminal stage can define Branches — ordered rules that decide the next stage. They are evaluated top-down, and the first match wins. Leave Branches empty to auto-advance to the next stage in order once the stage’s goals are met. Each branch pairs a condition with a target (“go to stage…”). The condition kinds are:
A branch’s condition may key on any goal from the current stage or an earlier stage. A read-only Flow preview diagram shows how the agent moves between stages, flagging any unreachable (amber) or dead-end (red) stages.
Example: a simple linear flow
No branches — each stage auto-advances once its required goals are met:Example: a branching flow
This triage flow exercises every condition kind. Branches are evaluated top-down, first match wins:Examples
Hello world — a focused helper. The minimum that works is one clear sentence of Purpose:mark_goal_complete tool whose arguments match your criteria:
mark_goal_complete when the goal is reached — giving you a structured, measurable definition of “done” instead of an open-ended chat.
Expected Output
The Expected Output card defines what your agent should return as its final answer and how it should be formatted. This applies to every reply the agent produces — in chat, and when another agent or API client calls it. It’s especially useful when your agent is consumed by other agents over A2A or its per-agent MCP URL, where a predictable return shape matters.- Expected final return — a plain-English description of what the final reply must deliver, e.g. “a one-paragraph summary followed by 3 recommended next steps”. Injected into the system prompt. Leave blank for no specific requirement.
- Output format — whether, and how, the reply is formatted:
- Auto — the agent decides (no formatting directive).
- Plain text — no Markdown, tables, or code fences.
- Markdown — formatted Markdown.
- JSON — a single valid JSON value and nothing else.
- JSON structure (JSON only) — paste a sample JSON object or an informal schema describing the shape you want back. It’s shown to the agent and, for A2A/MCP callers, attached to the response so they know what to expect.
- Strict JSON validation (JSON only) — when on, the platform checks that the final reply parses as valid JSON before returning it to API / agent callers (A2A, MCP, and non-streaming OpenAI-compatible calls), repairing it once if it doesn’t. Live token-streamed replies are still guided by the prompt but not post-validated.
agentheya/output-contract descriptor (format, expected return, JSON schema) so the calling agent knows the shape you promised to return.
Tips
- Write in second person (“You are…”) — this is the most effective framing for LLMs.
- Be specific rather than vague. “You help software engineers debug Python code” outperforms “You are a helpful assistant.”
- Keep it focused. A narrow, well-defined purpose beats a broad, generic one.
- Use the AI Helper to generate and refine your Purpose and Behaviour sections.
Character limit
Each of the Purpose and Behaviour text bodies supports up to the configured system-prompt limit. For most agents, a few hundred words per section is plenty. Longer prompts increase cost and can dilute focus.Manage via the Management MCP
This page can be configured programmatically through the Management MCP — useful for AI agents and CI pipelines.
Example:
config.get to read the current values and schema.get (or the HTTP schema URL above) to see the full field list.