Skip to content

fix(tools/looker): scope the filters quoting rule to values in query description - #3788

Merged
Yuan325 merged 4 commits into
googleapis:mainfrom
LacombeLouis:fix/looker-query-filters-guidance
Aug 13, 2026
Merged

fix(tools/looker): scope the filters quoting rule to values in query description#3788
Yuan325 merged 4 commits into
googleapis:mainfrom
LacombeLouis:fix/looker-query-filters-guidance

Conversation

@LacombeLouis

@LacombeLouis LacombeLouis commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Description

The filters guidance in the prebuilt Looker query tool description reads:

- filters: A map of filter expressions, e.g., `{"view.field": "value", "view.date": "7 days"}`.
  - Do not quote field names.

The rule sits directly beneath an example whose field name is quoted, because JSON map keys have to be. The two read as contradicting each other.

The instruction isn't wrong as Looker guidance, it's under-scoped: it means "don't wrap filter values in extra quote characters," but nothing in the text says that. And the mandatory view_name.field_name key format is never stated at all, it's only implied by the shape of a placeholder. The block contains no must, required, or always, so a model that omits the view prefix hasn't violated any stated rule.

This matters more than it looks: filters is a free-form map, and Gemini's function-calling schema subset has no construct for it, so the parameter reaches the model as a bare OBJECT with no declared properties. This prose is the only guidance on key format, so an ambiguity here has nothing to fall back on.

Fix: rewrite the block to state the fully-scoped key requirement explicitly and to scope the quoting rule to values, matching the authoritative parameter description already in lookercommon.GetQueryParameters:

- filters: A map of filter expressions, e.g., `{"view_name.field_name": "value", "view_name.date": "7 days"}`.
  - Each key must be a fully-scoped `view_name.field_name`, copied verbatim from
    `get_dimensions`, `get_measures`, `get_filters`, or `get_parameters`. The view
    prefix and the dot are required.
  - Each value is a Looker filter expression. Pass values bare: do not wrap them in
    extra quote characters. For LookML `parameter` fields, use the raw allowed_value
    (e.g. `first_touch`, not `"first_touch"`).
  - Use `not null` instead of `-NULL`.
  - If a value contains a comma, enclose it in single quotes (e.g., `'New York, NY'`).
  - To retrieve valid filter values for a suggestible field, use the 'get_field_value_suggestions' tool.

Two files: the prebuilt config and the docs page that quotes it verbatim. Description-only change, no Go source, schema, or runtime behaviour is touched.

Note: the second, unrelated half of #3786 (description parameter names not matching the declared schema) is split out into its own PR: #3789. The two touch nearby lines in looker.yaml, so whichever merges second may need a trivial rebase.

PR Checklist

  • Make sure to open an issue as a bug/issue before writing your code!
  • Ensure the tests and linter pass
  • Code coverage does not decrease (if any source code was changed)
  • Appropriate docs were updated (if necessary)
  • Make sure to add ! if this involves a breaking change

go test ./internal/prebuiltconfigs/... passes.

Fixes #3786 🦕

@LacombeLouis
LacombeLouis requested review from a team as code owners August 7, 2026 22:36

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request updates the Looker integration documentation and prebuilt configurations to rename several parameters for conciseness, specifically changing 'model_name' to 'model', 'explore_name' to 'explore', and 'query_timezone' to 'tz'. It also expands the documentation for the 'filters' parameter in the query tool to clarify requirements regarding fully-scoped keys and bare values. There are no review comments, so I have no feedback to provide.

…description

The `filters` guidance in the prebuilt looker `query` description said "Do not
quote field names" directly beneath an example whose keys are quoted, because
JSON requires it. The two read as contradicting each other.

The rule is about filter *values*, not map keys, but nothing in the text said
so. The mandatory `view_name.field_name` key format was also never stated
outright, only implied by a placeholder, and the block contained no "must",
"required", or "always". Since `filters` is a free-form map that reaches the
model as a bare OBJECT with no declared properties, this prose is the only
guidance on key format, so an ambiguity here has nothing to fall back on.

Rewrite the block to state the fully-scoped key requirement explicitly and to
scope the quoting rule to values, matching the authoritative parameter
description in lookercommon.GetQueryParameters.

Fixes googleapis#3786
@LacombeLouis
LacombeLouis force-pushed the fix/looker-query-filters-guidance branch from fcbccf7 to ef8fd8e Compare August 7, 2026 22:58
@LacombeLouis LacombeLouis changed the title fix(tools/looker): scope filters quoting rule and align param names with schema fix(tools/looker): scope the filters quoting rule to values in query description Aug 7, 2026
@drstrangelooker

Copy link
Copy Markdown
Contributor

/gcbrun

@Yuan325 Yuan325 added the release candidate Use label to signal PR should be included in the next release. label Aug 12, 2026
@Yuan325

