Syntax

Agents are written in JSONC: JSON with comments. Every value keeps its JSON meaning, with one extension: a string enclosed in braces is a Python expression.

Comments

Line comments (//) and block comments (/* */) are allowed anywhere. Validation strips them, so a published agent is plain JSON.

Keys and values

A key is always a plain name: a function name, a command name or a field name. The structure of the definition, the functions and the commands each have their own page.

A value is a JSON string, number, boolean, list or object. Each field of a command expects one of those types, and the command reference shows the type of every field.

Dynamic strings

A string wrapped in { ... } is a Python expression, evaluated when the agent runs. Any other string is plain text. A field that may hold either is called a dynamic string in the command reference.

A plain string and an expression
"var": {
  "label": "Order total",
  "total": "{ price * quantity }"
}

What an expression may contain, what it can see, how it is checked and how it runs are on Python expressions.