Menu

Referência da API · CRM

Prospectos

crm · prospects · 15 operações

GET/v1/crm/prospects

List prospects (inbox)

crm.prospects.list

LeituraIdempotenteDesde 2026-11-01

Lists prospects newest first, paginated by cursor. status: active (new + reviewing, the inbox; default), archived, converted or all. person_id keeps the prospects of one person and owner_id those of one owner (a member, or an AI agent's ai-… id); with both, the owner is applied to the page read. A seller with restricted scope only gets their own, the unassigned ones and the AI's, applied to the page read, so a page can bring fewer than limit while has_more is true: follow 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_prospects_listNa superfície completa; na compacta, mb_execute_operation com id: "crm.prospects.list".

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

Parâmetros

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.

statusenumqueryopcional

active (new and reviewing, the default), archived, converted or all.

Valores: active, archived, converted, all

person_idstringqueryopcional

Only the prospects of this person.

owner_idstringqueryopcional

Only the prospects of this owner (a member's user id, or an AI agent's ai-… id).

Resposta

dataarray<object>
has_moreboolean
next_cursorstring

Erros

Exemplo

curl "https://api.mb-suite.com/v1/crm/prospects" \
  -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/prospects" \
  -H "Authorization: Bearer $MB_TEST_KEY"
GET/v1/crm/prospects/{prospect_id}

Get one prospect

crm.prospects.get

LeituraIdempotenteDesde 2026-11-01

Returns a prospect with its status (lifecycle), interest, linked person and company, value, owner, source, attribution, labels and custom fields. Not found if the id does not exist or the seller's scope hides it. 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 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_prospects_getNa superfície completa; na compacta, mb_execute_operation com id: "crm.prospects.get".

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

Parâmetros

prospect_idstringrotaobrigatório

The prospect, by id (crm.prospects.list or crm.search).

Resposta

idstring
org_idstring
titlestring
statusenum

The lifecycle in the inbox: new, reviewing, converted (to a deal) or archived.

Valores: new, reviewing, converted, archived

created_atnumber
updated_atnumber
interest_idstring | null

Its status as the inbox shows it (crm.prospects.interests.list); for prospects from before the migration, the old tag.

interest_namestring | null

The name of that status.

tagstring | null

Deprecated: the status of prospects from before 2026-08 (same ids as the default interests). Use interest_id.

person_idstring | null
company_idstring | null
valuenumber | null
currencystring | null
expected_close_datenumber | null

Expected close date, epoch ms.

owner_idstring | null

The owner: a member's user id (members.members.list), or an AI position's ai-… id.

owner_namestring | null

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

source_idstring | null

The lead source (crm.lead_sources.list).

source_channelstring | null
external_lead_idstring | null

The lead id of the ads platform (Meta leadgen id, TikTok lead id).

submitted_atnumber | null

When the person submitted the lead form (platform time), epoch ms.

attributionobject | null
label_idsarray<string>
custom_fieldsobject
is_starredboolean
ai_scorenumber | null

The AI score 0-100 (ai_scoring.score).

ai_scoringobject | null
open_activity_countnumber | null

Pending tasks, calls and meetings of the prospect.

overdue_activity_countnumber | null

Of those, the ones already past their due date.

last_activity_atnumber | null
last_inbound_atnumber | null

Last contact FROM the lead, epoch ms.

last_outbound_atnumber | null

Last contact TO the lead, epoch ms.

next_booking_atnumber | null

The nearest confirmed meeting ahead, epoch ms.

action_stateenum | null

Whose move it is (see crm.deals.get).

Valores: waiting_us, act_new, overdue_task, scheduled, waiting_them, none

action_sincenumber | null

Since when the prospect is in its action_state, epoch ms; for scheduled, the time of the meeting.

converted_to_deal_idstring | null
converted_atnumber | null
archived_atnumber | null
archived_reasonstring | null
reengaged_activeboolean | null

true while the banner of a prospect that came back (archived and the person wrote again) is unresolved.

reengaged_atnumber | null
merged_into_idstring | null

Set on a duplicate absorbed by a merge: the prospect that kept it.

created_by_idstring | null

Who created the prospect: a member's user id (members.members.list), or an AI position's ai-… id.

created_by_namestring | null

The name of who created the prospect, resolved when the record is read.

Erros

Exemplo

curl "https://api.mb-suite.com/v1/crm/prospects/{prospect_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/prospects/{prospect_id}" \
  -H "Authorization: Bearer $MB_TEST_KEY"
POST/v1/crm/prospects

Create a prospect

crm.prospects.create

EscritaDesde 2026-11-01

Creates a prospect in the inbox (status new). Link it to an existing person/company by id, or pass person {full_name, email, phone, company_name} and the person and company are created or reused (dedup by email and phone). Without an owner, the Manual source's assignment rule applies if there is one; without a rule, the prospect goes to the owner of its person when they are a member of the organization (not a viewer), and otherwise it is left unassigned (owner_id null), visible to the whole team. Requires create_prospect. A seller with restricted scope can only link, by id, a person and a company they can already see (their own, unassigned, or of a deal of theirs); any other is not found (person_not_found, company_not_found), before anything is written. If they end up as the owner (chosen, or by the Manual source's assignment rule) and the person or company found by person belongs to someone else, outside what they can see, it is denied with 403 prospect_contact_not_visible and no prospect is created; and the response leaves out the person_id and company_id of a contact they cannot see. With an AI position as owner (owner_id ai-…) the agent answers the lead's messages by itself (AI on each one) and may write to them: outside the app that needs a dry run and its confirm_token, like handing a prospect to an AI position with crm.prospects.update; any other owner runs directly.