Yuan325 commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

/gcbrun

@Yuan325
Yuan325 enabled auto-merge (squash) August 13, 2026 00:25
@Yuan325
Yuan325 merged commit 78eb0b8 into googleapis:main Aug 13, 2026
28 checks passed
github-actions Bot pushed a commit that referenced this pull request Aug 13, 2026
…n query description (#3788)

## Description

The `filters` guidance in the prebuilt Looker `query` tool description
reads:

```
- filters: A map of filter expressions, e.g., `{"view.field": "value", "view.date": "7 days"}`.
  - Do not quote field names.
```

The rule sits directly beneath an example whose field name **is**
quoted, because JSON map keys have to be. The two read as contradicting
each other.

The instruction isn't wrong as Looker guidance, it's under-scoped: it
means "don't wrap filter *values* in extra quote characters," but
nothing in the text says that. And the mandatory `view_name.field_name`
key format is never stated at all, it's only implied by the shape of a
placeholder. The block contains no *must*, *required*, or *always*, so a
model that omits the view prefix hasn't violated any stated rule.

This matters more than it looks: `filters` is a free-form map, and
Gemini's function-calling schema subset has no construct for it, so the
parameter reaches the model as a bare `OBJECT` with no declared
properties. This prose is the only guidance on key format, so an
ambiguity here has nothing to fall back on.

**Fix:** rewrite the block to state the fully-scoped key requirement
explicitly and to scope the quoting rule to values, matching the
authoritative parameter description already in
`lookercommon.GetQueryParameters`:

```
- filters: A map of filter expressions, e.g., `{"view_name.field_name": "value", "view_name.date": "7 days"}`.
  - Each key must be a fully-scoped `view_name.field_name`, copied verbatim from
    `get_dimensions`, `get_measures`, `get_filters`, or `get_parameters`. The view
    prefix and the dot are required.
  - Each value is a Looker filter expression. Pass values bare: do not wrap them in
    extra quote characters. For LookML `parameter` fields, use the raw allowed_value
    (e.g. `first_touch`, not `"first_touch"`).
  - Use `not null` instead of `-NULL`.
  - If a value contains a comma, enclose it in single quotes (e.g., `'New York, NY'`).
  - To retrieve valid filter values for a suggestible field, use the 'get_field_value_suggestions' tool.
```

Two files: the prebuilt config and the docs page that quotes it
verbatim. Description-only change, no Go source, schema, or runtime
behaviour is touched.

> **Note:** the second, unrelated half of #3786 (description parameter
names not matching the declared schema) is split out into its own PR:
#3789. The two touch nearby lines in `looker.yaml`, so whichever merges
second may need a trivial rebase.

## PR Checklist

- [x] Make sure to open an issue as a bug/issue before writing your
code!
- [x] Ensure the tests and linter pass
- [x] Code coverage does not decrease (if any source code was changed)
- [x] Appropriate docs were updated (if necessary)
- [ ] Make sure to add `!` if this involves a breaking change

`go test ./internal/prebuiltconfigs/...` passes.

Fixes #3786 🦕

Co-authored-by: Dr. Strangelove <drstrangelove@google.com>
Co-authored-by: Yuan Teoh <45984206+Yuan325@users.noreply.github.com> 78eb0b8
github-actions Bot pushed a commit to TheTechOddBug/genai-toolbox that referenced this pull request Aug 13, 2026
…n query description (googleapis#3788)

## Description

The `filters` guidance in the prebuilt Looker `query` tool description
reads:

```
- filters: A map of filter expressions, e.g., `{"view.field": "value", "view.date": "7 days"}`.
  - Do not quote field names.
```

The rule sits directly beneath an example whose field name **is**
quoted, because JSON map keys have to be. The two read as contradicting
each other.

The instruction isn't wrong as Looker guidance, it's under-scoped: it
means "don't wrap filter *values* in extra quote characters," but
nothing in the text says that. And the mandatory `view_name.field_name`
key format is never stated at all, it's only implied by the shape of a
placeholder. The block contains no *must*, *required*, or *always*, so a
model that omits the view prefix hasn't violated any stated rule.

This matters more than it looks: `filters` is a free-form map, and
Gemini's function-calling schema subset has no construct for it, so the
parameter reaches the model as a bare `OBJECT` with no declared
properties. This prose is the only guidance on key format, so an
ambiguity here has nothing to fall back on.

**Fix:** rewrite the block to state the fully-scoped key requirement
explicitly and to scope the quoting rule to values, matching the
authoritative parameter description already in
`lookercommon.GetQueryParameters`:

```
- filters: A map of filter expressions, e.g., `{"view_name.field_name": "value", "view_name.date": "7 days"}`.
  - Each key must be a fully-scoped `view_name.field_name`, copied verbatim from
    `get_dimensions`, `get_measures`, `get_filters`, or `get_parameters`. The view
    prefix and the dot are required.
  - Each value is a Looker filter expression. Pass values bare: do not wrap them in
    extra quote characters. For LookML `parameter` fields, use the raw allowed_value
    (e.g. `first_touch`, not `"first_touch"`).
  - Use `not null` instead of `-NULL`.
  - If a value contains a comma, enclose it in single quotes (e.g., `'New York, NY'`).
  - To retrieve valid filter values for a suggestible field, use the 'get_field_value_suggestions' tool.
```

Two files: the prebuilt config and the docs page that quotes it
verbatim. Description-only change, no Go source, schema, or runtime
behaviour is touched.

> **Note:** the second, unrelated half of googleapis#3786 (description parameter
names not matching the declared schema) is split out into its own PR:
googleapis#3789. The two touch nearby lines in `looker.yaml`, so whichever merges
second may need a trivial rebase.

