#
tokens: 49484/50000 64/1089 files (page 2/76)
lines: on (toggle) GitHub
raw markdown copy reset
This is page 2 of 76. Use http://codebase.md/googleapis/genai-toolbox?lines=true&page={x} to view the full context.

# Directory Structure

```
├── .ci
│   ├── continuous.release.cloudbuild.yaml
│   ├── generate_release_table.sh
│   ├── integration.cloudbuild.yaml
│   ├── quickstart_test
│   │   ├── go.integration.cloudbuild.yaml
│   │   ├── js.integration.cloudbuild.yaml
│   │   ├── py.integration.cloudbuild.yaml
│   │   ├── run_go_tests.sh
│   │   ├── run_js_tests.sh
│   │   ├── run_py_tests.sh
│   │   └── setup_hotels_sample.sql
│   ├── test_prompts_with_coverage.sh
│   ├── test_with_coverage.sh
│   └── versioned.release.cloudbuild.yaml
├── .gemini
│   └── config.yaml
├── .github
│   ├── auto-label.yaml
│   ├── blunderbuss.yml
│   ├── CODEOWNERS
│   ├── header-checker-lint.yml
│   ├── ISSUE_TEMPLATE
│   │   ├── bug_report.yml
│   │   ├── config.yml
│   │   ├── feature_request.yml
│   │   └── question.yml
│   ├── label-sync.yml
│   ├── labels.yaml
│   ├── PULL_REQUEST_TEMPLATE.md
│   ├── release-please.yml
│   ├── renovate.json5
│   ├── sync-repo-settings.yaml
│   ├── trusted-contribution.yml
│   └── workflows
│       ├── cloud_build_failure_reporter.yml
│       ├── deploy_dev_docs.yaml
│       ├── deploy_previous_version_docs.yaml
│       ├── deploy_versioned_docs.yaml
│       ├── docs_preview_clean.yaml
│       ├── docs_preview_deploy.yaml
│       ├── link_checker_workflow.yaml
│       ├── lint.yaml
│       ├── publish-mcp.yml
│       ├── schedule_reporter.yml
│       ├── sync-labels.yaml
│       └── tests.yaml
├── .gitignore
├── .gitmodules
├── .golangci.yaml
├── .hugo
│   ├── archetypes
│   │   └── default.md
│   ├── assets
│   │   ├── icons
│   │   │   └── logo.svg
│   │   └── scss
│   │       ├── _styles_project.scss
│   │       └── _variables_project.scss
│   ├── go.mod
│   ├── go.sum
│   ├── hugo.toml
│   ├── layouts
│   │   ├── _default
│   │   │   └── home.releases.releases
│   │   ├── index.llms-full.txt
│   │   ├── index.llms.txt
│   │   ├── partials
│   │   │   ├── hooks
│   │   │   │   └── head-end.html
│   │   │   ├── navbar-version-selector.html
│   │   │   ├── page-meta-links.html
│   │   │   └── td
│   │   │       └── render-heading.html
│   │   ├── robot.txt
│   │   └── shortcodes
│   │       ├── include.html
│   │       ├── ipynb.html
│   │       └── regionInclude.html
│   ├── package-lock.json
│   ├── package.json
│   └── static
│       ├── favicons
│       │   ├── android-chrome-192x192.png
│       │   ├── android-chrome-512x512.png
│       │   ├── apple-touch-icon.png
│       │   ├── favicon-16x16.png
│       │   ├── favicon-32x32.png
│       │   └── favicon.ico
│       └── js
│           └── w3.js
├── .lycheeignore
├── CHANGELOG.md
├── cmd
│   ├── options_test.go
│   ├── options.go
│   ├── root_test.go
│   ├── root.go
│   └── version.txt
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── DEVELOPER.md
├── Dockerfile
├── docs
│   ├── ALLOYDBADMIN_README.md
│   ├── ALLOYDBPG_README.md
│   ├── BIGQUERY_README.md
│   ├── CLOUDSQLMSSQL_README.md
│   ├── CLOUDSQLMSSQLADMIN_README.md
│   ├── CLOUDSQLMYSQL_README.md
│   ├── CLOUDSQLMYSQLADMIN_README.md
│   ├── CLOUDSQLPG_README.md
│   ├── CLOUDSQLPGADMIN_README.md
│   ├── DATAPLEX_README.md
│   ├── en
│   │   ├── _index.md
│   │   ├── about
│   │   │   ├── _index.md
│   │   │   └── faq.md
│   │   ├── blogs
│   │   │   └── _index.md
│   │   ├── concepts
│   │   │   ├── _index.md
│   │   │   └── telemetry
│   │   │       ├── index.md
│   │   │       ├── telemetry_flow.png
│   │   │       └── telemetry_traces.png
│   │   ├── getting-started
│   │   │   ├── _index.md
│   │   │   ├── colab_quickstart.ipynb
│   │   │   ├── configure.md
│   │   │   ├── introduction
│   │   │   │   ├── _index.md
│   │   │   │   └── architecture.png
│   │   │   ├── local_quickstart_go.md
│   │   │   ├── local_quickstart_js.md
│   │   │   ├── local_quickstart.md
│   │   │   ├── mcp_quickstart
│   │   │   │   ├── _index.md
│   │   │   │   ├── inspector_tools.png
│   │   │   │   └── inspector.png
│   │   │   ├── prompts_quickstart_gemini_cli.md
│   │   │   └── quickstart
│   │   │       ├── go
│   │   │       │   ├── adkgo
│   │   │       │   │   ├── go.mod
│   │   │       │   │   ├── go.sum
│   │   │       │   │   └── quickstart.go
│   │   │       │   ├── genAI
│   │   │       │   │   ├── go.mod
│   │   │       │   │   ├── go.sum
│   │   │       │   │   └── quickstart.go
│   │   │       │   ├── genkit
│   │   │       │   │   ├── go.mod
│   │   │       │   │   ├── go.sum
│   │   │       │   │   └── quickstart.go
│   │   │       │   ├── langchain
│   │   │       │   │   ├── go.mod
│   │   │       │   │   ├── go.sum
│   │   │       │   │   └── quickstart.go
│   │   │       │   ├── openAI
│   │   │       │   │   ├── go.mod
│   │   │       │   │   ├── go.sum
│   │   │       │   │   └── quickstart.go
│   │   │       │   └── quickstart_test.go
│   │   │       ├── golden.txt
│   │   │       ├── js
│   │   │       │   ├── adk
│   │   │       │   │   ├── package-lock.json
│   │   │       │   │   ├── package.json
│   │   │       │   │   └── quickstart.js
│   │   │       │   ├── genAI
│   │   │       │   │   ├── package-lock.json
│   │   │       │   │   ├── package.json
│   │   │       │   │   └── quickstart.js
│   │   │       │   ├── genkit
│   │   │       │   │   ├── package-lock.json
│   │   │       │   │   ├── package.json
│   │   │       │   │   └── quickstart.js
│   │   │       │   ├── langchain
│   │   │       │   │   ├── package-lock.json
│   │   │       │   │   ├── package.json
│   │   │       │   │   └── quickstart.js
│   │   │       │   ├── llamaindex
│   │   │       │   │   ├── package-lock.json
│   │   │       │   │   ├── package.json
│   │   │       │   │   └── quickstart.js
│   │   │       │   └── quickstart.test.js
│   │   │       ├── python
│   │   │       │   ├── __init__.py
│   │   │       │   ├── adk
│   │   │       │   │   ├── quickstart.py
│   │   │       │   │   └── requirements.txt
│   │   │       │   ├── core
│   │   │       │   │   ├── quickstart.py
│   │   │       │   │   └── requirements.txt
│   │   │       │   ├── langchain
│   │   │       │   │   ├── quickstart.py
│   │   │       │   │   └── requirements.txt
│   │   │       │   ├── llamaindex
│   │   │       │   │   ├── quickstart.py
│   │   │       │   │   └── requirements.txt
│   │   │       │   └── quickstart_test.py
│   │   │       └── shared
│   │   │           ├── cloud_setup.md
│   │   │           ├── configure_toolbox.md
│   │   │           └── database_setup.md
│   │   ├── how-to
│   │   │   ├── _index.md
│   │   │   ├── connect_via_geminicli.md
│   │   │   ├── connect_via_mcp.md
│   │   │   ├── connect-ide
│   │   │   │   ├── _index.md
│   │   │   │   ├── alloydb_pg_admin_mcp.md
│   │   │   │   ├── alloydb_pg_mcp.md
│   │   │   │   ├── bigquery_mcp.md
│   │   │   │   ├── cloud_sql_mssql_admin_mcp.md
│   │   │   │   ├── cloud_sql_mssql_mcp.md
│   │   │   │   ├── cloud_sql_mysql_admin_mcp.md
│   │   │   │   ├── cloud_sql_mysql_mcp.md
│   │   │   │   ├── cloud_sql_pg_admin_mcp.md
│   │   │   │   ├── cloud_sql_pg_mcp.md
│   │   │   │   ├── firestore_mcp.md
│   │   │   │   ├── looker_mcp.md
│   │   │   │   ├── mssql_mcp.md
│   │   │   │   ├── mysql_mcp.md
│   │   │   │   ├── neo4j_mcp.md
│   │   │   │   ├── postgres_mcp.md
│   │   │   │   ├── spanner_mcp.md
│   │   │   │   └── sqlite_mcp.md
│   │   │   ├── deploy_adk_agent.md
│   │   │   ├── deploy_docker.md
│   │   │   ├── deploy_gke.md
│   │   │   ├── deploy_toolbox.md
│   │   │   ├── export_telemetry.md
│   │   │   └── toolbox-ui
│   │   │       ├── edit-headers.gif
│   │   │       ├── edit-headers.png
│   │   │       ├── index.md
│   │   │       ├── optional-param-checked.png
│   │   │       ├── optional-param-unchecked.png
│   │   │       ├── run-tool.gif
│   │   │       ├── tools.png
│   │   │       └── toolsets.png
│   │   ├── reference
│   │   │   ├── _index.md
│   │   │   ├── cli.md
│   │   │   └── prebuilt-tools.md
│   │   ├── resources
│   │   │   ├── _index.md
│   │   │   ├── authServices
│   │   │   │   ├── _index.md
│   │   │   │   └── google.md
│   │   │   ├── embeddingModels
│   │   │   │   ├── _index.md
│   │   │   │   └── gemini.md
│   │   │   ├── prompts
│   │   │   │   ├── _index.md
│   │   │   │   └── custom
│   │   │   │       └── _index.md
│   │   │   ├── sources
│   │   │   │   ├── _index.md
│   │   │   │   ├── alloydb-admin.md
│   │   │   │   ├── alloydb-pg.md
│   │   │   │   ├── bigquery.md
│   │   │   │   ├── bigtable.md
│   │   │   │   ├── cassandra.md
│   │   │   │   ├── clickhouse.md
│   │   │   │   ├── cloud-gda.md
│   │   │   │   ├── cloud-healthcare.md
│   │   │   │   ├── cloud-monitoring.md
│   │   │   │   ├── cloud-sql-admin.md
│   │   │   │   ├── cloud-sql-mssql.md
│   │   │   │   ├── cloud-sql-mysql.md
│   │   │   │   ├── cloud-sql-pg.md
│   │   │   │   ├── couchbase.md
│   │   │   │   ├── dataplex.md
│   │   │   │   ├── dgraph.md
│   │   │   │   ├── elasticsearch.md
│   │   │   │   ├── firebird.md
│   │   │   │   ├── firestore.md
│   │   │   │   ├── http.md
│   │   │   │   ├── looker.md
│   │   │   │   ├── mariadb.md
│   │   │   │   ├── mindsdb.md
│   │   │   │   ├── mongodb.md
│   │   │   │   ├── mssql.md
│   │   │   │   ├── mysql.md
│   │   │   │   ├── neo4j.md
│   │   │   │   ├── oceanbase.md
│   │   │   │   ├── oracle.md
│   │   │   │   ├── postgres.md
│   │   │   │   ├── redis.md
│   │   │   │   ├── serverless-spark.md
│   │   │   │   ├── singlestore.md
│   │   │   │   ├── snowflake.md
│   │   │   │   ├── spanner.md
│   │   │   │   ├── sqlite.md
│   │   │   │   ├── tidb.md
│   │   │   │   ├── trino.md
│   │   │   │   ├── valkey.md
│   │   │   │   └── yugabytedb.md
│   │   │   └── tools
│   │   │       ├── _index.md
│   │   │       ├── alloydb
│   │   │       │   ├── _index.md
│   │   │       │   ├── alloydb-create-cluster.md
│   │   │       │   ├── alloydb-create-instance.md
│   │   │       │   ├── alloydb-create-user.md
│   │   │       │   ├── alloydb-get-cluster.md
│   │   │       │   ├── alloydb-get-instance.md
│   │   │       │   ├── alloydb-get-user.md
│   │   │       │   ├── alloydb-list-clusters.md
│   │   │       │   ├── alloydb-list-instances.md
│   │   │       │   ├── alloydb-list-users.md
│   │   │       │   └── alloydb-wait-for-operation.md
│   │   │       ├── alloydbainl
│   │   │       │   ├── _index.md
│   │   │       │   └── alloydb-ai-nl.md
│   │   │       ├── bigquery
│   │   │       │   ├── _index.md
│   │   │       │   ├── bigquery-analyze-contribution.md
│   │   │       │   ├── bigquery-conversational-analytics.md
│   │   │       │   ├── bigquery-execute-sql.md
│   │   │       │   ├── bigquery-forecast.md
│   │   │       │   ├── bigquery-get-dataset-info.md
│   │   │       │   ├── bigquery-get-table-info.md
│   │   │       │   ├── bigquery-list-dataset-ids.md
│   │   │       │   ├── bigquery-list-table-ids.md
│   │   │       │   ├── bigquery-search-catalog.md
│   │   │       │   └── bigquery-sql.md
│   │   │       ├── bigtable
│   │   │       │   ├── _index.md
│   │   │       │   └── bigtable-sql.md
│   │   │       ├── cassandra
│   │   │       │   ├── _index.md
│   │   │       │   └── cassandra-cql.md
│   │   │       ├── clickhouse
│   │   │       │   ├── _index.md
│   │   │       │   ├── clickhouse-execute-sql.md
│   │   │       │   ├── clickhouse-list-databases.md
│   │   │       │   ├── clickhouse-list-tables.md
│   │   │       │   └── clickhouse-sql.md
│   │   │       ├── cloudgda
│   │   │       │   ├── _index.md
│   │   │       │   └── cloud-gda-query.md
│   │   │       ├── cloudhealthcare
│   │   │       │   ├── _index.md
│   │   │       │   ├── cloud-healthcare-fhir-fetch-page.md
│   │   │       │   ├── cloud-healthcare-fhir-patient-everything.md
│   │   │       │   ├── cloud-healthcare-fhir-patient-search.md
│   │   │       │   ├── cloud-healthcare-get-dataset.md
│   │   │       │   ├── cloud-healthcare-get-dicom-store-metrics.md
│   │   │       │   ├── cloud-healthcare-get-dicom-store.md
│   │   │       │   ├── cloud-healthcare-get-fhir-resource.md
│   │   │       │   ├── cloud-healthcare-get-fhir-store-metrics.md
│   │   │       │   ├── cloud-healthcare-get-fhir-store.md
│   │   │       │   ├── cloud-healthcare-list-dicom-stores.md
│   │   │       │   ├── cloud-healthcare-list-fhir-stores.md
│   │   │       │   ├── cloud-healthcare-retrieve-rendered-dicom-instance.md
│   │   │       │   ├── cloud-healthcare-search-dicom-instances.md
│   │   │       │   ├── cloud-healthcare-search-dicom-series.md
│   │   │       │   └── cloud-healthcare-search-dicom-studies.md
│   │   │       ├── cloudmonitoring
│   │   │       │   ├── _index.md
│   │   │       │   └── cloud-monitoring-query-prometheus.md
│   │   │       ├── cloudsql
│   │   │       │   ├── _index.md
│   │   │       │   ├── cloudsqlcloneinstance.md
│   │   │       │   ├── cloudsqlcreatedatabase.md
│   │   │       │   ├── cloudsqlcreateusers.md
│   │   │       │   ├── cloudsqlgetinstances.md
│   │   │       │   ├── cloudsqllistdatabases.md
│   │   │       │   ├── cloudsqllistinstances.md
│   │   │       │   ├── cloudsqlmssqlcreateinstance.md
│   │   │       │   ├── cloudsqlmysqlcreateinstance.md
│   │   │       │   ├── cloudsqlpgcreateinstances.md
│   │   │       │   ├── cloudsqlpgupgradeprecheck.md
│   │   │       │   └── cloudsqlwaitforoperation.md
│   │   │       ├── couchbase
│   │   │       │   ├── _index.md
│   │   │       │   └── couchbase-sql.md
│   │   │       ├── dataform
│   │   │       │   ├── _index.md
│   │   │       │   └── dataform-compile-local.md
│   │   │       ├── dataplex
│   │   │       │   ├── _index.md
│   │   │       │   ├── dataplex-lookup-entry.md
│   │   │       │   ├── dataplex-search-aspect-types.md
│   │   │       │   └── dataplex-search-entries.md
│   │   │       ├── dgraph
│   │   │       │   ├── _index.md
│   │   │       │   └── dgraph-dql.md
│   │   │       ├── elasticsearch
│   │   │       │   ├── _index.md
│   │   │       │   └── elasticsearch-esql.md
│   │   │       ├── firebird
│   │   │       │   ├── _index.md
│   │   │       │   ├── firebird-execute-sql.md
│   │   │       │   └── firebird-sql.md
│   │   │       ├── firestore
│   │   │       │   ├── _index.md
│   │   │       │   ├── firestore-add-documents.md
│   │   │       │   ├── firestore-delete-documents.md
│   │   │       │   ├── firestore-get-documents.md
│   │   │       │   ├── firestore-get-rules.md
│   │   │       │   ├── firestore-list-collections.md
│   │   │       │   ├── firestore-query-collection.md
│   │   │       │   ├── firestore-query.md
│   │   │       │   ├── firestore-update-document.md
│   │   │       │   └── firestore-validate-rules.md
│   │   │       ├── http
│   │   │       │   ├── _index.md
│   │   │       │   └── http.md
│   │   │       ├── looker
│   │   │       │   ├── _index.md
│   │   │       │   ├── looker-add-dashboard-element.md
│   │   │       │   ├── looker-add-dashboard-filter.md
│   │   │       │   ├── looker-conversational-analytics.md
│   │   │       │   ├── looker-create-project-file.md
│   │   │       │   ├── looker-delete-project-file.md
│   │   │       │   ├── looker-dev-mode.md
│   │   │       │   ├── looker-generate-embed-url.md
│   │   │       │   ├── looker-get-connection-databases.md
│   │   │       │   ├── looker-get-connection-schemas.md
│   │   │       │   ├── looker-get-connection-table-columns.md
│   │   │       │   ├── looker-get-connection-tables.md
│   │   │       │   ├── looker-get-connections.md
│   │   │       │   ├── looker-get-dashboards.md
│   │   │       │   ├── looker-get-dimensions.md
│   │   │       │   ├── looker-get-explores.md
│   │   │       │   ├── looker-get-filters.md
│   │   │       │   ├── looker-get-looks.md
│   │   │       │   ├── looker-get-measures.md
│   │   │       │   ├── looker-get-models.md
│   │   │       │   ├── looker-get-parameters.md
│   │   │       │   ├── looker-get-project-file.md
│   │   │       │   ├── looker-get-project-files.md
│   │   │       │   ├── looker-get-projects.md
│   │   │       │   ├── looker-health-analyze.md
│   │   │       │   ├── looker-health-pulse.md
│   │   │       │   ├── looker-health-vacuum.md
│   │   │       │   ├── looker-make-dashboard.md
│   │   │       │   ├── looker-make-look.md
│   │   │       │   ├── looker-query-sql.md
│   │   │       │   ├── looker-query-url.md
│   │   │       │   ├── looker-query.md
│   │   │       │   ├── looker-run-dashboard.md
│   │   │       │   ├── looker-run-look.md
│   │   │       │   └── looker-update-project-file.md
│   │   │       ├── mindsdb
│   │   │       │   ├── _index.md
│   │   │       │   ├── mindsdb-execute-sql.md
│   │   │       │   └── mindsdb-sql.md
│   │   │       ├── mongodb
│   │   │       │   ├── _index.md
│   │   │       │   ├── mongodb-aggregate.md
│   │   │       │   ├── mongodb-delete-many.md
│   │   │       │   ├── mongodb-delete-one.md
│   │   │       │   ├── mongodb-find-one.md
│   │   │       │   ├── mongodb-find.md
│   │   │       │   ├── mongodb-insert-many.md
│   │   │       │   ├── mongodb-insert-one.md
│   │   │       │   ├── mongodb-update-many.md
│   │   │       │   └── mongodb-update-one.md
│   │   │       ├── mssql
│   │   │       │   ├── _index.md
│   │   │       │   ├── mssql-execute-sql.md
│   │   │       │   ├── mssql-list-tables.md
│   │   │       │   └── mssql-sql.md
│   │   │       ├── mysql
│   │   │       │   ├── _index.md
│   │   │       │   ├── mysql-execute-sql.md
│   │   │       │   ├── mysql-get-query-plan.md
│   │   │       │   ├── mysql-list-active-queries.md
│   │   │       │   ├── mysql-list-table-fragmentation.md
│   │   │       │   ├── mysql-list-tables-missing-unique-indexes.md
│   │   │       │   ├── mysql-list-tables.md
│   │   │       │   └── mysql-sql.md
│   │   │       ├── neo4j
│   │   │       │   ├── _index.md
│   │   │       │   ├── neo4j-cypher.md
│   │   │       │   ├── neo4j-execute-cypher.md
│   │   │       │   └── neo4j-schema.md
│   │   │       ├── oceanbase
│   │   │       │   ├── _index.md
│   │   │       │   ├── oceanbase-execute-sql.md
│   │   │       │   └── oceanbase-sql.md
│   │   │       ├── oracle
│   │   │       │   ├── _index.md
│   │   │       │   ├── oracle-execute-sql.md
│   │   │       │   └── oracle-sql.md
│   │   │       ├── postgres
│   │   │       │   ├── _index.md
│   │   │       │   ├── postgres-database-overview.md
│   │   │       │   ├── postgres-execute-sql.md
│   │   │       │   ├── postgres-get-column-cardinality.md
│   │   │       │   ├── postgres-list-active-queries.md
│   │   │       │   ├── postgres-list-available-extensions.md
│   │   │       │   ├── postgres-list-database-stats.md
│   │   │       │   ├── postgres-list-indexes.md
│   │   │       │   ├── postgres-list-installed-extensions.md
│   │   │       │   ├── postgres-list-locks.md
│   │   │       │   ├── postgres-list-pg-settings.md
│   │   │       │   ├── postgres-list-publication-tables.md
│   │   │       │   ├── postgres-list-query-stats.md
│   │   │       │   ├── postgres-list-roles.md
│   │   │       │   ├── postgres-list-schemas.md
│   │   │       │   ├── postgres-list-sequences.md
│   │   │       │   ├── postgres-list-stored-procedure.md
│   │   │       │   ├── postgres-list-table-stats.md
│   │   │       │   ├── postgres-list-tables.md
│   │   │       │   ├── postgres-list-tablespaces.md
│   │   │       │   ├── postgres-list-triggers.md
│   │   │       │   ├── postgres-list-views.md
│   │   │       │   ├── postgres-long-running-transactions.md
│   │   │       │   ├── postgres-replication-stats.md
│   │   │       │   └── postgres-sql.md
│   │   │       ├── redis
│   │   │       │   ├── _index.md
│   │   │       │   └── redis.md
│   │   │       ├── serverless-spark
│   │   │       │   ├── _index.md
│   │   │       │   ├── serverless-spark-cancel-batch.md
│   │   │       │   ├── serverless-spark-create-pyspark-batch.md
│   │   │       │   ├── serverless-spark-create-spark-batch.md
│   │   │       │   ├── serverless-spark-get-batch.md
│   │   │       │   └── serverless-spark-list-batches.md
│   │   │       ├── singlestore
│   │   │       │   ├── _index.md
│   │   │       │   ├── singlestore-execute-sql.md
│   │   │       │   └── singlestore-sql.md
│   │   │       ├── snowflake
│   │   │       │   ├── _index.md
│   │   │       │   ├── snowflake-execute-sql.md
│   │   │       │   └── snowflake-sql.md
│   │   │       ├── spanner
│   │   │       │   ├── _index.md
│   │   │       │   ├── spanner-execute-sql.md
│   │   │       │   ├── spanner-list-graphs.md
│   │   │       │   ├── spanner-list-tables.md
│   │   │       │   └── spanner-sql.md
│   │   │       ├── sqlite
│   │   │       │   ├── _index.md
│   │   │       │   ├── sqlite-execute-sql.md
│   │   │       │   └── sqlite-sql.md
│   │   │       ├── tidb
│   │   │       │   ├── _index.md
│   │   │       │   ├── tidb-execute-sql.md
│   │   │       │   └── tidb-sql.md
│   │   │       ├── trino
│   │   │       │   ├── _index.md
│   │   │       │   ├── trino-execute-sql.md
│   │   │       │   └── trino-sql.md
│   │   │       ├── utility
│   │   │       │   ├── _index.md
│   │   │       │   └── wait.md
│   │   │       ├── valkey
│   │   │       │   ├── _index.md
│   │   │       │   └── valkey.md
│   │   │       └── yuagbytedb
│   │   │           ├── _index.md
│   │   │           └── yugabytedb-sql.md
│   │   ├── samples
│   │   │   ├── _index.md
│   │   │   ├── alloydb
│   │   │   │   ├── _index.md
│   │   │   │   ├── ai-nl
│   │   │   │   │   ├── alloydb_ai_nl.ipynb
│   │   │   │   │   └── index.md
│   │   │   │   └── mcp_quickstart.md
│   │   │   ├── bigquery
│   │   │   │   ├── _index.md
│   │   │   │   ├── colab_quickstart_bigquery.ipynb
│   │   │   │   ├── local_quickstart.md
│   │   │   │   └── mcp_quickstart
│   │   │   │       ├── _index.md
│   │   │   │       ├── inspector_tools.png
│   │   │   │       └── inspector.png
│   │   │   ├── looker
│   │   │   │   ├── _index.md
│   │   │   │   ├── looker_gemini_oauth
│   │   │   │   │   ├── _index.md
│   │   │   │   │   ├── authenticated.png
│   │   │   │   │   ├── authorize.png
│   │   │   │   │   └── registration.png
│   │   │   │   ├── looker_gemini.md
│   │   │   │   └── looker_mcp_inspector
│   │   │   │       ├── _index.md
│   │   │   │       ├── inspector_tools.png
│   │   │   │       └── inspector.png
│   │   │   └── snowflake
│   │   │       ├── _index.md
│   │   │       ├── runme.py
│   │   │       ├── snowflake-config.yaml
│   │   │       ├── snowflake-env.sh
│   │   │       └── test-snowflake.sh
│   │   └── sdks
│   │       ├── _index.md
│   │       ├── go-sdk.md
│   │       ├── js-sdk.md
│   │       └── python-sdk.md
│   ├── LOOKER_README.md
│   ├── SPANNER_README.md
│   └── TOOLBOX_README.md
├── gemini-extension.json
├── go.mod
├── go.sum
├── internal
│   ├── auth
│   │   ├── auth.go
│   │   └── google
│   │       └── google.go
│   ├── embeddingmodels
│   │   ├── embeddingmodels.go
│   │   └── gemini
│   │       ├── gemini_test.go
│   │       └── gemini.go
│   ├── log
│   │   ├── handler.go
│   │   ├── log_test.go
│   │   ├── log.go
│   │   └── logger.go
│   ├── prebuiltconfigs
│   │   ├── prebuiltconfigs_test.go
│   │   ├── prebuiltconfigs.go
│   │   └── tools
│   │       ├── alloydb-postgres-admin.yaml
│   │       ├── alloydb-postgres-observability.yaml
│   │       ├── alloydb-postgres.yaml
│   │       ├── bigquery.yaml
│   │       ├── clickhouse.yaml
│   │       ├── cloud-healthcare.yaml
│   │       ├── cloud-sql-mssql-admin.yaml
│   │       ├── cloud-sql-mssql-observability.yaml
│   │       ├── cloud-sql-mssql.yaml
│   │       ├── cloud-sql-mysql-admin.yaml
│   │       ├── cloud-sql-mysql-observability.yaml
│   │       ├── cloud-sql-mysql.yaml
│   │       ├── cloud-sql-postgres-admin.yaml
│   │       ├── cloud-sql-postgres-observability.yaml
│   │       ├── cloud-sql-postgres.yaml
│   │       ├── dataplex.yaml
│   │       ├── elasticsearch.yaml
│   │       ├── firestore.yaml
│   │       ├── looker-conversational-analytics.yaml
│   │       ├── looker.yaml
│   │       ├── mindsdb.yaml
│   │       ├── mssql.yaml
│   │       ├── mysql.yaml
│   │       ├── neo4j.yaml
│   │       ├── oceanbase.yaml
│   │       ├── postgres.yaml
│   │       ├── serverless-spark.yaml
│   │       ├── singlestore.yaml
│   │       ├── snowflake.yaml
│   │       ├── spanner-postgres.yaml
│   │       ├── spanner.yaml
│   │       └── sqlite.yaml
│   ├── prompts
│   │   ├── arguments_test.go
│   │   ├── arguments.go
│   │   ├── custom
│   │   │   ├── custom_test.go
│   │   │   └── custom.go
│   │   ├── messages_test.go
│   │   ├── messages.go
│   │   ├── prompts_test.go
│   │   ├── prompts.go
│   │   ├── promptsets_test.go
│   │   └── promptsets.go
│   ├── server
│   │   ├── api_test.go
│   │   ├── api.go
│   │   ├── common_test.go
│   │   ├── config.go
│   │   ├── mcp
│   │   │   ├── jsonrpc
│   │   │   │   ├── jsonrpc_test.go
│   │   │   │   └── jsonrpc.go
│   │   │   ├── mcp.go
│   │   │   ├── util
│   │   │   │   └── lifecycle.go
│   │   │   ├── v20241105
│   │   │   │   ├── method.go
│   │   │   │   └── types.go
│   │   │   ├── v20250326
│   │   │   │   ├── method.go
│   │   │   │   └── types.go
│   │   │   └── v20250618
│   │   │       ├── method.go
│   │   │       └── types.go
│   │   ├── mcp_test.go
│   │   ├── mcp.go
│   │   ├── resources
│   │   │   ├── resources_test.go
│   │   │   └── resources.go
│   │   ├── server_test.go
│   │   ├── server.go
│   │   ├── static
│   │   │   ├── assets
│   │   │   │   └── mcptoolboxlogo.png
│   │   │   ├── css
│   │   │   │   └── style.css
│   │   │   ├── index.html
│   │   │   ├── js
│   │   │   │   ├── auth.js
│   │   │   │   ├── loadTools.js
│   │   │   │   ├── mainContent.js
│   │   │   │   ├── navbar.js
│   │   │   │   ├── runTool.js
│   │   │   │   ├── toolDisplay.js
│   │   │   │   ├── tools.js
│   │   │   │   └── toolsets.js
│   │   │   ├── tools.html
│   │   │   └── toolsets.html
│   │   ├── web_test.go
│   │   └── web.go
│   ├── sources
│   │   ├── alloydbadmin
│   │   │   ├── alloydbadmin_test.go
│   │   │   └── alloydbadmin.go
│   │   ├── alloydbpg
│   │   │   ├── alloydb_pg_test.go
│   │   │   └── alloydb_pg.go
│   │   ├── bigquery
│   │   │   ├── bigquery_test.go
│   │   │   ├── bigquery.go
│   │   │   └── cache.go
│   │   ├── bigtable
│   │   │   ├── bigtable_test.go
│   │   │   └── bigtable.go
│   │   ├── cassandra
│   │   │   ├── cassandra_test.go
│   │   │   └── cassandra.go
│   │   ├── clickhouse
│   │   │   ├── clickhouse_test.go
│   │   │   └── clickhouse.go
│   │   ├── cloudgda
│   │   │   ├── cloud_gda_test.go
│   │   │   └── cloud_gda.go
│   │   ├── cloudhealthcare
│   │   │   ├── cloud_healthcare_test.go
│   │   │   └── cloud_healthcare.go
│   │   ├── cloudmonitoring
│   │   │   ├── cloud_monitoring_test.go
│   │   │   └── cloud_monitoring.go
│   │   ├── cloudsqladmin
│   │   │   ├── cloud_sql_admin_test.go
│   │   │   └── cloud_sql_admin.go
│   │   ├── cloudsqlmssql
│   │   │   ├── cloud_sql_mssql_test.go
│   │   │   └── cloud_sql_mssql.go
│   │   ├── cloudsqlmysql
│   │   │   ├── cloud_sql_mysql_test.go
│   │   │   └── cloud_sql_mysql.go
│   │   ├── cloudsqlpg
│   │   │   ├── cloud_sql_pg_test.go
│   │   │   └── cloud_sql_pg.go
│   │   ├── couchbase
│   │   │   ├── couchbase_test.go
│   │   │   └── couchbase.go
│   │   ├── dataplex
│   │   │   ├── dataplex_test.go
│   │   │   └── dataplex.go
│   │   ├── dgraph
│   │   │   ├── dgraph_test.go
│   │   │   └── dgraph.go
│   │   ├── dialect.go
│   │   ├── elasticsearch
│   │   │   ├── elasticsearch_test.go
│   │   │   └── elasticsearch.go
│   │   ├── firebird
│   │   │   ├── firebird_test.go
│   │   │   └── firebird.go
│   │   ├── firestore
│   │   │   ├── firestore_test.go
│   │   │   └── firestore.go
│   │   ├── http
│   │   │   ├── http_test.go
│   │   │   └── http.go
│   │   ├── ip_type.go
│   │   ├── looker
│   │   │   ├── looker_test.go
│   │   │   └── looker.go
│   │   ├── mindsdb
│   │   │   ├── mindsdb_test.go
│   │   │   └── mindsdb.go
│   │   ├── mongodb
│   │   │   ├── mongodb_test.go
│   │   │   └── mongodb.go
│   │   ├── mssql
│   │   │   ├── mssql_test.go
│   │   │   └── mssql.go
│   │   ├── mysql
│   │   │   ├── mysql_test.go
│   │   │   └── mysql.go
│   │   ├── neo4j
│   │   │   ├── neo4j_test.go
│   │   │   └── neo4j.go
│   │   ├── oceanbase
│   │   │   ├── oceanbase_test.go
│   │   │   └── oceanbase.go
│   │   ├── oracle
│   │   │   ├── oracle_test.go
│   │   │   └── oracle.go
│   │   ├── postgres
│   │   │   ├── postgres_test.go
│   │   │   └── postgres.go
│   │   ├── redis
│   │   │   ├── redis_test.go
│   │   │   └── redis.go
│   │   ├── serverlessspark
│   │   │   ├── serverlessspark_test.go
│   │   │   ├── serverlessspark.go
│   │   │   ├── url_test.go
│   │   │   └── url.go
│   │   ├── singlestore
│   │   │   ├── singlestore_test.go
│   │   │   └── singlestore.go
│   │   ├── snowflake
│   │   │   ├── snowflake_test.go
│   │   │   └── snowflake.go
│   │   ├── sources.go
│   │   ├── spanner
│   │   │   ├── spanner_test.go
│   │   │   └── spanner.go
│   │   ├── sqlite
│   │   │   ├── sqlite_test.go
│   │   │   └── sqlite.go
│   │   ├── tidb
│   │   │   ├── tidb_test.go
│   │   │   └── tidb.go
│   │   ├── trino
│   │   │   ├── trino_test.go
│   │   │   └── trino.go
│   │   ├── util.go
│   │   ├── valkey
│   │   │   ├── valkey_test.go
│   │   │   └── valkey.go
│   │   └── yugabytedb
│   │       ├── yugabytedb_test.go
│   │       └── yugabytedb.go
│   ├── telemetry
│   │   ├── instrumentation.go
│   │   └── telemetry.go
│   ├── testutils
│   │   └── testutils.go
│   ├── tools
│   │   ├── alloydb
│   │   │   ├── alloydbcreatecluster
│   │   │   │   ├── alloydbcreatecluster_test.go
│   │   │   │   └── alloydbcreatecluster.go
│   │   │   ├── alloydbcreateinstance
│   │   │   │   ├── alloydbcreateinstance_test.go
│   │   │   │   └── alloydbcreateinstance.go
│   │   │   ├── alloydbcreateuser
│   │   │   │   ├── alloydbcreateuser_test.go
│   │   │   │   └── alloydbcreateuser.go
│   │   │   ├── alloydbgetcluster
│   │   │   │   ├── alloydbgetcluster_test.go
│   │   │   │   └── alloydbgetcluster.go
│   │   │   ├── alloydbgetinstance
│   │   │   │   ├── alloydbgetinstance_test.go
│   │   │   │   └── alloydbgetinstance.go
│   │   │   ├── alloydbgetuser
│   │   │   │   ├── alloydbgetuser_test.go
│   │   │   │   └── alloydbgetuser.go
│   │   │   ├── alloydblistclusters
│   │   │   │   ├── alloydblistclusters_test.go
│   │   │   │   └── alloydblistclusters.go
│   │   │   ├── alloydblistinstances
│   │   │   │   ├── alloydblistinstances_test.go
│   │   │   │   └── alloydblistinstances.go
│   │   │   ├── alloydblistusers
│   │   │   │   ├── alloydblistusers_test.go
│   │   │   │   └── alloydblistusers.go
│   │   │   └── alloydbwaitforoperation
│   │   │       ├── alloydbwaitforoperation_test.go
│   │   │       └── alloydbwaitforoperation.go
│   │   ├── alloydbainl
│   │   │   ├── alloydbainl_test.go
│   │   │   └── alloydbainl.go
│   │   ├── bigquery
│   │   │   ├── bigqueryanalyzecontribution
│   │   │   │   ├── bigqueryanalyzecontribution_test.go
│   │   │   │   └── bigqueryanalyzecontribution.go
│   │   │   ├── bigquerycommon
│   │   │   │   ├── table_name_parser_test.go
│   │   │   │   ├── table_name_parser.go
│   │   │   │   └── util.go
│   │   │   ├── bigqueryconversationalanalytics
│   │   │   │   ├── bigqueryconversationalanalytics_test.go
│   │   │   │   └── bigqueryconversationalanalytics.go
│   │   │   ├── bigqueryexecutesql
│   │   │   │   ├── bigqueryexecutesql_test.go
│   │   │   │   └── bigqueryexecutesql.go
│   │   │   ├── bigqueryforecast
│   │   │   │   ├── bigqueryforecast_test.go
│   │   │   │   └── bigqueryforecast.go
│   │   │   ├── bigquerygetdatasetinfo
│   │   │   │   ├── bigquerygetdatasetinfo_test.go
│   │   │   │   └── bigquerygetdatasetinfo.go
│   │   │   ├── bigquerygettableinfo
│   │   │   │   ├── bigquerygettableinfo_test.go
│   │   │   │   └── bigquerygettableinfo.go
│   │   │   ├── bigquerylistdatasetids
│   │   │   │   ├── bigquerylistdatasetids_test.go
│   │   │   │   └── bigquerylistdatasetids.go
│   │   │   ├── bigquerylisttableids
│   │   │   │   ├── bigquerylisttableids_test.go
│   │   │   │   └── bigquerylisttableids.go
│   │   │   ├── bigquerysearchcatalog
│   │   │   │   ├── bigquerysearchcatalog_test.go
│   │   │   │   └── bigquerysearchcatalog.go
│   │   │   └── bigquerysql
│   │   │       ├── bigquerysql_test.go
│   │   │       └── bigquerysql.go
│   │   ├── bigtable
│   │   │   ├── bigtable_test.go
│   │   │   └── bigtable.go
│   │   ├── cassandra
│   │   │   └── cassandracql
│   │   │       ├── cassandracql_test.go
│   │   │       └── cassandracql.go
│   │   ├── clickhouse
│   │   │   ├── clickhouseexecutesql
│   │   │   │   ├── clickhouseexecutesql_test.go
│   │   │   │   └── clickhouseexecutesql.go
│   │   │   ├── clickhouselistdatabases
│   │   │   │   ├── clickhouselistdatabases_test.go
│   │   │   │   └── clickhouselistdatabases.go
│   │   │   ├── clickhouselisttables
│   │   │   │   ├── clickhouselisttables_test.go
│   │   │   │   └── clickhouselisttables.go
│   │   │   └── clickhousesql
│   │   │       ├── clickhousesql_test.go
│   │   │       └── clickhousesql.go
│   │   ├── cloudgda
│   │   │   ├── cloudgda_test.go
│   │   │   ├── cloudgda.go
│   │   │   └── types.go
│   │   ├── cloudhealthcare
│   │   │   ├── cloudhealthcarefhirfetchpage
│   │   │   │   ├── cloudhealthcarefhirfetchpage_test.go
│   │   │   │   └── cloudhealthcarefhirfetchpage.go
│   │   │   ├── cloudhealthcarefhirpatienteverything
│   │   │   │   ├── cloudhealthcarefhirpatienteverything_test.go
│   │   │   │   └── cloudhealthcarefhirpatienteverything.go
│   │   │   ├── cloudhealthcarefhirpatientsearch
│   │   │   │   ├── cloudhealthcarefhirpatientsearch_test.go
│   │   │   │   └── cloudhealthcarefhirpatientsearch.go
│   │   │   ├── cloudhealthcaregetdataset
│   │   │   │   ├── cloudhealthcaregetdataset_test.go
│   │   │   │   └── cloudhealthcaregetdataset.go
│   │   │   ├── cloudhealthcaregetdicomstore
│   │   │   │   ├── cloudhealthcaregetdicomstore_test.go
│   │   │   │   └── cloudhealthcaregetdicomstore.go
│   │   │   ├── cloudhealthcaregetdicomstoremetrics
│   │   │   │   ├── cloudhealthcaregetdicomstoremetrics_test.go
│   │   │   │   └── cloudhealthcaregetdicomstoremetrics.go
│   │   │   ├── cloudhealthcaregetfhirresource
│   │   │   │   ├── cloudhealthcaregetfhirresource_test.go
│   │   │   │   └── cloudhealthcaregetfhirresource.go
│   │   │   ├── cloudhealthcaregetfhirstore
│   │   │   │   ├── cloudhealthcaregetfhirstore_test.go
│   │   │   │   └── cloudhealthcaregetfhirstore.go
│   │   │   ├── cloudhealthcaregetfhirstoremetrics
│   │   │   │   ├── cloudhealthcaregetfhirstoremetrics_test.go
│   │   │   │   └── cloudhealthcaregetfhirstoremetrics.go
│   │   │   ├── cloudhealthcarelistdicomstores
│   │   │   │   ├── cloudhealthcarelistdicomstores_test.go
│   │   │   │   └── cloudhealthcarelistdicomstores.go
│   │   │   ├── cloudhealthcarelistfhirstores
│   │   │   │   ├── cloudhealthcarelistfhirstores_test.go
│   │   │   │   └── cloudhealthcarelistfhirstores.go
│   │   │   ├── cloudhealthcareretrieverendereddicominstance
│   │   │   │   ├── cloudhealthcareretrieverendereddicominstance_test.go
│   │   │   │   └── cloudhealthcareretrieverendereddicominstance.go
│   │   │   ├── cloudhealthcaresearchdicominstances
│   │   │   │   ├── cloudhealthcaresearchdicominstances_test.go
│   │   │   │   └── cloudhealthcaresearchdicominstances.go
│   │   │   ├── cloudhealthcaresearchdicomseries
│   │   │   │   ├── cloudhealthcaresearchdicomseries_test.go
│   │   │   │   └── cloudhealthcaresearchdicomseries.go
│   │   │   ├── cloudhealthcaresearchdicomstudies
│   │   │   │   ├── cloudhealthcaresearchdicomstudies_test.go
│   │   │   │   └── cloudhealthcaresearchdicomstudies.go
│   │   │   └── common
│   │   │       └── util.go
│   │   ├── cloudmonitoring
│   │   │   ├── cloudmonitoring_test.go
│   │   │   └── cloudmonitoring.go
│   │   ├── cloudsql
│   │   │   ├── cloudsqlcloneinstance
│   │   │   │   ├── cloudsqlcloneinstance_test.go
│   │   │   │   └── cloudsqlcloneinstance.go
│   │   │   ├── cloudsqlcreatedatabase
│   │   │   │   ├── cloudsqlcreatedatabase_test.go
│   │   │   │   └── cloudsqlcreatedatabase.go
│   │   │   ├── cloudsqlcreateusers
│   │   │   │   ├── cloudsqlcreateusers_test.go
│   │   │   │   └── cloudsqlcreateusers.go
│   │   │   ├── cloudsqlgetinstances
│   │   │   │   ├── cloudsqlgetinstances_test.go
│   │   │   │   └── cloudsqlgetinstances.go
│   │   │   ├── cloudsqllistdatabases
│   │   │   │   ├── cloudsqllistdatabases_test.go
│   │   │   │   └── cloudsqllistdatabases.go
│   │   │   ├── cloudsqllistinstances
│   │   │   │   ├── cloudsqllistinstances_test.go
│   │   │   │   └── cloudsqllistinstances.go
│   │   │   └── cloudsqlwaitforoperation
│   │   │       ├── cloudsqlwaitforoperation_test.go
│   │   │       └── cloudsqlwaitforoperation.go
│   │   ├── cloudsqlmssql
│   │   │   └── cloudsqlmssqlcreateinstance
│   │   │       ├── cloudsqlmssqlcreateinstance_test.go
│   │   │       └── cloudsqlmssqlcreateinstance.go
│   │   ├── cloudsqlmysql
│   │   │   └── cloudsqlmysqlcreateinstance
│   │   │       ├── cloudsqlmysqlcreateinstance_test.go
│   │   │       └── cloudsqlmysqlcreateinstance.go
│   │   ├── cloudsqlpg
│   │   │   ├── cloudsqlpgcreateinstances
│   │   │   │   ├── cloudsqlpgcreateinstances_test.go
│   │   │   │   └── cloudsqlpgcreateinstances.go
│   │   │   └── cloudsqlpgupgradeprecheck
│   │   │       ├── cloudsqlpgupgradeprecheck_test.go
│   │   │       └── cloudsqlpgupgradeprecheck.go
│   │   ├── couchbase
│   │   │   ├── couchbase_test.go
│   │   │   └── couchbase.go
│   │   ├── dataform
│   │   │   └── dataformcompilelocal
│   │   │       ├── dataformcompilelocal_test.go
│   │   │       └── dataformcompilelocal.go
│   │   ├── dataplex
│   │   │   ├── dataplexlookupentry
│   │   │   │   ├── dataplexlookupentry_test.go
│   │   │   │   └── dataplexlookupentry.go
│   │   │   ├── dataplexsearchaspecttypes
│   │   │   │   ├── dataplexsearchaspecttypes_test.go
│   │   │   │   └── dataplexsearchaspecttypes.go
│   │   │   └── dataplexsearchentries
│   │   │       ├── dataplexsearchentries_test.go
│   │   │       └── dataplexsearchentries.go
│   │   ├── dgraph
│   │   │   ├── dgraph_test.go
│   │   │   └── dgraph.go
│   │   ├── elasticsearch
│   │   │   └── elasticsearchesql
│   │   │       ├── elasticsearchesql_test.go
│   │   │       └── elasticsearchesql.go
│   │   ├── firebird
│   │   │   ├── firebirdexecutesql
│   │   │   │   ├── firebirdexecutesql_test.go
│   │   │   │   └── firebirdexecutesql.go
│   │   │   └── firebirdsql
│   │   │       ├── firebirdsql_test.go
│   │   │       └── firebirdsql.go
│   │   ├── firestore
│   │   │   ├── firestoreadddocuments
│   │   │   │   ├── firestoreadddocuments_test.go
│   │   │   │   └── firestoreadddocuments.go
│   │   │   ├── firestoredeletedocuments
│   │   │   │   ├── firestoredeletedocuments_test.go
│   │   │   │   └── firestoredeletedocuments.go
│   │   │   ├── firestoregetdocuments
│   │   │   │   ├── firestoregetdocuments_test.go
│   │   │   │   └── firestoregetdocuments.go
│   │   │   ├── firestoregetrules
│   │   │   │   ├── firestoregetrules_test.go
│   │   │   │   └── firestoregetrules.go
│   │   │   ├── firestorelistcollections
│   │   │   │   ├── firestorelistcollections_test.go
│   │   │   │   └── firestorelistcollections.go
│   │   │   ├── firestorequery
│   │   │   │   ├── firestorequery_test.go
│   │   │   │   └── firestorequery.go
│   │   │   ├── firestorequerycollection
│   │   │   │   ├── firestorequerycollection_test.go
│   │   │   │   └── firestorequerycollection.go
│   │   │   ├── firestoreupdatedocument
│   │   │   │   ├── firestoreupdatedocument_test.go
│   │   │   │   └── firestoreupdatedocument.go
│   │   │   ├── firestorevalidaterules
│   │   │   │   ├── firestorevalidaterules_test.go
│   │   │   │   └── firestorevalidaterules.go
│   │   │   └── util
│   │   │       ├── converter_test.go
│   │   │       ├── converter.go
│   │   │       ├── validator_test.go
│   │   │       └── validator.go
│   │   ├── http
│   │   │   ├── http_test.go
│   │   │   └── http.go
│   │   ├── http_method.go
│   │   ├── looker
│   │   │   ├── lookeradddashboardelement
│   │   │   │   ├── lookeradddashboardelement_test.go
│   │   │   │   └── lookeradddashboardelement.go
│   │   │   ├── lookeradddashboardfilter
│   │   │   │   ├── lookeradddashboardfilter_test.go
│   │   │   │   └── lookeradddashboardfilter.go
│   │   │   ├── lookercommon
│   │   │   │   ├── lookercommon_test.go
│   │   │   │   └── lookercommon.go
│   │   │   ├── lookerconversationalanalytics
│   │   │   │   ├── lookerconversationalanalytics_test.go
│   │   │   │   └── lookerconversationalanalytics.go
│   │   │   ├── lookercreateprojectfile
│   │   │   │   ├── lookercreateprojectfile_test.go
│   │   │   │   └── lookercreateprojectfile.go
│   │   │   ├── lookerdeleteprojectfile
│   │   │   │   ├── lookerdeleteprojectfile_test.go
│   │   │   │   └── lookerdeleteprojectfile.go
│   │   │   ├── lookerdevmode
│   │   │   │   ├── lookerdevmode_test.go
│   │   │   │   └── lookerdevmode.go
│   │   │   ├── lookergenerateembedurl
│   │   │   │   ├── lookergenerateembedurl_test.go
│   │   │   │   └── lookergenerateembedurl.go
│   │   │   ├── lookergetconnectiondatabases
│   │   │   │   ├── lookergetconnectiondatabases_test.go
│   │   │   │   └── lookergetconnectiondatabases.go
│   │   │   ├── lookergetconnections
│   │   │   │   ├── lookergetconnections_test.go
│   │   │   │   └── lookergetconnections.go
│   │   │   ├── lookergetconnectionschemas
│   │   │   │   ├── lookergetconnectionschemas_test.go
│   │   │   │   └── lookergetconnectionschemas.go
│   │   │   ├── lookergetconnectiontablecolumns
│   │   │   │   ├── lookergetconnectiontablecolumns_test.go
│   │   │   │   └── lookergetconnectiontablecolumns.go
│   │   │   ├── lookergetconnectiontables
│   │   │   │   ├── lookergetconnectiontables_test.go
│   │   │   │   └── lookergetconnectiontables.go
│   │   │   ├── lookergetdashboards
│   │   │   │   ├── lookergetdashboards_test.go
│   │   │   │   └── lookergetdashboards.go
│   │   │   ├── lookergetdimensions
│   │   │   │   ├── lookergetdimensions_test.go
│   │   │   │   └── lookergetdimensions.go
│   │   │   ├── lookergetexplores
│   │   │   │   ├── lookergetexplores_test.go
│   │   │   │   └── lookergetexplores.go
│   │   │   ├── lookergetfilters
│   │   │   │   ├── lookergetfilters_test.go
│   │   │   │   └── lookergetfilters.go
│   │   │   ├── lookergetlooks
│   │   │   │   ├── lookergetlooks_test.go
│   │   │   │   └── lookergetlooks.go
│   │   │   ├── lookergetmeasures
│   │   │   │   ├── lookergetmeasures_test.go
│   │   │   │   └── lookergetmeasures.go
│   │   │   ├── lookergetmodels
│   │   │   │   ├── lookergetmodels_test.go
│   │   │   │   └── lookergetmodels.go
│   │   │   ├── lookergetparameters
│   │   │   │   ├── lookergetparameters_test.go
│   │   │   │   └── lookergetparameters.go
│   │   │   ├── lookergetprojectfile
│   │   │   │   ├── lookergetprojectfile_test.go
│   │   │   │   └── lookergetprojectfile.go
│   │   │   ├── lookergetprojectfiles
│   │   │   │   ├── lookergetprojectfiles_test.go
│   │   │   │   └── lookergetprojectfiles.go
│   │   │   ├── lookergetprojects
│   │   │   │   ├── lookergetprojects_test.go
│   │   │   │   └── lookergetprojects.go
│   │   │   ├── lookerhealthanalyze
│   │   │   │   ├── lookerhealthanalyze_test.go
│   │   │   │   └── lookerhealthanalyze.go
│   │   │   ├── lookerhealthpulse
│   │   │   │   ├── lookerhealthpulse_test.go
│   │   │   │   └── lookerhealthpulse.go
│   │   │   ├── lookerhealthvacuum
│   │   │   │   ├── lookerhealthvacuum_test.go
│   │   │   │   └── lookerhealthvacuum.go
│   │   │   ├── lookermakedashboard
│   │   │   │   ├── lookermakedashboard_test.go
│   │   │   │   └── lookermakedashboard.go
│   │   │   ├── lookermakelook
│   │   │   │   ├── lookermakelook_test.go
│   │   │   │   └── lookermakelook.go
│   │   │   ├── lookerquery
│   │   │   │   ├── lookerquery_test.go
│   │   │   │   └── lookerquery.go
│   │   │   ├── lookerquerysql
│   │   │   │   ├── lookerquerysql_test.go
│   │   │   │   └── lookerquerysql.go
│   │   │   ├── lookerqueryurl
│   │   │   │   ├── lookerqueryurl_test.go
│   │   │   │   └── lookerqueryurl.go
│   │   │   ├── lookerrundashboard
│   │   │   │   ├── lookerrundashboard_test.go
│   │   │   │   └── lookerrundashboard.go
│   │   │   ├── lookerrunlook
│   │   │   │   ├── lookerrunlook_test.go
│   │   │   │   └── lookerrunlook.go
│   │   │   └── lookerupdateprojectfile
│   │   │       ├── lookerupdateprojectfile_test.go
│   │   │       └── lookerupdateprojectfile.go
│   │   ├── mindsdb
│   │   │   ├── mindsdbexecutesql
│   │   │   │   ├── mindsdbexecutesql_test.go
│   │   │   │   └── mindsdbexecutesql.go
│   │   │   └── mindsdbsql
│   │   │       ├── mindsdbsql_test.go
│   │   │       └── mindsdbsql.go
│   │   ├── mongodb
│   │   │   ├── mongodbaggregate
│   │   │   │   ├── mongodbaggregate_test.go
│   │   │   │   └── mongodbaggregate.go
│   │   │   ├── mongodbdeletemany
│   │   │   │   ├── mongodbdeletemany_test.go
│   │   │   │   └── mongodbdeletemany.go
│   │   │   ├── mongodbdeleteone
│   │   │   │   ├── mongodbdeleteone_test.go
│   │   │   │   └── mongodbdeleteone.go
│   │   │   ├── mongodbfind
│   │   │   │   ├── mongodbfind_test.go
│   │   │   │   └── mongodbfind.go
│   │   │   ├── mongodbfindone
│   │   │   │   ├── mongodbfindone_test.go
│   │   │   │   └── mongodbfindone.go
│   │   │   ├── mongodbinsertmany
│   │   │   │   ├── mongodbinsertmany_test.go
│   │   │   │   └── mongodbinsertmany.go
│   │   │   ├── mongodbinsertone
│   │   │   │   ├── mongodbinsertone_test.go
│   │   │   │   └── mongodbinsertone.go
│   │   │   ├── mongodbupdatemany
│   │   │   │   ├── mongodbupdatemany_test.go
│   │   │   │   └── mongodbupdatemany.go
│   │   │   └── mongodbupdateone
│   │   │       ├── mongodbupdateone_test.go
│   │   │       └── mongodbupdateone.go
│   │   ├── mssql
│   │   │   ├── mssqlexecutesql
│   │   │   │   ├── mssqlexecutesql_test.go
│   │   │   │   └── mssqlexecutesql.go
│   │   │   ├── mssqllisttables
│   │   │   │   ├── mssqllisttables_test.go
│   │   │   │   └── mssqllisttables.go
│   │   │   └── mssqlsql
│   │   │       ├── mssqlsql_test.go
│   │   │       └── mssqlsql.go
│   │   ├── mysql
│   │   │   ├── mysqlcommon
│   │   │   │   └── mysqlcommon.go
│   │   │   ├── mysqlexecutesql
│   │   │   │   ├── mysqlexecutesql_test.go
│   │   │   │   └── mysqlexecutesql.go
│   │   │   ├── mysqlgetqueryplan
│   │   │   │   ├── mysqlgetqueryplan_test.go
│   │   │   │   └── mysqlgetqueryplan.go
│   │   │   ├── mysqllistactivequeries
│   │   │   │   ├── mysqllistactivequeries_test.go
│   │   │   │   └── mysqllistactivequeries.go
│   │   │   ├── mysqllisttablefragmentation
│   │   │   │   ├── mysqllisttablefragmentation_test.go
│   │   │   │   └── mysqllisttablefragmentation.go
│   │   │   ├── mysqllisttables
│   │   │   │   ├── mysqllisttables_test.go
│   │   │   │   └── mysqllisttables.go
│   │   │   ├── mysqllisttablesmissinguniqueindexes
│   │   │   │   ├── mysqllisttablesmissinguniqueindexes_test.go
│   │   │   │   └── mysqllisttablesmissinguniqueindexes.go
│   │   │   └── mysqlsql
│   │   │       ├── mysqlsql_test.go
│   │   │       └── mysqlsql.go
│   │   ├── neo4j
│   │   │   ├── neo4jcypher
│   │   │   │   ├── neo4jcypher_test.go
│   │   │   │   └── neo4jcypher.go
│   │   │   ├── neo4jexecutecypher
│   │   │   │   ├── classifier
│   │   │   │   │   ├── classifier_test.go
│   │   │   │   │   └── classifier.go
│   │   │   │   ├── neo4jexecutecypher_test.go
│   │   │   │   └── neo4jexecutecypher.go
│   │   │   └── neo4jschema
│   │   │       ├── cache
│   │   │       │   ├── cache_test.go
│   │   │       │   └── cache.go
│   │   │       ├── helpers
│   │   │       │   ├── helpers_test.go
│   │   │       │   └── helpers.go
│   │   │       ├── neo4jschema_test.go
│   │   │       ├── neo4jschema.go
│   │   │       └── types
│   │   │           └── types.go
│   │   ├── oceanbase
│   │   │   ├── oceanbaseexecutesql
│   │   │   │   ├── oceanbaseexecutesql_test.go
│   │   │   │   └── oceanbaseexecutesql.go
│   │   │   └── oceanbasesql
│   │   │       ├── oceanbasesql_test.go
│   │   │       └── oceanbasesql.go
│   │   ├── oracle
│   │   │   ├── oracleexecutesql
│   │   │   │   ├── oracleexecutesql_test.go
│   │   │   │   └── oracleexecutesql.go
│   │   │   └── oraclesql
│   │   │       ├── oraclesql_test.go
│   │   │       └── oraclesql.go
│   │   ├── postgres
│   │   │   ├── postgresdatabaseoverview
│   │   │   │   ├── postgresdatabaseoverview_test.go
│   │   │   │   └── postgresdatabaseoverview.go
│   │   │   ├── postgresexecutesql
│   │   │   │   ├── postgresexecutesql_test.go
│   │   │   │   └── postgresexecutesql.go
│   │   │   ├── postgresgetcolumncardinality
│   │   │   │   ├── postgresgetcolumncardinality_test.go
│   │   │   │   └── postgresgetcolumncardinality.go
│   │   │   ├── postgreslistactivequeries
│   │   │   │   ├── postgreslistactivequeries_test.go
│   │   │   │   └── postgreslistactivequeries.go
│   │   │   ├── postgreslistavailableextensions
│   │   │   │   ├── postgreslistavailableextensions_test.go
│   │   │   │   └── postgreslistavailableextensions.go
│   │   │   ├── postgreslistdatabasestats
│   │   │   │   ├── postgreslistdatabasestats_test.go
│   │   │   │   └── postgreslistdatabasestats.go
│   │   │   ├── postgreslistindexes
│   │   │   │   ├── postgreslistindexes_test.go
│   │   │   │   └── postgreslistindexes.go
│   │   │   ├── postgreslistinstalledextensions
│   │   │   │   ├── postgreslistinstalledextensions_test.go
│   │   │   │   └── postgreslistinstalledextensions.go
│   │   │   ├── postgreslistlocks
│   │   │   │   ├── postgreslistlocks_test.go
│   │   │   │   └── postgreslistlocks.go
│   │   │   ├── postgreslistpgsettings
│   │   │   │   ├── postgreslistpgsettings_test.go
│   │   │   │   └── postgreslistpgsettings.go
│   │   │   ├── postgreslistpublicationtables
│   │   │   │   ├── postgreslistpublicationtables_test.go
│   │   │   │   └── postgreslistpublicationtables.go
│   │   │   ├── postgreslistquerystats
│   │   │   │   ├── postgreslistquerystats_test.go
│   │   │   │   └── postgreslistquerystats.go
│   │   │   ├── postgreslistroles
│   │   │   │   ├── postgreslistroles_test.go
│   │   │   │   └── postgreslistroles.go
│   │   │   ├── postgreslistschemas
│   │   │   │   ├── postgreslistschemas_test.go
│   │   │   │   └── postgreslistschemas.go
│   │   │   ├── postgreslistsequences
│   │   │   │   ├── postgreslistsequences_test.go
│   │   │   │   └── postgreslistsequences.go
│   │   │   ├── postgresliststoredprocedure
│   │   │   │   ├── postgresliststoredprocedure_test.go
│   │   │   │   └── postgresliststoredprocedure.go
│   │   │   ├── postgreslisttables
│   │   │   │   ├── postgreslisttables_test.go
│   │   │   │   └── postgreslisttables.go
│   │   │   ├── postgreslisttablespaces
│   │   │   │   ├── postgreslisttablespaces_test.go
│   │   │   │   └── postgreslisttablespaces.go
│   │   │   ├── postgreslisttablestats
│   │   │   │   ├── postgreslisttablestats_test.go
│   │   │   │   └── postgreslisttablestats.go
│   │   │   ├── postgreslisttriggers
│   │   │   │   ├── postgreslisttriggers_test.go
│   │   │   │   └── postgreslisttriggers.go
│   │   │   ├── postgreslistviews
│   │   │   │   ├── postgreslistviews_test.go
│   │   │   │   └── postgreslistviews.go
│   │   │   ├── postgreslongrunningtransactions
│   │   │   │   ├── postgreslongrunningtransactions_test.go
│   │   │   │   └── postgreslongrunningtransactions.go
│   │   │   ├── postgresreplicationstats
│   │   │   │   ├── postgresreplicationstats_test.go
│   │   │   │   └── postgresreplicationstats.go
│   │   │   └── postgressql
│   │   │       ├── postgressql_test.go
│   │   │       └── postgressql.go
│   │   ├── redis
│   │   │   ├── redis_test.go
│   │   │   └── redis.go
│   │   ├── serverlessspark
│   │   │   ├── createbatch
│   │   │   │   ├── config.go
│   │   │   │   └── tool.go
│   │   │   ├── serverlesssparkcancelbatch
│   │   │   │   ├── serverlesssparkcancelbatch_test.go
│   │   │   │   └── serverlesssparkcancelbatch.go
│   │   │   ├── serverlesssparkcreatepysparkbatch
│   │   │   │   ├── serverlesssparkcreatepysparkbatch_test.go
│   │   │   │   └── serverlesssparkcreatepysparkbatch.go
│   │   │   ├── serverlesssparkcreatesparkbatch
│   │   │   │   ├── serverlesssparkcreatesparkbatch_test.go
│   │   │   │   └── serverlesssparkcreatesparkbatch.go
│   │   │   ├── serverlesssparkgetbatch
│   │   │   │   ├── serverlesssparkgetbatch_test.go
│   │   │   │   └── serverlesssparkgetbatch.go
│   │   │   ├── serverlesssparklistbatches
│   │   │   │   ├── serverlesssparklistbatches_test.go
│   │   │   │   └── serverlesssparklistbatches.go
│   │   │   └── testutils
│   │   │       └── testutils.go
│   │   ├── singlestore
│   │   │   ├── singlestoreexecutesql
│   │   │   │   ├── singlestoreexecutesql_test.go
│   │   │   │   └── singlestoreexecutesql.go
│   │   │   └── singlestoresql
│   │   │       ├── singlestoresql_test.go
│   │   │       └── singlestoresql.go
│   │   ├── snowflake
│   │   │   ├── snowflakeexecutesql
│   │   │   │   ├── snowflakeexecutesql_test.go
│   │   │   │   └── snowflakeexecutesql.go
│   │   │   └── snowflakesql
│   │   │       ├── snowflakesql_test.go
│   │   │       └── snowflakesql.go
│   │   ├── spanner
│   │   │   ├── spannerexecutesql
│   │   │   │   ├── spannerexecutesql_test.go
│   │   │   │   └── spannerexecutesql.go
│   │   │   ├── spannerlistgraphs
│   │   │   │   ├── spannerlistgraphs_test.go
│   │   │   │   └── spannerlistgraphs.go
│   │   │   ├── spannerlisttables
│   │   │   │   ├── spannerlisttables_test.go
│   │   │   │   └── spannerlisttables.go
│   │   │   └── spannersql
│   │   │       ├── spanner_test.go
│   │   │       └── spannersql.go
│   │   ├── sqlite
│   │   │   ├── sqliteexecutesql
│   │   │   │   ├── sqliteexecutesql_test.go
│   │   │   │   └── sqliteexecutesql.go
│   │   │   └── sqlitesql
│   │   │       ├── sqlitesql_test.go
│   │   │       └── sqlitesql.go
│   │   ├── tidb
│   │   │   ├── tidbexecutesql
│   │   │   │   ├── tidbexecutesql_test.go
│   │   │   │   └── tidbexecutesql.go
│   │   │   └── tidbsql
│   │   │       ├── tidbsql_test.go
│   │   │       └── tidbsql.go
│   │   ├── tools_test.go
│   │   ├── tools.go
│   │   ├── toolsets.go
│   │   ├── trino
│   │   │   ├── trinoexecutesql
│   │   │   │   ├── trinoexecutesql_test.go
│   │   │   │   └── trinoexecutesql.go
│   │   │   └── trinosql
│   │   │       ├── trinosql_test.go
│   │   │       └── trinosql.go
│   │   ├── utility
│   │   │   └── wait
│   │   │       ├── wait_test.go
│   │   │       └── wait.go
│   │   ├── valkey
│   │   │   ├── valkey_test.go
│   │   │   └── valkey.go
│   │   └── yugabytedbsql
│   │       ├── yugabytedbsql_test.go
│   │       └── yugabytedbsql.go
│   └── util
│       ├── orderedmap
│       │   ├── orderedmap_test.go
│       │   └── orderedmap.go
│       ├── parameters
│       │   ├── common_test.go
│       │   ├── common.go
│       │   ├── parameters_test.go
│       │   └── parameters.go
│       └── util.go
├── LICENSE
├── logo.png
├── main.go
├── MCP-TOOLBOX-EXTENSION.md
├── README.md
├── server.json
└── tests
    ├── alloydb
    │   ├── alloydb_integration_test.go
    │   └── alloydb_wait_for_operation_test.go
    ├── alloydbainl
    │   └── alloydb_ai_nl_integration_test.go
    ├── alloydbpg
    │   └── alloydb_pg_integration_test.go
    ├── auth.go
    ├── bigquery
    │   └── bigquery_integration_test.go
    ├── bigtable
    │   └── bigtable_integration_test.go
    ├── cassandra
    │   └── cassandra_integration_test.go
    ├── clickhouse
    │   └── clickhouse_integration_test.go
    ├── cloudgda
    │   └── cloud_gda_integration_test.go
    ├── cloudhealthcare
    │   └── cloud_healthcare_integration_test.go
    ├── cloudmonitoring
    │   └── cloud_monitoring_integration_test.go
    ├── cloudsql
    │   ├── cloud_sql_clone_instance_test.go
    │   ├── cloud_sql_create_database_test.go
    │   ├── cloud_sql_create_users_test.go
    │   ├── cloud_sql_get_instances_test.go
    │   ├── cloud_sql_list_databases_test.go
    │   ├── cloudsql_list_instances_test.go
    │   └── cloudsql_wait_for_operation_test.go
    ├── cloudsqlmssql
    │   ├── cloud_sql_mssql_create_instance_integration_test.go
    │   └── cloud_sql_mssql_integration_test.go
    ├── cloudsqlmysql
    │   ├── cloud_sql_mysql_create_instance_integration_test.go
    │   └── cloud_sql_mysql_integration_test.go
    ├── cloudsqlpg
    │   ├── cloud_sql_pg_create_instances_test.go
    │   ├── cloud_sql_pg_integration_test.go
    │   └── cloud_sql_pg_upgrade_precheck_test.go
    ├── common.go
    ├── couchbase
    │   └── couchbase_integration_test.go
    ├── dataform
    │   └── dataform_integration_test.go
    ├── dataplex
    │   └── dataplex_integration_test.go
    ├── dgraph
    │   └── dgraph_integration_test.go
    ├── elasticsearch
    │   └── elasticsearch_integration_test.go
    ├── firebird
    │   └── firebird_integration_test.go
    ├── firestore
    │   └── firestore_integration_test.go
    ├── http
    │   └── http_integration_test.go
    ├── looker
    │   └── looker_integration_test.go
    ├── mariadb
    │   └── mariadb_integration_test.go
    ├── mindsdb
    │   └── mindsdb_integration_test.go
    ├── mongodb
    │   └── mongodb_integration_test.go
    ├── mssql
    │   └── mssql_integration_test.go
    ├── mysql
    │   └── mysql_integration_test.go
    ├── neo4j
    │   └── neo4j_integration_test.go
    ├── oceanbase
    │   └── oceanbase_integration_test.go
    ├── option.go
    ├── oracle
    │   └── oracle_integration_test.go
    ├── postgres
    │   └── postgres_integration_test.go
    ├── prompts
    │   └── custom
    │       └── prompts_integration_test.go
    ├── redis
    │   └── redis_test.go
    ├── server.go
    ├── serverlessspark
    │   └── serverless_spark_integration_test.go
    ├── singlestore
    │   └── singlestore_integration_test.go
    ├── snowflake
    │   └── snowflake_integration_test.go
    ├── source.go
    ├── spanner
    │   └── spanner_integration_test.go
    ├── sqlite
    │   └── sqlite_integration_test.go
    ├── tidb
    │   └── tidb_integration_test.go
    ├── tool.go
    ├── trino
    │   └── trino_integration_test.go
    ├── utility
    │   └── wait_integration_test.go
    ├── valkey
    │   └── valkey_test.go
    └── yugabytedb
        └── yugabytedb_integration_test.go
```

