List the CRM products (the catalog deal quotes are built from)
crm.products.list
LeituraIdempotenteDesde 2026-11-01
Lists the org's manually curated products (the ones deal quotes are built from) in the same manual order as the settings screen, paginated by cursor (limit up to 200). Archived products are left out unless include_archived is true (the page is filled skipping them). Each product says who created it (created_by_name). Each product carries its default price, currency, billing frequency (one_time or monthly), tax, SKU and custom fields. Synced feed catalogs are a different thing: see crm.catalogs.list.
Escopo
crm:read
Permissão
Ver o módulo
Tool do MCP
crm_products_listNa superfície completa; na compacta, mb_execute_operation com id: "crm.products.list".
Custo declarado: até 202 leituras e 0 escritas por chamada (contam na cota diária).
Returns one product of the org's product list (name, default price, currency, frequency, tax, description, SKU, image, custom fields, archived flag and order). Not found if the id does not exist. Use crm.products.list when you do not know the id.
Escopo
crm:read
Permissão
Ver o módulo
Tool do MCP
crm_products_getNa superfície completa; na compacta, mb_execute_operation com id: "crm.products.get".
Custo declarado: até 1 leituras e 0 escritas por chamada (contam na cota diária).
Adds a product at the end of the org's product list with a name and, optionally, default price (0 if omitted), currency (ISO code; without it the workspace's main currency applies), frequency (one_time by default, or monthly), tax percentage, description, SKU, image URL and up to 50 custom fields. Deal quotes copy these values when a line is added; editing the product later does not change existing quotes. Requires manage_products (owners, admins and CRM admins).
Escopo
crm:write
Permissão
Editar no módulo · Ação do CRM: manage_products
Tool do MCP
crm_products_createNa superfície completa; na compacta, mb_execute_operation com id: "crm.products.create".
Custo declarado: até 1 leituras e 1 escritas por chamada (contam na cota diária).
Parâmetros
namestringcorpoobrigatório
Name, up to 160 characters.
default_pricenumbercorpoopcional
Default unit price (0 or more) that a quote line copies. Default 0.
currencystringcorpoopcional
ISO 4217 code (USD, ARS…); without it the workspace's main currency applies.
default_frequencyenumcorpoopcional
one_time or monthly (a monthly line adds to the deal's MRR). Default one_time.
Valores: one_time, monthly
taxnumbercorpoopcional
Tax rate as a percentage, 0 to 100 (21 = 21 %).
descriptionstringcorpoopcional
Description, up to 2000 characters.
skustringcorpoopcional
SKU or internal code.
image_urlstring (uri)corpoopcional
Image URL (absolute).
custom_fieldsobjectcorpoopcional
Extra fields of the product, up to 50 keys with scalar values.
Updates one or more fields of a product: name, default price, currency, frequency, tax, description, SKU, image URL or custom fields. Pass null on currency, tax, description, sku, image_url or custom_fields to clear them. Existing deal quotes keep the values they copied. Fails with no_changes if nothing is sent. Requires manage_products.
Escopo
crm:write
Permissão
Editar no módulo · Ação do CRM: manage_products
Tool do MCP
crm_products_updateNa superfície completa; na compacta, mb_execute_operation com id: "crm.products.update".
Custo declarado: até 1 leituras e 1 escritas por chamada (contam na cota diária).
Parâmetros
product_idstringrotaobrigatório
The product's id, from crm.products.list.
namestringcorpoopcional
Name, up to 160 characters.
default_pricenumbercorpoopcional
Default unit price (0 or more) that a quote line copies.
currencystring | nullcorpoopcional
ISO 4217 code (USD, ARS…); without it the workspace's main currency applies. null clears it.
default_frequencyenumcorpoopcional
one_time or monthly (a monthly line adds to the deal's MRR).
Valores: one_time, monthly
taxnumber | nullcorpoopcional
Tax rate as a percentage, 0 to 100 (21 = 21 %). null clears it.
descriptionstring | nullcorpoopcional
Description, up to 2000 characters. null clears it.
skustring | nullcorpoopcional
SKU or internal code. null clears it.
image_urlstring (uri) | nullcorpoopcional
Image URL (absolute). null clears it.
custom_fieldsobject | nullcorpoopcional
Extra fields of the product, up to 50 keys with scalar values. The whole map; null clears it.
Sets the manual order of the product list: each id in ordered_ids gets its position as order (up to 2000 ids, usually the full list as shown). An id that does not exist fails with product_not_found. Not audited, like every reorder. Requires manage_products.
Escopo
crm:write
Permissão
Editar no módulo · Ação do CRM: manage_products
Tool do MCP
crm_products_reorderNa superfície completa; na compacta, mb_execute_operation com id: "crm.products.reorder".
Custo declarado: até 0 leituras e 2000 escritas por chamada (contam na cota diária).
Parâmetros
ordered_idsarray<string>corpoobrigatório
Product ids (crm.products.list) in the new order, usually the whole list, up to 2000.
Archives (is_archived: true) or unarchives (false) a product. An archived product stays referenceable by existing quotes but is hidden from the product picker and from crm.products.list unless include_archived is set. This is NOT the trash (see crm.products.delete). Requires manage_products.
Escopo
crm:write
Permissão
Editar no módulo · Ação do CRM: manage_products
Tool do MCP
crm_products_archiveNa superfície completa; na compacta, mb_execute_operation com id: "crm.products.archive".
Custo declarado: até 1 leituras e 1 escritas por chamada (contam na cota diária).
Parâmetros
product_idstringrotaobrigatório
The product's id, from crm.products.list.
is_archivedbooleancorpoobrigatório
true archives it (hidden from the product picker), false brings it back.
Deletes a product from the org's list. It goes to the 30-day trash: restore it with platform.trash.restore (or from CRM settings → Trash); deal quotes that used it keep their own copy of the line. Prefer crm.products.archive when it should just stop being offered. Requires manage_products.
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:writee «Permitir exclusões» (crm:delete no OAuth)
Permissão
Editar no módulo · Ação do CRM: manage_products
Tool do MCP
crm_products_deleteNa superfície completa; na compacta, mb_execute_operation com id: "crm.products.delete".
Custo declarado: até 1 leituras e 2 escritas por chamada (contam na cota diária).
Parâmetros
product_idstringrotaobrigatório
The product's id, from crm.products.list.
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.
EscritaEm massa · até 500IdempotenteDesde 2026-11-01
Archives (is_archived: true) or unarchives (false) up to 500 products at once. Ids that do not exist are skipped and counted in missing, and products already in that state are left as they are (unchanged), the same as the bulk delete. Requires manage_products. Bulk: outside the screen it requires a dry run (which lists the products that change and flags unknown ids and the ones that would not change) 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 · Ação do CRM: manage_products
Tool do MCP
crm_products_bulk_archiveNa superfície completa; na compacta, mb_execute_operation com id: "crm.products.bulk.archive".
Custo declarado: até 0 leituras e 500 escritas por chamada (contam na cota diária).
Parâmetros
product_idsarray<string>corpoobrigatório
Up to 500 product ids (crm.products.list); ids that do not exist are skipped and counted in missing.
is_archivedbooleancorpoobrigatório
true archives them, false brings them back.
Resposta
updatednumber
missingnumber
Ids that are not products of the organization (skipped).
Deletes up to 500 products; each one goes to the 30-day trash and can be restored individually with platform.trash.restore. Unknown ids are skipped: deleted counts what was deleted and missing what did not exist. Deal quotes keep their own copy of the lines. Requires manage_products. 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:writee «Permitir exclusões» (crm:delete no OAuth)
Permissão
Editar no módulo · Ação do CRM: manage_products
Tool do MCP
crm_products_bulk_deleteNa superfície completa; na compacta, mb_execute_operation com id: "crm.products.bulk.delete".
Custo declarado: até 500 leituras e 1000 escritas por chamada (contam na cota diária).
Parâmetros
product_idsarray<string>corpoobrigatório
Up to 500 product ids (crm.products.list); ids that do not exist are skipped and counted in missing.
Resposta
deletednumber
missingnumber
Ids that are not products of the organization (skipped).
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.