## PR Checklist

- [x] Make sure to open an issue as a bug/issue before writing your
code!
- [x] Ensure the tests and linter pass
- [x] Code coverage does not decrease (if any source code was changed)
- [x] Appropriate docs were updated (if necessary)
- [ ] Make sure to add `!` if this involves a breaking change

`go test ./internal/prebuiltconfigs/...` passes.

Fixes googleapis#3786 🦕

Co-authored-by: Dr. Strangelove <drstrangelove@google.com>
Co-authored-by: Yuan Teoh <45984206+Yuan325@users.noreply.github.com> 78eb0b8
github-actions Bot pushed a commit to Jaleel-zhu/genai-toolbox that referenced this pull request Aug 13, 2026
…n query description (googleapis#3788)

## Description

The `filters` guidance in the prebuilt Looker `query` tool description
reads:

```
- filters: A map of filter expressions, e.g., `{"view.field": "value", "view.date": "7 days"}`.
  - Do not quote field names.
```

The rule sits directly beneath an example whose field name **is**
quoted, because JSON map keys have to be. The two read as contradicting
each other.

The instruction isn't wrong as Looker guidance, it's under-scoped: it
means "don't wrap filter *values* in extra quote characters," but
nothing in the text says that. And the mandatory `view_name.field_name`
key format is never stated at all, it's only implied by the shape of a
placeholder. The block contains no *must*, *required*, or *always*, so a
model that omits the view prefix hasn't violated any stated rule.

This matters more than it looks: `filters` is a free-form map, and
Gemini's function-calling schema subset has no construct for it, so the
parameter reaches the model as a bare `OBJECT` with no declared
properties. This prose is the only guidance on key format, so an
ambiguity here has nothing to fall back on.

**Fix:** rewrite the block to state the fully-scoped key requirement
explicitly and to scope the quoting rule to values, matching the
authoritative parameter description already in
`lookercommon.GetQueryParameters`:

```
- filters: A map of filter expressions, e.g., `{"view_name.field_name": "value", "view_name.date": "7 days"}`.
  - Each key must be a fully-scoped `view_name.field_name`, copied verbatim from
    `get_dimensions`, `get_measures`, `get_filters`, or `get_parameters`. The view
    prefix and the dot are required.
  - Each value is a Looker filter expression. Pass values bare: do not wrap them in
    extra quote characters. For LookML `parameter` fields, use the raw allowed_value
    (e.g. `first_touch`, not `"first_touch"`).
  - Use `not null` instead of `-NULL`.
  - If a value contains a comma, enclose it in single quotes (e.g., `'New York, NY'`).
  - To retrieve valid filter values for a suggestible field, use the 'get_field_value_suggestions' tool.
```

Two files: the prebuilt config and the docs page that quotes it
verbatim. Description-only change, no Go source, schema, or runtime
behaviour is touched.

> **Note:** the second, unrelated half of googleapis#3786 (description parameter
names not matching the declared schema) is split out into its own PR:
googleapis#3789. The two touch nearby lines in `looker.yaml`, so whichever merges
second may need a trivial rebase.

## PR Checklist

- [x] Make sure to open an issue as a bug/issue before writing your
code!
- [x] Ensure the tests and linter pass
- [x] Code coverage does not decrease (if any source code was changed)
- [x] Appropriate docs were updated (if necessary)
- [ ] Make sure to add `!` if this involves a breaking change

`go test ./internal/prebuiltconfigs/...` passes.

Fixes googleapis#3786 🦕