# Files

--------------------------------------------------------------------------------
/docs/en/resources/sources/_index.md:
--------------------------------------------------------------------------------

```markdown
 1 | ---
 2 | title: "Sources"
 3 | type: docs
 4 | weight: 1
 5 | description: > 
 6 |   Sources represent your different data sources that a tool can interact with.
 7 | ---
 8 | 
 9 | A Source represents a data sources that a tool can interact with. You can define
10 | Sources as a map in the `sources` section of your `tools.yaml` file. Typically,
11 | a source configuration will contain any information needed to connect with and
12 | interact with the database.
13 | 
14 | {{< notice tip >}}
15 | Use environment variable replacement with the format ${ENV_NAME}
16 | instead of hardcoding your secrets into the configuration file.
17 | {{< /notice >}}
18 | 
19 | ```yaml
20 | sources:
21 |     my-cloud-sql-source:
22 |         kind: cloud-sql-postgres
23 |         project: my-project-id
24 |         region: us-central1
25 |         instance: my-instance-name
26 |         database: my_db
27 |         user: ${USER_NAME}
28 |         password: ${PASSWORD}
29 | ```
30 | 
31 | In implementation, each source is a different connection pool or client that used
32 | to connect to the database and execute the tool.
33 | 
34 | ## Available Sources
35 | 
```

