Menu

Referência da API · CRM

Listas

crm · lists · 10 operações

GET/v1/crm/lists

List CRM lists

crm.lists.list

LeituraIdempotenteDesde 2026-11-01

Lists the org's CRM lists (named groups of persons: static, dynamic or imported from a CSV), most recently updated first, paginated by cursor (limit up to 200). Filter by type. Each list carries its cached member_count and, if dynamic, its saved filter; member ids are not included: page through them with crm.lists.members.list.

Escopo
crm:read
Permissão
Ver o módulo
Tool do MCP
crm_lists_listNa superfície completa; na compacta, mb_execute_operation com id: "crm.lists.list".

Custo declarado: até 202 leituras e 0 escritas por chamada (contam na cota diária).

Parâmetros

limitintegerqueryopcional

How many items this page brings at most (see the maximum and the default in the schema).

Padrão: 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.

typeenumqueryopcional

Only the lists of this type.

Valores: static, dynamic, csv

Resposta

dataarray<object>
has_moreboolean
next_cursorstring

Erros

Exemplo

curl "https://api.mb-suite.com/v1/crm/lists" \
  -H "Authorization: Bearer $MB_API_KEY"

Testar com a sua API key de teste

Com uma API key de teste o pedido vai sempre para a sua organização de prática: dados de exemplo que você pode reiniciar.

curl "https://api.mb-suite.com/v1/crm/lists" \
  -H "Authorization: Bearer $MB_TEST_KEY"
GET/v1/crm/lists/{list_id}

Get one CRM list

crm.lists.get

LeituraIdempotenteDesde 2026-11-01

Returns a CRM list: name, description, type (static, dynamic or csv), color, icon, the cached member_count and when it was last counted, the saved filter of a dynamic list, the CSV import summary, owner (with owner_name) and dates. Member ids are not included by default; page through the members with crm.lists.members.list. With include_member_ids=true a static or csv list also returns person_ids: the saved ids exactly as stored, in order, including persons deleted or merged away since (useful to clean a list: crm.lists.members.list only returns the ones that still exist). Never for a dynamic list (it saves no ids) nor for a seller restricted to their own records (they page through crm.lists.members.list, which applies their scope): then person_ids does not come. The list is already read; resolving the owner's name may read their profile.

Escopo
crm:read
Permissão
Ver o módulo
Tool do MCP
crm_lists_getNa superfície completa; na compacta, mb_execute_operation com id: "crm.lists.get".

Custo declarado: até 1 leituras e 0 escritas por chamada (contam na cota diária).

Parâmetros

list_idstringrotaobrigatório

The list, by id (crm.lists.list).

include_member_idsbooleanqueryopcional

Static and csv lists: also return personIds, the stored ids as they are (with persons deleted since).

Resposta

idstring
org_idstring
namestring
typeenum

Valores: static, dynamic, csv

member_countnumber
created_atnumber
updated_atnumber
descriptionstring | null
colorstring | null
iconstring | null
last_resolved_atnumber | null
filterobject
csv_importobject
owner_idstring | null
owner_namestring | null

The name of the owner, resolved when the list is read.

shared_with_orgboolean
created_by_idstring | null
created_by_namestring | null

The name of who created it, resolved when the list is read.

person_idsarray<string>

Erros

Exemplo

curl "https://api.mb-suite.com/v1/crm/lists/{list_id}" \
  -H "Authorization: Bearer $MB_API_KEY"

Testar com a sua API key de teste

Com uma API key de teste o pedido vai sempre para a sua organização de prática: dados de exemplo que você pode reiniciar.

curl "https://api.mb-suite.com/v1/crm/lists/{list_id}" \
  -H "Authorization: Bearer $MB_TEST_KEY"
GET/v1/crm/lists/{list_id}/members

List the members of a CRM list

crm.lists.members.list

LeituraIdempotenteDesde 2026-11-01

