Answers are great; doing things is better. Use this page when you want the assistant to look up live data from your systems (Actions), route different kinds of questions to different specialists (Agent graphs), or require a human sign-off before anything risky executes (Approvals). Everything lives in the dashboard under Project → Agents.

Create an AI Action

Actions let the assistant call your APIs from a conversation — order status, account lookups, entitlement checks.
1

Define the action

Open Project → Agents → Actions and click New action. Give it a name the model will understand (e.g. order_status), a clear description (“Look up the status of an order by ID” — the model uses this to decide when to call it), the HTTP method, and a URL template:
{input.xxx} placeholders are substituted from the model’s input.
2

Describe the input

Provide a JSON Schema for the action’s input (e.g. an object with an order_id string). Add any auth headers your API needs — they’re stored with the action, never shown to end users.
3

Choose an approval mode

  • Auto — invocations execute immediately. Good for read-only lookups.
  • Manual — every invocation is held at pending approval until a teammate approves it. Start here for anything that mutates data.
4

Test it

Use Invoke on the action’s page with sample input and confirm the response looks right before wiring it into an agent.

Build an agent graph

Agent graphs compose a coordinator that routes each request to specialist nodes — each specialist with its own instructions, model, and tools (search_docs, ask_question, or one of your actions).
1

Create the agent

Open Project → Agents and click New agent. Every graph needs exactly one coordinator node; give it routing instructions (“Send order questions to Orders, everything else to Search”).
2

Add specialists

Add specialist nodes and pick their tools: docs search, RAG question-answering, or your actions. Connect the coordinator to each specialist with edges.
3

Guard risky specialists

Toggle Require approval on any node that calls sensitive actions — runs pause at that node until a human approves.
4

Run and iterate

Use Run with a test input and inspect the step-by-step output (each node’s output and latency). Iterate on instructions until routing behaves.
Prefer graphs as code? Define validated graphs in TypeScript with defineAgent from @beforequery/agents and run them from your product with a client key via the public agent-run API.

Work the approval queue

When a run hits a node that requires approval (or a manual-mode action is invoked), it pauses and lands in Project → Approvals:
  • Approve — the pending action executes and the run continues.
  • Reject — the run stops; optionally leave a note explaining why.
Approvals and rejections are recorded, so you have an audit trail of every human decision.

Observe every run

Each agent run is recorded step-by-step as an agent trace under Project → Traces, alongside chat, search, MCP, A2A, and deflection traces. When an agent misroutes, the trace shows exactly which node did what. See Analytics & Evals.
  • A2A protocol — let external agents discover and message yours.
  • Agents SDK — graph-as-code, MCP + A2A clients, and a self-hosted agent runtime.