{
  "version": "0.4.0",
  "tools": [
    {
      "name": "search",
      "toolset": "search",
      "toolsetLabel": "Search",
      "write": false,
      "description": "Search across all Metabase entities (cards, dashboards, collections, tables, etc.)",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "q": {
            "type": "string",
            "description": "Search query string"
          },
          "models": {
            "description": "Filter by entity types",
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "card",
                "dashboard",
                "collection",
                "table",
                "database",
                "action",
                "segment",
                "metric"
              ]
            }
          },
          "collection": {
            "description": "Filter by collection ID",
            "type": "string"
          },
          "archived": {
            "description": "Include archived items (default: false)",
            "type": "boolean"
          }
        },
        "required": [
          "q"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "list_databases",
      "toolset": "databases",
      "toolsetLabel": "Databases",
      "write": false,
      "description": "List all databases the user has access to",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    },
    {
      "name": "get_database",
      "toolset": "databases",
      "toolsetLabel": "Databases",
      "write": false,
      "description": "Get database details by ID",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Database ID"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "get_database_metadata",
      "toolset": "databases",
      "toolsetLabel": "Databases",
      "write": false,
      "description": "Get full database metadata: tables, fields, types, relationships",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Database ID"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "list_database_schemas",
      "toolset": "databases",
      "toolsetLabel": "Databases",
      "write": false,
      "description": "List schemas in a database",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Database ID"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "get_database_schema",
      "toolset": "databases",
      "toolsetLabel": "Databases",
      "write": false,
      "description": "Get tables within a specific database schema",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Database ID"
          },
          "schema": {
            "type": "string",
            "description": "Schema name as returned by list_database_schemas (\"\" for schema-less databases such as SQLite)"
          }
        },
        "required": [
          "id",
          "schema"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "create_database",
      "toolset": "databases",
      "toolsetLabel": "Databases",
      "write": true,
      "description": "Add a new database connection to Metabase",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Database display name"
          },
          "engine": {
            "type": "string",
            "description": "Database engine (postgres, mysql, h2, bigquery, snowflake, etc.)"
          },
          "details": {
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {},
            "description": "Connection details (host, port, dbname, user, password, ssl, etc.)"
          }
        },
        "required": [
          "name",
          "engine",
          "details"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "update_database",
      "toolset": "databases",
      "toolsetLabel": "Databases",
      "write": true,
      "description": "Update an existing database connection configuration",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Database ID"
          },
          "name": {
            "description": "New display name",
            "type": "string"
          },
          "engine": {
            "description": "Database engine",
            "type": "string"
          },
          "details": {
            "description": "Connection details to update",
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {}
          },
          "is_full_sync": {
            "description": "Whether to run a full sync on schedule",
            "type": "boolean"
          },
          "auto_run_queries": {
            "description": "Whether to automatically run queries when opening the database",
            "type": "boolean"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "delete_database",
      "toolset": "databases",
      "toolsetLabel": "Databases",
      "write": true,
      "description": "Delete a database connection from Metabase",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Database ID"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "validate_database",
      "toolset": "databases",
      "toolsetLabel": "Databases",
      "write": true,
      "description": "Test database connection parameters before saving to verify credentials and connectivity",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "engine": {
            "type": "string",
            "description": "Database engine (postgres, mysql, h2, bigquery, snowflake, etc.)"
          },
          "details": {
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {},
            "description": "Connection details to validate (host, port, dbname, user, password, etc.)"
          }
        },
        "required": [
          "engine",
          "details"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "sync_database_schema",
      "toolset": "databases",
      "toolsetLabel": "Databases",
      "write": true,
      "description": "Trigger a schema resync on a database (use after DDL changes to pick up new or modified tables)",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Database ID"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "get_table",
      "toolset": "tables",
      "toolsetLabel": "Tables & Fields",
      "write": false,
      "description": "Get table details and field info",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Table ID"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "get_table_query_metadata",
      "toolset": "tables",
      "toolsetLabel": "Tables & Fields",
      "write": false,
      "description": "Get full query metadata for a table (fields, FKs, metrics)",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Table ID"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "get_field",
      "toolset": "tables",
      "toolsetLabel": "Tables & Fields",
      "write": false,
      "description": "Get field details including type, special type, fingerprint",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Field ID"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "get_field_values",
      "toolset": "tables",
      "toolsetLabel": "Tables & Fields",
      "write": false,
      "description": "Get sample values for a field",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Field ID"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "update_table",
      "toolset": "tables",
      "toolsetLabel": "Tables & Fields",
      "write": true,
      "description": "Update table display name, description, visibility type, or entity type",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Table ID"
          },
          "display_name": {
            "description": "Display name",
            "type": "string"
          },
          "description": {
            "description": "Description",
            "type": "string"
          },
          "visibility_type": {
            "description": "Visibility type (e.g. hidden, technical, cruft)",
            "type": "string"
          },
          "entity_type": {
            "description": "Entity type (e.g. entity/GenericTable, entity/EventTable)",
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "update_field",
      "toolset": "tables",
      "toolsetLabel": "Tables & Fields",
      "write": true,
      "description": "Update field display name, description, semantic type, visibility, or FK target",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Field ID"
          },
          "display_name": {
            "description": "Display name",
            "type": "string"
          },
          "description": {
            "description": "Description",
            "type": "string"
          },
          "semantic_type": {
            "description": "Semantic type (e.g. type/Name, type/Category)",
            "type": "string"
          },
          "visibility_type": {
            "description": "Visibility type (e.g. normal, details-only, hidden, sensitive)",
            "type": "string"
          },
          "has_field_values": {
            "description": "How field values are retrieved (e.g. list, search, none)",
            "type": "string"
          },
          "fk_target_field_id": {
            "description": "Target field ID for foreign key relationships",
            "type": "number"
          },
          "coercion_strategy": {
            "description": "Coercion strategy for type casting (e.g. 'ISO8601->DateTime', 'UNIXSeconds->DateTime')",
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "rescan_field_values",
      "toolset": "tables",
      "toolsetLabel": "Tables & Fields",
      "write": true,
      "description": "Trigger a re-scan of field values used to populate filter dropdowns",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Field ID"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "discard_field_values",
      "toolset": "tables",
      "toolsetLabel": "Tables & Fields",
      "write": true,
      "description": "Clear cached field values for a field",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Field ID"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "reorder_fields",
      "toolset": "tables",
      "toolsetLabel": "Tables & Fields",
      "write": true,
      "description": "Set a custom field ordering for a table by providing an ordered list of field IDs",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Table ID"
          },
          "field_order": {
            "type": "array",
            "items": {
              "type": "number"
            },
            "description": "Ordered list of field IDs"
          }
        },
        "required": [
          "id",
          "field_order"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "get_collection_tree",
      "toolset": "collections",
      "toolsetLabel": "Collections",
      "write": false,
      "description": "Get the full collection hierarchy as a tree",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    },
    {
      "name": "list_collections",
      "toolset": "collections",
      "toolsetLabel": "Collections",
      "write": false,
      "description": "List all collections",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "personal_only": {
            "description": "Only return personal collections (default: false)",
            "type": "boolean"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "get_collection",
      "toolset": "collections",
      "toolsetLabel": "Collections",
      "write": false,
      "description": "Get collection details",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Collection ID"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "list_collection_items",
      "toolset": "collections",
      "toolsetLabel": "Collections",
      "write": false,
      "description": "List items in a collection (cards, dashboards, sub-collections)",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Collection ID"
          },
          "models": {
            "description": "Filter by item types",
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "card",
                "dashboard",
                "collection",
                "snippet",
                "pulse",
                "timeline"
              ]
            }
          },
          "sort_column": {
            "description": "Column to sort by",
            "type": "string",
            "enum": [
              "name",
              "last_edited_at",
              "last_edited_by",
              "model"
            ]
          },
          "sort_direction": {
            "description": "Sort direction",
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ]
          },
          "archived": {
            "description": "Include archived items (default: false)",
            "type": "boolean"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "create_collection",
      "toolset": "collections",
      "toolsetLabel": "Collections",
      "write": true,
      "description": "Create a new collection",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Collection name"
          },
          "description": {
            "description": "Collection description",
            "type": "string"
          },
          "parent_id": {
            "description": "Parent collection ID",
            "type": "number"
          }
        },
        "required": [
          "name"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "update_collection",
      "toolset": "collections",
      "toolsetLabel": "Collections",
      "write": true,
      "description": "Update collection properties",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Collection ID"
          },
          "name": {
            "description": "New name",
            "type": "string"
          },
          "description": {
            "description": "New description",
            "type": "string"
          },
          "parent_id": {
            "description": "New parent collection ID",
            "type": "number"
          },
          "archived": {
            "description": "Archive the collection",
            "type": "boolean"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "list_cards",
      "toolset": "cards",
      "toolsetLabel": "Cards",
      "write": false,
      "description": "List all saved questions",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    },
    {
      "name": "get_card",
      "toolset": "cards",
      "toolsetLabel": "Cards",
      "write": false,
      "description": "Get card details (query definition, visualization settings)",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Card ID"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "execute_card_query",
      "toolset": "cards",
      "toolsetLabel": "Cards",
      "write": false,
      "description": "Run a saved question and return results as compact columns + rows (paged with max_rows/offset). For parameterized cards, pass template tag values as key-value pairs (e.g. { fromDate: '2024-01-01', toDate: '2024-12-31' }). For date ranges in native queries, use two separate date/single parameters.",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "card_id": {
            "type": "number",
            "description": "Card ID"
          },
          "parameter_values": {
            "description": "Template tag parameter values as { paramName: value } pairs. For date: '2024-01-01'. For date/month-year: '2024-01'. For number: 100. For text: 'value'. For date ranges, use two separate date parameters (fromDate + toDate).",
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {}
          },
          "max_rows": {
            "description": "Max rows to return (capped by METABASE_MAX_ROWS, default 500)",
            "type": "integer",
            "exclusiveMinimum": 0,
            "maximum": 9007199254740991
          },
          "offset": {
            "description": "Skip this many result rows first, for paging through a large result",
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "verbose": {
            "description": "Return the raw Metabase response (column internals, results_metadata, insights) instead of the compact columns + rows view",
            "type": "boolean"
          }
        },
        "required": [
          "card_id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "create_card",
      "toolset": "cards",
      "toolsetLabel": "Cards",
      "write": true,
      "description": "Create a new question (native SQL or structured query)",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Question name"
          },
          "dataset_query": {
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {},
            "description": "Query definition. For native SQL: { type: \"native\", native: { query: \"SELECT ...\" }, database: 1 }. For structured: { type: \"query\", query: { \"source-table\": 1 }, database: 1 }"
          },
          "display": {
            "type": "string",
            "description": "Visualization type: \"table\", \"bar\", \"line\", \"pie\", \"scalar\", \"row\", \"area\", \"combo\", \"pivot\", \"smartscalar\", \"gauge\", \"progress\", \"funnel\", \"map\", \"scatter\", \"waterfall\". Important: set visualization_settings alongside this to configure chart dimensions/metrics."
          },
          "description": {
            "description": "Question description",
            "type": "string"
          },
          "collection_id": {
            "description": "Collection to save in",
            "type": "number"
          },
          "visualization_settings": {
            "description": "Visualization settings — must be configured for charts to render correctly. For pie: { \"pie.dimension\": \"COLUMN\", \"pie.metric\": \"COLUMN\" }. For bar/line/area: { \"graph.dimensions\": [\"COLUMN\"], \"graph.metrics\": [\"COLUMN\"] }. For scatter: { \"graph.dimensions\": [\"X_COL\"], \"graph.metrics\": [\"Y_COL\"] }. For funnel: { \"funnel.dimension\": \"COLUMN\", \"funnel.metric\": \"COLUMN\" }. For table: { \"table.pivot_column\": \"COL\", \"table.cell_column\": \"COL\" }. Column names must match SQL aliases or structured query field names.",
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {}
          },
          "type": {
            "description": "Card type: \"question\" (default), \"model\" (curated dataset), or \"metric\" (published metric definition)",
            "type": "string",
            "enum": [
              "question",
              "model",
              "metric"
            ]
          }
        },
        "required": [
          "name",
          "dataset_query",
          "display"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "update_card",
      "toolset": "cards",
      "toolsetLabel": "Cards",
      "write": true,
      "description": "Update question query, display, name, or other properties",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Card ID"
          },
          "name": {
            "description": "New name",
            "type": "string"
          },
          "dataset_query": {
            "description": "New query definition",
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {}
          },
          "display": {
            "description": "New visualization type",
            "type": "string"
          },
          "description": {
            "description": "New description",
            "type": "string"
          },
          "collection_id": {
            "description": "Move to collection",
            "type": "number"
          },
          "visualization_settings": {
            "description": "Visualization settings — must be configured for charts to render correctly. For pie: { \"pie.dimension\": \"COLUMN\", \"pie.metric\": \"COLUMN\" }. For bar/line/area: { \"graph.dimensions\": [\"COLUMN\"], \"graph.metrics\": [\"COLUMN\"] }. For scatter: { \"graph.dimensions\": [\"X_COL\"], \"graph.metrics\": [\"Y_COL\"] }. For funnel: { \"funnel.dimension\": \"COLUMN\", \"funnel.metric\": \"COLUMN\" }. Column names must match SQL aliases or structured query field names.",
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {}
          },
          "archived": {
            "description": "Archive the card",
            "type": "boolean"
          },
          "type": {
            "description": "Change card type: \"question\", \"model\", or \"metric\"",
            "type": "string",
            "enum": [
              "question",
              "model",
              "metric"
            ]
          },
          "result_metadata": {
            "description": "Column metadata array for models. Each entry: { name, display_name, description, semantic_type, base_type, ... }. Use to set per-column display names, descriptions, and semantic types on model columns.",
            "type": "array",
            "items": {
              "type": "object",
              "propertyNames": {
                "type": "string"
              },
              "additionalProperties": {}
            }
          },
          "enable_embedding": {
            "description": "Enable static embedding for this card (Pro/Enterprise)",
            "type": "boolean"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "delete_card",
      "toolset": "cards",
      "toolsetLabel": "Cards",
      "write": true,
      "description": "Delete a card (question)",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Card ID"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "copy_card",
      "toolset": "cards",
      "toolsetLabel": "Cards",
      "write": true,
      "description": "Copy a card to a collection",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Card ID to copy"
          },
          "collection_id": {
            "description": "Target collection ID",
            "type": "number"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "create_card_public_link",
      "toolset": "cards",
      "toolsetLabel": "Cards",
      "write": true,
      "description": "Generate a public sharing link for a card. Returns the card with a public_uuid field. The public URL is {metabase_url}/public/question/{uuid}. Public sharing must be enabled in Metabase admin settings.",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "card_id": {
            "type": "number",
            "description": "Card ID"
          }
        },
        "required": [
          "card_id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "delete_card_public_link",
      "toolset": "cards",
      "toolsetLabel": "Cards",
      "write": true,
      "description": "Remove the public sharing link from a card",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "card_id": {
            "type": "number",
            "description": "Card ID"
          }
        },
        "required": [
          "card_id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "list_dashboards",
      "toolset": "dashboards",
      "toolsetLabel": "Dashboards",
      "write": false,
      "description": "List all dashboards",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    },
    {
      "name": "get_dashboard",
      "toolset": "dashboards",
      "toolsetLabel": "Dashboards",
      "write": false,
      "description": "Get dashboard with all cards and layout",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Dashboard ID"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "create_dashboard",
      "toolset": "dashboards",
      "toolsetLabel": "Dashboards",
      "write": true,
      "description": "Create a new dashboard",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Dashboard name"
          },
          "description": {
            "description": "Dashboard description",
            "type": "string"
          },
          "collection_id": {
            "description": "Collection to save in",
            "type": "number"
          },
          "parameters": {
            "description": "Dashboard filter parameters",
            "type": "array",
            "items": {
              "type": "object",
              "propertyNames": {
                "type": "string"
              },
              "additionalProperties": {}
            }
          }
        },
        "required": [
          "name"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "update_dashboard",
      "toolset": "dashboards",
      "toolsetLabel": "Dashboards",
      "write": true,
      "description": "Update dashboard properties (name, description, filters)",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Dashboard ID"
          },
          "name": {
            "description": "New name",
            "type": "string"
          },
          "description": {
            "description": "New description",
            "type": "string"
          },
          "collection_id": {
            "description": "Move to collection",
            "type": "number"
          },
          "archived": {
            "description": "Archive the dashboard",
            "type": "boolean"
          },
          "parameters": {
            "description": "Updated filter parameters",
            "type": "array",
            "items": {
              "type": "object",
              "propertyNames": {
                "type": "string"
              },
              "additionalProperties": {}
            }
          },
          "enable_embedding": {
            "description": "Enable static embedding for this dashboard (Pro/Enterprise)",
            "type": "boolean"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "delete_dashboard",
      "toolset": "dashboards",
      "toolsetLabel": "Dashboards",
      "write": true,
      "description": "Delete a dashboard",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Dashboard ID"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "copy_dashboard",
      "toolset": "dashboards",
      "toolsetLabel": "Dashboards",
      "write": true,
      "description": "Copy a dashboard to a collection",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "from_dashboard_id": {
            "type": "number",
            "description": "Dashboard ID to copy"
          },
          "name": {
            "description": "Name for the copy",
            "type": "string"
          },
          "description": {
            "description": "Description for the copy",
            "type": "string"
          },
          "collection_id": {
            "description": "Target collection ID",
            "type": "number"
          },
          "is_deep_copy": {
            "description": "Deep copy cards too (default: false)",
            "type": "boolean"
          }
        },
        "required": [
          "from_dashboard_id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "update_dashboard_cards",
      "toolset": "dashboards",
      "toolsetLabel": "Dashboards",
      "write": true,
      "description": "Add, remove, or reposition cards on a dashboard",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Dashboard ID"
          },
          "cards": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "description": "Existing dashcard ID (for updates)",
                  "type": "number"
                },
                "card_id": {
                  "description": "Card (question) ID to add",
                  "type": "number"
                },
                "row": {
                  "type": "number",
                  "description": "Row position (0-based)"
                },
                "col": {
                  "type": "number",
                  "description": "Column position (0-based)"
                },
                "size_x": {
                  "type": "number",
                  "description": "Width in grid units"
                },
                "size_y": {
                  "type": "number",
                  "description": "Height in grid units"
                },
                "parameter_mappings": {
                  "description": "Parameter mappings for filters",
                  "type": "array",
                  "items": {
                    "type": "object",
                    "propertyNames": {
                      "type": "string"
                    },
                    "additionalProperties": {}
                  }
                },
                "visualization_settings": {
                  "description": "Per-card visualization overrides. For pie: { \"pie.dimension\": \"COLUMN\", \"pie.metric\": \"COLUMN\" }. For bar/line/area: { \"graph.dimensions\": [\"COLUMN\"], \"graph.metrics\": [\"COLUMN\"] }. Column names must match SQL aliases or structured query field names.",
                  "type": "object",
                  "propertyNames": {
                    "type": "string"
                  },
                  "additionalProperties": {}
                },
                "series": {
                  "description": "Additional series for multi-series cards",
                  "type": "array",
                  "items": {
                    "type": "object",
                    "propertyNames": {
                      "type": "string"
                    },
                    "additionalProperties": {}
                  }
                }
              },
              "required": [
                "row",
                "col",
                "size_x",
                "size_y"
              ],
              "additionalProperties": false
            },
            "description": "Array of card positions and settings"
          }
        },
        "required": [
          "id",
          "cards"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "create_dashboard_public_link",
      "toolset": "dashboards",
      "toolsetLabel": "Dashboards",
      "write": true,
      "description": "Generate a public sharing link for a dashboard. Returns the dashboard with a public_uuid field. The public URL is {metabase_url}/public/dashboard/{uuid}. Public sharing must be enabled in Metabase admin settings.",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "dashboard_id": {
            "type": "number",
            "description": "Dashboard ID"
          }
        },
        "required": [
          "dashboard_id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "delete_dashboard_public_link",
      "toolset": "dashboards",
      "toolsetLabel": "Dashboards",
      "write": true,
      "description": "Remove the public sharing link from a dashboard",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "dashboard_id": {
            "type": "number",
            "description": "Dashboard ID"
          }
        },
        "required": [
          "dashboard_id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "list_actions",
      "toolset": "actions",
      "toolsetLabel": "Actions",
      "write": false,
      "description": "List all actions",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "model_id": {
            "description": "Filter by model ID",
            "type": "number"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "get_action",
      "toolset": "actions",
      "toolsetLabel": "Actions",
      "write": false,
      "description": "Get action details",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "action_id": {
            "type": "number",
            "description": "Action ID"
          }
        },
        "required": [
          "action_id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "create_action",
      "toolset": "actions",
      "toolsetLabel": "Actions",
      "write": true,
      "description": "Create a new action (query or implicit only — HTTP actions are not supported)",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Action name"
          },
          "type": {
            "type": "string",
            "enum": [
              "query",
              "implicit"
            ],
            "description": "Action type (query or implicit)"
          },
          "model_id": {
            "type": "number",
            "description": "Model card ID this action belongs to"
          },
          "database_id": {
            "description": "Database ID (required for query actions)",
            "type": "number"
          },
          "dataset_query": {
            "description": "Query definition for query-type actions",
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {}
          },
          "description": {
            "description": "Action description",
            "type": "string"
          }
        },
        "required": [
          "name",
          "type",
          "model_id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "update_action",
      "toolset": "actions",
      "toolsetLabel": "Actions",
      "write": true,
      "description": "Update an action (cannot change type to http)",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Action ID"
          },
          "name": {
            "description": "New action name",
            "type": "string"
          },
          "description": {
            "description": "New description",
            "type": "string"
          },
          "dataset_query": {
            "description": "New query definition",
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {}
          },
          "database_id": {
            "description": "New database ID",
            "type": "number"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "delete_action",
      "toolset": "actions",
      "toolsetLabel": "Actions",
      "write": true,
      "description": "Delete an action",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "action_id": {
            "type": "number",
            "description": "Action ID"
          }
        },
        "required": [
          "action_id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "execute_action",
      "toolset": "actions",
      "toolsetLabel": "Actions",
      "write": true,
      "description": "Run an action with optional parameters",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Action ID"
          },
          "parameters": {
            "description": "Action parameters as key-value pairs",
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {}
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "create_action_public_link",
      "toolset": "actions",
      "toolsetLabel": "Actions",
      "write": true,
      "description": "Generate a public link for an action form",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "action_id": {
            "type": "number",
            "description": "Action ID"
          }
        },
        "required": [
          "action_id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "delete_action_public_link",
      "toolset": "actions",
      "toolsetLabel": "Actions",
      "write": true,
      "description": "Remove the public link from an action",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "action_id": {
            "type": "number",
            "description": "Action ID"
          }
        },
        "required": [
          "action_id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "execute_query",
      "toolset": "dataset",
      "toolsetLabel": "Dataset (ad-hoc queries)",
      "write": false,
      "description": "Run an ad-hoc query (native SQL or structured) and return results as compact columns + rows (paged with max_rows/offset). WARNING: the SQL is sent as-is; this server does not block INSERT/UPDATE/DELETE/DDL. Whether it can change data depends only on the Metabase API key's permissions and the database user's grants.",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "database": {
            "type": "number",
            "description": "Database ID to query"
          },
          "type": {
            "type": "string",
            "enum": [
              "native",
              "query"
            ],
            "description": "Query type: native SQL or structured"
          },
          "native": {
            "description": "Required when type is \"native\"",
            "type": "object",
            "properties": {
              "query": {
                "type": "string",
                "description": "SQL query string"
              },
              "template_tags": {
                "description": "Template tags for parameterized queries",
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              }
            },
            "required": [
              "query"
            ],
            "additionalProperties": false
          },
          "query": {
            "description": "Required when type is \"query\". Structured query definition",
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {}
          },
          "max_rows": {
            "description": "Max rows to return (capped by METABASE_MAX_ROWS, default 500)",
            "type": "integer",
            "exclusiveMinimum": 0,
            "maximum": 9007199254740991
          },
          "offset": {
            "description": "Skip this many result rows first, for paging through a large result",
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "verbose": {
            "description": "Return the raw Metabase response (column internals, results_metadata, insights) instead of the compact columns + rows view",
            "type": "boolean"
          }
        },
        "required": [
          "database",
          "type"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "list_users",
      "toolset": "users",
      "toolsetLabel": "Users & Groups",
      "write": false,
      "description": "List all Metabase users. Supports optional search query to filter by name or email.",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "query": {
            "description": "Search query to filter users by first name, last name, or email",
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "get_user",
      "toolset": "users",
      "toolsetLabel": "Users & Groups",
      "write": false,
      "description": "Get a Metabase user by ID",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "User ID"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "get_current_user",
      "toolset": "users",
      "toolsetLabel": "Users & Groups",
      "write": false,
      "description": "Get the currently authenticated Metabase user",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    },
    {
      "name": "list_groups",
      "toolset": "users",
      "toolsetLabel": "Users & Groups",
      "write": false,
      "description": "List all Metabase permission groups",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    },
    {
      "name": "get_group",
      "toolset": "users",
      "toolsetLabel": "Users & Groups",
      "write": false,
      "description": "Get a permission group with its members (each member carries the membership_id that remove_group_member needs)",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Group ID"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "create_user",
      "toolset": "users",
      "toolsetLabel": "Users & Groups",
      "write": true,
      "description": "Create a new Metabase user",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "format": "email",
            "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
            "description": "User email address"
          },
          "first_name": {
            "description": "User first name",
            "type": "string"
          },
          "last_name": {
            "description": "User last name",
            "type": "string"
          },
          "password": {
            "description": "User password (optional, user will receive a setup email if omitted)",
            "type": "string"
          },
          "group_ids": {
            "description": "Array of permission group IDs to add the user to",
            "type": "array",
            "items": {
              "type": "number"
            }
          }
        },
        "required": [
          "email"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "update_user",
      "toolset": "users",
      "toolsetLabel": "Users & Groups",
      "write": true,
      "description": "Update an existing Metabase user. Only provided fields will be updated.",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "User ID"
          },
          "first_name": {
            "description": "New first name",
            "type": "string"
          },
          "last_name": {
            "description": "New last name",
            "type": "string"
          },
          "email": {
            "description": "New email address",
            "type": "string",
            "format": "email",
            "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
          },
          "locale": {
            "description": "User locale (e.g. 'en', 'fr')",
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "deactivate_user",
      "toolset": "users",
      "toolsetLabel": "Users & Groups",
      "write": true,
      "description": "Deactivate a Metabase user (soft-delete). The user record is retained but access is disabled.",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "User ID to deactivate"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "reactivate_user",
      "toolset": "users",
      "toolsetLabel": "Users & Groups",
      "write": true,
      "description": "Reactivate a previously deactivated Metabase user",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "User ID to reactivate"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "create_group",
      "toolset": "users",
      "toolsetLabel": "Users & Groups",
      "write": true,
      "description": "Create a new Metabase permission group",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Group name"
          }
        },
        "required": [
          "name"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "update_group",
      "toolset": "users",
      "toolsetLabel": "Users & Groups",
      "write": true,
      "description": "Update the name of a Metabase permission group",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Group ID"
          },
          "name": {
            "type": "string",
            "description": "New group name"
          }
        },
        "required": [
          "id",
          "name"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "delete_group",
      "toolset": "users",
      "toolsetLabel": "Users & Groups",
      "write": true,
      "description": "Delete a Metabase permission group",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Group ID to delete"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "add_group_member",
      "toolset": "users",
      "toolsetLabel": "Users & Groups",
      "write": true,
      "description": "Add a user to a Metabase permission group",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "group_id": {
            "type": "number",
            "description": "Permission group ID"
          },
          "user_id": {
            "type": "number",
            "description": "User ID to add to the group"
          }
        },
        "required": [
          "group_id",
          "user_id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "remove_group_member",
      "toolset": "users",
      "toolsetLabel": "Users & Groups",
      "write": true,
      "description": "Remove a user from a Metabase permission group by membership ID",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "membership_id": {
            "type": "number",
            "description": "Membership ID to remove (from get_group members[].membership_id, or the add_group_member response)"
          }
        },
        "required": [
          "membership_id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "get_permissions_graph",
      "toolset": "permissions",
      "toolsetLabel": "Permissions",
      "write": false,
      "description": "Get the full data permissions graph (view-data and create-queries permissions per group per database)",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    },
    {
      "name": "get_collection_permissions",
      "toolset": "permissions",
      "toolsetLabel": "Permissions",
      "write": false,
      "description": "Get the collection permissions graph (which groups can access which collections)",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    },
    {
      "name": "update_permissions_graph",
      "toolset": "permissions",
      "toolsetLabel": "Permissions",
      "write": true,
      "description": "Update the data permissions graph. Must include the 'revision' field from get_permissions_graph for optimistic locking.",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "graph": {
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {},
            "description": "Full permissions graph object with 'revision' and 'groups' keys"
          }
        },
        "required": [
          "graph"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "update_collection_permissions",
      "toolset": "permissions",
      "toolsetLabel": "Permissions",
      "write": true,
      "description": "Update the collection permissions graph. Must include the 'revision' field from get_collection_permissions for optimistic locking.",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "graph": {
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {},
            "description": "Full collection permissions graph object with 'revision' and 'groups' keys"
          }
        },
        "required": [
          "graph"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "list_segments",
      "toolset": "segments",
      "toolsetLabel": "Segments",
      "write": false,
      "description": "List all segments",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "table_id": {
            "description": "Filter segments by table ID",
            "type": "number"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "get_segment",
      "toolset": "segments",
      "toolsetLabel": "Segments",
      "write": false,
      "description": "Get segment by ID",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Segment ID"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "create_segment",
      "toolset": "segments",
      "toolsetLabel": "Segments",
      "write": true,
      "description": "Create a new segment",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Segment name"
          },
          "table_id": {
            "type": "number",
            "description": "ID of the table this segment applies to"
          },
          "definition": {
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {},
            "description": "MBQL filter clause defining the segment, e.g. { \"filter\": [\">\", [\"field\", 4, null], 100] }"
          },
          "description": {
            "description": "Optional segment description",
            "type": "string"
          }
        },
        "required": [
          "name",
          "table_id",
          "definition"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "update_segment",
      "toolset": "segments",
      "toolsetLabel": "Segments",
      "write": true,
      "description": "Update an existing segment",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Segment ID"
          },
          "revision_message": {
            "type": "string",
            "description": "Required audit trail message describing the reason for this update"
          },
          "name": {
            "description": "New segment name",
            "type": "string"
          },
          "definition": {
            "description": "Updated MBQL filter clause",
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {}
          },
          "description": {
            "description": "Updated description",
            "type": "string"
          },
          "archived": {
            "description": "Set to true to archive the segment",
            "type": "boolean"
          }
        },
        "required": [
          "id",
          "revision_message"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "delete_segment",
      "toolset": "segments",
      "toolsetLabel": "Segments",
      "write": true,
      "description": "Delete (archive) a segment",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Segment ID"
          },
          "revision_message": {
            "type": "string",
            "description": "Required audit trail message describing the reason for deletion"
          }
        },
        "required": [
          "id",
          "revision_message"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "list_revisions",
      "toolset": "revisions",
      "toolsetLabel": "Revisions",
      "write": false,
      "description": "List revision history for a card or dashboard",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "entity": {
            "type": "string",
            "enum": [
              "card",
              "dashboard"
            ],
            "description": "Entity type"
          },
          "id": {
            "type": "number",
            "description": "Card or dashboard ID"
          }
        },
        "required": [
          "entity",
          "id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "revert_revision",
      "toolset": "revisions",
      "toolsetLabel": "Revisions",
      "write": true,
      "description": "Revert a card or dashboard to a prior revision",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "entity": {
            "type": "string",
            "enum": [
              "card",
              "dashboard"
            ],
            "description": "Entity type"
          },
          "id": {
            "type": "number",
            "description": "Card or dashboard ID"
          },
          "revision_id": {
            "type": "number",
            "description": "Revision ID to revert to"
          }
        },
        "required": [
          "entity",
          "id",
          "revision_id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "list_settings",
      "toolset": "settings",
      "toolsetLabel": "Settings",
      "write": false,
      "description": "List all Metabase instance settings",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    },
    {
      "name": "get_setting",
      "toolset": "settings",
      "toolsetLabel": "Settings",
      "write": false,
      "description": "Get a specific Metabase setting value",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "description": "Setting key (e.g., 'site-name', 'enable-public-sharing')"
          }
        },
        "required": [
          "key"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "update_setting",
      "toolset": "settings",
      "toolsetLabel": "Settings",
      "write": true,
      "description": "Update a Metabase setting value",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "description": "Setting key"
          },
          "value": {
            "description": "New setting value"
          }
        },
        "required": [
          "key",
          "value"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "list_alerts",
      "toolset": "notifications",
      "toolsetLabel": "Alerts & Subscriptions",
      "write": false,
      "description": "List question alerts (card notifications). Optionally filter by card.",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "card_id": {
            "description": "Only alerts on this card",
            "type": "number"
          },
          "include_inactive": {
            "description": "Include deactivated (deleted) alerts",
            "type": "boolean"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "get_alert",
      "toolset": "notifications",
      "toolsetLabel": "Alerts & Subscriptions",
      "write": false,
      "description": "Get details of a specific alert (notification ID)",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Alert (notification) ID"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "list_dashboard_subscriptions",
      "toolset": "notifications",
      "toolsetLabel": "Alerts & Subscriptions",
      "write": false,
      "description": "List email/Slack subscriptions for a dashboard",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "dashboard_id": {
            "type": "number",
            "description": "Dashboard ID"
          }
        },
        "required": [
          "dashboard_id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "list_notifications",
      "toolset": "notifications",
      "toolsetLabel": "Alerts & Subscriptions",
      "write": false,
      "description": "List notifications of any kind (question alerts, system-event notifications). Alerts are payload_type 'notification/card'. Use list_alerts for alerts only.",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "payload_type": {
            "description": "e.g. 'notification/card' (alerts) or 'notification/system-event'",
            "type": "string"
          },
          "card_id": {
            "description": "Only notifications on this card",
            "type": "number"
          },
          "creator_id": {
            "description": "Only notifications created by this user",
            "type": "number"
          },
          "recipient_id": {
            "description": "Only notifications this user receives",
            "type": "number"
          },
          "include_inactive": {
            "description": "Include deactivated notifications",
            "type": "boolean"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "send_notification",
      "toolset": "notifications",
      "toolsetLabel": "Alerts & Subscriptions",
      "write": true,
      "description": "Send a notification (e.g. an alert) right now, outside its schedule. Delivers real emails/Slack messages. Metabase 0.64+ allows this only for its creator or an admin.",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Notification (alert) ID"
          },
          "handler_ids": {
            "description": "Only send via these handler (channel) IDs; default all",
            "type": "array",
            "items": {
              "type": "number"
            }
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "create_alert",
      "toolset": "notifications",
      "toolsetLabel": "Alerts & Subscriptions",
      "write": true,
      "description": "Create an alert on a saved question. Metabase checks the question on the cron schedule and notifies the channels when the condition is met.",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "card_id": {
            "type": "number",
            "description": "Card ID to alert on"
          },
          "send_condition": {
            "description": "Alert condition (default 'has_result')",
            "type": "string",
            "enum": [
              "has_result",
              "goal_above",
              "goal_below"
            ]
          },
          "send_once": {
            "description": "Stop after the first notification (default false)",
            "type": "boolean"
          },
          "channels": {
            "type": "array",
            "items": {
              "anyOf": [
                {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "const": "email"
                    },
                    "user_ids": {
                      "description": "Metabase user IDs to email",
                      "type": "array",
                      "items": {
                        "type": "number"
                      }
                    },
                    "emails": {
                      "description": "External email addresses",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  },
                  "required": [
                    "type"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "const": "slack"
                    },
                    "channel": {
                      "type": "string",
                      "description": "Slack channel, e.g. '#alerts'"
                    }
                  },
                  "required": [
                    "type",
                    "channel"
                  ],
                  "additionalProperties": false
                }
              ]
            },
            "description": "Where to deliver the alert, e.g. [{ type: 'email', user_ids: [1] }] or [{ type: 'slack', channel: '#alerts' }]"
          },
          "cron_schedule": {
            "type": "string",
            "description": "Quartz cron schedule for checking the alert, e.g. '0 0 9 * * ? *' (daily 09:00, the default) or '0 0 * * * ? *' (hourly)"
          }
        },
        "required": [
          "card_id",
          "channels"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "update_alert",
      "toolset": "notifications",
      "toolsetLabel": "Alerts & Subscriptions",
      "write": true,
      "description": "Update an existing alert. Only the fields you provide will be changed.",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Alert (notification) ID"
          },
          "send_condition": {
            "type": "string",
            "enum": [
              "has_result",
              "goal_above",
              "goal_below"
            ],
            "description": "'has_result' = the question returns any rows; 'goal_above'/'goal_below' = the goal line is crossed"
          },
          "send_once": {
            "description": "Stop after the first notification",
            "type": "boolean"
          },
          "channels": {
            "description": "Replaces all delivery channels",
            "type": "array",
            "items": {
              "anyOf": [
                {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "const": "email"
                    },
                    "user_ids": {
                      "description": "Metabase user IDs to email",
                      "type": "array",
                      "items": {
                        "type": "number"
                      }
                    },
                    "emails": {
                      "description": "External email addresses",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  },
                  "required": [
                    "type"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "const": "slack"
                    },
                    "channel": {
                      "type": "string",
                      "description": "Slack channel, e.g. '#alerts'"
                    }
                  },
                  "required": [
                    "type",
                    "channel"
                  ],
                  "additionalProperties": false
                }
              ]
            }
          },
          "cron_schedule": {
            "type": "string",
            "description": "Quartz cron schedule for checking the alert, e.g. '0 0 9 * * ? *' (daily 09:00, the default) or '0 0 * * * ? *' (hourly)"
          },
          "active": {
            "description": "Re-activate (true) or deactivate (false) the alert",
            "type": "boolean"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "delete_alert",
      "toolset": "notifications",
      "toolsetLabel": "Alerts & Subscriptions",
      "write": true,
      "description": "Delete an alert (Metabase deactivates it; it can be restored with update_alert active=true)",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Alert (notification) ID"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "create_dashboard_subscription",
      "toolset": "notifications",
      "toolsetLabel": "Alerts & Subscriptions",
      "write": true,
      "description": "Create an email or Slack subscription for a dashboard. Subscriptions deliver a snapshot of the dashboard on a schedule. By default includes every question on the dashboard.",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "dashboard_id": {
            "type": "number",
            "description": "Dashboard ID"
          },
          "name": {
            "description": "Subscription name (default: dashboard name)",
            "type": "string"
          },
          "channels": {
            "type": "array",
            "items": {
              "type": "object",
              "propertyNames": {
                "type": "string"
              },
              "additionalProperties": {}
            },
            "description": "Delivery channels. Email: [{ channel_type: 'email', enabled: true, recipients: [{ id: userId }, { email: 'a@b.c' }], schedule_type: 'weekly', schedule_day: 'mon', schedule_hour: 8 }]. Slack: [{ channel_type: 'slack', enabled: true, details: { channel: '#reports' }, schedule_type: 'daily', schedule_hour: 9 }]"
          },
          "parameters": {
            "description": "Dashboard filter values to apply in the subscription",
            "type": "array",
            "items": {
              "type": "object",
              "propertyNames": {
                "type": "string"
              },
              "additionalProperties": {}
            }
          },
          "cards": {
            "description": "Cards to include: [{ id: cardId, dashboard_card_id, include_csv, include_xls }]. Default: all dashboard questions",
            "type": "array",
            "items": {
              "type": "object",
              "propertyNames": {
                "type": "string"
              },
              "additionalProperties": {}
            }
          }
        },
        "required": [
          "dashboard_id",
          "channels"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "update_dashboard_subscription",
      "toolset": "notifications",
      "toolsetLabel": "Alerts & Subscriptions",
      "write": true,
      "description": "Update a dashboard subscription (name, schedule, channels, parameters, cards)",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Subscription ID"
          },
          "name": {
            "description": "Updated name",
            "type": "string"
          },
          "channels": {
            "description": "Updated delivery channels",
            "type": "array",
            "items": {
              "type": "object",
              "propertyNames": {
                "type": "string"
              },
              "additionalProperties": {}
            }
          },
          "parameters": {
            "description": "Updated dashboard filter values",
            "type": "array",
            "items": {
              "type": "object",
              "propertyNames": {
                "type": "string"
              },
              "additionalProperties": {}
            }
          },
          "cards": {
            "description": "Updated cards list",
            "type": "array",
            "items": {
              "type": "object",
              "propertyNames": {
                "type": "string"
              },
              "additionalProperties": {}
            }
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "delete_dashboard_subscription",
      "toolset": "notifications",
      "toolsetLabel": "Alerts & Subscriptions",
      "write": true,
      "description": "Delete a dashboard subscription (Metabase archives it)",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Subscription ID"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "generate_xray",
      "toolset": "xrays",
      "toolsetLabel": "X-Rays",
      "write": false,
      "description": "Generate an automatic X-ray exploratory dashboard for a table",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "table_id": {
            "type": "number",
            "description": "Table ID to generate X-ray for"
          }
        },
        "required": [
          "table_id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "invalidate_cache",
      "toolset": "cache",
      "toolsetLabel": "Cache",
      "write": true,
      "description": "Invalidate cached query results",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "database": {
            "description": "Database ID to invalidate",
            "type": "number"
          },
          "dashboard": {
            "description": "Dashboard ID to invalidate",
            "type": "number"
          },
          "card": {
            "description": "Card ID to invalidate",
            "type": "number"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "update_cache_config",
      "toolset": "cache",
      "toolsetLabel": "Cache",
      "write": true,
      "description": "Update cache strategy for a model (database, dashboard, or card)",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "model": {
            "type": "string",
            "description": "Cache target type: 'root', 'database', 'dashboard', or 'question'"
          },
          "model_id": {
            "type": "number",
            "description": "ID of the target (0 for root)"
          },
          "strategy": {
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {},
            "description": "Cache strategy, e.g. { type: 'duration', duration: 3600, unit: 'seconds' } or { type: 'schedule', schedule: 'cron expression' }"
          }
        },
        "required": [
          "model",
          "model_id",
          "strategy"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "persist_model",
      "toolset": "persistence",
      "toolsetLabel": "Model Persistence",
      "write": true,
      "description": "Enable persistence (materialization) for a model card",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "card_id": {
            "type": "number",
            "description": "Model card ID to enable persistence for"
          }
        },
        "required": [
          "card_id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "unpersist_model",
      "toolset": "persistence",
      "toolsetLabel": "Model Persistence",
      "write": true,
      "description": "Disable persistence (materialization) for a model card",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "card_id": {
            "type": "number",
            "description": "Model card ID to disable persistence for"
          }
        },
        "required": [
          "card_id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "refresh_persisted_model",
      "toolset": "persistence",
      "toolsetLabel": "Model Persistence",
      "write": true,
      "description": "Manually trigger a refresh of the materialized data for a persisted model",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "card_id": {
            "type": "number",
            "description": "Model card ID to refresh persisted data for"
          }
        },
        "required": [
          "card_id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "upload_csv",
      "toolset": "upload",
      "toolsetLabel": "Uploads",
      "write": true,
      "description": "Upload a CSV file as a new table in Metabase",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "csv_data": {
            "type": "string",
            "description": "Raw CSV content to upload"
          },
          "table_name": {
            "type": "string",
            "description": "Name for the new table"
          },
          "collection_id": {
            "description": "Collection ID to place the resulting model in",
            "type": "number"
          }
        },
        "required": [
          "csv_data",
          "table_name"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "get_activity",
      "toolset": "activity",
      "toolsetLabel": "Activity & Tasks",
      "write": false,
      "description": "Get recent activity: the current user's recently viewed items plus the instance's popular items (prefer get_recent_items / get_popular_items)",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    },
    {
      "name": "get_recent_items",
      "toolset": "activity",
      "toolsetLabel": "Activity & Tasks",
      "write": false,
      "description": "Get the current user's recently viewed and/or selected items (dashboards, questions, tables, collections, documents)",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "context": {
            "description": "Which recents to return (default ['views'])",
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "views",
                "selections"
              ]
            }
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "get_popular_items",
      "toolset": "activity",
      "toolsetLabel": "Activity & Tasks",
      "write": false,
      "description": "Get the most popular dashboards, questions and tables across the instance",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    },
    {
      "name": "list_snippets",
      "toolset": "snippets",
      "toolsetLabel": "Snippets",
      "write": false,
      "description": "List all SQL snippets",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    },
    {
      "name": "get_snippet",
      "toolset": "snippets",
      "toolsetLabel": "Snippets",
      "write": false,
      "description": "Get a SQL snippet by ID",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Snippet ID"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "create_snippet",
      "toolset": "snippets",
      "toolsetLabel": "Snippets",
      "write": true,
      "description": "Create a reusable SQL snippet",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Snippet name"
          },
          "content": {
            "type": "string",
            "description": "SQL content"
          },
          "description": {
            "description": "Description",
            "type": "string"
          },
          "collection_id": {
            "description": "Snippet collection ID",
            "type": "number"
          }
        },
        "required": [
          "name",
          "content"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "update_snippet",
      "toolset": "snippets",
      "toolsetLabel": "Snippets",
      "write": true,
      "description": "Update a SQL snippet",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Snippet ID"
          },
          "name": {
            "description": "New name",
            "type": "string"
          },
          "content": {
            "description": "New SQL content",
            "type": "string"
          },
          "description": {
            "description": "New description",
            "type": "string"
          },
          "archived": {
            "description": "Archive the snippet",
            "type": "boolean"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "delete_snippet",
      "toolset": "snippets",
      "toolsetLabel": "Snippets",
      "write": true,
      "description": "Archive (soft-delete) a SQL snippet",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Snippet ID"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "list_glossary_terms",
      "toolset": "glossary",
      "toolsetLabel": "Glossary",
      "write": false,
      "description": "List all business glossary terms",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    },
    {
      "name": "get_glossary_term",
      "toolset": "glossary",
      "toolsetLabel": "Glossary",
      "write": false,
      "description": "Get a glossary term by ID",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Glossary term ID"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "create_glossary_term",
      "toolset": "glossary",
      "toolsetLabel": "Glossary",
      "write": true,
      "description": "Create a business glossary term",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "term": {
            "type": "string",
            "description": "The term to define"
          },
          "definition": {
            "type": "string",
            "description": "Definition of the term"
          }
        },
        "required": [
          "term",
          "definition"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "update_glossary_term",
      "toolset": "glossary",
      "toolsetLabel": "Glossary",
      "write": true,
      "description": "Update a glossary term",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Glossary term ID"
          },
          "term": {
            "description": "Updated term",
            "type": "string"
          },
          "definition": {
            "description": "Updated definition",
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "delete_glossary_term",
      "toolset": "glossary",
      "toolsetLabel": "Glossary",
      "write": true,
      "description": "Delete a glossary term",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Glossary term ID"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "list_documents",
      "toolset": "documents",
      "toolsetLabel": "Documents",
      "write": false,
      "description": "List all narrative analytics documents",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    },
    {
      "name": "get_document",
      "toolset": "documents",
      "toolsetLabel": "Documents",
      "write": false,
      "description": "Get a document by ID",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Document ID"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "create_document",
      "toolset": "documents",
      "toolsetLabel": "Documents",
      "write": true,
      "description": "Create a narrative analytics document",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Document name"
          },
          "collection_id": {
            "description": "Collection ID to place the document in",
            "type": "number"
          },
          "document": {
            "description": "Document body as a ProseMirror JSON doc, e.g. {\"type\":\"doc\",\"content\":[{\"type\":\"paragraph\",\"content\":[{\"type\":\"text\",\"text\":\"Hello\"}]}]}",
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {}
          },
          "text": {
            "description": "Plain-text shortcut for the body: paragraphs separated by blank lines (ignored if document is given)",
            "type": "string"
          },
          "content": {
            "description": "Deprecated alias for document",
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {}
          }
        },
        "required": [
          "name"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "update_document",
      "toolset": "documents",
      "toolsetLabel": "Documents",
      "write": true,
      "description": "Update a document",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Document ID"
          },
          "name": {
            "description": "Updated document name",
            "type": "string"
          },
          "collection_id": {
            "description": "Updated collection ID",
            "type": "number"
          },
          "document": {
            "description": "Document body as a ProseMirror JSON doc, e.g. {\"type\":\"doc\",\"content\":[{\"type\":\"paragraph\",\"content\":[{\"type\":\"text\",\"text\":\"Hello\"}]}]}",
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {}
          },
          "text": {
            "description": "Plain-text shortcut for the body: paragraphs separated by blank lines (ignored if document is given)",
            "type": "string"
          },
          "content": {
            "description": "Deprecated alias for document",
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {}
          },
          "archived": {
            "description": "Archive the document",
            "type": "boolean"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "delete_document",
      "toolset": "documents",
      "toolsetLabel": "Documents",
      "write": true,
      "description": "Permanently delete a document (archives it first, as Metabase requires)",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Document ID"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "list_timelines",
      "toolset": "timelines",
      "toolsetLabel": "Timelines",
      "write": false,
      "description": "List all timelines",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "collection_id": {
            "description": "Filter timelines by collection ID",
            "type": "number"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "get_timeline",
      "toolset": "timelines",
      "toolsetLabel": "Timelines",
      "write": false,
      "description": "Get a timeline by ID",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Timeline ID"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "create_timeline",
      "toolset": "timelines",
      "toolsetLabel": "Timelines",
      "write": true,
      "description": "Create a timeline for annotating charts",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Timeline name"
          },
          "collection_id": {
            "description": "Collection ID to place the timeline in",
            "type": "number"
          },
          "icon": {
            "description": "Icon name (default: star)",
            "type": "string"
          },
          "default": {
            "description": "Whether this is the default timeline",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "update_timeline",
      "toolset": "timelines",
      "toolsetLabel": "Timelines",
      "write": true,
      "description": "Update a timeline",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Timeline ID"
          },
          "name": {
            "description": "Updated timeline name",
            "type": "string"
          },
          "icon": {
            "description": "Updated icon name",
            "type": "string"
          },
          "default": {
            "description": "Whether this is the default timeline",
            "type": "boolean"
          },
          "archived": {
            "description": "Archive the timeline",
            "type": "boolean"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "delete_timeline",
      "toolset": "timelines",
      "toolsetLabel": "Timelines",
      "write": true,
      "description": "Delete a timeline",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Timeline ID"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "create_timeline_event",
      "toolset": "timelines",
      "toolsetLabel": "Timelines",
      "write": true,
      "description": "Create an event on a timeline",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "timeline_id": {
            "type": "number",
            "description": "ID of the timeline to add the event to"
          },
          "name": {
            "type": "string",
            "description": "Event name"
          },
          "timestamp": {
            "type": "string",
            "description": "Event timestamp (ISO 8601 format)"
          },
          "description": {
            "description": "Event description",
            "type": "string"
          },
          "icon": {
            "description": "Icon name (default: star)",
            "type": "string"
          },
          "timezone": {
            "description": "Timezone for the event (default: UTC)",
            "type": "string"
          }
        },
        "required": [
          "timeline_id",
          "name",
          "timestamp"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "update_timeline_event",
      "toolset": "timelines",
      "toolsetLabel": "Timelines",
      "write": true,
      "description": "Update a timeline event",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Timeline event ID"
          },
          "name": {
            "description": "Updated event name",
            "type": "string"
          },
          "timestamp": {
            "description": "Updated event timestamp (ISO 8601 format)",
            "type": "string"
          },
          "description": {
            "description": "Updated event description",
            "type": "string"
          },
          "icon": {
            "description": "Updated icon name",
            "type": "string"
          },
          "archived": {
            "description": "Archive the event",
            "type": "boolean"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "delete_timeline_event",
      "toolset": "timelines",
      "toolsetLabel": "Timelines",
      "write": true,
      "description": "Delete a timeline event",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Timeline event ID"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "list_bookmarks",
      "toolset": "bookmarks",
      "toolsetLabel": "Bookmarks",
      "write": false,
      "description": "List all bookmarks for the current user",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    },
    {
      "name": "create_bookmark",
      "toolset": "bookmarks",
      "toolsetLabel": "Bookmarks",
      "write": true,
      "description": "Bookmark a card, dashboard, or collection",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "card",
              "dashboard",
              "collection"
            ],
            "description": "Type of item to bookmark"
          },
          "item_id": {
            "type": "number",
            "description": "ID of the item to bookmark"
          }
        },
        "required": [
          "type",
          "item_id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "delete_bookmark",
      "toolset": "bookmarks",
      "toolsetLabel": "Bookmarks",
      "write": true,
      "description": "Remove a bookmark from a card, dashboard, or collection",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "card",
              "dashboard",
              "collection"
            ],
            "description": "Type of bookmarked item"
          },
          "item_id": {
            "type": "number",
            "description": "ID of the bookmarked item"
          }
        },
        "required": [
          "type",
          "item_id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "create_moderation_review",
      "toolset": "moderation",
      "toolsetLabel": "Moderation",
      "write": true,
      "description": "Mark a card or dashboard as verified or remove verification (Pro/Enterprise)",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "moderated_item_id": {
            "type": "number",
            "description": "Card or dashboard ID"
          },
          "moderated_item_type": {
            "type": "string",
            "enum": [
              "card",
              "dashboard"
            ],
            "description": "Item type"
          },
          "status": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "verified"
                ]
              },
              {
                "type": "null"
              }
            ],
            "description": "Set to 'verified' to verify, or null to remove verification"
          }
        },
        "required": [
          "moderated_item_id",
          "moderated_item_type",
          "status"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "translate_entity_ids",
      "toolset": "eid-translation",
      "toolsetLabel": "EID Translation",
      "write": false,
      "description": "Translate serialization entity IDs to API integer IDs",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "entity_ids": {
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "description": "Map of entity type to array of entity IDs. Example: { \"card\": [\"abc123\", \"def456\"], \"dashboard\": [\"ghi789\"] }"
          }
        },
        "required": [
          "entity_ids"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "list_metrics",
      "toolset": "metrics",
      "toolsetLabel": "Metrics",
      "write": false,
      "description": "List metrics: the curated, governed numbers defined in Metabase (e.g. Revenue, Number of Orders)",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    },
    {
      "name": "get_metric",
      "toolset": "metrics",
      "toolsetLabel": "Metrics",
      "write": false,
      "description": "Get a metric's definition (Metabase 0.64+ also returns its dimensions)",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Metric (card) ID"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "run_metric",
      "toolset": "metrics",
      "toolsetLabel": "Metrics",
      "write": false,
      "description": "Compute a metric (or measure) with optional filters and breakouts, without writing a query. Get dimension IDs from list_metric_dimensions. For metric math pass a raw definition, e.g. { expression: ['/', {}, ['metric', {'lib/uuid': 'a'}, 1], ['metric', {'lib/uuid': 'b'}, 2]] }. Metabase 0.60+.",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "metric_id": {
            "description": "Metric ID to compute",
            "type": "number"
          },
          "measure_id": {
            "description": "Measure ID to compute (instead of a metric)",
            "type": "number"
          },
          "filters": {
            "description": "Filters on the metric's dimensions (combined with AND)",
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "dimension_id": {
                  "type": "string",
                  "description": "Dimension ID from list_metric_dimensions"
                },
                "operator": {
                  "type": "string",
                  "description": "Filter operator: '=', '!=', '>', '>=', '<', '<=', 'between', 'contains', 'does-not-contain', 'starts-with', 'ends-with', 'is-null', 'not-null', 'is-empty', 'not-empty', 'time-interval'"
                },
                "values": {
                  "description": "Operator arguments, e.g. ['Widget'] for '=', [10, 20] for 'between', [-30, 'day'] for 'time-interval'",
                  "type": "array",
                  "items": {}
                }
              },
              "required": [
                "dimension_id",
                "operator"
              ],
              "additionalProperties": false
            }
          },
          "breakouts": {
            "description": "Group the result by these dimensions",
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "dimension_id": {
                  "type": "string",
                  "description": "Dimension ID from list_metric_dimensions"
                },
                "temporal_unit": {
                  "description": "For date dimensions: 'day', 'week', 'month', 'quarter', 'year', ...",
                  "type": "string"
                }
              },
              "required": [
                "dimension_id"
              ],
              "additionalProperties": false
            }
          },
          "definition": {
            "description": "Raw /api/metric/dataset definition (expression, filters, projections); overrides the other inputs",
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {}
          },
          "max_rows": {
            "description": "Max rows to return (capped by METABASE_MAX_ROWS, default 500)",
            "type": "integer",
            "exclusiveMinimum": 0,
            "maximum": 9007199254740991
          },
          "offset": {
            "description": "Skip this many result rows first, for paging through a large result",
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "verbose": {
            "description": "Return the raw Metabase response (column internals, results_metadata, insights) instead of the compact columns + rows view",
            "type": "boolean"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "list_metric_dimensions",
      "toolset": "metrics",
      "toolsetLabel": "Metrics",
      "write": false,
      "description": "List the dimensions (columns) a metric can be filtered or broken out by, with their IDs. Metabase 0.64+.",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Metric ID"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "get_metric_dimension_values",
      "toolset": "metrics",
      "toolsetLabel": "Metrics",
      "write": false,
      "description": "Get the distinct values of a metric dimension, optionally searching them. Useful before filtering. Metabase 0.64+.",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Metric ID"
          },
          "dimension_id": {
            "type": "string",
            "description": "Dimension ID from list_metric_dimensions"
          },
          "query": {
            "description": "Search text; omit to list values",
            "type": "string"
          }
        },
        "required": [
          "id",
          "dimension_id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "create_metric",
      "toolset": "metrics",
      "toolsetLabel": "Metrics",
      "write": true,
      "description": "Create a metric: a saved aggregation others can reuse. dataset_query must aggregate exactly once, e.g. { database: 1, type: 'query', query: { 'source-table': 2, aggregation: [['sum', ['field', 5, null]]] } }",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Metric name"
          },
          "dataset_query": {
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {},
            "description": "Query with a single aggregation (legacy MBQL or MBQL 5)"
          },
          "description": {
            "description": "What the metric means",
            "type": "string"
          },
          "collection_id": {
            "description": "Collection to save it in",
            "type": "number"
          }
        },
        "required": [
          "name",
          "dataset_query"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "update_metric",
      "toolset": "metrics",
      "toolsetLabel": "Metrics",
      "write": true,
      "description": "Update a metric's name, description, definition or collection; archived: true archives it",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Metric ID"
          },
          "name": {
            "description": "New name",
            "type": "string"
          },
          "dataset_query": {
            "description": "New definition (single aggregation)",
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {}
          },
          "description": {
            "description": "New description",
            "type": "string"
          },
          "collection_id": {
            "description": "Move to collection",
            "type": "number"
          },
          "archived": {
            "description": "Archive (true) or restore (false)",
            "type": "boolean"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "list_measures",
      "toolset": "measures",
      "toolsetLabel": "Measures",
      "write": false,
      "description": "List measures: reusable, table-scoped aggregations (e.g. 'Revenue = sum of Total')",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    },
    {
      "name": "get_measure",
      "toolset": "measures",
      "toolsetLabel": "Measures",
      "write": false,
      "description": "Get a measure by ID",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Measure ID"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "create_measure",
      "toolset": "measures",
      "toolsetLabel": "Measures",
      "write": true,
      "description": "Create a measure on a table. Run it with run_metric (measure_id).",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Measure name"
          },
          "table_id": {
            "type": "number",
            "description": "Table the measure aggregates"
          },
          "definition": {
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {},
            "description": "Aggregation defining the measure, e.g. { aggregation: [['sum', ['field', 5, null]]] }, or a full query ({ database, type: 'query', query: { 'source-table', aggregation } })"
          },
          "description": {
            "description": "What the measure means",
            "type": "string"
          }
        },
        "required": [
          "name",
          "table_id",
          "definition"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "update_measure",
      "toolset": "measures",
      "toolsetLabel": "Measures",
      "write": true,
      "description": "Update a measure; archived: true archives it",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Measure ID"
          },
          "revision_message": {
            "type": "string",
            "description": "Audit message describing the change"
          },
          "name": {
            "description": "New name",
            "type": "string"
          },
          "definition": {
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {},
            "description": "Aggregation defining the measure, e.g. { aggregation: [['sum', ['field', 5, null]]] }, or a full query ({ database, type: 'query', query: { 'source-table', aggregation } })"
          },
          "description": {
            "description": "New description",
            "type": "string"
          },
          "archived": {
            "description": "Archive (true) or restore (false)",
            "type": "boolean"
          }
        },
        "required": [
          "id",
          "revision_message"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "list_transforms",
      "toolset": "transforms",
      "toolsetLabel": "Transforms",
      "write": false,
      "description": "List transforms. Transforms write a query's result into a warehouse table. Self-hosted Metabase must enable them (MB_TRANSFORMS_ENABLED=true); the sample database can't be a target.",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "database_id": {
            "description": "Only transforms on this database",
            "type": "number"
          },
          "tag_ids": {
            "description": "Only transforms with these tags",
            "type": "array",
            "items": {
              "type": "number"
            }
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "get_transform",
      "toolset": "transforms",
      "toolsetLabel": "Transforms",
      "write": false,
      "description": "Get a transform: source query, target table, last run",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Transform ID"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "list_transform_runs",
      "toolset": "transforms",
      "toolsetLabel": "Transforms",
      "write": false,
      "description": "List transform runs (status, start/end time, message), newest first",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "transform_ids": {
            "description": "Only runs of these transforms",
            "type": "array",
            "items": {
              "type": "number"
            }
          },
          "statuses": {
            "description": "e.g. ['started', 'succeeded', 'failed']",
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "get_transform_run",
      "toolset": "transforms",
      "toolsetLabel": "Transforms",
      "write": false,
      "description": "Get one transform run",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "run_id": {
            "type": "number",
            "description": "Run ID"
          }
        },
        "required": [
          "run_id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "list_transform_jobs",
      "toolset": "transforms",
      "toolsetLabel": "Transforms",
      "write": false,
      "description": "List transform jobs: cron schedules that run every transform carrying one of the job's tags",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    },
    {
      "name": "list_transform_tags",
      "toolset": "transforms",
      "toolsetLabel": "Transforms",
      "write": false,
      "description": "List transform tags",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    },
    {
      "name": "create_transform",
      "toolset": "transforms",
      "toolsetLabel": "Transforms",
      "write": true,
      "description": "Create a transform that materialises a query into a table. Transforms write a query's result into a warehouse table. Self-hosted Metabase must enable them (MB_TRANSFORMS_ENABLED=true); the sample database can't be a target.",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Transform name"
          },
          "sql": {
            "description": "Native SQL whose result becomes the table (needs database_id)",
            "type": "string"
          },
          "database_id": {
            "description": "Database to run sql against (also the target database)",
            "type": "number"
          },
          "query": {
            "description": "A full dataset_query instead of sql",
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {}
          },
          "source": {
            "description": "Raw transform source, e.g. { type: 'query', query: {...} }; overrides sql/query",
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {}
          },
          "target_table": {
            "type": "string",
            "description": "Name of the table to create/replace"
          },
          "target_schema": {
            "description": "Schema for the table (e.g. 'public'); omit for schema-less databases",
            "type": "string"
          },
          "description": {
            "description": "Description",
            "type": "string"
          },
          "collection_id": {
            "description": "Collection to file the transform in",
            "type": "number"
          },
          "tag_ids": {
            "description": "Tags (jobs run transforms by tag)",
            "type": "array",
            "items": {
              "type": "number"
            }
          }
        },
        "required": [
          "name",
          "target_table"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "update_transform",
      "toolset": "transforms",
      "toolsetLabel": "Transforms",
      "write": true,
      "description": "Update a transform's name, description, source query, target or tags",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Transform ID"
          },
          "name": {
            "description": "New name",
            "type": "string"
          },
          "description": {
            "description": "New description",
            "type": "string"
          },
          "sql": {
            "description": "Native SQL whose result becomes the table (needs database_id)",
            "type": "string"
          },
          "database_id": {
            "description": "Database to run sql against (also the target database)",
            "type": "number"
          },
          "query": {
            "description": "A full dataset_query instead of sql",
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {}
          },
          "source": {
            "description": "Raw transform source, e.g. { type: 'query', query: {...} }; overrides sql/query",
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {}
          },
          "target_table": {
            "description": "New target table name",
            "type": "string"
          },
          "target_schema": {
            "description": "New target schema",
            "type": "string"
          },
          "tag_ids": {
            "description": "Replace tags",
            "type": "array",
            "items": {
              "type": "number"
            }
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "delete_transform",
      "toolset": "transforms",
      "toolsetLabel": "Transforms",
      "write": true,
      "description": "Delete a transform. drop_table: true also drops the table it produced.",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Transform ID"
          },
          "drop_table": {
            "description": "Also drop the target table (default false)",
            "type": "boolean"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "run_transform",
      "toolset": "transforms",
      "toolsetLabel": "Transforms",
      "write": true,
      "description": "Run a transform now. Returns a run_id; poll get_transform_run or list_transform_runs for the result.",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Transform ID"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "cancel_transform_run",
      "toolset": "transforms",
      "toolsetLabel": "Transforms",
      "write": true,
      "description": "Cancel the transform's current run",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Transform ID"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "create_transform_job",
      "toolset": "transforms",
      "toolsetLabel": "Transforms",
      "write": true,
      "description": "Create a transform job that runs all transforms with the given tags on a schedule",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Job name"
          },
          "schedule": {
            "type": "string",
            "description": "Quartz cron, e.g. '0 0 3 * * ? *' (daily 03:00)"
          },
          "tag_ids": {
            "description": "Transform tags this job runs",
            "type": "array",
            "items": {
              "type": "number"
            }
          },
          "description": {
            "description": "Description",
            "type": "string"
          }
        },
        "required": [
          "name",
          "schedule"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "run_transform_job",
      "toolset": "transforms",
      "toolsetLabel": "Transforms",
      "write": true,
      "description": "Run a transform job now",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "job_id": {
            "type": "number",
            "description": "Job ID"
          }
        },
        "required": [
          "job_id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "delete_transform_job",
      "toolset": "transforms",
      "toolsetLabel": "Transforms",
      "write": true,
      "description": "Delete a transform job (the transforms stay)",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "job_id": {
            "type": "number",
            "description": "Job ID"
          }
        },
        "required": [
          "job_id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "create_transform_tag",
      "toolset": "transforms",
      "toolsetLabel": "Transforms",
      "write": true,
      "description": "Create a transform tag",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Tag name"
          }
        },
        "required": [
          "name"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "export_card_query",
      "toolset": "exports",
      "toolsetLabel": "Exports",
      "write": false,
      "description": "Export a saved question's full results as csv, json or xlsx (all rows, unlike execute_card_query's 2000-row cap)",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "card_id": {
            "type": "number",
            "description": "Card ID"
          },
          "format": {
            "type": "string",
            "enum": [
              "csv",
              "json",
              "xlsx"
            ],
            "description": "File format"
          },
          "parameter_values": {
            "description": "Template tag values, as for execute_card_query",
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {}
          },
          "format_rows": {
            "description": "Apply Metabase column formatting (default false: raw values)",
            "type": "boolean"
          },
          "output_path": {
            "description": "Absolute path on the MCP server's machine to save the file to. Required for xlsx/pdf; for csv/json omit it to get the content inline.",
            "type": "string"
          },
          "overwrite": {
            "description": "Replace output_path if it exists (default false)",
            "type": "boolean"
          },
          "max_inline_chars": {
            "description": "Max characters returned inline for csv/json (default 100000); longer output is truncated",
            "type": "number"
          }
        },
        "required": [
          "card_id",
          "format"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "export_query",
      "toolset": "exports",
      "toolsetLabel": "Exports",
      "write": false,
      "description": "Export an ad-hoc query's results as csv, json or xlsx. WARNING: the SQL is sent as-is; this server does not block INSERT/UPDATE/DELETE/DDL. Whether it can change data depends only on the Metabase API key's permissions and the database user's grants.",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "query": {
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {},
            "description": "dataset_query, e.g. { database: 1, type: 'native', native: { query: 'SELECT ...' } }"
          },
          "format": {
            "type": "string",
            "enum": [
              "csv",
              "json",
              "xlsx"
            ],
            "description": "File format"
          },
          "format_rows": {
            "description": "Apply Metabase column formatting (default false)",
            "type": "boolean"
          },
          "output_path": {
            "description": "Absolute path on the MCP server's machine to save the file to. Required for xlsx/pdf; for csv/json omit it to get the content inline.",
            "type": "string"
          },
          "overwrite": {
            "description": "Replace output_path if it exists (default false)",
            "type": "boolean"
          },
          "max_inline_chars": {
            "description": "Max characters returned inline for csv/json (default 100000); longer output is truncated",
            "type": "number"
          }
        },
        "required": [
          "query",
          "format"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "export_dashboard_pdf",
      "toolset": "exports",
      "toolsetLabel": "Exports",
      "write": false,
      "description": "Render a dashboard to PDF on the Metabase server and save it to output_path. Metabase 0.64+.",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "dashboard_id": {
            "type": "number",
            "description": "Dashboard ID"
          },
          "output_path": {
            "type": "string",
            "description": "Absolute path to save the PDF to"
          },
          "overwrite": {
            "description": "Replace output_path if it exists (default false)",
            "type": "boolean"
          },
          "paper_size": {
            "description": "Paper size (default a4)",
            "type": "string",
            "enum": [
              "a4",
              "letter"
            ]
          },
          "parameters": {
            "description": "Dashboard filter values, e.g. [{ id: '<parameter id>', value: ['Widget'] }]",
            "type": "array",
            "items": {
              "type": "object",
              "propertyNames": {
                "type": "string"
              },
              "additionalProperties": {}
            }
          }
        },
        "required": [
          "dashboard_id",
          "output_path"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "list_api_keys",
      "toolset": "api-keys",
      "toolsetLabel": "API Keys",
      "write": false,
      "description": "List Metabase API keys (masked) with the group each one acts as. Admin only.",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    },
    {
      "name": "create_api_key",
      "toolset": "api-keys",
      "toolsetLabel": "API Keys",
      "write": true,
      "description": "Create an API key that acts with the permissions of one group. The full key (unmasked_key) is returned only once: store it right away. Admin only.",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Key name, e.g. 'etl-pipeline'"
          },
          "group_id": {
            "type": "number",
            "description": "Group whose permissions the key gets (see list_groups). Note: every key is also in All Users."
          }
        },
        "required": [
          "name",
          "group_id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "update_api_key",
      "toolset": "api-keys",
      "toolsetLabel": "API Keys",
      "write": true,
      "description": "Rename an API key or move it to another group. Admin only.",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "API key ID"
          },
          "name": {
            "description": "New name",
            "type": "string"
          },
          "group_id": {
            "description": "New group ID",
            "type": "number"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "regenerate_api_key",
      "toolset": "api-keys",
      "toolsetLabel": "API Keys",
      "write": true,
      "description": "Replace an API key's secret. The old key stops working immediately; the new one (unmasked_key) is shown only once. Admin only.",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "API key ID"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "delete_api_key",
      "toolset": "api-keys",
      "toolsetLabel": "API Keys",
      "write": true,
      "description": "Delete an API key; anything using it loses access immediately. Admin only.",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "API key ID"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "get_embedding_status",
      "toolset": "embedding",
      "toolsetLabel": "Embedding",
      "write": false,
      "description": "Embedding settings (static / interactive / SDK), whether a signing key exists (never its value), and which cards and dashboards are embeddable. Admin only.",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    },
    {
      "name": "create_embed_url",
      "toolset": "embedding",
      "toolsetLabel": "Embedding",
      "write": false,
      "description": "Create a signed static-embedding iframe URL for a card or dashboard that has embedding enabled. Signed locally with the instance's embedding secret key; the key is never returned. Admin only.",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "resource": {
            "type": "string",
            "enum": [
              "card",
              "dashboard"
            ],
            "description": "What to embed"
          },
          "id": {
            "type": "number",
            "description": "Card or dashboard ID"
          },
          "params": {
            "description": "Values for locked parameters, by slug, e.g. { category: 'Widget' }",
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {}
          },
          "expires_in_minutes": {
            "description": "Token lifetime (default 10)",
            "type": "integer",
            "exclusiveMinimum": 0,
            "maximum": 43200
          },
          "bordered": {
            "description": "Show a border (default true)",
            "type": "boolean"
          },
          "titled": {
            "description": "Show the title (default true)",
            "type": "boolean"
          },
          "theme": {
            "description": "Color theme",
            "type": "string",
            "enum": [
              "light",
              "night",
              "transparent"
            ]
          }
        },
        "required": [
          "resource",
          "id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "set_static_embedding",
      "toolset": "embedding",
      "toolsetLabel": "Embedding",
      "write": true,
      "description": "Turn static (signed) embedding on or off for the whole instance. Turning it off breaks existing embeds. Admin only.",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "true to enable, false to disable"
          }
        },
        "required": [
          "enabled"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "set_resource_embedding",
      "toolset": "embedding",
      "toolsetLabel": "Embedding",
      "write": true,
      "description": "Allow or stop static embedding of one card or dashboard, and choose per parameter whether embedders may change it (enabled), must set it in the token (locked) or never see it (disabled). Admin only.",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "resource": {
            "type": "string",
            "enum": [
              "card",
              "dashboard"
            ],
            "description": "What to embed"
          },
          "id": {
            "type": "number",
            "description": "Card or dashboard ID"
          },
          "enabled": {
            "type": "boolean",
            "description": "Allow embedding"
          },
          "embedding_params": {
            "description": "Per parameter slug: 'enabled' | 'locked' | 'disabled'",
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {
              "type": "string",
              "enum": [
                "enabled",
                "locked",
                "disabled"
              ]
            }
          }
        },
        "required": [
          "resource",
          "id",
          "enabled"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "list_tasks",
      "toolset": "diagnostics",
      "toolsetLabel": "Tasks & Logs",
      "write": false,
      "description": "Background task history (sync, analyze, field values, fingerprinting, notification sends, transform runs), newest first. Use to debug slow or failing syncs. Admin only.",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "status": {
            "description": "Only tasks with this status",
            "type": "string",
            "enum": [
              "success",
              "failed",
              "started",
              "unknown"
            ]
          },
          "task": {
            "description": "Only this task type (see list_task_types), e.g. 'sync'",
            "type": "string"
          },
          "limit": {
            "description": "Page size (default 50)",
            "type": "integer",
            "exclusiveMinimum": 0,
            "maximum": 200
          },
          "offset": {
            "description": "Skip this many tasks",
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "verbose": {
            "description": "Include each task's log lines",
            "type": "boolean"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "get_task",
      "toolset": "diagnostics",
      "toolsetLabel": "Tasks & Logs",
      "write": false,
      "description": "One background task with its details and log lines. Admin only.",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Task ID from list_tasks"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "list_task_types",
      "toolset": "diagnostics",
      "toolsetLabel": "Tasks & Logs",
      "write": false,
      "description": "Task type names usable as list_tasks' task filter. Admin only.",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    },
    {
      "name": "list_task_runs",
      "toolset": "diagnostics",
      "toolsetLabel": "Tasks & Logs",
      "write": false,
      "description": "Grouped task runs: one sync/analyze/fingerprint run of a database with success/failure counts. Admin only.",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "limit": {
            "description": "Page size (default 50)",
            "type": "integer",
            "exclusiveMinimum": 0,
            "maximum": 200
          },
          "offset": {
            "description": "Skip this many runs",
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "get_scheduler_info",
      "toolset": "diagnostics",
      "toolsetLabel": "Tasks & Logs",
      "write": false,
      "description": "Quartz scheduler status and every scheduled job with its triggers and next fire time. Admin only.",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    },
    {
      "name": "get_server_logs",
      "toolset": "diagnostics",
      "toolsetLabel": "Tasks & Logs",
      "write": false,
      "description": "Recent Metabase server log lines (the last ~250 kept in memory), newest first, ANSI colors stripped. Admin only.",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "level": {
            "description": "Minimum level",
            "type": "string",
            "enum": [
              "ERROR",
              "WARN",
              "INFO",
              "DEBUG",
              "TRACE"
            ]
          },
          "contains": {
            "description": "Only lines whose message or logger contains this text",
            "type": "string"
          },
          "limit": {
            "description": "Max lines (default 100)",
            "type": "integer",
            "exclusiveMinimum": 0,
            "maximum": 250
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "list_log_presets",
      "toolset": "diagnostics",
      "toolsetLabel": "Tasks & Logs",
      "write": false,
      "description": "Logging presets (groups of loggers for troubleshooting, e.g. sync). Admin only.",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    },
    {
      "name": "get_premium_token_status",
      "toolset": "diagnostics",
      "toolsetLabel": "Tasks & Logs",
      "write": false,
      "description": "Status of the premium (paid plan) token: validity, features, expiry. Open-source instances report no token. Admin only.",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    },
    {
      "name": "set_log_levels",
      "toolset": "diagnostics",
      "toolsetLabel": "Tasks & Logs",
      "write": true,
      "description": "Temporarily change log levels for some loggers (e.g. from list_log_presets) to debug an issue; Metabase reverts them after the duration. Admin only.",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {
          "log_levels": {
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {
              "type": "string",
              "enum": [
                "trace",
                "debug",
                "info",
                "warn",
                "error",
                "fatal",
                "off"
              ]
            },
            "description": "Logger name → level, e.g. { 'metabase.sync': 'debug' }"
          },
          "duration": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "maximum": 9007199254740991,
            "description": "How long the change lasts"
          },
          "duration_unit": {
            "type": "string",
            "enum": [
              "seconds",
              "minutes",
              "hours",
              "days"
            ],
            "description": "Unit of duration"
          }
        },
        "required": [
          "log_levels",
          "duration",
          "duration_unit"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "reset_log_levels",
      "toolset": "diagnostics",
      "toolsetLabel": "Tasks & Logs",
      "write": true,
      "description": "Undo set_log_levels now. Admin only.",
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "parameters": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    }
  ]
}