Menu

API reference · Dashboards

Explorer views

dashboards · explorer_views · 7 operations

GET/v1/dashboards/explorer-views

List saved explorer views

dashboards.explorer_views.list

ReadIdempotentSince 2026-11-01

Lists the organization's saved Explorer views (module analytics) and CRM reports (module crm, only if the caller can see the CRM), in their manual order, paginated by cursor. Each view has its name, layout (stack or grid), date range and its tables, KPIs and charts with platform, metrics and dimensions. Filter with module. It does not return data: the numbers are read live in MB Suite.

Scope
dashboards:read
Permission
View the module
MCP tool
dashboards_explorer_views_listOn the full surface; on the compact one, mb_execute_operation with id: "dashboards.explorer_views.list".

Declared cost: up to 503 reads and 0 writes per call (they count against the daily quota).

Parameters

limitintegerqueryoptional

How many views per page (default 50, at most 200).

Default: 50

cursorstringqueryoptional

The next_cursor of the previous page, to get the next one; omit it for the first page.

moduleenumqueryoptional

analytics (the Explorer's views), crm (the CRM reports) or all (default).

Values: all, analytics, crm · Default: "all"

Response

dataarray<object>
has_moreboolean
next_cursorstring

Errors

Example

curl "https://api.mb-suite.com/v1/dashboards/explorer-views" \
  -H "Authorization: Bearer $MB_API_KEY"

Try it with your test API key

With a test API key the request always goes to your practice organization: example data you can reset.

curl "https://api.mb-suite.com/v1/dashboards/explorer-views" \
  -H "Authorization: Bearer $MB_TEST_KEY"
GET/v1/dashboards/explorer-views/{view_id}

Get one explorer view

dashboards.explorer_views.get

ReadIdempotentSince 2026-11-01

Returns a saved Explorer view or CRM report with its name, module, layout, date range and its tables, KPIs and charts. A CRM report requires access to the CRM. Not found if the id does not exist in this organization.

Scope
dashboards:read
Permission
View the module
MCP tool
dashboards_explorer_views_getOn the full surface; on the compact one, mb_execute_operation with id: "dashboards.explorer_views.get".

Declared cost: up to 3 reads and 0 writes per call (they count against the daily quota).

Parameters

view_idstringpathrequired

The view id (its list operation).

Response

idstring

View id.

namestring

Name.

moduleenum

analytics (Explorer) or crm (a CRM report).

Values: analytics, crm

layoutenum

stack or grid.

Values: stack, grid

date_rangeobject | null

The view's period.

tablesarray<object>

Its tables, KPIs and charts.

ordernumber | null

Manual order in its list.

is_favoriteboolean

Marked as favorite.

created_atnumber | null

Created (epoch ms).

updated_atnumber | null

Last edited (epoch ms).

created_bystring | null

Uid of who created it.

created_by_namestring | null

Their name («MB Suite» for the system).

Errors

Example

curl "https://api.mb-suite.com/v1/dashboards/explorer-views/{view_id}" \
  -H "Authorization: Bearer $MB_API_KEY"

Try it with your test API key

With a test API key the request always goes to your practice organization: example data you can reset.

curl "https://api.mb-suite.com/v1/dashboards/explorer-views/{view_id}" \
  -H "Authorization: Bearer $MB_TEST_KEY"
POST/v1/dashboards/explorer-views

Save a new explorer view

dashboards.explorer_views.create

WriteSince 2026-11-01

Saves a new Explorer view with a name, date range (default last 30 days), layout and its tables. With module crm it is a CRM report (shown in CRM → Performance → Reports) and requires edit access to the CRM as well. Each item of tables is a table, KPI or chart: type single (one platform or data source) or multi (several platforms), item_type table|kpi|graph, platform, data_source_id, platforms, dimensions (ids, or {id, level} to nest), metrics (metric ids of the platform, or custom:<id> of dashboards.custom_metrics.list), filters ({id, field_id, operator, value}), sorts, column_widths and custom_labels (keyed by metric or dimension id), and for a grid layout x, y, w, h. New platforms, metrics, dimensions and filter operators are checked against the platform's registry (unknown_platform, unknown_metric, unknown_dimension, invalid_table_filter, with the valid ones in details); ids the view already had are kept. A new preset_key must be one of the presets (preset_unknown). Returns the new view id. Requires edit access to Dashboards.

Scope
dashboards:write
Permission
Edit in the module
MCP tool
dashboards_explorer_views_createOn the full surface; on the compact one, mb_execute_operation with id: "dashboards.explorer_views.create".

Declared cost: up to 2 reads and 1 writes per call (they count against the daily quota).

Parameters

namestringbodyrequired

View name.

module"crm"bodyoptional

crm: a CRM report (needs CRM access too); omit it for an Explorer view.

layoutenumbodyoptional

stack (one under the other) or grid.

Values: stack, grid

date_rangeobjectbodyoptional

The view's period; default the last 30 days (type preset, preset_key last_30_days).

tablesarray<object>bodyoptional

The tables, KPIs and charts of the view.

Response

view_idstring

The new view's id.

Errors

Example

curl -X POST "https://api.mb-suite.com/v1/dashboards/explorer-views" \
  -H "Authorization: Bearer $MB_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "name": "NAME"
}'

