#
tokens: 49415/50000 40/1089 files (page 4/76)
lines: on (toggle) GitHub
raw markdown copy reset
This is page 4 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

--------------------------------------------------------------------------------
/internal/prebuiltconfigs/tools/mindsdb.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 |   mindsdb:
17 |     kind: mindsdb
18 |     host: ${MINDSDB_HOST}
19 |     port: ${MINDSDB_PORT}
20 |     database: ${MINDSDB_DATABASE}
21 |     user: ${MINDSDB_USER}
22 |     password: ${MINDSDB_PASS}
23 | 
24 | tools:
25 |   mindsdb-execute-sql:
26 |     kind: mindsdb-execute-sql
27 |     source: mindsdb
28 |     description: |
29 |       Execute SQL queries directly on MindsDB database.
30 |       Use this tool to run any SQL statement against your MindsDB instance.
31 |       Example: SELECT * FROM my_table LIMIT 10
32 | 
33 |   mindsdb-sql:
34 |     kind: mindsdb-sql
35 |     source: mindsdb
36 |     statement: |
37 |       SELECT * FROM {{.table_name}} 
38 |       WHERE {{.condition_column}} = ?
39 |       LIMIT {{.limit}}
40 |     description: |
41 |       Execute parameterized SQL queries on MindsDB database.
42 |       Use this tool to run parameterized SQL statements against your MindsDB instance.
43 |       Example: {"table_name": "users", "condition_column": "status", "limit": 10}
44 |     templateParameters:
45 |       - name: table_name
46 |         type: string
47 |         description: Name of the table to query
48 |       - name: condition_column
49 |         type: string
50 |         description: Column name to use in WHERE clause
51 |       - name: limit
52 |         type: integer
53 |         description: Maximum number of rows to return
54 |     parameters:
55 |       - name: value
56 |         type: string
57 |         description: Value to match in the WHERE clause 
58 | 
59 | toolsets:
60 |   mindsdb-tools:
61 |       - mindsdb-execute-sql
62 |       - mindsdb-sql
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/looker/looker-query-sql.md:
--------------------------------------------------------------------------------

```markdown
 1 | ---
 2 | title: "looker-query-sql"
 3 | type: docs
 4 | weight: 1
 5 | description: >
 6 |   "looker-query-sql" generates a sql query using the Looker
 7 |   semantic model.
 8 | aliases:
 9 | - /resources/tools/looker-query-sql
10 | ---
11 | 
12 | ## About
13 | 
14 | The `looker-query-sql` generates a sql query using the Looker
15 | semantic model.
16 | 
17 | It's compatible with the following sources:
18 | 
19 | - [looker](../../sources/looker.md)
20 | 
21 | `looker-query-sql` takes eight parameters:
22 | 
23 | 1. the `model`
24 | 2. the `explore`
25 | 3. the `fields` list
26 | 4. an optional set of `filters`
27 | 5. an optional set of `pivots`
28 | 6. an optional set of `sorts`
29 | 7. an optional `limit`
30 | 8. an optional `tz`
31 | 
32 | Starting in Looker v25.18, these queries can be identified in Looker's
33 | System Activity. In the History explore, use the field API Client Name
34 | to find MCP Toolbox queries.
35 | 
36 | ## Example
37 | 
38 | ```yaml
39 | tools:
40 |     query_sql:
41 |         kind: looker-query-sql
42 |         source: looker-source
43 |         description: |
44 |           This tool generates the underlying SQL query that Looker would execute
45 |           against the database for a given set of parameters. It is useful for
46 |           understanding how Looker translates a request into SQL.
47 | 
48 |           Parameters:
49 |           All parameters for this tool are identical to those of the `query` tool.
50 |           This includes `model_name`, `explore_name`, `fields` (required),
51 |           and optional parameters like `pivots`, `filters`, `sorts`, `limit`, and `query_timezone`.
52 | 
53 |           Output:
54 |           The result of this tool is the raw SQL text.
55 | ```
56 | 
57 | ## Reference
58 | 
59 | | **field**   | **type** | **required** | **description**                                    |
60 | |-------------|:--------:|:------------:|----------------------------------------------------|
61 | | kind        |  string  |     true     | Must be "looker-query-sql"                         |
62 | | source      |  string  |     true     | Name of the source the SQL should execute on.      |
63 | | description |  string  |     true     | Description of the tool that is passed to the LLM. |
64 | 
```

--------------------------------------------------------------------------------
/docs/en/getting-started/quickstart/python/langchain/quickstart.py:
--------------------------------------------------------------------------------

```python
 1 | import asyncio
 2 | 
 3 | from langgraph.prebuilt import create_react_agent
 4 | 
 5 | # TODO(developer): replace this with another import if needed
 6 | 
 7 | from langchain_google_vertexai import ChatVertexAI
 8 | 
 9 | # from langchain_google_genai import ChatGoogleGenerativeAI
10 | 
11 | # from langchain_anthropic import ChatAnthropic
12 | 
13 | from langgraph.checkpoint.memory import MemorySaver
14 | 
15 | from toolbox_langchain import ToolboxClient
16 | 
17 | prompt = """
18 |   You're a helpful hotel assistant. You handle hotel searching, booking and
19 |   cancellations. When the user searches for a hotel, mention it's name, id,
20 |   location and price tier. Always mention hotel ids while performing any
21 |   searches. This is very important for any operations. For any bookings or
22 |   cancellations, please provide the appropriate confirmation. Be sure to
23 |   update checkin or checkout dates if mentioned by the user.
24 |   Don't ask for confirmations from the user.
25 | """
26 | 
27 | queries = [
28 |     "Find hotels in Basel with Basel in its name.",
29 |     "Can you book the Hilton Basel for me?",
30 |     "Oh wait, this is too expensive. Please cancel it and book the Hyatt Regency instead.",
31 |     "My check in dates would be from April 10, 2024 to April 19, 2024.",
32 | ]
33 | 
34 | async def main():
35 |     # TODO(developer): replace this with another model if needed
36 |     model = ChatVertexAI(model_name="gemini-2.0-flash-001")
37 |     # model = ChatGoogleGenerativeAI(model="gemini-2.0-flash-001")
38 |     # model = ChatAnthropic(model="claude-3-5-sonnet-20240620")
39 | 
40 |     # Load the tools from the Toolbox server
41 |     async with ToolboxClient("http://127.0.0.1:5000") as client:
42 |         tools = await client.aload_toolset()
43 | 
44 |         agent = create_react_agent(model, tools, checkpointer=MemorySaver())
45 | 
46 |         config = {"configurable": {"thread_id": "thread-1"}}
47 |         for query in queries:
48 |             inputs = {"messages": [("user", prompt + query)]}
49 |             response = agent.invoke(inputs, stream_mode="values", config=config)
50 |             print(response["messages"][-1].content)
51 | 
52 | asyncio.run(main())
53 | 
```

--------------------------------------------------------------------------------
/internal/tools/utility/wait/wait_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 wait_test
16 | 
17 | import (
18 | 	"testing"
19 | 
20 | 	yaml "github.com/goccy/go-yaml"
21 | 	"github.com/google/go-cmp/cmp"
22 | 	"github.com/googleapis/genai-toolbox/internal/server"
23 | 	"github.com/googleapis/genai-toolbox/internal/testutils"
24 | 
25 | 	wait "github.com/googleapis/genai-toolbox/internal/tools/utility/wait"
26 | )
27 | 
28 | func TestParseFromYamlWait(t *testing.T) {
29 | 	ctx, err := testutils.ContextWithNewLogger()
30 | 	if err != nil {
31 | 		t.Fatalf("unexpected error: %s", err)
32 | 	}
33 | 	tcs := []struct {
34 | 		desc string
35 | 		in   string
36 | 		want server.ToolConfigs
37 | 	}{
38 | 		{
39 | 			desc: "basic example",
40 | 			in: `
41 | 			tools:
42 | 				example_tool:
43 | 					kind: wait
44 | 					description: some description
45 | 					timeout: 10s
46 | 					authRequired:
47 | 						- my-google-auth-service
48 | 			`,
49 | 			want: server.ToolConfigs{
50 | 				"example_tool": wait.Config{
51 | 					Name:         "example_tool",
52 | 					Kind:         "wait",
53 | 					Description:  "some description",
54 | 					Timeout:      "10s",
55 | 					AuthRequired: []string{"my-google-auth-service"},
56 | 				},
57 | 			},
58 | 		},
59 | 	}
60 | 	for _, tc := range tcs {
61 | 		t.Run(tc.desc, func(t *testing.T) {
62 | 			got := struct {
63 | 				Tools server.ToolConfigs `yaml:"tools"`
64 | 			}{}
65 | 			// Parse contents
66 | 			err := yaml.UnmarshalContext(ctx, testutils.FormatYaml(tc.in), &got)
67 | 			if err != nil {
68 | 				t.Fatalf("unable to unmarshal: %s", err)
69 | 			}
70 | 			if diff := cmp.Diff(tc.want, got.Tools); diff != "" {
71 | 				t.Fatalf("incorrect parse: diff %v", diff)
72 | 			}
73 | 		})
74 | 	}
75 | }
76 | 
```

--------------------------------------------------------------------------------
/internal/tools/cloudsql/cloudsqlcreateusers/cloudsqlcreateusers_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 cloudsqlcreateusers_test
16 | 
17 | import (
18 | 	"testing"
19 | 
20 | 	"github.com/goccy/go-yaml"
21 | 	"github.com/google/go-cmp/cmp"
22 | 	"github.com/googleapis/genai-toolbox/internal/server"
23 | 	"github.com/googleapis/genai-toolbox/internal/testutils"
24 | 	"github.com/googleapis/genai-toolbox/internal/tools/cloudsql/cloudsqlcreateusers"
25 | )
26 | 
27 | func TestParseFromYaml(t *testing.T) {
28 | 	ctx, err := testutils.ContextWithNewLogger()
29 | 	if err != nil {
30 | 		t.Fatalf("unexpected error: %s", err)
31 | 	}
32 | 	tcs := []struct {
33 | 		desc string
34 | 		in   string
35 | 		want server.ToolConfigs
36 | 	}{
37 | 		{
38 | 			desc: "basic example",
39 | 			in: `
40 | 			tools:
41 | 				create-user:
42 | 					kind: cloud-sql-create-users
43 | 					source: my-source
44 | 					description: some description
45 | 			`,
46 | 			want: server.ToolConfigs{
47 | 				"create-user": cloudsqlcreateusers.Config{
48 | 					Name:         "create-user",
49 | 					Kind:         "cloud-sql-create-users",
50 | 					Source:       "my-source",
51 | 					Description:  "some description",
52 | 					AuthRequired: []string{},
53 | 				},
54 | 			},
55 | 		},
56 | 	}
57 | 	for _, tc := range tcs {
58 | 		t.Run(tc.desc, func(t *testing.T) {
59 | 			got := struct {
60 | 				Tools server.ToolConfigs `yaml:"tools"`
61 | 			}{}
62 | 			// Parse contents
63 | 			err := yaml.UnmarshalContext(ctx, testutils.FormatYaml(tc.in), &got)
64 | 			if err != nil {
65 | 				t.Fatalf("unable to unmarshal: %s", err)
66 | 			}
67 | 			if diff := cmp.Diff(tc.want, got.Tools); diff != "" {
68 | 				t.Fatalf("incorrect parse: diff %v", diff)
69 | 			}
70 | 		})
71 | 	}
72 | }
73 | 
```

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

