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

# Build an agent

> Create a stalled-deal Slack alert from scratch.

This builds one working agent: every Monday morning, post to `#sales` any deal closing this quarter that's over \$50k and hasn't been touched.

## Two ways to build one

You can build an agent in the Deal Brain web app or over MCP from a connected AI platform. Both reach the same agent.

* **Web app** — click **Agents** in the left sidebar to open `/app/dashboard/agents`, then click **New**. The page also has a **Run History** tab for past runs.
* **MCP** — describe the agent in plain language and Deal Brain builds it. The rest of this page follows this path, because every step is one prompt.

## Before you start

* [Slack must be connected](/integrations/slack) if you want the agent to post there
* Team agents require the `configure_agents` permission; personal agents are yours to create

## 1. Create it disabled

Describe what you want. Deal Brain creates the agent in a disabled state.

```text wrap theme={null}
Create a team agent called "Monday stalled deals". Every Monday at 8am Eastern, find open opportunities with a close date this quarter and an amount over $50,000, and post them to the #sales Slack channel.
```

Nothing runs yet. That's intentional — you get to inspect it first.

## 2. Review it before it runs

Over MCP, ask Deal Brain to read the agent back to you:

```text wrap theme={null}
Show me the "Monday stalled deals" agent — its filter, schedule, and whether it's ready to enable.
```

This tells you how the agent is configured and what's blocking it, not which deals it would match. To see the matched deals, test the agent in the web app — the **Agents** page has a test surface for exactly this.

Either way, check the filter here rather than finding out it was too broad in a Slack channel at 8am Monday.

## 3. Refine the filter

```text wrap theme={null}
Tighten that filter: also require that the account industry is not "Education", and exclude anything already marked closed.
```

Filters combine with **and** / **or** / **not**, so you can build up something specific:

```
and:
  - IsClosed        eq       false
  - Amount          gt       50000
  - CloseDate       between  [quarter start, quarter end]
  - account.industry neq     "Education"
```

See the [filter reference](/agents/reference) for every available field and operator.

## 4. Choose what it posts

An action is either literal text or a rendered [Canvas](/canvas) template. Canvas is the better option for anything you want formatted consistently.

```text wrap theme={null}
Have that agent post using our "Weekly pipeline review" canvas template instead of plain text.
```

An agent can have up to 10 actions.

## 5. Enable it

```text wrap theme={null}
Enable the "Monday stalled deals" agent.
```

Enabling validates dependencies. If it fails, you'll get a specific blocker — a disconnected Slack channel, a missing canvas template, or insufficient execution authority — rather than a silent no-op.

## 6. Adjust later

Any configuration change disables the agent again:

```text wrap theme={null}
Change "Monday stalled deals" to run Tuesdays at 7am instead, then re-enable it.
```

Remember the re-enable. A common surprise is editing an agent, walking away, and wondering why it stopped posting.

<Note>
  Deleting an agent is a soft delete. Disable it instead if you might want it back.
</Note>