--------------------------------------------------------------------------------
/internal/server/mcp/jsonrpc/jsonrpc_test.go:
--------------------------------------------------------------------------------

```go
 1 | // Copyright 2025 Google LLC
 2 | //
 3 | // Licensed under the Apache License, Version 2.0 (the "License");
 4 | // you may not use this file except in compliance with the License.
 5 | // You may obtain a copy of the License at
 6 | //
 7 | //     http://www.apache.org/licenses/LICENSE-2.0
 8 | //
 9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 | 
15 | package jsonrpc
16 | 
17 | import (
18 | 	"reflect"
19 | 	"testing"
20 | )
21 | 
22 | func TestNewError(t *testing.T) {
23 | 	var id interface{} = "foo"
24 | 	code := 111
25 | 	message := "foo bar"
26 | 	want := JSONRPCError{
27 | 		Jsonrpc: "2.0",
28 | 		Id:      "foo",
29 | 		Error: Error{
30 | 			Code:    111,
31 | 			Message: "foo bar",
32 | 		},
33 | 	}
34 | 
35 | 	got := NewError(id, code, message, nil)
36 | 	if !reflect.DeepEqual(want, got) {
37 | 		t.Fatalf("unexpected error: got %+v, want %+v", got, want)
38 | 	}
39 | }
40 | 
```

--------------------------------------------------------------------------------
/internal/prebuiltconfigs/tools/elasticsearch.yaml:
--------------------------------------------------------------------------------

```yaml
 1 | # Copyright 2025 Google LLC
 2 | #
 3 | # Licensed under the Apache License, Version 2.0 (the "License");
 4 | # you may not use this file except in compliance with the License.
 5 | # You may obtain a copy of the License at
 6 | #
 7 | #     http://www.apache.org/licenses/LICENSE-2.0
 8 | #
 9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 | 
15 | sources:
16 |   elasticsearch-source:
17 |     kind: elasticsearch
18 |     addresses:
19 |       - ${ELASTICSEARCH_HOST}
20 |     apikey: ${ELASTICSEARCH_APIKEY}
21 | 
22 | tools:
23 |   execute_esql_query:
24 |     kind: elasticsearch-esql
25 |     source: elasticsearch-source
26 |     description: Use this tool to execute ES|QL queries.
27 |     parameters:
28 |       - name: query
29 |         type: string
30 |         description: The ES|QL query to execute.
31 | toolsets:
32 |   elasticsearch-tools:
33 |     - execute_esql_query
34 | 
```

--------------------------------------------------------------------------------
/internal/auth/auth.go:
--------------------------------------------------------------------------------

```go
 1 | // Copyright 2024 Google LLC
 2 | //
 3 | // Licensed under the Apache License, Version 2.0 (the "License");
 4 | // you may not use this file except in compliance with the License.
 5 | // You may obtain a copy of the License at
 6 | //
 7 | //     http://www.apache.org/licenses/LICENSE-2.0
 8 | //
 9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 | 
15 | package auth
16 | 
17 | import (
18 | 	"context"
19 | 	"net/http"
20 | )
21 | 
22 | // AuthServiceConfig is the interface for configuring authentication services.
23 | type AuthServiceConfig interface {
24 | 	AuthServiceConfigKind() string
25 | 	Initialize() (AuthService, error)
26 | }
27 | 
28 | // AuthService is the interface for authentication services.
29 | type AuthService interface {
30 | 	AuthServiceKind() string
31 | 	GetName() string
32 | 	GetClaimsFromHeader(context.Context, http.Header) (map[string]any, error)
33 | 	ToConfig() AuthServiceConfig
34 | }
35 | 
```

--------------------------------------------------------------------------------
/internal/prebuiltconfigs/tools/neo4j.yaml:
--------------------------------------------------------------------------------

```yaml
 1 | # Copyright 2025 Google LLC
 2 | #
 3 | # Licensed under the Apache License, Version 2.0 (the "License");
 4 | # you may not use this file except in compliance with the License.
 5 | # You may obtain a copy of the License at
 6 | #
 7 | #     http://www.apache.org/licenses/LICENSE-2.0
 8 | #
 9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 | 
15 | sources:
16 |   neo4j-source:
17 |     kind: neo4j
18 |     uri: ${NEO4J_URI}
19 |     database: ${NEO4J_DATABASE}
20 |     user: ${NEO4J_USERNAME}
21 |     password: ${NEO4J_PASSWORD}
22 | 
23 | tools:
24 |   execute_cypher:
25 |     kind: neo4j-execute-cypher
26 |     source: neo4j-source
27 |     description: Use this tool to execute Cypher queries.
28 | 
29 |   get_schema:
30 |     kind: neo4j-schema
31 |     source: neo4j-source
32 |     description: Use this tool to get the database schema.
33 | 
34 | toolsets:
35 |   neo4j_database_tools:
36 |     - execute_cypher
37 |     - get_schema
38 | 
```

--------------------------------------------------------------------------------
/docs/en/resources/sources/mongodb.md:
--------------------------------------------------------------------------------

```markdown
 1 | ---
 2 | title: "MongoDB"
 3 | type: docs
 4 | weight: 1
 5 | description: >
 6 |   MongoDB is a no-sql data platform that can not only serve general purpose data requirements also perform VectorSearch where both operational data and embeddings used of search can reside in same document.
 7 | 
 8 | ---
 9 | 
10 | ## About
11 | 
12 | [MongoDB][mongodb-docs] is a popular NoSQL database that stores data in
13 | flexible, JSON-like documents, making it easy to develop and scale applications.
14 | 
15 | [mongodb-docs]: https://www.mongodb.com/docs/atlas/getting-started/
16 | 
17 | ## Example
18 | 
19 | ```yaml
20 | sources:
21 |     my-mongodb:
22 |         kind: mongodb
23 |         uri: "mongodb+srv://username:[email protected]"       
24 | 
25 | ```
26 | 
27 | ## Reference
28 | 
29 | | **field** | **type** | **required** | **description**                                                   |
30 | |-----------|:--------:|:------------:|-------------------------------------------------------------------|
31 | | kind      |  string  |     true     | Must be "mongodb".                                                |
32 | | uri       |  string  |     true     | connection string to connect to MongoDB                           |
33 | 
```

--------------------------------------------------------------------------------
/.github/workflows/sync-labels.yaml:
--------------------------------------------------------------------------------

```yaml
 1 | # Copyright 2024 Google LLC
 2 | #
 3 | # Licensed under the Apache License, Version 2.0 (the "License");
 4 | # you may not use this file except in compliance with the License.
 5 | # You may obtain a copy of the License at
 6 | #
 7 | #      http://www.apache.org/licenses/LICENSE-2.0
 8 | #
 9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 | 
15 | name: Sync Labels
16 | on:
17 |   push:
18 |     branches:
19 |       - main
20 | 
21 | # Declare default permissions as read only.
22 | permissions: read-all
23 | 
24 | jobs:
25 |   build:
26 |     runs-on: ubuntu-latest
27 |     permissions:
28 |       contents: 'read'
29 |       issues: 'write'
30 |       pull-requests: 'write'
31 |     steps:
32 |       - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
33 |       - uses: micnncim/action-label-syncer@3abd5ab72fda571e69fffd97bd4e0033dd5f495c # v1.3.0
34 |         env:
35 |           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
36 |         with:
37 |           manifest: .github/labels.yaml
38 | 
```

--------------------------------------------------------------------------------
/internal/sources/ip_type.go:
--------------------------------------------------------------------------------

```go
 1 | // Copyright 2024 Google LLC
 2 | //
 3 | // Licensed under the Apache License, Version 2.0 (the "License");
 4 | // you may not use this file except in compliance with the License.
 5 | // You may obtain a copy of the License at
 6 | //
 7 | //     http://www.apache.org/licenses/LICENSE-2.0
 8 | //
 9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 | 
15 | package sources
16 | 
17 | import (
18 | 	"context"
19 | 	"fmt"
20 | 	"strings"
21 | )
22 | 
23 | type IPType string
24 | 
25 | func (i *IPType) String() string {
26 | 	if string(*i) != "" {
27 | 		return strings.ToLower(string(*i))
28 | 	}
29 | 	return "public"
30 | }
31 | 
32 | func (i *IPType) UnmarshalYAML(ctx context.Context, unmarshal func(interface{}) error) error {
33 | 	var ipType string
34 | 	if err := unmarshal(&ipType); err != nil {
35 | 		return err
36 | 	}
37 | 	switch strings.ToLower(ipType) {
38 | 	case "private", "public", "psc":
39 | 		*i = IPType(strings.ToLower(ipType))
40 | 		return nil
41 | 	default:
42 | 		return fmt.Errorf(`ipType invalid: must be one of "public", "private", or "psc"`)
43 | 	}
44 | }
45 | 
```

--------------------------------------------------------------------------------
/internal/server/static/tools.html:
--------------------------------------------------------------------------------

```html
 1 | <!DOCTYPE html>
 2 | <html lang="en">
 3 | <head>
 4 |     <meta charset="UTF-8">
 5 |     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 6 |     <title>Tools View</title>
 7 |     <link rel="stylesheet" href="/ui/css/style.css">
 8 |     <script src="https://accounts.google.com/gsi/client" async defer></script>
 9 | </head>
10 | <body>
11 |     <div id="navbar-container" data-active-nav="/ui/tools"></div>
12 | 
13 |     <aside class="second-nav">
14 |         <h4>My Tools</h4>
15 |         <div id="secondary-panel-content">
16 |             <p>Fetching tools...</p>
17 |         </div>
18 |     </aside>
19 | 
20 |     <div id="main-content-container"></div>
21 | 
22 |     <script type="module" src="/ui/js/tools.js"></script>
23 |     <script src="/ui/js/navbar.js"></script>
24 |     <script src="/ui/js/mainContent.js"></script>
25 |     <script>
26 |         document.addEventListener('DOMContentLoaded', () => {
27 |             const navbarContainer = document.getElementById('navbar-container');
28 |             const activeNav = navbarContainer.getAttribute('data-active-nav');
29 |             renderNavbar('navbar-container', activeNav);
30 |             renderMainContent('main-content-container', 'tool-display-area', getToolInstructions())
31 |         });
32 |     </script>
33 | </body>
34 | </html>
```

--------------------------------------------------------------------------------
/internal/tools/serverlessspark/serverlesssparkcreatesparkbatch/serverlesssparkcreatesparkbatch_test.go:
--------------------------------------------------------------------------------

```go
 1 | // Copyright 2025 Google LLC
 2 | //
 3 | // Licensed under the Apache License, Version 2.0 (the "License");
 4 | // you may not use this file except in compliance with the License.
 5 | // You may obtain a copy of the License at
 6 | //
 7 | //      http://www.apache.org/licenses/LICENSE-2.0
 8 | //
 9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 | 
15 | package serverlesssparkcreatesparkbatch_test
16 | 
17 | import (
18 | 	"testing"
19 | 
20 | 	"github.com/googleapis/genai-toolbox/internal/tools"
21 | 	"github.com/googleapis/genai-toolbox/internal/tools/serverlessspark/createbatch"
22 | 	"github.com/googleapis/genai-toolbox/internal/tools/serverlessspark/serverlesssparkcreatesparkbatch"
23 | 	"github.com/googleapis/genai-toolbox/internal/tools/serverlessspark/testutils"
24 | )
25 | 
26 | func TestParseFromYaml(t *testing.T) {
27 | 	testutils.RunParseFromYAMLTests(t, "serverless-spark-create-spark-batch", func(c createbatch.Config) tools.ToolConfig {
28 | 		return serverlesssparkcreatesparkbatch.Config{Config: c}
29 | 	})
30 | }
31 | 
```

--------------------------------------------------------------------------------
/internal/tools/serverlessspark/serverlesssparkcreatepysparkbatch/serverlesssparkcreatepysparkbatch_test.go:
--------------------------------------------------------------------------------

```go
 1 | // Copyright 2025 Google LLC
 2 | //
 3 | // Licensed under the Apache License, Version 2.0 (the "License");
 4 | // you may not- use this file except in compliance with the License.
 5 | // You may obtain a copy of the License at
 6 | //
 7 | //      http://www.apache.org/licenses/LICENSE-2.0
 8 | //
 9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 | 
15 | package serverlesssparkcreatepysparkbatch_test
16 | 
17 | import (
18 | 	"testing"
19 | 
20 | 	"github.com/googleapis/genai-toolbox/internal/tools"
21 | 	"github.com/googleapis/genai-toolbox/internal/tools/serverlessspark/createbatch"
22 | 	"github.com/googleapis/genai-toolbox/internal/tools/serverlessspark/serverlesssparkcreatepysparkbatch"
23 | 	"github.com/googleapis/genai-toolbox/internal/tools/serverlessspark/testutils"
24 | )
25 | 
26 | func TestParseFromYaml(t *testing.T) {
27 | 	testutils.RunParseFromYAMLTests(t, "serverless-spark-create-pyspark-batch", func(c createbatch.Config) tools.ToolConfig {
28 | 		return serverlesssparkcreatepysparkbatch.Config{Config: c}
29 | 	})
30 | }
31 | 
```

--------------------------------------------------------------------------------
/internal/log/logger.go:
--------------------------------------------------------------------------------

```go
 1 | // Copyright 2024 Google LLC
 2 | //
 3 | // Licensed under the Apache License, Version 2.0 (the "License");
 4 | // you may not use this file except in compliance with the License.
 5 | // You may obtain a copy of the License at
 6 | //
 7 | //     http://www.apache.org/licenses/LICENSE-2.0
 8 | //
 9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 | 
15 | package log
16 | 
17 | import (
18 | 	"context"
19 | )
20 | 
21 | // Logger is the interface used throughout the project for logging.
22 | type Logger interface {
23 | 	// DebugContext is for reporting additional information about internal operations.
24 | 	DebugContext(ctx context.Context, format string, args ...interface{})
25 | 	// InfoContext is for reporting informational messages.
26 | 	InfoContext(ctx context.Context, format string, args ...interface{})
27 | 	// WarnContext is for reporting warning messages.
28 | 	WarnContext(ctx context.Context, format string, args ...interface{})
29 | 	// ErrorContext is for reporting errors.
30 | 	ErrorContext(ctx context.Context, format string, args ...interface{})
31 | }
32 | 
```

--------------------------------------------------------------------------------
/internal/sources/dialect.go:
--------------------------------------------------------------------------------

```go
 1 | // Copyright 2024 Google LLC
 2 | //
 3 | // Licensed under the Apache License, Version 2.0 (the "License");
 4 | // you may not use this file except in compliance with the License.
 5 | // You may obtain a copy of the License at
 6 | //
 7 | //     http://www.apache.org/licenses/LICENSE-2.0
 8 | //
 9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 | 
15 | package sources
16 | 
17 | import (
18 | 	"context"
19 | 	"fmt"
20 | 	"strings"
21 | )
22 | 
23 | // Dialect represents the dialect type of a database.
24 | type Dialect string
25 | 
26 | func (i *Dialect) String() string {
27 | 	if string(*i) != "" {
28 | 		return strings.ToLower(string(*i))
29 | 	}
30 | 	return "googlesql"
31 | }
32 | 
33 | func (i *Dialect) UnmarshalYAML(ctx context.Context, unmarshal func(interface{}) error) error {
34 | 	var dialect string
35 | 	if err := unmarshal(&dialect); err != nil {
36 | 		return err
37 | 	}
38 | 	switch strings.ToLower(dialect) {
39 | 	case "googlesql", "postgresql":
40 | 		*i = Dialect(strings.ToLower(dialect))
41 | 		return nil
42 | 	default:
43 | 		return fmt.Errorf(`dialect invalid: must be one of "googlesql", or "postgresql"`)
44 | 	}
45 | }
46 | 
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/tidb/tidb-execute-sql.md:
--------------------------------------------------------------------------------

```markdown
 1 | ---
 2 | title: "tidb-execute-sql"
 3 | type: docs
 4 | weight: 1
 5 | description: > 
 6 |   A "tidb-execute-sql" tool executes a SQL statement against a TiDB
 7 |   database.
 8 | aliases:
 9 | - /resources/tools/tidb-execute-sql