Returns the persons in a list ordered by person id, paginated by cursor (limit up to 200). Static and CSV lists return their saved persons that still exist; a dynamic list applies its saved filter to the org's persons, scanning at most 2,000 persons per call (with labels or owners in the filter, only the persons that have them are scanned). Archived persons are left out unless include_archived is true, and merged-away duplicates never appear. Deleted or archived persons, persons outside a restricted seller's scope and that scan limit can leave a page with fewer members than limit (even none) while has_more is true: keep following next_cursor until has_more is false. With Google Ads, LinkedIn or TikTok, their terms limit it through the API and the MCP: what they do not allow answers 403 platform_terms_restricted, and their records or fields are left out of the response (the permissions guide lists what each platform allows).

Escopo
crm:read
Permissão
Ver o módulo
Tool do MCP
crm_lists_members_listNa superfície completa; na compacta, mb_execute_operation com id: "crm.lists.members.list".

Custo declarado: até 2001 leituras e 0 escritas por chamada (contam na cota diária).

Parâmetros

list_idstringrotaobrigatório

The list, by id (crm.lists.list).

limitintegerqueryopcional

How many items this page brings at most (default 20, up to 200).

Padrão: 20

cursorstringqueryopcional

The next_cursor of the previous page, exactly as it came (only for the same list and filters); without it, the first page.

include_archivedbooleanqueryopcional

Include archived persons (left out by default).

Padrão: false

Resposta

dataarray<object>
has_moreboolean
next_cursorstring

Erros

Exemplo

curl "https://api.mb-suite.com/v1/crm/lists/{list_id}/members" \
  -H "Authorization: Bearer $MB_API_KEY"

Testar com a sua API key de teste

Com uma API key de teste o pedido vai sempre para a sua organização de prática: dados de exemplo que você pode reiniciar.

curl "https://api.mb-suite.com/v1/crm/lists/{list_id}/members" \
  -H "Authorization: Bearer $MB_TEST_KEY"
POST/v1/crm/lists

Create a CRM list

crm.lists.create

EscritaDesde 2026-11-01

Creates a list of persons, owned by the caller: static (person_ids, up to 5,000; a repeated id is saved and counted once, and an id that is not a person of the organization is not saved: it comes back in not_found), dynamic (a saved filter over persons: search text, company_ids, label_ids with label_mode any/all, owner_ids, countries, do_not_contact included/excluded, created_after) or csv (behaves like static; importing a CSV file is not part of this operation). The member count is computed on creation: for a static or csv list, the distinct ids that are persons of the organization; for a dynamic list, every person that matches the filter, archived persons and merged-away duplicates included (crm.lists.members.list leaves those out). Optional dry run: with dry_run=true nothing is written; it counts exactly as the creation and its preview says how many persons the list would start with (counts lists, member_count and, for a static or csv list, requested, the distinct ids sent, and not_found, the ones that are not persons of the organization), with up to 50 of the counted persons as items (id and name; a person outside a restricted seller's scope comes without their name; none for a dynamic list without criteria, which is every person and is counted without reading them) and a warning when ids came repeated or the count reached its limit of 30,000. Running the creation needs no confirm_token. The declared cost is the worst case (a dynamic list scans up to 30,000 persons); a call is charged what it really reads: a static list of N persons, N reads; an empty one, none. Requires create_list.

Escopo
crm:write
Permissão
Editar no módulo · Ação do CRM: create_list
Tool do MCP
crm_lists_createNa superfície completa; na compacta, mb_execute_operation com id: "crm.lists.create".

Custo declarado: até 30001 leituras e 1 escritas por chamada (contam na cota diária).

Parâmetros

namestringcorpoobrigatório

The list's name (up to 100 characters).

typeenumcorpoobrigatório

static: the persons given in person_ids; dynamic: the persons that match filter; csv: the persons of an import.

Valores: static, dynamic, csv

descriptionstringcorpoopcional

What the list is for (up to 500 characters).

colorstringcorpoopcional

A hex color for the list (#3b82f6).

iconstringcorpoopcional

The icon the app shows next to the name.

person_idsarray<string>corpoopcional

Static and csv lists: the persons (crm.persons.list). Ids that are not persons of the organization are not stored and come back in notFound.

filterobjectcorpoopcional

Dynamic lists: the persons that match today, recomputed when read (search, company_ids, label_ids with label_mode any or all, owner_ids, countries, do_not_contact included or excluded, created_after in epoch ms).

shared_with_orgbooleancorpoopcional

true: every member of the organization sees it; false: only its owner.

Resposta

list_idstring
not_foundarray<string>

Static and csv lists: the ids sent that are not persons of the organization (not saved).

Erros

Exemplo

curl -X POST "https://api.mb-suite.com/v1/crm/lists" \
  -H "Authorization: Bearer $MB_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "name": "NAME",
  "type": "static"
}'

Testar com a sua API key de teste

Com uma API key de teste o pedido vai sempre para a sua organização de prática: dados de exemplo que você pode reiniciar.

curl -X POST "https://api.mb-suite.com/v1/crm/lists" \
  -H "Authorization: Bearer $MB_TEST_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "name": "NAME",
  "type": "static"
}'
PATCH/v1/crm/lists/{list_id}