```markdown
 1 | ---
 2 | title: "Neo4j"
 3 | type: docs
 4 | weight: 1
 5 | description: >
 6 |   Neo4j is a powerful, open source graph database system
 7 | 
 8 | ---
 9 | 
10 | ## About
11 | 
12 | [Neo4j][neo4j-docs] is a powerful, open source graph database system with over
13 | 15 years of active development that has earned it a strong reputation for
14 | reliability, feature robustness, and performance.
15 | 
16 | [neo4j-docs]: https://neo4j.com/docs
17 | 
18 | ## Available Tools
19 | 
20 | - [`neo4j-cypher`](../tools/neo4j/neo4j-cypher.md)  
21 |   Run Cypher queries against your Neo4j graph database.
22 | 
23 | ## Requirements
24 | 
25 | ### Database User
26 | 
27 | This source only uses standard authentication. You will need to [create a Neo4j
28 | user][neo4j-users] to log in to the database with, or use the default `neo4j`
29 | user if available.
30 | 
31 | [neo4j-users]: https://neo4j.com/docs/operations-manual/current/authentication-authorization/manage-users/
32 | 
33 | ## Example
34 | 
35 | ```yaml
36 | sources:
37 |     my-neo4j-source:
38 |         kind: neo4j
39 |         uri: neo4j+s://xxxx.databases.neo4j.io:7687
40 |         user: ${USER_NAME}
41 |         password: ${PASSWORD}
42 |         database: "neo4j"
43 | ```
44 | 
45 | {{< notice tip >}}
46 | Use environment variable replacement with the format ${ENV_NAME}
47 | instead of hardcoding your secrets into the configuration file.
48 | {{< /notice >}}
49 | 
50 | ## Reference
51 | 
52 | | **field** | **type** | **required** | **description**                                                      |
53 | |-----------|:--------:|:------------:|----------------------------------------------------------------------|
54 | | kind      |  string  |     true     | Must be "neo4j".                                                     |
55 | | uri       |  string  |     true     | Connect URI ("bolt://localhost", "neo4j+s://xxx.databases.neo4j.io") |
56 | | user      |  string  |     true     | Name of the Neo4j user to connect as (e.g. "neo4j").                 |
57 | | password  |  string  |     true     | Password of the Neo4j user (e.g. "my-password").                     |
58 | | database  |  string  |     true     | Name of the Neo4j database to connect to (e.g. "neo4j").             |
59 | 
```

--------------------------------------------------------------------------------
/internal/tools/bigquery/bigqueryforecast/bigqueryforecast_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 bigqueryforecast_test
16 | 
17 | import (
18 | 	"testing"
19 | 
20 | 	yaml "github.com/goccy/go-yaml"
21 | 	"github.com/google/go-cmp/cmp"
22 | 	"github.com/googleapis/genai-toolbox/internal/server"
23 | 	"github.com/googleapis/genai-toolbox/internal/testutils"
24 | 	"github.com/googleapis/genai-toolbox/internal/tools/bigquery/bigqueryforecast"
25 | )
26 | 
27 | func TestParseFromYamlBigQueryForecast(t *testing.T) {
28 | 	ctx, err := testutils.ContextWithNewLogger()
29 | 	if err != nil {
30 | 		t.Fatalf("unexpected error: %s", err)
31 | 	}
32 | 	tcs := []struct {
33 | 		desc string
34 | 		in   string
35 | 		want server.ToolConfigs
36 | 	}{
37 | 		{
38 | 			desc: "basic example",
39 | 			in: `
40 | 			tools:
41 | 				example_tool:
42 | 					kind: bigquery-forecast
43 | 					source: my-instance
44 | 					description: some description
45 | 			`,
46 | 			want: server.ToolConfigs{
47 | 				"example_tool": bigqueryforecast.Config{
48 | 					Name:         "example_tool",
49 | 					Kind:         "bigquery-forecast",
50 | 					Source:       "my-instance",
51 | 					Description:  "some description",
52 | 					AuthRequired: []string{},
53 | 				},
54 | 			},
55 | 		},
56 | 	}
57 | 	for _, tc := range tcs {
58 | 		t.Run(tc.desc, func(t *testing.T) {
59 | 			got := struct {
60 | 				Tools server.ToolConfigs `yaml:"tools"`
61 | 			}{}
62 | 			// Parse contents
63 | 			err := yaml.UnmarshalContext(ctx, testutils.FormatYaml(tc.in), &got)
64 | 			if err != nil {
65 | 				t.Fatalf("unable to unmarshal: %s", err)
66 | 			}
67 | 			if diff := cmp.Diff(tc.want, got.Tools); diff != "" {
68 | 				t.Fatalf("incorrect parse: diff %v", diff)
69 | 			}
70 | 		})
71 | 	}
72 | 
73 | }
74 | 
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/mysql/mysql-list-tables-missing-unique-indexes.md:
--------------------------------------------------------------------------------

```markdown
 1 | ---
 2 | title: "mysql-list-tables-missing-unique-indexes"
 3 | type: docs
 4 | weight: 1
 5 | description: >
 6 |   A "mysql-list-tables-missing-unique-indexes" tool lists tables that do not have primary or unique indices in a MySQL instance.
 7 | aliases:
 8 | - /resources/tools/mysql-list-tables-missing-unique-indexes
 9 | ---
10 | 
11 | ## About
12 | 
13 | A `mysql-list-tables-missing-unique-indexes` tool searches tables that do not
14 | have primary or unique indices in a MySQL database. It's compatible with:
15 | 
16 | - [cloud-sql-mysql](../../sources/cloud-sql-mysql.md)
17 | - [mysql](../../sources/mysql.md)
18 | 
19 | `mysql-list-tables-missing-unique-indexes` outputs table names, including
20 | `table_schema` and `table_name` in JSON format. It takes 2 optional input
21 | parameters:
22 | 
23 | - `table_schema` (optional): Only check tables in this specific schema/database.
24 |   Search all visible tables in all visible databases if not specified.
25 | - `limit` (optional):  max number of queries to return, default `50`.
26 | 
27 | ## Example
28 | 
29 | ```yaml
30 | tools:
31 |   list_tables_missing_unique_indexes:
32 |     kind: mysql-list-tables-missing-unique-indexes
33 |     source: my-mysql-instance
34 |     description: Find tables that do not have primary or unique key constraint. A primary key or unique key is the only mechanism that guaranttes a row is unique. Without them, the database-level protection against data integrity issues will be missing.
35 | ```
36 | 
37 | The response is a json array with the following fields:
38 | 
39 | ```json
40 | {
41 |   "table_schema": "the schema/database this table belongs to",
42 |   "table_name": "name of the table",
43 | }
44 | ```
45 | 
46 | ## Reference
47 | 
48 | | **field**   | **type** | **required** | **description**                                    |
49 | |-------------|:--------:|:------------:|----------------------------------------------------|
50 | | kind        |  string  |     true     | Must be "mysql-list-active-queries".               |
51 | | source      |  string  |     true     | Name of the source the SQL should execute on.      |
52 | | description |  string  |     true     | Description of the tool that is passed to the LLM. |
53 | 
```

--------------------------------------------------------------------------------
/internal/tools/bigquery/bigqueryexecutesql/bigqueryexecutesql_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 bigqueryexecutesql_test
16 | 
17 | import (
18 | 	"testing"
19 | 
20 | 	yaml "github.com/goccy/go-yaml"
21 | 	"github.com/google/go-cmp/cmp"
22 | 	"github.com/googleapis/genai-toolbox/internal/server"
23 | 	"github.com/googleapis/genai-toolbox/internal/testutils"
24 | 	"github.com/googleapis/genai-toolbox/internal/tools/bigquery/bigqueryexecutesql"
25 | )
26 | 
27 | func TestParseFromYamlBigQueryExecuteSql(t *testing.T) {
28 | 	ctx, err := testutils.ContextWithNewLogger()
29 | 	if err != nil {
30 | 		t.Fatalf("unexpected error: %s", err)
31 | 	}
32 | 	tcs := []struct {
33 | 		desc string
34 | 		in   string
35 | 		want server.ToolConfigs
36 | 	}{
37 | 		{
38 | 			desc: "basic example",
39 | 			in: `
40 | 			tools:
41 | 				example_tool:
42 | 					kind: bigquery-execute-sql
43 | 					source: my-instance
44 | 					description: some description
45 | 			`,
46 | 			want: server.ToolConfigs{
47 | 				"example_tool": bigqueryexecutesql.Config{
48 | 					Name:         "example_tool",
49 | 					Kind:         "bigquery-execute-sql",
50 | 					Source:       "my-instance",
51 | 					Description:  "some description",
52 | 					AuthRequired: []string{},
53 | 				},
54 | 			},
55 | 		},
56 | 	}
57 | 	for _, tc := range tcs {
58 | 		t.Run(tc.desc, func(t *testing.T) {
59 | 			got := struct {
60 | 				Tools server.ToolConfigs `yaml:"tools"`
61 | 			}{}
62 | 			// Parse contents
63 | 			err := yaml.UnmarshalContext(ctx, testutils.FormatYaml(tc.in), &got)
64 | 			if err != nil {
65 | 				t.Fatalf("unable to unmarshal: %s", err)
66 | 			}
67 | 			if diff := cmp.Diff(tc.want, got.Tools); diff != "" {
68 | 				t.Fatalf("incorrect parse: diff %v", diff)
69 | 			}
70 | 		})
71 | 	}
72 | 
73 | }
74 | 
```

--------------------------------------------------------------------------------
/internal/tools/cloudsql/cloudsqlcreatedatabase/cloudsqlcreatedatabase_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 cloudsqlcreatedatabase_test
16 | 
17 | import (
18 | 	"testing"
19 | 
20 | 	"github.com/goccy/go-yaml"
21 | 	"github.com/google/go-cmp/cmp"
22 | 	"github.com/googleapis/genai-toolbox/internal/server"
23 | 	"github.com/googleapis/genai-toolbox/internal/testutils"
24 | 	"github.com/googleapis/genai-toolbox/internal/tools/cloudsql/cloudsqlcreatedatabase"
25 | )
26 | 
27 | func TestParseFromYaml(t *testing.T) {
28 | 	ctx, err := testutils.ContextWithNewLogger()
29 | 	if err != nil {
30 | 		t.Fatalf("unexpected error: %s", err)
31 | 	}
32 | 	tcs := []struct {
33 | 		desc string
34 | 		in   string
35 | 		want server.ToolConfigs
36 | 	}{
37 | 		{
38 | 			desc: "basic example",
39 | 			in: `
40 | 			tools:
41 | 				create-database:
42 | 					kind: cloud-sql-create-database
43 | 					source: my-source
44 | 					description: some description
45 | 			`,
46 | 			want: server.ToolConfigs{
47 | 				"create-database": cloudsqlcreatedatabase.Config{
48 | 					Name:         "create-database",
49 | 					Kind:         "cloud-sql-create-database",
50 | 					Source:       "my-source",
51 | 					Description:  "some description",
52 | 					AuthRequired: []string{},
53 | 				},
54 | 			},
55 | 		},
56 | 	}
57 | 	for _, tc := range tcs {
58 | 		t.Run(tc.desc, func(t *testing.T) {
59 | 			got := struct {
60 | 				Tools server.ToolConfigs `yaml:"tools"`
61 | 			}{}
62 | 			// Parse contents
63 | 			err := yaml.UnmarshalContext(ctx, testutils.FormatYaml(tc.in), &got)
64 | 			if err != nil {
65 | 				t.Fatalf("unable to unmarshal: %s", err)
66 | 			}
67 | 			if diff := cmp.Diff(tc.want, got.Tools); diff != "" {
68 | 				t.Fatalf("incorrect parse: diff %v", diff)
69 | 			}
70 | 		})
71 | 	}
72 | }
73 | 
```

