---
title: "Bird MCP server for AI agents - actionlake"
description: "Give Claude 471 Bird actions through one MCP server: email, whatsapp, amb, SMS. Your agent never holds the credential. 100,000 calls a month free."
canonical: https://actionlake.com/connectors/bird
updated: 2026-10-23
---

Connectors · Email & messaging

# Bird MCP server for AI agents.

actionlake is an MCP gateway: one remote MCP server that connects Claude and other MCP clients to Bird and the rest of your systems. It gives your agent 471 Bird actions (282 reads, 132 writes and 57 that wait for a confirmation) and holds the Bird credential itself, so the agent never does. It paces Bird's limits and records every call.

[Connect Bird free](https://actionlake.com/console?start=sandbox) [See pricing](https://actionlake.com/pricing)

100,000 free calls a month. No card, no email, no password: press Start a free sandbox on the next screen and keep the key it shows you.

`claude mcp add --transport http actionlake https://connect.actionlake.com/mcp`

the first call

```
do {
  action: "bird.audiences.list",
  intent: "check which Bird account is connected"
}
# List audiences · read · 1 upstream call
```

- 471 actions in one signed file
- 282 read look, never change
- 132 write create and update
- 57 wait for a yes destructive, confirmed first

Set up

## Connect Bird in three steps.

1. 01
   ### Add actionlake to Claude.
   Run the command once in Claude Code; its consent page can create a free sandbox: 100,000 calls a month, no card. In the Claude app, add a custom connector with the URL below and paste your key on the consent page. Creating a new sandbox from the Claude app is not yet tested by us.
   `https://connect.actionlake.com/mcp`
2. 02
   ### Connect Bird.
   Bearer token. No consent screen: your agent can connect it for you, but the key then passes through your chat. To keep it out of the model's context, paste it in the console instead. actionlake stores what you paste write-only, sealed under your tenant's key.
   - `api_key` Bird API key: a workspace key (bk_[region]_…) or an organization master key (bm_[region]_…)
   - `organization_id` Your Bird organization id
   - `region` Your Bird region
   - `workspace_id` Your Bird workspace id
   ```
   account { op: "connections.requirements", service: "bird" }
   # free: exactly what to paste, and what is found for you
   ```
3. 03
   ### Make the first call. Check before a write.
   Ask in plain words; Claude picks the action. Before anything changes, `check` validates the call and prices it, for free.
   ```
   do    { action: "bird.audiences.list" }
   # list audiences · read · 1 upstream call
   check { action: "bird.audiences.create", input: { … } }
   # free: inputs, permissions, cost and confirmations, nothing sent
   ```

Bird at a glance

**Sign-in**

Bearer token. No consent screen: your agent can connect it for you, but the key then passes through your chat. To keep it out of the model's context, paste it in the console instead.

**You provide**

`api_key`

**Setup fields**

`organization_id` `region` `workspace_id`

**Limits we pace to**

600 calls a minute, per connection

**API covered**

Bird API 1.0.0, at your region's bird.com address, set when you connect

**Built from**

Bird's documentation, read 23 October 2026[bird.com](https://bird.com/openapi.json) [bird.com](https://bird.com/docs/api)

**Service file**

Version 1.0.0, signed (Ed25519)

**Cached reads**

263 of 282 reads, for up to 5 minutes; a write clears what it affects

**Shared entities**

4, so ask can line Bird up with your other systems

**Data**

Processed and stored in Sydney, Australia. No US region yet

Capabilities

## What an AI agent can do in Bird.

471 actions in 21 areas. Every one carries its effect, so a key can allow the reads and hold the rest.

- **282** read look, never change
- **132** write create and update
- **57** destructive wait for a confirmation

1. ### Email
   140
   87 read · 36 write · 17 destructive
   List sending domains · List mailboxes · Create a sending domain · Create a mailbox
2. ### Whatsapp
   73
   43 read · 19 write · 11 destructive
   List WhatsApp messages · Send a WhatsApp message · List WhatsApp suppressions · Create a WhatsApp suppression
3. ### Amb
   53
   39 read · 11 write · 3 destructive
   List messages · Send a message · List Apple Messages for Business suppressions · Create an Apple Messages for Business suppression
4. ### SMS
   41
   32 read · 7 write · 2 destructive
   Create an SMS message · List SMS messages · List SMS suppressions · Create an SMS suppression
5. ### Esim
   38
   23 read · 10 write · 5 destructive
   Assign an eSIM to a person · Create a hosted install link · Order a data package · Create a recurring eSIM subscription
6. ### Voice
   27
   12 read · 12 write · 3 destructive
   Create a call · Create an SIP session credential · Create an SIP trunk · Create a gateway on an SIP trunk
7. ### Realtime
   16
   7 read · 6 write · 3 destructive
   Create a Realtime app · Create a Realtime app key · List members on a presence channel · List Realtime channels
8. ### Audiences
   11
   5 read · 3 write · 3 destructive
   List audiences · Create an audience · Get an audience · Update an audience

**13 more areas · 72 actions**

- Compliance **11**
- Numbers **10**
- Webhooks **9**
- Contacts **7**
- Contact properties **6**
- Asset folders **5**
- Assets **5**
- Lookup **5**
- Preferences **4**
- Organization **3**
- Verify **3**
- Docs **2**
- Workspace **2**

Top actions

## The Bird API, shaped for agents.

The ids your agent types, what each does, and the one name it shares with other systems. 78 of Bird's 81 action names are shared with at least one other connector, so an agent learns them once.

| Action | What it does | Effect | Same name in |
| --- | --- | --- | --- |
| `bird.audiences.list` List audiences | List audiences. | read | `comm.audience.list` 26 connectors |
| `bird.email.list_domains` List sending domains | List sending domains. | read | `comm.sending_domain.list` 18 connectors |
| `bird.email.list_mailboxes` List mailboxes | List mailboxes. | read | `comm.mailbox.list` 18 connectors |
| `bird.contacts.list` List contacts | List contacts. | read | `crm.contact.list` 177 connectors |
| `bird.audiences.create` Create an audience | Create an audience. | write | `comm.audience.create` 24 connectors |
| `bird.email.create_domain` Create a sending domain | Create a sending domain. | write | `comm.sending_domain.create` 15 connectors |
| `bird.email.create_mailbox` Create a mailbox | Create a mailbox. | write | `comm.mailbox.create` 15 connectors |
| `bird.contacts.create` Create a contact | Create a contact. | write | `crm.contact.create` 161 connectors |
| `bird.audiences.delete` Delete an audience | Delete an audience. | destructive | `comm.audience.delete` 21 connectors |
| `bird.whatsapp.list_messages` List WhatsApp messages | List WhatsApp messages. | read | `comm.message.list` 42 connectors |
| `bird.email.list_broadcasts` List broadcasts | List broadcasts. | read | `comm.campaign.list` 41 connectors |
| `bird.email.create_broadcast` Create a broadcast | Create a broadcast. | write | `comm.campaign.create` 38 connectors |

Try it

## Prompts to paste into Claude.

Each one names the Bird actions it will call, so you know what it reads and what it changes before you send it.

1. Read read
   Find the Bird contacts with no email address, so we can clean them up.
   calls `bird.contacts.list`
2. Write write
   Create an audience in Bird. Show me exactly what you will send before you save it.
   calls `bird.audiences.create`
3. Across systems read
   Which contacts are in both Bird and HaloPSA, and how many are in only one of them?
   calls `bird.contacts.list` `halopsa.users.list`

Across your systems

## Bird, joined to the rest of your business.

One `ask` fetches from Bird and another system, joins the rows on the same customer on our side, and hands your agent the answer, not every row.

- Which contacts are in both Bird and HaloPSA, and how many are in only one of them?
  `bird.contacts.list` + `halopsa.users.list`, on `crm.contact` · [HaloPSA](https://actionlake.com/connectors/halopsa)
- Which contacts are in both Bird and NetSuite, and how many are in only one of them?
  `bird.contacts.list` + `netsuite.views.contacts`, on `crm.contact` · [NetSuite](https://actionlake.com/connectors/netsuite)

Also mapped by other connectors `crm.contact` **192** `comm.audience` **27** `comm.mailbox` **14** `comm.sending_domain` **12**

ask

```
ask {
  intent: "which contacts are in both Bird and HaloPSA, and how many are in only one of them",
  steps: [
    { action: "bird.contacts.list", as: "people", input: {}, limit: 100, max_pages: 5 },
    { action: "halopsa.users.list", as: "people2", input: {}, limit: 100, max_pages: 5 },
    { join: {
        left: "people",
        right: "people2",
        on: "crm.contact",
        group_by: "people.email",
        select: ["people.email", "count(people2.id) as in_halopsa"]
    } }
  ]
}
```

Example. Run it through check first: it validates the steps and prices them, and it is free.

Governance for Bird

## Destructive actions wait for a yes.

57 Bird actions are destructive. The first 10:

- Delete an audience `bird.audiences.delete`
- Delete a sending domain `bird.email.delete_domain`
- Delete a mailbox `bird.email.delete_mailbox`
- Delete a contact `bird.contacts.delete`
- Delete an email template `bird.email.delete_template`
- Delete a broadcast `bird.email.delete_broadcast`
- Delete an SMS suppression `bird.sms.delete_suppression`
- Delete an email suppression `bird.email.delete_suppression`
- End a WhatsApp suppression `bird.whatsapp.delete_suppression`
- Unassign a contact from an audience `bird.audiences.unassign_contact`

A destructive action runs only with `confirm: true`. Under the `human` policy the agent cannot confirm for itself: the run stops until a named person approves, in the console or from a signed link in an email. The cap on a key is refused before the call is sent, never after.

do bird.audiences.delete confirm_policy: **human**

Delete an audience?

**intent:** the user asked me to delete an audience

run suspended · waiting for a named person · key _bird-agent_ cannot confirm itself

In the console, or from an emailed signed link.

a key for this connector

```
account {
  op: "keys.create", name: "bird-agent",
  allowed_actions: ["bird.*"], cap_calls: 2000,
  confirm_policy: "human_for_writes",
  approval_rules: [
    { match: "bird.audiences.delete", approver: "lead@example.com" },
    { match: "bird.email.delete_domain", approver: "lead@example.com" },
    { match: "bird.email.delete_mailbox", approver: "lead@example.com" }
  ]
}
```

Illustrative. Scoped to Bird only, capped at 2,000 upstream calls, every write confirmed, and the destructive ones approved by a named person.

Cost

## What Bird costs on actionlake.

Every Bird action is one upstream call, the only thing actionlake bills. Searching, `check`, `cost`, `account` and any call Bird refused with 401, 403, 429 or a 5xx are free. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.

- 1 upstream call per action all 471 Bird actions
- 471 actions page each page of a long list is one call
- 263 reads can be cached a cache hit costs nothing
- 100,000 calls a month, free paid plans from US$49 a month for 250,000

[See pricing](https://actionlake.com/pricing)

Action index

## Every Bird action.

471 actions by area: the id your agent calls, what it does, and its effect.

**Email 140**

- `bird.email.cancel_broadcast` Cancel a broadcast destructive
- `bird.email.cancel_mailbox_scheduled_message` Cancel a scheduled mailbox send destructive
- `bird.email.cancel_message` Cancel a scheduled message destructive
- `bird.email.create_broadcast` Create a broadcast write
- `bird.email.create_competitive_watchlist_brand` Add a competitor brand to the watchlist write
- `bird.email.create_domain` Create a sending domain write
- `bird.email.create_inbound_address` Create an inbound address write
- `bird.email.create_inbound_route` Create an inbound route write
- `bird.email.create_inbox_insights_seed_test` Register a seed test and get its addresses write
- `bird.email.create_mailbox` Create a mailbox write
- `bird.email.create_mailbox_message` Create a message from a mailbox write
- `bird.email.create_mailbox_receive_rule` Create a receive rule write
- `bird.email.create_message` Create an email message write
- `bird.email.create_message_batch` Create a batch of email messages write
- `bird.email.create_suppression` Create an email suppression write
- `bird.email.create_template` Create an email template write
- `bird.email.delete_broadcast` Delete a broadcast destructive
- `bird.email.delete_competitive_watchlist_brand` Remove a competitor brand from the watchlist destructive
- `bird.email.delete_domain` Delete a sending domain destructive
- `bird.email.delete_inbound_address` Delete an inbound address destructive
- `bird.email.delete_inbound_route` Delete an inbound route destructive
- `bird.email.delete_mailbox` Delete a mailbox destructive
- `bird.email.delete_mailbox_receive_rule` Delete a receive rule destructive
- `bird.email.delete_suppression` Delete an email suppression destructive
- `bird.email.delete_template` Delete an email template destructive
- `bird.email.delete_template_language` Delete one language from a draft destructive
- `bird.email.delete_template_version` Delete an email template draft destructive
- `bird.email.delete_thread` Delete a thread destructive
- `bird.email.delete_thread_message` Delete a message in a thread destructive
- `bird.email.duplicate_template` Duplicate an email template write
- `bird.email.get_broadcast` Get a broadcast read
- `bird.email.get_broadcast_counts` Get a broadcast's audience counts read
- `bird.email.get_broadcast_send_quota` Get the email send allowance for a broadcast read
- `bird.email.get_competitive_brand` Get a watched brand's figures read
- `bird.email.get_competitive_brand_campaign` Get one campaign a watched brand sent read
- `bird.email.get_competitive_brand_campaigns` Get the campaigns a watched brand sent read
- `bird.email.get_competitive_brand_send_time` Get when a watched brand sends read
- `bird.email.get_competitive_notable_campaigns` Get the notable campaigns across watched brands read
- `bird.email.get_competitive_volume_series` Get send volume over time for watched brands read
- `bird.email.get_competitive_watchlist` Get the competitor watchlist with its latest figures read
- `bird.email.get_domain` Get a sending domain read
- `bird.email.get_health` Get sending health and deliverability limits read
- `bird.email.get_inbound_address` Get an inbound address read
- `bird.email.get_inbound_message` Get a received email read
- `bird.email.get_inbound_message_body` Get a received email's body read
- `bird.email.get_inbound_route` Get an inbound route read
- `bird.email.get_inbox_insights_authentication` Get email authentication standing for a sending domain read
- `bird.email.get_inbox_insights_blocklists` Check whether a sending domain's infrastructure is blocklisted read
- `bird.email.get_inbox_insights_complaints` Get the Google-reported spam rate for a sending domain read
- `bird.email.get_inbox_insights_domains` List sending domains and their Inbox Insights status read
- `bird.email.get_inbox_insights_industry_benchmark` Get the industry placement benchmark for a sending domain read
- `bird.email.get_inbox_insights_placement` Get inbox placement for a sending domain read
- `bird.email.get_inbox_insights_seed_test_configuration` Get the choices available for a new seed test read
- `bird.email.get_inbox_insights_seed_tests` Get seed tests for a sending domain read
- `bird.email.get_inbox_insights_spam_traps` Get spam-trap hits for a sending domain read
- `bird.email.get_mailbox` Get a mailbox read
- `bird.email.get_mailbox_scheduled_message` Get a scheduled mailbox send read
- `bird.email.get_mailbox_stats` Get mailbox email statistics read
- `bird.email.get_message` Get a message read
- `bird.email.get_message_content` Get stored message content read
- `bird.email.get_smtp_config` Get an SMTP config read
- `bird.email.get_stats_by_bounce_code` Get bounces by SMTP error code read
- `bird.email.get_stats_by_broadcast` Get statistics by broadcast read
- `bird.email.get_stats_by_category` Get statistics by category read
- `bird.email.get_stats_by_client` Get engagement by email client read
- `bird.email.get_stats_by_complaint_type` Get complaints by type read
- `bird.email.get_stats_by_location` Get engagement by location read
- `bird.email.get_stats_by_mailbox_provider` Get statistics by mailbox provider read
- `bird.email.get_stats_by_mailbox_provider_region` Get statistics by mailbox provider region read
- `bird.email.get_stats_by_recipient_domain` Get statistics by recipient domain read
- `bird.email.get_stats_by_sending_domain` Get statistics by sending domain read
- `bird.email.get_stats_by_sending_ip` Get statistics by sending IP read
- `bird.email.get_stats_by_tag` Get statistics by tag read
- `bird.email.get_stats_by_template` Get statistics by template read
- `bird.email.get_stats_daily` Get daily sending statistics read
- `bird.email.get_stats_hourly` Get hourly sending statistics read
- `bird.email.get_stats_query` Query email delivery and engagement metrics read
- `bird.email.get_stats_summary` Get aggregate email statistics read
- `bird.email.get_suppression` Get an email suppression read
- `bird.email.get_template` Get an email template read
- `bird.email.get_template_language` Get one language of a version read
- `bird.email.get_template_parameters` Get published email template parameters read
- `bird.email.get_template_preview` Get an email template preview read
- `bird.email.get_template_version` Get an email template version read
- `bird.email.get_thread` Get a thread read
- `bird.email.get_thread_message` Get a message in a thread read
- `bird.email.get_thread_message_body` Get a thread message's original body read
- `bird.email.list_broadcast_clicked_links` List a broadcast's clicked links read
- `bird.email.list_broadcast_events` List events for a broadcast read
- `bird.email.list_broadcast_recipients` List recipients of a broadcast read
- `bird.email.list_broadcasts` List broadcasts read
- `bird.email.list_domain_events` List domain events read
- `bird.email.list_domains` List sending domains read
- `bird.email.list_inbound_addresses` List inbound addresses read
- `bird.email.list_inbound_message_attachments` List a received email's attachments read
- `bird.email.list_inbound_messages` List received emails read
- `bird.email.list_inbound_routes` List inbound routes read
- `bird.email.list_mailbox_labels` List a mailbox's labels read
- `bird.email.list_mailbox_messages` List a mailbox's messages read
- `bird.email.list_mailbox_receive_rules` List receive rules read
- `bird.email.list_mailbox_scheduled_messages` List scheduled mailbox sends read
- `bird.email.list_mailboxes` List mailboxes read
- `bird.email.list_message_events` List events for a message read
- `bird.email.list_message_recipients` List recipients of a message read
- `bird.email.list_messages` List messages read
- `bird.email.list_smtp_configs` List SMTP configs read
- `bird.email.list_suppressions` List email suppressions read
- `bird.email.list_template_broadcasts` List the broadcasts blocking a template delete read
- `bird.email.list_template_version_languages` List a version's languages read
- `bird.email.list_template_versions` List email template versions read
- `bird.email.list_templates` List email templates read
- `bird.email.list_thread_message_attachments` List a thread message's attachments read
- `bird.email.list_thread_messages` List messages in a thread read
- `bird.email.list_threads` List threads read
- `bird.email.preview_broadcast` Preview a broadcast for a contact read
- `bird.email.release_tracking_domain` Release link tracking configuration destructive
- `bird.email.reply_thread_message` Reply to a thread message write
- `bird.email.restore_mailbox` Restore a deleted mailbox write
- `bird.email.resume_mailbox` Resume a suspended mailbox write
- `bird.email.rollback_template` Roll back an email template write
- `bird.email.search_competitive_brands` Search brands to add to the watchlist read
- `bird.email.send_broadcast` Send a broadcast write
- `bird.email.send_broadcast_test` Send a rendered broadcast test write
- `bird.email.share_domain_dns_records` Share a domain's DNS records by email write
- `bird.email.submit_template_version` Submit an email template version write
- `bird.email.update_broadcast` Update a broadcast write
- `bird.email.update_domain` Update a sending domain write
- `bird.email.update_inbound_address` Update an inbound address write
- `bird.email.update_inbound_route` Update an inbound route write
- `bird.email.update_inbox_insights_domain` Switch Inbox Insights on or off for a sending domain write
- `bird.email.update_mailbox` Update a mailbox write
- `bird.email.update_smtp_config` Update the SMTP config for an API key write
- `bird.email.update_template` Update an email template write
- `bird.email.update_template_language` Update one language of a draft write
- `bird.email.update_thread` Update a thread write
- `bird.email.update_thread_message` Update a message in a thread write
- `bird.email.upsert_inbox_insights_domain_monitoring` Switch Inbox Insights on for the workspace's main sending domain write
- `bird.email.upsert_template_language` Upsert one language of a draft write
- `bird.email.validate_broadcast` Validate a broadcast read
- `bird.email.verify_domain` Verify a domain write

**Whatsapp 73**

- `bird.whatsapp.approve_group_join_requests` Approve WhatsApp group join requests write
- `bird.whatsapp.create_agent_notification` Send an agent a notification write
- `bird.whatsapp.create_group` Create a WhatsApp group write
- `bird.whatsapp.create_group_pinned_message` Pin a message in a WhatsApp group write
- `bird.whatsapp.create_keyword_rule` Create a WhatsApp keyword rule write
- `bird.whatsapp.create_message` Send a WhatsApp message write
- `bird.whatsapp.create_suppression` Create a WhatsApp suppression write
- `bird.whatsapp.create_template` Create a message template write
- `bird.whatsapp.create_template_draft` Create a template draft write
- `bird.whatsapp.delete_group` Delete a WhatsApp group destructive
- `bird.whatsapp.delete_group_participant` Remove a participant from a WhatsApp group destructive
- `bird.whatsapp.delete_group_pinned_message` Unpin a message in a WhatsApp group destructive
- `bird.whatsapp.delete_keyword_rule` Delete a WhatsApp keyword rule destructive
- `bird.whatsapp.delete_message_reaction` Remove your reaction from a WhatsApp message destructive
- `bird.whatsapp.delete_suppression` End a WhatsApp suppression destructive
- `bird.whatsapp.delete_template` Delete a message template destructive
- `bird.whatsapp.delete_template_language` Delete a language from the draft destructive
- `bird.whatsapp.delete_template_version` Delete a template's open draft destructive
- `bird.whatsapp.discard_template_language_edits` Discard a language's draft edits back to its submitted copy destructive
- `bird.whatsapp.duplicate_template` Duplicate a message template write
- `bird.whatsapp.get_agent_notification` Get a notification sent to an agent read
- `bird.whatsapp.get_business_account` Get a WhatsApp Business Account read
- `bird.whatsapp.get_conversation` Get a WhatsApp conversation read
- `bird.whatsapp.get_conversation_message` Get a message in a WhatsApp conversation read
- `bird.whatsapp.get_group` Get a WhatsApp group read
- `bird.whatsapp.get_inbound_stats_by_phone_number` Get inbound WhatsApp statistics by phone number read
- `bird.whatsapp.get_inbound_stats_daily` Get daily inbound WhatsApp statistics read
- `bird.whatsapp.get_inbound_stats_hourly` Get hourly inbound WhatsApp statistics read
- `bird.whatsapp.get_inbound_stats_summary` Get aggregate inbound WhatsApp statistics read
- `bird.whatsapp.get_keyword_rule` Get a WhatsApp keyword rule read
- `bird.whatsapp.get_message` Get a WhatsApp message read
- `bird.whatsapp.get_number` Get a WhatsApp number read
- `bird.whatsapp.get_number_profile` Get a WhatsApp number's business profile read
- `bird.whatsapp.get_stats_by_country` Get outbound WhatsApp statistics by country read
- `bird.whatsapp.get_stats_by_error_code` Get outbound WhatsApp statistics by error code read
- `bird.whatsapp.get_stats_by_phone_number` Get outbound WhatsApp statistics by phone number read
- `bird.whatsapp.get_stats_by_tag` Get outbound WhatsApp statistics by tag read
- `bird.whatsapp.get_stats_by_template` Get outbound WhatsApp statistics by template read
- `bird.whatsapp.get_stats_by_template_category` Get outbound WhatsApp statistics by template category read
- `bird.whatsapp.get_stats_daily` Get daily outbound WhatsApp statistics read
- `bird.whatsapp.get_stats_hourly` Get hourly outbound WhatsApp statistics read
- `bird.whatsapp.get_stats_summary` Get aggregate outbound WhatsApp statistics read
- `bird.whatsapp.get_suppression` Get a WhatsApp suppression read
- `bird.whatsapp.get_template` Get a message template read
- `bird.whatsapp.get_template_version` Get a template version read
- `bird.whatsapp.get_template_version_language` Get a version's language read
- `bird.whatsapp.list_agent_notifications` List the notifications sent to your agents read
- `bird.whatsapp.list_business_accounts` List WhatsApp Business Accounts read
- `bird.whatsapp.list_conversation_events` List WhatsApp conversation events read
- `bird.whatsapp.list_conversation_messages` List messages in a WhatsApp conversation read
- `bird.whatsapp.list_conversations` List WhatsApp conversations read
- `bird.whatsapp.list_group_join_requests` List a WhatsApp group's join requests read
- `bird.whatsapp.list_groups` List WhatsApp groups read
- `bird.whatsapp.list_keyword_rules` List WhatsApp keyword rules read
- `bird.whatsapp.list_message_events` List events for a WhatsApp message read
- `bird.whatsapp.list_message_reaction_events` List reaction events for a WhatsApp message read
- `bird.whatsapp.list_messages` List WhatsApp messages read
- `bird.whatsapp.list_number_events` List WhatsApp number events read
- `bird.whatsapp.list_numbers` List WhatsApp numbers read
- `bird.whatsapp.list_suppressions` List WhatsApp suppressions read
- `bird.whatsapp.list_template_version_languages` List a version's languages read
- `bird.whatsapp.list_template_versions` List a template's versions read
- `bird.whatsapp.list_templates` List available message templates read
- `bird.whatsapp.reject_group_join_requests` Reject WhatsApp group join requests write
- `bird.whatsapp.rotate_group_invite_link` Rotate a WhatsApp group's invite link destructive
- `bird.whatsapp.send_read_receipt` Mark a WhatsApp message as read write
- `bird.whatsapp.submit_template_version` Submit a template version for review write
- `bird.whatsapp.update_conversation` Update a WhatsApp conversation write
- `bird.whatsapp.update_group` Update a WhatsApp group write
- `bird.whatsapp.update_keyword_rule` Update a WhatsApp keyword rule write
- `bird.whatsapp.update_template` Update a message template write
- `bird.whatsapp.upsert_message_reaction` React to a WhatsApp message write
- `bird.whatsapp.upsert_template_language` Upsert a language's content write

**Amb 53**

- `bird.amb.create_business_account` Create an Apple Messages for Business record write
- `bird.amb.create_business_account_submission` Submit an Apple Messages for Business business for review write
- `bird.amb.create_conversation_typing` Send a typing indicator write
- `bird.amb.create_message` Send a message write
- `bird.amb.create_routing_rule` Create an Apple Messages for Business routing rule write
- `bird.amb.create_suppression` Create an Apple Messages for Business suppression write
- `bird.amb.delete_business_account` Disconnect an Apple business account destructive
- `bird.amb.delete_routing_rule` Delete an Apple Messages for Business routing rule destructive
- `bird.amb.delete_suppression` End an Apple Messages for Business suppression destructive
- `bird.amb.get_business_account` Get an Apple Messages for Business record read
- `bird.amb.get_channel_settings` Get Apple Messages for Business channel settings read
- `bird.amb.get_conversation` Get a conversation read
- `bird.amb.get_conversation_stats_daily` Get daily Apple Messages for Business conversation statistics read
- `bird.amb.get_conversation_stats_hourly` Get hourly Apple Messages for Business conversation statistics read
- `bird.amb.get_conversation_stats_summary` Get aggregate Apple Messages for Business conversation statistics read
- `bird.amb.get_inbound_stats_by_business` Get inbound Apple Messages for Business statistics by business read
- `bird.amb.get_inbound_stats_by_intent` Get inbound Apple Messages for Business statistics by intent read
- `bird.amb.get_inbound_stats_daily` Get daily inbound Apple Messages for Business statistics read
- `bird.amb.get_inbound_stats_hourly` Get hourly inbound Apple Messages for Business statistics read
- `bird.amb.get_inbound_stats_summary` Get aggregate inbound Apple Messages for Business statistics read
- `bird.amb.get_message` Get a message read
- `bird.amb.get_routing_rule` Get an Apple Messages for Business routing rule read
- `bird.amb.get_stats_by_business` Get outbound Apple Messages for Business statistics by business read
- `bird.amb.get_stats_by_category` Get outbound Apple Messages for Business statistics by category read
- `bird.amb.get_stats_by_error_code` Get outbound Apple Messages for Business statistics by error code read
- `bird.amb.get_stats_by_group` Get outbound Apple Messages for Business statistics by group read
- `bird.amb.get_stats_by_intent` Get outbound Apple Messages for Business statistics by intent read
- `bird.amb.get_stats_by_message_kind` Get outbound Apple Messages for Business statistics by message kind read
- `bird.amb.get_stats_by_tag` Get outbound Apple Messages for Business statistics by tag read
- `bird.amb.get_stats_daily` Get daily outbound Apple Messages for Business statistics read
- `bird.amb.get_stats_hourly` Get hourly outbound Apple Messages for Business statistics read
- `bird.amb.get_stats_summary` Get aggregate outbound Apple Messages for Business statistics read
- `bird.amb.get_suppression` Get an Apple Messages for Business suppression read
- `bird.amb.get_template` Get an Apple Messages template read
- `bird.amb.get_template_version` Get an Apple Messages template version read
- `bird.amb.get_template_version_language` Get an Apple Messages template version's language read
- `bird.amb.list_business_account_events` List Apple business account events read
- `bird.amb.list_business_account_submissions` List Apple Messages for Business submissions read
- `bird.amb.list_business_accounts` List Apple Messages for Business records read
- `bird.amb.list_conversation_messages` List messages in a conversation read
- `bird.amb.list_conversations` List conversations read
- `bird.amb.list_message_events` List events for a message read
- `bird.amb.list_messages` List messages read
- `bird.amb.list_routing_rules` List Apple Messages for Business routing rules read
- `bird.amb.list_suppressions` List Apple Messages for Business suppressions read
- `bird.amb.list_template_version_languages` List an Apple Messages template version's languages read
- `bird.amb.list_template_versions` List an Apple Messages template's versions read
- `bird.amb.list_templates` List Apple Messages templates read
- `bird.amb.restore_business_account` Reconnect an Apple business account write
- `bird.amb.update_business_account` Update an Apple Messages for Business record write
- `bird.amb.update_channel_settings` Update Apple Messages for Business channel settings write
- `bird.amb.update_conversation` Update a conversation write
- `bird.amb.update_routing_rule` Update an Apple Messages for Business routing rule write

**SMS 41**

- `bird.sms.create_keyword_rule` Create an SMS keyword rule write
- `bird.sms.create_message` Create an SMS message write
- `bird.sms.create_message_batch` Create a batch of SMS messages write
- `bird.sms.create_suppression` Create an SMS suppression write
- `bird.sms.create_workspace_sender` Create an SMS sender write
- `bird.sms.create_workspace_sender_registration` Create a sender registration for a country write
- `bird.sms.delete_keyword_rule` Delete an SMS keyword rule destructive
- `bird.sms.delete_suppression` Delete an SMS suppression destructive
- `bird.sms.get_inbound_stats_by_country` Get inbound SMS statistics by country read
- `bird.sms.get_inbound_stats_by_number` Get inbound SMS statistics by number read
- `bird.sms.get_inbound_stats_by_operator` Get inbound SMS statistics by operator read
- `bird.sms.get_inbound_stats_daily` Get daily inbound SMS statistics read
- `bird.sms.get_inbound_stats_hourly` Get hourly inbound SMS statistics read
- `bird.sms.get_inbound_stats_summary` Get aggregate inbound SMS statistics read
- `bird.sms.get_keyword_rule` Get an SMS keyword rule read
- `bird.sms.get_message` Get an SMS message read
- `bird.sms.get_stats_by_carrier` Get outbound SMS statistics by carrier read
- `bird.sms.get_stats_by_category` Get outbound SMS statistics by category read
- `bird.sms.get_stats_by_country` Get outbound SMS statistics by country read
- `bird.sms.get_stats_by_error_code` Get outbound SMS statistics by error code read
- `bird.sms.get_stats_by_originator` Get outbound SMS statistics by originator read
- `bird.sms.get_stats_by_status` Get outbound SMS statistics by status read
- `bird.sms.get_stats_by_tag` Get outbound SMS statistics by tag read
- `bird.sms.get_stats_daily` Get daily outbound SMS statistics read
- `bird.sms.get_stats_hourly` Get hourly outbound SMS statistics read
- `bird.sms.get_stats_summary` Get aggregate outbound SMS statistics read
- `bird.sms.get_suppression` Get an SMS suppression read
- `bird.sms.get_template` Get an SMS template read
- `bird.sms.get_template_version` Get an SMS template version read
- `bird.sms.get_template_version_language` Get an SMS template version's language read
- `bird.sms.get_workspace_sender` Get an SMS sender read
- `bird.sms.list_keyword_rules` List SMS keyword rules read
- `bird.sms.list_message_events` List events for an SMS message read
- `bird.sms.list_messages` List SMS messages read
- `bird.sms.list_suppressions` List SMS suppressions read
- `bird.sms.list_template_version_languages` List an SMS template version's languages read
- `bird.sms.list_template_versions` List an SMS template's versions read
- `bird.sms.list_templates` List SMS templates read
- `bird.sms.list_workspace_sender_requirements` List what a sender needs to send read
- `bird.sms.list_workspace_senders` List your SMS senders read
- `bird.sms.update_keyword_rule` Update an SMS keyword rule write

**Esim 38**

- `bird.esim.cancel_order` Cancel an unfunded order destructive
- `bird.esim.cancel_recurring_subscription` Cancel recurring eSIM renewal destructive
- `bird.esim.create_assignment` Assign an eSIM to a person write
- `bird.esim.create_install_link` Create a hosted install link write
- `bird.esim.create_order` Order a data package write
- `bird.esim.create_recurring_subscription` Create a recurring eSIM subscription write
- `bird.esim.create_subscriber` Create an eSIM subscriber write
- `bird.esim.delete_install_link` Revoke a hosted install link destructive
- `bird.esim.delete_package` Remove a data package destructive
- `bird.esim.deliver_credentials` Send install credentials to the traveler write
- `bird.esim.get` Get an eSIM read
- `bird.esim.get_assignment` Get an eSIM assignment read
- `bird.esim.get_credentials` Get eSIM install credentials read
- `bird.esim.get_offer` Get an eSIM offer read
- `bird.esim.get_offer_checkout_options` Get eSIM checkout options read
- `bird.esim.get_offer_recurrence` Get recurring eSIM offer terms read
- `bird.esim.get_offer_requirements` Get country identification requirements for an eSIM offer read
- `bird.esim.get_order` Get an order read
- `bird.esim.get_package` Get a data package read
- `bird.esim.get_recurring_subscription` Get a recurring eSIM subscription read
- `bird.esim.get_settings` Get the eSIM settings read
- `bird.esim.get_subscriber` Get an eSIM subscriber read
- `bird.esim.get_zone` Get an eSIM coverage zone read
- `bird.esim.list` List eSIMs read
- `bird.esim.list_compatible_offers` List offers an eSIM can take read
- `bird.esim.list_deliveries` List an eSIM's credential deliveries read
- `bird.esim.list_offers` List eSIM offers read
- `bird.esim.list_orders` List orders read
- `bird.esim.list_packages` List an eSIM's data packages read
- `bird.esim.list_recurring_periods` List recurring eSIM periods read
- `bird.esim.list_recurring_subscriptions` List recurring eSIM subscriptions read
- `bird.esim.list_subscribers` List eSIM subscribers read
- `bird.esim.list_zones` List eSIM coverage zones read
- `bird.esim.release` Release an eSIM destructive
- `bird.esim.resume` Resume an eSIM write
- `bird.esim.suspend` Suspend an eSIM write
- `bird.esim.update` Update an eSIM write
- `bird.esim.update_settings` Update the eSIM settings write

**Voice 27**

- `bird.voice.create_call` Create a call write
- `bird.voice.create_session_credential` Create an SIP session credential write
- `bird.voice.create_trunk` Create an SIP trunk write
- `bird.voice.create_trunk_gateway` Create a gateway on an SIP trunk write
- `bird.voice.create_verified_number` Create a verified number write
- `bird.voice.delete_trunk` Delete an SIP trunk destructive
- `bird.voice.delete_trunk_gateway` Delete an SIP trunk gateway destructive
- `bird.voice.delete_verified_number` Delete a verified number destructive
- `bird.voice.get_leg` Get a leg read
- `bird.voice.get_number` Get a voice number read
- `bird.voice.get_settings` Get the voice settings read
- `bird.voice.get_trunk` Get an SIP trunk read
- `bird.voice.get_trunk_gateway` Get an SIP trunk gateway read
- `bird.voice.get_verified_number` Get a verified number read
- `bird.voice.list_destinations` List Voice destination countries read
- `bird.voice.list_legs` List legs read
- `bird.voice.list_numbers` List the numbers you can use for voice read
- `bird.voice.list_trunk_gateways` List an SIP trunk's gateways read
- `bird.voice.list_trunks` List SIP trunks read
- `bird.voice.list_verified_numbers` List verified numbers read
- `bird.voice.update_destinations` Update enabled Voice destination countries write
- `bird.voice.update_number` Update a voice number write
- `bird.voice.update_settings` Update the voice settings write
- `bird.voice.update_trunk` Update an SIP trunk write
- `bird.voice.update_trunk_gateway` Update an SIP trunk gateway write
- `bird.voice.update_verified_number` Update a verified number write
- `bird.voice.verify_verified_number` Verify number ownership write

**Realtime 16**

- `bird.realtime.create_app` Create a Realtime app write
- `bird.realtime.create_app_key` Create a Realtime app key write
- `bird.realtime.delete_app` Delete a Realtime app destructive
- `bird.realtime.disconnect_app_member` Disconnect a member destructive
- `bird.realtime.get_app` Get a Realtime app read
- `bird.realtime.get_app_channel` Get a Realtime channel read
- `bird.realtime.list_app_channel_members` List members on a presence channel read
- `bird.realtime.list_app_channels` List Realtime channels read
- `bird.realtime.list_app_keys` List a Realtime app's keys read
- `bird.realtime.list_apps` List Realtime apps read
- `bird.realtime.list_regions` List Realtime regions read
- `bird.realtime.publish_app_batch` Publish a batch of Realtime events write
- `bird.realtime.publish_app_event` Publish a Realtime event write
- `bird.realtime.revoke_app_key` Revoke a Realtime app key destructive
- `bird.realtime.send_app_member_event` Send an event to a member write
- `bird.realtime.update_app` Update a Realtime app write

**Audiences 11**

- `bird.audiences.assign_contacts` Assign contacts to an audience write
- `bird.audiences.create` Create an audience write
- `bird.audiences.delete` Delete an audience destructive
- `bird.audiences.get` Get an audience read
- `bird.audiences.get_membership` Get audience membership read
- `bird.audiences.get_membership_statistics` Get audience membership statistics read
- `bird.audiences.list` List audiences read
- `bird.audiences.list_contacts` List an audience's contacts read
- `bird.audiences.unassign_contact` Unassign a contact from an audience destructive
- `bird.audiences.unassign_contacts` Unassign contacts from an audience destructive
- `bird.audiences.update` Update an audience write

**Compliance 11**

- `bird.compliance.create_identity` Create an identity write
- `bird.compliance.create_workspace_submission` Create a registration submission write
- `bird.compliance.delete_attachment` Delete a registration attachment destructive
- `bird.compliance.delete_identity` Delete an identity destructive
- `bird.compliance.get_identity` Get an identity read
- `bird.compliance.get_workspace_requirements` Get what a registration needs read
- `bird.compliance.get_workspace_submission` Get a submission read
- `bird.compliance.list_attachments` List registration attachments read
- `bird.compliance.list_identities` List identities read
- `bird.compliance.update_identity` Update an identity name write
- `bird.compliance.update_workspace_submission` Update compliance answers write

**Numbers 10**

- `bird.numbers.cancel` Cancel a dedicated number destructive
- `bird.numbers.create_order` Create a number order write
- `bird.numbers.get` Get an allocated number read
- `bird.numbers.get_available` Get an available phone number read
- `bird.numbers.get_order` Get a number order read
- `bird.numbers.list` List your allocated numbers read
- `bird.numbers.list_available` List available phone numbers read
- `bird.numbers.list_orders` List your number orders read
- `bird.numbers.release` Release a dedicated number destructive
- `bird.numbers.update` Update an allocated number write

**Webhooks 9**

- `bird.webhooks.create` Create a webhook endpoint write
- `bird.webhooks.create_replay` Replay failed deliveries write
- `bird.webhooks.delete` Delete a webhook endpoint destructive
- `bird.webhooks.get` Get a webhook endpoint read
- `bird.webhooks.list` List webhook endpoints read
- `bird.webhooks.list_attempts` List delivery attempts read
- `bird.webhooks.rotate_secret` Rotate webhook signing secret destructive
- `bird.webhooks.test` Test a webhook with a sample event write
- `bird.webhooks.update` Update a webhook endpoint write

**Contacts 7**

- `bird.contacts.create` Create a contact write
- `bird.contacts.create_batch` Create or update contacts in bulk write
- `bird.contacts.delete` Delete a contact destructive
- `bird.contacts.get` Get a contact read
- `bird.contacts.list` List contacts read
- `bird.contacts.list_preferences` List a contact's preferences read
- `bird.contacts.update` Update a contact write

**Contact properties 6**

- `bird.contact_properties.archive` Archive a contact property write
- `bird.contact_properties.create` Create a contact property write
- `bird.contact_properties.get` Get a contact property read
- `bird.contact_properties.list` List contact properties read
- `bird.contact_properties.unarchive` Unarchive a contact property write
- `bird.contact_properties.update` Update a contact property write

**Asset folders 5**

- `bird.asset_folders.create` Create a folder in the media library write
- `bird.asset_folders.delete` Delete a folder and move its contents up destructive
- `bird.asset_folders.get` Get a media-library folder by ID read
- `bird.asset_folders.list` List workspace media-library folders read
- `bird.asset_folders.update` Rename or move a media-library folder write

**Assets 5**

- `bird.assets.delete` Remove an asset from the media library destructive
- `bird.assets.get` Get a media-library asset by ID read
- `bird.assets.list` List workspace media-library assets read
- `bird.assets.list_references` List editable resources that use an asset read
- `bird.assets.update` Update asset metadata or folder placement write

**Lookup 5**

- `bird.lookup.get_email_lookup` Get an email address lookup by URL read
- `bird.lookup.get_phone_number_lookup` Get a phone number lookup by URL read
- `bird.lookup.lookup_email` Create an email address lookup write
- `bird.lookup.lookup_email_batch` Create a batch of email address lookups write
- `bird.lookup.lookup_phone_number` Create a phone number lookup write

**Preferences 4**

- `bird.preferences.create` Record a preference write
- `bird.preferences.delete` Delete a preference destructive
- `bird.preferences.get` Get a preference read
- `bird.preferences.list` List preferences read

**Organization 3**

- `bird.organization.create_workspace` Create a workspace write
- `bird.organization.get_billing_resolved_price` Get the effective price for a product read
- `bird.organization.list_billing_wallets` List wallets read

**Verify 3**

- `bird.verify.create_verification` Create a verification write
- `bird.verify.create_verification_check` Create a verification passcode check write
- `bird.verify.create_verification_next_channel` Create the next verification channel attempt write

**Docs 2**

- `bird.docs.get_page` Get a documentation page read
- `bird.docs.get_search` Get documentation search results read

**Workspace 2**

- `bird.workspace.get_current` Get the current workspace read
- `bird.workspace.list_quotas` List workspace quotas read

Questions

## The Bird MCP server, answered.

**Is there a Bird MCP server for Claude?**

Yes. actionlake is an MCP gateway: a remote MCP server that gives Claude, or another MCP client, 471 Bird actions across email, whatsapp, amb and SMS, through the same eight tools it uses for every other connector. actionlake is independent; it is not made or endorsed by Bird.

**What do I need to connect Bird?**

Bird API key: a workspace key (bk_[region]_…) or an organization master key (bm_[region]_…). Plus your organization id, your region and your workspace id. The free call account { op: "connections.requirements", service: "bird" } lists exactly what to paste.

**Can an AI agent delete or change things in Bird?**

Only if its key allows it, and only with an explicit confirmation. 57 Bird actions are destructive, including delete an audience, delete a sending domain and delete a mailbox. Each runs only with confirm: true. Under the human confirm policy, or an approval rule on the key, the run waits until a named person approves it.

**Will an AI agent use up my Bird API limit?**

actionlake paces every call to the limits in the Bird service file: 600 calls a minute per connection. Repeated reads are answered from cache (263 Bird actions can be), which never reaches Bird.

**What does a Bird action cost?**

One upstream call, the only unit actionlake bills. A list that pages bills one call per page (471 Bird actions page). Cache hits, searches, dry runs and calls Bird refused with 401, 403, 429 or a 5xx are free. The Free plan includes 100,000 calls a month with no card. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.

**Which Bird API does it cover?**

The Bird API 1.0.0 at your region's bird.com address, set when you connect. It is built from Bird's documentation as read on 23 October 2026. 471 actions in 21 areas, each one in the signed service file (version 1.0.0).

**Can I combine Bird with my other systems?**

Yes. ask joins Bird to HaloPSA or NetSuite on the same customer and returns the answer rather than every row. Bird maps crm.contact, which 192 other connectors also map.

**Does actionlake keep my Bird data, and where?**

actionlake processes and stores data in Sydney, Australia; there is no US region yet. Reads may be cached for up to 5 minutes, and a write clears the reads it affects. Each run's request and response is kept, sealed, for your plan's trace window: 1 day on Free, 3 days on Starter, 7 days on Pro, 14 days on Team, 30 days on Business and 30 days on Enterprise. Your Bird credential is sealed under your tenant's key, never logged and never returned. Your traffic is not used to train models.

**Which AI clients can use it?**

Claude Code, tested by us end to end, and the Claude app as a custom connector, tested by us with an existing key. Other MCP clients that support remote servers over Streamable HTTP (MCP revisions 2025-06-18 and 2025-11-25) and OAuth dynamic client registration, or a bearer header, should connect the same way; we have not tested them. Or plain REST, under the same action names.

## More connectors like Bird

Shares the most action names with

- [Elastic Email 40](https://actionlake.com/connectors/elastic-email)
- [Resend 38](https://actionlake.com/connectors/resend)
- [Mailtrap 37](https://actionlake.com/connectors/mailtrap)
- [Sinch Mailjet 32](https://actionlake.com/connectors/sinch-mailjet)
- [Dotdigital 29](https://actionlake.com/connectors/dotdigital)
- [SparkPost 24](https://actionlake.com/connectors/sparkpost)

Joins with, on shared entities

- [Brevo 3](https://actionlake.com/connectors/brevo)
- [ActiveCampaign 2](https://actionlake.com/connectors/activecampaign)
- [Reply.io 2](https://actionlake.com/connectors/reply-io)
- [Outreach 2](https://actionlake.com/connectors/outreach)
- [Nutshell CRM 2](https://actionlake.com/connectors/nutshell-crm)
- [ZoomInfo 2](https://actionlake.com/connectors/zoominfo)

Browse

- [All Email & messaging connectors](https://actionlake.com/connectors/category/email-and-messaging)
- [All connectors](https://actionlake.com/connectors)
- [How actionlake compares](https://actionlake.com/compare)

actionlake is independent. It is not made or endorsed by Bird; the name is the vendor's own. Counts are from the Bird service file, version 1.0.0.

## Give your agent Bird today.

[Connect Bird free](https://actionlake.com/console?start=sandbox) [See pricing](https://actionlake.com/pricing)

Start free - 100,000 calls/month, no card. No signup. Hard caps on every key. Cached answers are free.

---

Source: https://actionlake.com/connectors/bird
More: https://actionlake.com/llms.txt