Try it with your test API key

With a test API key the request always goes to your practice organization: example data you can reset.

curl -X POST "https://api.mb-suite.com/v1/dashboards/explorer-views" \
  -H "Authorization: Bearer $MB_TEST_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "name": "NAME"
}'
PATCH/v1/dashboards/explorer-views/{view_id}

Update an explorer view

dashboards.explorer_views.update

WriteIdempotentSince 2026-11-01

Updates the name, date range, layout and/or the full list of tables of a saved Explorer view or CRM report (the module does not change; a CRM report requires edit access to the CRM as well). Each item of tables is a table, KPI or chart: type single (one platform or data source) or multi (several platforms), item_type table|kpi|graph, platform, data_source_id, platforms, dimensions (ids, or {id, level} to nest), metrics (metric ids of the platform, or custom:<id> of dashboards.custom_metrics.list), filters ({id, field_id, operator, value}), sorts, column_widths and custom_labels (keyed by metric or dimension id), and for a grid layout x, y, w, h. New platforms, metrics, dimensions and filter operators are checked against the platform's registry (unknown_platform, unknown_metric, unknown_dimension, invalid_table_filter, with the valid ones in details); ids the view already had are kept. A new preset_key must be one of the presets (preset_unknown). Returns the updated view. Requires edit access to Dashboards.

Scope
dashboards:write
Permission
Edit in the module
MCP tool
dashboards_explorer_views_updateOn the full surface; on the compact one, mb_execute_operation with id: "dashboards.explorer_views.update".

Declared cost: up to 3 reads and 1 writes per call (they count against the daily quota).

Parameters

view_idstringpathrequired

The view id (its list operation).

namestringbodyoptional

New name.

module"crm"bodyoptional

Only to say it is a CRM report; a view's module does not change.

layoutenumbodyoptional

stack or grid.

Values: stack, grid

date_rangeobjectbodyoptional

New period.

tablesarray<object>bodyoptional

All the tables (replaces the list).

Response

viewobject

The view as saved.

Errors

Example

curl -X PATCH "https://api.mb-suite.com/v1/dashboards/explorer-views/{view_id}" \
  -H "Authorization: Bearer $MB_API_KEY"

Try it with your test API key

With a test API key the request always goes to your practice organization: example data you can reset.

curl -X PATCH "https://api.mb-suite.com/v1/dashboards/explorer-views/{view_id}" \
  -H "Authorization: Bearer $MB_TEST_KEY"
POST/v1/dashboards/explorer-views/{view_id}/duplicate

Duplicate an explorer view

dashboards.explorer_views.duplicate

WriteSince 2026-11-01

