Skip to content

fix(tools/looker): align parameter names in descriptions with the declared schema - #3789

Open
LacombeLouis wants to merge 10 commits into
googleapis:mainfrom
LacombeLouis:fix/looker-param-names-match-schema
Open

fix(tools/looker): align parameter names in descriptions with the declared schema#3789
LacombeLouis wants to merge 10 commits into
googleapis:mainfrom
LacombeLouis:fix/looker-param-names-match-schema

Conversation

@LacombeLouis

Copy link
Copy Markdown
Contributor

Description

Several prebuilt Looker tool descriptions refer to parameters by names the schema does not declare. This is verifiable from tools/list alone:

description says schema declares
model_name model
explore_name explore
query_timezone tz

The declared names come from lookercommon.GetFieldParameters and lookercommon.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.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 model / explore / tz 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.
  • generate_embed_url's "model_name/explore_name", which is a value format for the id parameter.

Description-only change. No Go source, schema, or runtime behaviour is touched.

Note: this is the second, unrelated half of #3786. The primary fix in that issue (the contradictory filters quoting rule) is in its own PR: #3788. 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.

Part of #3786 🦕

…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.

@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 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.

@drstrangelooker

Copy link
Copy Markdown
Contributor

/gcbrun

1 similar comment
@drstrangelooker

Copy link
Copy Markdown
Contributor

/gcbrun

@drstrangelooker
drstrangelooker enabled auto-merge (squash) August 10, 2026 21:23
@drstrangelooker

Copy link
Copy Markdown
Contributor

/gcbrun

@drstrangelooker

Copy link
Copy Markdown
Contributor

/gcbrun

@drstrangelooker

Copy link
Copy Markdown
Contributor

/gcbrun

1 similar comment
@drstrangelooker

Copy link
Copy Markdown
Contributor

/gcbrun

@drstrangelooker

Copy link
Copy Markdown
Contributor

/gcbrun

@drstrangelooker

Copy link
Copy Markdown
Contributor

/gcbrun

@drstrangelooker

Copy link
Copy Markdown
Contributor

/gcbrun

@drstrangelooker

Copy link
Copy Markdown
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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants