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
- Enable adapters on your template by creating an
AdapterConfig - Fill in the config — validated against the adapter’s
config_schema - New agents created from the template snapshot every
AdapterConfiginto their ownAgentAdapterConfigrow, and inherit the adapter set at runtime
Built-in Adapters
Bedrock includes these default adapters:| Adapter | Description | Requires Config |
|---|---|---|
| Contacts | Contact book for storing names, phones, emails | No |
| SMS | Send/receive text messages via Twilio | Yes |
| MMS | Send/receive iMessage/RCS via Linq | Yes |
| Surge | Send/receive SMS via Surge | Yes |
| Blooio | Send/receive iMessage/RCS/SMS via Blooio | Yes |
| Send/receive emails via AgentMail | Yes | |
| Gmail | Read/send from a user’s Gmail via OAuth | No (user OAuth) |
| Google Calendar | Manage events on a user’s Google Calendar via OAuth | No (user OAuth) |
| Google Drive | Browse/read/write a user’s Google Drive via OAuth | No (user OAuth) |
| Strava | Read a user’s activities/training data via OAuth | No (user OAuth) |
| Slack | Send messages and receive events from a user’s Slack workspace | Yes |
| Microsoft Teams | Chat in Teams channels/group chats via an Azure Bot (responds when @mentioned) | Yes |
| Notifications | Internal notification/reminder system for agents | No |
| Projects | Hierarchical project tracking with sub-projects | No |
| Documents | Store and retrieve text documents | No |
| Computer | Cloud VM sandbox for shell commands and files | Yes |
| Browser | Asynchronous browser automation for web tasks | Yes |
| Exa | Web search and people/profile search via Exa | Yes |
| Sub-Agents | Spawn child agents that run autonomously | No |
| Webchat | Local web-based chat channel for dev / testing (no agent tools; used via the REST API) | No |
Adapter Configuration
Some adapters require per-template configuration. For example, SMS needs a Twilio phone number.Config Schema
Each adapter defines aconfig_schema (JSON Schema) that specifies required settings:
Creating Adapter Config
Attach an adapter to your template:Adapters without required config (Contacts, Projects, Documents, Notifications, Sub-Agents) can still be attached — pass an empty
config: {}.SMS Adapter Config
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 JWTaud 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.
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:Exa Adapter Config
Listing Adapters
View all available adapters:Adapter Visibility
| Visibility | Description |
|---|---|
public | Available to all organizations (built-in adapters) |
private | Only visible to your organization (custom adapters) |
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 creatingAdapterConfig 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).