Co-authored-by: Dr. Strangelove <drstrangelove@google.com>
Co-authored-by: Yuan Teoh <45984206+Yuan325@users.noreply.github.com> 78eb0b8
github-actions Bot pushed a commit to pepe57/genai-toolbox that referenced this pull request Aug 13, 2026
…n query description (googleapis#3788)

## Description

The `filters` guidance in the prebuilt Looker `query` tool description
reads:

```
- filters: A map of filter expressions, e.g., `{"view.field": "value", "view.date": "7 days"}`.
  - Do not quote field names.
```

The rule sits directly beneath an example whose field name **is**
quoted, because JSON map keys have to be. The two read as contradicting
each other.

The instruction isn't wrong as Looker guidance, it's under-scoped: it
means "don't wrap filter *values* in extra quote characters," but
nothing in the text says that. And the mandatory `view_name.field_name`
key format is never stated at all, it's only implied by the shape of a
placeholder. The block contains no *must*, *required*, or *always*, so a
model that omits the view prefix hasn't violated any stated rule.

This matters more than it looks: `filters` is a free-form map, and
Gemini's function-calling schema subset has no construct for it, so the
parameter reaches the model as a bare `OBJECT` with no declared
properties. This prose is the only guidance on key format, so an
ambiguity here has nothing to fall back on.

**Fix:** rewrite the block to state the fully-scoped key requirement
explicitly and to scope the quoting rule to values, matching the
authoritative parameter description already in
`lookercommon.GetQueryParameters`:

```
- filters: A map of filter expressions, e.g., `{"view_name.field_name": "value", "view_name.date": "7 days"}`.
  - Each key must be a fully-scoped `view_name.field_name`, copied verbatim from
    `get_dimensions`, `get_measures`, `get_filters`, or `get_parameters`. The view
    prefix and the dot are required.
  - Each value is a Looker filter expression. Pass values bare: do not wrap them in
    extra quote characters. For LookML `parameter` fields, use the raw allowed_value
    (e.g. `first_touch`, not `"first_touch"`).
  - Use `not null` instead of `-NULL`.
  - If a value contains a comma, enclose it in single quotes (e.g., `'New York, NY'`).
  - To retrieve valid filter values for a suggestible field, use the 'get_field_value_suggestions' tool.
```

Two files: the prebuilt config and the docs page that quotes it
verbatim. Description-only change, no Go source, schema, or runtime
behaviour is touched.

> **Note:** the second, unrelated half of googleapis#3786 (description parameter
names not matching the declared schema) is split out into its own PR:
googleapis#3789. The two touch nearby lines in `looker.yaml`, so whichever merges
second may need a trivial rebase.

## PR Checklist

- [x] Make sure to open an issue as a bug/issue before writing your
code!
- [x] Ensure the tests and linter pass
- [x] Code coverage does not decrease (if any source code was changed)
- [x] Appropriate docs were updated (if necessary)
- [ ] Make sure to add `!` if this involves a breaking change

`go test ./internal/prebuiltconfigs/...` passes.

Fixes googleapis#3786 🦕

Co-authored-by: Dr. Strangelove <drstrangelove@google.com>
Co-authored-by: Yuan Teoh <45984206+Yuan325@users.noreply.github.com> 78eb0b8
github-actions Bot pushed a commit to rodineyw/mcp-toolbox that referenced this pull request Aug 13, 2026
…n query description (googleapis#3788)

## Description

The `filters` guidance in the prebuilt Looker `query` tool description
reads:

```
- filters: A map of filter expressions, e.g., `{"view.field": "value", "view.date": "7 days"}`.
  - Do not quote field names.
```

The rule sits directly beneath an example whose field name **is**
quoted, because JSON map keys have to be. The two read as contradicting
each other.

The instruction isn't wrong as Looker guidance, it's under-scoped: it
means "don't wrap filter *values* in extra quote characters," but
nothing in the text says that. And the mandatory `view_name.field_name`
key format is never stated at all, it's only implied by the shape of a
placeholder. The block contains no *must*, *required*, or *always*, so a
model that omits the view prefix hasn't violated any stated rule.

This matters more than it looks: `filters` is a free-form map, and
Gemini's function-calling schema subset has no construct for it, so the
parameter reaches the model as a bare `OBJECT` with no declared
properties. This prose is the only guidance on key format, so an
ambiguity here has nothing to fall back on.

**Fix:** rewrite the block to state the fully-scoped key requirement
explicitly and to scope the quoting rule to values, matching the
authoritative parameter description already in
`lookercommon.GetQueryParameters`:

```
- filters: A map of filter expressions, e.g., `{"view_name.field_name": "value", "view_name.date": "7 days"}`.
  - Each key must be a fully-scoped `view_name.field_name`, copied verbatim from
    `get_dimensions`, `get_measures`, `get_filters`, or `get_parameters`. The view
    prefix and the dot are required.
  - Each value is a Looker filter expression. Pass values bare: do not wrap them in
    extra quote characters. For LookML `parameter` fields, use the raw allowed_value
    (e.g. `first_touch`, not `"first_touch"`).
  - Use `not null` instead of `-NULL`.
  - If a value contains a comma, enclose it in single quotes (e.g., `'New York, NY'`).
  - To retrieve valid filter values for a suggestible field, use the 'get_field_value_suggestions' tool.
```

Two files: the prebuilt config and the docs page that quotes it
verbatim. Description-only change, no Go source, schema, or runtime
behaviour is touched.

> **Note:** the second, unrelated half of googleapis#3786 (description parameter
names not matching the declared schema) is split out into its own PR:
googleapis#3789. The two touch nearby lines in `looker.yaml`, so whichever merges
second may need a trivial rebase.

