---
title: "POST /api/ee/metabot-tools/query-datasource"
method: POST
path: "/api/ee/metabot-tools/query-datasource"
tags: ["/api/ee/metabot-tools"]
---

# POST /api/ee/metabot-tools/query-datasource

`POST /api/ee/metabot-tools/query-datasource`

Construct a query from a model or table data source.

## Request body

- object — Base schema for all tool requests. Contains the conversation ID and optional profile ID.
  - `arguments` MetabaseEnterpriseMetabotV3ToolsApiQueryDatasourceArguments, required
    - `aggregations` MetabaseEnterpriseMetabotV3ToolsApiAggregation[], nullable
      - union — Aggregation — count (field optional), field-based (field required), or measure-based.
        - MetabaseEnterpriseMetabotV3ToolsApiCountAggregation — Count aggregation — counts rows, no field_id needed. Use sort_order to order results by this aggregation ('asc' or 'desc').
          - `bucket` 'millisecond' | 'second' | 'minute' | 'hour' | 'day' | 'week' | 'month' | 'quarter' | 'year' | 'second-of-minute' | 'minute-of-hour' | 'hour-of-day' | 'day-of-week' | 'day-of-month' | 'day-of-year' | 'week-of-year' | 'month-of-year' | 'quarter-of-year' | 'year-of-era'
          - `function` 'count', required
          - `sort_order` 'asc' | 'desc', nullable
        - MetabaseEnterpriseMetabotV3ToolsApiFieldAggregation — Aggregation using a field and function. field_id is required. Use sort_order to order results by this aggregation ('asc' or 'desc').
          - `bucket` 'millisecond' | 'second' | 'minute' | 'hour' | 'day' | 'week' | 'month' | 'quarter' | 'year' | 'second-of-minute' | 'minute-of-hour' | 'hour-of-day' | 'day-of-week' | 'day-of-month' | 'day-of-year' | 'week-of-year' | 'month-of-year' | 'quarter-of-year' | 'year-of-era'
          - `field_id` string, required
          - `function` 'avg' | 'count-distinct' | 'max' | 'min' | 'sum', required
          - `sort_order` 'asc' | 'desc', nullable
        - MetabaseEnterpriseMetabotV3ToolsApiMeasureAggregation — Aggregation using a pre-defined measure.
          - `measure_id` integer, required
          - `sort_order` 'asc' | 'desc', nullable
    - `fields` MetabaseEnterpriseMetabotV3ToolsApiField[], nullable
      - `bucket` 'millisecond' | 'second' | 'minute' | 'hour' | 'day' | 'week' | 'month' | 'quarter' | 'year' | 'second-of-minute' | 'minute-of-hour' | 'hour-of-day' | 'day-of-week' | 'day-of-month' | 'day-of-year' | 'week-of-year' | 'month-of-year' | 'quarter-of-year' | 'year-of-era'
      - `field_id` string, required
    - `filters` MetabaseEnterpriseMetabotV3ToolsApiFilter[], nullable
      - union
        - MetabaseEnterpriseMetabotV3ToolsApiSegmentFilter — Filter using a pre-defined segment.
          - `segment_id` integer, required
        - MetabaseEnterpriseMetabotV3ToolsApiExistenceFilter
          - `field_id` string, required
          - `operation` 'is-null' | 'is-not-null' | 'string-is-empty' | 'string-is-not-empty' | 'is-true' | 'is-false', required
        - MetabaseEnterpriseMetabotV3ToolsApiTemporalExtractionFilter
          - `field_id` string, required
          - `operation` 'year-equals' | 'year-not-equals' | 'quarter-equals' | 'quarter-not-equals' | 'month-equals' | 'month-not-equals' | 'day-of-week-equals' | 'day-of-week-not-equals' | 'hour-equals' | 'hour-not-equals' | 'minute-equals' | 'minute-not-equals' | 'second-equals' | 'second-not-equals', required
          - `value` integer, required
        - MetabaseEnterpriseMetabotV3ToolsApiDisjunctiveTemporalExtractionFilter
          - `field_id` string, required
          - `operation` 'year-equals' | 'year-not-equals' | 'quarter-equals' | 'quarter-not-equals' | 'month-equals' | 'month-not-equals' | 'day-of-week-equals' | 'day-of-week-not-equals' | 'hour-equals' | 'hour-not-equals' | 'minute-equals' | 'minute-not-equals' | 'second-equals' | 'second-not-equals', required
          - `values` integer[], required
        - MetabaseEnterpriseMetabotV3ToolsApiTemporalFilter
          - `bucket` 'millisecond' | 'second' | 'minute' | 'hour' | 'day' | 'week' | 'month' | 'quarter' | 'year' | 'second-of-minute' | 'minute-of-hour' | 'hour-of-day' | 'day-of-week' | 'day-of-month' | 'day-of-year' | 'week-of-year' | 'month-of-year' | 'quarter-of-year' | 'year-of-era'
          - `field_id` string, required
          - `operation` 'equals' | 'not-equals' | 'greater-than' | 'greater-than-or-equal' | 'less-than' | 'less-than-or-equal', required
          - `value` union, required
            - string
            - integer
        - MetabaseEnterpriseMetabotV3ToolsApiDisjunctiveTemporalFilter
          - `bucket` 'millisecond' | 'second' | 'minute' | 'hour' | 'day' | 'week' | 'month' | 'quarter' | 'year' | 'second-of-minute' | 'minute-of-hour' | 'hour-of-day' | 'day-of-week' | 'day-of-month' | 'day-of-year' | 'week-of-year' | 'month-of-year' | 'quarter-of-year' | 'year-of-era'
          - `field_id` string, required
          - `operation` 'equals' | 'not-equals' | 'greater-than' | 'greater-than-or-equal' | 'less-than' | 'less-than-or-equal', required
          - `values` union[], required
            - union
              - …
        - MetabaseEnterpriseMetabotV3ToolsApiStringFilter
          - `field_id` string, required
          - `operation` 'equals' | 'not-equals' | 'string-contains' | 'string-not-contains' | 'string-starts-with' | 'string-ends-with', required
          - `value` string, required
        - MetabaseEnterpriseMetabotV3ToolsApiDisjunctiveStringDateFilter
          - `field_id` string, required
          - `operation` 'equals' | 'not-equals' | 'string-contains' | 'string-not-contains' | 'string-starts-with' | 'string-ends-with', required
          - `values` string[], required
        - MetabaseEnterpriseMetabotV3ToolsApiNumericFilter
          - `field_id` string, required
          - `operation` 'equals' | 'not-equals' | 'greater-than' | 'greater-than-or-equal' | 'less-than' | 'less-than-or-equal', required
          - `value` union, required
            - integer
            - number
        - MetabaseEnterpriseMetabotV3ToolsApiDisjunctiveNumericFilter
          - `field_id` string, required
          - `operation` 'equals' | 'not-equals', required
          - `values` union[], required
            - union
              - …
    - `group_by` MetabaseEnterpriseMetabotV3ToolsApiGroupBy[], nullable
      - `field_granularity` 'minute' | 'hour' | 'day' | 'week' | 'month' | 'quarter' | 'year' | 'day-of-week', nullable
      - `field_id` string, required
    - `limit` integer, nullable
    - `model_id` integer
    - `order_by` MetabaseEnterpriseMetabotV3ToolsApiOrderBy[], nullable
      - `direction` 'asc' | 'desc', required
      - `field` MetabaseEnterpriseMetabotV3ToolsApiField, required
        - `bucket` 'millisecond' | 'second' | 'minute' | 'hour' | 'day' | 'week' | 'month' | 'quarter' | 'year' | 'second-of-minute' | 'minute-of-hour' | 'hour-of-day' | 'day-of-week' | 'day-of-month' | 'day-of-year' | 'week-of-year' | 'month-of-year' | 'quarter-of-year' | 'year-of-era'
        - `field_id` string, required
    - `table_id` integer
  - `conversation_id` string, required — value must be a valid UUID.
  - `profile_id` string, nullable