--------------------------------------------------------------------------------
/internal/tools/serverlessspark/serverlesssparkgetbatch/serverlesssparkgetbatch_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 serverlesssparkgetbatch_test
16 | 
17 | import (
18 | 	"testing"
19 | 
20 | 	"github.com/goccy/go-yaml"
21 | 	"github.com/google/go-cmp/cmp"
22 | 	"github.com/googleapis/genai-toolbox/internal/server"
23 | 	"github.com/googleapis/genai-toolbox/internal/testutils"
24 | 	"github.com/googleapis/genai-toolbox/internal/tools/serverlessspark/serverlesssparkgetbatch"
25 | )
26 | 
27 | func TestParseFromYaml(t *testing.T) {
28 | 	ctx, err := testutils.ContextWithNewLogger()
29 | 	if err != nil {
30 | 		t.Fatalf("unexpected error: %s", err)
31 | 	}
32 | 	tcs := []struct {
33 | 		desc string
34 | 		in   string
35 | 		want server.ToolConfigs
36 | 	}{
37 | 		{
38 | 			desc: "basic example",
39 | 			in: `
40 | 			tools:
41 | 				example_tool:
42 | 					kind: serverless-spark-get-batch
43 | 					source: my-instance
44 | 					description: some description
45 | 			`,
46 | 			want: server.ToolConfigs{
47 | 				"example_tool": serverlesssparkgetbatch.Config{
48 | 					Name:         "example_tool",
49 | 					Kind:         "serverless-spark-get-batch",
50 | 					Source:       "my-instance",
51 | 					Description:  "some description",
52 | 					AuthRequired: []string{},
53 | 				},
54 | 			},
55 | 		},
56 | 	}
57 | 	for _, tc := range tcs {
58 | 		t.Run(tc.desc, func(t *testing.T) {
59 | 			got := struct {
60 | 				Tools server.ToolConfigs `yaml:"tools"`
61 | 			}{}
62 | 			err := yaml.UnmarshalContext(ctx, testutils.FormatYaml(tc.in), &got, yaml.Strict())
63 | 			if err != nil {
64 | 				t.Fatalf("unable to unmarshal: %s", err)
65 | 			}
66 | 
67 | 			if diff := cmp.Diff(tc.want, got.Tools); diff != "" {
68 | 				t.Fatalf("incorrect parse: diff %v", diff)
69 | 			}
70 | 		})
71 | 	}
72 | }
73 | 
```

--------------------------------------------------------------------------------
/internal/tools/cloudsql/cloudsqllistdatabases/cloudsqllistdatabases_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 cloudsqllistdatabases_test
16 | 
17 | import (
18 | 	"testing"
19 | 
20 | 	"github.com/goccy/go-yaml"
21 | 	"github.com/google/go-cmp/cmp"
22 | 	"github.com/googleapis/genai-toolbox/internal/server"
23 | 	"github.com/googleapis/genai-toolbox/internal/testutils"
24 | 	"github.com/googleapis/genai-toolbox/internal/tools/cloudsql/cloudsqllistdatabases"
25 | )
26 | 
27 | func TestParseFromYaml(t *testing.T) {
28 | 	ctx, err := testutils.ContextWithNewLogger()
29 | 	if err != nil {
30 | 		t.Fatalf("unexpected error: %s", err)
31 | 	}
32 | 	tcs := []struct {
33 | 		desc string
34 | 		in   string
35 | 		want server.ToolConfigs
36 | 	}{
37 | 		{
38 | 			desc: "basic example",
39 | 			in: `
40 | 			tools:
41 | 				list-my-databases:
42 | 					kind: cloud-sql-list-databases
43 | 					description: some description
44 | 					source: some-source
45 | 			`,
46 | 			want: server.ToolConfigs{
47 | 				"list-my-databases": cloudsqllistdatabases.Config{
48 | 					Name:         "list-my-databases",
49 | 					Kind:         "cloud-sql-list-databases",
50 | 					Description:  "some description",
51 | 					AuthRequired: []string{},
52 | 					Source:       "some-source",
53 | 				},
54 | 			},
55 | 		},
56 | 	}
57 | 	for _, tc := range tcs {
58 | 		t.Run(tc.desc, func(t *testing.T) {
59 | 			got := struct {
60 | 				Tools server.ToolConfigs `yaml:"tools"`
61 | 			}{}
62 | 			// Parse contents
63 | 			err := yaml.UnmarshalContext(ctx, testutils.FormatYaml(tc.in), &got)
64 | 			if err != nil {
65 | 				t.Fatalf("unable to unmarshal: %s", err)
66 | 			}
67 | 			if diff := cmp.Diff(tc.want, got.Tools); diff != "" {
68 | 				t.Fatalf("incorrect parse: diff %v", diff)
69 | 			}
70 | 		})
71 | 	}
72 | }
73 | 
```

--------------------------------------------------------------------------------
/internal/tools/bigquery/bigquerysearchcatalog/bigquerysearchcatalog_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 bigquerysearchcatalog_test
16 | 
17 | import (
18 | 	"testing"
19 | 
20 | 	yaml "github.com/goccy/go-yaml"
21 | 	"github.com/google/go-cmp/cmp"
22 | 	"github.com/googleapis/genai-toolbox/internal/server"
23 | 	"github.com/googleapis/genai-toolbox/internal/testutils"
24 | 	"github.com/googleapis/genai-toolbox/internal/tools/bigquery/bigquerysearchcatalog"
25 | )
26 | 
27 | func TestParseFromYamlBigQuerySearch(t *testing.T) {
28 | 	ctx, err := testutils.ContextWithNewLogger()
29 | 	if err != nil {
30 | 		t.Fatalf("unexpected error: %s", err)
31 | 	}
32 | 	tcs := []struct {
33 | 		desc string
34 | 		in   string
35 | 		want server.ToolConfigs
36 | 	}{
37 | 		{
38 | 			desc: "basic example",
39 | 			in: `
40 | 			tools:
41 | 				example_tool:
42 | 					kind: bigquery-search-catalog
43 | 					source: my-instance
44 | 					description: some description
45 | 			`,
46 | 			want: server.ToolConfigs{
47 | 				"example_tool": bigquerysearchcatalog.Config{
48 | 					Name:         "example_tool",
49 | 					Kind:         "bigquery-search-catalog",
50 | 					Source:       "my-instance",
51 | 					Description:  "some description",
52 | 					AuthRequired: []string{},
53 | 				},
54 | 			},
55 | 		},
56 | 	}
57 | 	for _, tc := range tcs {
58 | 		t.Run(tc.desc, func(t *testing.T) {
59 | 			got := struct {
60 | 				Tools server.ToolConfigs `yaml:"tools"`
61 | 			}{}
62 | 			// Parse contents
63 | 			err := yaml.UnmarshalContext(ctx, testutils.FormatYaml(tc.in), &got)
64 | 			if err != nil {
65 | 				t.Fatalf("unable to unmarshal: %s", err)
66 | 			}
67 | 			if diff := cmp.Diff(tc.want, got.Tools); diff != "" {
68 | 				t.Fatalf("incorrect parse: diff %v", diff)
69 | 			}
70 | 		})
71 | 	}
72 | }
73 | 
```

--------------------------------------------------------------------------------
/internal/tools/bigquery/bigquerygettableinfo/bigquerygettableinfo_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 bigquerygettableinfo_test
16 | 
17 | import (
18 | 	"testing"
19 | 
20 | 	yaml "github.com/goccy/go-yaml"
21 | 	"github.com/google/go-cmp/cmp"
22 | 	"github.com/googleapis/genai-toolbox/internal/server"
23 | 	"github.com/googleapis/genai-toolbox/internal/testutils"
24 | 	"github.com/googleapis/genai-toolbox/internal/tools/bigquery/bigquerygettableinfo"
25 | )
26 | 
27 | func TestParseFromYamlBigQueryGetTableInfo(t *testing.T) {
28 | 	ctx, err := testutils.ContextWithNewLogger()
29 | 	if err != nil {
30 | 		t.Fatalf("unexpected error: %s", err)
31 | 	}
32 | 	tcs := []struct {
33 | 		desc string
34 | 		in   string
35 | 		want server.ToolConfigs
36 | 	}{
37 | 		{
38 | 			desc: "basic example",
39 | 			in: `
40 | 			tools:
41 | 				example_tool:
42 | 					kind: bigquery-get-table-info
43 | 					source: my-instance
44 | 					description: some description
45 | 			`,
46 | 			want: server.ToolConfigs{
47 | 				"example_tool": bigquerygettableinfo.Config{
48 | 					Name:         "example_tool",
49 | 					Kind:         "bigquery-get-table-info",
50 | 					Source:       "my-instance",
51 | 					Description:  "some description",
52 | 					AuthRequired: []string{},
53 | 				},
54 | 			},
55 | 		},
56 | 	}
57 | 	for _, tc := range tcs {
58 | 		t.Run(tc.desc, func(t *testing.T) {
59 | 			got := struct {
60 | 				Tools server.ToolConfigs `yaml:"tools"`
61 | 			}{}
62 | 			// Parse contents
63 | 			err := yaml.UnmarshalContext(ctx, testutils.FormatYaml(tc.in), &got)
64 | 			if err != nil {
65 | 				t.Fatalf("unable to unmarshal: %s", err)
66 | 			}
67 | 			if diff := cmp.Diff(tc.want, got.Tools); diff != "" {
68 | 				t.Fatalf("incorrect parse: diff %v", diff)
69 | 			}
70 | 		})
71 | 	}
72 | 
73 | }
74 | 
```

--------------------------------------------------------------------------------
/internal/tools/bigquery/bigquerylisttableids/bigquerylisttableids_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 bigquerylisttableids_test
16 | 
17 | import (
18 | 	"testing"
19 | 
20 | 	yaml "github.com/goccy/go-yaml"
21 | 	"github.com/google/go-cmp/cmp"
22 | 	"github.com/googleapis/genai-toolbox/internal/server"
23 | 	"github.com/googleapis/genai-toolbox/internal/testutils"
24 | 	"github.com/googleapis/genai-toolbox/internal/tools/bigquery/bigquerylisttableids"
25 | )
26 | 
27 | func TestParseFromYamlBigQueryListTableIds(t *testing.T) {
28 | 	ctx, err := testutils.ContextWithNewLogger()
29 | 	if err != nil {
30 | 		t.Fatalf("unexpected error: %s", err)
31 | 	}
32 | 	tcs := []struct {
33 | 		desc string
34 | 		in   string
35 | 		want server.ToolConfigs
36 | 	}{
37 | 		{
38 | 			desc: "basic example",
39 | 			in: `
40 | 			tools:
41 | 				example_tool:
42 | 					kind: bigquery-list-table-ids
43 | 					source: my-instance
44 | 					description: some description
45 | 			`,
46 | 			want: server.ToolConfigs{
47 | 				"example_tool": bigquerylisttableids.Config{
48 | 					Name:         "example_tool",
49 | 					Kind:         "bigquery-list-table-ids",
50 | 					Source:       "my-instance",
51 | 					Description:  "some description",
52 | 					AuthRequired: []string{},
53 | 				},
54 | 			},
55 | 		},
56 | 	}
57 | 	for _, tc := range tcs {
58 | 		t.Run(tc.desc, func(t *testing.T) {
59 | 			got := struct {
60 | 				Tools server.ToolConfigs `yaml:"tools"`
61 | 			}{}
62 | 			// Parse contents
63 | 			err := yaml.UnmarshalContext(ctx, testutils.FormatYaml(tc.in), &got)
64 | 			if err != nil {
65 | 				t.Fatalf("unable to unmarshal: %s", err)
66 | 			}
67 | 			if diff := cmp.Diff(tc.want, got.Tools); diff != "" {
68 | 				t.Fatalf("incorrect parse: diff %v", diff)
69 | 			}
70 | 		})
71 | 	}
72 | 
73 | }
74 | 
```

--------------------------------------------------------------------------------
/internal/tools/dataplex/dataplexsearchentries/dataplexsearchentries_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 dataplexsearchentries_test
16 | 
17 | import (
18 | 	"testing"
19 | 
20 | 	yaml "github.com/goccy/go-yaml"
21 | 	"github.com/google/go-cmp/cmp"
22 | 	"github.com/googleapis/genai-toolbox/internal/server"
23 | 	"github.com/googleapis/genai-toolbox/internal/testutils"
24 | 	"github.com/googleapis/genai-toolbox/internal/tools/dataplex/dataplexsearchentries"
25 | )
26 | 
27 | func TestParseFromYamlDataplexSearchEntries(t *testing.T) {
28 | 	ctx, err := testutils.ContextWithNewLogger()
29 | 	if err != nil {
30 | 		t.Fatalf("unexpected error: %s", err)
31 | 	}
32 | 	tcs := []struct {
33 | 		desc string
34 | 		in   string
35 | 		want server.ToolConfigs
36 | 	}{
37 | 		{
38 | 			desc: "basic example",
39 | 			in: `
40 | 			tools:
41 | 				example_tool:
42 | 					kind: dataplex-search-entries
43 | 					source: my-instance
44 | 					description: some description
45 | 			`,
46 | 			want: server.ToolConfigs{
47 | 				"example_tool": dataplexsearchentries.Config{
48 | 					Name:         "example_tool",
49 | 					Kind:         "dataplex-search-entries",
50 | 					Source:       "my-instance",
51 | 					Description:  "some description",
52 | 					AuthRequired: []string{},
53 | 				},
54 | 			},
55 | 		},
56 | 	}
57 | 	for _, tc := range tcs {
58 | 		t.Run(tc.desc, func(t *testing.T) {
59 | 			got := struct {
60 | 				Tools server.ToolConfigs `yaml:"tools"`
61 | 			}{}
62 | 			// Parse contents
63 | 			err := yaml.UnmarshalContext(ctx, testutils.FormatYaml(tc.in), &got)
64 | 			if err != nil {
65 | 				t.Fatalf("unable to unmarshal: %s", err)
66 | 			}
67 | 			if diff := cmp.Diff(tc.want, got.Tools); diff != "" {
68 | 				t.Fatalf("incorrect parse: diff %v", diff)
69 | 			}
70 | 		})
71 | 	}
72 | 
73 | }
74 | 
```

