Config reference
The JSON structure of a prompt, field by field, with a complete example.
Optional. You don't need this to get started. Back to the quickstart
You don’t have to write this JSON by hand. Turn on Prompt Designer in the agent’s settings and the agent writes it with you from a description of the Dimensions you want, or you can paste JSON in this shape into that chat and ask the agent to save it. Saved prompts are listed on the Prompts tab. See Design custom Dimensions.
A prompt is a JSON object with four top-level fields. It is shaped like a function definition: a name, a description, the instructions, and the fields to fill in.
| Field | Required | What it is |
|---|---|---|
name | Yes | A function-style name, such as extract_support_ticket_info |
description | Yes | One sentence on what the prompt extracts. Metadata only. |
context | Yes | The instructions sent with every conversation. See Write the context. |
parameters | Yes | { "type": "object", "properties": { ... }, "required": [ ... ] } |
Dimensions inside parameters.properties
Section titled “Dimensions inside parameters.properties”Each key is a Dimension name in snake_case. Each value has a description and a type:
| Output type | JSON |
|---|---|
| Fixed category | "type": "string", "enum": ["billing", "delivery", "none_detected"] |
| Dynamic label | "type": "string" |
| Verbatim quote | "type": "string" |
| Score | "type": "integer" |
| Boolean | "type": "boolean" |
List every Dimension in required, scores included. For a score, say in its description when to leave it empty, for example “Leave empty if there is not enough signal”. See Predicted scores.
- Valid strict JSON. A line break typed inside a string value makes the file invalid; write
\ninstead. - Every category list ends with
none_detected, with no duplicates, insnake_case. - Every Dimension in
propertiesis also inrequired.
Example
Section titled “Example”{ "name": "extract_support_ticket_info", "description": "Why customers contact support, whether the issue was resolved, and their own words.", "context": "Input:\nEach record is one support ticket thread between a customer and our agents.\n\nRules:\n- Use only what the text states.\n- If there is no signal, return 'none_detected'.", "parameters": { "type": "object", "properties": { "issue_category": { "description": "The customer's main issue.\n- 'billing': charges, refunds, invoices.\n- 'technical': the product is not working.\n- 'account_access': login, password, locked account.\n- 'none_detected': no issue stated.", "type": "string", "enum": ["billing", "technical", "account_access", "none_detected"] }, "resolved": { "description": "true if the thread ends with the issue fixed or the question answered.", "type": "boolean" }, "effort_1to5": { "description": "How hard the customer had to work to get help, 1 = effortless, 5 = very hard.", "type": "integer" }, "issue_verbatim": { "description": "The customer's own words describing the issue, copied exactly, at most 30 words. If none, return 'none_detected'.", "type": "string" } }, "required": ["issue_category", "resolved", "effort_1to5", "issue_verbatim"] }}