com.blooio/mcp · v4.1.0 · communication
Blooio is healthy: it completed an MCP handshake in 616 ms and exposes 120 tools.
Send and receive iMessage, SMS, RCS, and WhatsApp, and manage contacts, chats, and numbers.
Endpoint: https://mcp.blooio.com/v4 (streamable-http)
Repository · Website · JSON · Add to my inventory
| Users (last 30 days) | 0 |
| Handshake | Healthy |
| Auth needed | None |
| Tool count | 120 |
| Latency | 616 ms |
| Last checked (UTC) | 2026-10-31T01:15:21.390Z |
| Checked (UTC) | Status | Latency | Error |
|---|---|---|---|
| 2026-10-31T01:15:21.390Z | Healthy | 616 |
me | Get the authenticated account Returns the authenticated organization, linked devices/numbers, usage, and API key validity. |
get_my_default_priority | Get the key's default priority Returns the calling API key's default channel priority, or `{ "data": null }` when none is configured (in which case the agnostic send falls back to the implicit Blooio pool of the key's own numbers). |
list_numbers | List sender numbers Lists the phone numbers / sender addresses available to this API key. Banned and suspended numbers stay in the list. `status` is `banned`, `suspended`, or `active`; a ban takes precedence when both apply. `is_active` is false when the line is banned, suspended, or the underlying |
get_contact_card | Get a number's contact card |
update_contact_card | Update a number's contact card Updates the contact card (name, avatar, sharing settings) shared from this number. At least one field is required. |
upload_contact_card_avatar | Upload a contact card avatar Uploads an avatar image for the number's contact card. Max 10MB. |
request_call_forwarding | Request call forwarding Opens a support ticket to forward calls from an owned dedicated or inbound Blooio number. The destination must be a US E.164 number. Shared or foreign source numbers are rejected. Forwarding isn't instant: check its progress with `GET /tickets/{ticket_id}` using the returned |
list_location_contacts | List Find My contacts Lists Find My friends sharing their location with the linked Apple account. |
refresh_location_contacts | Refresh Find My locations Forces a refresh of Find My location data from the device. |
get_location_contact | Get one Find My contact |
list_channels | List channels Lists messaging channels for the organization. Ordinary sends do not require a channel id; use this endpoint to inspect capabilities or obtain an exact channel id for advanced integrations. |
list_available_blooio_numbers | List available Blooio numbers Browse Blooio number inventory available to purchase. `type=shared` returns available shared lines; `type=dedicated` returns unassigned dedicated inventory. When one or more `area_code` values are supplied with `type=dedicated` or `type=inbound`, the response is an are |
purchase_blooio_numbers | Purchase Blooio numbers Purchase one or more Blooio lines. Purchases are asynchronous and billable: the call charges the organization's default payment method and returns a `purchase_id`; the lines are provisioned when Stripe confirms the invoice, at which point a `number.purchase.completed` webhoo |
get_blooio_purchase | Get purchase status Poll the status of an asynchronous number purchase by its `purchase_id`. Returns `pending`/`provisioning`, `completed` (with the provisioned allocations), or `failed`. Requires the `numbers:read` scope for OAuth apps. |
get_channel | Get a channel |
remove_blooio_number | Remove (unsubscribe) a Blooio number Removes/unsubscribes an owned Blooio line, cancelling its subscription — the same flow as the dashboard unsubscribe button. Accepts either the E.164 number or the `ch_` channel id as `{channel}`. A `reasons` array (why the customer is unsubscribing) is required; |
get_channel_capabilities | Get channel capabilities Returns supported protocols, content types, actions, and interactive features for a channel. |
get_channel_health | Get line health Messaging health for one dedicated or inbound Blooio line: its live safety state plus reply, delivery, and risk metrics over the trailing `days`. Built for polling. |
get_channel_settings | Get channel settings Per-channel settings for channel types that support them. `settings` and `available` are per channel type: Blooio (P2P numbers) exposes `auto_mark_read`, `auto_share_contact`, and `imessage_only`; Apple Messages for Business and WhatsApp Business expose `opener`; Blooio Voice e |
update_channel_settings | Update channel settings Partial update of a channel's settings (send only the keys you want to change). Keys are per channel type. Blooio (P2P numbers): `auto_mark_read` is available on dedicated and inbound lines; `auto_share_contact` is dedicated-only AND the line must have a contact card (name o |
update_channel_profile | Update channel profile Partial update of the channel profile (`display_name`, `about`, `email`, `avatar`). Stored under `metadata.profile` and returned on `GET /channels/{channel}`. Null or empty string clears a field. Unknown keys are rejected. This writes Blooio metadata only; it does not push a |
send_message_to_channel | Send a message on a specific channel Channel-scoped equivalent of `POST /messages` with an explicit `from`: `:channel` accepts the same phone number (URL-encode `+` as `%2B`), alias, or `ch_...` value `from` accepts, and the body omits `from`. Multiple recipients on a group-capable channel (blooio/ |
list_priorities | List priorities Lists channel priorities owned by the calling API key. |
create_priority | Create a priority Creates a channel priority. Channels sharing a `priority` (and type) form a pool; ascending priority is the send-time waterfall. The first priority created for a key becomes its default unless `is_default: false` is set. |
get_priority | Get a priority |
update_priority | Update a priority Updates a priority's name, default flag, and/or channel set. When `channels` is supplied it replaces the priority's channels wholesale. |
delete_priority | Delete a priority |
list_contacts | List contacts Lists contacts. Cursor pagination is the default. Supplying `offset`, `q`, `tag`, `sort`, or `filter` switches to offset pagination and includes `pagination.total`. |
create_contact | Create a contact Creates a contact, optionally with one identity (phone/email on a channel type). |
get_contact | Get a contact |
update_contact | Update a contact |
delete_contact | Delete a contact Soft-deletes a contact and its identities. |
merge_contact | Merge a contact Collapses two auto-created contacts for the same person into one. The survivor is the `{contactId}` in the path; the `source_contact_id` in the body is absorbed into it. Every identity on the source is re-parented onto the survivor, tags are unioned, the survivor keeps its own name |
list_contact_identities | List contact identities |
add_contact_identity | Attach an identity Attaches a phone/email identity (on a channel type) to a contact. |
update_contact_identity | Update an identity Renames a contact identity in place. An optional name updates the parent contact in the same request. |
remove_contact_identity | Detach an identity |
get_contact_capabilities | Get contact capabilities Returns per-identity reachability/capabilities (iMessage/SMS/RCS, etc.) for a contact. For iMessage (blooio) identities this is a LIVE per-number lookup performed by an active iMessage channel — the request is rejected with 409 if the API key has no active iMessage (blooio) |
get_contact_timeline | Get contact timeline A single, chronological cross-channel activity feed for a contact, unifying every conversation the contact takes part in — both 1:1 chats keyed on the contact's identities and group chats where the contact is a current member — across all channel types. After a merge, the survi |
list_contact_tags | List contact tags |
add_contact_tags | Add contact tags |
remove_contact_tag | Remove a contact tag |
list_groups | List groups |
create_group | Create a group Creates a group chat on a group-capable channel (blooio/whatsapp) with one or more members. No iMessage conversation exists yet: the first message sent to the group opens it, and `chat_linked` becomes `true` once it does. There is no separate linking step. |
get_group | Get a group A group id that was merged into another group on its first send (see Create a group) returns the surviving group. Compare the returned `id` with the one you asked for to pick up the canonical id. |
update_group | Update a group |
delete_group | Delete a group |
list_group_members | List group members For a merged group id, lists the members of the surviving group. |
set_group_icon | Set group icon Uploads a group icon. Max 10MB; image/jpeg|png|gif|webp|heic|heif. Requires the group chat to be linked on a device. |
remove_group_icon | Remove group icon |
list_chats | List chats Lists conversations, most recent first. Filter by channel type, state, channel, or contact. |
create_chat | Find or create a chat Finds or creates a 1:1 chat with a recipient on a channel. Returns the chat (with `created` indicating whether it was newly created). |
get_chat | Get a chat The chat of a group that was merged into another group on its first send returns the surviving group's chat on the same number. |
update_chat | Update a chat Sets chat state (`open`/`closed`) on an Apple Messages for Business chat. Chats on every other channel return 422 `state_not_writable`: `closed` reflects the customer ending an Apple Messages for Business conversation, and no other protocol has an equivalent. |
set_typing | Start/stop typing indicator Shows or clears a business-to-customer typing indicator. Supported on Blooio channels and Apple Messages for Business. |
stop_typing | Stop typing indicator Clears the business-to-customer typing indicator. Supported on Blooio channels and Apple Messages for Business. |
mark_chat_read | Mark chat as read Sends a read receipt. Blooio channels only. |
share_contact_card | Share contact card Shares the sender's contact card into a chat. Blooio channels only. |
get_chat_focus | Read Focus status Reads whether the other person in the chat has notifications silenced by a Focus, as their device shares it over iMessage. `silenced` means new messages arrive quietly; to break through for a message you sent, use Notify Anyway. `unknown` means the device has no status for this pe |
send_poll | Send a poll Sends a native iMessage poll to a chat. Requires a title and 2+ options. Blooio channels only. |
vote_poll | Vote on a poll Casts or toggles a vote by `option_index` (0-based) or `option` text. Blooio channels only. |
get_poll_results | Get poll results |
get_chat_background | Get chat background Reads the chat's background image (Blooio channels). Reads live from the device. |
set_chat_background | Set chat background Uploads a chat background image. Max 10MB; image/jpeg|png|gif|webp|heic|heif. Blooio channels only. |
remove_chat_background | Remove chat background |
list_chat_messages | List chat messages Lists messages in a chat, newest first by default. Use `order=asc` for oldest first. |
send_chat_message | Send a message to a chat Sends a message into an existing chat. Both the sender channel and recipient are inferred from the chat, so `from` and `to` must not be supplied. Returns the message object at the top level (not wrapped in `data`). |
send_message | Send a message The primary endpoint for starting a message. The common send is entirely scalar: `{ "from": "+15551230001", "to": "+15551234567", "text": "Hello" }`. |
get_message | Get a message |
get_message_status | Get message status Lightweight delivery status of a message. |
list_message_events | List message events Lifecycle events for a message (sent, delivered, read, reactions, ...). |
add_reaction | React to a message Adds or removes a tapback reaction on any message in the chat — inbound (received) or outbound — addressed by the message `id` from the List messages endpoint. Use a `+` prefix to add and `-` to remove (e.g. `+love`, `-love`). Returns 404 if the message isn't in the chat and 409 |
notify_message | Notify Anyway Breaks through the recipient's Focus for a message you sent, the same as tapping Notify Anyway in Messages. Use it when Read Focus status reports `silenced`. Calling it again for a message that was already notified succeeds. It cannot be undone. Returns 404 if the message isn't in the |
list_webhooks | List webhooks |
create_webhook | Create a webhook Subscribes an HTTPS endpoint to events. Returns the signing secret once, on creation. |
list_webhook_versions | List webhook payload versions Every payload version a subscription can be set to, newest first, with what each one changed. New subscriptions default to the version marked `latest`. Set a subscription's version with `api_version` on create or update. |
get_webhook | Get a webhook |
update_webhook | Update a webhook Updates url, status (`active`/`disabled`), or the payload `api_version`. A version change applies to the next event delivered; deliveries already made, and replays of them, keep the version they were sent with. |
delete_webhook | Delete a webhook |
rotate_webhook_secret | Rotate webhook signing secret Rotates and returns a new signing secret (once). |
list_webhook_deliveries | List webhook deliveries Recent delivery attempts for a webhook. Also available at `/webhooks/{webhookId}/logs`. |
replay_webhook_delivery | Replay a webhook delivery Re-sends a past delivery. Also available at `/webhooks/{webhookId}/logs/{deliveryId}/replay`. |
list_events | List events Unified activity feed (message lifecycle, polls, groups, reactions, typing, payments, `safety.state_changed`, `safety.number_banned`). Filter by type, chat, or message. |
get_event | Get an event |
list_tickets | List tickets Lists the organization's support tickets, newest first. Includes call-forwarding requests opened with `POST /me/numbers/{number}/call-forwarding`. OAuth apps need `tickets:read`. |
create_ticket | Open a ticket Opens a support ticket for the Blooio team. Every ticket opens at `medium` priority; only Blooio support changes it, so sending `priority` returns `422 priority_not_allowed`. To request call forwarding, prefer `POST /me/numbers/{number}/call-forwarding`, which takes the destination as |
get_ticket | Get a ticket Returns one ticket. Poll this to check a call-forwarding request: its `forwarding.state` reads `pending`, `in_progress`, `completed`, or `failed`, and a closed ticket always reads `completed`. OAuth apps need `tickets:read`. |
update_ticket | Update a ticket's status Changes a ticket's status, for example to close a request you no longer need. Only `status` can change: `priority` is set by Blooio support and returns `422 priority_not_allowed`. Purchase, system, and billing tickets are managed by Blooio and return `403`. OAuth apps need |
list_ticket_comments | List ticket comments Lists a ticket's public comments, oldest first: the request itself, replies from Blooio support, and your replies. OAuth apps need `tickets:read`. |
add_ticket_comment | Reply to a ticket Adds a reply. A ticket waiting on you moves back to `in_progress`. Closed tickets and tickets whose `can_comment` is false return `403`. OAuth apps need `tickets:write`. |
lookup_phone_number | Look up a phone number Returns parsed info / geocoding for a phone number. Requires an enterprise plan. |
batch_lookup_phone_numbers | Batch phone number lookup Looks up up to 100 phone numbers. Requires an enterprise plan. |
decide_bloobability_v2 | Decide policies against a conversation Decides every policy you send against one conversation with Bloobability v2. Each result carries two calibrated numbers in [0, 1]: `probability` (the policy holds) and `answerable` (the conversation contains enough to judge it). There is no verdict and no thre |
list_org_numbers | List numbers Every number the organization rents from Blooio, newest first: iMessage lines and Blooio SMS and Blooio Voice numbers alike, one entry per number. `products` says what each does and `channels` lists the channel behind each product. OAuth apps need `numbers:read`. |
buy_numbers | Buy numbers Buy 1 to 10 US local numbers found with `GET /numbers/available`, with `products` turned on. The purchase finishes asynchronously: the response is a `provisioning` purchase, and `number.purchase.completed` or `number.purchase.failed` fires when it settles (or poll `GET /numbers/purchase |
search_available_numbers | Search available numbers US local numbers you can buy that support every product in `products`. Results are live inventory: a number can be taken between the search and the purchase. OAuth apps need `numbers:read`. |
get_number_purchase | Get a number purchase A purchase made with `POST /numbers`. Its numbers appear in `GET /numbers` once it's `completed`. OAuth apps need `numbers:read`. |
get_number | Get a number One of the organization's numbers, with its products and channels. OAuth apps need `numbers:read`. |
update_number | Update a number Turn a Blooio SMS or Blooio Voice number's products on and off, or assign its SMS channel to a 10DLC campaign. Turning `sms` off takes the number off its campaign. iMessage lines can't be changed here. OAuth apps need `numbers:manage`. |
release_number | Release a number Give a number up. A Blooio SMS or Blooio Voice number is released to the carrier at once and its channels retired; `number.removed` fires for each channel. An iMessage line is removed the same way as `DELETE /channels/{channel}`. OAuth apps need `numbers:manage`. |