--------------------------------------------------------------------------------
/internal/tools/serverlessspark/serverlesssparkcancelbatch/serverlesssparkcancelbatch_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 serverlesssparkcancelbatch_test
16 | 
17 | import (
18 | 	"testing"
19 | 
20 | 	"github.com/goccy/go-yaml"
21 | 	"github.com/google/go-cmp/cmp"
22 | 	"github.com/googleapis/genai-toolbox/internal/server"
23 | 	"github.com/googleapis/genai-toolbox/internal/testutils"
24 | 	"github.com/googleapis/genai-toolbox/internal/tools/serverlessspark/serverlesssparkcancelbatch"
25 | )
26 | 
27 | func TestParseFromYaml(t *testing.T) {
28 | 	ctx, err := testutils.ContextWithNewLogger()
29 | 	if err != nil {
30 | 		t.Fatalf("unexpected error: %s", err)
31 | 	}
32 | 	tcs := []struct {
33 | 		desc string
34 | 		in   string
35 | 		want server.ToolConfigs
36 | 	}{
37 | 		{
38 | 			desc: "basic example",
39 | 			in: `
40 | 			tools:
41 | 				example_tool:
42 | 					kind: serverless-spark-cancel-batch
43 | 					source: my-instance
44 | 					description: some description
45 | 			`,
46 | 			want: server.ToolConfigs{
47 | 				"example_tool": serverlesssparkcancelbatch.Config{
48 | 					Name:         "example_tool",
49 | 					Kind:         "serverless-spark-cancel-batch",
50 | 					Source:       "my-instance",
51 | 					Description:  "some description",
52 | 					AuthRequired: []string{},
53 | 				},
54 | 			},
55 | 		},
56 | 	}
57 | 	for _, tc := range tcs {
58 | 		t.Run(tc.desc, func(t *testing.T) {
59 | 			got := struct {
60 | 				Tools server.ToolConfigs `yaml:"tools"`
61 | 			}{}
62 | 			err := yaml.UnmarshalContext(ctx, testutils.FormatYaml(tc.in), &got, yaml.Strict())
63 | 			if err != nil {
64 | 				t.Fatalf("unable to unmarshal: %s", err)
65 | 			}
66 | 
67 | 			if diff := cmp.Diff(tc.want, got.Tools); diff != "" {
68 | 				t.Fatalf("incorrect parse: diff %v", diff)
69 | 			}
70 | 		})
71 | 	}
72 | }
73 | 
```

--------------------------------------------------------------------------------
/internal/tools/serverlessspark/serverlesssparklistbatches/serverlesssparklistbatches_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 serverlesssparklistbatches_test
16 | 
17 | import (
18 | 	"testing"
19 | 
20 | 	"github.com/goccy/go-yaml"
21 | 	"github.com/google/go-cmp/cmp"
22 | 	"github.com/googleapis/genai-toolbox/internal/server"
23 | 	"github.com/googleapis/genai-toolbox/internal/testutils"
24 | 	"github.com/googleapis/genai-toolbox/internal/tools/serverlessspark/serverlesssparklistbatches"
25 | )
26 | 
27 | func TestParseFromYaml(t *testing.T) {
28 | 	ctx, err := testutils.ContextWithNewLogger()
29 | 	if err != nil {
30 | 		t.Fatalf("unexpected error: %s", err)
31 | 	}
32 | 	tcs := []struct {
33 | 		desc string
34 | 		in   string
35 | 		want server.ToolConfigs
36 | 	}{
37 | 		{
38 | 			desc: "basic example",
39 | 			in: `
40 | 			tools:
41 | 				example_tool:
42 | 					kind: serverless-spark-list-batches
43 | 					source: my-instance
44 | 					description: some description
45 | 			`,
46 | 			want: server.ToolConfigs{
47 | 				"example_tool": serverlesssparklistbatches.Config{
48 | 					Name:         "example_tool",
49 | 					Kind:         "serverless-spark-list-batches",
50 | 					Source:       "my-instance",
51 | 					Description:  "some description",
52 | 					AuthRequired: []string{},
53 | 				},
54 | 			},
55 | 		},
56 | 	}
57 | 	for _, tc := range tcs {
58 | 		t.Run(tc.desc, func(t *testing.T) {
59 | 			got := struct {
60 | 				Tools server.ToolConfigs `yaml:"tools"`
61 | 			}{}
62 | 			err := yaml.UnmarshalContext(ctx, testutils.FormatYaml(tc.in), &got, yaml.Strict())
63 | 			if err != nil {
64 | 				t.Fatalf("unable to unmarshal: %s", err)
65 | 			}
66 | 
67 | 			if diff := cmp.Diff(tc.want, got.Tools); diff != "" {
68 | 				t.Fatalf("incorrect parse: diff %v", diff)
69 | 			}
70 | 		})
71 | 	}
72 | }
73 | 
```

--------------------------------------------------------------------------------
/internal/tools/bigquery/bigquerygetdatasetinfo/bigquerygetdatasetinfo_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 bigquerygetdatasetinfo_test
16 | 
17 | import (
18 | 	"testing"
19 | 
20 | 	yaml "github.com/goccy/go-yaml"
21 | 	"github.com/google/go-cmp/cmp"
22 | 	"github.com/googleapis/genai-toolbox/internal/server"
23 | 	"github.com/googleapis/genai-toolbox/internal/testutils"
24 | 	"github.com/googleapis/genai-toolbox/internal/tools/bigquery/bigquerygetdatasetinfo"
25 | )
26 | 
27 | func TestParseFromYamlBigQueryGetDatasetInfo(t *testing.T) {
28 | 	ctx, err := testutils.ContextWithNewLogger()
29 | 	if err != nil {
30 | 		t.Fatalf("unexpected error: %s", err)
31 | 	}
32 | 	tcs := []struct {
33 | 		desc string
34 | 		in   string
35 | 		want server.ToolConfigs
36 | 	}{
37 | 		{
38 | 			desc: "basic example",
39 | 			in: `
40 | 			tools:
41 | 				example_tool:
42 | 					kind: bigquery-get-dataset-info
43 | 					source: my-instance
44 | 					description: some description
45 | 			`,
46 | 			want: server.ToolConfigs{
47 | 				"example_tool": bigquerygetdatasetinfo.Config{
48 | 					Name:         "example_tool",
49 | 					Kind:         "bigquery-get-dataset-info",
50 | 					Source:       "my-instance",
51 | 					Description:  "some description",
52 | 					AuthRequired: []string{},
53 | 				},
54 | 			},
55 | 		},
56 | 	}
57 | 	for _, tc := range tcs {
58 | 		t.Run(tc.desc, func(t *testing.T) {
59 | 			got := struct {
60 | 				Tools server.ToolConfigs `yaml:"tools"`
61 | 			}{}
62 | 			// Parse contents
63 | 			err := yaml.UnmarshalContext(ctx, testutils.FormatYaml(tc.in), &got)
64 | 			if err != nil {
65 | 				t.Fatalf("unable to unmarshal: %s", err)
66 | 			}
67 | 			if diff := cmp.Diff(tc.want, got.Tools); diff != "" {
68 | 				t.Fatalf("incorrect parse: diff %v", diff)
69 | 			}
70 | 		})
71 | 	}
72 | 
73 | }
74 | 
```

--------------------------------------------------------------------------------
/internal/tools/bigquery/bigquerylistdatasetids/bigquerylistdatasetids_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 bigquerylistdatasetids_test
16 | 
17 | import (
18 | 	"testing"
19 | 
20 | 	yaml "github.com/goccy/go-yaml"
21 | 	"github.com/google/go-cmp/cmp"
22 | 	"github.com/googleapis/genai-toolbox/internal/server"
23 | 	"github.com/googleapis/genai-toolbox/internal/testutils"
24 | 	"github.com/googleapis/genai-toolbox/internal/tools/bigquery/bigquerylistdatasetids"
25 | )
26 | 
27 | func TestParseFromYamlBigQueryListDatasetIds(t *testing.T) {
28 | 	ctx, err := testutils.ContextWithNewLogger()
29 | 	if err != nil {
30 | 		t.Fatalf("unexpected error: %s", err)
31 | 	}
32 | 	tcs := []struct {
33 | 		desc string
34 | 		in   string
35 | 		want server.ToolConfigs
36 | 	}{
37 | 		{
38 | 			desc: "basic example",
39 | 			in: `
40 | 			tools:
41 | 				example_tool:
42 | 					kind: bigquery-list-dataset-ids
43 | 					source: my-instance
44 | 					description: some description
45 | 			`,
46 | 			want: server.ToolConfigs{
47 | 				"example_tool": bigquerylistdatasetids.Config{
48 | 					Name:         "example_tool",
49 | 					Kind:         "bigquery-list-dataset-ids",
50 | 					Source:       "my-instance",
51 | 					Description:  "some description",
52 | 					AuthRequired: []string{},
53 | 				},
54 | 			},
55 | 		},
56 | 	}
57 | 	for _, tc := range tcs {
58 | 		t.Run(tc.desc, func(t *testing.T) {
59 | 			got := struct {
60 | 				Tools server.ToolConfigs `yaml:"tools"`
61 | 			}{}
62 | 			// Parse contents
63 | 			err := yaml.UnmarshalContext(ctx, testutils.FormatYaml(tc.in), &got)
64 | 			if err != nil {
65 | 				t.Fatalf("unable to unmarshal: %s", err)
66 | 			}
67 | 			if diff := cmp.Diff(tc.want, got.Tools); diff != "" {
68 | 				t.Fatalf("incorrect parse: diff %v", diff)
69 | 			}
70 | 		})
71 | 	}
72 | 
73 | }
74 | 
```