## Response `2XX`

Base schema for all tool requests. Contains the conversation ID and optional profile ID.

- object — Base schema for all tool requests. Contains the conversation ID and optional profile ID.
  - `conversation_id` string, required — value must be a valid UUID.
  - `profile_id` string, nullable

## Other responses

- `4XX` — Client error response
- `5XX` — Server error response

## Changes

- **2026-03-09** `78297d193ca4` — 17 breaking, 2 info
  - removed the enum value `count` of the request property `arguments/allOf[subschema #1]/aggregations/oneOf[subschema #1]/items/anyOf[#/components/schemas/metabase-enterprise.metabot-v3.tools.api.field-aggregation]/allOf[subschema #1]/function`
  - removed the enum value `date-after` of the request property `arguments/allOf[subschema #1]/filters/oneOf[subschema #1]/items/anyOf[#/components/schemas/metabase-enterprise.metabot-v3.tools.api.temporal-filter]/allOf[subschema #1]/operation`
  - removed the enum value `date-before` of the request property `arguments/allOf[subschema #1]/filters/oneOf[subschema #1]/items/anyOf[#/components/schemas/metabase-enterprise.metabot-v3.tools.api.temporal-filter]/allOf[subschema #1]/operation`
  - removed the enum value `date-equals` of the request property `arguments/allOf[subschema #1]/filters/oneOf[subschema #1]/items/anyOf[#/components/schemas/metabase-enterprise.metabot-v3.tools.api.temporal-filter]/allOf[subschema #1]/operation`
  - …15 more
- …earlier changes not shown

[Full history](https://skmtc.dev/metabase/apis/metabase-api/changes/api/ee/metabot-tools/query-datasource/post.md)

---

[API](https://skmtc.dev/metabase/apis/metabase-api.md) · [All operations](https://skmtc.dev/metabase/apis/metabase-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/metabase/metabase-api/revisions/78297d193ca4/schema)
