fix(tools/looker): align parameter names in descriptions with the declared schema - #3789
Open
LacombeLouis wants to merge 10 commits into
Open
fix(tools/looker): align parameter names in descriptions with the declared schema#3789LacombeLouis wants to merge 10 commits into
LacombeLouis wants to merge 10 commits into
Conversation
…lared schema Several prebuilt looker tool descriptions referred to parameters by names the schema does not declare: description said | schema declares ------------------|---------------- model_name | model explore_name | explore query_timezone | tz This is verifiable from `tools/list` alone. The schema wins at call time so calls still succeeded, but the model was being pointed at names that do not exist. Correct them across looker.yaml and looker-conversational-analytics.yaml, and mirror the change in the docs pages that quote these descriptions verbatim. `update_dashboard_element` already used the correct names, so this brings the rest of the file in line with it. Two categories of occurrence are deliberately left unchanged because they are not input parameter names: looker-dev.yaml lines 361/363/385, which are output field names of get_lookml_tests / run_lookml_tests, and generate_embed_url's "model_name/explore_name", which is a value format for the `id` parameter.
Contributor
There was a problem hiding this comment.
Code Review
This pull request updates the Looker integration tools and prebuilt configurations by renaming several parameters to simplify and standardize their names: model_name is renamed to model, explore_name to explore, and query_timezone to tz. I have no feedback to provide as there are no review comments.
Contributor
|
/gcbrun |
1 similar comment
Contributor
|
/gcbrun |
drstrangelooker
approved these changes
Aug 10, 2026
drstrangelooker
enabled auto-merge (squash)
August 10, 2026 21:23
Contributor
|
/gcbrun |
Contributor
|
/gcbrun |
Contributor
|
/gcbrun |
1 similar comment
Contributor
|
/gcbrun |
5 tasks
Contributor
|
/gcbrun |
Contributor
|
/gcbrun |
Contributor
|
/gcbrun |
Contributor
|
/gcbrun |
Yuan325
added a commit
that referenced
this pull request
Aug 13, 2026
…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>
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
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
Several prebuilt Looker tool descriptions refer to parameters by names the schema does not declare. This is verifiable from
tools/listalone:model_namemodelexplore_nameexplorequery_timezonetzThe declared names come from
lookercommon.GetFieldParametersandlookercommon.GetQueryParameters. The schema wins at call time so calls still succeed, but the model is being pointed at names that don't exist, and the description is the only place it sees them spelled out.Fix: correct the names across
looker.yamlandlooker-conversational-analytics.yaml, and mirror the change in the docs pages that quote these descriptions verbatim.update_dashboard_elementalready used the correctmodel/explore/tznames, so this brings the rest of the file in line with it.Two categories of occurrence are deliberately left unchanged, because they are not input parameter names:
looker-dev.yamllines 361/363/385, which are output field names ofget_lookml_tests/run_lookml_tests.generate_embed_url's"model_name/explore_name", which is a value format for theidparameter.Description-only change. No Go source, schema, or runtime behaviour is touched.
PR Checklist
!if this involves a breaking changego test ./internal/prebuiltconfigs/...passes.Part of #3786 🦕