10 | ---
11 | 
12 | ## About
13 | 
14 | A `tidb-execute-sql` tool executes a SQL statement against a TiDB
15 | database. It's compatible with the following source:
16 | 
17 | - [tidb](../../sources/tidb.md)
18 | 
19 | `tidb-execute-sql` takes one input parameter `sql` and run the sql
20 | statement against the `source`.
21 | 
22 | > **Note:** This tool is intended for developer assistant workflows with
23 | > human-in-the-loop and shouldn't be used for production agents.
24 | 
25 | ## Example
26 | 
27 | ```yaml
28 | tools:
29 |  execute_sql_tool:
30 |     kind: tidb-execute-sql
31 |     source: my-tidb-instance
32 |     description: Use this tool to execute sql statement.
33 | ```
34 | 
35 | ## Reference
36 | 
37 | | **field**   | **type** | **required** | **description**                                    |
38 | |-------------|:--------:|:------------:|----------------------------------------------------|
39 | | kind        |  string  |     true     | Must be "tidb-execute-sql".                        |
40 | | source      |  string  |     true     | Name of the source the SQL should execute on.      |
41 | | description |  string  |     true     | Description of the tool that is passed to the LLM. |
42 | 
```

--------------------------------------------------------------------------------
/internal/server/static/js/tools.js:
--------------------------------------------------------------------------------

```javascript
 1 | // Copyright 2025 Google LLC
 2 | //
 3 | // Licensed under the Apache License, Version 2.0 (the "License");
 4 | // you may not use this file except in compliance with the License.
 5 | // You may obtain a copy of the License at
 6 | //
 7 | //     http://www.apache.org/licenses/LICENSE-2.0
 8 | //
 9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 | 
15 | import { loadTools } from "./loadTools.js";
16 | 
17 | /**
18 |  * These functions runs after the browser finishes loading and parsing HTML structure.
19 |  * This ensures that elements can be safely accessed.
20 |  */
21 | document.addEventListener('DOMContentLoaded', () => {
22 |     const toolDisplayArea = document.getElementById('tool-display-area');
23 |     const secondaryPanelContent = document.getElementById('secondary-panel-content');
24 |     const DEFAULT_TOOLSET = ""; // will return all toolsets
25 | 
26 |     if (!secondaryPanelContent || !toolDisplayArea) {
27 |         console.error('Required DOM elements not found.');
28 |         return;
29 |     }
30 | 
31 |     loadTools(secondaryPanelContent, toolDisplayArea, DEFAULT_TOOLSET);
32 | });
33 | 
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/utility/wait.md:
--------------------------------------------------------------------------------

```markdown
 1 | ---
 2 | title: "wait"
 3 | type: docs
 4 | weight: 1
 5 | description: > 
 6 |   A "wait" tool pauses execution for a specified duration.
 7 | aliases:
 8 | - /resources/tools/utility/wait
 9 | ---
10 | 
11 | ## About
12 | 
13 | A `wait` tool pauses execution for a specified duration. This can be useful in
14 | workflows where a delay is needed between steps.
15 | 
16 | `wait` takes one input parameter `duration` which is a string representing the
17 | time to wait (e.g., "10s", "2m", "1h").
18 | 
19 | {{< notice info >}}
20 | This tool is intended for developer assistant workflows with human-in-the-loop
21 | and shouldn't be used for production agents.
22 | {{< /notice >}}
23 | 
24 | ## Example
25 | 
26 | ```yaml
27 | tools:
28 |   wait_for_tool:
29 |     kind: wait
30 |     description: Use this tool to pause execution for a specified duration.
31 |     timeout: 30s
32 | ```
33 | 
34 | ## Reference
35 | 
36 | | **field**   |    **type**    | **required** | **description**                                       |
37 | |-------------|:--------------:|:------------:|-------------------------------------------------------|
38 | | kind        |     string     |     true     | Must be "wait".                                       |
39 | | description |     string     |     true     | Description of the tool that is passed to the LLM.    |
40 | | timeout     |     string     |     true     | The default duration the tool can wait for.           |
41 | 
```

--------------------------------------------------------------------------------
/internal/prebuiltconfigs/tools/dataplex.yaml:
--------------------------------------------------------------------------------

```yaml
 1 | # Copyright 2025 Google LLC
 2 | #
 3 | # Licensed under the Apache License, Version 2.0 (the "License");
 4 | # you may not use this file except in compliance with the License.
 5 | # You may obtain a copy of the License at
 6 | #
 7 | #     http://www.apache.org/licenses/LICENSE-2.0
 8 | #
 9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 | 
15 | sources:
16 |   dataplex-source:
17 |     kind: "dataplex"
18 |     project: ${DATAPLEX_PROJECT}
19 | 
20 | tools:
21 |   search_entries:
22 |     kind: dataplex-search-entries
23 |     source: dataplex-source
24 |     description: Use this tool to search for entries in Dataplex Catalog based on the provided search query.
25 |   lookup_entry:
26 |     kind: dataplex-lookup-entry
27 |     source: dataplex-source
28 |     description: Use this tool to retrieve a specific entry from Dataplex Catalog.
29 |   search_aspect_types:
30 |     kind: dataplex-search-aspect-types
31 |     source: dataplex-source
32 |     description: Use this tool to find aspect types relevant to the query.
33 | 
34 | toolsets:
35 |   dataplex_tools:
36 |     - search_entries
37 |     - lookup_entry
38 |     - search_aspect_types
39 | 
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/cloudhealthcare/cloud-healthcare-list-fhir-stores.md:
--------------------------------------------------------------------------------

```markdown
 1 | ---
 2 | title: "cloud-healthcare-list-fhir-stores"
 3 | type: docs
 4 | weight: 1
 5 | description: >
 6 |   A "cloud-healthcare-list-fhir-stores" lists the available FHIR stores in the healthcare dataset.
 7 | aliases:
 8 | - /resources/tools/cloud-healthcare-list-fhir-stores
 9 | ---
10 | 
11 | ## About
12 | 
13 | A `cloud-healthcare-list-fhir-stores` lists the available FHIR stores in the
14 | healthcare dataset.
15 | It's compatible with the following sources:
16 | 
17 | - [cloud-healthcare](../../sources/cloud-healthcare.md)
18 | 
19 | `cloud-healthcare-list-fhir-stores` returns the details of the available FHIR
20 | stores in the dataset of the healthcare source. It takes no extra parameters.
21 | 
22 | ## Example
23 | 
24 | ```yaml
25 | tools:
26 |   list_fhir_stores:
27 |     kind: cloud-healthcare-list-fhir-stores
28 |     source: my-healthcare-source
29 |     description: Use this tool to list FHIR stores in the healthcare dataset.
30 | ```
31 | 
32 | ## Reference
33 | 
34 | | **field**   | **type** | **required** | **description**                                    |
35 | |-------------|:--------:|:------------:|----------------------------------------------------|
36 | | kind        |  string  |     true     | Must be "cloud-healthcare-list-fhir-stores".       |
37 | | source      |  string  |     true     | Name of the healthcare source.                     |
38 | | description |  string  |     true     | Description of the tool that is passed to the LLM. |
39 | 
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/oceanbase/oceanbase-execute-sql.md:
--------------------------------------------------------------------------------

```markdown
 1 | ---
 2 | title: "oceanbase-execute-sql"
 3 | type: docs
 4 | weight: 1
 5 | description: > 
 6 |   An "oceanbase-execute-sql" tool executes a SQL statement against an OceanBase database.
 7 | aliases:
 8 | - /resources/tools/oceanbase-execute-sql
 9 | ---
10 | 
11 | ## About
12 | 
13 | An `oceanbase-execute-sql` tool executes a SQL statement against an OceanBase
14 | database. It's compatible with the following source:
15 | 
16 | - [oceanbase](../../sources/oceanbase.md)
17 | 
18 | `oceanbase-execute-sql` takes one input parameter `sql` and runs the sql
19 | statement against the `source`.
20 | 
21 | > **Note:** This tool is intended for developer assistant workflows with
22 | > human-in-the-loop and shouldn't be used for production agents.
23 | 
24 | ## Example
25 | 
26 | ```yaml
27 | tools:
28 |   execute_sql_tool:
29 |     kind: oceanbase-execute-sql
30 |     source: my-oceanbase-instance
31 |     description: Use this tool to execute sql statement.
32 | ```
33 | 
34 | ## Reference
35 | 
36 | | **field**   | **type** | **required** | **description**                                    |
37 | |-------------|:--------:|:------------:|----------------------------------------------------|
38 | | kind        |  string  |     true     | Must be "oceanbase-execute-sql".                   |
39 | | source      |  string  |     true     | Name of the source the SQL should execute on.      |
40 | | description |  string  |     true     | Description of the tool that is passed to the LLM. |
41 | 
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/singlestore/singlestore-execute-sql.md:
--------------------------------------------------------------------------------

```markdown
 1 | ---
 2 | title: "singlestore-execute-sql"
 3 | type: docs
 4 | weight: 1
 5 | description: >
 6 |   A "singlestore-execute-sql" tool executes a SQL statement against a SingleStore
 7 |   database.
 8 | aliases:
 9 | - /resources/tools/singlestore-execute-sql
10 | ---
11 | 
12 | ## About
13 | 
14 | A `singlestore-execute-sql` tool executes a SQL statement against a SingleStore
15 | database. It's compatible with the following sources:
16 | 
17 | - [singlestore](../../sources/singlestore.md)
18 | 
19 | `singlestore-execute-sql` takes one input parameter `sql` and runs the sql
20 | statement against the `source`.
21 | 
22 | > **Note:** This tool is intended for developer assistant workflows with
23 | > human-in-the-loop and shouldn't be used for production agents.
24 | 
25 | ## Example
26 | 
27 | ```yaml
28 | tools:
29 |  execute_sql_tool:
30 |     kind: singlestore-execute-sql
31 |     source: my-s2-instance
32 |     description: Use this tool to execute sql statement
33 | ```
34 | 
35 | ## Reference
36 | 
37 | | **field**   | **type** | **required** | **description**                                    |
38 | |-------------|:--------:|:------------:|----------------------------------------------------|
39 | | kind        |  string  |     true     | Must be "singlestore-execute-sql".                 |
40 | | source      |  string  |     true     | Name of the source the SQL should execute on.      |
41 | | description |  string  |     true     | Description of the tool that is passed to the LLM. |
42 | 
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/cloudhealthcare/cloud-healthcare-list-dicom-stores.md:
--------------------------------------------------------------------------------

```markdown
 1 | ---
 2 | title: "cloud-healthcare-list-dicom-stores"
 3 | type: docs
 4 | weight: 1
 5 | description: >
 6 |   A "cloud-healthcare-list-dicom-stores" lists the available DICOM stores in the healthcare dataset.
 7 | aliases:
 8 | - /resources/tools/cloud-healthcare-list-dicom-stores
 9 | ---
10 | 
11 | ## About
12 | 
13 | A `cloud-healthcare-list-dicom-stores` lists the available DICOM stores in the
14 | healthcare dataset.
15 | It's compatible with the following sources:
16 | 
17 | - [cloud-healthcare](../../sources/cloud-healthcare.md)
18 | 
19 | `cloud-healthcare-list-dicom-stores` returns the details of the available DICOM
20 | stores in the dataset of the healthcare source. It takes no extra parameters.
21 | 
22 | ## Example
23 | 
24 | ```yaml
25 | tools:
26 |   list_dicom_stores:
27 |     kind: cloud-healthcare-list-dicom-stores
28 |     source: my-healthcare-source
29 |     description: Use this tool to list DICOM stores in the healthcare dataset.
30 | ```
31 | 
32 | ## Reference
33 | 
34 | | **field**   | **type** | **required** | **description**                                    |
35 | |-------------|:--------:|:------------:|----------------------------------------------------|
36 | | kind        |  string  |     true     | Must be "cloud-healthcare-list-dicom-stores".      |
37 | | source      |  string  |     true     | Name of the healthcare source.                     |
38 | | description |  string  |     true     | Description of the tool that is passed to the LLM. |
39 | 
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/firebird/firebird-execute-sql.md:
--------------------------------------------------------------------------------

```markdown
 1 | ---
 2 | title: "firebird-execute-sql"
 3 | type: docs
 4 | weight: 1
 5 | description: > 
 6 |   A "firebird-execute-sql" tool executes a SQL statement against a Firebird
 7 |   database.
 8 | aliases:
 9 | - /resources/tools/firebird-execute-sql
10 | ---
11 | 
12 | ## About
13 | 
14 | A `firebird-execute-sql` tool executes a SQL statement against a Firebird
15 | database. It's compatible with the following source:
16 | 
17 | - [firebird](../../sources/firebird.md)
18 | 
19 | `firebird-execute-sql` takes one input parameter `sql` and runs the sql
20 | statement against the `source`.
21 | 
22 | > **Note:** This tool is intended for developer assistant workflows with
23 | > human-in-the-loop and shouldn't be used for production agents.
24 | 
25 | ## Example
26 | 
27 | ```yaml
28 | tools:
29 |   execute_sql_tool:
30 |     kind: firebird-execute-sql
31 |     source: my_firebird_db
32 |     description: Use this tool to execute a SQL statement against the Firebird database.
33 | ```
34 | 
35 | ## Reference
36 | 
37 | | **field**   | **type** | **required** | **description**                                    |
38 | |-------------|:--------:|:------------:|----------------------------------------------------|
39 | | kind        |  string  |     true     | Must be "firebird-execute-sql".                    |
40 | | source      |  string  |     true     | Name of the source the SQL should execute on.      |
41 | | description |  string  |     true     | Description of the tool that is passed to the LLM. |
42 | 
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/cloudsql/cloudsqlcreateusers.md:
--------------------------------------------------------------------------------

```markdown
 1 | ---
 2 | title: cloud-sql-create-users
 3 | type: docs
 4 | weight: 10
 5 | description: >
 6 |   Create a new user in a Cloud SQL instance.
 7 | ---
 8 | 
 9 | The `cloud-sql-create-users` tool creates a new user in a specified Cloud SQL
10 | instance. It can create both built-in and IAM users.
11 | 
12 | {{< notice info >}}
13 | This tool uses a `source` of kind `cloud-sql-admin`.
14 | {{< /notice >}}
15 | 
16 | ## Example
17 | 
18 | ```yaml
19 | tools:
20 |   create-cloud-sql-user:
21 |     kind: cloud-sql-create-users
22 |     source: my-cloud-sql-admin-source
23 |     description: "Creates a new user in a Cloud SQL instance. Both built-in and IAM users are supported. IAM users require an email account as the user name. IAM is the more secure and recommended way to manage users. The agent should always ask the user what type of user they want to create. For more information, see https://cloud.google.com/sql/docs/postgres/add-manage-iam-users"
24 | ```
25 | 
26 | ## Reference
27 | 
28 | | **field**    |  **type** | **required** | **description**                                  |
29 | | ------------ | :-------: | :----------: | ------------------------------------------------ |
30 | | kind         |   string  |     true     | Must be "cloud-sql-create-users".                |
31 | | description  |   string  |     false    | A description of the tool.                       |
32 | | source       |   string  |     true     | The name of the `cloud-sql-admin` source to use. |
33 | 
```

--------------------------------------------------------------------------------
/internal/prebuiltconfigs/tools/serverless-spark.yaml:
--------------------------------------------------------------------------------

```yaml
 1 | # Copyright 2025 Google LLC
 2 | #
 3 | # Licensed under the Apache License, Version 2.0 (the "License");
 4 | # you may not use this file except in compliance with the License.
 5 | # You may obtain a copy of the License at
 6 | #
 7 | #     http://www.apache.org/licenses/LICENSE-2.0
 8 | #
 9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 | 
15 | sources:
16 |   serverless-spark-source:
17 |     kind: serverless-spark
18 |     project: ${SERVERLESS_SPARK_PROJECT}
19 |     location: ${SERVERLESS_SPARK_LOCATION}
20 | 
21 | tools:
22 |   list_batches:
23 |     kind: serverless-spark-list-batches
24 |     source: serverless-spark-source
25 |   get_batch:
26 |     kind: serverless-spark-get-batch
27 |     source: serverless-spark-source
28 |   cancel_batch:
29 |     kind: serverless-spark-cancel-batch
30 |     source: serverless-spark-source
31 |   create_pyspark_batch:
32 |     kind: serverless-spark-create-pyspark-batch
33 |     source: serverless-spark-source
34 |   create_spark_batch:
35 |     kind: serverless-spark-create-spark-batch
36 |     source: serverless-spark-source
37 | 
38 | toolsets:
39 |   serverless_spark_tools:
40 |     - list_batches
41 |     - get_batch
42 |     - cancel_batch
43 |     - create_pyspark_batch
44 |     - create_spark_batch
45 | 
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/sqlite/sqlite-execute-sql.md:
--------------------------------------------------------------------------------

```markdown
 1 | ---
 2 | title: "sqlite-execute-sql"
 3 | type: docs
 4 | weight: 1
 5 | description: >
 6 |   A "sqlite-execute-sql" tool executes a single SQL statement against a SQLite database.
 7 | aliases:
 8 | - /resources/tools/sqlite-execute-sql
 9 | ---
10 | 
11 | ## About
12 | 
13 | A `sqlite-execute-sql` tool executes a single SQL statement against a SQLite
14 | database. It's compatible with any of the following sources:
15 | 
16 | - [sqlite](../../sources/sqlite.md)
17 | 
18 | This tool is designed for direct execution of SQL statements. It takes a single
19 | `sql` input parameter and runs the SQL statement against the configured SQLite
20 | `source`.
21 | 
22 | > **Note:** This tool is intended for developer assistant workflows with
23 | > human-in-the-loop and shouldn't be used for production agents.
24 | 
25 | ## Example
26 | 
27 | ```yaml
28 | tools:
29 |  execute_sql_tool:
30 |     kind: sqlite-execute-sql
31 |     source: my-sqlite-db
32 |     description: Use this tool to execute a SQL statement.
33 | ```
34 | 
35 | ## Reference
36 | 
37 | | **field**   | **type** | **required** | **description**                                    |
38 | |-------------|:--------:|:------------:|----------------------------------------------------|
39 | | kind        |  string  |     true     | Must be "sqlite-execute-sql".                      |
40 | | source      |  string  |     true     | Name of the source the SQL should execute on.      |
41 | | description |  string  |     true     | Description of the tool that is passed to the LLM. |
42 | 
```

--------------------------------------------------------------------------------
/internal/prebuiltconfigs/tools/mssql.yaml:
--------------------------------------------------------------------------------

```yaml
 1 | # Copyright 2025 Google LLC
 2 | #
 3 | # Licensed under the Apache License, Version 2.0 (the "License");
 4 | # you may not use this file except in compliance with the License.
 5 | # You may obtain a copy of the License at
 6 | #
 7 | #     http://www.apache.org/licenses/LICENSE-2.0
 8 | #
 9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 | 
15 | sources:
16 |     mssql-source:
17 |       kind: mssql
18 |       host: ${MSSQL_HOST:localhost}
19 |       port: ${MSSQL_PORT:1433}
20 |       database: ${MSSQL_DATABASE}
21 |       user: ${MSSQL_USER}
22 |       password: ${MSSQL_PASSWORD}
23 | tools:
24 |     execute_sql:
25 |         kind: mssql-execute-sql
26 |         source: mssql-source
27 |         description: Use this tool to execute SQL.
28 | 
29 |     list_tables:
30 |         kind: mssql-list-tables
31 |         source: mssql-source
32 |         description: "Lists detailed schema information (object type, columns, constraints, indexes, triggers, comment) as JSON for user-created tables (ordinary or partitioned). Filters by a comma-separated list of names. If names are omitted, lists all tables in user schemas."
33 | 
34 | toolsets:
35 |     mssql_database_tools:
36 |         - execute_sql
37 |         - list_tables
38 | 
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/firestore/firestore-get-rules.md:
--------------------------------------------------------------------------------

```markdown
 1 | ---
 2 | title: "firestore-get-rules"
 3 | type: docs
 4 | weight: 1
 5 | description: >
 6 |   A "firestore-get-rules" tool retrieves the active Firestore security rules for the current project.
 7 | aliases:
 8 | - /resources/tools/firestore-get-rules
 9 | ---
10 | 
11 | ## About
12 | 
13 | A `firestore-get-rules` tool retrieves the active [Firestore security
14 | rules](https://firebase.google.com/docs/firestore/security/get-started) for the
15 | current project.
16 | It's compatible with the following sources:
17 | 
18 | - [firestore](../../sources/firestore.md)
19 | 
20 | `firestore-get-rules` takes no input parameters and returns the security rules
21 | content along with metadata such as the ruleset name, and timestamps.
22 | 
23 | ## Example
24 | 
25 | ```yaml
26 | tools:
27 |   get_firestore_rules:
28 |     kind: firestore-get-rules
29 |     source: my-firestore-source
30 |     description: Use this tool to retrieve the active Firestore security rules.
31 | ```
32 | 
33 | ## Reference
34 | 
35 | | **field**   |    **type**   | **required** | **description**                                       |
36 | |-------------|:-------------:|:------------:|-------------------------------------------------------|
37 | | kind        |     string    |     true     | Must be "firestore-get-rules".                        |
38 | | source      |     string    |     true     | Name of the Firestore source to retrieve rules from.  |
39 | | description |     string    |     true     | Description of the tool that is passed to the LLM.    |
40 | 
```

--------------------------------------------------------------------------------
/internal/prebuiltconfigs/tools/clickhouse.yaml:
--------------------------------------------------------------------------------

