query_semantic_model

Query governed semantic data with typed columns, filters, pagination, and provenance

Machine-readable: focused JSON · complete manifest

Contract

Property Value
Required privilege QUERY_DATA
Effect read
Operation querySemanticModel
Tags semantic-model, query
Defaults {"limit":25}
MCP annotations read-only, idempotent, non-destructive, closed-world

Input schema

{
  "additionalProperties": false,
  "properties": {
    "dimensions": {
      "items": {
        "additionalProperties": false,
        "properties": {
          "alias": {
            "description": "Optional output column name.",
            "type": "string"
          },
          "field": {
            "description": "Semantic field or measure ID. Use the ID returned by catalog_list or catalog_get.",
            "type": "string"
          }
        },
        "required": [
          "field"
        ],
        "type": "object"
      },
      "type": "array"
    },
    "filters": {
      "items": {
        "additionalProperties": false,
        "properties": {
          "fact": {
            "description": "Fact table used to resolve a conformed dimension when it is otherwise ambiguous.",
            "type": "string"
          },
          "field": {
            "description": "Semantic field ID. Omit only when groups supplies nested filters.",
            "type": "string"
          },
          "groups": {
            "description": "Nested filter groups.",
            "items": {
              "additionalProperties": false,
              "properties": {
                "filters": {
                  "description": "Filters combined within this nested group.",
                  "items": {
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "required": [
                "filters"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "operator": {
            "description": "Governed comparison operator. equals is used when omitted.",
            "enum": [
              "equals",
              "in",
              "contains",
              "not_contains",
              "starts_with",
              "greater_than_or_equal",
              "less_than",
              "is_null",
              "is_not_null"
            ],
            "type": "string"
          },
          "values": {
            "description": "Comparison values. is_null and is_not_null accept no values.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "type": "array"
    },
    "limit": {
      "maximum": 50,
      "minimum": 1,
      "type": "integer"
    },
    "measures": {
      "items": {
        "additionalProperties": false,
        "properties": {
          "alias": {
            "description": "Optional output column name.",
            "type": "string"
          },
          "field": {
            "description": "Semantic field or measure ID. Use the ID returned by catalog_list or catalog_get.",
            "type": "string"
          }
        },
        "required": [
          "field"
        ],
        "type": "object"
      },
      "type": "array"
    },
    "model": {
      "type": "string"
    },
    "pageToken": {
      "maxLength": 2048,
      "minLength": 1,
      "type": "string"
    },
    "sort": {
      "items": {
        "additionalProperties": false,
        "properties": {
          "direction": {
            "description": "Sort direction. Defaults to ascending when omitted.",
            "enum": [
              "asc",
              "desc"
            ],
            "type": "string"
          },
          "field": {
            "description": "Selected output field or alias to sort.",
            "type": "string"
          }
        },
        "required": [
          "field"
        ],
        "type": "object"
      },
      "type": "array"
    },
    "time": {
      "additionalProperties": false,
      "properties": {
        "alias": {
          "description": "Optional output column name.",
          "type": "string"
        },
        "field": {
          "description": "Date or timestamp field ID.",
          "type": "string"
        },
        "grain": {
          "description": "Calendar grain used to group the time field.",
          "enum": [
            "day",
            "week",
            "month",
            "quarter",
            "year"
          ],
          "type": "string"
        }
      },
      "required": [
        "field"
      ],
      "type": "object"
    },
    "workspace": {
      "description": "Workspace ID to query.",
      "minLength": 1,
      "type": "string"
    }
  },
  "required": [
    "model",
    "workspace"
  ],
  "type": "object"
}

Output schema

{
  "additionalProperties": false,
  "properties": {
    "columns": {
      "items": {
        "additionalProperties": false,
        "properties": {
          "dataType": {
            "enum": [
              "boolean",
              "int64",
              "decimal",
              "float64",
              "string",
              "date",
              "timestamp",
              "json"
            ],
            "type": "string"
          },
          "fieldRef": {
            "additionalProperties": false,
            "properties": {
              "id": {
                "type": "string"
              },
              "type": {
                "type": "string"
              },
              "workspaceId": {
                "type": "string"
              }
            },
            "required": [
              "id",
              "type",
              "workspaceId"
            ],
            "type": "object"
          },
          "format": {
            "type": "string"
          },
          "kind": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "nullable": {
            "type": "boolean"
          },
          "unit": {
            "type": "string"
          }
        },
        "required": [
          "dataType",
          "name",
          "nullable"
        ],
        "type": "object"
      },
      "type": "array"
    },
    "completeness": {
      "additionalProperties": false,
      "properties": {
        "hasMore": {
          "type": "boolean"
        },
        "returnedRows": {
          "type": "integer"
        }
      },
      "required": [
        "hasMore",
        "returnedRows"
      ],
      "type": "object"
    },
    "freshness": {
      "additionalProperties": false,
      "properties": {
        "lastSuccessfulRefreshAt": {
          "type": "string"
        },
        "servingStateId": {
          "type": "string"
        },
        "snapshotId": {
          "type": "string"
        },
        "source": {
          "type": "string"
        },
        "status": {
          "type": "string"
        }
      },
      "required": [
        "lastSuccessfulRefreshAt",
        "servingStateId",
        "snapshotId",
        "source",
        "status"
      ],
      "type": "object"
    },
    "hasMore": {
      "type": "boolean"
    },
    "nextCursor": {
      "type": "string"
    },
    "queryId": {
      "type": "string"
    },
    "rows": {
      "items": {
        "items": {},
        "type": "array"
      },
      "type": "array"
    },
    "servingSnapshot": {
      "type": "string"
    }
  },
  "required": [
    "columns",
    "completeness",
    "hasMore",
    "queryId",
    "rows",
    "servingSnapshot"
  ],
  "type": "object"
}