--------------------------------------------------------------------------------
/internal/tools/cloudhealthcare/cloudhealthcaregetdataset/cloudhealthcaregetdataset_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 gethealthcaredataset_test
16 | 
17 | import (
18 | 	"testing"
19 | 
20 | 	yaml "github.com/goccy/go-yaml"
21 | 	"github.com/google/go-cmp/cmp"
22 | 	"github.com/googleapis/genai-toolbox/internal/server"
23 | 	"github.com/googleapis/genai-toolbox/internal/testutils"
24 | 	getdataset "github.com/googleapis/genai-toolbox/internal/tools/cloudhealthcare/cloudhealthcaregetdataset"
25 | )
26 | 
27 | func TestParseFromYamlGetHealthcareDataset(t *testing.T) {
28 | 	ctx, err := testutils.ContextWithNewLogger()
29 | 	if err != nil {
30 | 		t.Fatalf("unexpected error: %s", err)
31 | 	}
32 | 	tcs := []struct {
33 | 		desc string
34 | 		in   string
35 | 		want server.ToolConfigs
36 | 	}{
37 | 		{
38 | 			desc: "basic example",
39 | 			in: `
40 | 			tools:
41 | 				example_tool:
42 | 					kind: cloud-healthcare-get-dataset
43 | 					source: my-instance
44 | 					description: some description
45 | 			`,
46 | 			want: server.ToolConfigs{
47 | 				"example_tool": getdataset.Config{
48 | 					Name:         "example_tool",
49 | 					Kind:         "cloud-healthcare-get-dataset",
50 | 					Source:       "my-instance",
51 | 					Description:  "some description",
52 | 					AuthRequired: []string{},
53 | 				},
54 | 			},
55 | 		},
56 | 	}
57 | 	for _, tc := range tcs {
58 | 		t.Run(tc.desc, func(t *testing.T) {
59 | 			got := struct {
60 | 				Tools server.ToolConfigs `yaml:"tools"`
61 | 			}{}
62 | 			// Parse contents
63 | 			err := yaml.UnmarshalContext(ctx, testutils.FormatYaml(tc.in), &got)
64 | 			if err != nil {
65 | 				t.Fatalf("unable to unmarshal: %s", err)
66 | 			}
67 | 			if diff := cmp.Diff(tc.want, got.Tools); diff != "" {
68 | 				t.Fatalf("incorrect parse: diff %v", diff)
69 | 			}
70 | 		})
71 | 	}
72 | }
73 | 
```

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

```markdown
 1 | ---
 2 | title: postgres-upgrade-precheck
 3 | type: docs
 4 | weight: 11
 5 | description: Perform a pre-check for a Cloud SQL for PostgreSQL major version upgrade.
 6 | ---
 7 | 
 8 | The `postgres-upgrade-precheck` tool initiates a pre-check on a Cloud SQL for PostgreSQL
 9 | instance to assess its readiness for a major version upgrade using the Cloud SQL Admin API.
10 | It helps identify potential incompatibilities or issues before starting the actual upgrade process.
11 | 
12 | {{< notice info >}}
13 | This tool uses a `source` of kind `cloud-sql-admin`.
14 | {{< /notice >}}
15 | 
16 | ## Tool Inputs
17 | 
18 | ### Example
19 | 
20 | ```yaml
21 | tools:
22 |   postgres-upgrade-precheck:
23 |     kind: postgres-upgrade-precheck
24 |     source: cloud-sql-admin-source
25 |     description: "Checks if a Cloud SQL PostgreSQL instance is ready for a major version upgrade to the specified target version."
26 | ```
27 | 
28 | ### Reference
29 | 
30 | | **field**    | **type** | **required** | **description**                                           |
31 | | ------------ | :------: | :----------: | --------------------------------------------------------- |
32 | | kind         |  string  |     true     | Must be "postgres-upgrade-precheck". |
33 | | source       |  string  |     true     | The name of the `cloud-sql-admin` source to use.          |
34 | | description  |  string  |     false    | A description of the tool.                                |
35 | 
36 | | **parameter**           | **type** | **required** | **description**                                                                 |
37 | | ----------------------- | :------: | :----------: | ------------------------------------------------------------------------------- |
38 | | project                 |  string  |     true     | The project ID containing the instance.                                         |
39 | | instance                    |  string  |     true     | The name of the Cloud SQL instance to check.                                    |
40 | | targetDatabaseVersion   |  string  |     false     | The target PostgreSQL major version for the upgrade (e.g., `POSTGRES_18`).  If not specified, defaults to the PostgreSQL 18. |
41 | 
```

--------------------------------------------------------------------------------
/internal/tools/cloudsql/cloudsqlcloneinstance/cloudsqlcloneinstance_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 cloudsqlcloneinstance_test
16 | 
17 | import (
18 | 	//"context"
19 | 	"testing"
20 | 
21 | 	yaml "github.com/goccy/go-yaml"
22 | 	"github.com/google/go-cmp/cmp"
23 | 	"github.com/googleapis/genai-toolbox/internal/server"
24 | 	"github.com/googleapis/genai-toolbox/internal/testutils"
25 | 	"github.com/googleapis/genai-toolbox/internal/tools/cloudsql/cloudsqlcloneinstance"
26 | )
27 | 
28 | func TestParseFromYaml(t *testing.T) {
29 | 	ctx, err := testutils.ContextWithNewLogger()
30 | 	if err != nil {
31 | 		t.Fatalf("unexpected error: %s", err)
32 | 	}
33 | 	tcs := []struct {
34 | 		desc string
35 | 		in   string
36 | 		want server.ToolConfigs
37 | 	}{
38 | 		{
39 | 			desc: "basic example",
40 | 			in: `
41 | 			tools:
42 | 			  clone-instance-tool:
43 | 			    kind: cloud-sql-clone-instance
44 | 			    description: a test description
45 | 			    source: a-source
46 | 			`,
47 | 			want: server.ToolConfigs{
48 | 				"clone-instance-tool": cloudsqlcloneinstance.Config{
49 | 					Name:         "clone-instance-tool",
50 | 					Kind:         "cloud-sql-clone-instance",
51 | 					Description:  "a test description",
52 | 					Source:       "a-source",
53 | 					AuthRequired: []string{},
54 | 				},
55 | 			},
56 | 		},
57 | 	}
58 | 	for _, tc := range tcs {
59 | 		t.Run(tc.desc, func(t *testing.T) {
60 | 			got := struct {
61 | 				Tools server.ToolConfigs `yaml:"tools"`
62 | 			}{}
63 | 			// Parse contents
64 | 			err := yaml.UnmarshalContext(ctx, testutils.FormatYaml(tc.in), &got)
65 | 			if err != nil {
66 | 				t.Fatalf("unable to unmarshal: %s", err)
67 | 			}
68 | 			if diff := cmp.Diff(tc.want, got.Tools); diff != "" {
69 | 				t.Fatalf("incorrect parse: diff %v", diff)
70 | 			}
71 | 		})
72 | 	}
73 | }
74 | 
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/looker/looker-generate-embed-url.md:
--------------------------------------------------------------------------------

```markdown
 1 | ---
 2 | title: "looker-generate-embed-url"
 3 | type: docs
 4 | weight: 1
 5 | description: >
 6 |   "looker-generate-embed-url" generates an embeddable URL for Looker content.
 7 | aliases:
 8 | - /resources/tools/looker-generate-embed-url
 9 | ---
10 | 
11 | ## About
12 | 
13 | The `looker-generate-embed-url` tool generates an embeddable URL for a given
14 | piece of Looker content. The url generated is created for the user authenticated
15 | to the Looker source. When opened in the browser it will create a Looker Embed
16 | session.
17 | 
18 | It's compatible with the following sources:
19 | 
20 | - [looker](../../sources/looker.md)
21 | 
22 | `looker-generate-embed-url` takes two parameters:
23 | 
24 | 1. the `type` of content (e.g., "dashboards", "looks", "query-visualization")
25 | 2. the `id` of the content
26 | 
27 | It's recommended to use other tools from the Looker MCP toolbox with this tool
28 | to do things like fetch dashboard id's, generate a query, etc that can be
29 | supplied to this tool.
30 | 
31 | ## Example
32 | 
33 | ```yaml
34 | tools:
35 |     generate_embed_url:
36 |         kind: looker-generate-embed-url
37 |         source: looker-source
38 |         description: |
39 |           This tool generates a signed, private embed URL for specific Looker content,
40 |           allowing users to access it directly.
41 | 
42 |           Parameters:
43 |           - type (required): The type of content to embed. Common values include:
44 |             - `dashboards`
45 |             - `looks`
46 |             - `explore`
47 |           - id (required): The unique identifier for the content.
48 |             - For dashboards and looks, use the numeric ID (e.g., "123").
49 |             - For explores, use the format "model_name/explore_name".
50 | ```
51 | 
52 | ## Reference
53 | 
54 | | **field**   | **type** | **required** | **description**                                    |
55 | |-------------|:--------:|:------------:|----------------------------------------------------|
56 | | kind        |  string  |     true     | Must be "looker-generate-embed-url"                |
57 | | source      |  string  |     true     | Name of the source the SQL should execute on.      |
58 | | description |  string  |     true     | Description of the tool that is passed to the LLM. |
59 | 
```

--------------------------------------------------------------------------------
/internal/tools/cloudhealthcare/cloudhealthcaregetfhirstore/cloudhealthcaregetfhirstore_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 getfhirstore_test
16 | 
17 | import (
18 | 	"testing"
19 | 
20 | 	yaml "github.com/goccy/go-yaml"
21 | 	"github.com/google/go-cmp/cmp"
22 | 	"github.com/googleapis/genai-toolbox/internal/server"
23 | 	"github.com/googleapis/genai-toolbox/internal/testutils"
24 | 	getfhirstore "github.com/googleapis/genai-toolbox/internal/tools/cloudhealthcare/cloudhealthcaregetfhirstore"
25 | )
26 | 
27 | func TestParseFromYamlHealthcareGetFHIRStore(t *testing.T) {
28 | 	ctx, err := testutils.ContextWithNewLogger()
29 | 	if err != nil {
30 | 		t.Fatalf("unexpected error: %s", err)
31 | 	}
32 | 	tcs := []struct {
33 | 		desc string
34 | 		in   string
35 | 		want server.ToolConfigs
36 | 	}{
37 | 		{
38 | 			desc: "basic example",
39 | 			in: `
40 | 			tools:
41 | 				example_tool:
42 | 					kind: cloud-healthcare-get-fhir-store
43 | 					source: my-instance
44 | 					description: some description
45 | 			`,
46 | 			want: server.ToolConfigs{
47 | 				"example_tool": getfhirstore.Config{
48 | 					Name:         "example_tool",
49 | 					Kind:         "cloud-healthcare-get-fhir-store",
50 | 					Source:       "my-instance",
51 | 					Description:  "some description",
52 | 					AuthRequired: []string{},
53 | 				},
54 | 			},
55 | 		},
56 | 	}
57 | 	for _, tc := range tcs {
58 | 		t.Run(tc.desc, func(t *testing.T) {
59 | 			got := struct {
60 | 				Tools server.ToolConfigs `yaml:"tools"`
61 | 			}{}
62 | 			// Parse contents
63 | 			err := yaml.UnmarshalContext(ctx, testutils.FormatYaml(tc.in), &got)
64 | 			if err != nil {
65 | 				t.Fatalf("unable to unmarshal: %s", err)
66 | 			}
67 | 			if diff := cmp.Diff(tc.want, got.Tools); diff != "" {
68 | 				t.Fatalf("incorrect parse: diff %v", diff)
69 | 			}
70 | 		})
71 | 	}
72 | }
73 | 
```

