This chapter contains info about `Structured data` provided as an input to the *UI Agent* to select UI component for. *Controlling assistant* or *Data providing agent* must provide data conforming to these rules to get good results from the *UI Agent*. Non conforming data may work still to get reasonable `Data UI Block`, but results are not guaranteed.
Scanned 5/31/2026
Install via CLI
openskills install tools-only/X-Skills# Input data
This chapter contains info about `Structured data` provided as an input to the *UI Agent* to select UI component for.
*Controlling assistant* or *Data providing agent* must provide data conforming to these rules to get good results from the *UI Agent*.
Non conforming data may work still to get reasonable `Data UI Block`, but results are not guaranteed.
## Data must be relevant for the User prompt
*UI Agent* expects that provided data are relevant to the current `User prompt`, as it generates UI which shows that data regarding to the user prompt.
Results for unrelated data are not guaranteed.
## `InputData` object fields
`InputData` is *UI Agent* input object, containing one piece of data the one UI component is generated for. Fields in this object:
* `id` - unique id of the data piece, used for internal processings, logging, tracing etc
* `data` - string with structured backend data to be processed to UI component
* `type` - optional string identifier of the data piece type eg. `movies.movie-detail`, `movies.movies-list`, `movies.actor-detail`. It is up to *Controlling assistant*
to define and use these types, but it might be a good idea to use tree like hierarchy here, and descriebe business meaning of the data. Other option is
to use name of the LLM tool used to load backend data, as implemented in some of our AI framework bindings.
It is used to identify data type for multiple features like configurable component selection, input data transformation, input data JSON wrapping etc.
* `type_metadata` - optional string with type specific metadata passed to the renderer. Example use case: JSON-serialized tool call arguments used to load the data,
enabling frontend to refresh data with same parameters. For example: `{"title": "Toy Story"}`.
There are additional optional fields controlling additional features:
* `hand_build_component_type` - one of [Hand Built Component selection methods](../data_ui_blocks/hand_build_components.md)
## JSON format - data transformations
*UI Agent* expects [JSON formatted](https://datatracker.ietf.org/doc/html/rfc8259) structured backend input data.
[JSONPath](https://www.rfc-editor.org/rfc/rfc9535.html) is generated by LLM and used to get values from the data for the UI rendering.
So structured backend data provided as an input **MUST BE** in the JSON format.
If not then ["Input Data Transformation"](transformation.md) must be used.
## Data structures
LLM used by *UI Agent* looks at the data structure, and uses it as one of the main clues (together with `User prompt`) to select proper UI component.
See [Input Data Structures](structure.md).
No comments yet. Be the first to comment!