Pede confirmação: primeiro dry_run: true (prévia e confirm_token, válido por 10 minutos e por uma única execução), depois o mesmo corpo com confirm_token. Em algumas poucas, só com certos dados: a descrição diz quando. Por que e como: Prévia e confirmação. Nesta, só quando: the owner is an AI position (owner_id ai-…): from then on the agent answers the lead's messages by itself, with AI on each one, and may write to them (as when crm.prospects.update hands a prospect to an AI position).

Escopo
crm:write
Permissão
Editar no módulo · Ação do CRM: create_prospect
Tool do MCP
crm_prospects_createNa superfície completa; na compacta, mb_execute_operation com id: "crm.prospects.create".
Eventos que pode emitir
crm.lead.created

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

Parâmetros

titlestringcorpoobrigatório

The prospect's title (up to 200 characters).

interest_idstringcorpoopcional

Its status in the inbox (crm.prospects.interests.list): interest_not_found otherwise.

person_idstringcorpoopcional

Its person (crm.persons.list); or send person to create or reuse one.

company_idstringcorpoopcional

Its company (crm.companies.list).

valuenumbercorpoopcional

The estimated amount, in currency.

currencystringcorpoopcional

ISO 4217 code of value (by default, the inbox's currency).

expected_close_dateintegercorpoopcional

Expected close date, epoch ms.

owner_idstringcorpoopcional

The owner: a member's user id or an AI position's ai-… id (an AI owner starts working the lead). Without it, an assignment rule of the manual source may assign one.

source_channelenumcorpoopcional

Where it came from (manual by default).

Valores: meta, google, tiktok, linkedin, whatsapp, web, manual, csv, generic

source_idstringcorpoopcional

The lead source (crm.lead_sources.list).

label_idsarray<string>corpoopcional

Prospect labels (crm.labels.list with entity prospect).

custom_fieldsobjectcorpoopcional

Custom fields: slug (crm.custom_fields.list with entity prospect) → value of the field's type.

personobjectcorpoopcional

Create or reuse the prospect's person (and their company) from these fields, instead of person_id.

Resposta

prospect_idstring
person_idstring
company_idstring

Erros

Exemplo

curl -X POST "https://api.mb-suite.com/v1/crm/prospects" \
  -H "Authorization: Bearer $MB_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "title": "TITLE",
  "dry_run": true
}'

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/prospects" \
  -H "Authorization: Bearer $MB_TEST_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "title": "TITLE",
  "dry_run": true
}'
PATCH/v1/crm/prospects/{prospect_id}

