Menú

Referencia de la API · CRM

Prospectos

crm · prospects · 15 operaciones

GET/v1/crm/prospects

List prospects (inbox)

crm.prospects.list

LecturaIdempotenteDesde 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).

Alcance
crm:read
Permiso
Ver el módulo
Tool del MCP
crm_prospects_listEn la superficie completa; en la compacta, mb_execute_operation con id: "crm.prospects.list".

Costo declarado: hasta 201 lecturas y 0 escrituras por llamada (cuentan en el cupo diario).

Parámetros

limitintegerqueryopcional

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

Por defecto: 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).

Respuesta

dataarray<object>
has_moreboolean
next_cursorstring

Errores

Ejemplo

curl "https://api.mb-suite.com/v1/crm/prospects" \
  -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.

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

LecturaIdempotenteDesde 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).

Alcance
crm:read
Permiso
Ver el módulo
Tool del MCP
crm_prospects_getEn la superficie completa; en la compacta, mb_execute_operation con id: "crm.prospects.get".

Costo declarado: hasta 2 lecturas y 0 escrituras por llamada (cuentan en el cupo diario).

Parámetros

prospect_idstringrutarequerido

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

Respuesta

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.

Errores

Ejemplo

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

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

EscrituraDesde 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.

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. En esta, solo cuando: 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).

Alcance
crm:write
Permiso
Editar en el módulo · Acción del CRM: create_prospect
Tool del MCP
crm_prospects_createEn la superficie completa; en la compacta, mb_execute_operation con id: "crm.prospects.create".
Eventos que puede emitir
crm.lead.created

Costo declarado: hasta 11 lecturas y 4 escrituras por llamada (cuentan en el cupo diario).

Parámetros

titlestringcuerporequerido

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

interest_idstringcuerpoopcional

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

person_idstringcuerpoopcional

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

company_idstringcuerpoopcional

Its company (crm.companies.list).

valuenumbercuerpoopcional

The estimated amount, in currency.

currencystringcuerpoopcional

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

expected_close_dateintegercuerpoopcional

Expected close date, epoch ms.

owner_idstringcuerpoopcional

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_channelenumcuerpoopcional

Where it came from (manual by default).

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

source_idstringcuerpoopcional

The lead source (crm.lead_sources.list).

label_idsarray<string>cuerpoopcional

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

custom_fieldsobjectcuerpoopcional

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

personobjectcuerpoopcional

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

Respuesta

prospect_idstring
person_idstring
company_idstring

Errores

Ejemplo

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
}'

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.

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

EscrituraDesde 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).

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. En esta, solo cuando: the owner changes to an AI position (owner_id ai-…): its first turn runs right away and it may write to the lead.

Alcance
crm:write
Permiso
Editar en el módulo
Tool del MCP
crm_prospects_updateEn la superficie completa; en la compacta, mb_execute_operation con id: "crm.prospects.update".

Costo declarado: hasta 89 lecturas y 20 escrituras por llamada (cuentan en el cupo diario).

Parámetros

prospect_idstringrutarequerido

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

updatesobjectcuerporequerido

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

Respuesta

prospectobject

Errores

Ejemplo

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
}'

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.

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

EscrituraDesde 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.

Alcance
crm:write
Permiso
Editar en el módulo
Tool del MCP
crm_prospects_archiveEn la superficie completa; en la compacta, mb_execute_operation con id: "crm.prospects.archive".

Costo declarado: hasta 1 lecturas y 2 escrituras por llamada (cuentan en el cupo diario).

Parámetros

prospect_idstringrutarequerido

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

reasonstringcuerpoopcional

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

Respuesta

oktrue
changedboolean

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

Errores

Ejemplo

curl -X POST "https://api.mb-suite.com/v1/crm/prospects/{prospect_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.

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

EscrituraIdempotenteDesde 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.

Alcance
crm:write
Permiso
Editar en el módulo
Tool del MCP
crm_prospects_restoreEn la superficie completa; en la compacta, mb_execute_operation con id: "crm.prospects.restore".

Costo declarado: hasta 1 lecturas y 2 escrituras por llamada (cuentan en el cupo diario).

Parámetros

prospect_idstringrutarequerido

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

Respuesta

oktrue
changedboolean

false when it was not archived: nothing was written.

Errores

Ejemplo

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

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

EscrituraIdempotenteDesde 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.

Alcance
crm:write
Permiso
Editar en el módulo
Tool del MCP
crm_prospects_convertEn la superficie completa; en la compacta, mb_execute_operation con id: "crm.prospects.convert".
Eventos que puede emitir
crm.deal.created

