Commit Graph

194 Commits

Author SHA1 Message Date
Siddharth Ravi
5abad5d56c feat(tools/postgres): add long_running_transactions, list_locks and replication_stats tools (#1751)
Adds the following tools for Postgre
(1) long_running_transactions - reports transactions that exceed a
configured duration threshold.
(2) list_locks - lists active locks in the database, including the
associated process, lock type, relation, mode, and the query holding or
waiting on the lock.
(3) replication_stats - reports replication-related metrics for WAL
streaming replicas, including lag sizes presented in human-readable
form.

<img width="3020" height="1420" alt="image"
src="https://github.com/user-attachments/assets/e7d70063-b90c-4464-90ec-1bd810c02cac"
/>

<img width="3036" height="1374" alt="image"
src="https://github.com/user-attachments/assets/f7cf584b-ae01-455c-9c9c-acca3166a549"
/>

<img width="2682" height="868" alt="image"
src="https://github.com/user-attachments/assets/dd10646c-4521-4d8f-a111-760d6eb01249"
/>


## PR Checklist
- [Y] Make sure you reviewed

[CONTRIBUTING.md](https://github.com/googleapis/genai-toolbox/blob/main/CONTRIBUTING.md)
- [Y] Make sure to open an issue as a

[bug/issue](https://github.com/googleapis/genai-toolbox/issues/new/choose)
  before writing your code! That way we can discuss the change, evaluate
  designs, and agree on the general idea
- [Y] Ensure the tests and linter pass
- [Y] Code coverage does not decrease (if any source code was changed)
- [Y] Appropriate docs were updated (if necessary)
- [Y] Make sure to add `!` if this involve a breaking change

🛠️ Fixes #1691 #1715

---------

Co-authored-by: Wenxin Du <117315983+duwenxin99@users.noreply.github.com>
2025-11-18 19:23:10 +00:00
release-please[bot]
5156db2621 chore(main): release 0.20.0 (#1921)
🤖 I have created a release *beep* *boop*
---


##
[0.20.0](https://github.com/googleapis/genai-toolbox/compare/v0.19.1...v0.20.0)
(2025-11-14)


### Features

* Added prompt support for toolbox
([#1798](https://github.com/googleapis/genai-toolbox/issues/1798))
([cd56ea4](cd56ea44fb))
* **source/alloydb,
source/cloud-sql-postgres,source/cloud-sql-mysql,source/cloud-sql-mssql:**
Use project from env for alloydb and cloud sql control plane tools
([#1588](https://github.com/googleapis/genai-toolbox/issues/1588))
([12bdd95](12bdd95459))
* **source/mysql:** Set default host and port for MySQL source
([#1922](https://github.com/googleapis/genai-toolbox/issues/1922))
([2c228ef](2c228ef4f2))
* **source/Postgresql:** Set default host and port for Postgresql source
([#1927](https://github.com/googleapis/genai-toolbox/issues/1927))
([7e6e88a](7e6e88a21f))
* **tool/looker-generate-embed-url:** Adding generate embed url tool
([#1877](https://github.com/googleapis/genai-toolbox/issues/1877))
([ef63860](ef63860559))
* **tools/postgres:** Add `list_triggers`, `database_overview` tools for
postgres
([#1912](https://github.com/googleapis/genai-toolbox/issues/1912))
([a4c9287](a4c9287aec))
* **tools/postgres:** Add list_indexes, list_sequences tools for
postgres
([#1765](https://github.com/googleapis/genai-toolbox/issues/1765))
([897c63d](897c63dcea))

---
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>
2025-11-13 17:37:01 -08:00
Yuan Teoh
4aabb4aaca chore: move parameters to internal/util (#1907)
To facilitate the transition of moving invocation implementation to
Source, we will have to move parameter to `internal/util`. This approach
is crucial because certain parameters may not be fully resolvable
pre-implementation. Since both `internal/sources` and `internal/tools`
will need access to `parameters`, it will be more relevant to move
parameters implementation to utils.
2025-11-13 21:37:12 +00:00
Srividya Reddy
897c63dcea feat(tools): add list_indexes, list_sequences tools for postgres (#1765)
## Description

Adds the following tools for Postgres:
(1) list_indexes:  Lists available user indexes in a given database. 
(2) list_sequences: Lists all the sequences in the database ordered by
sequence name.

list_indexes:
<img width="1708" height="816" alt="Screenshot 2025-10-21 at 10 24
30 PM"
src="https://github.com/user-attachments/assets/d1888f53-6013-4beb-b0dc-b94f3d66135e"
/>

<img width="1914" height="1017" alt="Screenshot 2025-10-22 at 8 23
16 AM"
src="https://github.com/user-attachments/assets/7c185ef4-4550-4bb2-8051-0eca8f40dc7b"
/>

list_sequences:

<img width="2539" height="902" alt="Screenshot 2025-10-22 at 8 04 25 AM"
src="https://github.com/user-attachments/assets/f22cfaad-412b-4df2-99f3-ee813f538ff7"
/>

<img width="1082" height="610" alt="Screenshot 2025-10-22 at 8 06 07 AM"
src="https://github.com/user-attachments/assets/102ed3ca-33f6-409f-9ba1-363c9e15d5d3"
/>



> Should include a concise description of the changes (bug or feature),
it's
> impact, along with a summary of the solution

## PR Checklist

> Thank you for opening a Pull Request! Before submitting your PR, there
are a
> few things you can do to make sure it goes smoothly:

- [x] Make sure you reviewed

[CONTRIBUTING.md](https://github.com/googleapis/genai-toolbox/blob/main/CONTRIBUTING.md)
- [x] Make sure to open an issue as a

[bug/issue](https://github.com/googleapis/genai-toolbox/issues/new/choose)
  before writing your code! That way we can discuss the change, evaluate
  designs, and agree on the general idea
- [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)
- [x] Make sure to add `!` if this involve a breaking change

🛠️ Fixes #1738
2025-11-13 21:17:03 +00:00
Luka Fontanilla
ef63860559 feat: adding generate embed url functionality (#1877)
## Description

> Should include a concise description of the changes (bug or feature),
it's
> impact, along with a summary of the solution

This PR adds a new tool to the Looker MCP Toolbox, that enables the user
authenticated to the Looker Source to generate authenticated embed urls
for dashboards, looks and queries. When combined with other tools that
already exist in the Looker toolbox, this enables searching existing
content and providing authenticated urls to them OR creating
authenticated urls from queries generated via Natural Language. The
embed urls will create an embed session for the user and can be opened
directly or added to an iframe `src` attribute to provide a smooth
Embedded Analytics setup.

Additionally this PR adds a new optional parameter to the Looker source
called `SessionLength` which an admin setting up the Looker source can
set to determine how long the Embed sessions last for.

## PR Checklist

> Thank you for opening a Pull Request! Before submitting your PR, there
are a
> few things you can do to make sure it goes smoothly:

- [ X] Make sure you reviewed

[CONTRIBUTING.md](https://github.com/googleapis/genai-toolbox/blob/main/CONTRIBUTING.md)
- [ X] Make sure to open an issue as a

[bug/issue](https://github.com/googleapis/genai-toolbox/issues/new/choose)
  before writing your code! That way we can discuss the change, evaluate
  designs, and agree on the general idea
- [ ] 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)
- [ X] Make sure to add `!` if this involve a breaking change

🛠️ Fixes #1876 https://github.com/googleapis/genai-toolbox/issues/1876

---------

Co-authored-by: Luka Fontanilla <maluka@google.com>
Co-authored-by: Dr. Strangelove <drstrangelove@google.com>
2025-11-13 19:15:39 +00:00
Twisha Bansal
dc7c62c951 test: improve root test coverage (#1929)
## Description

> Should include a concise description of the changes (bug or feature),
it's
> impact, along with a summary of the solution

## PR Checklist

> Thank you for opening a Pull Request! Before submitting your PR, there
are a
> few things you can do to make sure it goes smoothly:

- [x] Make sure you reviewed

[CONTRIBUTING.md](https://github.com/googleapis/genai-toolbox/blob/main/CONTRIBUTING.md)
- [ ] Make sure to open an issue as a

[bug/issue](https://github.com/googleapis/genai-toolbox/issues/new/choose)
  before writing your code! That way we can discuss the change, evaluate
  designs, and agree on the general idea
- [x] Ensure the tests and linter pass
- [x] Code coverage does not decrease (if any source code was changed)
- [ ] Appropriate docs were updated (if necessary)
- [ ] Make sure to add `!` if this involve a breaking change

🛠️ Fixes #<issue_number_goes_here>
2025-11-13 08:30:03 +05:30
Srividya Reddy
a4c9287aec feat(tools/postgres): add list_triggers, database_overview tools for postgres (#1912)
## Description

Adds the following tools for Postgres:
(1) list_triggers: Lists triggers in the database. .
(2) database_overview: Fetches the current state of the PostgreSQL
server.

list_triggers:
<img width="1712" height="703" alt="Screenshot 2025-11-09 at 8 16 53 PM"
src="https://github.com/user-attachments/assets/1974e303-b559-4efc-b129-444ba97c7715"
/>

<img width="874" height="513" alt="Screenshot 2025-11-09 at 8 19 43 PM"
src="https://github.com/user-attachments/assets/59ddcd15-224b-4e9a-906d-ec2645835873"
/>

database_overview:

<img width="1521" height="683" alt="Screenshot 2025-11-09 at 8 53 03 PM"
src="https://github.com/user-attachments/assets/4ae86e74-aa78-410c-a9cc-f33ae3268fb6"
/>

<img width="850" height="241" alt="Screenshot 2025-11-09 at 8 49 53 PM"
src="https://github.com/user-attachments/assets/abae2c7a-5f3e-4433-86de-3606e3298ec5"
/>


> Should include a concise description of the changes (bug or feature),
it's
> impact, along with a summary of the solution

## PR Checklist

> Thank you for opening a Pull Request! Before submitting your PR, there
are a
> few things you can do to make sure it goes smoothly:

- [x] Make sure you reviewed

[CONTRIBUTING.md](https://github.com/googleapis/genai-toolbox/blob/main/CONTRIBUTING.md)
- [x] Make sure to open an issue as a

[bug/issue](https://github.com/googleapis/genai-toolbox/issues/new/choose)
  before writing your code! That way we can discuss the change, evaluate
  designs, and agree on the general idea
- [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)
- [x] Make sure to add `!` if this involve a breaking change

🛠️ Fixes #1738
2025-11-12 14:35:23 -08:00
Twisha Bansal
cd56ea44fb feat: Added prompt support for toolbox (#1798)
## Description

Added MCP prompt support in the toolbox server.

- No updates needed corresponding to
https://github.com/googleapis/genai-toolbox/pull/1828/files.

## PR Checklist

> Thank you for opening a Pull Request! Before submitting your PR, there
are a
> few things you can do to make sure it goes smoothly:

- [x] Make sure you reviewed
[CONTRIBUTING.md](https://github.com/googleapis/genai-toolbox/blob/main/CONTRIBUTING.md)
- [x] Make sure to open an issue as a
[bug/issue](https://github.com/googleapis/genai-toolbox/issues/new/choose)
before writing your code! That way we can discuss the change, evaluate
designs, and agree on the general idea
- [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)
- [x] Make sure to add `!` if this involve a breaking change

🛠️ Fixes https://github.com/googleapis/genai-toolbox/issues/1040

---------

Co-authored-by: Yuan Teoh <45984206+Yuan325@users.noreply.github.com>
Co-authored-by: dishaprakash <57954147+dishaprakash@users.noreply.github.com>
Co-authored-by: Mend Renovate <bot@renovateapp.com>
Co-authored-by: Averi Kitsch <akitsch@google.com>
Co-authored-by: Anmol Shukla <shuklaanmol@google.com>
Co-authored-by: Harsh Jha <83023263+rapid-killer-9@users.noreply.github.com>
Co-authored-by: Wenxin Du <117315983+duwenxin99@users.noreply.github.com>
Co-authored-by: Kurtis Van Gent <31518063+kurtisvg@users.noreply.github.com>
Co-authored-by: Dr. Strangelove <drstrangelove@google.com>
Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
Co-authored-by: Dave Borowitz <dborowitz@google.com>
2025-11-11 23:07:51 +05:30
Sri Varshitha
12bdd95459 feat(source/alloydb, source/cloud-sql-postgres,source/cloud-sql-mysql,source/cloud-sql-mssql): Use project from env for alloydb and cloud sql control plane tools (#1588)
## Description

---
This change introduces the `DefaultProject` field for the
`alloydb-admin` and `cloud-sql-admin` sources. This field allows the
alloydb and cloud sql control plane tools to use the project value from
the environment variables (Ex: `ALLOYDB_POSTGRES_PROJECT`) if it is
already set instead of asking the user.

## PR Checklist

---
> Thank you for opening a Pull Request! Before submitting your PR, there
are a
> few things you can do to make sure it goes smoothly:

- [x] Make sure you reviewed

[CONTRIBUTING.md](https://github.com/googleapis/genai-toolbox/blob/main/CONTRIBUTING.md)
- [x] Make sure to open an issue as a

[bug/issue](https://github.com/googleapis/genai-toolbox/issues/new/choose)
before writing your code! That way we can discuss the change, evaluate
  designs, and agree on the general idea
- [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)
- [x] Make sure to add `!` if this involve a breaking change

🛠️ Fixes: https://github.com/gemini-cli-extensions/alloydb/issues/47

---------

Co-authored-by: Averi Kitsch <akitsch@google.com>
2025-11-11 04:14:47 +00:00
release-please[bot]
cd8d68d464 chore(main): release 0.19.1 (#1901)
🤖 I have created a release *beep* *boop*
---


##
[0.19.1](https://github.com/googleapis/genai-toolbox/compare/v0.19.0...v0.19.1)
(2025-11-07)


### ⚠ BREAKING CHANGES

* **tools/alloydbainl:** update AlloyDB AI NL statement order
([#1753](https://github.com/googleapis/genai-toolbox/issues/1753))
* **tools/bigquery-analyze-contribution:** Add allowed dataset support
([#1675](https://github.com/googleapis/genai-toolbox/issues/1675))
([ef28e39](ef28e39e90))
* **tools/bigquery-get-dataset-info:** add allowed dataset support
([#1654](https://github.com/googleapis/genai-toolbox/issues/1654))

### Features

* Support `excludeValues` for parameters
([#1818](https://github.com/googleapis/genai-toolbox/issues/1818))
([a8e98dc](a8e98dc99d))
* **elasticsearch:** Add Elasticsearch source and tools
([#1109](https://github.com/googleapis/genai-toolbox/issues/1109))
([5367285](5367285e91))
* **mindsdb:** Add MindsDB Source and Tools
([#878](https://github.com/googleapis/genai-toolbox/issues/878))
([1b2cca9](1b2cca9faa))
* **cloud-healthcare:** Add support for healthcare source, tool and
prebuilt config
([#1853](https://github.com/googleapis/genai-toolbox/issues/1853))
([1f833fb](1f833fb1a1))
* **singlestore:** Add SingleStore Source and Tools
([#1333](https://github.com/googleapis/genai-toolbox/issues/1333))
([40b9dba](40b9dbab08))
* **source/bigquery:** Add client cache for user-passed credentials
([#1119](https://github.com/googleapis/genai-toolbox/issues/1119))
([cf7012a](cf7012a82b))
* **source/bigquery:** Add service account impersonation support for
bigquery
([#1641](https://github.com/googleapis/genai-toolbox/issues/1641))
([e09d182](e09d182f88))
* **tools/bigquery-analyze-contribution:** Add allowed dataset support
([#1675](https://github.com/googleapis/genai-toolbox/issues/1675))
([ef28e39](ef28e39e90))
* **tools/bigquery-get-dataset-info:** Add allowed dataset support
([#1654](https://github.com/googleapis/genai-toolbox/issues/1654))
([a2006ad](a2006ad577))
* **tools/looker-run-dashboard:** New `run_dashboard` tool
([#1858](https://github.com/googleapis/genai-toolbox/issues/1858))
([30857c2](30857c2294))
* **tools/looker-run-look:** Modify run_look to show query origin
([#1860](https://github.com/googleapis/genai-toolbox/issues/1860))
([991e539](991e539f9c))
* **tools/looker:** Tools to retrieve the connections, schemas,
databases, and column metadata from a looker system.
([#1804](https://github.com/googleapis/genai-toolbox/issues/1804))
([d7d1b03](d7d1b03f3b))
* **tools/mongodb:** Make MongoDB tools' `filterParams` field optional
([#1614](https://github.com/googleapis/genai-toolbox/issues/1614))
([208ab92](208ab92eb3))
* **tools/neo4j-execute-cypher:** Add dry_run parameter to validate
Cypher queries
([#1769](https://github.com/googleapis/genai-toolbox/issues/1769))
([f475da6](f475da63ce))
* **tools/postgres-list-schemas:** Add new postgres-list-schemas tool
([#1741](https://github.com/googleapis/genai-toolbox/issues/1741))
([1a19cac](1a19cac7cd))
* **tools/postgres-list-views:** Add new postgres-list-views tool
([#1709](https://github.com/googleapis/genai-toolbox/issues/1709))
([e8c7fe0](e8c7fe0994))
* **tools/serverless-spark:** Add cancel-batch tool
([#1827](2881683226))
* **tools/serverless-spark:** Add get_batch tool
([#1783](7ad10720b4))
* **tools/serverless-spark:** Add serverless-spark source with
list_batches tool
([#1690](816dbce268))


### Bug Fixes

* Bigquery execute_sql to assign values to array
([#1884](https://github.com/googleapis/genai-toolbox/issues/1884))
([559e2a2](559e2a22e0))
* **cloudmonitoring:** Populate `authRequired` in tool manifest
([#1800](https://github.com/googleapis/genai-toolbox/issues/1800))
([954152c](954152c792))
* Update debug logs statements
([#1828](https://github.com/googleapis/genai-toolbox/issues/1828))
([3cff915](3cff915e22))
* Instructions to quote filters that include commas
([#1794](https://github.com/googleapis/genai-toolbox/issues/1794))
([4b01720](4b0172083c))
* **source/cloud-sql-mssql:** Remove `ipAddress` field
([#1822](https://github.com/googleapis/genai-toolbox/issues/1822))
([38d535d](38d535de34))
* **tools/alloydbainl:** AlloyDB AI NL execute_sql statement order
([#1753](https://github.com/googleapis/genai-toolbox/issues/1753))
([9723cad](9723cadaa1))
* **tools/postgres-execute-sql:** Do not ignore SQL failure
([#1829](https://github.com/googleapis/genai-toolbox/issues/1829))
([8984287](898428759c))

---
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>
2025-11-07 12:41:52 -08:00
Yuan Teoh
6e297ee9e9 Revert release 0.19.0 docs version update (#1898)
Reverts googleapis/genai-toolbox#1781 docs version update
2025-11-07 10:25:20 -08:00
release-please[bot]
78c4a8537e chore(main): release 0.19.0 (#1781)
🤖 I have created a release *beep* *boop*
---


##
[0.19.0](https://github.com/googleapis/genai-toolbox/compare/v0.18.0...v0.19.0)
(2025-11-07)


### ⚠ BREAKING CHANGES

* **tools/alloydbainl:** update AlloyDB AI NL statement order
([#1753](https://github.com/googleapis/genai-toolbox/issues/1753))
* **tools/bigquery-get-dataset-info:** add allowed dataset support
([#1654](https://github.com/googleapis/genai-toolbox/issues/1654))

### Features

* Support `excludeValues` for parameters
([#1818](https://github.com/googleapis/genai-toolbox/issues/1818))
([a8e98dc](a8e98dc99d))
* **elasticsearch:** Add Elasticsearch source and tools
([#1109](https://github.com/googleapis/genai-toolbox/issues/1109))
([5367285](5367285e91))
* **mindsdb:** Add MindsDB Source and Tools
([#878](https://github.com/googleapis/genai-toolbox/issues/878))
([1b2cca9](1b2cca9faa))
* **cloud-healthcare:** Add support for healthcare source, tool and
prebuilt config
([#1853](https://github.com/googleapis/genai-toolbox/issues/1853))
([1f833fb](1f833fb1a1))
* **singlestore:** Add SingleStore Source and Tools
([#1333](https://github.com/googleapis/genai-toolbox/issues/1333))
([40b9dba](40b9dbab08))
* **source/bigquery:** Add client cache for user-passed credentials
([#1119](https://github.com/googleapis/genai-toolbox/issues/1119))
([cf7012a](cf7012a82b))
* **source/bigquery:** Add service account impersonation support for
bigquery
([#1641](https://github.com/googleapis/genai-toolbox/issues/1641))
([e09d182](e09d182f88))
* **tools/bigquery-analyze-contribution:** Add allowed dataset support
([#1675](https://github.com/googleapis/genai-toolbox/issues/1675))
([ef28e39](ef28e39e90))
* **tools/bigquery-get-dataset-info:** Add allowed dataset support
([#1654](https://github.com/googleapis/genai-toolbox/issues/1654))
([a2006ad](a2006ad577))
* **tools/looker-run-dashboard:** New `run_dashboard` tool
([#1858](https://github.com/googleapis/genai-toolbox/issues/1858))
([30857c2](30857c2294))
* **tools/looker-run-look:** Modify run_look to show query origin
([#1860](https://github.com/googleapis/genai-toolbox/issues/1860))
([991e539](991e539f9c))
* **tools/looker:** Tools to retrieve the connections, schemas,
databases, and column metadata from a looker system.
([#1804](https://github.com/googleapis/genai-toolbox/issues/1804))
([d7d1b03](d7d1b03f3b))
* **tools/mongodb:** Make MongoDB tools' `filterParams` field optional
([#1614](https://github.com/googleapis/genai-toolbox/issues/1614))
([208ab92](208ab92eb3))
* **tools/neo4j-execute-cypher:** Add dry_run parameter to validate
Cypher queries
([#1769](https://github.com/googleapis/genai-toolbox/issues/1769))
([f475da6](f475da63ce))
* **tools/postgres-list-schemas:** Add new postgres-list-schemas tool
([#1741](https://github.com/googleapis/genai-toolbox/issues/1741))
([1a19cac](1a19cac7cd))
* **tools/postgres-list-views:** Add new postgres-list-views tool
([#1709](https://github.com/googleapis/genai-toolbox/issues/1709))
([e8c7fe0](e8c7fe0994))
* **tools/serverless-spark:** Add cancel-batch tool
([2881683](2881683226))
* **tools/serverless-spark:** Add get_batch tool
([7ad1072](7ad10720b4))
* **tools/serverless-spark:** Add serverless-spark source with
list_batches tool
([816dbce](816dbce268))


### Bug Fixes

* Bigquery execute_sql to assign values to array
([#1884](https://github.com/googleapis/genai-toolbox/issues/1884))
([559e2a2](559e2a22e0))
* **cloudmonitoring:** Populate `authRequired` in tool manifest
([#1800](https://github.com/googleapis/genai-toolbox/issues/1800))
([954152c](954152c792))
* Update debug logs statements
([#1828](https://github.com/googleapis/genai-toolbox/issues/1828))
([3cff915](3cff915e22))
* Instructions to quote filters that include commas
([#1794](https://github.com/googleapis/genai-toolbox/issues/1794))
([4b01720](4b0172083c))
* **source/cloud-sql-mssql:** Remove `ipAddress` field
([#1822](https://github.com/googleapis/genai-toolbox/issues/1822))
([38d535d](38d535de34))
* **tools/alloydbainl:** AlloyDB AI NL execute_sql statement order
([#1753](https://github.com/googleapis/genai-toolbox/issues/1753))
([9723cad](9723cadaa1))
* **tools/postgres-execute-sql:** Do not ignore SQL failure
([#1829](https://github.com/googleapis/genai-toolbox/issues/1829))
([8984287](898428759c))


---
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>
2025-11-07 09:28:19 -08:00
Yuan Teoh
1f833fb1a1 feat(healthcare): add support for healthcare source, tool and prebuilt config (#1853)
## Description

Add support for healthcare source, tool and prebuilt config. This branch
consist of all previously approved PRs.

🛠️ Fixes #1648

---------

Co-authored-by: Marwan Tammam <15021613+Quarz0@users.noreply.github.com>
2025-11-06 17:06:04 -08:00
Dr. Strangelove
30857c2294 feat(tools/looker-run-dashboard): new run_dashboard tool (#1858)
## Description

The run_dashboard tool will run the query associated with each tile of
the dashboard and return the full set of query results. It enables the
agent to answer questions like "Summarize this dashboard for me".

---------

Co-authored-by: Yuan Teoh <45984206+Yuan325@users.noreply.github.com>
2025-11-06 16:45:31 -05:00
Pavlo Mishchenko
40b9dbab08 feat(singlestore): Add SingleStore Source and Tools (#1333)
## Description
---
- This PR adds SingleStore database source and tools. The code is mostly
based on MySQL source and tools, and it uses the same go-mysql driver.
- https://github.com/singlestore-labs/singlestoredb-dev-image can be
used to deploy a test SingleStore instance. In this PR the default port
is set to 3308 so the command would be
```docker run \
    -d --name singlestoredb-dev \
    -e ROOT_PASSWORD="YOUR SINGLESTORE ROOT PASSWORD" \
    -p 3308:3306 ghcr.io/singlestore-labs/singlestoredb-dev:latest
```
## PR Checklist
---
> Thank you for opening a Pull Request! Before submitting your PR, there
are a
> few things you can do to make sure it goes smoothly:
- [x] Make sure you reviewed

[CONTRIBUTING.md](https://github.com/googleapis/genai-toolbox/blob/main/CONTRIBUTING.md)
- [x] Make sure to open an issue as a

[bug/issue](https://github.com/googleapis/langchain-google-alloydb-pg-python/issues/new/choose)
before writing your code! That way we can discuss the change, evaluate
  designs, and agree on the general idea
- [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)
- [x] Make sure to add `!` if this involve a breaking change

🛠️ Fixes https://github.com/googleapis/genai-toolbox/issues/1348

---------

Co-authored-by: Wenxin Du <117315983+duwenxin99@users.noreply.github.com>
2025-11-06 12:19:38 -05:00
Srividya Reddy
1a19cac7cd feat(tools/postgres-list-schemas): add new postgres-list-schemas tool (#1741)
## Description
Add a read-only PostgreSQL custom list_schemas tool, that returns the
schemas present in the database excluding system and temporary schemas.
Returns the schema name, schema owner, grants, number of functions,
number of tables, and number of views within each schema.

<img width="1985" height="1043" alt="Screenshot 2025-10-20 at 7 45
45 PM"
src="https://github.com/user-attachments/assets/8c4f0bb8-587c-489a-8795-efa79e92b06f"
/>

<img width="3372" height="1694" alt="3NpZG7W6h3XGsM7"
src="https://github.com/user-attachments/assets/370b5440-cc48-4c4e-82ea-4fd508cbcf2b"
/>

> Should include a concise description of the changes (bug or feature),
it's
> impact, along with a summary of the solution

## PR Checklist

> Thank you for opening a Pull Request! Before submitting your PR, there
are a
> few things you can do to make sure it goes smoothly:

- [x] Make sure you reviewed

[CONTRIBUTING.md](https://github.com/googleapis/genai-toolbox/blob/main/CONTRIBUTING.md)
- [x] Make sure to open an issue as a

[bug/issue](https://github.com/googleapis/genai-toolbox/issues/new/choose)
  before writing your code! That way we can discuss the change, evaluate
  designs, and agree on the general idea
- [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)
- [x] Make sure to add `!` if this involve a breaking change

🛠️ Fixes #<issue_number_goes_here>

Co-authored-by: Yuan Teoh <45984206+Yuan325@users.noreply.github.com>
2025-11-06 00:54:01 +00:00
Laurent Saint-Félix
5367285e91 feat(sources/elasticsearch): add Elasticsearch source and tools (#1109)
Add support for Elasticsearch with the following tools:
* search
* esql
* get_mappings
* list_indices

This PR fixes #859

---------

Co-authored-by: duwenxin <duwenxin@google.com>
Co-authored-by: Wenxin Du <117315983+duwenxin99@users.noreply.github.com>
2025-11-05 19:33:37 -05:00
Dave Borowitz
2881683226 feat(serverless-spark): add cancel-batch tool 2025-11-05 11:13:35 -08:00
Dr. Strangelove
50c400063b chore: fix linter issues (#1859) 2025-11-05 09:27:31 -08:00
Jorge Torres
1b2cca9faa feat: Add MindsDB Source and Tools (#878)
🚀 Add MindsDB Integration: Expand Toolbox to Hundreds of Datasources
Overview
This PR introduces comprehensive MindsDB integration to the Google GenAI
Toolbox, enabling SQL queries across hundreds of datasources through a
unified interface. MindsDB is the most widely adopted AI federated
database that automatically translates MySQL queries into REST APIs,
GraphQL, and native protocols.
🎯 Key Value for Google GenAI Toolbox Ecosystem
1. Massive Datasource Expansion
Before: Toolbox limited to ~15 traditional databases
After: Access to hundreds of datasources including Salesforce, Jira,
GitHub, MongoDB, Gmail, Slack, and more
Impact: Dramatically expands the toolbox's reach and utility for
enterprise users
2. Cross-Datasource Analytics
New Capability: Perform joins and analytics across different datasources
seamlessly
Example: Join Salesforce opportunities with GitHub activity to correlate
sales with development activity
Value: Enables comprehensive data analysis that was previously
impossible
3. API Abstraction Layer
Innovation: Write standard SQL queries that automatically translate to
any API
Benefit: Developers can query REST APIs, GraphQL, and native protocols
using familiar SQL syntax
Impact: Reduces complexity and learning curve for accessing diverse
datasources
4. ML Model Integration
Enhanced Capability: Use ML models as virtual tables for real-time
predictions
Example: Query customer churn predictions directly through SQL
Value: Brings AI/ML capabilities into the standard SQL workflow
🔧 Technical Implementation
Source Layer
 New MindsDB source implementation using MySQL wire protocol
 Comprehensive test coverage with integration tests
 Updated existing MySQL tools to support MindsDB sources
 Created dedicated MindsDB tools for enhanced functionality
Tools Layer
 mindsdb-execute-sql: Direct SQL execution across federated datasources
 mindsdb-sql: Parameterized SQL queries with template support
 Backward compatibility with existing MySQL tools
Documentation & Configuration
 Comprehensive documentation with real-world examples
 Prebuilt configuration for easy setup
 Updated CLI help text and command-line options
📊 Supported Datasources
Business Applications
Salesforce (leads, opportunities, accounts)
Jira (issues, projects, workflows)
GitHub (repositories, commits, PRs)
Slack (channels, messages, teams)
HubSpot (contacts, companies, deals)
Databases & Storage
MongoDB (NoSQL collections as structured tables)
Redis (key-value stores)
Elasticsearch (search and analytics)
S3, filesystems, etc (file storage)
Communication & Email
Gmail/Outlook (emails, attachments)
Microsoft Teams (communications, files)
Discord (server data, messages)
🎯 Example Use Cases
Cross-Datasource Analytics
-- Join Salesforce opportunities with GitHub activity
```
SELECT 
    s.opportunity_name,
    s.amount,
    g.repository_name,
    COUNT(g.commits) as commit_count
FROM salesforce.opportunities s
JOIN github.repositories g ON s.account_id = g.owner_id
WHERE s.stage = 'Closed Won';
```

Email & Communication Analysis
```
-- Analyze email patterns with Slack activity
SELECT 
    e.sender,
    e.subject,
    s.channel_name,
    COUNT(s.messages) as message_count
FROM gmail.emails e
JOIN slack.messages s ON e.sender = s.user_name
WHERE e.date >= '2024-01-01';
```





🚀 Benefits for Google GenAI Toolbox
Enterprise Adoption: Enables access to enterprise datasources
(Salesforce, Jira, etc.)
Developer Productivity: Familiar SQL interface for any datasource
AI/ML Integration: Seamless integration of ML models into SQL workflows
Scalability: Single interface for hundreds of datasources
Competitive Advantage: Unique federated database capabilities in the
toolbox ecosystem
📈 Impact Metrics
Datasource Coverage: +1000% increase in supported datasources
API Abstraction: Eliminates need to learn individual API syntaxes
Cross-Platform Analytics: Enables previously impossible data
correlations
ML Integration: Brings AI capabilities into standard SQL workflows
🔗 Resources
MindsDB Documentation
MindsDB GitHub
Updated Toolbox Documentation
 Testing
 Unit tests for MindsDB source implementation
 Integration tests with real datasource examples
 Backward compatibility with existing MySQL tools
 Documentation examples tested and verified
This integration transforms the Google GenAI Toolbox from a traditional
database tool into a comprehensive federated data platform, enabling
users to query and analyze data across their entire technology stack
through a unified SQL interface.

---------

Co-authored-by: duwenxin <duwenxin@google.com>
Co-authored-by: setohe0909 <setohe.09@gmail.com>
Co-authored-by: Kurtis Van Gent <31518063+kurtisvg@users.noreply.github.com>
Co-authored-by: Wenxin Du <117315983+duwenxin99@users.noreply.github.com>
Co-authored-by: Yuan Teoh <45984206+Yuan325@users.noreply.github.com>
2025-11-05 01:09:30 +00:00
Wenxin Du
cf7012a82b feat(source/bigquery): add client cache for user-passed credentials (#1119)
Add client cache and automatic cache cleanup. 
The cache is managed by a map with OAuth access token as the keys.
Upon user tool invocation, get client from existing cache or create a
new one.
2025-11-04 17:16:44 -05:00
Dr. Strangelove
d7d1b03f3b feat(tools/looker): tools to retrieve the connections, schemas, databases, and column metadata from a looker system. (#1804)
## Description

Add new tools to get metadata from databases through Looker

* get_connections
* get_connection_schemas
* get_connection_databases
* get_connection_tables
* get_connection_table_columns
2025-10-31 18:42:02 +00:00
Srividya Reddy
e8c7fe0994 feat(tools/postgres-list-views): add new postgres-list-views tool (#1709)
## Description

Adds a read-only PostgreSQL custom list_views tool, that returns the
details of views present in database. Each row includes: schema_name,
view_name, owner_name
Test Output:

<img width="2433" height="1274" alt="Screenshot 2025-10-19 at 3 59
31 PM"
src="https://github.com/user-attachments/assets/76e1e994-390a-4239-aba7-0d02253bbcc4"
/>
<img width="2533" height="1017" alt="Screenshot 2025-10-19 at 4 07
25 PM"
src="https://github.com/user-attachments/assets/537fbddd-d862-4044-a09b-cb9f180c21fa"
/>

## PR Checklist

> Thank you for opening a Pull Request! Before submitting your PR, there
are a
> few things you can do to make sure it goes smoothly:

- [x] Make sure you reviewed

[CONTRIBUTING.md](https://github.com/googleapis/genai-toolbox/blob/main/CONTRIBUTING.md)
- [x] Make sure to open an issue as a

[bug/issue](https://github.com/googleapis/genai-toolbox/issues/new/choose)
  before writing your code! That way we can discuss the change, evaluate
  designs, and agree on the general idea
- [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)
- [x] Make sure to add `!` if this involve a breaking change

🛠️ Fixes #1738

Co-authored-by: Averi Kitsch <akitsch@google.com>
2025-10-29 14:18:29 -07:00
Dave Borowitz
7ad10720b4 feat(serverless-spark): Add get_batch tool 2025-10-28 13:42:02 -07:00
Twisha Bansal
5f39d4d2ae test: improve root coverage (#1791)
## Description

> Should include a concise description of the changes (bug or feature),
it's
> impact, along with a summary of the solution

## PR Checklist

> Thank you for opening a Pull Request! Before submitting your PR, there
are a
> few things you can do to make sure it goes smoothly:

- [x] Make sure you reviewed

[CONTRIBUTING.md](https://github.com/googleapis/genai-toolbox/blob/main/CONTRIBUTING.md)
- [ ] Make sure to open an issue as a

[bug/issue](https://github.com/googleapis/genai-toolbox/issues/new/choose)
  before writing your code! That way we can discuss the change, evaluate
  designs, and agree on the general idea
- [x] Ensure the tests and linter pass
- [x] Code coverage does not decrease (if any source code was changed)
- [ ] Appropriate docs were updated (if necessary)
- [ ] Make sure to add `!` if this involve a breaking change

🛠️ Fixes #<issue_number_goes_here>
2025-10-27 18:49:08 +00:00
Dave Borowitz
816dbce268 feat(serverless-spark): Add serverless-spark source with list_batches tool
Built as a thin wrapper over the official Google Cloud Dataproc Go
client library, with support for filtering and pagination.
2025-10-23 20:40:52 -07:00
release-please[bot]
3ca58b1349 chore(main): release 0.18.0 (#1719)
🤖 I have created a release *beep* *boop*
---


##
[0.18.0](https://github.com/googleapis/genai-toolbox/compare/v0.17.0...v0.18.0)
(2025-10-23)


### Features

* Support `allowedValues`, `escape`, `minValue` and `maxValue` for
parameters
([#1770](https://github.com/googleapis/genai-toolbox/issues/1770))
([eaf7740](eaf77406fd))
* **tools/looker:** Tools to allow the agent to retrieve, create,
modify, and delete LookML project files.
([#1673](https://github.com/googleapis/genai-toolbox/issues/1673))
([089081f](089081feb0))


### Bug Fixes

* **sources/mysql:** Escape mysql user agent
([#1707](https://github.com/googleapis/genai-toolbox/issues/1707))
([eeb694c](eeb694c20f))
* **sources/mysql:** Escape program_name for MySQL
([#1717](https://github.com/googleapis/genai-toolbox/issues/1717))
([02f7f8a](02f7f8af97))
* **tools/http:** Allow 2xx status code on tool invocation
([#1761](https://github.com/googleapis/genai-toolbox/issues/1761))
([a06d0d8](a06d0d8735))
* **tools/http:** Omit optional nil query parameters
([#1762](https://github.com/googleapis/genai-toolbox/issues/1762))
([bd16ba3](bd16ba3921))
* **tools/looker:** Looker file content calls should not use
url.QueryEscape
([#1758](https://github.com/googleapis/genai-toolbox/issues/1758))
([336de1b](336de1bd04))

---
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: Wenxin Du <117315983+duwenxin99@users.noreply.github.com>
2025-10-23 18:14:44 +00:00
Dr. Strangelove
089081feb0 feat(tools/looker): Tools to allow the agent to retrieve, create, modify, and delete LookML project files. (#1673)
## Description

- **looker-dev-mode:** Turn dev mode on or off for the session.
- **looker-get-projects:** Retrieve the list of LookML projects on the
server.
- **looker-get-project-files:** Retrieve the list of LookML project
files in a project.
- **looker-get-project-file:** Get the contents of a LookML project
file.
- **looker-create-project-file:** Create a new LookML project file.
- **looker-update-project-file:** Modify a LookML project file.
- **looker-delete-project-file:** Delete a LookML project file.
2025-10-20 14:47:44 -04:00
release-please[bot]
de19d520ad chore(main): release 0.17.0 (#1682)
🤖 I have created a release *beep* *boop*
---


##
[0.17.0](https://github.com/googleapis/genai-toolbox/compare/v0.16.0...v0.17.0)
(2025-10-10)


### ⚠ BREAKING CHANGES

* **tools/bigquery-get-table-info:** add allowed dataset support
([#1093](https://github.com/googleapis/genai-toolbox/issues/1093))
* **tool/bigquery-list-dataset-ids:** add allowed datasets support
([#1573](https://github.com/googleapis/genai-toolbox/issues/1573))

### Features

* Add configs and workflows for docs versioning
([#1611](https://github.com/googleapis/genai-toolbox/issues/1611))
([21ac98b](21ac98bc06))
* Add metadata in MCP Manifest for Toolbox auth
([#1395](https://github.com/googleapis/genai-toolbox/issues/1395))
([0b3dac4](0b3dac4132))
* Add program name to MySQL connections
([#1617](https://github.com/googleapis/genai-toolbox/issues/1617))
([c4a22b8](c4a22b8d3b))
* **oracle:** Switch Oracle driver from godror to go-ora
([#1685](https://github.com/googleapis/genai-toolbox/issues/1685))
([8faf376](8faf37667e))
* **source/bigquery:** Add optional write mode config
([#1157](https://github.com/googleapis/genai-toolbox/issues/1157))
([63adc78](63adc78bea))
* **sources/alloydb,cloudsqlpg,cloudsqlmysql,cloudsqlmssql:** Support
PSC connection
([#1686](https://github.com/googleapis/genai-toolbox/issues/1686))
([9d2bf79](9d2bf79bec))
* **sources/mssql:** Add app name to MSSQL
([#1620](https://github.com/googleapis/genai-toolbox/issues/1620))
([1536d1f](1536d1fdab))
* **sources/oracle:** Add Oracle Source and Tool
([#1456](https://github.com/googleapis/genai-toolbox/issues/1456))
([3a19a50](3a19a50ff2))
* **tool/bigquery-list-dataset-ids:** Add allowed datasets support
([#1573](https://github.com/googleapis/genai-toolbox/issues/1573))
([1a44c67](1a44c671ec))
* **tools/bigquery-get-table-info:** Add allowed dataset support
([#1093](https://github.com/googleapis/genai-toolbox/issues/1093))
([acb205c](acb205ca47))
* **tools/dataform:** Add dataform compile tool
([#1470](https://github.com/googleapis/genai-toolbox/issues/1470))
([3be9b7b](3be9b7b3bd))
* **tools/looker:** Add support for pulse, vacuum and analyze audit and
performance functions on a Looker instance
([#1581](https://github.com/googleapis/genai-toolbox/issues/1581))
([5aed4e1](5aed4e136d))
* **tools/looker:** Enable access to the Conversational Analytics API
for Looker
([#1596](https://github.com/googleapis/genai-toolbox/issues/1596))
([2d5a93e](2d5a93e312))


### Bug Fixes

* Added google_ml_integration extension to use alloydb ai-nl support api
([#1445](https://github.com/googleapis/genai-toolbox/issues/1445))
([dbc477a](dbc477ab0f))
* Fix broken links
([#1625](https://github.com/googleapis/genai-toolbox/issues/1625))
([36c6584](36c658472c))
* Remove duplicated build type in Dockerfile
([#1598](https://github.com/googleapis/genai-toolbox/issues/1598))
([b43c945](b43c94575d))
* **source/bigquery:** Allowed datasets project id issue with client
oauth ([#1663](https://github.com/googleapis/genai-toolbox/issues/1663))
([f4cf486](f4cf486fa9))
* **sources/looker:** Allow Looker to be configured without setting a
Client Id or Secret
([#1496](https://github.com/googleapis/genai-toolbox/issues/1496))
([67d8221](67d8221a2e))
* **tools/looker:** Refactor run-inline-query logic to helper function
([#1497](https://github.com/googleapis/genai-toolbox/issues/1497))
([62af39d](62af39d751))
* **tools/mysql-list-tables:** Update sql query to resolve subquery
scope error
([#1629](https://github.com/googleapis/genai-toolbox/issues/1629))
([94e19d8](94e19d87e5))


### Miscellaneous Chores

* Release 0.17.0
([#1676](https://github.com/googleapis/genai-toolbox/issues/1676))
([7e22cb4](7e22cb455d))
* Release 0.17.0
([#1681](https://github.com/googleapis/genai-toolbox/issues/1681))
([18c92b5](18c92b51ab))

---
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: Wenxin Du <117315983+duwenxin99@users.noreply.github.com>
2025-10-10 16:34:23 -04:00
Vijay Balebail
3a19a50ff2 feat(sources/oracle): add Oracle Source and Tool (#1456)
## Description

---
> Should include a concise description of the changes (bug or feature),
it's
> impact, along with a summary of the solution

## PR Checklist

---
> Thank you for opening a Pull Request! Before submitting your PR, there
are a
> few things you can do to make sure it goes smoothly:

- [ ] Make sure you reviewed

[CONTRIBUTING.md](https://github.com/googleapis/genai-toolbox/blob/main/CONTRIBUTING.md)
- [ ] Make sure to open an issue as a

[bug/issue](https://github.com/googleapis/genai-toolbox/issues/new/choose)
before writing your code! That way we can discuss the change, evaluate
  designs, and agree on the general idea
- [ ] 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 involve a breaking change

🛠️ Fixes https://github.com/googleapis/genai-toolbox/issues/488

---------

Co-authored-by: duwenxin <duwenxin@google.com>
Co-authored-by: Wenxin Du <117315983+duwenxin99@users.noreply.github.com>
2025-10-09 21:29:01 -04:00
Dr. Strangelove
2d5a93e312 feat(tools/looker): Enable access to the Conversational Analytics API for Looker (#1596)
## Description

This enables the Conversational Analytics API for Looker. The prebuilt
config is separate since it is not a good
idea to use the Looker prebuilt config with CA. Agents get confused as
to whether they should query the data directly
or use the CA tool.
2025-10-02 17:45:41 +00:00
Dr. Strangelove
5aed4e136d feat(tools/looker): add support for pulse, vacuum and analyze audit and performance functions on a Looker instance (#1581)
This pull request adds 3 new tools, looker-health-pulse,
looker-health-vacuum, and looker-health-analyze, as capabilities to the
Looker MCP Toolbox. These tools are designed to provide health checks
and auditing analytical insights for a Looker instance (they come from
the popular [Looker CLI tool
Henry](https://github.com/looker-open-source/henry)).

**looker-health-pulse**
This tool performs various health checks on a Looker instance. It can be
used to:
- Check database connection status.
- Identify dashboards with slow-running or erroring queries.
- List slow explores and failed schedules.
- Find enabled legacy features.

**looker-health-analyze**
This tool performs analytical tasks on Looker projects, models, and
explores. It can be used to:
- Analyze projects to check Git status and validation.
- Analyze models to count explores and identify unused ones.
- Analyze explores to find unused joins and fields. *Unused is defined
as not being queried in the last 90 days.*

**looker-health-vacuum**
This tool finds unnused explores, joins, and fields based on user
defined search conditions (namely, timeframe and min query #):
- Identify unnused explores for specific or all models
- Identify unnused fields or joins for specific explores or all explores
within a model

This update targets Looker administrators, as it provides new
capabilities to monitor the health and efficiency of their Looker
instances and connect those capabilities to MCP Clients.

🛠️ Fixes #1415

---------

Co-authored-by: Luka Fontanilla <maluka@google.com>
2025-10-02 13:03:45 -04:00
Saurabh Maurya
3be9b7b3bd feat(tools/dataform): add dataform compile tool (#1470)
## Description

This change introduces a new tool for compiling local Dataform projects.

The new tool, `dataform-compile`, allows users to programmatically run
the `dataform compile` command against a project on the local
filesystem. This tool does not require a `source` and instead relies on
the `dataform` CLI being available in the server's `PATH`.

### Changes:
* Added the new tool definition in
`internal/tools/dataformcompile/dataformcompile.go`.
* The tool requires the following parameter:
    * `project_dir`: The local Dataform project directory to compile.
* The tool uses `os/exec` to run the `dataform compile --json` command
and parses the resulting JSON output.
* Added a new integration test in
`internal/tools/dataformcompile/dataformcompile_test.go` which:
    * Skips the test if the `dataform` CLI is not found in the `PATH`.
* Uses `dataform init` to create a temporary, minimal project for
testing.
* Verifies success, missing parameter errors, and errors from a
non-existent directory.
---
> Should include a concise description of the changes (bug or feature),
it's
> impact, along with a summary of the solution

## PR Checklist

---
> Thank you for opening a Pull Request! Before submitting your PR, there
are a
> few things you can do to make sure it goes smoothly:

- [x] Make sure you reviewed

[CONTRIBUTING.md](https://github.com/googleapis/genai-toolbox/blob/main/CONTRIBUTING.md)
- [x] Make sure to open an issue as a

[bug/issue](https://github.com/googleapis/genai-toolbox/issues/new/choose)
before writing your code! That way we can discuss the change, evaluate
  designs, and agree on the general idea
- [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)
- [x] Make sure to add `!` if this involve a breaking change

🛠️ Fixes #1469

---------

Co-authored-by: Yuan Teoh <45984206+Yuan325@users.noreply.github.com>
2025-10-01 14:15:28 -07:00
Yuan Teoh
cbd72c2ea1 chore: update logger out stream to errStream in stdio transport (#1466)
## Description

---
Update out stream in `stdio` transport protocol.


**Before:** When `stdio=true`, log levels will automatically get set to
WARN (even if user explicitly set it as DEBUG or INFO). This is because
the DEBUG and INFO logger send logs to outStream. In `stdio`, server
MUST NOT write anything to `stdout` that is not a valid MCP message.

MCP specifications mentioned that "The server MAY write UTF-8 strings to
its standard error (stderr) for logging purposes. Client MAY capture,
forward, or ignore this logging."

**After:** When `stdio=true`, logger's DEBUG and INFO logger send logs
to outStream. This will still respect the `log-levels` set by user
(default as INFO).
2025-09-30 13:39:33 -07:00
release-please[bot]
964a82eb08 chore(main): release 0.16.0 (#1530)
🤖 I have created a release *beep* *boop*
---


##
[0.16.0](https://github.com/googleapis/genai-toolbox/compare/v0.15.0...v0.16.0)
(2025-09-25)


### ⚠ BREAKING CHANGES

* **tool/bigquery-execute-sql:** add allowed datasets support
([#1443](https://github.com/googleapis/genai-toolbox/issues/1443))
* **tool/bigquery-forecast:** add allowed datasets support
([#1412](https://github.com/googleapis/genai-toolbox/issues/1412))

### Features

* **cassandra:** Add Cassandra Source and Tool
([#1012](https://github.com/googleapis/genai-toolbox/issues/1012))
([6e42053](6e420534ee))
* **sources/postgres:** Add application_name
([#1504](https://github.com/googleapis/genai-toolbox/issues/1504))
([72a2366](72a2366b28))
* **tool/bigquery-execute-sql:** Add allowed datasets support
([#1443](https://github.com/googleapis/genai-toolbox/issues/1443))
([9501ebb](9501ebbdbc))
* **tool/bigquery-forecast:** Add allowed datasets support
([#1412](https://github.com/googleapis/genai-toolbox/issues/1412))
([88bac7e](88bac7e36f))
* **tools/clickhouse-list-tables:** Add list-tables tool
([#1446](https://github.com/googleapis/genai-toolbox/issues/1446))
([69a3caf](69a3cafabe))


### Bug Fixes

* **tool/mongodb-find:** Fix find tool `limit` field
([#1570](https://github.com/googleapis/genai-toolbox/issues/1570))
([4166bf7](4166bf7ab8))
* **tools/mongodb:** Concat filter params only once in mongodb update
tools ([#1545](https://github.com/googleapis/genai-toolbox/issues/1545))
([295f9dc](295f9dc41a))

---
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>
2025-09-25 18:05:14 -07:00
Pranava B
6e420534ee feat(cassandra): add Cassandra Source and Tool (#1012)
[Cassandra](https://cassandra.apache.org/_/cassandra-basics.html) is a
NoSQL distributed database. By design, NoSQL databases are lightweight,
open-source, non-relational, and largely distributed. Counted among
their strengths are horizontal scalability, distributed architectures,
and a flexible approach to schema definition.

Cassandra go driver link -
https://pkg.go.dev/github.com/apache/cassandra-gocql-driver/v2

This PR 
- adds a new source for cassandra
- adds a new tool _cassandra-cql_ with support for executing predefined
parameterized CQL queries on cassandra
- adds unit and integration tests for the tool and the source
- adds documentation for the cassandra source and cassandra-cql tool

---------

Co-authored-by: Wenxin Du <117315983+duwenxin99@users.noreply.github.com>
Co-authored-by: duwenxin <duwenxin@google.com>
2025-09-23 20:48:43 +00:00
Pete Hampton
69a3cafabe feat(tools/clickhouse-list-tables): add list-tables tool (#1446)
## Description

Follows up https://github.com/googleapis/genai-toolbox/pull/1274/ with a
list tables tool for ClickHouse

## PR Checklist

---
> Thank you for opening a Pull Request! Before submitting your PR, there
are a
> few things you can do to make sure it goes smoothly:

- [x] Make sure you reviewed

[CONTRIBUTING.md](https://github.com/googleapis/genai-toolbox/blob/main/CONTRIBUTING.md)
- [ ] Make sure to open an issue as a

[bug/issue](https://github.com/googleapis/genai-toolbox/issues/new/choose)
before writing your code! That way we can discuss the change, evaluate
  designs, and agree on the general idea
- [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 involve a breaking change

🛠️ Fixes #<issue_number_goes_here>

---------

Co-authored-by: Pete Hampton <pjhampton@users.noreply.github.com>
Co-authored-by: Averi Kitsch <akitsch@google.com>
2025-09-22 16:27:06 +00:00
release-please[bot]
c934d7adfd chore(main): release 0.15.0 (#1351)
🤖 I have created a release *beep* *boop*
---


##
[0.15.0](https://github.com/googleapis/genai-toolbox/compare/v0.14.0...v0.15.0)
(2025-09-18)


### ⚠ BREAKING CHANGES

* **prebuilt:** update prebuilt tool names to use consistent guidance
([#1421](https://github.com/googleapis/genai-toolbox/issues/1421))
* **tools/alloydb-wait-for-operation:** Add `alloydb-admin` source to
`alloydb-wait-for-operation` tool
([#1449](https://github.com/googleapis/genai-toolbox/issues/1449))

### Features

* Add AlloyDB admin source
([#1369](https://github.com/googleapis/genai-toolbox/issues/1369))
([33beb71](33beb7187d))
* Add Cloud monitoring source and tool
([#1311](https://github.com/googleapis/genai-toolbox/issues/1311))
([d661f53](d661f5343f))
* Add YugabyteDB Source and Tool
([#732](https://github.com/googleapis/genai-toolbox/issues/732))
([664711f](664711f4b3))
* **prebuilt:** Update default values for prebuilt tools
([#1355](https://github.com/googleapis/genai-toolbox/issues/1355))
([70e832b](70e832bd08))
* **prebuilt/cloud-sql:** Add list instances tool for cloudsql
([#1310](https://github.com/googleapis/genai-toolbox/issues/1310))
([0171228](01712284b4))
* **prebuilt/cloud-sql:** Add cloud sql create database tool.
([#1453](https://github.com/googleapis/genai-toolbox/issues/1453))
([a1bc044](a1bc04477b))
* **prebuilt/cloud-sql:** Add `cloud-sql-get-instances` tool
([#1383](https://github.com/googleapis/genai-toolbox/issues/1383))
([77919c7](77919c7d8e))
* **prebuilt/cloud-sql:** Add create user tool for cloud sql
([#1406](https://github.com/googleapis/genai-toolbox/issues/1406))
([3a6b517](3a6b51752f))
* **prebuilt/cloud-sql:** Add list databases tool for cloud sql
([#1454](https://github.com/googleapis/genai-toolbox/issues/1454))
([e6a6c61](e6a6c615d5))
* **prebuilt/cloud-sql:** Package cloud sql tools
([#1455](https://github.com/googleapis/genai-toolbox/issues/1455))
([bf6266b](bf6266ba11))
* **prebuilt/cloud-sql-mssql:** Add create instance tool for mssql
([#1440](https://github.com/googleapis/genai-toolbox/issues/1440))
([b176523](b17652309d))
* **prebuilt/cloud-sql-mysql:** Add create instance tool for Cloud SQL
MySQL ([#1434](https://github.com/googleapis/genai-toolbox/issues/1434))
([15b628d](15b628d2d2))
* **prebuilt/cloud-sql-mysql:** Add env var support for IP Type
([#1232](https://github.com/googleapis/genai-toolbox/issues/1232))
([#1347](https://github.com/googleapis/genai-toolbox/issues/1347))
([0cd3f16](0cd3f16f87))
* **prebuilt/cloudsqlpg:** Add cloud sql pg create instance tool
([#1403](https://github.com/googleapis/genai-toolbox/issues/1403))
([d302499](d30249961b))
* **prebuilt/mysql:** Add a new tool to show query plan of a given query
in MySQL
([#1474](https://github.com/googleapis/genai-toolbox/issues/1474))
([1a42e05](1a42e05675))
* **prebuilt/mysql:** Add `queryParams` field in MySQL prebuilt config
([#1318](https://github.com/googleapis/genai-toolbox/issues/1318))
([4b32c2a](4b32c2a770))
* **prebuilt/neo4j:** Add prebuiltconfig support for neo4j
([#1352](https://github.com/googleapis/genai-toolbox/issues/1352))
([f819e26](f819e26443))
* **prebuilt/observability:** Add cloud sql observability tools
([#1425](https://github.com/googleapis/genai-toolbox/issues/1425))
([236be89](236be89961))
* **prebuilt/postgres:** Add postgres prebuilt tools
([#1473](https://github.com/googleapis/genai-toolbox/issues/1473))
([edca9dc](edca9dc7d7))
* **prebuilt/sqlite:** Prebuilt tools for the sqlite.
([#1227](https://github.com/googleapis/genai-toolbox/issues/1227))
([681c2b4](681c2b4f3a))
* **source/alloydb-admin:** Add user agent and attach alloydb api in
`alloydb-admin` source
([#1448](https://github.com/googleapis/genai-toolbox/issues/1448))
([9710014](971001400f))
* **source/bigquery:** Add support for datasets selection
([#1313](https://github.com/googleapis/genai-toolbox/issues/1313))
([aa39724](aa3972470f))
* **source/cloud-monitoring:** Add support for user agent in cloud
monitoring source
([#1472](https://github.com/googleapis/genai-toolbox/issues/1472))
([92680b1](92680b18d6))
* **source/cloud-sql-admin:** Add User agent and attach sqldmin in
`cloud-sql-admin` source.
([#1441](https://github.com/googleapis/genai-toolbox/issues/1441))
([56b6574](56b6574fc2))
* **source/cloudsqladmin:** Add cloud sql admin source
([#1408](https://github.com/googleapis/genai-toolbox/issues/1408))
([4f46782](4f46782927))
* **tool/cloudsql:** Add cloud sql wait for operation tool with
exponential backoff
([#1306](https://github.com/googleapis/genai-toolbox/issues/1306))
([3aef2bb](3aef2bb7be))
* **tools/alloydb-create-cluster:** Add custom tool kind for AlloyDB
create cluster
([#1331](https://github.com/googleapis/genai-toolbox/issues/1331))
([76bb876](76bb876d54))
* **tools/alloydb-create-instance:** Add new custom tool kind for
AlloyDB
([#1379](https://github.com/googleapis/genai-toolbox/issues/1379))
([091cd9a](091cd9aa1a))
* **tools/alloydb-create-user:** Add new custom tool kind for AlloyDB
create user
([#1380](https://github.com/googleapis/genai-toolbox/issues/1380))
([ab3fd26](ab3fd261af))
* **tools/alloydb-get-cluster:** Add new tool for AlloyDB
([#1420](https://github.com/googleapis/genai-toolbox/issues/1420))
([c181dab](c181dabc91))
* **tools/alloydb-get-instance:** Add new for AlloyDB
([#1435](https://github.com/googleapis/genai-toolbox/issues/1435))
([f2d9e3b](f2d9e3b579))
* **tools/alloydb-get-user:** Add new tool for AlloyDB
([#1436](https://github.com/googleapis/genai-toolbox/issues/1436))
([677254e](677254e6d9))
* **tools/alloydb-list-cluster:** Add custom tool kind for AlloyDB
([#1319](https://github.com/googleapis/genai-toolbox/issues/1319))
([d4a9eb0](d4a9eb0ce2))
* **tools/alloydb-list-instances:** Add custom tool kind for AlloyDB
([#1357](https://github.com/googleapis/genai-toolbox/issues/1357))
([93c1b30](93c1b30fce))
* **tools/alloydb-list-users:** Add new custom tool kind for AlloyDB
([#1377](https://github.com/googleapis/genai-toolbox/issues/1377))
([3a8a65c](3a8a65ceaa))
* **tools/bigquery-analyze-contribution:** Add analyze contribution tool
([#1223](https://github.com/googleapis/genai-toolbox/issues/1223))
([81d239b](81d239b053))
* **tools/bigquery-conversational-analytics:** Add allowed datasets
support
([#1411](https://github.com/googleapis/genai-toolbox/issues/1411))
([345bd6a](345bd6af52))
* **tools/bigquery-search-catalog:** Add new tool to BigQuery
([#1382](https://github.com/googleapis/genai-toolbox/issues/1382))
([bffb39d](bffb39dea3))
* **tools/bigquery:** Add `useClientOAuth` to BigQuery prebuilt source
config
([#1431](https://github.com/googleapis/genai-toolbox/issues/1431))
([fe2999a](fe2999a691))
* **tools/clickhouse-list-databases:** Add `list-databases` tool to
clickhouse source
([#1274](https://github.com/googleapis/genai-toolbox/issues/1274))
([e515d92](e515d9254f))
* **tools/firestore-get-rules:** Add `databaseId` to the Firestore
source and `firestore-get-rules` tool
([#1505](https://github.com/googleapis/genai-toolbox/issues/1505))
([7450482](7450482bb2))
* **tools/firestore:** Add `firestore-query` tool
([#1305](https://github.com/googleapis/genai-toolbox/issues/1305))
([cce602f](cce602f280))
* **tools/looker:** Query tracking for MCP Toolbox in Looker System
Activity views
([#1410](https://github.com/googleapis/genai-toolbox/issues/1410))
([2036c8e](2036c8efd2))
* **tools/mssql-list-tables:** Add new tool for sql server
([#1433](https://github.com/googleapis/genai-toolbox/issues/1433))
([b036047](b036047a21))
* **tools/mysql-list-active-queries:** Add a new tool to list ongoing
queries in a MySQL instance
([#1471](https://github.com/googleapis/genai-toolbox/issues/1471))
([ed54cd6](ed54cd6cfd))
* **tools/mysql-list-table-fragmentation:** Add a new tool to list table
fragmentation in a MySQL instance
([#1479](https://github.com/googleapis/genai-toolbox/issues/1479))
([fe651d8](fe651d822f))
* **tools/mysql-list-tables-missing-index:** Add a new tool to list
tables that do not have primary or unique keys in a MySQL instance
([#1493](https://github.com/googleapis/genai-toolbox/issues/1493))
([9eb821a](9eb821a6dc))
* **tools/mysql-list-tables:** Add new tool for MySQL
([#1287](https://github.com/googleapis/genai-toolbox/issues/1287))
([6c8460b](6c8460b0e5))
* **tools/postgres-list-active-queries:** Add new
`postgres-list-active-queries` tool
([#1400](https://github.com/googleapis/genai-toolbox/issues/1400))
([b2b06c7](b2b06c72c2))
* **tools/postgres-list-tables:** Add new tool to postgres source
([#1284](https://github.com/googleapis/genai-toolbox/issues/1284))
([71f360d](71f360d315))
* **tools/spanner-list-tables:** Add new tool `spanner-list-tables`
([#1404](https://github.com/googleapis/genai-toolbox/issues/1404))
([7d384dc](7d384dc28f))


### Bug Fixes

* **bigquery:** Add `Bearer` parsing to auth token
([#1386](https://github.com/googleapis/genai-toolbox/issues/1386))
([b5f9780](b5f9780a59))
* **source/alloydb-admin, source/cloudsql-admin:** Post append new user
agent ([#1494](https://github.com/googleapis/genai-toolbox/issues/1494))
([30f1d3a](30f1d3a983))
* **tools/alloydb:** Update parameter names and set default description
for AlloyDB control plane tools
([#1468](https://github.com/googleapis/genai-toolbox/issues/1468))
([6c140d7](6c140d718a))
* **tools/bigquery-conversational-analytics:** Fix authentication scope
error in Cloud Run
([#1381](https://github.com/googleapis/genai-toolbox/issues/1381))
([80b7488](80b7488ad2))
* **tools/mysql-list-tables:** Update `mysql-list-tables` table_names
parameter with default value
([#1439](https://github.com/googleapis/genai-toolbox/issues/1439))
([da24661](da246610e1))
* **tools/neo4j:** Implement value conversion for Neo4j types to
JSON-compatible
([#1428](https://github.com/googleapis/genai-toolbox/issues/1428))
([4babc4e](4babc4e11b))
---
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>
2025-09-18 17:31:00 -07:00
shuzhou-gc
9eb821a6dc feat(tools/mysql-list-tables-missing-index): Add a new tool to list tables that do not have primary or unique keys in a MySQL instance (#1493)
## Description

---
A `mysql-list-tables-missing-index` tool searches tables that do not
have primary or unique indices in a MySQL database. It's compatible
with:

- cloud-sql-mysql
- mysql

`mysql-list-tables-missing-index` outputs table names, including
`table_schema` and `table_name` in JSON format. It takes 2 optional
input parameters:

- `table_schema` (optional): Only check tables in this specific
schema/database. Search all visible tables in all visible databases if
not specified.
- `limit` (optional):  max number of queries to return, default `50`.

## Example

```yaml
tools:
  list_tables_missing_index:
    kind: mysql-list-tables-missing-index
    source: my-mysql-instance
    description: Find tables that do not have primary or unique key constraint. A primary key or unique key is the only mechanism that guaranttes a row is unique. Without them, the database-level protection against data integrity issues will be missing.
```
The response is a json array with the following fields:
```json
{
  "table_schema": "the schema/database this table belongs to",
  "table_name": "name of the table",
}
```

## Reference

| **field** | **type** | **required** | **description** |

|-------------|:------------------------------------------:|:------------:|--------------------------------------------------------------------------------------------------|
| kind | string | true | Must be "mysql-list-active-queries". |
| source | string | true | Name of the source the SQL should execute on.
|
| description | string | true | Description of the tool that is passed
to the LLM. |
## PR Checklist

---
> Thank you for opening a Pull Request! Before submitting your PR, there
are a
> few things you can do to make sure it goes smoothly:

- [x] Make sure you reviewed

[CONTRIBUTING.md](https://github.com/googleapis/genai-toolbox/blob/main/CONTRIBUTING.md)
- [x] Make sure to open an issue as a

[bug/issue](https://github.com/googleapis/genai-toolbox/issues/new/choose)
before writing your code! That way we can discuss the change, evaluate
  designs, and agree on the general idea
- [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)
- [x] Make sure to add `!` if this involve a breaking change

---------

Co-authored-by: Averi Kitsch <akitsch@google.com>
2025-09-18 11:17:15 -07:00
shuzhou-gc
fe651d822f feat(tools/mysql-list-table-fragmentation): Add a new tool to list table fragmentation in a MySQL instance (#1479)
## Description

A `mysql-list-table-fragmentation` tool checks table fragmentation of
MySQL tables by calculating the size of the data and index files in
bytes and comparing with free space allocated to each table. This tool
calculates `fragmentation_percentage` which represents the proportion of
free space relative to the total data and index size. It's compatible
with

- cloud-sql-mysql
- mysql

`mysql-list-table-fragmentation` outputs detailed information as JSON ,
ordered by the fragmentation percentage in descending order.
This tool takes 4 optional input parameters:

- `table_schema` (optional): The database where fragmentation check is
to be executed. Check all tables visible to the current user if not
specified.
- `table_name` (optional): Name of the table to be checked. Check all
tables visible to the current user if not specified.
- `data_free_threshold_bytes` (optional): Only show tables with at least
this much free space in bytes. Default 1.
- `limit` (optional): Max rows to return, default 10.

## Example

```yaml
tools:
  list_table_fragmentation:
    kind: mysql-list-table-fragmentation
    source: my-mysql-instance
    description: List table fragmentation in MySQL, by calculating the size of the data and index files and free space allocated to each table. The query calculates fragmentation percentage which represents the proportion of free space relative to the total data and index size. Storage can be reclaimed for tables with high fragmentation using OPTIMIZE TABLE.
```
The response is a json array with the following fields:
```json
{
  "table_schema": "The schema/database this table belongs to",
  "table_name": "Name of this table",
  "data_size": "Size of the table data in bytes",
  "index_size": "Size of the table's indexes in bytes",
  "data_free": "Free space (bytes) available in the table's data file",
  "fragmentation_percentage": "How much fragementation this table has",
}
```

## PR Checklist

---
> Thank you for opening a Pull Request! Before submitting your PR, there
are a
> few things you can do to make sure it goes smoothly:

- [x] Make sure you reviewed

[CONTRIBUTING.md](https://github.com/googleapis/genai-toolbox/blob/main/CONTRIBUTING.md)
- [x] Make sure to open an issue as a

[bug/issue](https://github.com/googleapis/genai-toolbox/issues/new/choose)
before writing your code! That way we can discuss the change, evaluate
  designs, and agree on the general idea
- [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)
- [x] Make sure to add `!` if this involve a breaking change

---------

Co-authored-by: Yuan Teoh <45984206+Yuan325@users.noreply.github.com>
Co-authored-by: Averi Kitsch <akitsch@google.com>
2025-09-18 10:24:45 -07:00
Divyansh
bffb39dea3 feat(tools/bigquery-search-catalog): Add support for bigquery-search-catalog tool (#1382)
## Description

---
The tool can be considered as a subset of the dataplex_search_entries
tool. It automatically appends system=bigquery to all of the requests
and outputs BigQuery resources.

## PR Checklist

---
> Thank you for opening a Pull Request! Before submitting your PR, there
are a
> few things you can do to make sure it goes smoothly:

- [x] Make sure you reviewed

[CONTRIBUTING.md](https://github.com/googleapis/genai-toolbox/blob/main/CONTRIBUTING.md)
- [x] Make sure to open an issue as a

[bug/issue](https://github.com/googleapis/genai-toolbox/issues/new/choose)
before writing your code! That way we can discuss the change, evaluate
  designs, and agree on the general idea
- [ ] 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 involve a breaking change

🛠️ Fixes #1376

---------

Co-authored-by: Averi Kitsch <akitsch@google.com>
2025-09-17 15:00:12 -07:00
shuzhou-gc
ed54cd6cfd feat(tools/mysql-list-active-queries): Add a new tool to list ongoing queries in a MySQL instance (#1471)
## Description

---
This PR introduces a new MySQL tool `mysql-list-active-queries`. It adds
a new kind `mysql-list-active-queries` that returns the top N currently
running queries, pulled from `information_schema.innodb_trx` and
`information_schema.processlist`. The list is ordered by elapsed time in
descending order.

Parameters supported

- `min_duration_secs` (optional) — only include queries running at least
this many seconds
- `limit` (optional) — max rows to return (default 10).

## PR Checklist

---
> Thank you for opening a Pull Request! Before submitting your PR, there
are a
> few things you can do to make sure it goes smoothly:

- [x] Make sure you reviewed

[CONTRIBUTING.md](https://github.com/googleapis/genai-toolbox/blob/main/CONTRIBUTING.md)
- [x] Make sure to open an issue as a

[bug/issue](https://github.com/googleapis/genai-toolbox/issues/new/choose)
before writing your code! That way we can discuss the change, evaluate
  designs, and agree on the general idea
- [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)
- [x] Make sure to add `!` if this involves a breaking change

---------

Co-authored-by: Averi Kitsch <akitsch@google.com>
2025-09-17 13:59:29 -07:00
shuzhou-gc
1a42e05675 feat(prebuilt/mysql): Add a new tool to show query plan of a given query in MySQL (#1474)
## Description

Adds a read-only MySQL prebuilt tool, `get_query_plan`, that returns the
optimizer’s estimated plan for a single SQL statement using `EXPLAIN
FORMAT JSON`.

## PR Checklist

---
> Thank you for opening a Pull Request! Before submitting your PR, there
are a
> few things you can do to make sure it goes smoothly:

- [x] Make sure you reviewed

[CONTRIBUTING.md](https://github.com/googleapis/genai-toolbox/blob/main/CONTRIBUTING.md)
- [x] Make sure to open an issue as a

[bug/issue](https://github.com/googleapis/genai-toolbox/issues/new/choose)
before writing your code! That way we can discuss the change, evaluate
  designs, and agree on the general idea
- [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)
- [x] Make sure to add `!` if this involve a breaking change

---------

Co-authored-by: Averi Kitsch <akitsch@google.com>
2025-09-17 11:29:15 -07:00
Manu Paliwal
92680b18d6 feat: add support for user agent in cloud monitoring source (#1472)
## Description

---
> Add support for user agent in cloud monitoring source
> Make changes to the toolset names to be in sync with the overall
toolbox

## PR Checklist

---
> Thank you for opening a Pull Request! Before submitting your PR, there
are a
> few things you can do to make sure it goes smoothly:

- [x] Make sure you reviewed

[CONTRIBUTING.md](https://github.com/googleapis/genai-toolbox/blob/main/CONTRIBUTING.md)
- [ ] Make sure to open an issue as a

[bug/issue](https://github.com/googleapis/genai-toolbox/issues/new/choose)
before writing your code! That way we can discuss the change, evaluate
  designs, and agree on the general idea
- [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 involve a breaking change
2025-09-17 18:15:47 +05:30
Sri Varshitha
091cd9aa1a feat(tools/alloydb-create-instance): Add new custom tool kind for alloydb create-instance (#1379)
## Description

---
This pull request introduces a new custom tool kind
`alloydb-create-instance` that allows users to create a new AlloyDB
instance within a specified cluster.
### Example Configuration

```yaml
tools:
  create_instance:
    kind: alloydb-create-instance
    source: my-alloydb-admin-source
    description: Use this tool to create a new AlloyDB instance within a specified cluster.
```

### Example Request
``` 
curl -X POST http://127.0.0.1:5000/api/tool/create_instance/invoke \
-H "Content-Type: application/json" \
-d '{
    "project": "example-project",
    "location": "us-central1",
    "cluster": "example-cluster",
    "instance": "example-instance-id",
    "instanceType": "PRIMARY",
    "displayName": "example-instance"
}'
```

## PR Checklist

---
> Thank you for opening a Pull Request! Before submitting your PR, there
are a
> few things you can do to make sure it goes smoothly:

- [x] Make sure you reviewed

[CONTRIBUTING.md](https://github.com/googleapis/genai-toolbox/blob/main/CONTRIBUTING.md)
- [ ] Make sure to open an issue as a

[bug/issue](https://github.com/googleapis/genai-toolbox/issues/new/choose)
before writing your code! That way we can discuss the change, evaluate
  designs, and agree on the general idea
- [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)
- [x] Make sure to add `!` if this involve a breaking change

🛠️ Fixes #<issue_number_goes_here>
2025-09-17 14:13:03 +05:30
Sri Varshitha
c71724c6e0 feat(tools/alloydb-wait-for-operation)!: Add alloydb-admin source to alloydb-wait-for-operation tool (#1449)
## Description

---
This PR updates the alloydb-wait-for-operation tool to use the
alloydb-admin source.

## PR Checklist

---
> Thank you for opening a Pull Request! Before submitting your PR, there
are a
> few things you can do to make sure it goes smoothly:

- [x] Make sure you reviewed

[CONTRIBUTING.md](https://github.com/googleapis/genai-toolbox/blob/main/CONTRIBUTING.md)
- [ ] Make sure to open an issue as a

[bug/issue](https://github.com/googleapis/genai-toolbox/issues/new/choose)
before writing your code! That way we can discuss the change, evaluate
  designs, and agree on the general idea
- [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 involve a breaking change

🛠️ Fixes #<issue_number_goes_here>
2025-09-17 11:59:50 +05:30
Sri Varshitha
76bb876d54 feat(tools/alloydb-create-cluster): Add custom tool kind for AlloyDB create cluster (#1331)
## Description
---
This pull request introduces a new custom tool kind
`alloydb-create-cluster` that creates a new AlloyDB cluster.

### Example Configuration

```yaml
tools:
  create_cluster:
    kind: alloydb-create-cluster
    source: my-alloydb-admin-source
    description: Use this tool to create a new AlloyDB cluster in a given project and location.
```

### Example Request
``` 
curl -X POST http://127.0.0.1:5000/api/tool/create_cluster/invoke \
-H "Content-Type: application/json" \
-d '{
    "project": "example-project",
    "cluster": "my-alloydb-cluster",
    "password": "my-password",
    "location": "us-central1",
    "network": "default",
    "user": "postgres"
}'
```
## PR Checklist
---
> Thank you for opening a Pull Request! Before submitting your PR, there
are a
> few things you can do to make sure it goes smoothly:
- [x] Make sure you reviewed

[CONTRIBUTING.md](https://github.com/googleapis/genai-toolbox/blob/main/CONTRIBUTING.md)
- [ ] Make sure to open an issue as a

[bug/issue](https://github.com/googleapis/langchain-google-alloydb-pg-python/issues/new/choose)
before writing your code! That way we can discuss the change, evaluate
  designs, and agree on the general idea
- [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)
- [x] Make sure to add `!` if this involve a breaking change

🛠️ Fixes #<issue_number_goes_here>
2025-09-17 10:45:56 +05:30
isaurabhuttam
0d7d8ab516 feat (tools/postgres-list-available-extensions, tools/postgres-list-installed-extensions): add tool types postgres-list-available-extensions and postgres-list-installed-extensions (#1401)
## Description

This PR adds two read-only, PostgreSQL tool kinds to MCPToolbox that
standardize discovery of extensions:

- `postgres-list-installed-extensions` – lists extensions installed in
the current database with: `name`, `version`, `schema`, `owner`
`description`.

- `postgres-list-available-extensions` – lists extensions available to
install on the cluster with: `name`, `default_version`, `description`.

Both are safe by default, and return well-typed JSON suitable for UIs,
agents, and automation.

**Test Output**
- `list_installed_extensions`

<img width="1414" height="781" alt="image"
src="https://github.com/user-attachments/assets/aab102a7-90ab-4516-9bc2-bcbfdab02bb1"
/>

- `list_available_extensions`

<img width="1421" height="774" alt="image"
src="https://github.com/user-attachments/assets/a4f80f22-bb2e-4350-acb2-12eb020d88cb"
/>



---
> Should include a concise description of the changes (bug or feature),
it's
> impact, along with a summary of the solution

## PR Checklist

---
> Thank you for opening a Pull Request! Before submitting your PR, there
are a
> few things you can do to make sure it goes smoothly:

- [x] Make sure you reviewed

[CONTRIBUTING.md](https://github.com/googleapis/genai-toolbox/blob/main/CONTRIBUTING.md)
- [x] Make sure to open an issue as a

[bug/issue](https://github.com/googleapis/genai-toolbox/issues/new/choose)
before writing your code! That way we can discuss the change, evaluate
  designs, and agree on the general idea
- [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)
- [x] Make sure to add `!` if this involve a breaking change

🛠️ Fixes #<issue_number_goes_here>
2025-09-17 02:24:18 +00:00
Sri Varshitha
b036047a21 feat(tools/mssql-list-tables): Add new tool for mssql (#1433)
## Description

---
This pull request introduces a new custom tool kind `mssql-list-tables`
that allows users to list tables within a SQL server database.

### Example Configuration

```yaml
tools:
  list_tables:
    kind: mssql-list-tables
    source: mssql-source
    description: Use this tool to retrieve schema information for all or specified tables. Output format can be simple (only table names) or detailed.
```

### Example Request
``` 
curl -X POST http://127.0.0.1:5000/api/tool/list_tables/invoke \
-H "Content-Type: application/json" \
-d '{
    "table_names": "users",
    "output_format": "simple"
}'
```
## PR Checklist

---
> Thank you for opening a Pull Request! Before submitting your PR, there
are a
> few things you can do to make sure it goes smoothly:

- [x] Make sure you reviewed

[CONTRIBUTING.md](https://github.com/googleapis/genai-toolbox/blob/main/CONTRIBUTING.md)
- [ ] Make sure to open an issue as a

[bug/issue](https://github.com/googleapis/genai-toolbox/issues/new/choose)
before writing your code! That way we can discuss the change, evaluate
  designs, and agree on the general idea
- [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)
- [x] Make sure to add `!` if this involve a breaking change

🛠️ Fixes #<issue_number_goes_here>

---------

Co-authored-by: Averi Kitsch <akitsch@google.com>
2025-09-16 22:03:28 +00:00
Sri Varshitha
ab3fd261af feat(tools/alloydb-create-user): Add new custom tool kind for AlloyDB create user (#1380)
## Description

---
This pull request introduces a new custom tool kind
`alloydb-create-user` that allows users to create a new database user
for an AlloyDB cluster.
### Example Configuration

```yaml
tools:
  alloydb_create_user:
    kind: alloydb-create-user
    source: my-http-source
    description: Use this tool to create a new database user for an AlloyDB cluster.
```

### Example Request
``` 
curl -X POST http://127.0.0.1:5000/api/tool/alloydb_create_user/invoke \
-H "Content-Type: application/json" \
-d '{
    "project": "example-project",
    "location": "us-central1",
    "cluster": "example-cluster",
    "user": "my-new-db-user",
    "userType": "ALLOYDB_BUILT_IN",
    "password": "my-password",
    "databaseRoles": ["alloydbsuperuser"]
}'
```

## PR Checklist

---
> Thank you for opening a Pull Request! Before submitting your PR, there
are a
> few things you can do to make sure it goes smoothly:

- [x] Make sure you reviewed

[CONTRIBUTING.md](https://github.com/googleapis/genai-toolbox/blob/main/CONTRIBUTING.md)
- [ ] Make sure to open an issue as a

[bug/issue](https://github.com/googleapis/genai-toolbox/issues/new/choose)
before writing your code! That way we can discuss the change, evaluate
  designs, and agree on the general idea
- [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)
- [x] Make sure to add `!` if this involve a breaking change

🛠️ Fixes #<issue_number_goes_here>

---------

Co-authored-by: Averi Kitsch <akitsch@google.com>
2025-09-16 14:53:10 -07:00