Browse this section
Enterprise Agents

Building an agent

Define the job, grant knowledge and tools, set guardrails, test, promote.

An Enterprise Agent is versioned configuration: a job, knowledge bases, tools, guardrails, triggers and an evaluation set. You can build one in the web app or as YAML through the API.

1. Start from a template or blank

Agents → New agent. Templates cover the common operations workflows — invoice processing, ticket triage, monthly reporting, onboarding, CRM hygiene — and are a good starting point even if your process differs.

2. Write the job

Plain-language instructions describing the outcome, the steps, and the cases to hand off. Be concrete about exceptions:

You process supplier invoices received in the invoices@ mailbox.
For each invoice: extract supplier, invoice number, date, due date, amounts and VAT.
Match the supplier against the supplier master list. Match line items against open purchase orders.
If everything matches and the total is under €5,000, post the invoice to Netvisor.
If the supplier is new, the total is €5,000 or more, or any line doesn't match, request approval from finance-leads with your findings.
If the document is not an invoice, file it under "Not an invoice" and stop.

3. Grant knowledge

Select the knowledge bases the agent may read. It will use them to look up policies, master data and previous cases.

4. Add tools

Choose tools from connected integrations and set scopes:

ToolScopeNotes
gmail.readreadmailbox: invoices@
drive.readreadfolder: Finance/Supplier master
netvisor.purchase_invoiceswriteapproval policy applies
slack.postwritechannel: #finance-agent

Write tools default to requiring approval until you set a policy.

5. Set guardrails

Approval policies, volume and spend limits, allowed hours, escalation contact. See Guardrails & approvals.

6. Choose triggers

Schedule, event, webhook, chat mention or manual. See Automations.

7. Test

Test run executes the agent in test mode: reads are real, writes are simulated and shown in the trace as "would have". Iterate on the job until traces look right.

8. Evaluate

Attach an evaluation set — past cases with known outcomes — and run it. Set a minimum accuracy. See Evaluation.

9. Promote

Promote to production. The version becomes active; previous versions remain available for rollback. Promotion is recorded in the audit log.

As YAML

name: invoice-processor
description: Read supplier invoices, validate, post to accounting.
job: |
  You process supplier invoices received in the invoices@ mailbox. …
knowledge_bases: [finance-eu]
tools:
  - gmail.read: { mailbox: invoices@ }
  - drive.read: { folder: "Finance/Supplier master" }
  - netvisor.purchase_invoices: { scope: write }
  - slack.post: { channel: "#finance-agent" }
guardrails:
  approvals:
    - tool: netvisor.purchase_invoices
      when: amount >= 5000 or supplier.new or lines.unmatched > 0
      approvers: ["finance-leads"]
  max_runs_per_hour: 60
  allowed_hours: "Mon-Fri 06:00-22:00 Europe/Helsinki"
  handoff_to: "finance-queue"
triggers:
  - type: email.received
    mailbox: invoices@
evaluation:
  dataset: invoices-2026-q2
  min_accuracy: 0.98

Create it with POST /agents or bmc agents push agent.yaml from the CLI.