Skip to main content
Field reference: details · public_details · a2a_card · policy_tos · policy_privacy · policy_refund · policy_acceptable_use — every field, type, default, and tier for this page.
The Public Details page is where you manage everything your subscribers (and other agents) see about this agent: its public name, the description on the web chat page, the instructions shown to first-time visitors, who can access it, and the legal policies that apply.
Looking for the Web chat page layout, Dashboard pages, or Response presentation cards? They live on the Web page (under CHANNELS in the sidebar).

Public identity

See Formatting: Text, Markdown and JsonUI below for what these two fields accept.

Formatting: Text, Markdown and JsonUI

The Description and Instructions fields render in three ways, and you can mix all three in the same field:
  1. Text — plain text. Line breaks are preserved.
  2. Markdown — standard Markdown for styling, links, and images:
    • Bold **text**, italic *text*, headings ## Heading, bullet/numbered lists, quotes, tables, and code.
    • External images: ![alt text](https://example.com/image.png)
    • External links: [link text](https://example.com)
  3. JsonUI — a small, safe component language for laying out richer UI (cards, images, link buttons, tables, stats, alerts, and simple interactive widgets) right on your agent’s chat page.
HTML is not supported. Any raw HTML you type is shown as literal text, never rendered. Use Markdown for formatting and JsonUI for layout. (This applies to Description and Instructions only — the Legal Policy fields still accept HTML.)

JsonUI

JsonUI is Agentheya’s generative-UI format. You write a JSON document inside a fenced code block tagged jsonui, and the page renders it as styled components. It’s the same engine your custom tools use to return rich UI in chat — here you author it by hand. A JsonUI block looks like this:

The spec shape

Notes & limits:
  • Up to 200 elements and 6 levels of nesting per block.
  • Image src and link href must be https:// URLs (external images/links). javascript:, data:, etc. are rejected.
  • Unknown component types or props (e.g. a typo) are rejected — the block shows a small inline error instead of breaking the page, so you can fix it.

Components

Optional props (?) can simply be left out.

Example: a welcome panel with an image and a call-to-action

Example: feature highlights with stats

Example: a comparison table

Interactivity (optional)

Elements can carry two extra keys alongside props and children:
  • on — bind an event to an action, e.g. "on": { "press": { "action": "setState", "params": { "statePath": "/open", "value": true } } }.
  • visible — show/hide based on state, e.g. "visible": { "$state": "/open" }.
The actions that work on your web page are the local-state ones, which need no server: setState, pushState, and removeState. They read and write the block’s state, so you can build toggles, expanders, and growing lists.
The submit and cancel actions (and the form/input components) are designed for UI returned by tools during a chat, where there’s a conversation to send the collected values back to. On the Description / Instructions page there’s nowhere to submit to, so submit/cancel do nothing here. For navigation use a link (with variant: "button"); for in-place interactivity use the local-state actions above.

Access

The Access section controls who can reach this agent.

Visibility

Invite users

Click Invite Users by Email to open the Users page, where you invite people and manage who can access this agent. The button is a shortcut to that page — invites are sent and managed there, not inline on this page. Policies shown to your subscribers in addition to Agentheya’s own policies. These fields accept text, Markdown, or HTML.
  • Name / Company — Displayed alongside your legal policies on the agent page.
  • Terms of Service
  • Privacy Policy
  • Refund Policy
  • Acceptable Use Policy — Optional behaviour rules your subscribers must follow (domain-specific restrictions, prohibited content, and so on). Leave it blank to rely on Agentheya’s platform Acceptable Use Policy alone.
Each policy has a Set to default button that loads a template version referencing your agent name, company/business name, and support email — edit it to suit your business.

A2A / External Agents

Business plan. The A2A / External Agents card below is only available on the Business plan. On lower plans it is replaced by an upgrade prompt. (The Internal Agents allowlist moved to the Handoff page.)
Customise how this agent appears to other AI agents that discover it via its A2A agent card. Each agent has its own card at https://a2a.agentheya.com/agent/{agent_id}/.well-known/agent-card.json ({agent_id} is your agent’s immutable 10-character id, shown as the A2A Server URL on the API Keys page). These fields only affect agent-to-agent discovery — they do not change your public-facing page. The per-agent card is public — external agents can fetch it without a key. An Authorization: Bearer sk_ah_... key is only needed to actually call the agent (POST tasks to https://a2a.agentheya.com/agent/{agent_id}), not to read its card. See the A2A guide for the full protocol.

Test this agent via A2A

Two buttons open ready-made test harnesses in a popup window, copy-paste ready:
  • Promptfoo eval config — a Promptfoo configuration that drives this agent through its A2A interface.
  • Node.js test client — a small Node.js client that calls the same interface.
Any A2A-aware tool can also point straight at the card endpoint above. Both harnesses need an invocation key from the API Keys page.

Danger zone

The danger zone contains irreversible actions:
  • Delete this agent — permanently removes the agent and all its data, conversations, files, and integrations.
You must type the agent name to confirm deletion. This cannot be undone.

Manage via the Management MCP

This page can be configured programmatically through the Management MCP — useful for AI agents and CI pipelines. Example:
Partial updates are supported — only the fields you include are changed. Call config.get to read the current values and schema.get (or the HTTP schema URL above) to see the full field list.