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

Product
└── Adapters (assigned to product)
    ├── Adapter Config (per-product settings)
    └── Tools (callable functions)
  1. Assign adapters to your product
  2. Configure adapters with product-specific settings (phone numbers, API keys, etc.)
  3. Agents get tools from all adapters assigned to their product

Built-in Adapters

Bedrock includes these default adapters:
AdapterDescriptionRequires Config
ContactsContact book for storing names, phones, emailsNo
SMSSend/receive text messages via TwilioYes
MMSSend/receive iMessage/RCS via LinqYes
SurgeSend/receive SMS via SurgeYes
EmailSend/receive emails via AgentMailYes
GmailRead/send from a user’s Gmail via OAuthNo (user OAuth)
Google CalendarManage events on a user’s Google Calendar via OAuthNo (user OAuth)
NotificationsInternal notification/reminder system for agentsNo
ProjectsHierarchical project tracking with sub-projectsNo
DocumentsStore and retrieve text documentsNo
ComputerCloud VM sandbox for shell commands and filesYes
BrowserAsynchronous browser automation for web tasksYes

Assigning Default Adapters

curl -X POST https://api.bedrock.orinlabs.org/api/products/products/PRODUCT_ID/assign_default_adapters/ \
  -H "Authorization: Bearer YOUR_API_KEY"

Adapter Configuration

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

Config Schema

Each adapter defines a config_schema (JSON Schema) that specifies required settings:
{
  "type": "object",
  "properties": {
    "phone_number": {
      "type": "string",
      "description": "Twilio phone number in E.164 format"
    },
    "twilio_account_sid": {
      "type": "string",
      "description": "Twilio Account SID (optional)"
    },
    "twilio_auth_token": {
      "type": "string",
      "description": "Twilio Auth Token (optional)"
    }
  },
  "required": ["phone_number"]
}

Creating Adapter Config

Configure an adapter for your product:
curl -X POST https://api.bedrock.orinlabs.org/api/toolbox/adapter-configs/ \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "adapter": "ADAPTER_ID",
    "product": "PRODUCT_ID",
    "config": {
      "phone_number": "+15551234567"
    }
  }'
The config is validated against the adapter’s schema. Invalid configs are rejected.

SMS Adapter Config

{
  "adapter": "sms-adapter-id",
  "product": "your-product-id",
  "config": {
    "phone_number": "+15551234567",
    "twilio_account_sid": "AC...",
    "twilio_auth_token": "..."
  }
}
If twilio_account_sid and twilio_auth_token are omitted, Bedrock uses global environment credentials.

Email Adapter Config

{
  "adapter": "email-adapter-id",
  "product": "your-product-id",
  "config": {
    "agentmail_domain": "yourcompany.agentmail.io",
    "agentmail_api_key": "..."
  }
}

MMS Adapter Config

{
  "adapter": "mms-adapter-id",
  "product": "your-product-id",
  "config": {
    "phone_number": "+15551234567",
    "linq_integration_token": "..."
  }
}

Surge Adapter Config

{
  "adapter": "surge-adapter-id",
  "product": "your-product-id",
  "config": {
    "phone_number": "+15551234567",
    "surge_api_token": "...",
    "surge_account_id": "..."
  }
}

Computer Adapter Config

{
  "adapter": "computer-adapter-id",
  "product": "your-product-id",
  "config": {
    "blaxel_api_key": "..."
  }
}

Browser Adapter Config

{
  "adapter": "browser-adapter-id",
  "product": "your-product-id",
  "config": {
    "kernel_api_key": "..."
  }
}

Listing Adapters

View all available adapters:
curl -X GET https://api.bedrock.orinlabs.org/api/toolbox/adapters/ \
  -H "Authorization: Bearer YOUR_API_KEY"
Response:
[
  {
    "id": "contacts-adapter-id",
    "name": "Contacts",
    "description": "Contact book for managing contacts...",
    "config_schema": {},
    "visibility": "public",
    "tools": ["create_contact", "get_contact", "list_contacts", "update_contact", "delete_contact"]
  },
  {
    "id": "sms-adapter-id",
    "name": "SMS",
    "description": "SMS messaging via Twilio...",
    "config_schema": {...},
    "visibility": "public",
    "tools": ["list_conversations", "get_conversation", "send_sms", "open_attachment"]
  }
]

Adapter Visibility

VisibilityDescription
publicAvailable to all organizations (built-in adapters)
privateOnly 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.

Assigning Adapters to Products

Manually assign an adapter to a product:
curl -X PATCH https://api.bedrock.orinlabs.org/api/products/products/PRODUCT_ID/ \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "adapters": ["adapter-id-1", "adapter-id-2"]
  }'

Agent-Level Adapter Override

By default, agents inherit all adapters from their product. You can assign specific adapters to individual agents:
curl -X PATCH https://api.bedrock.orinlabs.org/api/cloud/agents/AGENT_ID/ \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "adapters": ["Contacts", "Projects"]
  }'
You can use adapter names or UUIDs.