Skip to main content

Adapters

Adapters are integration modules that provide tools to your agents. They define capabilities like sending SMS, managing contacts, or calling external APIs.

How Adapters Work

  • A Template attaches Adapters through AdapterConfig rows, each with:
    • config — per-template settings (API keys, phone numbers, etc.)
    • tools — callable functions the agent can invoke
  1. Enable adapters on your template by creating an AdapterConfig
  2. Fill in the config — validated against the adapter’s config_schema
  3. New agents created from the template snapshot every AdapterConfig into their own AgentAdapterConfig row, and inherit the adapter set at runtime

Built-in Adapters

Bedrock includes these default adapters:

Adapter Configuration

Some adapters require per-template configuration. For example, SMS needs a Twilio phone number.

Config Schema

Each adapter defines a config_schema (JSON Schema) that specifies required settings:

Creating Adapter Config

Attach an adapter to your template:
The config is validated against the adapter’s schema. Invalid configs are rejected.
Adapters without required config (Contacts, Projects, Documents, Notifications, Sub-Agents) can still be attached — pass an empty config: {}.

SMS Adapter Config

If twilio_account_sid and twilio_auth_token are omitted, Bedrock uses global environment credentials.

Email Adapter Config

MMS Adapter Config

Surge Adapter Config

Computer Adapter Config

Browser Adapter Config

Slack Adapter Config

Slack requires the credentials of a Slack App installed in your Slack workspace.

Microsoft Teams Adapter Config

Microsoft Teams is backed by an Azure Bot registration. Every bot points its messaging endpoint at the single shared URL /api/defaults/teams/webhook/ — inbound activities are routed to an agent by (bot app id, customer tenant id), not by a per-agent URL. Once a bot is added to a team or group chat, people reach the agent by @mentioning it; 1:1 chats work without a mention. Each personal chat, group chat, or channel thread is tracked as its own conversation, and senders are matched to contacts by their profile email. Bot credentials live in the Teams bot registry (the TeamsBot model), not in the agent’s adapter config — a directory-published bot’s secret is shared across many agents. Enabling the adapter on an agent only requires the (optional) auto_provision opt-in:

Routing model

A bot is identified by the JWT aud claim (its Microsoft App ID) and resolved in the registry. The agent is then chosen by the activity’s customer tenant:
  • an explicit tenant binding (bot, tenant_id) -> agent, or
  • the bot’s default agent when the tenant has no binding.
This supports both multiple distinct bots/agents in one tenant (disambiguated by app id) and one directory-published bot serving many customer tenants, each tenant routed to its own agent (disambiguated by tenant id). Manage bots and bindings via the teams/bots/ and teams/bindings/ endpoints or the Django admin.

Auto-provisioning

A template can opt in to auto-provisioning ("auto_provision": true). When an agent is created from such a template, the server automatically creates a single-tenant Entra app registration, client secret, Azure Bot resource (F0), and Teams channel, then registers a TeamsBot (with the agent as its default agent) plus a home-tenant binding. Provisioning runs in the background and typically completes within ~30 seconds; a notification is recorded on the agent when the bot is ready. This requires the TEAMS_PROVISION_* environment variables to be configured on the server (tenant, provisioner client ID/secret, subscription, and resource group).

App package

Once an agent has a bot (auto-provisioned or bound in the registry), download its Teams app package — a zip with the manifest and icons, ready to sideload or upload to your tenant’s app catalog — from the portal’s Teams tab or via:
The package is keyed to the bot’s app id, so a directory-published bot shared across agents has a single package.

Exa Adapter Config

Listing Adapters

View all available adapters:
Response:

Adapter Visibility

Creating Custom Adapters

You can build your own adapters to connect agents to any API or service. Custom adapters use webhooks — when an agent calls your tool, Bedrock POSTs to your URL with the arguments and context.

Custom Adapters Guide

Full walkthrough: creating an adapter, registering tools, handling webhooks, verifying secrets, and best practices.

Attaching Adapters to a Template

Adapters are attached to a template by creating AdapterConfig rows — one per adapter — at /api/toolbox/adapter-configs/ (see Creating Adapter Config above). Removing the AdapterConfig row detaches the adapter from the template (but does not affect agents already created from it).

Agent-Level Adapter Override

By default, agents inherit the adapter set from their template at creation time and own it from then on. You can edit the adapter set on a specific agent:
You can use adapter names or UUIDs.