--------------------------------------------------------------------------------
/internal/tools/dataplex/dataplexsearchaspecttypes/dataplexsearchaspecttypes_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 dataplexsearchaspecttypes_test
16 | 
17 | import (
18 | 	"testing"
19 | 
20 | 	yaml "github.com/goccy/go-yaml"
21 | 	"github.com/google/go-cmp/cmp"
22 | 	"github.com/googleapis/genai-toolbox/internal/server"
23 | 	"github.com/googleapis/genai-toolbox/internal/testutils"
24 | 	"github.com/googleapis/genai-toolbox/internal/tools/dataplex/dataplexsearchaspecttypes"
25 | )
26 | 
27 | func TestParseFromYamlDataplexSearchAspectTypes(t *testing.T) {
28 | 	ctx, err := testutils.ContextWithNewLogger()
29 | 	if err != nil {
30 | 		t.Fatalf("unexpected error: %s", err)
31 | 	}
32 | 	tcs := []struct {
33 | 		desc string
34 | 		in   string
35 | 		want server.ToolConfigs
36 | 	}{
37 | 		{
38 | 			desc: "basic example",
39 | 			in: `
40 | 			tools:
41 | 				example_tool:
42 | 					kind: dataplex-search-aspect-types
43 | 					source: my-instance
44 | 					description: some description
45 | 			`,
46 | 			want: server.ToolConfigs{
47 | 				"example_tool": dataplexsearchaspecttypes.Config{
48 | 					Name:         "example_tool",
49 | 					Kind:         "dataplex-search-aspect-types",
50 | 					Source:       "my-instance",
51 | 					Description:  "some description",
52 | 					AuthRequired: []string{},
53 | 				},
54 | 			},
55 | 		},
56 | 	}
57 | 	for _, tc := range tcs {
58 | 		t.Run(tc.desc, func(t *testing.T) {
59 | 			got := struct {
60 | 				Tools server.ToolConfigs `yaml:"tools"`
61 | 			}{}
62 | 			// Parse contents
63 | 			err := yaml.UnmarshalContext(ctx, testutils.FormatYaml(tc.in), &got)
64 | 			if err != nil {
65 | 				t.Fatalf("unable to unmarshal: %s", err)
66 | 			}
67 | 			if diff := cmp.Diff(tc.want, got.Tools); diff != "" {
68 | 				t.Fatalf("incorrect parse: diff %v", diff)
69 | 			}
70 | 		})
71 | 	}
72 | 
73 | }
74 | 
```

--------------------------------------------------------------------------------
/internal/tools/cloudhealthcare/cloudhealthcarefhirfetchpage/cloudhealthcarefhirfetchpage_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 fhirfetchpage_test
16 | 
17 | import (
18 | 	"testing"
19 | 
20 | 	yaml "github.com/goccy/go-yaml"
21 | 	"github.com/google/go-cmp/cmp"
22 | 	"github.com/googleapis/genai-toolbox/internal/server"
23 | 	"github.com/googleapis/genai-toolbox/internal/testutils"
24 | 	fhirfetchpage "github.com/googleapis/genai-toolbox/internal/tools/cloudhealthcare/cloudhealthcarefhirfetchpage"
25 | )
26 | 
27 | func TestParseFromYamlHealthcareFHIRFetchPage(t *testing.T) {
28 | 	ctx, err := testutils.ContextWithNewLogger()
29 | 	if err != nil {
30 | 		t.Fatalf("unexpected error: %s", err)
31 | 	}
32 | 	tcs := []struct {
33 | 		desc string
34 | 		in   string
35 | 		want server.ToolConfigs
36 | 	}{
37 | 		{
38 | 			desc: "basic example",
39 | 			in: `
40 | 			tools:
41 | 				example_tool:
42 | 					kind: cloud-healthcare-fhir-fetch-page
43 | 					source: my-instance
44 | 					description: some description
45 | 			`,
46 | 			want: server.ToolConfigs{
47 | 				"example_tool": fhirfetchpage.Config{
48 | 					Name:         "example_tool",
49 | 					Kind:         "cloud-healthcare-fhir-fetch-page",
50 | 					Source:       "my-instance",
51 | 					Description:  "some description",
52 | 					AuthRequired: []string{},
53 | 				},
54 | 			},
55 | 		},
56 | 	}
57 | 	for _, tc := range tcs {
58 | 		t.Run(tc.desc, func(t *testing.T) {
59 | 			got := struct {
60 | 				Tools server.ToolConfigs `yaml:"tools"`
61 | 			}{}
62 | 			// Parse contents
63 | 			err := yaml.UnmarshalContext(ctx, testutils.FormatYaml(tc.in), &got)
64 | 			if err != nil {
65 | 				t.Fatalf("unable to unmarshal: %s", err)
66 | 			}
67 | 			if diff := cmp.Diff(tc.want, got.Tools); diff != "" {
68 | 				t.Fatalf("incorrect parse: diff %v", diff)
69 | 			}
70 | 		})
71 | 	}
72 | }
73 | 
```

--------------------------------------------------------------------------------
/internal/tools/cloudhealthcare/cloudhealthcaregetdicomstore/cloudhealthcaregetdicomstore_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 getdicomstore_test
16 | 
17 | import (
18 | 	"testing"
19 | 
20 | 	yaml "github.com/goccy/go-yaml"
21 | 	"github.com/google/go-cmp/cmp"
22 | 	"github.com/googleapis/genai-toolbox/internal/server"
23 | 	"github.com/googleapis/genai-toolbox/internal/testutils"
24 | 	getdicomstore "github.com/googleapis/genai-toolbox/internal/tools/cloudhealthcare/cloudhealthcaregetdicomstore"
25 | )
26 | 
27 | func TestParseFromYamlHealthcareGetDICOMStore(t *testing.T) {
28 | 	ctx, err := testutils.ContextWithNewLogger()
29 | 	if err != nil {
30 | 		t.Fatalf("unexpected error: %s", err)
31 | 	}
32 | 	tcs := []struct {
33 | 		desc string
34 | 		in   string
35 | 		want server.ToolConfigs
36 | 	}{
37 | 		{
38 | 			desc: "basic example",
39 | 			in: `
40 | 			tools:
41 | 				example_tool:
42 | 					kind: cloud-healthcare-get-dicom-store
43 | 					source: my-instance
44 | 					description: some description
45 | 			`,
46 | 			want: server.ToolConfigs{
47 | 				"example_tool": getdicomstore.Config{
48 | 					Name:         "example_tool",
49 | 					Kind:         "cloud-healthcare-get-dicom-store",
50 | 					Source:       "my-instance",
51 | 					Description:  "some description",
52 | 					AuthRequired: []string{},
53 | 				},
54 | 			},
55 | 		},
56 | 	}
57 | 	for _, tc := range tcs {
58 | 		t.Run(tc.desc, func(t *testing.T) {
59 | 			got := struct {
60 | 				Tools server.ToolConfigs `yaml:"tools"`
61 | 			}{}
62 | 			// Parse contents
63 | 			err := yaml.UnmarshalContext(ctx, testutils.FormatYaml(tc.in), &got)
64 | 			if err != nil {
65 | 				t.Fatalf("unable to unmarshal: %s", err)
66 | 			}
67 | 			if diff := cmp.Diff(tc.want, got.Tools); diff != "" {
68 | 				t.Fatalf("incorrect parse: diff %v", diff)
69 | 			}
70 | 		})
71 | 	}
72 | }
73 | 
```

--------------------------------------------------------------------------------
/internal/tools/bigquery/bigqueryanalyzecontribution/bigqueryanalyzecontribution_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 bigqueryanalyzecontribution_test
16 | 
17 | import (
18 | 	"testing"
19 | 
20 | 	yaml "github.com/goccy/go-yaml"
21 | 	"github.com/google/go-cmp/cmp"
22 | 	"github.com/googleapis/genai-toolbox/internal/server"
23 | 	"github.com/googleapis/genai-toolbox/internal/testutils"
24 | 	"github.com/googleapis/genai-toolbox/internal/tools/bigquery/bigqueryanalyzecontribution"
25 | )
26 | 
27 | func TestParseFromYamlBigQueryAnalyzeContribution(t *testing.T) {
28 | 	ctx, err := testutils.ContextWithNewLogger()
29 | 	if err != nil {
30 | 		t.Fatalf("unexpected error: %s", err)
31 | 	}
32 | 	tcs := []struct {
33 | 		desc string
34 | 		in   string
35 | 		want server.ToolConfigs
36 | 	}{
37 | 		{
38 | 			desc: "basic example",
39 | 			in: `
40 | 			tools:
41 | 				example_tool:
42 | 					kind: bigquery-analyze-contribution
43 | 					source: my-instance
44 | 					description: some description
45 | 			`,
46 | 			want: server.ToolConfigs{
47 | 				"example_tool": bigqueryanalyzecontribution.Config{
48 | 					Name:         "example_tool",
49 | 					Kind:         "bigquery-analyze-contribution",
50 | 					Source:       "my-instance",
51 | 					Description:  "some description",
52 | 					AuthRequired: []string{},
53 | 				},
54 | 			},
55 | 		},
56 | 	}
57 | 	for _, tc := range tcs {
58 | 		t.Run(tc.desc, func(t *testing.T) {
59 | 			got := struct {
60 | 				Tools server.ToolConfigs `yaml:"tools"`
61 | 			}{}
62 | 			// Parse contents
63 | 			err := yaml.UnmarshalContext(ctx, testutils.FormatYaml(tc.in), &got)
64 | 			if err != nil {
65 | 				t.Fatalf("unable to unmarshal: %s", err)
66 | 			}
67 | 			if diff := cmp.Diff(tc.want, got.Tools); diff != "" {
68 | 				t.Fatalf("incorrect parse: diff %v", diff)
69 | 			}
70 | 		})
71 | 	}
72 | }
73 | 
```

--------------------------------------------------------------------------------
/internal/tools/cloudsqlpg/cloudsqlpgcreateinstances/cloudsqlpgcreateinstances_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 cloudsqlpgcreateinstances_test
16 | 
17 | import (
18 | 	"testing"
19 | 
20 | 	yaml "github.com/goccy/go-yaml"
21 | 	"github.com/google/go-cmp/cmp"
22 | 	"github.com/googleapis/genai-toolbox/internal/server"
23 | 	"github.com/googleapis/genai-toolbox/internal/testutils"
24 | 	"github.com/googleapis/genai-toolbox/internal/tools/cloudsqlpg/cloudsqlpgcreateinstances"
25 | )
26 | 
27 | func TestParseFromYaml(t *testing.T) {
28 | 	ctx, err := testutils.ContextWithNewLogger()
29 | 	if err != nil {
30 | 		t.Fatalf("unexpected error: %s", err)
31 | 	}
32 | 	tcs := []struct {
33 | 		desc string
34 | 		in   string
35 | 		want server.ToolConfigs
36 | 	}{
37 | 		{
38 | 			desc: "basic example",
39 | 			in: `
40 | 			tools:
41 | 				create-instance-tool:
42 | 					kind: cloud-sql-postgres-create-instance
43 | 					description: a test description
44 | 					source: a-source
45 | 			`,
46 | 			want: server.ToolConfigs{
47 | 				"create-instance-tool": cloudsqlpgcreateinstances.Config{
48 | 					Name:         "create-instance-tool",
49 | 					Kind:         "cloud-sql-postgres-create-instance",
50 | 					Description:  "a test description",
51 | 					Source:       "a-source",
52 | 					AuthRequired: []string{},
53 | 				},
54 | 			},
55 | 		},
56 | 	}
57 | 	for _, tc := range tcs {
58 | 		t.Run(tc.desc, func(t *testing.T) {
59 | 			got := struct {
60 | 				Tools server.ToolConfigs `yaml:"tools"`
61 | 			}{}
62 | 			// Parse contents
63 | 			err := yaml.UnmarshalContext(ctx, testutils.FormatYaml(tc.in), &got)
64 | 			if err != nil {
65 | 				t.Fatalf("unable to unmarshal: %s", err)
66 | 			}
67 | 			if diff := cmp.Diff(tc.want, got.Tools); diff != "" {
68 | 				t.Fatalf("incorrect parse: diff %v", diff)
69 | 			}
70 | 		})
71 | 	}
72 | }
73 | 
```

--------------------------------------------------------------------------------
/internal/tools/cloudhealthcare/cloudhealthcarelistfhirstores/cloudhealthcarelistfhirstores_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 listfhirstores_test
16 | 
17 | import (
18 | 	"testing"
19 | 
20 | 	yaml "github.com/goccy/go-yaml"
21 | 	"github.com/google/go-cmp/cmp"
22 | 	"github.com/googleapis/genai-toolbox/internal/server"
23 | 	"github.com/googleapis/genai-toolbox/internal/testutils"
24 | 	listfhirstores "github.com/googleapis/genai-toolbox/internal/tools/cloudhealthcare/cloudhealthcarelistfhirstores"
25 | )
26 | 
27 | func TestParseFromYamlHealthcareListFHIRStores(t *testing.T) {
28 | 	ctx, err := testutils.ContextWithNewLogger()
29 | 	if err != nil {
30 | 		t.Fatalf("unexpected error: %s", err)
31 | 	}
32 | 	tcs := []struct {
33 | 		desc string
34 | 		in   string
35 | 		want server.ToolConfigs
36 | 	}{
37 | 		{
38 | 			desc: "basic example",
39 | 			in: `
40 | 			tools:
41 | 				example_tool:
42 | 					kind: cloud-healthcare-list-fhir-stores
43 | 					source: my-instance
44 | 					description: some description
45 | 			`,
46 | 			want: server.ToolConfigs{
47 | 				"example_tool": listfhirstores.Config{
48 | 					Name:         "example_tool",
49 | 					Kind:         "cloud-healthcare-list-fhir-stores",
50 | 					Source:       "my-instance",
51 | 					Description:  "some description",
52 | 					AuthRequired: []string{},
53 | 				},
54 | 			},
55 | 		},
56 | 	}
57 | 	for _, tc := range tcs {
58 | 		t.Run(tc.desc, func(t *testing.T) {
59 | 			got := struct {
60 | 				Tools server.ToolConfigs `yaml:"tools"`
61 | 			}{}
62 | 			// Parse contents
63 | 			err := yaml.UnmarshalContext(ctx, testutils.FormatYaml(tc.in), &got)
64 | 			if err != nil {
65 | 				t.Fatalf("unable to unmarshal: %s", err)
66 | 			}
67 | 			if diff := cmp.Diff(tc.want, got.Tools); diff != "" {
68 | 				t.Fatalf("incorrect parse: diff %v", diff)
69 | 			}
70 | 		})
71 | 	}
72 | }
73 | 
```

