Lists all the workspace's custom metrics (from an account, its workspace's; up to 50), by name: formula and its readable text, format (number, currency, percent), decimals, whether higher is better, platforms, is_blended (more than one platform: usable in KPIs and charts, not in tables) and who created it (created_by_id, created_by_name). Widgets reference a custom metric by its public_id (custom:<id>).
Alcance
dashboards:read
Permiso
Ver el módulo
Tool del MCP
dashboards_custom_metrics_listEn la superficie completa; en la compacta, mb_execute_operation con id: "dashboards.custom_metrics.list".
Costo declarado: hasta 51 lecturas y 0 escrituras por llamada (cuentan en el cupo diario).
Creates a custom metric in the workspace (not in an account: workspace_only) with a unique name (max 60), optional description, formula, format, decimals (0-4) and higher_is_better. The formula is a tree: {kind: 'metric', metric_id, platform} (a metric id of that platform's registry, numeric), {kind: 'constant', value}, {kind: 'binary', op: '+'|'-'|'*'|'/', left, right} or {kind: 'group', child} (parentheses); up to 20 metrics and 12 levels, never another custom metric. Up to 50 per workspace. Returns the new id; widgets use custom:<id>. Requires edit access to Dashboards in the workspace.
Alcance
dashboards:write
Permiso
Editar en el módulo
Tool del MCP
dashboards_custom_metrics_createEn la superficie completa; en la compacta, mb_execute_operation con id: "dashboards.custom_metrics.create".
Costo declarado: hasta 51 lecturas y 1 escrituras por llamada (cuentan en el cupo diario).
Parámetros
namestringcuerporequerido
A unique name in the workspace (up to 60 characters).
formulaanycuerporequerido
The formula, as a tree of nodes (see the operation's description).
Updates any of the name, description (empty clears it), formula, format, decimals and higher_is_better of a workspace custom metric; what is not sent is kept. The formula is a tree: {kind: 'metric', metric_id, platform} (a metric id of that platform's registry, numeric), {kind: 'constant', value}, {kind: 'binary', op: '+'|'-'|'*'|'/', left, right} or {kind: 'group', child} (parentheses); up to 20 metrics and 12 levels, never another custom metric. Every widget that uses it shows the new definition. Returns the updated metric. Requires edit access to Dashboards in the workspace.
Alcance
dashboards:write
Permiso
Editar en el módulo
Tool del MCP
dashboards_custom_metrics_updateEn la superficie completa; en la compacta, mb_execute_operation con id: "dashboards.custom_metrics.update".
Costo declarado: hasta 52 lecturas y 1 escrituras por llamada (cuentan en el cupo diario).
Parámetros
metric_idstringrutarequerido
The custom metric id (dashboards.custom_metrics.list; without the custom: prefix).
namestringcuerpoopcional
A unique name in the workspace (up to 60 characters).
descriptionstringcuerpoopcional
A new description (empty clears it).
formulaanycuerpoopcional
The new formula, as a tree of nodes (see the operation's description).
Deletes a workspace custom metric. It goes to the 30-day trash; widgets and report blocks that use it show an error until it is restored. 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 in the workspace.
Instrucciones para agentes
Warn the person that every widget using this metric breaks until it is 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_custom_metrics_deleteEn la superficie completa; en la compacta, mb_execute_operation con id: "dashboards.custom_metrics.delete".
Costo declarado: hasta 1 lecturas y 2 escrituras por llamada (cuentan en el cupo diario).
Parámetros
metric_idstringrutarequerido
The custom metric id (dashboards.custom_metrics.list; without the custom: prefix).
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.