Update a CRM list

crm.lists.update

EscritaDesde 2026-11-01

Updates the name, description, color, icon or sharing flag of a list (null clears description, color or icon) and, for a dynamic list only, its saved filter, which recomputes the member count. Send the fields at the top level or inside updates (not both: updates_conflict). Members of a static list change with crm.lists.members.add and crm.lists.members.remove. Returns the list as saved and changed: false when it already was that way (nothing written). Requires edit_list (a seller edits their own lists and the ones without owner).

Escopo
crm:write
Permissão
Editar no módulo
Tool do MCP
crm_lists_updateNa superfície completa; na compacta, mb_execute_operation com id: "crm.lists.update".

Custo declarado: até 30001 leituras e 1 escritas por chamada (contam na cota diária).

Parâmetros

list_idstringrotaobrigatório

The list, by id (crm.lists.list).

namestringcorpoopcional

The list's name (up to 100 characters).

descriptionstring | nullcorpoopcional
colorstring | nullcorpoopcional
iconstring | nullcorpoopcional
filterobjectcorpoopcional

Dynamic lists: the persons that match today, recomputed when read (search, company_ids, label_ids with label_mode any or all, owner_ids, countries, do_not_contact included or excluded, created_after in epoch ms).

shared_with_orgbooleancorpoopcional

true: every member of the organization sees it; false: only its owner.

updatesobjectcorpoopcional

The same fields, grouped as in the other CRM edits (crm.deals.update…): send them here or at the top level, not both.

Resposta

listobject
changedboolean

false when the list already was that way: nothing was written.

Erros

Exemplo

curl -X PATCH "https://api.mb-suite.com/v1/crm/lists/{list_id}" \
  -H "Authorization: Bearer $MB_API_KEY"

Testar com a sua API key de teste

Com uma API key de teste o pedido vai sempre para a sua organização de prática: dados de exemplo que você pode reiniciar.

curl -X PATCH "https://api.mb-suite.com/v1/crm/lists/{list_id}" \
  -H "Authorization: Bearer $MB_TEST_KEY"
POST/v1/crm/lists/{list_id}/duplicate

Duplicate a CRM list

crm.lists.duplicate

EscritaDesde 2026-11-01

Creates a copy of a list named after it with the suffix in the caller's language: '(copia)', '(copy)' or '(cópia)', owned by the caller, with the same type, description, color, icon, members or filter, CSV summary and cached member count. The original is not touched. Requires create_list.