Update a prospect

crm.prospects.update

EscritaDesde 2026-11-01

Updates one or more fields of a prospect: title, interest (its visible status), value, currency, expected close date, owner (only a Manager can transfer; others' owner_id is ignored), labels, custom fields, the ad platform's external_lead_id (null clears it) and is_starred. Changes go to the prospect's changelog. Making an AI position (ai-…) the owner starts its first turn right away (it may write to the lead; not when the prospect's person is marked «Do not contact» or unsubscribed: the AI never writes first to them and waits, with next_run_reason do_not_contact, until they write) and counts as one AI call: outside the app that change needs a dry run and its confirm_token (any other update runs directly), and in the practice organization of test keys it fails with 409 sandbox_external_unavailable and nothing changes. Without AI credits for that first turn in the organization's pool (or with the subscription that pays them blocked), the turn does not call the AI and writes to no one: the prospect goes at once to the position's escalation person (or to whoever the lead source's assignment rule picks), and the prospect returned already shows that person as its owner. Requires edit_prospect (a seller edits their own and the unassigned ones). 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 fields are left out of the response (the permissions guide lists what each platform allows).

Pede confirmação: primeiro dry_run: true (prévia e confirm_token, válido por 10 minutos e por uma única execução), depois o mesmo corpo com confirm_token. Em algumas poucas, só com certos dados: a descrição diz quando. Por que e como: Prévia e confirmação. Nesta, só quando: the owner changes to an AI position (owner_id ai-…): its first turn runs right away and it may write to the lead.

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

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

Parâmetros

prospect_idstringrotaobrigatório

The prospect, by id (crm.prospects.list or crm.search).

updatesobjectcorpoobrigatório

The fields to change; the rest stay as they are.

Resposta

prospectobject

Erros

Exemplo

curl -X PATCH "https://api.mb-suite.com/v1/crm/prospects/{prospect_id}" \
  -H "Authorization: Bearer $MB_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "updates": {},
  "dry_run": true
}'

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/prospects/{prospect_id}" \
  -H "Authorization: Bearer $MB_TEST_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "updates": {},
  "dry_run": true
}'
POST/v1/crm/prospects/{prospect_id}/archive

Archive a prospect

crm.prospects.archive

EscritaDesde 2026-11-01

Archives a prospect (status archived, optional reason): it leaves the inbox and keeps everything; crm.prospects.restore brings it back. Idempotent: changed is false when it already was archived (with that reason). Requires archive_prospect.

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

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

Parâmetros

prospect_idstringrotaobrigatório

The prospect, by id (crm.prospects.list or crm.search).

reasonstringcorpoopcional

Why it is archived (up to 500 characters): saved on the prospect.

Resposta

oktrue
changedboolean

false when it already was that way: nothing was written.

Erros

Exemplo

curl -X POST "https://api.mb-suite.com/v1/crm/prospects/{prospect_id}/archive" \
  -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/prospects/{prospect_id}/archive" \
  -H "Authorization: Bearer $MB_TEST_KEY"
POST/v1/crm/prospects/{prospect_id}/restore

Restore an archived prospect to the inbox

crm.prospects.restore

EscritaIdempotenteDesde 2026-11-01

Brings an archived prospect back to the inbox (status reviewing) and clears the archive data. Idempotent: a prospect that is not archived is left as is (changed: false). Requires archive_prospect.

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

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

Parâmetros

prospect_idstringrotaobrigatório

The prospect, by id (crm.prospects.list or crm.search).

Resposta

oktrue
changedboolean

false when it was not archived: nothing was written.

Erros

Exemplo

curl -X POST "https://api.mb-suite.com/v1/crm/prospects/{prospect_id}/restore" \
  -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/prospects/{prospect_id}/restore" \
  -H "Authorization: Bearer $MB_TEST_KEY"
POST/v1/crm/prospects/{prospect_id}/convert

Convert a prospect into a deal

crm.prospects.convert

EscritaIdempotenteDesde 2026-11-01

