Returns the quote configuration of the CRM: the templates (layout, accent color, intro text, attached pages, which one is the default), the number prefix and the next number, the default validity in days, the number format and decimals, the issuer data printed on the document and the three footer texts. Never empty: an organization that never saved a template gets the synthetic template named 'Estándar' (id __default) with its brand color, and it stays when another template is created.
Alcance
crm:read
Permiso
Ver el módulo
Tool del MCP
crm_quotes_config_getEn la superficie completa; en la compacta, mb_execute_operation con id: "crm.quotes.config.get".
Costo declarado: hasta 1 lecturas y 0 escrituras por llamada (cuentan en el cupo diario).
Parámetros
Sin parámetros.
Respuesta
templatesarray<object>
number_prefixstring
next_numbernumber
Next correlative number the first emission of a deal takes.
number_paddingnumber
Digits of the number (4 → 0042).
default_validity_daysnumber
number_formatenum | null
Valores: auto, dot_comma, comma_dot
decimalsnumber | null
issuerobject | null
Issuer data printed on the document; legal_name is printed as issuer.name in crm.quotes.export.
footer_leftstring | null
footer_centerstring | null
footer_rightstring | null
updated_atnumber | null
Last change of the stored configuration, epoch ms (absent while nothing was ever saved).
Updates any of: the number prefix, the next number (it never goes back: the stored one wins if it is higher, so numbers already emitted are never reused), the default validity in days, the number format (auto, dot_comma, comma_dot) and decimals (0 or 2), the issuer data (replaced as a whole) and the three footer texts (an empty string leaves that position blank; {{numero}} prints the quote number). Fields not sent are kept. Returns the next number in force. Templates are managed with crm.quotes.templates.*. Requires manage_quote_config (managers and admins).
Alcance
crm:write
Permiso
Editar en el módulo · Acción del CRM: manage_quote_config
Tool del MCP
crm_quotes_config_updateEn la superficie completa; en la compacta, mb_execute_operation con id: "crm.quotes.config.update".
Costo declarado: hasta 1 lecturas y 1 escrituras por llamada (cuentan en el cupo diario).
Parámetros
number_prefixstringcuerpoopcional
Printed prefix of the quote number, up to 24 characters (for example 'COT-2026-').
next_numberintegercuerpoopcional
Next correlative number; it never goes back: the stored one wins if it is higher.
default_validity_daysintegercuerpoopcional
Default validity of a quote in days (1 to 365); each emission can change it.
number_formatenumcuerpoopcional
Thousands and decimal separators of the amounts: auto (by the document language), dot_comma (1.234,56) or comma_dot (1,234.56).
Valores: auto, dot_comma, comma_dot
decimals0 | 2cuerpoopcional
Decimals of the amounts: 0 or 2.
issuerobjectcuerpoopcional
The issuer printed on the document, replaced as a whole (fields not sent are left empty).
footer_leftstringcuerpoopcional
Left footer text; an empty string leaves it blank; {{numero}} prints the quote number.
footer_centerstringcuerpoopcional
Center footer text; an empty string leaves it blank; {{numero}} prints the quote number.
footer_rightstringcuerpoopcional
Right footer text; an empty string leaves it blank; {{numero}} prints the quote number.
Creates a quote template (without template.id) or replaces the whole template with that id (fields not sent, like intro_text, are left empty; an id that does not exist answers quote_template_not_found): name, layout (classic, modern or compact), accent color (#rrggbb), optional intro text, the ordered ids of the attached pages (from crm.quotes.pages.list, up to 20; one that does not exist answers quote_page_not_found) and whether it is the default (marking it unmarks the others; one template is always the default). In an organization that never saved a template the synthetic 'Estándar' (id __default) stays next to the new one. Returns the template id. A template is the design every quote uses: a deal's quote (its lines and totals) is built with crm.deals.update_quote and emitted with crm.quotes.emit. Requires manage_quote_config.
Alcance
crm:write
Permiso
Editar en el módulo · Acción del CRM: manage_quote_config
Tool del MCP
crm_quotes_templates_saveEn la superficie completa; en la compacta, mb_execute_operation con id: "crm.quotes.templates.save".
Costo declarado: hasta 1 lecturas y 1 escrituras por llamada (cuentan en el cupo diario).
Parámetros
templateobjectcuerporequerido
The whole template: a replace overwrites every field (what is not sent is left empty).
Deletes a quote template for good: templates have no trash, so it cannot be restored (quotes already emitted keep their PDF and their snapshot). If it was the default, the first remaining template becomes the default; when none remains, the synthetic 'Estándar' (id __default) comes back, and that one alone cannot be deleted (quote_template_last). The dry run names the template and which one becomes the default. Confirm with the user first. Requires manage_quote_config.
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:writey «Permitir eliminar» (crm:delete en OAuth)
Permiso
Editar en el módulo · Acción del CRM: manage_quote_config
Tool del MCP
crm_quotes_templates_deleteEn la superficie completa; en la compacta, mb_execute_operation con id: "crm.quotes.templates.delete".
Costo declarado: hasta 2 lecturas y 1 escrituras por llamada (cuentan en el cupo diario).
Parámetros
template_idstringrutarequerido
The template's id, from crm.quotes.config.get (templates[].id); __default is the synthetic 'Estándar' template.
Marks a template as the default one (the others stop being default): it is the template a new emission uses when none is chosen; also the synthetic 'Estándar' (id __default). Idempotent. Requires manage_quote_config.
Alcance
crm:write
Permiso
Editar en el módulo · Acción del CRM: manage_quote_config
Tool del MCP
crm_quotes_templates_set_defaultEn la superficie completa; en la compacta, mb_execute_operation con id: "crm.quotes.templates.set_default".
Costo declarado: hasta 2 lecturas y 1 escrituras por llamada (cuentan en el cupo diario).
Parámetros
template_idstringrutarequerido
The template's id, from crm.quotes.config.get (templates[].id); __default is the synthetic 'Estándar' template.
Copies a template with all its settings and pages under the name '<name> (copia)', never as the default, and returns the id of the copy. Requires manage_quote_config.
Alcance
crm:write
Permiso
Editar en el módulo · Acción del CRM: manage_quote_config
Tool del MCP
crm_quotes_templates_duplicateEn la superficie completa; en la compacta, mb_execute_operation con id: "crm.quotes.templates.duplicate".
Costo declarado: hasta 2 lecturas y 1 escrituras por llamada (cuentan en el cupo diario).
Parámetros
template_idstringrutarequerido
The template's id, from crm.quotes.config.get (templates[].id); __default is the synthetic 'Estándar' template.
curl-X POST "https://api.mb-suite.com/v1/crm/quotes/templates/{template_id}/duplicate" \
-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/quotes/templates/{template_id}/duplicate" \
-H"Authorization: Bearer $MB_TEST_KEY"
GET/v1/crm/quotes/pages
List the quote attachment pages
crm.quotes.pages.list
LecturaIdempotenteDesde 2026-11-01
Lists the attachment pages that templates can append at the end of a quote (terms of sale, payment methods…), ordered by title, with their size; with include_content, also their sanitized HTML. Paginated by cursor (limit up to 50). Templates reference them by id in page_ids.
Alcance
crm:read
Permiso
Ver el módulo
Tool del MCP
crm_quotes_pages_listEn la superficie completa; en la compacta, mb_execute_operation con id: "crm.quotes.pages.list".
Costo declarado: hasta 52 lecturas y 0 escrituras por llamada (cuentan en el cupo diario).
Parámetros
limitintegerqueryopcional
Pages per call, 1 to 50 (default 20).
Por defecto: 20
cursorstringqueryopcional
next_cursor of the previous page.
include_contentbooleanqueryopcional
Include each page's sanitized HTML in content_html (default false: only title, size and dates).
Creates an attachment page (title up to 160 characters and its rich-text HTML, sanitized when saved: scripts and event attributes are removed) that templates can append at the end of a quote; add its id to a template with crm.quotes.templates.save. Returns the page id. It is not the quote itself: a deal's quote (its lines and totals) is built with crm.deals.update_quote and its PDF is emitted with crm.quotes.emit. Requires manage_quote_config.
Alcance
crm:write
Permiso
Editar en el módulo · Acción del CRM: manage_quote_config
Tool del MCP
crm_quotes_pages_createEn la superficie completa; en la compacta, mb_execute_operation con id: "crm.quotes.pages.create".
Costo declarado: hasta 0 lecturas y 1 escrituras por llamada (cuentan en el cupo diario).
Parámetros
titlestringcuerporequerido
Page title, up to 160 characters.
content_htmlstringcuerporequerido
Rich-text HTML of the page; it is sanitized when saved (scripts and event attributes are removed).
Changes the title and/or the HTML content (sanitized when saved) of an attachment page; with neither it answers no_changes. Quotes already emitted keep the PDF they were issued with. Requires manage_quote_config.
Alcance
crm:write
Permiso
Editar en el módulo · Acción del CRM: manage_quote_config
Tool del MCP
crm_quotes_pages_updateEn la superficie completa; en la compacta, mb_execute_operation con id: "crm.quotes.pages.update".
Costo declarado: hasta 1 lecturas y 1 escrituras por llamada (cuentan en el cupo diario).
Parámetros
page_idstringrutarequerido
An attachment page's id, from crm.quotes.pages.list.
Deletes an attachment page for good and removes it from every template that used it: pages have no trash, so it cannot be restored (quotes already emitted keep their PDF). The dry run names the page and the templates it leaves. Confirm with the user first. Requires manage_quote_config.
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:writey «Permitir eliminar» (crm:delete en OAuth)
Permiso
Editar en el módulo · Acción del CRM: manage_quote_config
Tool del MCP
crm_quotes_pages_deleteEn la superficie completa; en la compacta, mb_execute_operation con id: "crm.quotes.pages.delete".
Costo declarado: hasta 3 lecturas y 2 escrituras por llamada (cuentan en el cupo diario).
Parámetros
page_idstringrutarequerido
An attachment page's id, from crm.quotes.pages.list.
Emits the deal's quote as a PDF (rendered by MB Suite's PDF service) and returns its download URL and number. The first emission reserves the next number for the deal; later emissions of the same deal reuse it and add a new row to its history (crm.quotes.emissions.list). Options: template (one that does not exist answers quote_template_not_found), which of its pages to include (only among the template's: quote_page_not_in_template otherwise), document language (es, en, pt-BR), number format and decimals, validity in days and a note for this emission. The deal must have line items (crm.deals.update_quote); see the document first with crm.quotes.export. When the PDF service is not available it answers pdf_unavailable (503) and nothing is emitted: retry in a few seconds. Not idempotent. Requires edit_deal on the deal.
Alcance
crm:write
Permiso
Editar en el módulo
Tool del MCP
crm_quotes_emitEn la superficie completa; en la compacta, mb_execute_operation con id: "crm.quotes.emit".
Costo declarado: hasta 26 lecturas y 6 escrituras por llamada (cuentan en el cupo diario). Toca una plataforma externa (pdf): cuenta en el cupo de operaciones externas.
Parámetros
deal_idstringrutarequerido
The deal's id, from crm.deals.list.
localeenumcuerporequerido
Language of the document: es, en or pt-BR.
Valores: es, en, pt-BR
validity_daysintegercuerporequerido
Validity of this quote in days (1 to 365); crm.quotes.config.get has the default.
template_idstringcuerpoopcional
Template to use (default: the default one). The template's id, from crm.quotes.config.get (templates[].id); __default is the synthetic 'Estándar' template.
include_page_idsarray<string>cuerpoopcional
Which of the template's attachment pages to include (ids from the template's page_ids); omit it for all of them. A page the template does not have answers quote_page_not_in_template.
number_formatenumcuerpoopcional
Separators for this emission (default: the configuration's).
Valores: auto, dot_comma, comma_dot
decimals0 | 2cuerpoopcional
Decimals for this emission, 0 or 2 (default: the configuration's).
notestringcuerpoopcional
A note printed on this emission only, up to 1000 characters.
Con una API key de prueba el pedido va siempre a tu organización de práctica: datos de ejemplo que puedes reiniciar.En la práctica esta operación no se simula (toca otra plataforma): responde 409 sandbox_external_unavailable.
GET/v1/crm/deals/{deal_id}/quote/emissions
List the quote emissions of a deal
crm.quotes.emissions.list
LecturaIdempotenteDesde 2026-11-01
Returns the emissions of the deal's quote, newest first, paginated by cursor (limit up to 50, default 20): number, language, validity, totals, currency, the template used, who emitted it and a fresh download URL of its PDF; with include_content, also the frozen content (issuer, client, line items, intro and footer). deal_not_found when the deal does not exist or the seller's scope hides it.
Alcance
crm:read
Permiso
Ver el módulo
Tool del MCP
crm_quotes_emissions_listEn la superficie completa; en la compacta, mb_execute_operation con id: "crm.quotes.emissions.list".
Costo declarado: hasta 53 lecturas y 0 escrituras por llamada (cuentan en el cupo diario).
Parámetros
deal_idstringrutarequerido
The deal's id, from crm.deals.list.
limitintegerqueryopcional
Emissions per call, 1 to 50 (default 20), newest first.
Por defecto: 20
cursorstringqueryopcional
next_cursor of the previous page.
include_contentbooleanqueryopcional
Include each emission's frozen content (issuer, client, line_items, intro_text, footer); default false: number, dates, template, totals and the PDF link.
Builds the deal's quote document from its current state, exactly what the emission preview shows: issuer (name is the configuration's legal_name, the logo as an absolute URL), client (company and primary person), line items and totals, currency, the number it has (or the next one, is_preview_number), validity, template layout and color, the attached pages (sanitized HTML) and the footer. Optional template (quote_template_not_found when it does not exist), pages (only among the template's: quote_page_not_in_template otherwise) and language. It writes nothing and does not reserve a number: use crm.quotes.emit for the PDF. Not found if the deal does not exist or the seller's scope hides it.
Alcance
crm:read
Permiso
Ver el módulo
Tool del MCP
crm_quotes_exportEn la superficie completa; en la compacta, mb_execute_operation con id: "crm.quotes.export".
Costo declarado: hasta 26 lecturas y 0 escrituras por llamada (cuentan en el cupo diario).
Parámetros
deal_idstringrutarequerido
The deal's id, from crm.deals.list.
template_idstringqueryopcional
Template to build it with (default: the default one). The template's id, from crm.quotes.config.get (templates[].id); __default is the synthetic 'Estándar' template.
include_page_idsarray<string>queryopcional
Which of the template's attachment pages to include (ids from the template's page_ids); omit it for all of them. A page the template does not have answers quote_page_not_in_template.
localeenumqueryopcional
Language of the document: es (default), en or pt-BR.
Valores: es, en, pt-BR
Respuesta
localestring
number_formattedstring
is_preview_numberboolean
true when the deal has no number yet: the one shown is the next one, reserved only by crm.quotes.emit.