fix(tools/looker): scope the filters quoting rule to values in query description - #3788
Merged
Yuan325 merged 4 commits intoAug 13, 2026
Merged
Conversation
Contributor
There was a problem hiding this comment.
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
force-pushed
the
fix/looker-query-filters-guidance
branch
from
August 7, 2026 22:58
fcbccf7 to
ef8fd8e
Compare
5 tasks
drstrangelooker
approved these changes
Aug 12, 2026
Contributor
|
/gcbrun |
Yuan325
approved these changes
Aug 12, 2026
Contributor
|
/gcbrun |
Yuan325
enabled auto-merge (squash)
August 13, 2026 00:25
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
The
filtersguidance in the prebuilt Lookerquerytool description reads: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_namekey 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:
filtersis a free-form map, and Gemini's function-calling schema subset has no construct for it, so the parameter reaches the model as a bareOBJECTwith 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: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.
PR Checklist
!if this involves a breaking changego test ./internal/prebuiltconfigs/...passes.Fixes #3786 🦕