--------------------------------------------------------------------------------
/internal/tools/cloudsql/cloudsqlgetinstances/cloudsqlgetinstances_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 cloudsqlgetinstances_test
16 | 
17 | import (
18 | 	"testing"
19 | 
20 | 	yaml "github.com/goccy/go-yaml"
21 | 	"github.com/google/go-cmp/cmp"
22 | 	"github.com/googleapis/genai-toolbox/internal/server"
23 | 	"github.com/googleapis/genai-toolbox/internal/testutils"
24 | 	cloudsqlgetinstances "github.com/googleapis/genai-toolbox/internal/tools/cloudsql/cloudsqlgetinstances"
25 | )
26 | 
27 | func TestParseFromYaml(t *testing.T) {
28 | 	ctx, err := testutils.ContextWithNewLogger()
29 | 	if err != nil {
30 | 		t.Fatalf("unexpected error: %s", err)
31 | 	}
32 | 	tcs := []struct {
33 | 		desc string
34 | 		in   string
35 | 		want server.ToolConfigs
36 | 	}{
37 | 		{
38 | 			desc: "basic example",
39 | 			in: `
40 | 			tools:
41 | 				get-instances:
42 | 					kind: cloud-sql-get-instance
43 | 					description: "A tool to get cloud sql instances"
44 | 					source: "my-gcp-source"
45 | 			`,
46 | 			want: server.ToolConfigs{
47 | 				"get-instances": cloudsqlgetinstances.Config{
48 | 					Name:         "get-instances",
49 | 					Kind:         "cloud-sql-get-instance",
50 | 					Description:  "A tool to get cloud sql instances",
51 | 					Source:       "my-gcp-source",
52 | 					AuthRequired: []string{},
53 | 				},
54 | 			},
55 | 		},
56 | 	}
57 | 	for _, tc := range tcs {
58 | 		t.Run(tc.desc, func(t *testing.T) {
59 | 			got := struct {
60 | 				Tools server.ToolConfigs `yaml:"tools"`
61 | 			}{}
62 | 			// Parse contents
63 | 			err := yaml.UnmarshalContext(ctx, testutils.FormatYaml(tc.in), &got)
64 | 			if err != nil {
65 | 				t.Fatalf("unable to unmarshal: %s", err)
66 | 			}
67 | 			if diff := cmp.Diff(tc.want, got.Tools); diff != "" {
68 | 				t.Fatalf("incorrect parse: diff %v", diff)
69 | 			}
70 | 		})
71 | 	}
72 | }
73 | 
```

--------------------------------------------------------------------------------
/internal/tools/cloudsqlmssql/cloudsqlmssqlcreateinstance/cloudsqlmssqlcreateinstance_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 cloudsqlmssqlcreateinstance_test
16 | 
17 | import (
18 | 	"testing"
19 | 
20 | 	yaml "github.com/goccy/go-yaml"
21 | 	"github.com/google/go-cmp/cmp"
22 | 	"github.com/googleapis/genai-toolbox/internal/server"
23 | 	"github.com/googleapis/genai-toolbox/internal/testutils"
24 | 	"github.com/googleapis/genai-toolbox/internal/tools/cloudsqlmssql/cloudsqlmssqlcreateinstance"
25 | )
26 | 
27 | func TestParseFromYaml(t *testing.T) {
28 | 	ctx, err := testutils.ContextWithNewLogger()
29 | 	if err != nil {
30 | 		t.Fatalf("unexpected error: %s", err)
31 | 	}
32 | 	tcs := []struct {
33 | 		desc string
34 | 		in   string
35 | 		want server.ToolConfigs
36 | 	}{
37 | 		{
38 | 			desc: "basic example",
39 | 			in: `
40 | 			tools:
41 | 				create-instance-tool:
42 | 					kind: cloud-sql-mssql-create-instance
43 | 					description: a test description
44 | 					source: a-source
45 | 			`,
46 | 			want: server.ToolConfigs{
47 | 				"create-instance-tool": cloudsqlmssqlcreateinstance.Config{
48 | 					Name:         "create-instance-tool",
49 | 					Kind:         "cloud-sql-mssql-create-instance",
50 | 					Description:  "a test description",
51 | 					Source:       "a-source",
52 | 					AuthRequired: []string{},
53 | 				},
54 | 			},
55 | 		},
56 | 	}
57 | 	for _, tc := range tcs {
58 | 		t.Run(tc.desc, func(t *testing.T) {
59 | 			got := struct {
60 | 				Tools server.ToolConfigs `yaml:"tools"`
61 | 			}{}
62 | 			// Parse contents
63 | 			err := yaml.UnmarshalContext(ctx, testutils.FormatYaml(tc.in), &got)
64 | 			if err != nil {
65 | 				t.Fatalf("unable to unmarshal: %s", err)
66 | 			}
67 | 			if diff := cmp.Diff(tc.want, got.Tools); diff != "" {
68 | 				t.Fatalf("incorrect parse: diff %v", diff)
69 | 			}
70 | 		})
71 | 	}
72 | }
73 | 
```

--------------------------------------------------------------------------------
/internal/tools/cloudsqlmysql/cloudsqlmysqlcreateinstance/cloudsqlmysqlcreateinstance_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 cloudsqlmysqlcreateinstance_test
16 | 
17 | import (
18 | 	"testing"
19 | 
20 | 	yaml "github.com/goccy/go-yaml"
21 | 	"github.com/google/go-cmp/cmp"
22 | 	"github.com/googleapis/genai-toolbox/internal/server"
23 | 	"github.com/googleapis/genai-toolbox/internal/testutils"
24 | 	"github.com/googleapis/genai-toolbox/internal/tools/cloudsqlmysql/cloudsqlmysqlcreateinstance"
25 | )
26 | 
27 | func TestParseFromYaml(t *testing.T) {
28 | 	ctx, err := testutils.ContextWithNewLogger()
29 | 	if err != nil {
30 | 		t.Fatalf("unexpected error: %s", err)
31 | 	}
32 | 	tcs := []struct {
33 | 		desc string
34 | 		in   string
35 | 		want server.ToolConfigs
36 | 	}{
37 | 		{
38 | 			desc: "basic example",
39 | 			in: `
40 | 			tools:
41 | 				create-instance-tool:
42 | 					kind: cloud-sql-mysql-create-instance
43 | 					description: a test description
44 | 					source: a-source
45 | 			`,
46 | 			want: server.ToolConfigs{
47 | 				"create-instance-tool": cloudsqlmysqlcreateinstance.Config{
48 | 					Name:         "create-instance-tool",
49 | 					Kind:         "cloud-sql-mysql-create-instance",
50 | 					Description:  "a test description",
51 | 					Source:       "a-source",
52 | 					AuthRequired: []string{},
53 | 				},
54 | 			},
55 | 		},
56 | 	}
57 | 	for _, tc := range tcs {
58 | 		t.Run(tc.desc, func(t *testing.T) {
59 | 			got := struct {
60 | 				Tools server.ToolConfigs `yaml:"tools"`
61 | 			}{}
62 | 			// Parse contents
63 | 			err := yaml.UnmarshalContext(ctx, testutils.FormatYaml(tc.in), &got)
64 | 			if err != nil {
65 | 				t.Fatalf("unable to unmarshal: %s", err)
66 | 			}
67 | 			if diff := cmp.Diff(tc.want, got.Tools); diff != "" {
68 | 				t.Fatalf("incorrect parse: diff %v", diff)
69 | 			}
70 | 		})
71 | 	}
72 | }
73 | 
```

--------------------------------------------------------------------------------
/internal/tools/looker/lookerconversationalanalytics/lookerconversationalanalytics_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 lookerconversationalanalytics_test
16 | 
17 | import (
18 | 	"testing"
19 | 
20 | 	yaml "github.com/goccy/go-yaml"
21 | 	"github.com/google/go-cmp/cmp"
22 | 	"github.com/googleapis/genai-toolbox/internal/server"
23 | 	"github.com/googleapis/genai-toolbox/internal/testutils"
24 | 	"github.com/googleapis/genai-toolbox/internal/tools/looker/lookerconversationalanalytics"
25 | )
26 | 
27 | func TestParseFromYamlLookerConversationalAnalytics(t *testing.T) {
28 | 	ctx, err := testutils.ContextWithNewLogger()
29 | 	if err != nil {
30 | 		t.Fatalf("unexpected error: %s", err)
31 | 	}
32 | 	tcs := []struct {
33 | 		desc string
34 | 		in   string
35 | 		want server.ToolConfigs
36 | 	}{
37 | 		{
38 | 			desc: "basic example",
39 | 			in: `
40 | 			tools:
41 | 				example_tool:
42 | 					kind: looker-conversational-analytics
43 | 					source: my-instance
44 | 					description: some description
45 | 			`,
46 | 			want: server.ToolConfigs{
47 | 				"example_tool": lookerconversationalanalytics.Config{
48 | 					Name:         "example_tool",
49 | 					Kind:         "looker-conversational-analytics",
50 | 					Source:       "my-instance",
51 | 					Description:  "some description",
52 | 					AuthRequired: []string{},
53 | 				},
54 | 			},
55 | 		},
56 | 	}
57 | 	for _, tc := range tcs {
58 | 		t.Run(tc.desc, func(t *testing.T) {
59 | 			got := struct {
60 | 				Tools server.ToolConfigs `yaml:"tools"`
61 | 			}{}
62 | 			// Parse contents
63 | 			err := yaml.UnmarshalContext(ctx, testutils.FormatYaml(tc.in), &got)
64 | 			if err != nil {
65 | 				t.Fatalf("unable to unmarshal: %s", err)
66 | 			}
67 | 			if diff := cmp.Diff(tc.want, got.Tools); diff != "" {
68 | 				t.Fatalf("incorrect parse: diff %v", diff)
69 | 			}
70 | 		})
71 | 	}
72 | }
73 | 
```