Costo declarado: hasta 10 lecturas y 6 escrituras por llamada (cuentan en el cupo diario).

Parámetros

prospect_idstringrutarequerido

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

pipeline_idstringcuerporequerido

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

stage_idstringcuerporequerido

A stage of that pipeline: stage_not_in_pipeline otherwise.

owner_idstringcuerporequerido

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

titlestringcuerpoopcional

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

valuenumbercuerpoopcional

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

currencystringcuerpoopcional

ISO 4217 code of value.

Respuesta

deal_idstring

Errores

Ejemplo

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"
}'

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.

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

IrreversibleDesde 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.

Con una API key, este DELETE se ejecuta directo: el registro queda 30 días en la papelera y la respuesta trae su trash_item_id. Con un token OAuth, y por el MCP, pide dry_run → confirm_token.

Alcance
crm:write y «Permitir eliminar» (crm:delete en OAuth)
Permiso
Editar en el módulo
Tool del MCP
crm_prospects_deleteEn la superficie completa; en la compacta, mb_execute_operation con id: "crm.prospects.delete".

Costo declarado: hasta 1 lecturas y 2 escrituras por llamada (cuentan en el cupo diario).

Parámetros

prospect_idstringrutarequerido

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

Respuesta

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.

Errores

Ejemplo

curl -X DELETE "https://api.mb-suite.com/v1/crm/prospects/{prospect_id}" \
  -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.

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

EscrituraMasiva · hasta 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.

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
Tool del MCP
crm_prospects_bulk_archiveEn la superficie completa; en la compacta, mb_execute_operation con id: "crm.prospects.bulk.archive".

Costo declarado: hasta 500 lecturas y 500 escrituras por llamada (cuentan en el cupo diario).

Parámetros

prospect_idsarray<string>cuerporequerido

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

reasonstringcuerpoopcional

Why they are archived: saved on each prospect.

Respuesta

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).

Errores

Ejemplo

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
}'

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.

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

EscrituraMasiva · hasta 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.

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
Tool del MCP
crm_prospects_bulk_update_interestEn la superficie completa; en la compacta, mb_execute_operation con id: "crm.prospects.bulk.update_interest".

Costo declarado: hasta 501 lecturas y 500 escrituras por llamada (cuentan en el cupo diario).

Parámetros

prospect_idsarray<string>cuerporequerido

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

interest_idstringcuerporequerido

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

Respuesta

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.

Errores

Ejemplo

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
}'

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.

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

EscrituraMasiva · hasta 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.

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
Tool del MCP
crm_prospects_bulk_update_ownerEn la superficie completa; en la compacta, mb_execute_operation con id: "crm.prospects.bulk.update_owner".

Costo declarado: hasta 500 lecturas y 500 escrituras por llamada (cuentan en el cupo diario).

Parámetros

prospect_idsarray<string>cuerporequerido

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

owner_idstring | nullcuerporequerido

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

Respuesta

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.

Errores

Ejemplo

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
}'

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.

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

EscrituraMasiva · hasta 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.

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
Tool del MCP
crm_prospects_bulk_update_labelsEn la superficie completa; en la compacta, mb_execute_operation con id: "crm.prospects.bulk.update_labels".

Costo declarado: hasta 540 lecturas y 500 escrituras por llamada (cuentan en el cupo diario).

Parámetros

prospect_idsarray<string>cuerporequerido

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

to_addarray<string>cuerpoopcional

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

to_removearray<string>cuerpoopcional

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

Respuesta

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.

Errores

Ejemplo

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
}'

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.

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

IrreversibleMasiva · hasta 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.

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 y «Permitir eliminar» (crm:delete en OAuth)
Permiso
Editar en el módulo
Tool del MCP
crm_prospects_bulk_deleteEn la superficie completa; en la compacta, mb_execute_operation con id: "crm.prospects.bulk.delete".

Costo declarado: hasta 500 lecturas y 1000 escrituras por llamada (cuentan en el cupo diario).

Parámetros

prospect_idsarray<string>cuerporequerido

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

Respuesta

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.

Errores

Ejemplo

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
}'

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.

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

LecturaIdempotenteDesde 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.

Alcance
crm:read
Permiso
Ver el módulo
Tool del MCP
crm_prospects_interests_listEn la superficie completa; en la compacta, mb_execute_operation con id: "crm.prospects.interests.list".

Costo declarado: hasta 50 lecturas y 0 escrituras por llamada (cuentan en el cupo diario).

Parámetros

Sin parámetros.

Respuesta

dataarray<object>

Errores

Ejemplo

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

curl "https://api.mb-suite.com/v1/crm/prospects/interests" \
  -H "Authorization: Bearer $MB_TEST_KEY"