```yaml
 1 | # Copyright 2025 Google LLC
 2 | #
 3 | # Licensed under the Apache License, Version 2.0 (the "License");
 4 | # you may not use this file except in compliance with the License.
 5 | # You may obtain a copy of the License at
 6 | #
 7 | #     http://www.apache.org/licenses/LICENSE-2.0
 8 | #
 9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 | sources:
15 |   clickhouse-source:
16 |     kind: clickhouse
17 |     host: ${CLICKHOUSE_HOST}
18 |     port: ${CLICKHOUSE_PORT}
19 |     user: ${CLICKHOUSE_USER}
20 |     password: ${CLICKHOUSE_PASSWORD}
21 |     database: ${CLICKHOUSE_DATABASE}
22 |     protocol: ${CLICKHOUSE_PROTOCOL}
23 | 
24 | tools:
25 |   execute_sql:
26 |     kind: clickhouse-execute-sql
27 |     source: clickhouse-source
28 |     description: Use this tool to execute SQL.
29 | 
30 |   list_databases:
31 |     kind: clickhouse-list-databases
32 |     source: clickhouse-source
33 |     description: Use this tool to list all databases in ClickHouse.
34 | 
35 |   list_tables:
36 |     kind: clickhouse-list-tables
37 |     source: clickhouse-source
38 |     description: Use this tool to list all tables in a specific ClickHouse database.
39 | 
40 | toolsets:
41 |   clickhouse_database_tools:
42 |     - execute_sql
43 |     - list_databases
44 |     - list_tables
45 | 
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/looker/looker-run-look.md:
--------------------------------------------------------------------------------

```markdown
 1 | ---
 2 | title: "looker-run-look"
 3 | type: docs
 4 | weight: 1
 5 | description: >
 6 |   "looker-run-look" runs the query associated with a saved Look.
 7 | aliases:
 8 | - /resources/tools/looker-run-look
 9 | ---
10 | 
11 | ## About
12 | 
13 | The `looker-run-look` tool runs the query associated with a
14 | saved Look.
15 | 
16 | It's compatible with the following sources:
17 | 
18 | - [looker](../../sources/looker.md)
19 | 
20 | `looker-run-look` takes one parameter, the `look_id`.
21 | 
22 | ## Example
23 | 
24 | ```yaml
25 | tools:
26 |     run_look:
27 |         kind: looker-run-look
28 |         source: looker-source
29 |         description: |
30 |           This tool executes the query associated with a saved Look and
31 |           returns the resulting data in a JSON structure.
32 | 
33 |           Parameters:
34 |           - look_id (required): The unique identifier of the Look to run,
35 |             typically obtained from the `get_looks` tool.
36 | 
37 |           Output:
38 |           The query results are returned as a JSON object.
39 | ```
40 | 
41 | ## Reference
42 | 
43 | | **field**   | **type** | **required** | **description**                                    |
44 | |-------------|:--------:|:------------:|----------------------------------------------------|
45 | | kind        |  string  |     true     | Must be "looker-run-look"                          |
46 | | source      |  string  |     true     | Name of the source the SQL should execute on.      |
47 | | description |  string  |     true     | Description of the tool that is passed to the LLM. |
48 | 
```

--------------------------------------------------------------------------------
/docs/en/samples/snowflake/snowflake-env.sh:
--------------------------------------------------------------------------------

```bash
 1 | #!/bin/bash
 2 | 
 3 | # Snowflake Connection Configuration
 4 | # Copy this file to snowflake-env.sh and update with your actual values
 5 | # Then source it before running the toolbox: source snowflake-env.sh
 6 | 
 7 | # Required environment variables
 8 | export SNOWFLAKE_ACCOUNT="your-account-identifier"     # e.g., "xy12345.snowflakecomputing.com"
 9 | export SNOWFLAKE_USER="your-username"                  # Your Snowflake username
10 | export SNOWFLAKE_PASSWORD="your-password"              # Your Snowflake password
11 | export SNOWFLAKE_DATABASE="your-database"              # Database name
12 | export SNOWFLAKE_SCHEMA="your-schema"                  # Schema name (usually "PUBLIC")
13 | 
14 | # Optional environment variables (will use defaults if not set)
15 | export SNOWFLAKE_WAREHOUSE="COMPUTE_WH"                # Warehouse name (default: COMPUTE_WH)
16 | export SNOWFLAKE_ROLE="ACCOUNTADMIN"                   # Role name (default: ACCOUNTADMIN)
17 | 
18 | echo "Snowflake environment variables have been set!"
19 | echo "Account: $SNOWFLAKE_ACCOUNT"
20 | echo "User: $SNOWFLAKE_USER"
21 | echo "Database: $SNOWFLAKE_DATABASE"
22 | echo "Schema: $SNOWFLAKE_SCHEMA"
23 | echo "Warehouse: $SNOWFLAKE_WAREHOUSE"
24 | echo "Role: $SNOWFLAKE_ROLE"
25 | echo ""
26 | echo "You can now run the toolbox with:"
27 | echo "  ./toolbox --prebuilt snowflake                    # Use prebuilt configuration"
28 | echo "  ./toolbox --tools-file docs/en/samples/snowflake/snowflake-config.yaml  # Use custom configuration"
29 | 
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/looker/looker-get-models.md:
--------------------------------------------------------------------------------

```markdown
 1 | ---
 2 | title: "looker-get-models"
 3 | type: docs
 4 | weight: 1
 5 | description: >
 6 |   A "looker-get-models" tool returns all the models in the source.
 7 | aliases:
 8 | - /resources/tools/looker-get-models
 9 | ---
10 | 
11 | ## About
12 | 
13 | A `looker-get-models` tool returns all the models in the source.
14 | 
15 | It's compatible with the following sources:
16 | 
17 | - [looker](../../sources/looker.md)
18 | 
19 | `looker-get-models` accepts no parameters.
20 | 
21 | ## Example
22 | 
23 | ```yaml
24 | tools:
25 |     get_models:
26 |         kind: looker-get-models
27 |         source: looker-source
28 |         description: |
29 |           This tool retrieves a list of available LookML models in the Looker instance.
30 |           LookML models define the data structure and relationships that users can query.
31 |           The output includes details like the model's `name` and `label`, which are
32 |           essential for subsequent calls to tools like `get_explores` or `query`.
33 | 
34 |           This tool takes no parameters.
35 | ```
36 | 
37 | ## Reference
38 | 
39 | | **field**   | **type** | **required** | **description**                                    |
40 | |-------------|:--------:|:------------:|----------------------------------------------------|
41 | | kind        |  string  |     true     | Must be "looker-get-models".                       |
42 | | source      |  string  |     true     | Name of the source the SQL should execute on.      |
43 | | description |  string  |     true     | Description of the tool that is passed to the LLM. |
44 | 
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/firestore/firestore-get-documents.md:
--------------------------------------------------------------------------------

```markdown
 1 | ---
 2 | title: "firestore-get-documents"
 3 | type: docs
 4 | weight: 1
 5 | description: >
 6 |   A "firestore-get-documents" tool retrieves multiple documents from Firestore by their paths.
 7 | aliases:
 8 | - /resources/tools/firestore-get-documents
 9 | ---
10 | 
11 | ## About
12 | 
13 | A `firestore-get-documents` tool retrieves multiple documents from Firestore by
14 | their paths.
15 | It's compatible with the following sources:
16 | 
17 | - [firestore](../../sources/firestore.md)
18 | 
19 | `firestore-get-documents` takes one input parameter `documentPaths` which is an
20 | array of document paths, and returns the documents' data along with metadata
21 | such as existence status, creation time, update time, and read time.
22 | 
23 | ## Example
24 | 
25 | ```yaml
26 | tools:
27 |   get_user_documents:
28 |     kind: firestore-get-documents
29 |     source: my-firestore-source
30 |     description: Use this tool to retrieve multiple documents from Firestore.
31 | ```
32 | 
33 | ## Reference
34 | 
35 | | **field**   |    **type**    | **required** | **description**                                            |
36 | |-------------|:--------------:|:------------:|------------------------------------------------------------|
37 | | kind        |     string     |     true     | Must be "firestore-get-documents".                         |
38 | | source      |     string     |     true     | Name of the Firestore source to retrieve documents from.   |
39 | | description |     string     |     true     | Description of the tool that is passed to the LLM.         |
40 | 
```

--------------------------------------------------------------------------------
/tests/auth.go:
--------------------------------------------------------------------------------

```go
 1 | // Copyright 2024 Google LLC
 2 | //
 3 | // Licensed under the Apache License, Version 2.0 (the "License");
 4 | // you may not use this file except in compliance with the License.
 5 | // You may obtain a copy of the License at
 6 | //
 7 | //	http://www.apache.org/licenses/LICENSE-2.0
 8 | //
 9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 | 
15 | package tests
16 | 
17 | import (
18 | 	"context"
19 | 	"os"
20 | 	"os/exec"
21 | 	"strings"
22 | 
23 | 	"google.golang.org/api/idtoken"
24 | )
25 | 
26 | var ServiceAccountEmail = os.Getenv("SERVICE_ACCOUNT_EMAIL")
27 | var ClientId = os.Getenv("CLIENT_ID")
28 | 
29 | // GetGoogleIdToken retrieve and return the Google ID token
30 | func GetGoogleIdToken(audience string) (string, error) {
31 | 	// For local testing - use gcloud command to print personal ID token
32 | 	cmd := exec.Command("gcloud", "auth", "print-identity-token")
33 | 	output, err := cmd.Output()
34 | 	if err == nil {
35 | 		return strings.TrimSpace(string(output)), nil
36 | 	}
37 | 	// For Cloud Build testing - retrieve ID token from GCE metadata server
38 | 	ts, err := idtoken.NewTokenSource(context.Background(), ClientId)
39 | 	if err != nil {
40 | 		return "", err
41 | 	}
42 | 	token, err := ts.Token()
43 | 	if err != nil {
44 | 		return "", err
45 | 	}
46 | 	return token.AccessToken, nil
47 | }
48 | 
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/firestore/firestore-delete-documents.md:
--------------------------------------------------------------------------------

```markdown
 1 | ---
 2 | title: "firestore-delete-documents"
 3 | type: docs
 4 | weight: 1
 5 | description: >
 6 |   A "firestore-delete-documents" tool deletes multiple documents from Firestore by their paths.
 7 | aliases:
 8 | - /resources/tools/firestore-delete-documents
 9 | ---
10 | 
11 | ## About
12 | 
13 | A `firestore-delete-documents` tool deletes multiple documents from Firestore by
14 | their paths.
15 | It's compatible with the following sources:
16 | 
17 | - [firestore](../../sources/firestore.md)
18 | 
19 | `firestore-delete-documents` takes one input parameter `documentPaths` which is
20 | an array of document paths to delete. The tool uses Firestore's BulkWriter for
21 | efficient batch deletion and returns the success status for each document.
22 | 
23 | ## Example
24 | 
25 | ```yaml
26 | tools:
27 |   delete_user_documents:
28 |     kind: firestore-delete-documents
29 |     source: my-firestore-source
30 |     description: Use this tool to delete multiple documents from Firestore.
31 | ```
32 | 
33 | ## Reference
34 | 
35 | | **field**   |     **type**   | **required** | **description**                                          |
36 | |-------------|:--------------:|:------------:|----------------------------------------------------------|
37 | | kind        |     string     |     true     | Must be "firestore-delete-documents".                    |
38 | | source      |     string     |     true     | Name of the Firestore source to delete documents from.   |
39 | | description |     string     |     true     | Description of the tool that is passed to the LLM.       |
40 | 
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/cloudhealthcare/cloud-healthcare-get-dataset.md:
--------------------------------------------------------------------------------

```markdown
 1 | ---
 2 | title: "cloud-healthcare-get-dataset"
 3 | type: docs
 4 | weight: 1
 5 | description: >
 6 |   A "cloud-healthcare-get-dataset" tool retrieves metadata for the Healthcare dataset in the source.
 7 | aliases:
 8 | - /resources/tools/cloud-healthcare-get-dataset
 9 | ---
10 | 
11 | ## About
12 | 
13 | A `cloud-healthcare-get-dataset` tool retrieves metadata for a Healthcare dataset.
14 | It's compatible with the following sources:
15 | 
16 | - [cloud-healthcare](../../sources/cloud-healthcare.md)
17 | 
18 | `cloud-healthcare-get-dataset` returns the metadata of the healthcare dataset
19 | configured in the source. It takes no extra parameters.
20 | 
21 | ## Example
22 | 
23 | ```yaml
24 | tools:
25 |   get_dataset:
26 |     kind: cloud-healthcare-get-dataset
27 |     source: my-healthcare-source
28 |     description: Use this tool to get healthcare dataset metadata.
29 | ```
30 | 
31 | ## Reference
32 | 
33 | | **field**   |                  **type**                  | **required** | **description**                                    |
34 | |-------------|:------------------------------------------:|:------------:|----------------------------------------------------|
35 | | kind        |                   string                   |     true     | Must be "cloud-healthcare-get-dataset".            |
36 | | source      |                   string                   |     true     | Name of the healthcare source.                     |
37 | | description |                   string                   |     true     | Description of the tool that is passed to the LLM. |
38 | 
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/snowflake/snowflake-execute-sql.md:
--------------------------------------------------------------------------------

```markdown
 1 | ---
 2 | title: "snowflake-execute-sql"
 3 | type: docs
 4 | weight: 1
 5 | description: >
 6 |   A "snowflake-execute-sql" tool executes a SQL statement against a Snowflake
 7 |   database.
 8 | ---
 9 | 
10 | ## About
11 | 
12 | A `snowflake-execute-sql` tool executes a SQL statement against a Snowflake
13 | database. It's compatible with any of the following sources:
14 | 
15 | - [snowflake](../../sources/snowflake.md)
16 | 
17 | `snowflake-execute-sql` takes one input parameter `sql` and run the sql
18 | statement against the `source`.
19 | 
20 | > **Note:** This tool is intended for developer assistant workflows with
21 | > human-in-the-loop and shouldn't be used for production agents.
22 | 
23 | ## Example
24 | 
25 | ```yaml
26 | tools:
27 |  execute_sql_tool:
28 |     kind: snowflake-execute-sql
29 |     source: my-snowflake-instance
30 |     description: Use this tool to execute sql statement.
31 | ```
32 | 
33 | ## Reference
34 | 
35 | | **field**    |   **type**    | **required** | **description**                                           |
36 | |--------------|:-------------:|:------------:|-----------------------------------------------------------|
37 | | kind         |    string     |     true     | Must be "snowflake-execute-sql".                          |
38 | | source       |    string     |     true     | Name of the source the SQL should execute on.             |
39 | | description  |    string     |     true     | Description of the tool that is passed to the LLM.        |
40 | | authRequired | array[string] |    false     | List of auth services that are required to use this tool. |
41 | 
```

--------------------------------------------------------------------------------
/internal/server/web.go:
--------------------------------------------------------------------------------

```go
 1 | package server
 2 | 
 3 | import (
 4 | 	"bytes"
 5 | 	"embed"
 6 | 	"fmt"
 7 | 	"io"
 8 | 	"io/fs"
 9 | 	"net/http"
10 | 
11 | 	"github.com/go-chi/chi/v5"
12 | 	"github.com/go-chi/chi/v5/middleware"
13 | )
14 | 
15 | //go:embed all:static
16 | var staticContent embed.FS
17 | 
18 | // webRouter creates a router that represents the routes under /ui
19 | func webRouter() (chi.Router, error) {
20 | 	r := chi.NewRouter()
21 | 	r.Use(middleware.StripSlashes)
22 | 
23 | 	// direct routes for html pages to provide clean URLs
24 | 	r.Get("/", func(w http.ResponseWriter, r *http.Request) { serveHTML(w, r, "static/index.html") })
25 | 	r.Get("/tools", func(w http.ResponseWriter, r *http.Request) { serveHTML(w, r, "static/tools.html") })
26 | 	r.Get("/toolsets", func(w http.ResponseWriter, r *http.Request) { serveHTML(w, r, "static/toolsets.html") })
27 | 
28 | 	// handler for all other static files/assets
29 | 	staticFS, _ := fs.Sub(staticContent, "static")
30 | 	r.Handle("/*", http.StripPrefix("/ui", http.FileServer(http.FS(staticFS))))
31 | 
32 | 	return r, nil
33 | }
34 | 
35 | func serveHTML(w http.ResponseWriter, r *http.Request, filepath string) {
36 | 	file, err := staticContent.Open(filepath)
37 | 	if err != nil {
38 | 		http.Error(w, "File not found", http.StatusNotFound)
39 | 		return
40 | 	}
41 | 	defer file.Close()
42 | 
43 | 	fileBytes, err := io.ReadAll(file)
44 | 	if err != nil {
45 | 		http.Error(w, fmt.Sprintf("Error reading file: %v", err), http.StatusInternalServerError)
46 | 		return
47 | 	}
48 | 
49 | 	fileInfo, err := file.Stat()
50 | 	if err != nil {
51 | 		return
52 | 	}
53 | 	http.ServeContent(w, r, fileInfo.Name(), fileInfo.ModTime(), bytes.NewReader(fileBytes))
54 | }
55 | 
```

--------------------------------------------------------------------------------
/internal/tools/mysql/mysqlcommon/mysqlcommon.go:
--------------------------------------------------------------------------------

```go
 1 | // Copyright 2025 Google LLC
 2 | //
 3 | // Licensed under the Apache License, Version 2.0 (the "License");
 4 | // you may not use this file except in compliance with the License.
 5 | // You may obtain a copy of the License at
 6 | //
 7 | //     http://www.apache.org/licenses/LICENSE-2.0
 8 | //
 9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 | 
15 | package mysqlcommon
16 | 
17 | import (
18 | 	"database/sql"
19 | 	"encoding/json"
20 | 	"reflect"
21 | )
22 | 
23 | // ConvertToType handles casting mysql returns to the right type
24 | // types for mysql driver: https://github.com/go-sql-driver/mysql/blob/v1.9.3/fields.go
25 | // all numeric type or unknown type will be return as is.
26 | func ConvertToType(t *sql.ColumnType, v any) (any, error) {
27 | 	switch t.ScanType() {
28 | 	case reflect.TypeOf(""), reflect.TypeOf([]byte{}), reflect.TypeOf(sql.NullString{}):
29 | 		// unmarshal JSON data before returning to prevent double marshaling
30 | 		if t.DatabaseTypeName() == "JSON" {
31 | 			// unmarshal JSON data before storing to prevent double marshaling
32 | 			var unmarshaledData any
33 | 			err := json.Unmarshal(v.([]byte), &unmarshaledData)
34 | 			if err != nil {
35 | 				return nil, err
36 | 			}
37 | 			return unmarshaledData, nil
38 | 		}
39 | 		return string(v.([]byte)), nil
40 | 	default:
41 | 		return v, nil
42 | 	}
43 | }
44 | 
```

--------------------------------------------------------------------------------
/.hugo/layouts/shortcodes/regionInclude.html:
--------------------------------------------------------------------------------

```html
 1 | {{/*
 2 |   snippet.html
 3 |   Usage:
 4 |     {{< regionInclude "filename.md" "region_name" >}}
 5 |     {{< regionInclude "filename.python" "region_name" "python" >}}
 6 | */}}
 7 | 
 8 | {{ $file := .Get 0 }}
 9 | {{ $region := .Get 1 }}
10 | {{ $lang := .Get 2 | default "text" }}
11 | {{ $path := printf "%s%s" .Page.File.Dir $file }}
12 | 
13 | {{ if or (not $file) (eq $file "") }}
14 |   {{ errorf "The file parameter (first argument) is required and must be non-empty in %s" .Page.File.Path }}
15 | {{ end }}
16 | {{ if or (not $region) (eq $region "") }}
17 |   {{ errorf "The region parameter (second argument) is required and must be non-empty in %s" .Page.File.Path }}
18 | {{ end }}
19 | {{ if not (fileExists $path) }}
20 |   {{ errorf "File %q not found (referenced in %s)" $path .Page.File.Path }}
21 | {{ end }}
22 | 
23 | {{ $content := readFile $path }}
24 | {{ $start_tag := printf "[START %s]" $region }}
25 | {{ $end_tag := printf "[END %s]" $region }}
26 | 
27 | {{ $snippet := "" }}
28 | {{ $in_snippet := false }}
29 | {{ range split $content "\n" }}
30 |   {{ if $in_snippet }}
31 |     {{ if in . $end_tag }}
32 |       {{ $in_snippet = false }}
33 |     {{ else }}
34 |       {{ $snippet = printf "%s%s\n" $snippet . }}
35 |     {{ end }}
36 |   {{ else if in . $start_tag }}
37 |     {{ $in_snippet = true }}
38 |   {{ end }}
39 | {{ end }}
40 | 
41 | {{ if eq (trim $snippet "") "" }}
42 |   {{ errorf "Region %q not found or empty in file %s (referenced in %s)" $region $file .Page.File.Path }}
43 | {{ end }}
44 | 
45 | {{ if eq $lang "text" }}
46 |   {{ $snippet | markdownify }}
47 | {{ else }}
48 |   {{ highlight (trim $snippet "\n") $lang "" }}
49 | {{ end }}
50 | 
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/looker/looker-get-projects.md:
--------------------------------------------------------------------------------

```markdown
 1 | ---
 2 | title: "looker-get-projects"
 3 | type: docs
 4 | weight: 1
 5 | description: >
 6 |   A "looker-get-projects" tool returns all the LookML projects in the source.
 7 | aliases:
 8 | - /resources/tools/looker-get-projects
 9 | ---
10 | 
11 | ## About
12 | 
13 | A `looker-get-projects` tool returns all the projects in the source.
14 | 
15 | It's compatible with the following sources:
16 | 
17 | - [looker](../../sources/looker.md)
18 | 
19 | `looker-get-projects` accepts no parameters.
20 | 
21 | ## Example
22 | 
23 | ```yaml
24 | tools:
25 |     get_projects:
26 |         kind: looker-get-projects
27 |         source: looker-source
28 |         description: |
29 |           This tool retrieves a list of all LookML projects available on the Looker instance.
30 |           It is useful for identifying projects before performing actions like retrieving
31 |           project files or making modifications.
32 | 
33 |           Parameters:
34 |           This tool takes no parameters.
35 | 
36 |           Output:
37 |           A JSON array of objects, each containing the `project_id` and `project_name`
38 |           for a LookML project.
39 | ```
40 | 
41 | ## Reference
42 | 
43 | | **field**   | **type** | **required** | **description**                                    |
44 | |-------------|:--------:|:------------:|----------------------------------------------------|
45 | | kind        |  string  |     true     | Must be "looker-get-projects".                     |
46 | | source      |  string  |     true     | Name of the source Looker instance.                |
47 | | description |  string  |     true     | Description of the tool that is passed to the LLM. |
48 | 
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/looker/looker-dev-mode.md:
--------------------------------------------------------------------------------