Creates a deal from the prospect in the given pipeline and stage, assigned to owner_id (a member), with optional title/value/currency overrides; the prospect becomes converted and its activities and conversations move to the deal. Idempotent: an already converted prospect returns its deal. Requires convert_prospect. A seller with restricted scope cannot convert a prospect that is not theirs when its person or company belongs to someone else and is outside what they can see (their own, unassigned, or of a deal of theirs): 403 prospect_contact_not_visible and no deal is created; a Manager or an Admin converts it, or assigns it to them first.

Escopo
crm:write
Permissão
Editar no módulo
Tool do MCP
crm_prospects_convertNa superfície completa; na compacta, mb_execute_operation com id: "crm.prospects.convert".
Eventos que pode emitir
crm.deal.created

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

Parâmetros

prospect_idstringrotaobrigatório

The prospect, by id (crm.prospects.list or crm.search).

pipeline_idstringcorpoobrigatório

The pipeline of the new deal (crm.pipelines.list).

stage_idstringcorpoobrigatório

A stage of that pipeline: stage_not_in_pipeline otherwise.

owner_idstringcorpoobrigatório

The deal's owner: a member's user id.

titlestringcorpoopcional

The deal's title (by default, the prospect's).

valuenumbercorpoopcional

The deal's amount (by default, the prospect's).

currencystringcorpoopcional

ISO 4217 code of value.

Resposta

deal_idstring

Erros

Exemplo

curl -X POST "https://api.mb-suite.com/v1/crm/prospects/{prospect_id}/convert" \
  -H "Authorization: Bearer $MB_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "pipeline_id": "PIPELINE_ID",
  "stage_id": "STAGE_ID",
  "owner_id": "OWNER_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/prospects/{prospect_id}/convert" \
  -H "Authorization: Bearer $MB_TEST_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "pipeline_id": "PIPELINE_ID",
  "stage_id": "STAGE_ID",
  "owner_id": "OWNER_ID"
}'
DELETE/v1/crm/prospects/{prospect_id}

Delete a prospect

crm.prospects.delete

IrreversívelDesde 2026-11-01

Deletes a prospect; it goes to the 30-day trash. Its person, company and activities are kept. Prefer crm.prospects.archive to just take it out of the inbox. Requires delete_prospect.

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_prospects_deleteNa superfície completa; na compacta, mb_execute_operation com id: "crm.prospects.delete".

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

Parâmetros

prospect_idstringrotaobrigatório

The prospect, by id (crm.prospects.list or crm.search).

Resposta

oktrue
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/prospects/{prospect_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/prospects/{prospect_id}" \
  -H "Authorization: Bearer $MB_TEST_KEY"
POST/v1/crm/prospects/bulk/archive

Archive many prospects

crm.prospects.bulk.archive

EscritaEm massa · até 500Desde 2026-11-01

Archives up to 500 prospects with an optional reason. Prospects already archived are left as they are (unchanged) and ids that do not exist are skipped (not_found). A Manager archives any; a seller only their own and the unassigned ones (one foreign id rejects the whole batch with prospects_not_owned). The dry run reads the same prospects and names those that would be archived. Outside the screen it requires a dry run and a confirm_token.

Pede confirmação: primeiro dry_run: true (prévia e confirm_token, válido por 10 minutos e por uma única execução), depois o mesmo corpo com confirm_token. Em algumas poucas, só com certos dados: a descrição diz quando. Por que e como: Prévia e confirmação.

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

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

Parâmetros

prospect_idsarray<string>corpoobrigatório

The prospects (up to 500), by id (crm.prospects.list).

reasonstringcorpoopcional

Why they are archived: saved on each prospect.

Resposta

updatednumber

How many prospects changed.

unchangednumber

How many prospects already were that way: not written.

not_foundarray<string>

The ids that do not exist in the organization (or are merged-away duplicates): skipped.

skippednumber

unchanged + not_found (kept for older clients).

Erros

Exemplo

curl -X POST "https://api.mb-suite.com/v1/crm/prospects/bulk/archive" \
  -H "Authorization: Bearer $MB_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "prospect_ids": [
    "PROSPECT_ID"
  ],
  "dry_run": true
}'

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/prospects/bulk/archive" \
  -H "Authorization: Bearer $MB_TEST_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "prospect_ids": [
    "PROSPECT_ID"
  ],
  "dry_run": true
}'
POST/v1/crm/prospects/bulk/interest

