Skip to main content

MCP tools and resources

The MCP server offers 11 tools and 2 resources. Each tool runs the public API with your credential, so its permissions, limits and sandbox rules are the API’s. These are the input schemas tools/list returns.

Sending rules​

Every sending tool’s description repeats these rules, so agents don’t trip the governor: Never message contacts who opted out. When the workspace requires consent, only contacts who opted in can be messaged. Sends outside 9 AM–8 PM in the contact’s local time are deferred. Until a contact replies, messages must be under 300 characters, contain no links, media, phone numbers or emails, and at most 3 can be sent.

Resources​

  • bubbl3://conversations/{id}
  • bubbl3://contacts/{id}

Reading a resource runs get_conversation or get_contact, so it is checked and logged the same way.

send_message​

Send a message. Never message contacts who opted out. When the workspace requires consent, only contacts who opted in can be messaged. Sends outside 9 AM–8 PM in the contact’s local time are deferred. Until a contact replies, messages must be under 300 characters, contain no links, media, phone numbers or emails, and at most 3 can be sent.

FieldTypeRequiredDescription
tostringNoRecipient phone number in E.164. Provide to or contact_id.
contact_idstringNoContact id (ctc_...).
bodystringYesUp to 2000 characters.
pool_idstringNoPool id (pool_...).
fallbackbooleanNoAllow SMS if the contact is not on iMessage.
idempotency_keystringNoOptional. Sent as the Idempotency-Key header: retrying with the same key returns the first message instead of sending again. Keys starting with outreach:, workflow: or agent: are refused. Up to 255 characters.

list_conversations​

List recent conversations.

FieldTypeRequiredDescription
statusenumNoOne of: open, snoozed, closed.
assigneeenumNoOne of: me, unassigned, any. Default "any".
limitintegerNoFrom 1 to 100. Default 20.

get_conversation​

Get the messages in a conversation.

FieldTypeRequiredDescription
conversation_idstringYesConversation id (cnv_...).
limitintegerNoMost recent messages to return. From 1 to 200. Default 50.

reply_to_conversation​

Reply in an existing conversation. Never message contacts who opted out. When the workspace requires consent, only contacts who opted in can be messaged. Sends outside 9 AM–8 PM in the contact’s local time are deferred. Until a contact replies, messages must be under 300 characters, contain no links, media, phone numbers or emails, and at most 3 can be sent.

FieldTypeRequiredDescription
conversation_idstringYesConversation id (cnv_...).
bodystringYesUp to 2000 characters.
idempotency_keystringNoOptional. Sent as the Idempotency-Key header: retrying with the same key returns the first message instead of sending again. Keys starting with outreach:, workflow: or agent: are refused. Up to 255 characters.

search_contacts​

Search contacts.

FieldTypeRequiredDescription
querystringYesName, phone, email or company. Up to 100 characters.
limitintegerNoFrom 1 to 100. Default 20.

get_contact​

Get one contact by id or phone.

FieldTypeRequiredDescription
contact_idstringNoContact id (ctc_...).
phonestringNoPhone number in E.164 format.

upsert_contact​

Create a contact or update the one with this phone number. Does not change consent.

FieldTypeRequiredDescription
phonestringYesPhone number in E.164 format.
emailstring (email)NoUp to 254 characters.
first_namestringNoUp to 100 characters.
last_namestringNoUp to 100 characters.
companystringNoUp to 200 characters.
fieldsobjectNo

check_imessage​

Check whether a number can receive iMessage (cached for 30 days).

FieldTypeRequiredDescription
phonestringYesPhone number in E.164 format.

list_lines​

List lines with health and the new-contact capacity left today.

FieldTypeRequiredDescription
pool_idstringNoPool id (pool_...).

get_message_status​

Get a message’s status and delivery timeline.

FieldTypeRequiredDescription
message_idstringYesMessage id (msg_...).

handoff_to_human​

Hand the conversation to a person and notify the assigned team.

FieldTypeRequiredDescription
conversation_idstringYesConversation id (cnv_...).
reasonstringYesUp to 500 characters.
team_idstring (uuid)No