```markdown
 1 | ---
 2 | title: "looker-dev-mode"
 3 | type: docs
 4 | weight: 1
 5 | description: >
 6 |   A "looker-dev-mode" tool changes the current session into and out of dev mode
 7 | aliases:
 8 | - /resources/tools/looker-dev-mode
 9 | ---
10 | 
11 | ## About
12 | 
13 | A `looker-dev-mode` tool changes the session into and out of dev mode.
14 | 
15 | It's compatible with the following sources:
16 | 
17 | - [looker](../../sources/looker.md)
18 | 
19 | `looker-dev-mode` accepts a boolean parameter, true to enter dev mode and false
20 | to exit dev mode.
21 | 
22 | ## Example
23 | 
24 | ```yaml
25 | tools:
26 |     dev_mode:
27 |         kind: looker-dev-mode
28 |         source: looker-source
29 |         description: |
30 |           This tool allows toggling the Looker IDE session between Development Mode and Production Mode.
31 |           Development Mode enables making and testing changes to LookML projects.
32 | 
33 |           Parameters:
34 |           - enable (required): A boolean value.
35 |             - `true`: Switches the current session to Development Mode.
36 |             - `false`: Switches the current session to Production Mode.
37 | ```
38 | 
39 | ## Reference
40 | 
41 | | **field**   | **type** | **required** | **description**                                    |
42 | |-------------|:--------:|:------------:|----------------------------------------------------|
43 | | kind        |  string  |     true     | Must be "looker-dev-mode".                         |
44 | | source      |  string  |     true     | Name of the source Looker instance.                |
45 | | description |  string  |     true     | Description of the tool that is passed to the LLM. |
46 | 
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/looker/looker-run-dashboard.md:
--------------------------------------------------------------------------------

```markdown
 1 | ---
 2 | title: "looker-run-dashboard"
 3 | type: docs
 4 | weight: 1
 5 | description: >
 6 |   "looker-run-dashboard" runs the queries associated with a dashboard.
 7 | aliases:
 8 | - /resources/tools/looker-run-dashboard
 9 | ---
10 | 
11 | ## About
12 | 
13 | The `looker-run-dashboard` tool runs the queries associated with a
14 | dashboard.
15 | 
16 | It's compatible with the following sources:
17 | 
18 | - [looker](../../sources/looker.md)
19 | 
20 | `looker-run-dashboard` takes one parameter, the `dashboard_id`.
21 | 
22 | ## Example
23 | 
24 | ```yaml
25 | tools:
26 |     run_dashboard:
27 |         kind: looker-run-dashboard
28 |         source: looker-source
29 |         description: |
30 |           This tool executes the queries associated with each tile in a specified dashboard
31 |           and returns the aggregated data in a JSON structure.
32 | 
33 |           Parameters:
34 |           - dashboard_id (required): The unique identifier of the dashboard to run,
35 |             typically obtained from the `get_dashboards` tool.
36 | 
37 |           Output:
38 |           The data from all dashboard tiles is returned as a JSON object.
39 | ```
40 | 
41 | ## Reference
42 | 
43 | | **field**   | **type** | **required** | **description**                                    |
44 | |-------------|:--------:|:------------:|----------------------------------------------------|
45 | | kind        |  string  |     true     | Must be "looker-run-dashboard"                     |
46 | | source      |  string  |     true     | Name of the source the SQL should execute on.      |
47 | | description |  string  |     true     | Description of the tool that is passed to the LLM. |
48 | 
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/mssql/mssql-execute-sql.md:
--------------------------------------------------------------------------------

```markdown
 1 | ---
 2 | title: "mssql-execute-sql"
 3 | type: docs
 4 | weight: 1
 5 | description: >
 6 |   A "mssql-execute-sql" tool executes a SQL statement against a SQL Server
 7 |   database.
 8 | aliases:
 9 | - /resources/tools/mssql-execute-sql
10 | ---
11 | 
12 | ## About
13 | 
14 | A `mssql-execute-sql` tool executes a SQL statement against a SQL Server
15 | database. It's compatible with any of the following sources:
16 | 
17 | - [cloud-sql-mssql](../../sources/cloud-sql-mssql.md)
18 | - [mssql](../../sources/mssql.md)
19 | 
20 | `mssql-execute-sql` takes one input parameter `sql` and run the sql
21 | statement against the `source`.
22 | 
23 | > **Note:** This tool is intended for developer assistant workflows with
24 | > human-in-the-loop and shouldn't be used for production agents.
25 | 
26 | ## Example
27 | 
28 | ```yaml
29 | tools:
30 |  execute_sql_tool:
31 |     kind: mssql-execute-sql
32 |     source: my-mssql-instance
33 |     description: Use this tool to execute sql statement.
34 | ```
35 | 
36 | ## Reference
37 | 
38 | | **field**   |                  **type**                  | **required** | **description**                                    |
39 | |-------------|:------------------------------------------:|:------------:|----------------------------------------------------|
40 | | kind        |                   string                   |     true     | Must be "mssql-execute-sql".                       |
41 | | source      |                   string                   |     true     | Name of the source the SQL should execute on.      |
42 | | description |                   string                   |     true     | Description of the tool that is passed to the LLM. |
43 | 
```

--------------------------------------------------------------------------------
/.github/sync-repo-settings.yaml:
--------------------------------------------------------------------------------

```yaml
 1 | # Copyright 2024 Google LLC
 2 | #
 3 | # Licensed under the Apache License, Version 2.0 (the "License");
 4 | # you may not use this file except in compliance with the License.
 5 | # You may obtain a copy of the License at
 6 | #
 7 | #      http://www.apache.org/licenses/LICENSE-2.0
 8 | #
 9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 | 
15 | # Synchronize repository settings from a centralized config
16 | # https://github.com/googleapis/repo-automation-bots/tree/main/packages/sync-repo-settings
17 | # Install: https://github.com/apps/sync-repo-settings
18 | 
19 | # Disable merge commits
20 | rebaseMergeAllowed: true
21 | squashMergeAllowed: true
22 | mergeCommitAllowed: false
23 | # Enable branch protection
24 | branchProtectionRules:
25 |   - pattern: main
26 |     isAdminEnforced: true
27 |     requiredStatusCheckContexts:
28 |       - "cla/google"
29 |       - "lint"
30 |       - "conventionalcommits.org"
31 |       - "header-check"
32 |     # - Add required status checks like presubmit tests
33 |       - "unit tests (ubuntu-latest)"
34 |       - "unit tests (windows-latest)"
35 |       - "unit tests (macos-latest)"
36 |       - "integration-test-pr (toolbox-testing-438616)"
37 |     requiredApprovingReviewCount: 1
38 |     requiresCodeOwnerReviews: true
39 |     requiresStrictStatusChecks: true
40 | 
41 | # Set team access
42 | permissionRules:
43 |   - team: senseai-eco
44 |     permission: admin
45 | 
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/postgres/postgres-list-installed-extensions.md:
--------------------------------------------------------------------------------

```markdown
 1 | ---
 2 | title: "postgres-list-installed-extensions"
 3 | type: docs
 4 | weight: 1
 5 | description: >
 6 |   The "postgres-list-installed-extensions" tool retrieves all PostgreSQL
 7 |   extensions installed on a Postgres database.
 8 | aliases:
 9 | - /resources/tools/postgres-list-installed-extensions
10 | ---
11 | 
12 | ## About
13 | 
14 | The `postgres-list-installed-extensions` tool retrieves all PostgreSQL
15 | extensions installed on a Postgres database. It's compatible with any of the
16 | following sources:
17 | 
18 | - [alloydb-postgres](../../sources/alloydb-pg.md)
19 | - [cloud-sql-postgres](../../sources/cloud-sql-pg.md)
20 | - [postgres](../../sources/postgres.md)
21 | 
22 | `postgres-list-installed-extensions` lists all installed PostgreSQL extensions
23 | (extension name, version, schema, owner, description) as JSON. The does not
24 | support any input parameter.
25 | 
26 | ## Example
27 | 
28 | ```yaml
29 | tools:
30 |   list_installed_extensions:
31 |     kind: postgres-list-installed-extensions
32 |     source: postgres-source
33 |     description: List all installed PostgreSQL extensions with their name, version, schema, owner, and description.
34 | ```
35 | 
36 | ## Reference
37 | 
38 | | **field**   | **type** | **required** | **description**                                    |
39 | |-------------|:--------:|:------------:|----------------------------------------------------|
40 | | kind        |  string  |     true     | Must be "postgres-list-active-queries".            |
41 | | source      |  string  |     true     | Name of the source the SQL should execute on.      |
42 | | description |  string  |     true     | Description of the tool that is passed to the LLM. |
43 | 
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/looker/looker-get-project-file.md:
--------------------------------------------------------------------------------

```markdown
 1 | ---
 2 | title: "looker-get-project-file"
 3 | type: docs
 4 | weight: 1
 5 | description: >
 6 |   A "looker-get-project-file" tool returns the contents of a LookML fle.
 7 | aliases:
 8 | - /resources/tools/looker-get-project-file
 9 | ---
10 | 
11 | ## About
12 | 
13 | A `looker-get-project-file` tool returns the contents of a LookML file.
14 | 
15 | It's compatible with the following sources:
16 | 
17 | - [looker](../../sources/looker.md)
18 | 
19 | `looker-get-project-file` accepts a project_id parameter and a file_path parameter.
20 | 
21 | ## Example
22 | 
23 | ```yaml
24 | tools:
25 |     get_project_file:
26 |         kind: looker-get-project-file
27 |         source: looker-source
28 |         description: |
29 |           This tool retrieves the raw content of a specific LookML file from within a project.
30 | 
31 |           Parameters:
32 |           - project_id (required): The unique ID of the LookML project, obtained from `get_projects`.
33 |           - file_path (required): The path to the LookML file within the project,
34 |             typically obtained from `get_project_files`.
35 | 
36 |           Output:
37 |           The raw text content of the specified LookML file.
38 | ```
39 | 
40 | ## Reference
41 | 
42 | | **field**   | **type** | **required** | **description**                                    |
43 | |-------------|:--------:|:------------:|----------------------------------------------------|
44 | | kind        |  string  |     true     | Must be "looker-get-project-file".                 |
45 | | source      |  string  |     true     | Name of the source Looker instance.                |
46 | | description |  string  |     true     | Description of the tool that is passed to the LLM. |
47 | 
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/looker/looker-get-project-files.md:
--------------------------------------------------------------------------------

```markdown
 1 | ---
 2 | title: "looker-get-project-files"
 3 | type: docs
 4 | weight: 1
 5 | description: >
 6 |   A "looker-get-project-files" tool returns all the LookML fles in a project in the source.
 7 | aliases:
 8 | - /resources/tools/looker-get-project-files
 9 | ---
10 | 
11 | ## About
12 | 
13 | A `looker-get-project-files` tool returns all the lookml files in a project in the source.
14 | 
15 | It's compatible with the following sources:
16 | 
17 | - [looker](../../sources/looker.md)
18 | 
19 | `looker-get-project-files` accepts a project_id parameter.
20 | 
21 | ## Example
22 | 
23 | ```yaml
24 | tools:
25 |     get_project_files:
26 |         kind: looker-get-project-files
27 |         source: looker-source
28 |         description: |
29 |           This tool retrieves a list of all LookML files within a specified project,
30 |           providing details about each file.
31 | 
32 |           Parameters:
33 |           - project_id (required): The unique ID of the LookML project, obtained from `get_projects`.
34 | 
35 |           Output:
36 |           A JSON array of objects, each representing a LookML file and containing
37 |           details such as `path`, `id`, `type`, and `git_status`.
38 | ```
39 | 
40 | ## Reference
41 | 
42 | | **field**   | **type** | **required** | **description**                                    |
43 | |-------------|:--------:|:------------:|----------------------------------------------------|
44 | | kind        |  string  |     true     | Must be "looker-get-project-files".                |
45 | | source      |  string  |     true     | Name of the source Looker instance.                |
46 | | description |  string  |     true     | Description of the tool that is passed to the LLM. |
47 | 
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/cloudhealthcare/cloud-healthcare-get-fhir-store.md:
--------------------------------------------------------------------------------

```markdown
 1 | ---
 2 | title: "cloud-healthcare-get-fhir-store"
 3 | type: docs
 4 | weight: 1
 5 | description: >
 6 |   A "cloud-healthcare-get-fhir-store" tool retrieves information about a FHIR store.
 7 | aliases:
 8 | - /resources/tools/cloud-healthcare-get-fhir-store
 9 | ---
10 | 
11 | ## About
12 | 
13 | A `cloud-healthcare-get-fhir-store` tool retrieves information about a FHIR store. It's
14 | compatible with the following sources:
15 | 
16 | - [cloud-healthcare](../../sources/cloud-healthcare.md)
17 | 
18 | `cloud-healthcare-get-fhir-store` returns the details of a FHIR store.
19 | 
20 | ## Example
21 | 
22 | ```yaml
23 | tools:
24 |   get_fhir_store:
25 |     kind: cloud-healthcare-get-fhir-store
26 |     source: my-healthcare-source
27 |     description: Use this tool to get information about a FHIR store.
28 | ```
29 | 
30 | ## Reference
31 | 
32 | | **field**   | **type** | **required** | **description**                                    |
33 | |-------------|:--------:|:------------:|----------------------------------------------------|
34 | | kind        |  string  |     true     | Must be "cloud-healthcare-get-fhir-store".         |
35 | | source      |  string  |     true     | Name of the healthcare source.                     |
36 | | description |  string  |     true     | Description of the tool that is passed to the LLM. |
37 | 
38 | ### Parameters
39 | 
40 | | **field** | **type** | **required** | **description**                       |
41 | |-----------|:--------:|:------------:|---------------------------------------|
42 | | storeID   |  string  |    true*     | The FHIR store ID to get details for. |
43 | 
44 | *If the `allowedFHIRStores` in the source has length 1, then the `storeID` parameter is not needed.
45 | 
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/alloydb/alloydb-get-cluster.md:
--------------------------------------------------------------------------------

```markdown
 1 | ---
 2 | title: alloydb-get-cluster
 3 | type: docs
 4 | weight: 1
 5 | description: "The \"alloydb-get-cluster\" tool retrieves details for a specific AlloyDB cluster.\n"
 6 | aliases: [/resources/tools/alloydb-get-cluster]
 7 | ---
 8 | 
 9 | ## About
10 | 
11 | The `alloydb-get-cluster` tool retrieves detailed information for a single,
12 | specified AlloyDB cluster. It is compatible with
13 | [alloydb-admin](../../sources/alloydb-admin.md) source.
14 | 
15 | | Parameter  | Type   | Description                                        | Required |
16 | | :--------- | :----- | :------------------------------------------------- | :------- |
17 | | `project`  | string | The GCP project ID to get cluster for.             | Yes      |
18 | | `location` | string | The location of the cluster (e.g., 'us-central1'). | Yes      |
19 | | `cluster`  | string | The ID of the cluster to retrieve.                 | Yes      |
20 | 
21 | ## Example
22 | 
23 | ```yaml
24 | tools:
25 |   get_specific_cluster:
26 |     kind: alloydb-get-cluster
27 |     source: my-alloydb-admin-source
28 |     description: Use this tool to retrieve details for a specific AlloyDB cluster.
29 | ```
30 | 
31 | ## Reference
32 | 
33 | | **field**   | **type** | **required** | **description**                                      |
34 | | ----------- | :------: | :----------: | ---------------------------------------------------- |
35 | | kind        |  string  |     true     | Must be alloydb-get-cluster.                         |
36 | | source      |  string  |     true     | The name of an `alloydb-admin` source.               |
37 | | description |  string  |     false    | Description of the tool that is passed to the agent. |
38 | 
```

--------------------------------------------------------------------------------
/internal/tools/http_method.go:
--------------------------------------------------------------------------------

```go
 1 | // Copyright 2025 Google LLC
 2 | //
 3 | // Licensed under the Apache License, Version 2.0 (the "License");
 4 | // you may not use this file except in compliance with the License.
 5 | // You may obtain a copy of the License at
 6 | //
 7 | //	http://www.apache.org/licenses/LICENSE-2.0
 8 | //
 9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 | package tools
15 | 
16 | import (
17 | 	"context"
18 | 	"fmt"
19 | 	"net/http"
20 | 	"strings"
21 | )
22 | 
23 | // HTTPMethod is a string of a valid HTTP method (e.g "GET")
24 | type HTTPMethod string
25 | 
26 | // isValidHTTPMethod checks if the input string matches one of the method constants defined in the net/http package
27 | func isValidHTTPMethod(method string) bool {
28 | 
29 | 	switch method {
30 | 	case http.MethodGet, http.MethodPost, http.MethodPut, http.MethodDelete,
31 | 		http.MethodPatch, http.MethodHead, http.MethodOptions, http.MethodTrace,
32 | 		http.MethodConnect:
33 | 		return true
34 | 	}
35 | 	return false
36 | }
37 | 
38 | func (i *HTTPMethod) UnmarshalYAML(ctx context.Context, unmarshal func(interface{}) error) error {
39 | 	var httpMethod string
40 | 	if err := unmarshal(&httpMethod); err != nil {
41 | 		return fmt.Errorf(`error unmarshalling HTTP method: %s`, err)
42 | 	}
43 | 	httpMethod = strings.ToUpper(httpMethod)
44 | 	if !isValidHTTPMethod(httpMethod) {
45 | 		return fmt.Errorf(`%s is not a valid http method`, httpMethod)
46 | 	}
47 | 	*i = HTTPMethod(httpMethod)
48 | 	return nil
49 | }
50 | 
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/alloydb/alloydb-list-users.md:
--------------------------------------------------------------------------------

```markdown
 1 | ---
 2 | title: alloydb-list-users
 3 | type: docs
 4 | weight: 1
 5 | description: "The \"alloydb-list-users\" tool lists all database users within an AlloyDB cluster.\n"
 6 | aliases: [/resources/tools/alloydb-list-users]
 7 | ---
 8 | 
 9 | ## About
10 | 
11 | The `alloydb-list-users` tool lists all database users within an AlloyDB
12 | cluster. It is compatible with [alloydb-admin](../../sources/alloydb-admin.md)
13 | source.
14 | The tool takes the following input parameters:
15 | 
16 | | Parameter  | Type   | Description                                        | Required |
17 | | :--------- | :----- | :------------------------------------------------- | :------- |
18 | | `project`  | string | The GCP project ID to list users for.              | Yes      |
19 | | `cluster`  | string | The ID of the cluster to list users from.          | Yes      |
20 | | `location` | string | The location of the cluster (e.g., 'us-central1'). | Yes      |
21 | 
22 | ## Example
23 | 
24 | ```yaml
25 | tools:
26 |   list_users:
27 |     kind: alloydb-list-users
28 |     source: alloydb-admin-source
29 |     description: Use this tool to list all database users within an AlloyDB cluster
30 | ```
31 | 
32 | ## Reference
33 | 
34 | | **field**   | **type** | **required** | **description**                                      |
35 | | ----------- | :------: | :----------: | ---------------------------------------------------- |
36 | | kind        |  string  |     true     | Must be alloydb-list-users.                          |
37 | | source      |  string  |     true     | The name of an `alloydb-admin` source.               |
38 | | description |  string  |     false    | Description of the tool that is passed to the agent. |
39 | 
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/cloudhealthcare/cloud-healthcare-get-dicom-store.md:
--------------------------------------------------------------------------------

```markdown
 1 | ---
 2 | title: "cloud-healthcare-get-dicom-store"
 3 | type: docs
 4 | weight: 1
 5 | description: >
 6 |   A "cloud-healthcare-get-dicom-store" tool retrieves information about a DICOM store.
 7 | aliases:
 8 | - /resources/tools/cloud-healthcare-get-dicom-store
 9 | ---
10 | 
11 | ## About
12 | 
13 | A `cloud-healthcare-get-dicom-store` tool retrieves information about a DICOM store. It's
14 | compatible with the following sources:
15 | 
16 | - [cloud-healthcare](../../sources/cloud-healthcare.md)
17 | 
18 | `cloud-healthcare-get-dicom-store` returns the details of a DICOM store.
19 | 
20 | ## Example
21 | 
22 | ```yaml
23 | tools:
24 |   get_dicom_store:
25 |     kind: cloud-healthcare-get-dicom-store
26 |     source: my-healthcare-source
27 |     description: Use this tool to get information about a DICOM store.
28 | ```
29 | 
30 | ## Reference
31 | 
32 | | **field**   | **type** | **required** | **description**                                    |
33 | |-------------|:--------:|:------------:|----------------------------------------------------|
34 | | kind        |  string  |     true     | Must be "cloud-healthcare-get-dicom-store".        |
35 | | source      |  string  |     true     | Name of the healthcare source.                     |
36 | | description |  string  |     true     | Description of the tool that is passed to the LLM. |
37 | 
38 | ### Parameters
39 | 
40 | | **field** | **type** | **required** | **description**                        |
41 | |-----------|:--------:|:------------:|----------------------------------------|
42 | | storeID   |  string  |    true*     | The DICOM store ID to get details for. |
43 | 
44 | *If the `allowedDICOMStores` in the source has length 1, then the `storeID` parameter is not needed.
45 | 
```

--------------------------------------------------------------------------------
/internal/prebuiltconfigs/tools/cloud-sql-mssql.yaml:
--------------------------------------------------------------------------------

```yaml
 1 | # Copyright 2025 Google LLC
 2 | #
 3 | # Licensed under the Apache License, Version 2.0 (the "License");
 4 | # you may not use this file except in compliance with the License.
 5 | # You may obtain a copy of the License at
 6 | #
 7 | #     http://www.apache.org/licenses/LICENSE-2.0
 8 | #
 9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 | 
