Lists the dashboards of the organization, most recently updated first, paginated by cursor (limit 50 by default, up to 200). Each item has its title, description, kind (linked = created from a template and rendered from it; standalone = legacy, stores its own widgets), the template reference, platforms, labels (dashboards.labels.list), the featured flag, its manual position and who created it (created_by with created_by_name). Widget data is not included. Use dashboards.dashboards.get for the pages and widgets of one dashboard.
Alcance
dashboards:read
Permiso
Ver el módulo
Tool del MCP
dashboards_dashboards_listEn la superficie completa; en la compacta, mb_execute_operation con id: "dashboards.dashboards.list".
Costo declarado: hasta 202 lecturas y 0 escrituras por llamada (cuentan en el cupo diario).
Parámetros
limitintegerqueryopcional
How many dashboards per page (default 50, at most 200).
Por defecto: 50
cursorstringqueryopcional
The next_cursor of the previous page, to get the next one; omit it for the first page.
Returns a dashboard with its data source mapping (template slot id → data source id), the template's slots, date range, filters and its pages with a summary of each widget: type, title, effective data source, platform, metrics, dimensions and layout (x, y, w, h as saved: system templates store x as an order and the screen arranges the widgets, so two widgets can share a row position). For a linked dashboard the pages come from its template; template_available is false when that template no longer exists. It does not return widget data (numbers come from the live platforms and are read in MB Suite). Not found if the id does not exist in this organization.
Alcance
dashboards:read
Permiso
Ver el módulo
Tool del MCP
dashboards_dashboards_getEn la superficie completa; en la compacta, mb_execute_operation con id: "dashboards.dashboards.get".
Costo declarado: hasta 2 lecturas y 0 escrituras por llamada (cuentan en el cupo diario).
Parámetros
dashboard_idstringrutarequerido
The dashboard id (dashboards.dashboards.list).
Respuesta
idstring
Dashboard id.
titlestring
Title.
descriptionstring | null
Description.
kindenum
linked: created from a template and rendered from it; standalone: legacy, stores its own widgets.
Valores: linked, standalone
template_refobject | null
The template a linked dashboard renders.
platformsarray<string>
The platforms it shows.
label_idsarray<string>
Dashboard labels (dashboards.labels.list).
is_featuredboolean
Featured in the list.
positionnumber | null
Manual order in the list (dashboards.dashboards.reorder); null if never ordered.
created_atnumber | null
Created (epoch ms).
updated_atnumber | null
Last edited (epoch ms).
created_bystring | null
Uid of who created it, or the system label that did.
data_source_mappingobject
Template slot id → data source id (dashboards.data_sources.list).
data_source_slotsarray<object>
The template's data slots: the keys data_source_mapping accepts.
template_availableboolean
false when its template no longer exists or is not reachable.
Creates a dashboard linked to a template: the organization's own template (ORGANIZATION), a published template of its workspace (INHERITED, only for an account) or a published system template (SYSTEM). template_source is a hint; if the template is not there, the other sources are tried. data_source_mapping assigns each template slot (data_source_slots[].id from dashboards.templates.get) a data source of this organization (ids from dashboards.data_sources.list); a key that is not a slot of the template is data_source_slot_unknown and a source that is not connected to the organization is data_source_not_linked. Title and description default to the template's. The dashboard renders the template live: later edits to the template show up in it. Returns the new dashboard id and unmapped_slots: the template slots left without a source (their widgets show no data until dashboards.dashboards.update maps them). Requires edit access to Dashboards.
Instrucciones para agentes
After creating it, tell the person the dashboard's title and that its numbers load when it is opened in MB Suite. If unmapped_slots is not empty, say which data sources are still missing.
Alcance
dashboards:write
Permiso
Editar en el módulo
Tool del MCP
dashboards_dashboards_create_from_templateEn la superficie completa; en la compacta, mb_execute_operation con id: "dashboards.dashboards.create_from_template".
Costo declarado: hasta 3 lecturas y 1 escrituras por llamada (cuentan en el cupo diario).
Parámetros
template_idstringcuerporequerido
The template (dashboards.templates.list).
template_sourceenumcuerpoopcional
Where to look for the template first (SYSTEM, ORGANIZATION or INHERITED); the others are tried if it is not there.
Valores: SYSTEM, ORGANIZATION, INHERITED
source_org_idstringcuerpoopcional
INHERITED only: the workspace of this account (it must be its own).
titlestringcuerpoopcional
Title; default the template's.
descriptionstringcuerpoopcional
Description; default the template's.
data_source_mappingobjectcuerpoopcional
Template slot id (data_source_slots[].id of dashboards.templates.get or dashboards.dashboards.get) → data source id of this organization: the id of dashboards.data_sources.list (platform:id), or the account id of dashboards.data.sources (act_…, also as tiktok_organic:… for TikTok), which is stored as the former. A key that is not a slot of the template is rejected (data_source_slot_unknown); an account id connected on more than one platform, data_source_ambiguous.
Updates the title, description, labels (ids from dashboards.labels.list; an id that does not exist is label_unknown) and/or the full data source mapping of a linked dashboard (replaces the previous one; keys must be slots of its template, data_source_slot_unknown otherwise, and each new source must be connected to the organization). Pages and widgets are edited in MB Suite (or in the template a linked dashboard renders). Returns the updated dashboard. Requires edit access to Dashboards.
Alcance
dashboards:write
Permiso
Editar en el módulo
Tool del MCP
dashboards_dashboards_updateEn la superficie completa; en la compacta, mb_execute_operation con id: "dashboards.dashboards.update".
Costo declarado: hasta 2 lecturas y 1 escrituras por llamada (cuentan en el cupo diario).
Parámetros
dashboard_idstringrutarequerido
The dashboard id (dashboards.dashboards.list).
titlestringcuerpoopcional
New title.
descriptionstringcuerpoopcional
New description.
label_idsarray<string>cuerpoopcional
Dashboard labels (ids from dashboards.labels.list); replaces the list. An id that does not exist is label_unknown.
data_source_mappingobjectcuerpoopcional
The full mapping of a linked dashboard (replaces the previous one); keys are slots of its template.
Replaces data sources in a dashboard, in order: each replacement moves every slot (linked dashboard) or widget (standalone) that uses the old source (from) to the new one (to); in a linked dashboard a from that no slot uses is taken as a slot id when it is one of its template. Use it when an ad account or property was disconnected and replaced. Every new source must be connected to this organization (dashboards.data_sources.list). Returns how many slots or widgets changed (replaced) and the from values that matched nothing (unmatched: nothing is written for them). Requires edit access to Dashboards.
Alcance
dashboards:write
Permiso
Editar en el módulo
Tool del MCP
dashboards_dashboards_reconnect_sourcesEn la superficie completa; en la compacta, mb_execute_operation con id: "dashboards.dashboards.reconnect_sources".
Costo declarado: hasta 1 lecturas y 1 escrituras por llamada (cuentan en el cupo diario).
Parámetros
dashboard_idstringrutarequerido
The dashboard id (dashboards.dashboards.list).
replacementsarray<object>cuerporequerido
Each old source (from) by the new one (to), applied in order.
Respuesta
dashboard_idstring
The dashboard.
kindenum
linked (slots changed) or standalone (widgets changed).
Valores: linked, standalone
replacednumber
How many slots or widgets now point to the new source.
unmatchedarray<string>
from values that matched no source nor slot (nothing changed for them).
Sets the manual order of the organization's dashboards list, the same order people get by dragging the cards in MB Suite: pass the dashboard ids (from dashboards.dashboards.list) in the new order and each one gets position = its index (0, 1, 2…), which dashboards.dashboards.list returns. Send the whole list: a dashboard left out keeps its position and can tie with the new ones. Every id must exist in this organization: otherwise 404 dashboard_not_found with the missing ids in details and nothing is written. Only the dashboards that change place are written (changed says how many), so repeating the call is harmless. For an account, call it with MB-Organization (or org_id). Requires edit access to Dashboards.
Alcance
dashboards:write
Permiso
Editar en el módulo
Tool del MCP
dashboards_dashboards_reorderEn la superficie completa; en la compacta, mb_execute_operation con id: "dashboards.dashboards.reorder".
Costo declarado: hasta 500 lecturas y 500 escrituras por llamada (cuentan en el cupo diario).
Parámetros
ordered_idsarray<string>cuerporequerido
The dashboard ids (dashboards.dashboards.list) in the new order; each one once.
Deletes a dashboard. It goes to the 30-day trash (owners and admins restore it with platform.trash.restore); its template and data sources are not touched. Outside the screen it requires a dry run and a confirm_token, except a plain REST DELETE with a key allowed to delete. Requires edit access to Dashboards.
Instrucciones para agentes
Tell the person the dashboard stays 30 days in the trash and can be restored.
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
dashboards:writey «Permitir eliminar» (dashboards:delete en OAuth)
Permiso
Editar en el módulo
Tool del MCP
dashboards_dashboards_deleteEn la superficie completa; en la compacta, mb_execute_operation con id: "dashboards.dashboards.delete".
Renders the dashboard to a landscape A4 PDF (with the live data of every widget, for the given date range, filters and language) and returns a signed download link that expires in 24 hours, plus the file name and size. Rendering reads every connected platform of the dashboard and can take tens of seconds; very large dashboards may time out (pdf_render_timeout): retry with a shorter range. Not idempotent: each call renders a new file and counts 1 against the daily PDF quota of the organization that pays the call (the pdf external quota, by default 50 a day on a trial, 300 starter, 1,000 growth, 2,500 scale, 5,000 enterprise; it resets at 00:00 UTC). The MB-Quota-External-Platform (pdf), MB-Quota-External-Limit and MB-Quota-External-Remaining headers say what is left; once it is used up the call fails with 429 quota_exceeded (details.quota.type external) until the reset. Requires view access to Dashboards; not available in the public demo. In the practice organization (test keys) nothing is rendered and no platform is read: the response has the same shape, its link (valid 24 hours, like a real one) downloads a one-page stand-in PDF that says so, it carries simulated: true, uses none of the PDF quota and fires no webhook. With Google Ads, Google Business Profile, LinkedIn, TikTok or YouTube, their terms limit it through the API and the MCP: what they do not allow answers 403 platform_terms_restricted (the permissions guide lists what each platform allows).
Instrucciones para agentes
Give the person the download link and say it expires in 24 hours. Do not paste the link anywhere public.
Alcance
dashboards:write
Permiso
Ver el módulo
Tool del MCP
dashboards_dashboards_export_pdfEn la superficie completa; en la compacta, mb_execute_operation con id: "dashboards.dashboards.export_pdf".
Costo declarado: hasta 1 lecturas y 0 escrituras por llamada (cuentan en el cupo diario). Toca una plataforma externa (pdf): cuenta en el cupo de operaciones externas.
Parámetros
dashboard_idstringrutarequerido
The dashboard id (dashboards.dashboards.list).
date_rangeobjectcuerpoopcional
The period to print (default: the dashboard's): a preset, or a fixed range with from_date and to_date.
filtersarray<object>cuerpoopcional
Global filters to apply (the same as the dashboard's filter bar).
curl-X POST "https://api.mb-suite.com/v1/dashboards/{dashboard_id}/export-pdf" \
-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.En la práctica esta operación se simula: no sale nada y la respuesta trae simulated: true.
curl-X POST "https://api.mb-suite.com/v1/dashboards/{dashboard_id}/export-pdf" \
-H"Authorization: Bearer $MB_TEST_KEY"