Set the interest (visible status) of many prospects

crm.prospects.bulk.update_interest

EscritaEm massa · até 500Desde 2026-11-01

Sets the interest (the status the inbox shows) of up to 500 prospects. interest_id must be one of crm.prospects.interests.list (any other is interest_not_found). Prospects that already have it are left as they are (unchanged) and ids that do not exist are skipped (not_found). A Manager updates any; a seller only their own and the unassigned ones (prospects_not_owned otherwise). The dry run reads the same prospects. Outside the screen it requires a dry run and a confirm_token.

Pede confirmação: primeiro dry_run: true (prévia e confirm_token, válido por 10 minutos e por uma única execução), depois o mesmo corpo com confirm_token. Em algumas poucas, só com certos dados: a descrição diz quando. Por que e como: Prévia e confirmação.

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

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

Parâmetros

prospect_idsarray<string>corpoobrigatório

The prospects (up to 500), by id (crm.prospects.list).

interest_idstringcorpoobrigatório

Its status in the inbox (crm.prospects.interests.list): interest_not_found otherwise.

Resposta

updatednumber

How many prospects changed.

unchangednumber

How many prospects already were that way: not written.

not_foundarray<string>

The ids that do not exist in the organization (or are merged-away duplicates): skipped.

Erros

Exemplo

curl -X POST "https://api.mb-suite.com/v1/crm/prospects/bulk/interest" \
  -H "Authorization: Bearer $MB_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "prospect_ids": [
    "PROSPECT_ID"
  ],
  "interest_id": "INTEREST_ID",
  "dry_run": true
}'

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/prospects/bulk/interest" \
  -H "Authorization: Bearer $MB_TEST_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "prospect_ids": [
    "PROSPECT_ID"
  ],
  "interest_id": "INTEREST_ID",
  "dry_run": true
}'
POST/v1/crm/prospects/bulk/owner

Assign many prospects to an owner

crm.prospects.bulk.update_owner

EscritaEm massa · até 500Desde 2026-11-01

Assigns up to 500 prospects to a member (owner_id, from members.members.list or crm.team.list; null clears the owner) and notifies the new owner once. An AI position is assigned one prospect at a time with crm.prospects.update (it starts its first turn). Prospects that already have that owner are left as they are (unchanged) and ids that do not exist are skipped (not_found). The dry run reads the same prospects. Manager-tier only. Outside the screen it requires a dry run and a confirm_token.

Pede confirmação: primeiro dry_run: true (prévia e confirm_token, válido por 10 minutos e por uma única execução), depois o mesmo corpo com confirm_token. Em algumas poucas, só com certos dados: a descrição diz quando. Por que e como: Prévia e confirmação.

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

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

Parâmetros

prospect_idsarray<string>corpoobrigatório

The prospects (up to 500), by id (crm.prospects.list).

owner_idstring | nullcorpoobrigatório

The new owner: a member's user id; null leaves them without one.

Resposta

updatednumber

How many prospects changed.

unchangednumber

How many prospects already were that way: not written.

not_foundarray<string>

The ids that do not exist in the organization (or are merged-away duplicates): skipped.

Erros

Exemplo

curl -X POST "https://api.mb-suite.com/v1/crm/prospects/bulk/owner" \
  -H "Authorization: Bearer $MB_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "prospect_ids": [
    "PROSPECT_ID"
  ],
  "owner_id": "OWNER_ID",
  "dry_run": true
}'

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/prospects/bulk/owner" \
  -H "Authorization: Bearer $MB_TEST_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "prospect_ids": [
    "PROSPECT_ID"
  ],
  "owner_id": "OWNER_ID",
  "dry_run": true
}'
POST/v1/crm/prospects/bulk/labels

Add or remove labels on many prospects