--------------------------------------------------------------------------------
/internal/tools/cloudhealthcare/cloudhealthcaregetfhirresource/cloudhealthcaregetfhirresource_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 getfhirresource_test
16 | 
17 | import (
18 | 	"testing"
19 | 
20 | 	yaml "github.com/goccy/go-yaml"
21 | 	"github.com/google/go-cmp/cmp"
22 | 	"github.com/googleapis/genai-toolbox/internal/server"
23 | 	"github.com/googleapis/genai-toolbox/internal/testutils"
24 | 	getfhirresource "github.com/googleapis/genai-toolbox/internal/tools/cloudhealthcare/cloudhealthcaregetfhirresource"
25 | )
26 | 
27 | func TestParseFromYamlHealthcareGetFHIRResource(t *testing.T) {
28 | 	ctx, err := testutils.ContextWithNewLogger()
29 | 	if err != nil {
30 | 		t.Fatalf("unexpected error: %s", err)
31 | 	}
32 | 	tcs := []struct {
33 | 		desc string
34 | 		in   string
35 | 		want server.ToolConfigs
36 | 	}{
37 | 		{
38 | 			desc: "basic example",
39 | 			in: `
40 | 			tools:
41 | 				example_tool:
42 | 					kind: cloud-healthcare-get-fhir-resource
43 | 					source: my-instance
44 | 					description: some description
45 | 			`,
46 | 			want: server.ToolConfigs{
47 | 				"example_tool": getfhirresource.Config{
48 | 					Name:         "example_tool",
49 | 					Kind:         "cloud-healthcare-get-fhir-resource",
50 | 					Source:       "my-instance",
51 | 					Description:  "some description",
52 | 					AuthRequired: []string{},
53 | 				},
54 | 			},
55 | 		},
56 | 	}
57 | 	for _, tc := range tcs {
58 | 		t.Run(tc.desc, func(t *testing.T) {
59 | 			got := struct {
60 | 				Tools server.ToolConfigs `yaml:"tools"`
61 | 			}{}
62 | 			// Parse contents
63 | 			err := yaml.UnmarshalContext(ctx, testutils.FormatYaml(tc.in), &got)
64 | 			if err != nil {
65 | 				t.Fatalf("unable to unmarshal: %s", err)
66 | 			}
67 | 			if diff := cmp.Diff(tc.want, got.Tools); diff != "" {
68 | 				t.Fatalf("incorrect parse: diff %v", diff)
69 | 			}
70 | 		})
71 | 	}
72 | }
73 | 
```

--------------------------------------------------------------------------------
/internal/tools/cloudhealthcare/cloudhealthcarelistdicomstores/cloudhealthcarelistdicomstores_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 listdicomstores_test
16 | 
17 | import (
18 | 	"testing"
19 | 
20 | 	yaml "github.com/goccy/go-yaml"
21 | 	"github.com/google/go-cmp/cmp"
22 | 	"github.com/googleapis/genai-toolbox/internal/server"
23 | 	"github.com/googleapis/genai-toolbox/internal/testutils"
24 | 	listdicomstores "github.com/googleapis/genai-toolbox/internal/tools/cloudhealthcare/cloudhealthcarelistdicomstores"
25 | )
26 | 
27 | func TestParseFromYamlHealthcareListDICOMStores(t *testing.T) {
28 | 	ctx, err := testutils.ContextWithNewLogger()
29 | 	if err != nil {
30 | 		t.Fatalf("unexpected error: %s", err)
31 | 	}
32 | 	tcs := []struct {
33 | 		desc string
34 | 		in   string
35 | 		want server.ToolConfigs
36 | 	}{
37 | 		{
38 | 			desc: "basic example",
39 | 			in: `
40 | 			tools:
41 | 				example_tool:
42 | 					kind: cloud-healthcare-list-dicom-stores
43 | 					source: my-instance
44 | 					description: some description
45 | 			`,
46 | 			want: server.ToolConfigs{
47 | 				"example_tool": listdicomstores.Config{
48 | 					Name:         "example_tool",
49 | 					Kind:         "cloud-healthcare-list-dicom-stores",
50 | 					Source:       "my-instance",
51 | 					Description:  "some description",
52 | 					AuthRequired: []string{},
53 | 				},
54 | 			},
55 | 		},
56 | 	}
57 | 	for _, tc := range tcs {
58 | 		t.Run(tc.desc, func(t *testing.T) {
59 | 			got := struct {
60 | 				Tools server.ToolConfigs `yaml:"tools"`
61 | 			}{}
62 | 			// Parse contents
63 | 			err := yaml.UnmarshalContext(ctx, testutils.FormatYaml(tc.in), &got)
64 | 			if err != nil {
65 | 				t.Fatalf("unable to unmarshal: %s", err)
66 | 			}
67 | 			if diff := cmp.Diff(tc.want, got.Tools); diff != "" {
68 | 				t.Fatalf("incorrect parse: diff %v", diff)
69 | 			}
70 | 		})
71 | 	}
72 | }
73 | 
```

--------------------------------------------------------------------------------
/internal/tools/bigquery/bigqueryconversationalanalytics/bigqueryconversationalanalytics_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 bigqueryconversationalanalytics_test
16 | 
17 | import (
18 | 	"testing"
19 | 
20 | 	yaml "github.com/goccy/go-yaml"
21 | 	"github.com/google/go-cmp/cmp"
22 | 	"github.com/googleapis/genai-toolbox/internal/server"
23 | 	"github.com/googleapis/genai-toolbox/internal/testutils"
24 | 	"github.com/googleapis/genai-toolbox/internal/tools/bigquery/bigqueryconversationalanalytics"
25 | )
26 | 
27 | func TestParseFromYamlBigQueryConversationalAnalytics(t *testing.T) {
28 | 	ctx, err := testutils.ContextWithNewLogger()
29 | 	if err != nil {
30 | 		t.Fatalf("unexpected error: %s", err)
31 | 	}
32 | 	tcs := []struct {
33 | 		desc string
34 | 		in   string
35 | 		want server.ToolConfigs
36 | 	}{
37 | 		{
38 | 			desc: "basic example",
39 | 			in: `
40 | 			tools:
41 | 				example_tool:
42 | 					kind: bigquery-conversational-analytics
43 | 					source: my-instance
44 | 					description: some description
45 | 			`,
46 | 			want: server.ToolConfigs{
47 | 				"example_tool": bigqueryconversationalanalytics.Config{
48 | 					Name:         "example_tool",
49 | 					Kind:         "bigquery-conversational-analytics",
50 | 					Source:       "my-instance",
51 | 					Description:  "some description",
52 | 					AuthRequired: []string{},
53 | 				},
54 | 			},
55 | 		},
56 | 	}
57 | 	for _, tc := range tcs {
58 | 		t.Run(tc.desc, func(t *testing.T) {
59 | 			got := struct {
60 | 				Tools server.ToolConfigs `yaml:"tools"`
61 | 			}{}
62 | 			// Parse contents
63 | 			err := yaml.UnmarshalContext(ctx, testutils.FormatYaml(tc.in), &got)
64 | 			if err != nil {
65 | 				t.Fatalf("unable to unmarshal: %s", err)
66 | 			}
67 | 			if diff := cmp.Diff(tc.want, got.Tools); diff != "" {
68 | 				t.Fatalf("incorrect parse: diff %v", diff)
69 | 			}
70 | 		})
71 | 	}
72 | }
73 | 
```

--------------------------------------------------------------------------------
/internal/tools/cloudhealthcare/cloudhealthcarefhirpatientsearch/cloudhealthcarefhirpatientsearch_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 fhirpatientsearch_test
16 | 
17 | import (
18 | 	"testing"
19 | 
20 | 	yaml "github.com/goccy/go-yaml"
21 | 	"github.com/google/go-cmp/cmp"
22 | 	"github.com/googleapis/genai-toolbox/internal/server"
23 | 	"github.com/googleapis/genai-toolbox/internal/testutils"
24 | 	fhirpatientsearch "github.com/googleapis/genai-toolbox/internal/tools/cloudhealthcare/cloudhealthcarefhirpatientsearch"
25 | )
26 | 
27 | func TestParseFromYamlHealthcareFHIRPatientSearch(t *testing.T) {
28 | 	ctx, err := testutils.ContextWithNewLogger()
29 | 	if err != nil {
30 | 		t.Fatalf("unexpected error: %s", err)
31 | 	}
32 | 	tcs := []struct {
33 | 		desc string
34 | 		in   string
35 | 		want server.ToolConfigs
36 | 	}{
37 | 		{
38 | 			desc: "basic example",
39 | 			in: `
40 | 			tools:
41 | 				example_tool:
42 | 					kind: cloud-healthcare-fhir-patient-search
43 | 					source: my-instance
44 | 					description: some description
45 | 			`,
46 | 			want: server.ToolConfigs{
47 | 				"example_tool": fhirpatientsearch.Config{
48 | 					Name:         "example_tool",
49 | 					Kind:         "cloud-healthcare-fhir-patient-search",
50 | 					Source:       "my-instance",
51 | 					Description:  "some description",
52 | 					AuthRequired: []string{},
53 | 				},
54 | 			},
55 | 		},
56 | 	}
57 | 	for _, tc := range tcs {
58 | 		t.Run(tc.desc, func(t *testing.T) {
59 | 			got := struct {
60 | 				Tools server.ToolConfigs `yaml:"tools"`
61 | 			}{}
62 | 			// Parse contents
63 | 			err := yaml.UnmarshalContext(ctx, testutils.FormatYaml(tc.in), &got)
64 | 			if err != nil {
65 | 				t.Fatalf("unable to unmarshal: %s", err)
66 | 			}
67 | 			if diff := cmp.Diff(tc.want, got.Tools); diff != "" {
68 | 				t.Fatalf("incorrect parse: diff %v", diff)
69 | 			}
70 | 		})
71 | 	}
72 | }
73 | 
```

--------------------------------------------------------------------------------
/internal/tools/cloudhealthcare/cloudhealthcaresearchdicomseries/cloudhealthcaresearchdicomseries_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 searchdicomseries_test
16 | 
17 | import (
18 | 	"testing"
19 | 
20 | 	yaml "github.com/goccy/go-yaml"
21 | 	"github.com/google/go-cmp/cmp"
22 | 	"github.com/googleapis/genai-toolbox/internal/server"
23 | 	"github.com/googleapis/genai-toolbox/internal/testutils"
24 | 	searchdicomseries "github.com/googleapis/genai-toolbox/internal/tools/cloudhealthcare/cloudhealthcaresearchdicomseries"
25 | )
26 | 
27 | func TestParseFromYamlHealthcareSearchDICOMSeries(t *testing.T) {
28 | 	ctx, err := testutils.ContextWithNewLogger()
29 | 	if err != nil {
30 | 		t.Fatalf("unexpected error: %s", err)
31 | 	}
32 | 	tcs := []struct {
33 | 		desc string
34 | 		in   string
35 | 		want server.ToolConfigs
36 | 	}{
37 | 		{
38 | 			desc: "basic example",
39 | 			in: `
40 | 			tools:
41 | 				example_tool:
42 | 					kind: cloud-healthcare-search-dicom-series
43 | 					source: my-instance
44 | 					description: some description
45 | 			`,
46 | 			want: server.ToolConfigs{
47 | 				"example_tool": searchdicomseries.Config{
48 | 					Name:         "example_tool",
49 | 					Kind:         "cloud-healthcare-search-dicom-series",
50 | 					Source:       "my-instance",
51 | 					Description:  "some description",
52 | 					AuthRequired: []string{},
53 | 				},
54 | 			},
55 | 		},
56 | 	}
57 | 	for _, tc := range tcs {
58 | 		t.Run(tc.desc, func(t *testing.T) {
59 | 			got := struct {
60 | 				Tools server.ToolConfigs `yaml:"tools"`
61 | 			}{}
62 | 			// Parse contents
63 | 			err := yaml.UnmarshalContext(ctx, testutils.FormatYaml(tc.in), &got)
64 | 			if err != nil {
65 | 				t.Fatalf("unable to unmarshal: %s", err)
66 | 			}
67 | 			if diff := cmp.Diff(tc.want, got.Tools); diff != "" {
68 | 				t.Fatalf("incorrect parse: diff %v", diff)
69 | 			}
70 | 		})
71 | 	}
72 | }
73 | 
```
Page 4/76FirstPrevNextLast