> For the complete documentation index, see [llms.txt](https://whitepaper.aitech.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://whitepaper.aitech.io/agentforge/connections/data-structure.md).

# data structure

When you connect blocks, the output data structure from the source block determines what values are available in the destination block. Each block type produces a specific output structure that you can reference in downstream blocks.

{% hint style="info" %}
Understanding these data structures is essential for effectively using connection tags and accessing the right data in your workflows.
{% endhint %}

### Block Output Structures

Different block types produce different output structures. Here's what you can expect from each block type:

{% tabs %}
{% tab title="Agent Output" %}

```json
{
  "content": "The generated text response",
  "model": "gpt-4o",
  "tokens": {
    "prompt": 120,
    "completion": 85,
    "total": 205
  },
  "toolCalls": [...],
  "cost": [...],
  "usage": [...]
}
```

#### Agent Block Output Fields

* **content**: The main text response generated by the agent
* **model**: The AI model used (e.g., "gpt-4o", "claude-3-opus")
* **tokens**: Token usage statistics
  * **prompt**: Number of tokens in the prompt
  * **completion**: Number of tokens in the completion
  * **total**: Total tokens used
* **toolCalls**: Array of tool calls made by the agent (if any)
* **cost**: Array of cost objects for each tool call (if any)
* **usage**: Token usage statistics for the entire response
  {% endtab %}

{% tab title="API Output" %}

```json
{
  "data": "Response data",
  "status": 200,
  "headers": {
    "content-type": "application/json",
    "cache-control": "no-cache"
  }
}
```

#### API Block Output Fields

* **data**: The response data from the API (can be any type)
* **status**: HTTP status code of the response
* **headers**: HTTP headers returned by the API
  {% endtab %}

{% tab title="Function Output" %}

```json
{
  "result": "Function return value",
  "stdout": "Console output",
}
```

#### Function Block Output Fields

* **result**: The return value of the function (can be any type)
* **stdout**: Console output captured during function execution
  {% endtab %}

{% tab title="Evaluator Output" %}

```json
{
  "content": "Evaluation summary",
  "model": "gpt-5",
  "tokens": {
    "prompt": 120,
    "completion": 85,
    "total": 205
  },
  "metric1": 8.5,
  "metric2": 7.2,
  "metric3": 9.0
}
```

#### Evaluator Block Output Fields

* **content**: Summary of the evaluation
* **model**: The AI model used for evaluation
* **tokens**: Token usage statistics
* **\[metricName]**: Score for each metric defined in the evaluator (dynamic fields)
  {% endtab %}

{% tab title="Condition Output" %}

```json
{
  "content": "Original content passed through",
  "conditionResult": true,
  "selectedPath": {
    "blockId": "2acd9007-27e8-4510-a487-73d3b825e7c1",
    "blockType": "agent",
    "blockTitle": "Follow-up Agent"
  },
  "selectedConditionId": "condition-1"
}
```

#### Condition Block Output Fields

* **content**: The original content passed through
* **conditionResult**: Boolean result of the condition evaluation
* **selectedPath**: Information about the selected path
  * **blockId**: ID of the next block in the selected path
  * **blockType**: Type of the next block
  * **blockTitle**: Title of the next block
* **selectedConditionId**: ID of the selected condition
  {% endtab %}

{% tab title="Router Output" %}

```json
{
  "content": "Routing decision",
  "model": "gpt-4o",
  "tokens": {
    "prompt": 120,
    "completion": 85,
    "total": 205
  },
  "selectedPath": {
    "blockId": "2acd9007-27e8-4510-a487-73d3b825e7c1",
    "blockType": "agent",
    "blockTitle": "Customer Service Agent"
  }
}
```

#### Router Block Output Fields

* **content**: The routing decision text
* **model**: The AI model used for routing
* **tokens**: Token usage statistics
* **selectedPath**: Information about the selected path
  * **blockId**: ID of the selected destination block
  * **blockType**: Type of the selected block
  * **blockTitle**: Title of the selected block
    {% endtab %}
    {% endtabs %}

### Custom Output Structures

Some blocks may produce custom output structures based on their configuration:

1. **Agent Blocks with Response Format**: When using a response format in an Agent block, the output structure will match the defined schema instead of the standard structure.
2. **Function Blocks**: The `result` field can contain any data structure returned by your function code.
3. **API Blocks**: The `data` field will contain whatever the API returns, which could be any valid JSON structure.

{% hint style="warning" %}
Always check the actual output structure of your blocks during development to ensure you're referencing the correct fields in your connections.
{% endhint %}

### Nested Data Structures

Many block outputs contain nested data structures. You can access these using dot notation in connection tags:

```
<blockId.path.to.nested.data>
```

For example:

* `<agent1.tokens.total>` - Access the total tokens from an Agent block
* `<api1.data.results[0].id>` - Access the ID of the first result from an API response
* `<function1.result.calculations.total>` - Access a nested field in a Function block's result


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://whitepaper.aitech.io/agentforge/connections/data-structure.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