Copies a saved Explorer view or CRM report into a new one titled '<name> (Copia)' (the suffix in the caller's language: (Copia), (Copy) or (Cópia)) with the same module, layout, date range and tables. Returns the new view id. Requires edit access to Dashboards (and to the CRM for a CRM report).

Scope
dashboards:write
Permission
Edit in the module
MCP tool
dashboards_explorer_views_duplicateOn the full surface; on the compact one, mb_execute_operation with id: "dashboards.explorer_views.duplicate".

Declared cost: up to 3 reads and 1 writes per call (they count against the daily quota).

Parameters

view_idstringpathrequired

The view id (its list operation).

Response

view_idstring

The new view's id.

Errors

Example

curl -X POST "https://api.mb-suite.com/v1/dashboards/explorer-views/{view_id}/duplicate" \
  -H "Authorization: Bearer $MB_API_KEY"

Try it with your test API key

With a test API key the request always goes to your practice organization: example data you can reset.

curl -X POST "https://api.mb-suite.com/v1/dashboards/explorer-views/{view_id}/duplicate" \
  -H "Authorization: Bearer $MB_TEST_KEY"
POST/v1/dashboards/explorer-views/reorder

Reorder explorer views

dashboards.explorer_views.reorder

WriteIdempotentSince 2026-11-01

Sets the manual order of the Explorer views (or of the CRM reports): pass the ids of ONE list, Explorer views or CRM reports, in the new order; mixing both lists is mixed_view_lists. Every id must exist. Requires edit access to Dashboards (and to the CRM when CRM reports are included).

Scope
dashboards:write
Permission
Edit in the module
MCP tool
dashboards_explorer_views_reorderOn the full surface; on the compact one, mb_execute_operation with id: "dashboards.explorer_views.reorder".

Declared cost: up to 202 reads and 200 writes per call (they count against the daily quota).

Parameters

view_idsarray<string>bodyrequired

The ids of ONE list (Explorer views or CRM reports, not both) in the new order.

Response

countnumber

How many views were ordered.

changednumber

How many of them moved (only those are written), like dashboards.dashboards.reorder.

Errors

Example

curl -X POST "https://api.mb-suite.com/v1/dashboards/explorer-views/reorder" \
  -H "Authorization: Bearer $MB_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "view_ids": [
    "VIEW_ID"
  ]
}'

Try it with your test API key

With a test API key the request always goes to your practice organization: example data you can reset.

curl -X POST "https://api.mb-suite.com/v1/dashboards/explorer-views/reorder" \
  -H "Authorization: Bearer $MB_TEST_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "view_ids": [
    "VIEW_ID"
  ]
}'
DELETE/v1/dashboards/explorer-views/{view_id}

Delete an explorer view

dashboards.explorer_views.delete

IrreversibleSince 2026-11-01

Deletes a saved Explorer view or CRM report. It goes to the 30-day trash. Accounts that inherited it stop seeing it until it is restored: the dry run names the view and says how many of the workspace's accounts inherit it. 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 (and to the CRM for a CRM report).

With an API key, this DELETE runs directly: the record stays 30 days in the trash and the response carries its trash_item_id. With an OAuth token, and through the MCP, it needs dry_run → confirm_token.

Scope
dashboards:write and “Allow deletions” (dashboards:delete in OAuth)
Permission
Edit in the module
MCP tool
dashboards_explorer_views_deleteOn the full surface; on the compact one, mb_execute_operation with id: "dashboards.explorer_views.delete".

Declared cost: up to 203 reads and 2 writes per call (they count against the daily quota).

Parameters

view_idstringpathrequired

The view id (its list operation).

Response

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.

Errors

Example

curl -X DELETE "https://api.mb-suite.com/v1/dashboards/explorer-views/{view_id}" \
  -H "Authorization: Bearer $MB_API_KEY"

Try it with your test API key

With a test API key the request always goes to your practice organization: example data you can reset.

curl -X DELETE "https://api.mb-suite.com/v1/dashboards/explorer-views/{view_id}" \
  -H "Authorization: Bearer $MB_TEST_KEY"