Escopo
crm:write
Permissão
Editar no módulo · Ação do CRM: create_list
Tool do MCP
crm_lists_duplicateNa superfície completa; na compacta, mb_execute_operation com id: "crm.lists.duplicate".

Custo declarado: até 1 leituras e 1 escritas por chamada (contam na cota diária).

Parâmetros

list_idstringrotaobrigatório

The list, by id (crm.lists.list).

Resposta

list_idstring

Erros

Exemplo

curl -X POST "https://api.mb-suite.com/v1/crm/lists/{list_id}/duplicate" \
  -H "Authorization: Bearer $MB_API_KEY"

Testar com a sua API key de teste

Com uma API key de teste o pedido vai sempre para a sua organização de prática: dados de exemplo que você pode reiniciar.

curl -X POST "https://api.mb-suite.com/v1/crm/lists/{list_id}/duplicate" \
  -H "Authorization: Bearer $MB_TEST_KEY"
DELETE/v1/crm/lists/{list_id}

Delete a CRM list

crm.lists.delete

IrreversívelDesde 2026-11-01

Deletes a list; the persons in it are not touched. The sequences that auto-enrolled from it lose that link (the result says how many). The list goes to the 30-day trash: restoring it brings the list back, not its links to sequences. Requires delete_list (a seller deletes their own lists and the ones without owner).

Com uma API key, este DELETE roda direto: o registro fica 30 dias na lixeira e a resposta traz o seu trash_item_id. Com um token OAuth, e pelo MCP, pede dry_run → confirm_token.

Escopo
crm:write e «Permitir exclusões» (crm:delete no OAuth)
Permissão
Editar no módulo
Tool do MCP
crm_lists_deleteNa superfície completa; na compacta, mb_execute_operation com id: "crm.lists.delete".

Custo declarado: até 1001 leituras e 1001 escritas por chamada (contam na cota diária).

Parâmetros

list_idstringrotaobrigatório

The list, by id (crm.lists.list).

Resposta

unlinked_sequencesnumber
trash_item_idstring

The trash item this deletion left: the item_id of platform.trash.restore (POST /trash/{item_id}/restore). Missing if nothing went to the trash.

trash_item_idsarray<string>

Only when the deletion left more than one copy: all of them, the first being trash_item_id.

trash_expires_atnumber

When the copy leaves the trash for good (epoch ms): 30 days after the deletion.

Erros

Exemplo

curl -X DELETE "https://api.mb-suite.com/v1/crm/lists/{list_id}" \
  -H "Authorization: Bearer $MB_API_KEY"

Testar com a sua API key de teste

Com uma API key de teste o pedido vai sempre para a sua organização de prática: dados de exemplo que você pode reiniciar.

curl -X DELETE "https://api.mb-suite.com/v1/crm/lists/{list_id}" \
  -H "Authorization: Bearer $MB_TEST_KEY"
POST/v1/crm/lists/{list_id}/members

Add persons to a static list

crm.lists.members.add

EscritaIdempotenteDesde 2026-11-01

Adds up to 2,000 persons (ids from crm.persons.list or crm.persons.lookup) to a static or CSV list; ids already in the list are ignored, ids that are not persons of the organization are not added (not_found), and the result says how many were added and the new member count. Sequences triggered by 'added to a list' start for the persons actually added. Not for dynamic lists, whose members come from their filter. Requires edit_list.

Escopo
crm:write
Permissão
Editar no módulo
Tool do MCP
crm_lists_members_addNa superfície completa; na compacta, mb_execute_operation com id: "crm.lists.members.add".

Custo declarado: até 2001 leituras e 1 escritas por chamada (contam na cota diária).

Parâmetros

list_idstringrotaobrigatório

The list, by id (crm.lists.list).

person_idsarray<string>corpoobrigatório

The persons to add or remove (up to 2,000).

Resposta

addednumber
member_countnumber
not_foundarray<string>

The ids that are not persons of the organization: not added.