## PR Checklist

- [x] Make sure to open an issue as a bug/issue before writing your
code!
- [x] Ensure the tests and linter pass
- [x] Code coverage does not decrease (if any source code was changed)
- [x] Appropriate docs were updated (if necessary)
- [ ] Make sure to add `!` if this involves a breaking change

`go test ./internal/prebuiltconfigs/...` passes.

Fixes googleapis#3786 🦕

Co-authored-by: Dr. Strangelove <drstrangelove@google.com>
Co-authored-by: Yuan Teoh <45984206+Yuan325@users.noreply.github.com> 78eb0b8
Yuan325 added a commit that referenced this pull request Aug 14, 2026
🤖 I have created a release *beep* *boop*
---


##
[1.9.0](v1.8.0...v1.9.0)
(2026-08-14)


### Features

* **groups:** Add ttlMs and cacheScope customization to config
([#3805](#3805))
([a5d4947](a5d4947))
* **migrate:** Convert toolset to group kind during migration
([#3704](#3704))
([0adeaa5](0adeaa5))
* **server/mcp:** Introduce generic client extension registry
([#3723](#3723))
([016245c](016245c))
* **skill:** Add review-prs skill for mcp-toolbox
([#3743](#3743))
([5b7bacc](5b7bacc))
* **source/bigquery:** Add apiEndpoint field to override BigQuery API
host ([#3437](#3437))
([4da1600](4da1600))
* **source/databaseinsights:** Add databaseinsights source
([#3461](#3461))
([3b9615d](3b9615d))
* **sources/spanner:** Rename execute_sql_dql to execute_sql_readonly
([#3776](#3776))
([cf5a0c8](cf5a0c8))
* **tools/bigtable:** Add admin lifecycle and listing tools
([#3596](#3596))
([801d589](801d589))
* **tools/bigtable:** Bigtable-list-schemas MCP tool
([#3683](#3683))
([9228c61](9228c61))
* **tools/databaseinsights:** Add Advanced Query Insights tools for
AlloyDB ([#3722](#3722))
([74d18ae](74d18ae))
* **tools/looker:** Add additional tools to allow dashboards to be
modified, and their layouts altered.
([#3597](#3597))
([b2b80fb](b2b80fb))
* **tools:** Add cloud-sql-connect-gce for pg, mysql, mssql
([#3740](#3740))
([ca58fa4](ca58fa4))


### Bug Fixes

* **auth/mcp:** Derive PRM URL from Toolbox URL
([#3765](#3765))
([aa30842](aa30842))
* **config:** Ignore environment variables in YAML comments
([#3807](#3807))
([79aa732](79aa732)),
refs [#3793](#3793)
* **mcp:** Return Tool execution error for invalid input param
([#3799](#3799))
([8120197](8120197))
* **prebuilt/cloud-storage:** Declare tool collections as groups
([#3764](#3764))
([7d468be](7d468be))
* **server/mcp:** Disallow client overriding URL bound parameters
([#3798](#3798))
([f15a9c7](f15a9c7))
* **server:** Avoid a nil-flusher panic in the SSE handler
([#3520](#3520))
([947f42f](947f42f))
* **tools/bigquery:** Keep the provider error classification in
bigquery-execute-sql
([#3738](#3738))
([42570b8](42570b8))
* **tools/looker:** Scope the filters quoting rule to values in query
description
([#3788](#3788))
([78eb0b8](78eb0b8))
* **util:** Convert exponent-form JSON numbers in ConvertNumbers
([#3730](#3730))
([e9713ee](e9713ee))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

---------

Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
Co-authored-by: Yuan Teoh <45984206+Yuan325@users.noreply.github.com>
github-actions Bot pushed a commit that referenced this pull request Aug 14, 2026
🤖 I have created a release *beep* *boop*
---

##
[1.9.0](v1.8.0...v1.9.0)
(2026-08-14)

### Features

* **groups:** Add ttlMs and cacheScope customization to config
([#3805](#3805))
([a5d4947](a5d4947))
* **migrate:** Convert toolset to group kind during migration
([#3704](#3704))
([0adeaa5](0adeaa5))
* **server/mcp:** Introduce generic client extension registry
([#3723](#3723))
([016245c](016245c))
* **skill:** Add review-prs skill for mcp-toolbox
([#3743](#3743))
([5b7bacc](5b7bacc))
* **source/bigquery:** Add apiEndpoint field to override BigQuery API
host ([#3437](#3437))
([4da1600](4da1600))
* **source/databaseinsights:** Add databaseinsights source
([#3461](#3461))
([3b9615d](3b9615d))
* **sources/spanner:** Rename execute_sql_dql to execute_sql_readonly
([#3776](#3776))
([cf5a0c8](cf5a0c8))
* **tools/bigtable:** Add admin lifecycle and listing tools
([#3596](#3596))
([801d589](801d589))
* **tools/bigtable:** Bigtable-list-schemas MCP tool
([#3683](#3683))
([9228c61](9228c61))
* **tools/databaseinsights:** Add Advanced Query Insights tools for
AlloyDB ([#3722](#3722))
([74d18ae](74d18ae))
* **tools/looker:** Add additional tools to allow dashboards to be
modified, and their layouts altered.
([#3597](#3597))
([b2b80fb](b2b80fb))
* **tools:** Add cloud-sql-connect-gce for pg, mysql, mssql
([#3740](#3740))
([ca58fa4](ca58fa4))

### Bug Fixes

* **auth/mcp:** Derive PRM URL from Toolbox URL
([#3765](#3765))
([aa30842](aa30842))
* **config:** Ignore environment variables in YAML comments
([#3807](#3807))
([79aa732](79aa732)),
refs [#3793](#3793)
* **mcp:** Return Tool execution error for invalid input param
([#3799](#3799))
([8120197](8120197))
* **prebuilt/cloud-storage:** Declare tool collections as groups
([#3764](#3764))
([7d468be](7d468be))
* **server/mcp:** Disallow client overriding URL bound parameters
([#3798](#3798))
([f15a9c7](f15a9c7))
* **server:** Avoid a nil-flusher panic in the SSE handler
([#3520](#3520))
([947f42f](947f42f))
* **tools/bigquery:** Keep the provider error classification in
bigquery-execute-sql
([#3738](#3738))
([42570b8](42570b8))
* **tools/looker:** Scope the filters quoting rule to values in query
description
([#3788](#3788))
([78eb0b8](78eb0b8))
* **util:** Convert exponent-form JSON numbers in ConvertNumbers
([#3730](#3730))
([e9713ee](e9713ee))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

---------

Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
Co-authored-by: Yuan Teoh <45984206+Yuan325@users.noreply.github.com> 5de8f13
github-actions Bot pushed a commit to rodineyw/mcp-toolbox that referenced this pull request Aug 14, 2026
🤖 I have created a release *beep* *boop*
---

##
[1.9.0](googleapis/mcp-toolbox@v1.8.0...v1.9.0)
(2026-08-14)

### Features

* **groups:** Add ttlMs and cacheScope customization to config
([googleapis#3805](googleapis#3805))
([a5d4947](googleapis@a5d4947))
* **migrate:** Convert toolset to group kind during migration
([googleapis#3704](googleapis#3704))
([0adeaa5](googleapis@0adeaa5))
* **server/mcp:** Introduce generic client extension registry
([googleapis#3723](googleapis#3723))
([016245c](googleapis@016245c))
* **skill:** Add review-prs skill for mcp-toolbox
([googleapis#3743](googleapis#3743))
([5b7bacc](googleapis@5b7bacc))
* **source/bigquery:** Add apiEndpoint field to override BigQuery API
host ([googleapis#3437](googleapis#3437))
([4da1600](googleapis@4da1600))
* **source/databaseinsights:** Add databaseinsights source
([googleapis#3461](googleapis#3461))
([3b9615d](googleapis@3b9615d))
* **sources/spanner:** Rename execute_sql_dql to execute_sql_readonly
([googleapis#3776](googleapis#3776))
([cf5a0c8](googleapis@cf5a0c8))
* **tools/bigtable:** Add admin lifecycle and listing tools
([googleapis#3596](googleapis#3596))
([801d589](googleapis@801d589))
* **tools/bigtable:** Bigtable-list-schemas MCP tool
([googleapis#3683](googleapis#3683))
([9228c61](googleapis@9228c61))
* **tools/databaseinsights:** Add Advanced Query Insights tools for
AlloyDB ([googleapis#3722](googleapis#3722))
([74d18ae](googleapis@74d18ae))
* **tools/looker:** Add additional tools to allow dashboards to be
modified, and their layouts altered.
([googleapis#3597](googleapis#3597))
([b2b80fb](googleapis@b2b80fb))
* **tools:** Add cloud-sql-connect-gce for pg, mysql, mssql
([googleapis#3740](googleapis#3740))
([ca58fa4](googleapis@ca58fa4))

### Bug Fixes

* **auth/mcp:** Derive PRM URL from Toolbox URL
([googleapis#3765](googleapis#3765))
([aa30842](googleapis@aa30842))
* **config:** Ignore environment variables in YAML comments
([googleapis#3807](googleapis#3807))
([79aa732](googleapis@79aa732)),
refs [googleapis#3793](googleapis#3793)
* **mcp:** Return Tool execution error for invalid input param
([googleapis#3799](googleapis#3799))
([8120197](googleapis@8120197))
* **prebuilt/cloud-storage:** Declare tool collections as groups
([googleapis#3764](googleapis#3764))
([7d468be](googleapis@7d468be))
* **server/mcp:** Disallow client overriding URL bound parameters
([googleapis#3798](googleapis#3798))
([f15a9c7](googleapis@f15a9c7))
* **server:** Avoid a nil-flusher panic in the SSE handler
([googleapis#3520](googleapis#3520))
([947f42f](googleapis@947f42f))
* **tools/bigquery:** Keep the provider error classification in
bigquery-execute-sql
([googleapis#3738](googleapis#3738))
([42570b8](googleapis@42570b8))
* **tools/looker:** Scope the filters quoting rule to values in query
description
([googleapis#3788](googleapis#3788))
([78eb0b8](googleapis@78eb0b8))
* **util:** Convert exponent-form JSON numbers in ConvertNumbers
([googleapis#3730](googleapis#3730))
([e9713ee](googleapis@e9713ee))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

---------

Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
Co-authored-by: Yuan Teoh <45984206+Yuan325@users.noreply.github.com> 5de8f13
github-actions Bot pushed a commit to Jaleel-zhu/genai-toolbox that referenced this pull request Aug 14, 2026
🤖 I have created a release *beep* *boop*
---

##
[1.9.0](googleapis/mcp-toolbox@v1.8.0...v1.9.0)
(2026-08-14)

### Features

* **groups:** Add ttlMs and cacheScope customization to config
([googleapis#3805](googleapis#3805))
([a5d4947](googleapis@a5d4947))
* **migrate:** Convert toolset to group kind during migration
([googleapis#3704](googleapis#3704))
([0adeaa5](googleapis@0adeaa5))
* **server/mcp:** Introduce generic client extension registry
([googleapis#3723](googleapis#3723))
([016245c](googleapis@016245c))
* **skill:** Add review-prs skill for mcp-toolbox
([googleapis#3743](googleapis#3743))
([5b7bacc](googleapis@5b7bacc))
* **source/bigquery:** Add apiEndpoint field to override BigQuery API
host ([googleapis#3437](googleapis#3437))
([4da1600](googleapis@4da1600))
* **source/databaseinsights:** Add databaseinsights source
([googleapis#3461](googleapis#3461))
([3b9615d](googleapis@3b9615d))
* **sources/spanner:** Rename execute_sql_dql to execute_sql_readonly
([googleapis#3776](googleapis#3776))
([cf5a0c8](googleapis@cf5a0c8))
* **tools/bigtable:** Add admin lifecycle and listing tools
([googleapis#3596](googleapis#3596))
([801d589](googleapis@801d589))
* **tools/bigtable:** Bigtable-list-schemas MCP tool
([googleapis#3683](googleapis#3683))
([9228c61](googleapis@9228c61))
* **tools/databaseinsights:** Add Advanced Query Insights tools for
AlloyDB ([googleapis#3722](googleapis#3722))
([74d18ae](googleapis@74d18ae))
* **tools/looker:** Add additional tools to allow dashboards to be
modified, and their layouts altered.
([googleapis#3597](googleapis#3597))
([b2b80fb](googleapis@b2b80fb))
* **tools:** Add cloud-sql-connect-gce for pg, mysql, mssql
([googleapis#3740](googleapis#3740))
([ca58fa4](googleapis@ca58fa4))

### Bug Fixes

* **auth/mcp:** Derive PRM URL from Toolbox URL
([googleapis#3765](googleapis#3765))
([aa30842](googleapis@aa30842))
* **config:** Ignore environment variables in YAML comments
([googleapis#3807](googleapis#3807))
([79aa732](googleapis@79aa732)),
refs [googleapis#3793](googleapis#3793)
* **mcp:** Return Tool execution error for invalid input param
([googleapis#3799](googleapis#3799))
([8120197](googleapis@8120197))
* **prebuilt/cloud-storage:** Declare tool collections as groups
([googleapis#3764](googleapis#3764))
([7d468be](googleapis@7d468be))
* **server/mcp:** Disallow client overriding URL bound parameters
([googleapis#3798](googleapis#3798))
([f15a9c7](googleapis@f15a9c7))
* **server:** Avoid a nil-flusher panic in the SSE handler
([googleapis#3520](googleapis#3520))
([947f42f](googleapis@947f42f))
* **tools/bigquery:** Keep the provider error classification in
bigquery-execute-sql
([googleapis#3738](googleapis#3738))
([42570b8](googleapis@42570b8))
* **tools/looker:** Scope the filters quoting rule to values in query
description
([googleapis#3788](googleapis#3788))
([78eb0b8](googleapis@78eb0b8))
* **util:** Convert exponent-form JSON numbers in ConvertNumbers
([googleapis#3730](googleapis#3730))
([e9713ee](googleapis@e9713ee))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

---------

Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
Co-authored-by: Yuan Teoh <45984206+Yuan325@users.noreply.github.com> 5de8f13
github-actions Bot pushed a commit to pepe57/genai-toolbox that referenced this pull request Aug 14, 2026
🤖 I have created a release *beep* *boop*
---

##
[1.9.0](googleapis/mcp-toolbox@v1.8.0...v1.9.0)
(2026-08-14)

### Features

* **groups:** Add ttlMs and cacheScope customization to config
([googleapis#3805](googleapis#3805))
([a5d4947](googleapis@a5d4947))
* **migrate:** Convert toolset to group kind during migration
([googleapis#3704](googleapis#3704))
([0adeaa5](googleapis@0adeaa5))
* **server/mcp:** Introduce generic client extension registry
([googleapis#3723](googleapis#3723))
([016245c](googleapis@016245c))
* **skill:** Add review-prs skill for mcp-toolbox
([googleapis#3743](googleapis#3743))
([5b7bacc](googleapis@5b7bacc))
* **source/bigquery:** Add apiEndpoint field to override BigQuery API
host ([googleapis#3437](googleapis#3437))
([4da1600](googleapis@4da1600))
* **source/databaseinsights:** Add databaseinsights source
([googleapis#3461](googleapis#3461))
([3b9615d](googleapis@3b9615d))
* **sources/spanner:** Rename execute_sql_dql to execute_sql_readonly
([googleapis#3776](googleapis#3776))
([cf5a0c8](googleapis@cf5a0c8))
* **tools/bigtable:** Add admin lifecycle and listing tools
([googleapis#3596](googleapis#3596))
([801d589](googleapis@801d589))
* **tools/bigtable:** Bigtable-list-schemas MCP tool
([googleapis#3683](googleapis#3683))
([9228c61](googleapis@9228c61))
* **tools/databaseinsights:** Add Advanced Query Insights tools for
AlloyDB ([googleapis#3722](googleapis#3722))
([74d18ae](googleapis@74d18ae))
* **tools/looker:** Add additional tools to allow dashboards to be
modified, and their layouts altered.
([googleapis#3597](googleapis#3597))
([b2b80fb](googleapis@b2b80fb))
* **tools:** Add cloud-sql-connect-gce for pg, mysql, mssql
([googleapis#3740](googleapis#3740))
([ca58fa4](googleapis@ca58fa4))

### Bug Fixes

* **auth/mcp:** Derive PRM URL from Toolbox URL
([googleapis#3765](googleapis#3765))
([aa30842](googleapis@aa30842))
* **config:** Ignore environment variables in YAML comments
([googleapis#3807](googleapis#3807))
([79aa732](googleapis@79aa732)),
refs [googleapis#3793](googleapis#3793)
* **mcp:** Return Tool execution error for invalid input param
([googleapis#3799](googleapis#3799))
([8120197](googleapis@8120197))
* **prebuilt/cloud-storage:** Declare tool collections as groups
([googleapis#3764](googleapis#3764))
([7d468be](googleapis@7d468be))
* **server/mcp:** Disallow client overriding URL bound parameters
([googleapis#3798](googleapis#3798))
([f15a9c7](googleapis@f15a9c7))
* **server:** Avoid a nil-flusher panic in the SSE handler
([googleapis#3520](googleapis#3520))
([947f42f](googleapis@947f42f))
* **tools/bigquery:** Keep the provider error classification in
bigquery-execute-sql
([googleapis#3738](googleapis#3738))
([42570b8](googleapis@42570b8))
* **tools/looker:** Scope the filters quoting rule to values in query
description
([googleapis#3788](googleapis#3788))
([78eb0b8](googleapis@78eb0b8))
* **util:** Convert exponent-form JSON numbers in ConvertNumbers
([googleapis#3730](googleapis#3730))
([e9713ee](googleapis@e9713ee))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

---------

Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
Co-authored-by: Yuan Teoh <45984206+Yuan325@users.noreply.github.com> 5de8f13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

release candidate Use label to signal PR should be included in the next release.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

looker-query: "Do not quote field names" contradicts the example directly above it

3 participants