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 contains assigned Adapters, each with:
    • Adapter Config — per-product settings (API keys, phone numbers, etc.)
    • Tools — callable functions the agent can invoke
  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.