Erros

Exemplo

curl -X POST "https://api.mb-suite.com/v1/crm/lists/{list_id}/members" \
  -H "Authorization: Bearer $MB_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "person_ids": [
    "PERSON_ID"
  ]
}'

Testar com a sua API key de teste

Com uma API key de teste o pedido vai sempre para a sua organização de prática: dados de exemplo que você pode reiniciar.

curl -X POST "https://api.mb-suite.com/v1/crm/lists/{list_id}/members" \
  -H "Authorization: Bearer $MB_TEST_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "person_ids": [
    "PERSON_ID"
  ]
}'
POST/v1/crm/lists/{list_id}/members/remove

Remove persons from a static list

crm.lists.members.remove

EscritaIdempotenteDesde 2026-11-01

Removes up to 2,000 persons from a static or CSV list; ids that are not in the list are ignored and the result says how many were removed and the new member count (an old stored id that is not a person is removed without changing the count). The persons themselves are not deleted. Not for dynamic lists. Requires edit_list.

Escopo
crm:write
Permissão
Editar no módulo
Tool do MCP
crm_lists_members_removeNa superfície completa; na compacta, mb_execute_operation com id: "crm.lists.members.remove".

Custo declarado: até 2001 leituras e 1 escritas por chamada (contam na cota diária).

Parâmetros

list_idstringrotaobrigatório

The list, by id (crm.lists.list).

person_idsarray<string>corpoobrigatório

The persons to add or remove (up to 2,000).

Resposta

removednumber
member_countnumber

Erros

Exemplo

curl -X POST "https://api.mb-suite.com/v1/crm/lists/{list_id}/members/remove" \
  -H "Authorization: Bearer $MB_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "person_ids": [
    "PERSON_ID"
  ]
}'

Testar com a sua API key de teste

Com uma API key de teste o pedido vai sempre para a sua organização de prática: dados de exemplo que você pode reiniciar.

curl -X POST "https://api.mb-suite.com/v1/crm/lists/{list_id}/members/remove" \
  -H "Authorization: Bearer $MB_TEST_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "person_ids": [
    "PERSON_ID"
  ]
}'
POST/v1/crm/lists/{list_id}/refresh-count

Recount the members of a list

crm.lists.refresh_count

EscritaIdempotenteDesde 2026-11-01

Recomputes and saves the cached member_count of a list: the saved persons that still exist, each once (static, csv), or the persons that match its filter now, archived persons and merged-away duplicates included (dynamic). Changes nothing else and leaves no audit entry (it is equivalent to a read). Idempotent. Optional dry run: with dry_run=true it counts the same way without saving, and its preview says the number (counts lists, member_count, the count now, and previous_member_count, the cached one) with up to 50 of the counted persons as items; running needs no confirm_token. The declared cost is the worst case (a dynamic list scans up to 30,000 persons); a call is charged what it really reads: the list plus its N saved persons for a static list. Any member with access to the CRM can run it.

Escopo
crm:write
Permissão
Ver o módulo
Tool do MCP
crm_lists_refresh_countNa superfície completa; na compacta, mb_execute_operation com id: "crm.lists.refresh_count".

Custo declarado: até 30001 leituras e 1 escritas por chamada (contam na cota diária).

Parâmetros

list_idstringrotaobrigatório

The list, by id (crm.lists.list).

Resposta

member_countnumber

Erros

Exemplo

curl -X POST "https://api.mb-suite.com/v1/crm/lists/{list_id}/refresh-count" \
  -H "Authorization: Bearer $MB_API_KEY"

Testar com a sua API key de teste

Com uma API key de teste o pedido vai sempre para a sua organização de prática: dados de exemplo que você pode reiniciar.

curl -X POST "https://api.mb-suite.com/v1/crm/lists/{list_id}/refresh-count" \
  -H "Authorization: Bearer $MB_TEST_KEY"