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 |
```