crm.prospects.bulk.update_labels

EscritaEm massa · até 500Desde 2026-11-01

Adds and/or removes labels (ids from crm.labels.list with entity prospect) on up to 500 prospects. A label that is not a prospect label of the organization is label_not_found. Prospects that already have exactly those labels are left as they are (unchanged) and ids that do not exist are skipped (not_found). A Manager updates any; a seller only their own and the unassigned ones. The dry run reads the same prospects. Outside the screen it requires a dry run and a confirm_token.

Pede confirmação: primeiro dry_run: true (prévia e confirm_token, válido por 10 minutos e por uma única execução), depois o mesmo corpo com confirm_token. Em algumas poucas, só com certos dados: a descrição diz quando. Por que e como: Prévia e confirmação.

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

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

Parâmetros

prospect_idsarray<string>corpoobrigatório

The prospects (up to 500), by id (crm.prospects.list).

to_addarray<string>corpoopcional

Label ids to add (crm.labels.list with entity prospect), up to 20; send to_add, to_remove or both.

to_removearray<string>corpoopcional

Label ids to remove (crm.labels.list with entity prospect), up to 20; send to_add, to_remove or both.

Resposta

updatednumber

How many prospects changed.

unchangednumber

How many prospects already were that way: not written.

not_foundarray<string>

The ids that do not exist in the organization (or are merged-away duplicates): skipped.

Erros

Exemplo

curl -X POST "https://api.mb-suite.com/v1/crm/prospects/bulk/labels" \
  -H "Authorization: Bearer $MB_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "prospect_ids": [
    "PROSPECT_ID"
  ],
  "dry_run": true
}'

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/prospects/bulk/labels" \
  -H "Authorization: Bearer $MB_TEST_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "prospect_ids": [
    "PROSPECT_ID"
  ],
  "dry_run": true
}'
POST/v1/crm/prospects/bulk/delete

Delete many prospects

crm.prospects.bulk.delete

IrreversívelEm massa · até 500Desde 2026-11-01

Deletes up to 500 prospects; each goes to the 30-day trash and can be restored one by one. Requires bulk_delete_prospects (Manager-tier). Outside the screen it requires a dry run and a confirm_token.

Pede confirmação: primeiro dry_run: true (prévia e confirm_token, válido por 10 minutos e por uma única execução), depois o mesmo corpo com confirm_token. Em algumas poucas, só com certos dados: a descrição diz quando. Por que e como: Prévia e confirmação.

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

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

Parâmetros

prospect_idsarray<string>corpoobrigatório

The prospects (up to 500), by id (crm.prospects.list).

Resposta

deletednumber

How many prospects were deleted (each one goes to the 30-day trash).

not_foundarray<string>

The ids that do not exist in the organization: nothing to delete.

trash_item_idsarray<string>

The trash items this deletion left, one per record: the item_id of platform.trash.restore (POST /trash/{item_id}/restore).

trash_expires_atnumber

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

Erros

Exemplo

curl -X POST "https://api.mb-suite.com/v1/crm/prospects/bulk/delete" \
  -H "Authorization: Bearer $MB_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "prospect_ids": [
    "PROSPECT_ID"
  ],
  "dry_run": true
}'

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/prospects/bulk/delete" \
  -H "Authorization: Bearer $MB_TEST_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "prospect_ids": [
    "PROSPECT_ID"
  ],
  "dry_run": true
}'
GET/v1/crm/prospects/interests

List the prospect statuses (interests)

crm.prospects.interests.list

LeituraIdempotenteDesde 2026-11-01

Lists the statuses a prospect can have in the inbox (called interests in the API: interested, cold… and the ones the organization added), in their order, with id, name and color. interest_id of crm.prospects.create, crm.prospects.update and crm.prospects.bulk.update_interest is one of these ids.

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

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

Parâmetros

Sem parâmetros.

Resposta

dataarray<object>

Erros

Exemplo

curl "https://api.mb-suite.com/v1/crm/prospects/interests" \
  -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/prospects/interests" \
  -H "Authorization: Bearer $MB_TEST_KEY"