Typed Properties (dai:properties)
dai:properties / dai:property child elements define typed fields, parameters, inputs, and key-value lists. Supported types: str, int, float, bool, date, datetime, list, dict.
Several element types carry lists of typed fields inside bpmn:extensionElements:
- Model — its schema fields
- Tool — its call parameters
- Agent — its typed inputs
- MCP Server — its environment variables
- Router — its routes
- Config — its settings
- Cloud and open-source types — their
tags
The container is dai:properties; each row is a dai:property with a name and a type:
<bpmn:task id="Task_model" name="OrderLine" dai:type="dai.types.software.model" dai:stepType="model" dai:modelFormat="plain"
dai:notes="A single line item within an order.">
<bpmn:extensionElements>
<dai:properties>
<dai:property name="productId" type="str" />
<dai:property name="quantity" type="int" />
<dai:property name="unitPrice" type="float" />
<dai:property name="confirmed" type="bool" />
</dai:properties>
</bpmn:extensionElements>
</bpmn:task>
Supported property types
| Type | Meaning |
|---|---|
str | String |
int | Integer |
float | Floating-point number |
bool | Boolean |
date | Calendar date |
datetime | Date and time |
list | Ordered collection |
dict | Key/value mapping |
Tool parameters
The Tool type declares its typed parameters the same way:
<bpmn:task id="Task_tool" name="fetchPrice" dai:type="dai.types.ai.tool" dai:stepType="tool" dai:language="python" dai:returns="float"
dai:notes="Fetch the current price for a product SKU from the pricing service.">
<bpmn:extensionElements>
<dai:properties>
<dai:property name="sku" type="str" />
<dai:property name="currency" type="str" />
</dai:properties>
</bpmn:extensionElements>
</bpmn:task>
Agent inputs
Agent uses the same container for its typed inputs, whether it is a bpmn:task or — with children — a bpmn:subProcess:
<bpmn:subProcess id="Agent_1" name="Research Agent" dai:type="dai.types.ai.agent" dai:stepType="agent" …>
<bpmn:extensionElements>
<dai:properties>
<dai:property name="query" type="str" />
<dai:property name="maxSources" type="int" />
</dai:properties>
</bpmn:extensionElements>
…
</bpmn:subProcess>
In DAI Studio these rows are edited directly in the Properties panel — labelled Properties on a Model, Parameters on a Tool, Inputs on an Agent — with a name field and a type dropdown per row; the panel writes the dai:properties element for you.