Lists the report themes available to the organization: the four system themes (classic, elegant, playful, bold; first, unless include_system is false) and the organization's own, newest first, in one list paginated by cursor (the system themes count in limit). Each theme has seven hex colors and its fonts. Apply one to a template, report or instance with theme_id + theme_source. Requires view access to Reports.
Scope
reports:read
Permission
View the module
MCP tool
reports_themes_listOn the full surface; on the compact one, mb_execute_operation with id: "reports.themes.list".
Declared cost: up to 51 reads and 0 writes per call (they count against the daily quota).
Parameters
limitintegerqueryoptional
How many themes 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.
include_systembooleanqueryoptional
Include the four system themes first (default true); they count in limit.
Returns one report theme: a system one (classic, elegant, playful, bold) or the organization's, with its colors and fonts; without source it looks in both. Not found if the id does not exist. Requires view access to Reports.
Scope
reports:read
Permission
View the module
MCP tool
reports_themes_getOn the full surface; on the compact one, mb_execute_operation with id: "reports.themes.get".
Declared cost: up to 1 reads and 0 writes per call (they count against the daily quota).
Parameters
theme_idstringpathrequired
The theme id (reports.themes.list): a system one (classic, elegant, playful, bold) or the organization's.
Creates a report theme of the organization: a name (up to 100 characters), seven colors as #rrggbb (primary, secondary, background, text, heading, border, accent) and the fonts (Inter, Merriweather, Roboto, Playfair Display or Montserrat; an optional separate heading font). Returns the theme id. Requires edit access to Reports.
Scope
reports:write
Permission
Edit in the module
MCP tool
reports_themes_createOn the full surface; on the compact one, mb_execute_operation with id: "reports.themes.create".
Declared cost: up to 0 reads and 1 writes per call (they count against the daily quota).
Updates the name, the colors (all seven) or the fonts of one of the organization's report themes; everything that uses it changes look. System themes cannot be edited (409 system_theme_read_only). Returns the updated theme. Fields go inside updates. Requires edit access to Reports.
Scope
reports:write
Permission
Edit in the module
MCP tool
reports_themes_updateOn the full surface; on the compact one, mb_execute_operation with id: "reports.themes.update".
Declared cost: up to 1 reads and 1 writes per call (they count against the daily quota).
Parameters
theme_idstringpathrequired
The id of one of the organization's own themes (reports.themes.list, is_system false).
Deletes one of the organization's report themes; it stays 30 days in the trash. Templates, reports and instances that used it fall back to the default look until it is restored (it comes back with the same id): the dry run says how many use it. System themes cannot be deleted (409 system_theme_read_only). Requires edit access to Reports. Outside the screen it needs a dry run and a confirm_token, or a key with deletion enabled.
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
reports:writeand “Allow deletions” (reports:delete in OAuth)
Permission
Edit in the module
MCP tool
reports_themes_deleteOn the full surface; on the compact one, mb_execute_operation with id: "reports.themes.delete".
Declared cost: up to 1 reads and 2 writes per call (they count against the daily quota).
Parameters
theme_idstringpathrequired
The id of one of the organization's own themes (reports.themes.list, is_system false).
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.