Skip to content

Metabase

Metabase

Metabase is an open-source business intelligence tool that lets you ask questions about your data and visualize answers as charts, graphs, and dashboards. With the Metabase integration in SquadOS, your agents can run native SQL or MBQL queries, create and manage dashboards, organize report collections, and automate data analysis workflows directly from conversations.

This tool uses API key (API_KEY) to connect.

You will need the following fields:

FieldRequiredDescription
api_keyYesAPI key generated in the admin panel of your Metabase instance.
base_urlYesBase URL of your Metabase instance (e.g., https://metabase.yourcompany.com).
  1. Log in to your Metabase instance as an administrator.
  2. Go to Settings → Admin Settings.
  3. Navigate to the API Keys section (available in Metabase 48+).
  4. Click Create API key and give it a descriptive name (e.g., “SquadOS Integration”).
  5. Copy the generated key — it is only displayed once.
  6. Also note the base URL of your instance (e.g., https://metabase.yourcompany.com).
  1. Go to Tools in the side menu (/admin/tools).
  2. Open the Available tab and search for Metabase.
  3. Click the card to open the details modal and hit Connect.
  4. You’re taken to the secure connection page hosted by Composio, where you enter the API key and instance URL obtained above.
  5. Once done, you’re sent back to SquadOS with the account connected and the tool available to your agents. (Connection-flow details in Organization Tools.)

METABASE_CREATE_CARD_QUERY1

Tool to run the query associated with a Card and return its results. Use when you need to execute a card’s query with optional parameters and cache control.

NameTypeRequiredDescription
card_idintegerYesID of the card to query.
parametersarrayNoQuery parameters to apply. Format: [{"type":"category","value":"value","target":["variable",["template-tag","tag-name"]]}]
ignore_cachebooleanNoWhether to bypass query cache and force fresh query execution.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

METABASE_CREATE_DASHBOARD_COPY

Tool to create a copy of an existing Metabase dashboard. Use when you need to duplicate a dashboard with optional customization of name, description, and collection placement. Supports both shallow copy (references same cards) and deep copy (duplicates all cards).

NameTypeRequiredDescription
from_dashboard_idintegerYesThe ID of the dashboard to copy.
namestringNoOptional name for the copied dashboard. Must be a non-blank string if provided.
descriptionstringNoOptional description for the copied dashboard.
is_deep_copybooleanNoSet to true to create a deep copy that duplicates all questions/cards in the dashboard. Required when the dashboard contains Dashboard Questions. Default is false.
collection_idintegerNoOptional collection ID where the copied dashboard should be placed. Must be greater than zero if provided.
collection_positionintegerNoOptional position within the collection. Must be greater than zero if provided.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

METABASE_DELETE_CARD

Tool to hard delete a Metabase card. Use when you need to permanently remove a card from the system. For soft deletion, use the update card action instead.

NameTypeRequiredDescription
idintegerYesThe ID of the card to delete.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

METABASE_DELETE_DASHBOARD

Tool to hard delete a Metabase dashboard by its ID. Use when you need to permanently remove a dashboard. For soft delete, use the update dashboard action instead (set archived to true).

NameTypeRequiredDescription
idintegerYesThe ID of the dashboard to permanently delete.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

METABASE_GET_API_ACTIVITY_RECENT_VIEWS

Tool to retrieve recently viewed items in Metabase. Use when you need to get a list of cards, dashboards, collections, tables, or documents that the authenticated user has recently accessed. Returns metadata including timestamps and permissions for each viewed item.

NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

METABASE_GET_API_ALERT

Tool to retrieve all alerts in Metabase. Use when you need to get a list of all configured alerts with their settings and notification channels.

NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

METABASE_GET_API_CARD_ID

Tool to retrieve a specific card (question) by its ID. Use when you need to get detailed information about a card including its query, visualization settings, and metadata.

NameTypeRequiredDescription
idintegerYesThe Card identifier.
legacy_mbqlbooleanNoWhen set to true, returns the card dataset_query in MBQL 4 (legacy) format instead of MBQL 5.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

METABASE_GET_API_COLLECTION

Tool to retrieve all collections that the current user has read permissions for. Returns collections with can_write property indicating write permissions.

NameTypeRequiredDescription
archivedbooleanNoIf true, returns archived collections. If false or omitted, returns non-archived collections.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

METABASE_GET_API_COLLECTION_ID_ITEMS

Tool to retrieve items from a specific Metabase collection. Use when you need to list cards (questions), dashboards, nested collections, or pulses within a collection. Supports filtering by item type and archived status.

NameTypeRequiredDescription
idstringYesCollection ID to retrieve items from.
modelstringNoFilter results by object type: card, dashboard, collection, or pulse.
limitintegerNoMaximum number of items to return per page.
offsetintegerNoNumber of items to skip before returning results.
archivedstringNo"true" for archived items, "false" for active items. Defaults to "false".
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

METABASE_GET_API_DATABASE

DEPRECATED: Use METABASE_LIST_DATABASES instead for a concise, LLM-friendly response. Retrieves all Database instances configured in Metabase with full detail including connection info.

NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

METABASE_GET_API_DATABASE_ID_METADATA

Tool to retrieve complete metadata for a specific database including all tables and fields. Use when you need detailed information about database structure, table schemas, and field properties.

NameTypeRequiredDescription
idintegerYesDatabase ID to retrieve metadata from.
include_hiddenbooleanNoInclude hidden tables and fields in the response. By default, only non-hidden tables and fields are returned.
include_editable_data_modelbooleanNoOnly return tables for which the current user has data model editing permissions. Requires Enterprise Edition.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

METABASE_GET_API_SEARCH

Tool to search Cards, Dashboards, Collections, Tables, Databases, and Pulses for a substring. Use when you need to find Metabase objects by name or search across multiple object types.

NameTypeRequiredDescription
qstringNoSearch query substring to search for within Cards, Dashboards, Collections, Tables, Databases, and Pulses.
modelsarrayNoArray of model types to search within. Valid values: dashboard, metric, segment, card, collection, table, pulse, database. If omitted, searches all model types.
archivedbooleanNoFilter by archived status.
table_db_idintegerNoFilter to specific database ID.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

METABASE_GET_API_USER_CURRENT

Tool to retrieve information about the currently authenticated user. Use when you need to get the current user’s profile, permissions, and account details.

NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

METABASE_GET_DASHBOARD_BY_ID

Tool to retrieve a dashboard by its ID from Metabase. Use when you need to fetch dashboard details including name, description, cards, parameters, and metadata.

NameTypeRequiredDescription
idintegerYesThe dashboard ID to retrieve.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

METABASE_GET_TABLE_SCHEMA

Gets column names, types, and foreign key relationships for a Metabase table. Use this before writing queries to know exact column names and types. Accepts either a table_id directly, or database_id + table_name to look up the table. Discovery chain: METABASE_LIST_DATABASESMETABASE_LIST_TABLESMETABASE_GET_TABLE_SCHEMAMETABASE_POST_API_DATASET.

NameTypeRequiredDescription
table_idintegerNoThe Metabase table ID. Use METABASE_LIST_TABLES to find table IDs. Either table_id or (database_id + table_name) must be provided.
table_namestringNoTable name to look up (requires database_id). Case-insensitive matching. Optionally prefix with schema: public.users or just users.
database_idintegerNoThe database ID (required when using table_name instead of table_id). Use METABASE_LIST_DATABASES to find database IDs.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

METABASE_GET_TABLE_BY_ID

Tool to retrieve basic table information by ID from Metabase. Use when you need table details including name, schema, entity type, and associated database information. For comprehensive table metadata with fields and query information, use METABASE_GET_TABLE_QUERY_METADATA instead.

NameTypeRequiredDescription
idintegerYesThe ID of the table to retrieve.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

METABASE_GET_TABLE_QUERY_METADATA

Tool to get metadata about a Table useful for running queries. Returns DB, fields, field FKs, and field values. Deprecated: Use METABASE_GET_TABLE_SCHEMA instead — it provides a more concise, LLM-friendly output with FK resolution and supports lookup by table name.

NameTypeRequiredDescription
idintegerYesThe table ID to retrieve query metadata for.
include_hidden_fieldsbooleanNoInclude any hidden Fields in the response. Defaults to false.
include_sensitive_fieldsbooleanNoInclude any sensitive Fields in the response. Defaults to false.
include_editable_data_modelbooleanNoWhen true, checks that the current user has write permissions for the table’s data model. Defaults to false.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

METABASE_LIST_DATABASES

Lists all databases configured in Metabase with essential info: ID, name, and engine. Use this first to discover available database IDs before running queries or listing tables.

NameTypeRequiredDescription
include_tablesbooleanNoWhether to include the list of table names for each database. Set to true when you need to discover which tables exist. Adds one extra API call per database, so leave false if you only need database IDs and names.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

METABASE_LIST_TABLES

Lists all tables in a Metabase database with their IDs, names, and schemas. Use this after METABASE_LIST_DATABASES to discover available tables before querying. For detailed column information, use METABASE_GET_TABLE_SCHEMA next.

NameTypeRequiredDescription
database_idintegerYesThe database ID to list tables from. Use METABASE_LIST_DATABASES first to discover available database IDs.
schema_namestringNoFilter tables to a specific schema (e.g., public, dbo). If not provided, tables from all schemas are returned.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

METABASE_POST_API_CARD

Tool to create a new Metabase card (question or model). Use when you need to create a new query, report, or visualization in Metabase.

NameTypeRequiredDescription
namestringYesName of the card.
displaystringYesDisplay type for visualization (e.g., table, bar, line, pie, scalar, area).
dataset_queryobjectYesQuery definition in MBQL or native SQL format. Must include database (integer ID), type (string: query or native), and the corresponding query object.
descriptionstringNoDescription of the card.
collection_idintegerNoID of collection to place card in.
visualization_settingsobjectNoSettings for visualization display. Can be an empty object {}.
collection_positionintegerNoPosition within collection.
result_metadataarrayNoMetadata about query results.
metadata_checksumstringNoChecksum of metadata.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

METABASE_POST_API_CARD_ID_COPY

Tool to create a copy of an existing Metabase card (question) by its ID. Use when you need to duplicate a card with all its query, visualization, and configuration settings.

NameTypeRequiredDescription
idintegerYesThe ID of the card to copy.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

METABASE_POST_API_COLLECTION

Tool to create a new Metabase collection for organizing content. Use when you need to create a collection with name and color. Collections are used to organize dashboards, questions, and models in Metabase.

NameTypeRequiredDescription
namestringYesCollection name (non-blank string).
colorstringYesHex color code for the collection (must match pattern #[0-9A-Fa-f]{6}).
parent_idintegerNoParent collection ID for nested collections (must be greater than 0).
descriptionstringNoCollection description (non-blank string if provided).
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

METABASE_POST_API_DASHBOARD

Tool to create a new Metabase dashboard. Use when you need to create a new dashboard for organizing and displaying visualizations and reports.

NameTypeRequiredDescription
namestringYesDashboard name. Must be a non-blank string.
descriptionstringNoDashboard description.
parametersarrayNoDashboard filter parameters. Array of parameter objects that define filters users can apply to the dashboard.
collection_idintegerNoID of collection to place dashboard in. If not specified, dashboard is created in root collection.
collection_positionintegerNoPosition within the collection. Determines the display order.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

METABASE_POST_API_DATASET

Tool to execute a query against a Metabase database and retrieve results. Use when you need to run native SQL or MBQL queries. Supports both raw SQL queries (type='native') and structured MBQL queries (type='query').

NameTypeRequiredDescription
typestringYesQuery type: native for raw SQL queries, query for MBQL (Metabase Query Language) queries.
databaseintegerYesThe database ID to execute the query against.
queryobjectNoMBQL (Metabase Query Language) query structure.
nativeobjectNoNative SQL query structure.
parametersarrayNoOptional query parameters for parameterized queries.
constraintsobjectNoQuery execution constraints.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

METABASE_POST_API_NOTIFICATION

Tool to create a new notification in Metabase. Use when you need to create notifications for cards or other resources.

NameTypeRequiredDescription
payload_typestringYesType of notification to create. Common values include notification/card for card-based notifications.
payloadobjectYesPayload object containing notification details. For notification/card type, this should include card_id (integer) specifying which card the notification is for.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

METABASE_PUT_API_CARD_ID

Tool to update a specific card (question) by its ID. Use when you need to modify card properties like name, description, visualization settings, or query definition.

NameTypeRequiredDescription
idintegerYesThe ID of the card to update.
namestringNoNon-blank string for the card name.
displaystringNoDisplay type for the card (e.g., table, bar, line, pie, scalar, area).
archivedbooleanNoWhether the card is archived.
descriptionstringNoString description of the card.
collection_idintegerNoID of the collection containing this card.
dataset_queryobjectNoThe query definition for the card.
visualization_settingsobjectNoMap of visualization settings.
enable_embeddingbooleanNoWhether embedding is enabled.
collection_positionintegerNoPosition in collection, must be greater than 0.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

METABASE_UPDATE_DASHBOARD

Tool to update a Metabase dashboard by ID. Use when you need to modify dashboard properties like name, description, parameters, cards, or tabs. The request body accepts the same structure as the response from GET /api/dashboard/:id. When setting archived to true, the dashboard is moved to Trash; when false, you may provide a collection_id.

NameTypeRequiredDescription
idintegerYesThe ID of the dashboard to update.
namestringNoDashboard name — must be non-blank string if provided.
descriptionstringNoDashboard description — may be empty or a string.
archivedbooleanNoWhether the dashboard is archived. Set to true to move dashboard to Trash collection, false to restore it.
collection_idintegerNoCollection ID the dashboard belongs to. Use when moving dashboard to a different collection or when unarchiving.
parametersarrayNoArray of parameter objects for the dashboard. Include this when updating dashboard filters.
dashcardsarrayNoList of dashboard cards with their configurations. Include the complete array when updating card positions or properties.
tabsarrayNoList of dashboard tabs. Include when updating tab configuration.
enable_embeddingbooleanNoWhether embedding is enabled for the dashboard.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.