> ## Documentation Index
> Fetch the complete documentation index at: https://docs.platform.nora.my/llms.txt
> Use this file to discover all available pages before exploring further.

# Agents & Blocks

> The five kinds of Block, and how they connect.

An **Agent** is the reasoning core of a Flow — the block that decides what to do. Everything else (Tools, Actions, Triggers, DataSources) exists to give an Agent its inputs and outputs.

## Agent

An Agent needs three things:

1. **A role** — plain-language instructions describing what it should do.
2. **A model** — GPT-, Claude-, Gemini-class, or one of Nora's own. Change any time without rewriting the Flow.
3. **Its Blocks** — the Tools it can call, the DataSources it can search, the Actions that run after it.

```text theme={null}
Role:  You are a support assistant for FinCorp.
       Answer account and fee questions. If unsure, say so.
Model: GPT-4-class (default)
Tools: [look-up-account, calc-fee]
Data:  [help-center, policy-docs]
```

## Tool

A **Tool** is one thing the Agent can call. Examples:

* An HTTP request to your backend (`GET /accounts/{id}`)
* A code snippet that computes something
* A prebuilt integration (e.g., Google Sheets read)

You describe the tool in plain language — Nora generates the calling schema so the Agent knows when to use it.

## Action

An **Action** runs *after* the Agent produces an answer. Think "side effects".

* Send an email
* Post to Slack
* Write to a Google Sheet
* Notify a webhook

Actions are optional. A pure Q\&A Flow has none.

## Trigger

A **Trigger** is what starts the Flow. One Flow, one Trigger (for now). Options include:

* **Chat** — a user sends a message from your app or the Nora chat panel
* **Webhook** — an external system POSTs a payload
* **Schedule** — cron-style, e.g. every hour

## DataSource

A **DataSource** is a searchable body of knowledge attached to the Agent. Documents, spreadsheets, or a database.

The Agent decides when to search and what to look for. You just point at the source.

## How they connect

Blocks are wired on the canvas. Typical Flow:

```
[Trigger: chat message]
        ↓
[Agent: support-agent]  ←── [DataSource: help center]
        ↓                    [Tool: look-up-account]
[Action: log to CRM]
```

You don't hand-write the wiring — dragging a connection between two block ports is enough.
