Sends an email through the mailbox the sender connected in their personal integrations (Gmail, Outlook or IMAP/SMTP) and records it as an outbound email activity linked to the given deal or person (or to the person whose email matches a recipient), so it shows in every linked timeline; a deal_id or person_id that does not exist is not_found before anything is sent. Variables {{firstName}}, {{lastName}}, {{fullName}}, {{email}}, {{company}}, {{jobTitle}}, {{dealTitle}}, {{dealValue}}, {{dealCurrency}} and {{dealStage}} in subject and body are filled in before sending. To reply inside a thread pass thread_id and reply_to_message_id, from crm.email.threads.get: that operation reads the mailbox content, so an API key or a third-party app has it only when the organization's owner allows connected mailbox content and the credential was granted it (MIA never reads it); without it, send a new email. sender_user_id sends from another member's mailbox (owners, admins and CRM admins only); the mailboxes to send from, their ids and aliases are in crm.email.senders.list. from_alias must be an alias enabled for that mailbox (not available for Outlook). Attachments must already be stored under the organization's email attachments (uploading files is not available through the API). The dry run checks what the send checks before going out (the sender's mailbox, the alias, the deal or person, the attachments' place) without calling the mail provider, and warns about variables that go out as written or empty and about an email that no timeline will show. Not idempotent: retrying sends the email again; when the mail provider does not confirm the send it answers external_outcome_unknown (the email may have gone out: check the sent folder before sending it again). A person marked «Do not contact» or unsubscribed gets nothing that starts the contact: when a recipient (to or cc, by any of the person's emails) is one of them, nothing is sent and the answer is 409 do_not_contact, with the addresses and why in details.recipients and whether it can be confirmed in details.overridable. Only a person of the team can confirm it, on a closed basis (do_not_contact_override: about their account, a charge or support, or because the person asked us to write), with a reason outside the app (3 to 500 characters; without it, 400 do_not_contact_reason_required); it is recorded in the audit log and on the activity. An AI agent's API key cannot confirm it (403 do_not_contact_override_not_allowed, and its 409 says overridable false). A reply in a thread (thread_id) where that person wrote last, after being marked (within the last 24 hours for a mark from before 2026-10-16), goes out without confirmation. When the email goes out to one of them, the response carries do_not_contact: the recipients, allowed_as (reply or override) and, when confirmed, the basis. The dry run gives the same answer or says why it goes out anyway. Requires edit access to the CRM and the send_email permission (owners, admins and members; never viewers). In the practice organization (test keys) nothing is sent: the outbound activity is recorded as simulated and the response carries simulated: true.
Pide confirmación: primero dry_run: true (vista previa y confirm_token, que vale 10 minutos y una sola vez), después el mismo cuerpo con confirm_token. En unas pocas, solo con ciertos datos: la descripción dice cuándo. Por qué y cómo: Vista previa y confirmación.
Alcance
crm:write
Permiso
Editar en el módulo · Acción del CRM: send_email
Tool del MCP
crm_email_sendEn la superficie completa; en la compacta, mb_execute_operation con id: "crm.email.send".
Costo declarado: hasta 470 lecturas y 12 escrituras por llamada (cuentan en el cupo diario). Toca una plataforma externa (gmail): cuenta en el cupo de operaciones externas.
Parámetros
toarray<string (email)>cuerporequerido
The recipients' addresses (1 to 50).
subjectstringcuerporequerido
The subject, as plain text; the {{…}} variables are filled in.
body_htmlstringcuerporequerido
The body in HTML; the {{…}} variables are filled in. The signature is not added on its own (crm.email.signatures.list).
ccarray<string (email)>cuerpoopcional
The addresses in copy (up to 20).
deal_idstringcuerpoopcional
The deal the email is recorded on (crm.deals.list): it also links its persons and company, and fills the deal variables. It must exist.
person_idstringcuerpoopcional
The person the email is recorded on (crm.persons.list), when there is no deal: it also links their company and fills the person variables. It must exist.
linksobjectcuerpoopcional
Only when the deal or person has several linked records and only some of them must show the email in their timeline: the subset to link (ids that are not candidates are ignored; the deal or person itself is always linked). Without it, every candidate.
thread_idstringcuerpoopcional
To reply inside a thread: its thread_id, with reply_to_message_id (both from crm.email.threads.get). Without it, a new email.
reply_to_message_idstringcuerpoopcional
The message_id of the message this replies to, with thread_id (crm.email.threads.get).
sender_user_idstringcuerpoopcional
The member whose mailbox sends it: the id of a sender of crm.email.senders.list. Without it, the caller's own mailbox. Sending from another member's mailbox is for owners, admins and CRM admins only.
from_aliasstring (email)cuerpoopcional
A send-as alias enabled for the sender's mailbox (its aliases in crm.email.senders.list, with can_send true). Without it, the mailbox address. Not available for Outlook.
attachmentsarray<object>cuerpoopcional
Up to 10 files already stored under the organization's email attachments, 25 MB each (uploading files is not available through the API).
do_not_contact_overrideobjectcuerpoopcional
Only for a recipient marked «Do not contact» or unsubscribed (409 do_not_contact names them): a person of the team confirms the message, on one of two bases. An AI agent's API key cannot confirm it (403 do_not_contact_override_not_allowed) and a WhatsApp marketing template never goes to them. Without it nothing is sent to them; a reply to what they wrote after being marked needs no confirmation (each send says when).
Respuesta
message_idstring
The provider's id of the sent message.
thread_idstring
The provider's id of its thread.
activity_idstring
The outbound email activity recorded in the CRM (crm.activities.get).
do_not_contactobject
Only when the email went out to a person marked «Do not contact» or unsubscribed: who, why, and whether it answered what they wrote after being marked or a person of the team confirmed it.
Con una API key de prueba el pedido va siempre a tu organización de práctica: datos de ejemplo que puedes reiniciar.En la práctica esta operación se simula: no sale nada y la respuesta trae simulated: true.
List the mailboxes the caller can send from, and which need reconnecting
crm.email.senders.list
LecturaIdempotenteDesde 2026-11-01
Lists the mailboxes to send from: the connected ones the caller can send an email from, their own, or every active mailbox of the organization for owners, admins and CRM admins. The mailboxes the CRM reads and syncs (the email inbox, by privacy) are in crm.email.mailboxes.list: the same connections, seen for reading. Each sender's id is the sender_user_id to pass to crm.email.send, with the send-as aliases enabled for that mailbox (can_send is false for Outlook aliases), status connected and ses_fallback (the address is also a verified SES sender of the organization, so a sequence keeps sending through it if the mailbox connection drops; otherwise its contacts pause with gmail_connection_lost). default_sender_id is the caller's own mailbox when it is connected, otherwise the first of the list (null when there is none). needs_reconnect lists, with the same reach, the mailboxes whose connection dropped (the provider rejected the stored token): nothing is sent from them, sequences included, until their owner reconnects them in Integrations in the app (there is no API for that); provider says which one (google_gmail, microsoft_outlook, imap_smtp) and since says when it was marked, if known. caller_mailbox is the caller's own mailbox: connected, reconnect_required or not_connected. Read from what MB Suite stores: it does not call Google or Microsoft. Requires view access to the CRM.
Alcance
crm:read
Permiso
Ver el módulo
Tool del MCP
crm_email_senders_listEn la superficie completa; en la compacta, mb_execute_operation con id: "crm.email.senders.list".
Costo declarado: hasta 201 lecturas y 0 escrituras por llamada (cuentan en el cupo diario).
Parámetros
Sin parámetros.
Respuesta
dataarray<object>
default_sender_idstring | null
The caller's own mailbox when it is connected, otherwise the first of the list (null when there is none).
needs_reconnectarray<object>
The mailboxes whose connection dropped: nothing is sent from them until their owner reconnects them.
Returns the email signatures (name, HTML, which one is the default) of a CRM user: the caller's own by default, or another member's (user_id) for owners, admins and CRM admins. Append the default one at the end of the body of crm.email.send when the user expects their signature. Signatures are created and edited from the screen only.
Alcance
crm:read
Permiso
Ver el módulo
Tool del MCP
crm_email_signatures_listEn la superficie completa; en la compacta, mb_execute_operation con id: "crm.email.signatures.list".
Costo declarado: hasta 1 lecturas y 0 escrituras por llamada (cuentan en el cupo diario).
Parámetros
user_idstringqueryopcional
The member whose signatures to read (owners, admins and CRM admins only). Without it, the caller's own.
Lists the mailboxes to read and sync: the connected mailboxes (Gmail, Outlook or IMAP) of the CRM team whose emails become CRM activities and make the email inbox, the ones the caller is allowed to read, with the owner's user_id and name, the mailbox address, its status (a dropped one stops syncing), last sync and privacy mode. Private mailboxes of other users are left out (owners, admins and CRM admins see all); an API key, a third-party app and MIA see only the mailbox of the user they act as. To send an email, the mailboxes to send from are in crm.email.senders.list: the same connections, seen for sending (only the active ones, with their aliases). The user_id is the owner_user_id of crm.email.mailbox.sync and of the crm.email.threads operations; those read the mailbox content, so an API key or a third-party app has them only when the organization's owner allows connected mailbox content and the credential was granted it (MIA never has them).
Alcance
crm:read
Permiso
Ver el módulo · Acción del CRM: view_inbox
Tool del MCP
crm_email_mailboxes_listEn la superficie completa; en la compacta, mb_execute_operation con id: "crm.email.mailboxes.list".
Costo declarado: hasta 100 lecturas y 0 escrituras por llamada (cuentan en el cupo diario).
LecturaIdempotenteCorreo y calendario conectadosDesde 2026-11-01
For API keys and third-party apps this operation exists only when the organization's owner allows connected mailbox content and the credential was granted it; even then it returns only threads linked to a CRM person, company or deal (person_id, company_id or deal_id present), never the whole mailbox. Lists the threads of one mailbox (owner_user_id, from crm.email.mailboxes.list) in a folder: inbox (default), sent or archived; a thread you replied to lives in both inbox and sent. Newest first, paginated by cursor (limit up to 200), built from the mailbox's latest 500 emails (up to 200 threads). Each thread has its subject, last snippet, participants, message and unread counts and the person, deal or company it is linked to. A private mailbox, or one that does not exist, returns an empty list. Use crm.email.threads.get for the messages.
Solo si la organización lo permite y la credencial lo trae concedido; devuelve solo lo vinculado al CRM de la casilla propia.Correo y calendario conectados
Alcance
crm:read
Permiso
Ver el módulo · Acción del CRM: view_inbox
Tool del MCP
crm_email_threads_listEn la superficie completa; en la compacta, mb_execute_operation con id: "crm.email.threads.list".
Costo declarado: hasta 505 lecturas y 0 escrituras por llamada (cuentan en el cupo diario).
Parámetros
owner_user_idstringrutarequerido
The member who owns the mailbox: the user_id of crm.email.mailboxes.list.
limitintegerqueryopcional
How many items this page brings at most (see the maximum and the default in the schema).
Por defecto: 50
cursorstringqueryopcional
The next_cursor of the previous page, exactly as it came (only for the same list and filters); without it, the first page.
folderenumqueryopcional
The folder: inbox (the default), sent or archived.
Valores: inbox, sent, archived · Por defecto: "inbox"
LecturaIdempotenteCorreo y calendario conectadosDesde 2026-11-01
For API keys and third-party apps this operation exists only when the organization's owner allows connected mailbox content and the credential was granted it; a thread with no link to a CRM person, company or deal is not found for them. Returns the messages of a thread of a mailbox, oldest first: direction, from, to, cc, subject, the sanitized HTML body, a text preview, the date, the linked CRM ids (linked_person_ids, linked_deal_ids, linked_company_ids), the provider message_id (pass it as reply_to_message_id with the thread_id to reply through crm.email.send) and the attachments. Not found if the thread is not in the mailbox's latest emails or the mailbox is private to the caller.
Solo si la organización lo permite y la credencial lo trae concedido; devuelve solo lo vinculado al CRM de la casilla propia.Correo y calendario conectados
Alcance
crm:read
Permiso
Ver el módulo · Acción del CRM: view_inbox
Tool del MCP
crm_email_threads_getEn la superficie completa; en la compacta, mb_execute_operation con id: "crm.email.threads.get".
Costo declarado: hasta 505 lecturas y 0 escrituras por llamada (cuentan en el cupo diario).
Parámetros
owner_user_idstringrutarequerido
The member who owns the mailbox: the user_id of crm.email.mailboxes.list.
thread_idstringrutarequerido
The thread: the thread_id of crm.email.threads.list.
EscrituraIdempotenteCorreo y calendario conectadosDesde 2026-11-01
Links every email of a thread to a person (person_id) and to that person's primary company, keeping the links the emails already had, so the conversation shows in the person's timeline. Use it when the automatic match by email failed (the sender wrote from an address the person does not have). Idempotent. Requires being able to read the mailbox; a seller with restricted scope can only link persons they can see.
Solo si la organización lo permite y la credencial lo trae concedido; devuelve solo lo vinculado al CRM de la casilla propia.Correo y calendario conectados
Alcance
crm:write
Permiso
Editar en el módulo
Tool del MCP
crm_email_threads_link_personEn la superficie completa; en la compacta, mb_execute_operation con id: "crm.email.threads.link_person".
Costo declarado: hasta 503 lecturas y 500 escrituras por llamada (cuentan en el cupo diario).
Parámetros
owner_user_idstringrutarequerido
The member who owns the mailbox: the user_id of crm.email.mailboxes.list.
thread_idstringrutarequerido
The thread: the thread_id of crm.email.threads.list.
person_idstringcuerporequerido
The person to link every email of the thread to (crm.persons.list).
EscrituraIdempotenteCorreo y calendario conectadosDesde 2026-11-01
Archives a thread of a mailbox: it leaves the inbox for everyone who reads that mailbox and moves to the archived folder; for Gmail mailboxes it is also archived in Gmail (best effort). It deletes nothing; crm.email.threads.unarchive brings it back. Idempotent. Requires being able to read the mailbox.
Solo si la organización lo permite y la credencial lo trae concedido; devuelve solo lo vinculado al CRM de la casilla propia.Correo y calendario conectados
Alcance
crm:write
Permiso
Editar en el módulo
Tool del MCP
crm_email_threads_archiveEn la superficie completa; en la compacta, mb_execute_operation con id: "crm.email.threads.archive".
Costo declarado: hasta 501 lecturas y 500 escrituras por llamada (cuentan en el cupo diario). Toca una plataforma externa (gmail): cuenta en el cupo de operaciones externas.
Parámetros
owner_user_idstringrutarequerido
The member who owns the mailbox: the user_id of crm.email.mailboxes.list.
thread_idstringrutarequerido
The thread: the thread_id of crm.email.threads.list.
curl-X POST "https://api.mb-suite.com/v1/crm/emails/mailboxes/{owner_user_id}/threads/{thread_id}/archive" \
-H"Authorization: Bearer $MB_API_KEY"
Probar con tu API key de prueba
Con una API key de prueba el pedido va siempre a tu organización de práctica: datos de ejemplo que puedes reiniciar.En la práctica esta operación no se simula (toca otra plataforma): responde 409 sandbox_external_unavailable.
EscrituraIdempotenteCorreo y calendario conectadosDesde 2026-11-01
Moves an archived thread of a mailbox back to the inbox for everyone who reads that mailbox (and back to the Gmail inbox, best effort). Idempotent. Requires being able to read the mailbox.
Solo si la organización lo permite y la credencial lo trae concedido; devuelve solo lo vinculado al CRM de la casilla propia.Correo y calendario conectados
Alcance
crm:write
Permiso
Editar en el módulo
Tool del MCP
crm_email_threads_unarchiveEn la superficie completa; en la compacta, mb_execute_operation con id: "crm.email.threads.unarchive".
Costo declarado: hasta 501 lecturas y 500 escrituras por llamada (cuentan en el cupo diario). Toca una plataforma externa (gmail): cuenta en el cupo de operaciones externas.
Parámetros
owner_user_idstringrutarequerido
The member who owns the mailbox: the user_id of crm.email.mailboxes.list.
thread_idstringrutarequerido
The thread: the thread_id of crm.email.threads.list.
curl-X POST "https://api.mb-suite.com/v1/crm/emails/mailboxes/{owner_user_id}/threads/{thread_id}/unarchive" \
-H"Authorization: Bearer $MB_API_KEY"
Probar con tu API key de prueba
Con una API key de prueba el pedido va siempre a tu organización de práctica: datos de ejemplo que puedes reiniciar.En la práctica esta operación no se simula (toca otra plataforma): responde 409 sandbox_external_unavailable.
EscrituraMasiva · hasta 50IdempotenteCorreo y calendario conectadosDesde 2026-11-01
Archives up to 50 threads of one mailbox at once (same effect as archiving them one by one, also in Gmail, best effort). Requires being able to read the mailbox. Bulk: outside the screen it requires a dry run and a confirm_token.
Pide confirmación: primero dry_run: true (vista previa y confirm_token, que vale 10 minutos y una sola vez), después el mismo cuerpo con confirm_token. En unas pocas, solo con ciertos datos: la descripción dice cuándo. Por qué y cómo: Vista previa y confirmación.
Solo si la organización lo permite y la credencial lo trae concedido; devuelve solo lo vinculado al CRM de la casilla propia.Correo y calendario conectados
Alcance
crm:write
Permiso
Editar en el módulo
Tool del MCP
crm_email_threads_archive_bulkEn la superficie completa; en la compacta, mb_execute_operation con id: "crm.email.threads.archive.bulk".
Costo declarado: hasta 501 lecturas y 500 escrituras por llamada (cuentan en el cupo diario). Toca una plataforma externa (gmail): cuenta en el cupo de operaciones externas.
Parámetros
owner_user_idstringrutarequerido
The member who owns the mailbox: the user_id of crm.email.mailboxes.list.
thread_idsarray<string>cuerporequerido
The threads to archive (1 to 50), thread_ids of crm.email.threads.list.
Con una API key de prueba el pedido va siempre a tu organización de práctica: datos de ejemplo que puedes reiniciar.En la práctica esta operación no se simula (toca otra plataforma): responde 409 sandbox_external_unavailable.
POST/v1/crm/emails/mailboxes/{owner_user_id}/sync
Sync a mailbox now
crm.email.mailbox.sync
EscrituraIdempotenteDesde 2026-11-01
Pulls the new messages of a mailbox from its provider (Gmail, Outlook or IMAP) since its last sync (the last 90 days the first time, up to 2,000 messages) and records the ones that match CRM persons or companies as email activities, with the same deduplicated ingestion as the scheduled sync: running it again never duplicates. Returns how many were fetched, recorded and skipped (and why). It can take tens of seconds. Requires being able to read the mailbox.
Alcance
crm:write
Permiso
Editar en el módulo
Tool del MCP
crm_email_mailbox_syncEn la superficie completa; en la compacta, mb_execute_operation con id: "crm.email.mailbox.sync".
Costo declarado: hasta 2002 lecturas y 2001 escrituras por llamada (cuentan en el cupo diario). Toca una plataforma externa (gmail): cuenta en el cupo de operaciones externas.
Parámetros
owner_user_idstringrutarequerido
The member who owns the mailbox: the user_id of crm.email.mailboxes.list.
curl-X POST "https://api.mb-suite.com/v1/crm/emails/mailboxes/{owner_user_id}/sync" \
-H"Authorization: Bearer $MB_API_KEY"
Probar con tu API key de prueba
Con una API key de prueba el pedido va siempre a tu organización de práctica: datos de ejemplo que puedes reiniciar.En la práctica esta operación no se simula (toca otra plataforma): responde 409 sandbox_external_unavailable.