15 | sources:
16 |     cloudsql-mssql-source:
17 |         kind: cloud-sql-mssql
18 |         project: ${CLOUD_SQL_MSSQL_PROJECT}
19 |         region: ${CLOUD_SQL_MSSQL_REGION}
20 |         instance: ${CLOUD_SQL_MSSQL_INSTANCE}
21 |         database: ${CLOUD_SQL_MSSQL_DATABASE}
22 |         user: ${CLOUD_SQL_MSSQL_USER}
23 |         password: ${CLOUD_SQL_MSSQL_PASSWORD}
24 |         ipType: ${CLOUD_SQL_MSSQL_IP_TYPE:public}
25 | tools:
26 |     execute_sql:
27 |         kind: mssql-execute-sql
28 |         source: cloudsql-mssql-source
29 |         description: Use this tool to execute SQL.
30 | 
31 |     list_tables:
32 |         kind: mssql-list-tables
33 |         source: cloudsql-mssql-source
34 |         description: "Lists detailed schema information (object type, columns, constraints, indexes, triggers, comment) as JSON for user-created tables (ordinary or partitioned). Filters by a comma-separated list of names. If names are omitted, lists all tables in user schemas."
35 | 
36 | toolsets:
37 |     cloud_sql_mssql_database_tools:
38 |         - execute_sql
39 |         - list_tables
40 | 
```

--------------------------------------------------------------------------------
/.ci/quickstart_test/setup_hotels_sample.sql:
--------------------------------------------------------------------------------

```sql
 1 | -- Copyright 2025 Google LLC
 2 | -- 
 3 | -- Licensed under the Apache License, Version 2.0 (the "License");
 4 | -- you may not use this file except in compliance with the License.
 5 | -- You may obtain a copy of the License at
 6 | -- 
 7 | --      http://www.apache.org/licenses/LICENSE-2.0
 8 | -- 
 9 | -- Unless required by applicable law or agreed to in writing, software
10 | -- distributed under the License is distributed on an "AS IS" BASIS,
11 | -- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | -- See the License for the specific language governing permissions and
13 | -- limitations under the License.
14 | 
15 | TRUNCATE TABLE $TABLE_NAME;
16 | 
17 | INSERT INTO $TABLE_NAME (id, name, location, price_tier, checkin_date, checkout_date, booked)
18 | VALUES
19 |   (1, 'Hilton Basel', 'Basel', 'Luxury', '2024-04-22', '2024-04-20', B'0'),
20 |   (2, 'Marriott Zurich', 'Zurich', 'Upscale', '2024-04-14', '2024-04-21', B'0'),
21 |   (3, 'Hyatt Regency Basel', 'Basel', 'Upper Upscale', '2024-04-02', '2024-04-20', B'0'),
22 |   (4, 'Radisson Blu Lucerne', 'Lucerne', 'Midscale', '2024-04-24', '2024-04-05', B'0'),
23 |   (5, 'Best Western Bern', 'Bern', 'Upper Midscale', '2024-04-23', '2024-04-01', B'0'),
24 |   (6, 'InterContinental Geneva', 'Geneva', 'Luxury', '2024-04-23', '2024-04-28', B'0'),
25 |   (7, 'Sheraton Zurich', 'Zurich', 'Upper Upscale', '2024-04-27', '2024-04-02', B'0'),
26 |   (8, 'Holiday Inn Basel', 'Basel', 'Upper Midscale', '2024-04-24', '2024-04-09', B'0'),
27 |   (9, 'Courtyard Zurich', 'Zurich', 'Upscale', '2024-04-03', '2024-04-13', B'0'),
28 |   (10, 'Comfort Inn Bern', 'Bern', 'Midscale', '2024-04-04', '2024-04-16', B'0');
```

--------------------------------------------------------------------------------
/.hugo/layouts/shortcodes/ipynb.html:
--------------------------------------------------------------------------------

```html
 1 | {{ $notebookFile := .Get 0 }}
 2 | {{ with .Page.Resources.Get $notebookFile }}
 3 | 
 4 |   {{ $content := .Content | transform.Unmarshal }}
 5 |   {{ range $content.cells }}
 6 | 
 7 |     {{ if eq .cell_type "markdown" }}
 8 |       <div class="notebook-markdown">
 9 |         {{ $markdown := "" }}
10 |         {{ range .source }}{{ $markdown = print $markdown . }}{{ end }}
11 |         {{ $markdown | markdownify }}
12 |       </div>
13 |     {{ end }}
14 | 
15 |     {{ if eq .cell_type "code" }}
16 |       <div class="notebook-code">
17 |         {{ $code := "" }}
18 |         {{ range .source }}{{ $code = print $code . }}{{ end }}
19 |         {{ highlight $code "python" "" }}
20 | 
21 |         {{ range .outputs }}
22 |           <div class="notebook-output">
23 |             {{ with .text }}
24 |               <pre class="notebook-stream"><code>{{- range . }}{{ . }}{{ end -}}</code></pre>
25 |             {{ end }}
26 | 
27 |             {{ with .data }}
28 |               {{ with index . "image/png" }}
29 |                 <img src="data:image/png;base64,{{ . }}" alt="Notebook output image">
30 |               {{ end }}
31 |               {{ with index . "image/jpeg" }}
32 |                 <img src="data:image/jpeg;base64,{{ . }}" alt="Notebook output image">
33 |               {{ end }}
34 |               {{ with index . "text/html" }}
35 |                 {{ $html := "" }}
36 |                 {{ range . }}{{ $html = print $html . }}{{ end }}
37 |                 {{ $html | safeHTML }}
38 |               {{ end }}
39 |             {{ end }}
40 |           </div>
41 |         {{ end }}
42 |       </div>
43 |     {{ end }}
44 |   {{ end }}
45 | {{ else }}
46 |   <p style="color: red;">Error: Notebook '{{ $notebookFile }}' not found in page resources.</p>
47 | {{ end }}
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/cloudhealthcare/cloud-healthcare-get-fhir-store-metrics.md:
--------------------------------------------------------------------------------

```markdown
 1 | ---
 2 | title: "cloud-healthcare-get-fhir-store-metrics"
 3 | type: docs
 4 | weight: 1
 5 | description: >
 6 |   A "cloud-healthcare-get-fhir-store-metrics" tool retrieves metrics for a FHIR store.
 7 | aliases:
 8 | - /resources/tools/cloud-healthcare-get-fhir-store-metrics
 9 | ---
10 | 
11 | ## About
12 | 
13 | A `cloud-healthcare-get-fhir-store-metrics` tool retrieves metrics for a FHIR store. It's
14 | compatible with the following sources:
15 | 
16 | - [cloud-healthcare](../../sources/cloud-healthcare.md)
17 | 
18 | `cloud-healthcare-get-fhir-store-metrics` returns the metrics of a FHIR store.
19 | 
20 | ## Example
21 | 
22 | ```yaml
23 | tools:
24 |   get_fhir_store_metrics:
25 |     kind: cloud-healthcare-get-fhir-store-metrics
26 |     source: my-healthcare-source
27 |     description: Use this tool to get metrics for a FHIR store.
28 | ```
29 | 
30 | ## Reference
31 | 
32 | | **field**   | **type** | **required** | **description**                                    |
33 | |-------------|:--------:|:------------:|----------------------------------------------------|
34 | | kind        |  string  |     true     | Must be "cloud-healthcare-get-fhir-store-metrics". |
35 | | source      |  string  |     true     | Name of the healthcare source.                     |
36 | | description |  string  |     true     | Description of the tool that is passed to the LLM. |
37 | 
38 | ### Parameters
39 | 
40 | | **field** | **type** | **required** | **description**                       |
41 | |-----------|:--------:|:------------:|---------------------------------------|
42 | | storeID   |  string  |    true*     | The FHIR store ID to get metrics for. |
43 | 
44 | *If the `allowedFHIRStores` in the source has length 1, then the `storeID` parameter is not needed.
45 | 
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/cloudsql/cloudsqlcreatedatabase.md:
--------------------------------------------------------------------------------

```markdown
 1 | ---
 2 | title: cloud-sql-create-database
 3 | type: docs
 4 | weight: 10
 5 | description: >
 6 |   Create a new database in a Cloud SQL instance.
 7 | ---
 8 | 
 9 | The `cloud-sql-create-database` tool creates a new database in a specified Cloud
10 | SQL instance.
11 | 
12 | {{< notice info >}}
13 | This tool uses a `source` of kind `cloud-sql-admin`.
14 | {{< /notice >}}
15 | 
16 | ## Example
17 | 
18 | ```yaml
19 | tools:
20 |   create-cloud-sql-database:
21 |     kind: cloud-sql-create-database
22 |     source: my-cloud-sql-admin-source
23 |     description: "Creates a new database in a Cloud SQL instance."
24 | ```
25 | 
26 | ## Reference
27 | 
28 | | **field**   | **type** | **required** | **description**                                  |
29 | | ----------- | :------: | :----------: | ------------------------------------------------ |
30 | | kind        |  string  |     true     | Must be "cloud-sql-create-database".             |
31 | | source      |  string  |     true     | The name of the `cloud-sql-admin` source to use. |
32 | | description |  string  |     false    | A description of the tool.                       |
33 | 
34 | ## Input Parameters
35 | 
36 | | **parameter** | **type** | **required** | **description**                                                    |
37 | | ------------- | :------: | :----------: | ------------------------------------------------------------------ |
38 | | project       |  string  |     true     | The project ID.                                                    |
39 | | instance      |  string  |     true     | The ID of the instance where the database will be created.         |
40 | | name          |  string  |     true     | The name for the new database. Must be unique within the instance. |
41 | 
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/cloudsql/cloudsqllistinstances.md:
--------------------------------------------------------------------------------

```markdown
 1 | ---
 2 | title: Cloud SQL List Instances
 3 | type: docs
 4 | weight: 1
 5 | description: "List Cloud SQL instances in a project.\n"
 6 | ---
 7 | 
 8 | The `cloud-sql-list-instances` tool lists all Cloud SQL instances in a specified
 9 | Google Cloud project.
10 | 
11 | {{< notice info >}}
12 | This tool uses the `cloud-sql-admin` source, which automatically handles
13 | authentication on behalf of the user.
14 | {{< /notice >}}
15 | 
16 | ## Configuration
17 | 
18 | Here is an example of how to configure the `cloud-sql-list-instances` tool in
19 | your `tools.yaml` file:
20 | 
21 | ```yaml
22 | sources:
23 |   my-cloud-sql-admin-source:
24 |     kind: cloud-sql-admin
25 | 
26 | tools:
27 |   list_my_instances:
28 |     kind: cloud-sql-list-instances
29 |     source: my-cloud-sql-admin-source
30 |     description: Use this tool to list all Cloud SQL instances in a project.
31 | ```
32 | 
33 | ## Parameters
34 | 
35 | The `cloud-sql-list-instances` tool has one required parameter:
36 | 
37 | | **field** | **type** | **required** | **description**              |
38 | | --------- | :------: | :----------: | ---------------------------- |
39 | | project   |  string  |     true     | The Google Cloud project ID. |
40 | 
41 | ## Reference
42 | 
43 | | **field**   | **type** | **required** | **description**                                                |
44 | |-------------|:--------:|:------------:|----------------------------------------------------------------|
45 | | kind        |  string  |     true     | Must be "cloud-sql-list-instances".                            |
46 | | description |  string  |    false     | Description of the tool that is passed to the agent.           |
47 | | source      |  string  |     true     | The name of the `cloud-sql-admin` source to use for this tool. |
48 | 
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/cloudhealthcare/cloud-healthcare-get-dicom-store-metrics.md:
--------------------------------------------------------------------------------

```markdown
 1 | ---
 2 | title: "cloud-healthcare-get-dicom-store-metrics"
 3 | type: docs
 4 | weight: 1
 5 | description: >
 6 |   A "cloud-healthcare-get-dicom-store-metrics" tool retrieves metrics for a DICOM store.
 7 | aliases:
 8 | - /resources/tools/cloud-healthcare-get-dicom-store-metrics
 9 | ---
10 | 
11 | ## About
12 | 
13 | A `cloud-healthcare-get-dicom-store-metrics` tool retrieves metrics for a DICOM
14 | store. It's compatible with the following sources:
15 | 
16 | - [cloud-healthcare](../../sources/cloud-healthcare.md)
17 | 
18 | `cloud-healthcare-get-dicom-store-metrics` returns the metrics of a DICOM store.
19 | 
20 | ## Example
21 | 
22 | ```yaml
23 | tools:
24 |   get_dicom_store_metrics:
25 |     kind: cloud-healthcare-get-dicom-store-metrics
26 |     source: my-healthcare-source
27 |     description: Use this tool to get metrics for a DICOM store.
28 | ```
29 | 
30 | ## Reference
31 | 
32 | | **field**   | **type** | **required** | **description**                                     |
33 | |-------------|:--------:|:------------:|-----------------------------------------------------|
34 | | kind        |  string  |     true     | Must be "cloud-healthcare-get-dicom-store-metrics". |
35 | | source      |  string  |     true     | Name of the healthcare source.                      |
36 | | description |  string  |     true     | Description of the tool that is passed to the LLM.  |
37 | 
38 | ### Parameters
39 | 
40 | | **field** | **type** | **required** | **description**                        |
41 | |-----------|:--------:|:------------:|----------------------------------------|
42 | | storeID   |  string  |    true*     | The DICOM store ID to get metrics for. |
43 | 
44 | *If the `allowedDICOMStores` in the source has length 1, then the `storeID`
45 | parameter is not needed.
46 | 
```

--------------------------------------------------------------------------------
/cmd/options_test.go:
--------------------------------------------------------------------------------

```go
 1 | // Copyright 2024 Google LLC
 2 | //
 3 | // Licensed under the Apache License, Version 2.0 (the "License");
 4 | // you may not use this file except in compliance with the License.
 5 | // You may obtain a copy of the License at
 6 | //
 7 | //     http://www.apache.org/licenses/LICENSE-2.0
 8 | //
 9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 | 
15 | package cmd
16 | 
17 | import (
18 | 	"errors"
19 | 	"io"
20 | 	"testing"
21 | 
22 | 	"github.com/spf13/cobra"
23 | )
24 | 
25 | func TestCommandOptions(t *testing.T) {
26 | 	w := io.Discard
27 | 	tcs := []struct {
28 | 		desc    string
29 | 		isValid func(*Command) error
30 | 		option  Option
31 | 	}{
32 | 		{
33 | 			desc: "with logger",
34 | 			isValid: func(c *Command) error {
35 | 				if c.outStream != w || c.errStream != w {
36 | 					return errors.New("loggers do not match")
37 | 				}
38 | 				return nil
39 | 			},
40 | 			option: WithStreams(w, w),
41 | 		},
42 | 	}
43 | 	for _, tc := range tcs {
44 | 		t.Run(tc.desc, func(t *testing.T) {
45 | 			got, err := invokeProxyWithOption(tc.option)
46 | 			if err != nil {
47 | 				t.Fatal(err)
48 | 			}
49 | 			if err := tc.isValid(got); err != nil {
50 | 				t.Errorf("option did not initialize command correctly: %v", err)
51 | 			}
52 | 		})
53 | 	}
54 | }
55 | 
56 | func invokeProxyWithOption(o Option) (*Command, error) {
57 | 	c := NewCommand(o)
58 | 	// Keep the test output quiet
59 | 	c.SilenceUsage = true
60 | 	c.SilenceErrors = true
61 | 	// Disable execute behavior
62 | 	c.RunE = func(*cobra.Command, []string) error {
63 | 		return nil
64 | 	}
65 | 
66 | 	err := c.Execute()
67 | 	return c, err
68 | }
69 | 
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/alloydb/alloydb-get-user.md:
--------------------------------------------------------------------------------

```markdown
 1 | ---
 2 | title: alloydb-get-user
 3 | type: docs
 4 | weight: 1
 5 | description: "The \"alloydb-get-user\" tool retrieves details for a specific AlloyDB user.\n"
 6 | aliases: [/resources/tools/alloydb-get-user]
 7 | ---
 8 | 
 9 | ## About
10 | 
11 | The `alloydb-get-user` tool retrieves detailed information for a single,
12 | specified AlloyDB user. It is compatible with
13 | [alloydb-admin](../../sources/alloydb-admin.md) source.
14 | 
15 | | Parameter  | Type   | Description                                        | Required |
16 | | :--------- | :----- | :------------------------------------------------- | :------- |
17 | | `project`  | string | The GCP project ID to get user for.                | Yes      |
18 | | `location` | string | The location of the cluster (e.g., 'us-central1'). | Yes      |
19 | | `cluster`  | string | The ID of the cluster to retrieve the user from.   | Yes      |
20 | | `user`     | string | The ID of the user to retrieve.                    | Yes      |
21 | 
22 | ## Example
23 | 
24 | ```yaml
25 | tools:
26 |   get_specific_user:
27 |     kind: alloydb-get-user
28 |     source: my-alloydb-admin-source
29 |     description: Use this tool to retrieve details for a specific AlloyDB user.
30 | ```
31 | 
32 | ## Reference
33 | 
34 | | **field**   | **type** | **required** | **description**                                      |
35 | | ----------- | :------: | :----------: | ---------------------------------------------------- |
36 | | kind        |  string  |     true     | Must be alloydb-get-user.                            |
37 | | source      |  string  |     true     | The name of an `alloydb-admin` source.               |
38 | | description |  string  |     false    | Description of the tool that is passed to the agent. |
39 | 
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/cloudsql/cloudsqllistdatabases.md:
--------------------------------------------------------------------------------

```markdown
 1 | ---
 2 | title: cloud-sql-list-databases
 3 | type: docs
 4 | weight: 1
 5 | description: List Cloud SQL databases in an instance.
 6 | ---
 7 | 
 8 | The `cloud-sql-list-databases` tool lists all Cloud SQL databases in a specified
 9 | Google Cloud project and instance.
10 | 
11 | {{< notice info >}}
12 | This tool uses the `cloud-sql-admin` source.
13 | {{< /notice >}}
14 | 
15 | ## Configuration
16 | 
17 | Here is an example of how to configure the `cloud-sql-list-databases` tool in your
18 | `tools.yaml` file:
19 | 
20 | ```yaml
21 | sources:
22 |   my-cloud-sql-admin-source:
23 |     kind: cloud-sql-admin
24 | 
25 | tools:
26 |   list_my_databases:
27 |     kind: cloud-sql-list-databases
28 |     source: my-cloud-sql-admin-source
29 |     description: Use this tool to list all Cloud SQL databases in an instance.
30 | ```
31 | 
32 | ## Parameters
33 | 
34 | The `cloud-sql-list-databases` tool has two required parameters:
35 | 
36 | | **field** | **type** | **required** | **description**              |
37 | | --------- | :------: | :----------: | ---------------------------- |
38 | | project   |  string  |     true     | The Google Cloud project ID. |
39 | | instance  |  string  |     true     | The Cloud SQL instance ID.   |
40 | 
41 | ## Reference
42 | 
43 | | **field**   | **type** | **required** | **description**                                                |
44 | | ----------- | :------: | :----------: | -------------------------------------------------------------- |
45 | | kind        |  string  |     true     | Must be "cloud-sql-list-databases".                            |
46 | | source      |  string  |     true     | The name of the `cloud-sql-admin` source to use for this tool. |
47 | | description |  string  |     false    | Description of the tool that is passed to the agent.           |
48 | 
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/spanner/spanner-execute-sql.md:
--------------------------------------------------------------------------------

```markdown
 1 | ---
 2 | title: "spanner-execute-sql"
 3 | type: docs
 4 | weight: 1
 5 | description: >
 6 |   A "spanner-execute-sql" tool executes a SQL statement against a Spanner
 7 |   database.
 8 | aliases:
 9 | - /resources/tools/spanner-execute-sql
10 | ---
11 | 
12 | ## About
13 | 
14 | A `spanner-execute-sql` tool executes a SQL statement against a Spanner
15 | database. It's compatible with any of the following sources:
16 | 
17 | - [spanner](../../sources/spanner.md)
18 | 
19 | `spanner-execute-sql` takes one input parameter `sql` and run the sql
20 | statement against the `source`.
21 | 
22 | > **Note:** This tool is intended for developer assistant workflows with
23 | > human-in-the-loop and shouldn't be used for production agents.
24 | 
25 | ## Example
26 | 
27 | ```yaml
28 | tools:
29 |  execute_sql_tool:
30 |     kind: spanner-execute-sql
31 |     source: my-spanner-instance
32 |     description: Use this tool to execute sql statement.
33 | ```
34 | 
35 | ## Reference
36 | 
37 | | **field**   | **type** | **required** | **description**                                                                          |
38 | |-------------|:--------:|:------------:|------------------------------------------------------------------------------------------|
39 | | kind        |  string  |     true     | Must be "spanner-execute-sql".                                                           |
40 | | source      |  string  |     true     | Name of the source the SQL should execute on.                                            |
41 | | description |  string  |     true     | Description of the tool that is passed to the LLM.                                       |
42 | | readOnly    |   bool   |    false     | When set to `true`, the `statement` is run as a read-only transaction. Default: `false`. |
43 | 
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/firestore/firestore-list-collections.md:
--------------------------------------------------------------------------------

```markdown
 1 | ---
 2 | title: "firestore-list-collections"
 3 | type: docs
 4 | weight: 1
 5 | description: >
 6 |   A "firestore-list-collections" tool lists collections in Firestore, either at the root level or as subcollections of a document.
 7 | aliases:
 8 | - /resources/tools/firestore-list-collections
 9 | ---
10 | 
11 | ## About
12 | 
13 | A `firestore-list-collections` tool lists
14 | [collections](https://firebase.google.com/docs/firestore/data-model#collections)
15 | in Firestore, either at the root level or as
16 | [subcollections](https://firebase.google.com/docs/firestore/data-model#subcollections)
17 | of a specific document.
18 | It's compatible with the following sources:
19 | 
20 | - [firestore](../../sources/firestore.md)
21 | 
22 | `firestore-list-collections` takes an optional `parentPath` parameter to specify
23 | a document path. If provided, it lists all subcollections of that document. If
24 | not provided, it lists all root-level collections in the database.
25 | 
26 | ## Example
27 | 
28 | ```yaml
29 | tools:
30 |   list_firestore_collections:
31 |     kind: firestore-list-collections
32 |     source: my-firestore-source
33 |     description: Use this tool to list collections in Firestore.
34 | ```
35 | 
36 | ## Reference
37 | 
38 | | **field**   |      **type**    | **required** | **description**                                        |
39 | |-------------|:----------------:|:------------:|--------------------------------------------------------|
40 | | kind        |      string      |     true     | Must be "firestore-list-collections".                  |
41 | | source      |      string      |     true     | Name of the Firestore source to list collections from. |
42 | | description |      string      |     true     | Description of the tool that is passed to the LLM.     |
43 | 
```
Page 2/76FirstPrevNextLast