Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
PRESET_API_TOKENYesPreset API token (required)
PRESET_WORKSPACENoAuto-connect to this workspace
PRESET_API_SECRETYesPreset API secret (required)
PRESET_MCP_LOG_LEVELNoLogging verbosityINFO
PRESET_MCP_SQL_ROW_LIMITNoMax rows from SQL queries1000
PRESET_MCP_SQL_SAMPLE_ROWSNoRows shown in standard mode5
PRESET_MCP_TRUNCATION_TAILNoTail rows kept when truncating5
PRESET_MCP_TRUNCATION_THRESHOLDNoFull-mode truncation cutoff50

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tasks
{
  "list": {},
  "cancel": {},
  "requests": {
    "tools": {
      "call": {}
    },
    "prompts": {
      "get": {}
    },
    "resources": {
      "read": {}
    }
  }
}
tools
{
  "listChanged": true
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
list_workspacesA

List all Preset workspaces you have access to.

Call this FIRST to discover workspace titles, then pass one to use_workspace.

use_workspaceA

Switch to a different Preset workspace by its exact title.

You must call this before any read/write tools if PRESET_WORKSPACE was not set at startup. Use list_workspaces to discover titles.

Args: workspace_title: Exact workspace title (e.g. "Mysten Labs--General")

list_dashboardsA

List dashboards in the current workspace.

Start here to discover dashboard IDs, then use get_dashboard for detail on a specific one.

Args: response_mode: 'compact' (id+title), 'standard' (key fields), or 'full' (raw API response). Default: standard. name_contains: Case-insensitive substring filter on dashboard_title.

get_dashboardA

Get detail for a single dashboard.

Use list_dashboards first to find valid IDs. Use response_mode to control verbosity — dashboards can contain large position_json and json_metadata blobs.

Args: dashboard_id: Numeric dashboard ID response_mode: 'compact' (id+title), 'standard' (key fields, no position_json), or 'full' (raw API response). Default: full.

get_chartA

Get detail for a single chart including params and query context.

Returns the chart's visualization type, parameters, query_context, datasource info, and other metadata. Use list_charts first to find valid IDs.

Args: chart_id: Numeric chart ID response_mode: 'compact' (id+name+viz_type), 'standard' (key fields), or 'full' (raw API response). Default: full.

get_datasetA

Get detail for a single dataset including columns, metrics, and SQL.

Use list_datasets first to find valid IDs. Set refresh_columns=True to query the source database for current column metadata (useful when the underlying table schema has changed).

Args: dataset_id: Numeric dataset ID response_mode: 'compact' (id+name+schema), 'standard' (columns, metrics, sql), or 'full' (raw API response). Default: full. refresh_columns: If True, also fetch live column metadata from the source database and include as 'external_columns'.

get_databaseA

Get detail for a single database connection.

Use list_databases first to find valid IDs.

Args: database_id: Numeric database ID response_mode: 'compact' (id+name+backend), 'standard' (key fields), or 'full' (raw API response). Default: full.

list_chartsA

List charts in the current workspace.

Use this to find chart IDs and see which viz types are in use.

Args: response_mode: 'compact', 'standard', or 'full'. Default: standard. name_contains: Case-insensitive substring filter on slice_name. viz_type: Exact-match filter on viz_type (e.g. "echarts_timeseries_bar"). dataset_id: Filter to charts using this datasource_id.

list_datasetsA

List datasets (virtual tables) in the current workspace.

Datasets are the data sources for charts. Use list_databases to find connection IDs needed for creating new datasets.

Args: response_mode: 'compact', 'standard', or 'full'. Default: standard. name_contains: Case-insensitive substring filter on table_name. schema: Server-side exact-match filter on schema name. database_id: Server-side filter to datasets in this database.

list_databasesA

List database connections in the current workspace.

Call this BEFORE run_sql or create_dataset to find a valid database_id.

Args: response_mode: 'compact', 'standard', or 'full'. Default: standard. name_contains: Case-insensitive substring filter on database_name.

workspace_catalogA

Build a relationship-aware catalog of the current workspace.

Returns databases, datasets, charts, and dashboards with their dependency links (dataset→database, chart→dataset). Use this to understand workspace topology BEFORE creating or updating resources.

Much cheaper on tokens than snapshot_workspace — returns only the fields needed for navigation.

run_sqlA

Execute a read-only SQL query through a Preset database connection.

This is a debugging/verification tool — use it to confirm a query works through Preset's connection before creating a dataset. For primary SQL exploration, prefer your Snowflake MCP (igloo-mcp).

Only SELECT, SHOW, DESCRIBE, and EXPLAIN are permitted. Write operations and multi-statement queries are blocked.

Args: sql: SQL query to execute (read-only, single statement) database_id: Database connection ID — use list_databases to find it schema: Optional schema name limit: Max rows to return (default 1000) response_mode: 'compact' (columns only), 'standard' (5 sample rows), or 'full' (all rows with smart truncation). Default: standard.

query_datasetA

Query a dataset using Superset's metric/dimension abstraction.

This executes the same query path that charts use — aggregating metrics over dimension columns — without needing raw SQL. Use get_dataset to discover available metrics and columns first.

For time-series queries, set time_column plus start/end (ISO-8601) and optionally granularity (e.g. "P1D", "P1W").

Args: dataset_id: ID of the dataset to query metrics: Metric names to aggregate (e.g. ["count", "revenue"]) columns: Dimension columns to group by time_column: Time column for time-filtered or time-series queries start: Start date/time in ISO-8601 format (e.g. "2025-01-01") end: End date/time in ISO-8601 format (e.g. "2025-06-01") granularity: Time grain (e.g. "P1D", "P1W", "P1M") where: SQL WHERE clause fragment for filtering having: SQL HAVING clause fragment for post-aggregation filtering order_by: Columns or metrics to order by order_desc: If True, sort descending (default: True) row_limit: Max rows to return (default: 10000) force: If True, bypass query cache response_mode: 'compact' (columns only), 'standard' (sample rows), or 'full' (all rows). Default: standard.

describe_dashboardA

Return a normalized dashboard summary in one call.

Provides dashboard metadata, markdown blocks, chart inventory, unique dataset inventory, and optional source-table lineage — without requiring multiple follow-up tool calls.

Args: dashboard_id: Numeric dashboard ID (or use get_dashboard to find it) include_lineage: Parse dataset SQL to extract upstream source tables include_sql: Include raw SQL for each virtual dataset response_mode: 'compact' (counts only), 'standard' (inventory), or 'full' (all detail + lineage + warnings). Default: standard.

validate_chartA

Run chart query validation and return render status.

This validates the saved chart params against chart-data execution, returning actionable errors for missing metrics/columns/etc.

Notes:

  • This does not take a screenshot; it executes the same query context used for chart rendering.

  • dashboard_id speeds lookup of chart form_data. If omitted, all dashboards are scanned.

Args: chart_id: Chart ID to validate dashboard_id: Optional dashboard context for form_data lookup row_limit: Query row limit used for validation force: Whether to force recomputation (if supported by backend) response_mode: 'compact' (small summary), 'standard' (default), or 'full' (raw payload + metadata)

validate_dashboardB

Validate all charts on a dashboard and return aggregate statuses.

validate_chart_renderC

Validate chart rendering with a headless browser (frontend-level probe).

validate_dashboard_renderC

Validate frontend render status for all charts on a dashboard.

verify_chart_workflowC

Run end-to-end checks for chart query/render and optional dashboard context.

verify_dashboard_structureC

Validate dashboard layout graph integrity and chart reference health.

verify_dashboard_workflowC

Run structure + query + optional render verification for a dashboard.

capture_dashboard_templateC

Capture a reusable dashboard+chart template from an existing dashboard.

capture_golden_templatesC

Capture templates from one or more dashboards into a local folder.

create_dashboardA

Create a new, empty dashboard.

After creating, use create_chart with the dashboards parameter to add charts, or use update_dashboard to change properties.

Args: dashboard_title: Display title for the dashboard published: Whether the dashboard is published (default: False) dry_run: If True, validate inputs and return a preview without making any changes (default: False)

create_datasetA

Create a virtual (SQL-based) dataset for charting.

This is the main entry point from analytics into visualization. Take a validated SQL query (e.g. from igloo-mcp) and register it as a Preset dataset. Use list_databases to find database_id.

Write SQL (INSERT, DROP, etc.) is blocked — only SELECT-style queries are permitted as dataset definitions.

Args: name: Display name for the dataset sql: SQL query defining the dataset database_id: Database connection ID schema: Optional schema name dry_run: If True, validate inputs and return a preview without making any changes (default: False)

create_chartA

Create a chart from an existing dataset.

Recommended workflow: create_dataset → create_chart (with dashboards param to attach it). Use list_datasets to find dataset_id and list_dashboards to find dashboard IDs.

Args: dataset_id: ID of the dataset to visualize title: Chart title viz_type: Visualization type (e.g. "echarts_timeseries_bar", "pie", "big_number_total", "table") metrics: Metric names or ad-hoc metric objects groupby: Columns to group by time_column: Time column for time-series charts template: Defaulting strategy for missing chart fields ('auto' or 'minimal') params_json: Optional JSON object to merge into chart params dashboards: Dashboard IDs to attach this chart to validate_after_create: Run chart-data validation after create repair_dashboard_refs: Attempt to repair stale dashboard chart references when dashboards are provided. Defaults to False so create_chart does not mutate dashboard layouts unless explicitly requested. dry_run: If True, validate inputs and return a preview without making any changes (default: False)

update_datasetA

Update an existing dataset's SQL, name, or description.

Use list_datasets to find the dataset_id. After updating the SQL, any charts built on this dataset will reflect the new data on their next refresh.

Args: dataset_id: ID of the dataset to update sql: New SQL query (replaces existing) name: New display name description: New description override_columns: If True, refresh column metadata from the new SQL (recommended when changing SQL) dry_run: If True, validate inputs, capture current state, and check dependencies without making any changes (default: False)

update_chartA

Update an existing chart's title, viz type, or parameters.

Use list_charts to find the chart_id. Pass params_json as a JSON string to override visualization parameters (metrics, groupby, filters, etc.).

params_json uses strict semantics: when provided, it is treated as a full chart params payload for validation. For viz types with required fields (for example pie/timeseries), include those fields in the payload instead of sending partial patches.

Args: chart_id: ID of the chart to update title: New chart title viz_type: New visualization type params_json: JSON string of chart parameters (advanced — use get_chart to inspect existing chart params first). Strict semantics: provide a complete params payload compatible with the chart viz type. dashboards: Reassign chart to these dashboard IDs validate_after_update: Run chart-data validation after update dry_run: If True, validate inputs, capture current state, and return a preview without making any changes (default: False)

update_dashboardA

Update an existing dashboard's properties.

Use list_dashboards to find the dashboard_id. Use get_dashboard to inspect the current position_json and json_metadata.

Args: dashboard_id: ID of the dashboard to update dashboard_title: New dashboard title published: Set to True to publish, False to unpublish position_json: JSON object (or JSON string) defining the dashboard layout (chart containers, rows, grid). Use this to add, remove, or rearrange chart containers — e.g. after deleting charts whose containers remain as orphaned placeholders. json_metadata: JSON object (or JSON string) with dashboard metadata (cross-filter config, color schemes, label colors, refresh settings). Update this alongside position_json to keep chart references in sync. allow_empty_layout: If True, allow updates that remove all chart containers from the layout tree (default: False). dry_run: If True, validate inputs, capture current state, and return a preview without making any changes (default: False)

repair_dashboard_chart_refsA

Repair stale chart IDs in a dashboard's layout metadata.

This tool syncs position_json and json_metadata.chartsInScope by replacing or removing orphaned chart references.

Args: dashboard_id: Dashboard ID to repair strategy: 'replace_by_name' (default) maps stale chart IDs to currently attached charts with matching names; or 'remove_orphans' to drop stale references only. dry_run: If True, preview detected changes without updating.

repair_dashboard_layout_duplicatesC

Remove duplicate chart placements from a dashboard layout.

snapshot_workspaceA

Capture a full inventory of the current workspace.

Returns counts and complete lists of dashboards, charts, datasets, and databases. Heavier than workspace_catalog — use catalog for navigation, snapshot for full audit.

list_mutationsA

List recent local mutation-journal entries for incident debugging.

list_dashboard_snapshotsC

List locally saved dashboard snapshots captured before mutations.

restore_dashboard_snapshotC

Restore dashboard layout/settings from a local snapshot JSON file.

export_dashboardB

Export a dashboard ZIP bundle for backup or migration.

import_dashboardC

Import a dashboard ZIP bundle and report the affected dashboard IDs.

delete_dashboardC

Delete a dashboard after exporting a full backup.

list_saved_queriesA

List saved SQL queries in the current workspace.

Saved queries are reusable SQL snippets stored in SQL Lab. Use this to discover query IDs, then pass one to get_saved_query for full detail.

Args: response_mode: 'compact' (id+label), 'standard' (key fields), or 'full' (raw API response). Default: standard. name_contains: Case-insensitive substring filter on the query label.

get_saved_queryA

Get detail for a single saved query.

Args: query_id: The saved query ID. response_mode: 'compact', 'standard', or 'full'.

create_saved_queryA

Create a new saved SQL query in SQL Lab.

Saved queries persist reusable SQL snippets associated with a database.

Args: label: Name / label for the saved query. sql: The SQL text to save. database_id: ID of the database this query targets. schema: Optional schema context (e.g. 'public'). description: Optional description of the query. dry_run: If True, preview the action without executing.

update_saved_queryB

Update an existing saved query.

Args: query_id: The saved query ID to update. label: New label (name) for the query. sql: New SQL text. description: New description. schema: New schema context. dry_run: If True, preview the action without executing.

delete_saved_queryA

Delete a saved query.

Args: query_id: The saved query ID to delete. dry_run: If True, preview the action without executing.

list_css_templatesA

List CSS templates in the current workspace.

CSS templates define reusable dashboard styling. Use this to discover template IDs, then pass one to get_css_template for full detail.

Args: response_mode: 'compact' (id+name), 'standard' (key fields), or 'full' (raw API response). Default: standard. name_contains: Case-insensitive substring filter on template_name.

get_css_templateA

Get detail for a single CSS template.

Args: template_id: The CSS template ID. response_mode: 'compact', 'standard', or 'full'.

create_css_templateA

Create a new CSS template for dashboard styling.

Args: template_name: Name for the CSS template. css: The CSS stylesheet text. dry_run: If True, preview the action without executing.

update_css_templateA

Update an existing CSS template.

Args: template_id: The CSS template ID to update. template_name: New name for the template. css: New CSS stylesheet text. dry_run: If True, preview the action without executing.

delete_css_templateA

Delete a CSS template.

Args: template_id: The CSS template ID to delete. dry_run: If True, preview the action without executing.

list_annotation_layersB

List annotation layers in the current workspace.

Annotation layers let you overlay time-based markers on charts (e.g. deploys, incidents). Use this to discover layer IDs.

Args: response_mode: 'compact' (id+name), 'standard' (key fields), or 'full' (raw API response). Default: standard. name_contains: Case-insensitive substring filter on layer name.

get_annotation_layerB

Get detail for a single annotation layer including its annotations.

Args: layer_id: The annotation layer ID. response_mode: 'compact', 'standard', or 'full'.

create_annotation_layerA

Create a new annotation layer.

Annotation layers group time-based annotations that can be overlaid on time-series charts. After creating a layer, use create_annotation to add individual annotations.

Args: name: Name for the annotation layer. descr: Optional description. dry_run: If True, preview the action without executing.

update_annotation_layerB

Update an existing annotation layer.

Args: layer_id: The annotation layer ID to update. name: New name for the layer. descr: New description. dry_run: If True, preview the action without executing.

delete_annotation_layerA

Delete an annotation layer and all its annotations.

Args: layer_id: The annotation layer ID to delete. dry_run: If True, preview the action without executing.

create_annotationA

Add an annotation to an existing annotation layer.

Annotations are time-based markers that overlay on time-series charts. Use list_annotation_layers or get_annotation_layer to find layer IDs.

Args: layer_id: The annotation layer ID to add this annotation to. short_descr: Short description (label) shown on the chart overlay. start_dttm: Start datetime in ISO 8601 format (e.g. '2024-01-15T00:00:00'). end_dttm: End datetime in ISO 8601 format (e.g. '2024-01-16T00:00:00'). long_descr: Optional longer description with details. dry_run: If True, preview the action without executing.

delete_annotationA

Delete a specific annotation from an annotation layer.

Args: layer_id: The annotation layer ID. annotation_id: The annotation ID to delete. dry_run: If True, preview the action without executing.

get_async_query_resultA

Fetch results of an async SQL query by its query ID (key).

When SQL Lab runs a query asynchronously, it returns a query ID (also called a 'key'). Use this tool to poll for and retrieve the results once the query completes.

Args: query_id: The query ID / key returned by an async SQL Lab query.

get_embedded_dashboardB

Get the embedded configuration for a dashboard.

Returns the embedding UUID and allowed domains if embedding is enabled, or indicates that embedding is not configured.

Args: dashboard_id: The dashboard ID.

enable_embedded_dashboardA

Enable embedding for a dashboard and return its embed UUID.

The returned UUID is used to embed the dashboard in external applications via the Superset embedded SDK.

Args: dashboard_id: The dashboard ID to enable embedding for. allowed_domains: List of domains allowed to embed (e.g. '["app.example.com"]'). Pass an empty list to allow all origins. dry_run: If True, preview the action without executing.

disable_embedded_dashboardA

Disable embedding for a dashboard.

This revokes the embed UUID and prevents the dashboard from being embedded in external applications.

Args: dashboard_id: The dashboard ID to disable embedding for. dry_run: If True, preview the action without executing.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Evan-Kim2028/preset-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server