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

--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------

```
1 | [submodule "docs2/themes/godocs"]
2 | 	path = docs2/themes/godocs
3 | 	url = https://github.com/themefisher/godocs.git
4 | 
```

--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------

```
 1 | # direnv
 2 | .envrc
 3 | 
 4 | # vscode
 5 | .vscode/
 6 | 
 7 | # idea
 8 | .idea/
 9 | 
10 | # npm
11 | node_modules
12 | 
13 | # hugo
14 | .hugo/public/
15 | .hugo/resources/_gen
16 | .hugo_build.lock
17 | 
18 | # coverage
19 | .coverage
20 | 
21 | # executable
22 | genai-toolbox
23 | toolbox
```

--------------------------------------------------------------------------------
/.golangci.yaml:
--------------------------------------------------------------------------------

```yaml
 1 | # Copyright 2024 Google LLC.
 2 | #
 3 | # Licensed under the Apache License, Version 2.0 (the "License");
 4 | # you may not use this file except in compliance with the License.
 5 | # You may obtain a copy of the License at
 6 | #
 7 | #     http://www.apache.org/licenses/LICENSE-2.0
 8 | #
 9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 | 
15 | version: "2"
16 | linters:
17 |   enable:
18 |     - errcheck
19 |     - govet
20 |     - ineffassign
21 |     - staticcheck
22 |     - unused
23 |   exclusions:
24 |     presets:
25 |       - std-error-handling
26 | formatters:
27 |   enable:
28 |     - goimports
29 |   settings:
30 |     gofmt:
31 |       rewrite-rules:
32 |         - pattern: interface{}
33 |           replacement: any
34 |         - pattern: a[b:len(a)]
35 |           replacement: a[b:]
36 | 
```

--------------------------------------------------------------------------------
/.lycheeignore:
--------------------------------------------------------------------------------

```
 1 | # Ignore documentation placeholders and generic example domains
 2 | ^https?://([a-zA-Z0-9-]+\.)?example\.com(:\d+)?(/.*)?$
 3 | ^http://example\.net
 4 | 
 5 | # Shields.io badges often trigger rate limits or intermittent 503s
 6 | ^https://img\.shields\.io/.*
 7 | 
 8 | # PDF files are ignored as lychee cannot reliably parse internal PDF links
 9 | \.pdf$
10 | 
11 | # Standard mailto: protocol is not a web URL
12 | ^mailto:
13 | 
14 | # Ignore local development endpoints that won't resolve in CI/CD environments
15 | ^https?://(127\.0\.0\.1|localhost)(:\d+)?(/.*)?$
16 | 
17 | # Placeholder for Google Cloud Run service discovery
18 | https://cloud-run-url.app/
19 | 
20 | # DGraph Cloud and private instance endpoints
21 | https://xxx.cloud.dgraph.io/
22 | https://cloud.dgraph.io/login
23 | https://dgraph.io/docs
24 | 
25 | # MySQL Community downloads and main site (often protected by bot mitigation)
26 | https://dev.mysql.com/downloads/installer/
27 | https://www.mysql.com/
28 | 
29 | # Claude desktop download link
30 | https://claude.ai/download
31 | 
32 | # Google Cloud Run product page
33 | https://cloud.google.com/run
34 | 
35 | # These specific deep links are known to cause redirect loops or 403s in automated scrapers
36 | https://dev.mysql.com/doc/refman/8.4/en/sql-prepared-statements.html
37 | https://dev.mysql.com/doc/refman/8.4/en/user-names.html
38 | 
39 | # npmjs links can occasionally trigger rate limiting during high-frequency CI builds
40 | https://www.npmjs.com/package/@toolbox-sdk/core
41 | https://www.npmjs.com/package/@toolbox-sdk/adk
42 | 
43 | 
44 | # Ignore social media and blog profiles to reduce external request overhead
45 | https://medium.com/@mcp_toolbox
```

--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------

```markdown
   1 | ![logo](./logo.png)
   2 | 
   3 | # MCP Toolbox for Databases
   4 | 
   5 | [![Docs](https://img.shields.io/badge/docs-MCP_Toolbox-blue)](https://googleapis.github.io/genai-toolbox/)
   6 | [![Discord](https://img.shields.io/badge/Discord-%235865F2.svg?style=flat&logo=discord&logoColor=white)](https://discord.gg/Dmm69peqjh)
   7 | [![Medium](https://img.shields.io/badge/Medium-12100E?style=flat&logo=medium&logoColor=white)](https://medium.com/@mcp_toolbox)
   8 | [![Go Report Card](https://goreportcard.com/badge/github.com/googleapis/genai-toolbox)](https://goreportcard.com/report/github.com/googleapis/genai-toolbox)
   9 | 
  10 | > [!NOTE]
  11 | > MCP Toolbox for Databases is currently in beta, and may see breaking
  12 | > changes until the first stable release (v1.0).
  13 | 
  14 | MCP Toolbox for Databases is an open source MCP server for databases. It enables
  15 | you to develop tools easier, faster, and more securely by handling the complexities
  16 | such as connection pooling, authentication, and more.
  17 | 
  18 | This README provides a brief overview. For comprehensive details, see the [full
  19 | documentation](https://googleapis.github.io/genai-toolbox/).
  20 | 
  21 | > [!NOTE]
  22 | > This solution was originally named “Gen AI Toolbox for Databases” as
  23 | > its initial development predated MCP, but was renamed to align with recently
  24 | > added MCP compatibility.
  25 | 
  26 | <!-- TOC ignore:true -->
  27 | ## Table of Contents
  28 | 
  29 | <!-- TOC -->
  30 | 
  31 | - [Why Toolbox?](#why-toolbox)
  32 | - [General Architecture](#general-architecture)
  33 | - [Getting Started](#getting-started)
  34 |   - [Installing the server](#installing-the-server)
  35 |   - [Running the server](#running-the-server)
  36 |   - [Integrating your application](#integrating-your-application)
  37 |   - [Using Toolbox with Gemini CLI Extensions](#using-toolbox-with-gemini-cli-extensions)
  38 | - [Configuration](#configuration)
  39 |   - [Sources](#sources)
  40 |   - [Tools](#tools)
  41 |   - [Toolsets](#toolsets)
  42 |   - [Prompts](#prompts)
  43 | - [Versioning](#versioning)
  44 |   - [Pre-1.0.0 Versioning](#pre-100-versioning)
  45 |   - [Post-1.0.0 Versioning](#post-100-versioning)
  46 | - [Contributing](#contributing)
  47 | - [Community](#community)
  48 | 
  49 | <!-- /TOC -->
  50 | 
  51 | ## Why Toolbox?
  52 | 
  53 | Toolbox helps you build Gen AI tools that let your agents access data in your
  54 | database. Toolbox provides:
  55 | 
  56 | - **Simplified development**: Integrate tools to your agent in less than 10
  57 |   lines of code, reuse tools between multiple agents or frameworks, and deploy
  58 |   new versions of tools more easily.
  59 | - **Better performance**: Best practices such as connection pooling,
  60 |   authentication, and more.
  61 | - **Enhanced security**: Integrated auth for more secure access to your data
  62 | - **End-to-end observability**: Out of the box metrics and tracing with built-in
  63 |   support for OpenTelemetry.
  64 | 
  65 | **⚡ Supercharge Your Workflow with an AI Database Assistant ⚡**
  66 | 
  67 | Stop context-switching and let your AI assistant become a true co-developer. By
  68 | [connecting your IDE to your databases with MCP Toolbox][connect-ide], you can
  69 | delegate complex and time-consuming database tasks, allowing you to build faster
  70 | and focus on what matters. This isn't just about code completion; it's about
  71 | giving your AI the context it needs to handle the entire development lifecycle.
  72 | 
  73 | Here’s how it will save you time:
  74 | 
  75 | - **Query in Plain English**: Interact with your data using natural language
  76 |   right from your IDE. Ask complex questions like, *"How many orders were
  77 |   delivered in 2024, and what items were in them?"* without writing any SQL.
  78 | - **Automate Database Management**: Simply describe your data needs, and let the
  79 |   AI assistant manage your database for you. It can handle generating queries,
  80 |   creating tables, adding indexes, and more.
  81 | - **Generate Context-Aware Code**: Empower your AI assistant to generate
  82 |   application code and tests with a deep understanding of your real-time
  83 |   database schema.  This accelerates the development cycle by ensuring the
  84 |   generated code is directly usable.
  85 | - **Slash Development Overhead**: Radically reduce the time spent on manual
  86 |   setup and boilerplate. MCP Toolbox helps streamline lengthy database
  87 |   configurations, repetitive code, and error-prone schema migrations.
  88 | 
  89 | Learn [how to connect your AI tools (IDEs) to Toolbox using MCP][connect-ide].
  90 | 
  91 | [connect-ide]: https://googleapis.github.io/genai-toolbox/how-to/connect-ide/
  92 | 
  93 | ## General Architecture
  94 | 
  95 | Toolbox sits between your application's orchestration framework and your
  96 | database, providing a control plane that is used to modify, distribute, or
  97 | invoke tools. It simplifies the management of your tools by providing you with a
  98 | centralized location to store and update tools, allowing you to share tools
  99 | between agents and applications and update those tools without necessarily
 100 | redeploying your application.
 101 | 
 102 | <p align="center">
 103 | <img src="./docs/en/getting-started/introduction/architecture.png" alt="architecture" width="50%"/>
 104 | </p>
 105 | 
 106 | ## Getting Started
 107 | 
 108 | ### (Non-production) Running Toolbox
 109 | 
 110 | You can run Toolbox directly with a [configuration file](#configuration):
 111 | 
 112 | ```sh
 113 | npx @toolbox-sdk/server --tools-file tools.yaml
 114 | ```
 115 | 
 116 | This runs the latest version of the toolbox server with your configuration file.
 117 | 
 118 | > [!NOTE]
 119 | > This method should only be used for non-production use cases such as
 120 | > experimentation. For any production use-cases, please consider [Installing the
 121 | > server](#installing-the-server) and then [running it](#running-the-server).
 122 | 
 123 | ### Installing the server
 124 | 
 125 | For the latest version, check the [releases page][releases] and use the
 126 | following instructions for your OS and CPU architecture.
 127 | 
 128 | [releases]: https://github.com/googleapis/genai-toolbox/releases
 129 | 
 130 | <details open>
 131 | <summary>Binary</summary>
 132 | 
 133 | To install Toolbox as a binary:
 134 | 
 135 | <!-- {x-release-please-start-version} -->
 136 | > <details>
 137 | > <summary>Linux (AMD64)</summary>
 138 | >
 139 | > To install Toolbox as a binary on Linux (AMD64):
 140 | >
 141 | > ```sh
 142 | > # see releases page for other versions
 143 | > export VERSION=0.25.0
 144 | > curl -L -o toolbox https://storage.googleapis.com/genai-toolbox/v$VERSION/linux/amd64/toolbox
 145 | > chmod +x toolbox
 146 | > ```
 147 | >
 148 | > </details>
 149 | > <details>
 150 | > <summary>macOS (Apple Silicon)</summary>
 151 | >
 152 | > To install Toolbox as a binary on macOS (Apple Silicon):
 153 | >
 154 | > ```sh
 155 | > # see releases page for other versions
 156 | > export VERSION=0.25.0
 157 | > curl -L -o toolbox https://storage.googleapis.com/genai-toolbox/v$VERSION/darwin/arm64/toolbox
 158 | > chmod +x toolbox
 159 | > ```
 160 | >
 161 | > </details>
 162 | > <details>
 163 | > <summary>macOS (Intel)</summary>
 164 | >
 165 | > To install Toolbox as a binary on macOS (Intel):
 166 | >
 167 | > ```sh
 168 | > # see releases page for other versions
 169 | > export VERSION=0.25.0
 170 | > curl -L -o toolbox https://storage.googleapis.com/genai-toolbox/v$VERSION/darwin/amd64/toolbox
 171 | > chmod +x toolbox
 172 | > ```
 173 | >
 174 | > </details>
 175 | > <details>
 176 | > <summary>Windows (Command Prompt)</summary>
 177 | >
 178 | > To install Toolbox as a binary on Windows (Command Prompt):
 179 | >
 180 | > ```cmd
 181 | > :: see releases page for other versions
 182 | > set VERSION=0.25.0
 183 | > curl -o toolbox.exe "https://storage.googleapis.com/genai-toolbox/v%VERSION%/windows/amd64/toolbox.exe"
 184 | > ```
 185 | >
 186 | > </details>
 187 | > <details>
 188 | > <summary>Windows (PowerShell)</summary>
 189 | >
 190 | > To install Toolbox as a binary on Windows (PowerShell):
 191 | >
 192 | > ```powershell
 193 | > # see releases page for other versions
 194 | > $VERSION = "0.25.0"
 195 | > curl.exe -o toolbox.exe "https://storage.googleapis.com/genai-toolbox/v$VERSION/windows/amd64/toolbox.exe"
 196 | > ```
 197 | >
 198 | > </details>
 199 | </details>
 200 | 
 201 | <details>
 202 | <summary>Container image</summary>
 203 | You can also install Toolbox as a container:
 204 | 
 205 | ```sh
 206 | # see releases page for other versions
 207 | export VERSION=0.25.0
 208 | docker pull us-central1-docker.pkg.dev/database-toolbox/toolbox/toolbox:$VERSION
 209 | ```
 210 | 
 211 | </details>
 212 | 
 213 | <details>
 214 | <summary>Homebrew</summary>
 215 | 
 216 | To install Toolbox using Homebrew on macOS or Linux:
 217 | 
 218 | ```sh
 219 | brew install mcp-toolbox
 220 | ```
 221 | 
 222 | </details>
 223 | 
 224 | <details>
 225 | <summary>Compile from source</summary>
 226 | 
 227 | To install from source, ensure you have the latest version of
 228 | [Go installed](https://go.dev/doc/install), and then run the following command:
 229 | 
 230 | ```sh
 231 | go install github.com/googleapis/[email protected]
 232 | ```
 233 | <!-- {x-release-please-end} -->
 234 | 
 235 | </details>
 236 | 
 237 | <details>
 238 | <summary>Gemini CLI Extensions</summary>
 239 | 
 240 | To install Gemini CLI Extensions for MCP Toolbox, run the following command:
 241 | 
 242 | ```sh
 243 | gemini extensions install https://github.com/gemini-cli-extensions/mcp-toolbox
 244 | ```
 245 | 
 246 | </details>
 247 | 
 248 | ### Running the server
 249 | 
 250 | [Configure](#configuration) a `tools.yaml` to define your tools, and then
 251 | execute `toolbox` to start the server:
 252 | 
 253 | <details open>
 254 | <summary>Binary</summary>
 255 | 
 256 | To run Toolbox from binary:
 257 | 
 258 | ```sh
 259 | ./toolbox --tools-file "tools.yaml"
 260 | ```
 261 | 
 262 | > ⓘ Note  
 263 | > Toolbox enables dynamic reloading by default. To disable, use the
 264 | > `--disable-reload` flag.
 265 | 
 266 | </details>
 267 | 
 268 | <details>
 269 | 
 270 | <summary>Container image</summary>
 271 | 
 272 | To run the server after pulling the [container image](#installing-the-server):
 273 | 
 274 | ```sh
 275 | export VERSION=0.24.0 # Use the version you pulled
 276 | docker run -p 5000:5000 \
 277 | -v $(pwd)/tools.yaml:/app/tools.yaml \
 278 | us-central1-docker.pkg.dev/database-toolbox/toolbox/toolbox:$VERSION \
 279 | --tools-file "/app/tools.yaml"
 280 | ```
 281 | 
 282 | > ⓘ Note  
 283 | > The `-v` flag mounts your local `tools.yaml` into the container, and `-p` maps
 284 | > the container's port `5000` to your host's port `5000`.
 285 | 
 286 | </details>
 287 | 
 288 | <details>
 289 | 
 290 | <summary>Source</summary>
 291 | 
 292 | To run the server directly from source, navigate to the project root directory
 293 | and run:
 294 | 
 295 | ```sh
 296 | go run .
 297 | ```
 298 | 
 299 | > ⓘ Note  
 300 | > This command runs the project from source, and is more suitable for development
 301 | > and testing. It does **not** compile a binary into your `$GOPATH`. If you want
 302 | > to compile a binary instead, refer the [Developer
 303 | > Documentation](./DEVELOPER.md#building-the-binary).
 304 | 
 305 | </details>
 306 | 
 307 | <details>
 308 | 
 309 | <summary>Homebrew</summary>
 310 | 
 311 | If you installed Toolbox using [Homebrew](https://brew.sh/), the `toolbox`
 312 | binary is available in your system path. You can start the server with the same
 313 | command:
 314 | 
 315 | ```sh
 316 | toolbox --tools-file "tools.yaml"
 317 | ```
 318 | 
 319 | </details>
 320 | 
 321 | <details>
 322 | <summary>NPM</summary>
 323 | 
 324 | To run Toolbox directly without manually downloading the binary (requires Node.js):
 325 | ```sh
 326 | npx @toolbox-sdk/server --tools-file tools.yaml
 327 | ```
 328 | 
 329 | </details>
 330 | 
 331 | <details>
 332 | 
 333 | <summary>Gemini CLI</summary>
 334 | 
 335 | Interact with your custom tools using natural language. Check
 336 | [gemini-cli-extensions/mcp-toolbox](https://github.com/gemini-cli-extensions/mcp-toolbox)
 337 | for more information.
 338 | 
 339 | </details>
 340 | 
 341 | You can use `toolbox help` for a full list of flags! To stop the server, send a
 342 | terminate signal (`ctrl+c` on most platforms).
 343 | 
 344 | For more detailed documentation on deploying to different environments, check
 345 | out the resources in the [How-to
 346 | section](https://googleapis.github.io/genai-toolbox/how-to/)
 347 | 
 348 | ### Integrating your application
 349 | 
 350 | Once your server is up and running, you can load the tools into your
 351 | application. See below the list of Client SDKs for using various frameworks:
 352 | 
 353 | <details open>
 354 |   <summary>Python (<a href="https://github.com/googleapis/mcp-toolbox-sdk-python">Github</a>)</summary>
 355 |   <br>
 356 |   <blockquote>
 357 | 
 358 |   <details open>
 359 |     <summary>Core</summary>
 360 | 
 361 | 1. Install [Toolbox Core SDK][toolbox-core]:
 362 | 
 363 |     ```bash
 364 |     pip install toolbox-core
 365 |     ```
 366 | 
 367 | 1. Load tools:
 368 | 
 369 |     ```python
 370 |     from toolbox_core import ToolboxClient
 371 | 
 372 |     # update the url to point to your server
 373 |     async with ToolboxClient("http://127.0.0.1:5000") as client:
 374 | 
 375 |         # these tools can be passed to your application!
 376 |         tools = await client.load_toolset("toolset_name")
 377 |     ```
 378 | 
 379 | For more detailed instructions on using the Toolbox Core SDK, see the
 380 | [project's README][toolbox-core-readme].
 381 | 
 382 | [toolbox-core]: https://pypi.org/project/toolbox-core/
 383 | [toolbox-core-readme]: https://github.com/googleapis/mcp-toolbox-sdk-python/tree/main/packages/toolbox-core/README.md
 384 | 
 385 |   </details>
 386 |   <details>
 387 |     <summary>LangChain / LangGraph</summary>
 388 | 
 389 | 1. Install [Toolbox LangChain SDK][toolbox-langchain]:
 390 | 
 391 |     ```bash
 392 |     pip install toolbox-langchain
 393 |     ```
 394 | 
 395 | 1. Load tools:
 396 | 
 397 |     ```python
 398 |     from toolbox_langchain import ToolboxClient
 399 | 
 400 |     # update the url to point to your server
 401 |     async with ToolboxClient("http://127.0.0.1:5000") as client:
 402 | 
 403 |         # these tools can be passed to your application!
 404 |         tools = client.load_toolset()
 405 |     ```
 406 | 
 407 |     For more detailed instructions on using the Toolbox LangChain SDK, see the
 408 |     [project's README][toolbox-langchain-readme].
 409 | 
 410 |     [toolbox-langchain]: https://pypi.org/project/toolbox-langchain/
 411 |     [toolbox-langchain-readme]: https://github.com/googleapis/mcp-toolbox-sdk-python/blob/main/packages/toolbox-langchain/README.md
 412 | 
 413 |   </details>
 414 |   <details>
 415 |     <summary>LlamaIndex</summary>
 416 | 
 417 | 1. Install [Toolbox Llamaindex SDK][toolbox-llamaindex]:
 418 | 
 419 |     ```bash
 420 |     pip install toolbox-llamaindex
 421 |     ```
 422 | 
 423 | 1. Load tools:
 424 | 
 425 |     ```python
 426 |     from toolbox_llamaindex import ToolboxClient
 427 | 
 428 |     # update the url to point to your server
 429 |     async with ToolboxClient("http://127.0.0.1:5000") as client:
 430 | 
 431 |         # these tools can be passed to your application!
 432 |         tools = client.load_toolset()
 433 |     ```
 434 | 
 435 |     For more detailed instructions on using the Toolbox Llamaindex SDK, see the
 436 |     [project's README][toolbox-llamaindex-readme].
 437 | 
 438 |     [toolbox-llamaindex]: https://pypi.org/project/toolbox-llamaindex/
 439 |     [toolbox-llamaindex-readme]: https://github.com/googleapis/genai-toolbox-llamaindex-python/blob/main/README.md
 440 | 
 441 |   </details>
 442 | </details>
 443 | </blockquote>
 444 | <details>
 445 |   <summary>Javascript/Typescript (<a href="https://github.com/googleapis/mcp-toolbox-sdk-js">Github</a>)</summary>
 446 |   <br>
 447 |   <blockquote>
 448 | 
 449 |   <details open>
 450 |     <summary>Core</summary>
 451 | 
 452 | 1. Install [Toolbox Core SDK][toolbox-core-js]:
 453 | 
 454 |     ```bash
 455 |     npm install @toolbox-sdk/core
 456 |     ```
 457 | 
 458 | 1. Load tools:
 459 | 
 460 |     ```javascript
 461 |     import { ToolboxClient } from '@toolbox-sdk/core';
 462 | 
 463 |     // update the url to point to your server
 464 |     const URL = 'http://127.0.0.1:5000';
 465 |     let client = new ToolboxClient(URL);
 466 | 
 467 |     // these tools can be passed to your application!
 468 |     const tools = await client.loadToolset('toolsetName');
 469 |     ```
 470 | 
 471 |     For more detailed instructions on using the Toolbox Core SDK, see the
 472 |     [project's README][toolbox-core-js-readme].
 473 | 
 474 |     [toolbox-core-js]: https://www.npmjs.com/package/@toolbox-sdk/core
 475 |     [toolbox-core-js-readme]: https://github.com/googleapis/mcp-toolbox-sdk-js/blob/main/packages/toolbox-core/README.md
 476 | 
 477 |   </details>
 478 |   <details>
 479 |     <summary>LangChain / LangGraph</summary>
 480 | 
 481 | 1. Install [Toolbox Core SDK][toolbox-core-js]:
 482 | 
 483 |     ```bash
 484 |     npm install @toolbox-sdk/core
 485 |     ```
 486 | 
 487 | 2. Load tools:
 488 | 
 489 |     ```javascript
 490 |     import { ToolboxClient } from '@toolbox-sdk/core';
 491 | 
 492 |     // update the url to point to your server
 493 |     const URL = 'http://127.0.0.1:5000';
 494 |     let client = new ToolboxClient(URL);
 495 | 
 496 |     // these tools can be passed to your application!
 497 |     const toolboxTools = await client.loadToolset('toolsetName');
 498 | 
 499 |     // Define the basics of the tool: name, description, schema and core logic
 500 |     const getTool = (toolboxTool) => tool(currTool, {
 501 |         name: toolboxTool.getName(),
 502 |         description: toolboxTool.getDescription(),
 503 |         schema: toolboxTool.getParamSchema()
 504 |     });
 505 | 
 506 |     // Use these tools in your Langchain/Langraph applications
 507 |     const tools = toolboxTools.map(getTool);
 508 |     ```
 509 | 
 510 |   </details>
 511 |   <details>
 512 |     <summary>Genkit</summary>
 513 | 
 514 | 1. Install [Toolbox Core SDK][toolbox-core-js]:
 515 | 
 516 |     ```bash
 517 |     npm install @toolbox-sdk/core
 518 |     ```
 519 | 
 520 | 2. Load tools:
 521 | 
 522 |     ```javascript
 523 |     import { ToolboxClient } from '@toolbox-sdk/core';
 524 |     import { genkit } from 'genkit';
 525 | 
 526 |     // Initialise genkit
 527 |     const ai = genkit({
 528 |         plugins: [
 529 |             googleAI({
 530 |                 apiKey: process.env.GEMINI_API_KEY || process.env.GOOGLE_API_KEY
 531 |             })
 532 |         ],
 533 |         model: googleAI.model('gemini-2.0-flash'),
 534 |     });
 535 | 
 536 |     // update the url to point to your server
 537 |     const URL = 'http://127.0.0.1:5000';
 538 |     let client = new ToolboxClient(URL);
 539 | 
 540 |     // these tools can be passed to your application!
 541 |     const toolboxTools = await client.loadToolset('toolsetName');
 542 | 
 543 |     // Define the basics of the tool: name, description, schema and core logic
 544 |     const getTool = (toolboxTool) => ai.defineTool({
 545 |         name: toolboxTool.getName(),
 546 |         description: toolboxTool.getDescription(),
 547 |         schema: toolboxTool.getParamSchema()
 548 |     }, toolboxTool)
 549 | 
 550 |     // Use these tools in your Genkit applications
 551 |     const tools = toolboxTools.map(getTool);
 552 |     ```
 553 | 
 554 |   </details>
 555 |   <details>
 556 |     <summary>ADK</summary>
 557 | 
 558 | 1. Install [Toolbox ADK SDK][toolbox-adk-js]:
 559 | 
 560 |     ```bash
 561 |     npm install @toolbox-sdk/adk
 562 |     ```
 563 | 
 564 | 2. Load tools:
 565 | 
 566 |     ```javascript
 567 |     import { ToolboxClient } from '@toolbox-sdk/adk';
 568 | 
 569 |     // update the url to point to your server
 570 |     const URL = 'http://127.0.0.1:5000';
 571 |     let client = new ToolboxClient(URL);
 572 | 
 573 |     // these tools can be passed to your application!
 574 |     const tools = await client.loadToolset('toolsetName');
 575 |     ```
 576 | 
 577 |     For more detailed instructions on using the Toolbox ADK SDK, see the
 578 |     [project's README][toolbox-adk-js-readme].
 579 | 
 580 |     [toolbox-adk-js]: https://www.npmjs.com/package/@toolbox-sdk/adk
 581 |     [toolbox-adk-js-readme]:
 582 |        https://github.com/googleapis/mcp-toolbox-sdk-js/blob/main/packages/toolbox-adk/README.md
 583 | 
 584 |   </details>
 585 | </details>
 586 | </blockquote>
 587 | <details>
 588 |   <summary>Go (<a href="https://github.com/googleapis/mcp-toolbox-sdk-go">Github</a>)</summary>
 589 |   <br>
 590 |   <blockquote>
 591 | 
 592 |   <details>
 593 |     <summary>Core</summary>
 594 | 
 595 | 1. Install [Toolbox Go SDK][toolbox-go]:
 596 | 
 597 |     ```bash
 598 |     go get github.com/googleapis/mcp-toolbox-sdk-go
 599 |     ```
 600 | 
 601 | 2. Load tools:
 602 | 
 603 |     ```go
 604 |     package main
 605 | 
 606 |     import (
 607 |       "github.com/googleapis/mcp-toolbox-sdk-go/core"
 608 |       "context"
 609 |     )
 610 | 
 611 |     func main() {
 612 |       // Make sure to add the error checks
 613 |       // update the url to point to your server
 614 |       URL := "http://127.0.0.1:5000";
 615 |       ctx := context.Background()
 616 | 
 617 |       client, err := core.NewToolboxClient(URL)
 618 | 
 619 |       // Framework agnostic tools
 620 |       tools, err := client.LoadToolset("toolsetName", ctx)
 621 |     }
 622 |     ```
 623 | 
 624 |     For more detailed instructions on using the Toolbox Go SDK, see the
 625 |     [project's README][toolbox-core-go-readme].
 626 | 
 627 |     [toolbox-go]: https://pkg.go.dev/github.com/googleapis/mcp-toolbox-sdk-go/core
 628 |     [toolbox-core-go-readme]: https://github.com/googleapis/mcp-toolbox-sdk-go/blob/main/core/README.md
 629 | 
 630 |   </details>
 631 |   <details>
 632 |     <summary>LangChain Go</summary>
 633 | 
 634 | 1. Install [Toolbox Go SDK][toolbox-go]:
 635 | 
 636 |     ```bash
 637 |     go get github.com/googleapis/mcp-toolbox-sdk-go
 638 |     ```
 639 | 
 640 | 2. Load tools:
 641 | 
 642 |     ```go
 643 |     package main
 644 | 
 645 |     import (
 646 |       "context"
 647 |       "encoding/json"
 648 | 
 649 |       "github.com/googleapis/mcp-toolbox-sdk-go/core"
 650 |       "github.com/tmc/langchaingo/llms"
 651 |     )
 652 | 
 653 |     func main() {
 654 |       // Make sure to add the error checks
 655 |       // update the url to point to your server
 656 |       URL := "http://127.0.0.1:5000"
 657 |       ctx := context.Background()
 658 | 
 659 |       client, err := core.NewToolboxClient(URL)
 660 | 
 661 |       // Framework agnostic tool
 662 |       tool, err := client.LoadTool("toolName", ctx)
 663 | 
 664 |       // Fetch the tool's input schema
 665 |       inputschema, err := tool.InputSchema()
 666 | 
 667 |       var paramsSchema map[string]any
 668 |       _ = json.Unmarshal(inputschema, &paramsSchema)
 669 | 
 670 |       // Use this tool with LangChainGo
 671 |       langChainTool := llms.Tool{
 672 |         Type: "function",
 673 |         Function: &llms.FunctionDefinition{
 674 |           Name:        tool.Name(),
 675 |           Description: tool.Description(),
 676 |           Parameters:  paramsSchema,
 677 |         },
 678 |       }
 679 |     }
 680 | 
 681 |     ```
 682 | 
 683 |   </details>
 684 |   <details>
 685 |     <summary>Genkit</summary>
 686 | 
 687 | 1. Install [Toolbox Go SDK][toolbox-go]:
 688 | 
 689 |     ```bash
 690 |     go get github.com/googleapis/mcp-toolbox-sdk-go
 691 |     ```
 692 | 
 693 | 2. Load tools:
 694 | 
 695 |     ```go
 696 |     package main
 697 |     import (
 698 |       "context"
 699 |       "log"
 700 | 
 701 |       "github.com/firebase/genkit/go/genkit"
 702 |       "github.com/googleapis/mcp-toolbox-sdk-go/core"
 703 |       "github.com/googleapis/mcp-toolbox-sdk-go/tbgenkit"
 704 |     )
 705 | 
 706 |     func main() {
 707 |       // Make sure to add the error checks
 708 |       // Update the url to point to your server
 709 |       URL := "http://127.0.0.1:5000"
 710 |       ctx := context.Background()
 711 |       g := genkit.Init(ctx)
 712 | 
 713 |       client, err := core.NewToolboxClient(URL)
 714 | 
 715 |       // Framework agnostic tool
 716 |       tool, err := client.LoadTool("toolName", ctx)
 717 | 
 718 |       // Convert the tool using the tbgenkit package
 719 |       // Use this tool with Genkit Go
 720 |       genkitTool, err := tbgenkit.ToGenkitTool(tool, g)
 721 |       if err != nil {
 722 |         log.Fatalf("Failed to convert tool: %v\n", err)
 723 |       }
 724 |       log.Printf("Successfully converted tool: %s", genkitTool.Name())
 725 |     }
 726 |     ```
 727 | 
 728 |   </details>
 729 |   <details>
 730 |     <summary>Go GenAI</summary>
 731 | 
 732 | 1. Install [Toolbox Go SDK][toolbox-go]:
 733 | 
 734 |     ```bash
 735 |     go get github.com/googleapis/mcp-toolbox-sdk-go
 736 |     ```
 737 | 
 738 | 2. Load tools:
 739 | 
 740 |     ```go
 741 |     package main
 742 | 
 743 |     import (
 744 |       "context"
 745 |       "encoding/json"
 746 | 
 747 |       "github.com/googleapis/mcp-toolbox-sdk-go/core"
 748 |       "google.golang.org/genai"
 749 |     )
 750 | 
 751 |     func main() {
 752 |       // Make sure to add the error checks
 753 |       // Update the url to point to your server
 754 |       URL := "http://127.0.0.1:5000"
 755 |       ctx := context.Background()
 756 | 
 757 |       client, err := core.NewToolboxClient(URL)
 758 | 
 759 |       // Framework agnostic tool
 760 |       tool, err := client.LoadTool("toolName", ctx)
 761 | 
 762 |       // Fetch the tool's input schema
 763 |       inputschema, err := tool.InputSchema()
 764 | 
 765 |       var schema *genai.Schema
 766 |       _ = json.Unmarshal(inputschema, &schema)
 767 | 
 768 |       funcDeclaration := &genai.FunctionDeclaration{
 769 |         Name:        tool.Name(),
 770 |         Description: tool.Description(),
 771 |         Parameters:  schema,
 772 |       }
 773 | 
 774 |       // Use this tool with Go GenAI
 775 |       genAITool := &genai.Tool{
 776 |         FunctionDeclarations: []*genai.FunctionDeclaration{funcDeclaration},
 777 |       }
 778 |     }
 779 |     ```
 780 | 
 781 |   </details>
 782 |   <details>
 783 |     <summary>OpenAI Go</summary>
 784 | 
 785 | 1. Install [Toolbox Go SDK][toolbox-go]:
 786 | 
 787 |     ```bash
 788 |     go get github.com/googleapis/mcp-toolbox-sdk-go
 789 |     ```
 790 | 
 791 | 2. Load tools:
 792 | 
 793 |     ```go
 794 |     package main
 795 | 
 796 |     import (
 797 |       "context"
 798 |       "encoding/json"
 799 | 
 800 |       "github.com/googleapis/mcp-toolbox-sdk-go/core"
 801 |       openai "github.com/openai/openai-go"
 802 |     )
 803 | 
 804 |     func main() {
 805 |       // Make sure to add the error checks
 806 |       // Update the url to point to your server
 807 |       URL := "http://127.0.0.1:5000"
 808 |       ctx := context.Background()
 809 | 
 810 |       client, err := core.NewToolboxClient(URL)
 811 | 
 812 |       // Framework agnostic tool
 813 |       tool, err := client.LoadTool("toolName", ctx)
 814 | 
 815 |       // Fetch the tool's input schema
 816 |       inputschema, err := tool.InputSchema()
 817 | 
 818 |       var paramsSchema openai.FunctionParameters
 819 |       _ = json.Unmarshal(inputschema, &paramsSchema)
 820 | 
 821 |       // Use this tool with OpenAI Go
 822 |       openAITool := openai.ChatCompletionToolParam{
 823 |         Function: openai.FunctionDefinitionParam{
 824 |           Name:        tool.Name(),
 825 |           Description: openai.String(tool.Description()),
 826 |           Parameters:  paramsSchema,
 827 |         },
 828 |       }
 829 | 
 830 |     }
 831 |     ```
 832 | 
 833 |   </details>
 834 |   <details open>
 835 |     <summary>ADK Go</summary>
 836 | 
 837 | 1. Install [Toolbox Go SDK][toolbox-go]:
 838 | 
 839 |     ```bash
 840 |     go get github.com/googleapis/mcp-toolbox-sdk-go
 841 |     ```
 842 | 
 843 | 1. Load tools:
 844 | 
 845 |     ```go
 846 |     package main
 847 | 
 848 |     import (
 849 |       "github.com/googleapis/mcp-toolbox-sdk-go/tbadk"
 850 |       "context"
 851 |     )
 852 | 
 853 |     func main() {
 854 |       // Make sure to add the error checks
 855 |       // Update the url to point to your server
 856 |       URL := "http://127.0.0.1:5000"
 857 |       ctx := context.Background()
 858 |       client, err := tbadk.NewToolboxClient(URL)
 859 |       if err != nil {
 860 |         return fmt.Sprintln("Could not start Toolbox Client", err)
 861 |       }
 862 | 
 863 |       // Use this tool with ADK Go
 864 |       tool, err := client.LoadTool("toolName", ctx)
 865 |       if err != nil {
 866 |         return fmt.Sprintln("Could not load Toolbox Tool", err)
 867 |       }
 868 |     }
 869 |     ```
 870 | 
 871 |     For more detailed instructions on using the Toolbox Go SDK, see the
 872 |     [project's README][toolbox-core-go-readme].
 873 | 
 874 | 
 875 |   </details>
 876 | </details>
 877 | </blockquote>
 878 | </details>
 879 | 
 880 | ### Using Toolbox with Gemini CLI Extensions
 881 | 
 882 | [Gemini CLI extensions][gemini-cli-extensions] provide tools to interact
 883 | directly with your data sources from command line. Below is a list of Gemini CLI
 884 | extensions that are built on top of **Toolbox**. They allow you to interact with
 885 | your data sources through pre-defined or custom tools with natural language.
 886 | Click into the link to see detailed instructions on their usage.
 887 | 
 888 | To use **custom** tools with Gemini CLI:
 889 | 
 890 | - [MCP Toolbox](https://github.com/gemini-cli-extensions/mcp-toolbox)
 891 | 
 892 | To use [prebuilt tools][prebuilt] with Gemini CLI:
 893 | 
 894 | - [AlloyDB for PostgreSQL](https://github.com/gemini-cli-extensions/alloydb)
 895 | - [AlloyDB for PostgreSQL
 896 |   Observability](https://github.com/gemini-cli-extensions/alloydb-observability)
 897 | - [BigQuery Data
 898 |   Analytics](https://github.com/gemini-cli-extensions/bigquery-data-analytics)
 899 | - [BigQuery Conversational
 900 |   Analytics](https://github.com/gemini-cli-extensions/bigquery-conversational-analytics)
 901 | - [Cloud SQL for
 902 |   MySQL](https://github.com/gemini-cli-extensions/cloud-sql-mysql)
 903 | - [Cloud SQL for MySQL
 904 |   Observability](https://github.com/gemini-cli-extensions/cloud-sql-mysql-observability)
 905 | - [Cloud SQL for
 906 |   PostgreSQL](https://github.com/gemini-cli-extensions/cloud-sql-postgresql)
 907 | - [Cloud SQL for PostgreSQL
 908 |   Observability](https://github.com/gemini-cli-extensions/cloud-sql-postgresql-observability)
 909 | - [Cloud SQL for SQL
 910 |   Server](https://github.com/gemini-cli-extensions/cloud-sql-sqlserver)
 911 | - [Cloud SQL for SQL Server
 912 |   Observability](https://github.com/gemini-cli-extensions/cloud-sql-sqlserver-observability)
 913 | - [Looker](https://github.com/gemini-cli-extensions/looker)
 914 | - [Dataplex](https://github.com/gemini-cli-extensions/dataplex)
 915 | - [MySQL](https://github.com/gemini-cli-extensions/mysql)
 916 | - [PostgreSQL](https://github.com/gemini-cli-extensions/postgres)
 917 | - [Spanner](https://github.com/gemini-cli-extensions/spanner)
 918 | - [Firestore](https://github.com/gemini-cli-extensions/firestore-native)
 919 | - [SQL Server](https://github.com/gemini-cli-extensions/sql-server)
 920 | 
 921 | [prebuilt]: https://googleapis.github.io/genai-toolbox/reference/prebuilt-tools/
 922 | [gemini-cli-extensions]:
 923 |     https://github.com/google-gemini/gemini-cli/blob/main/docs/extensions/index.md
 924 | 
 925 | ## Configuration
 926 | 
 927 | The primary way to configure Toolbox is through the `tools.yaml` file. If you
 928 | have multiple files, you can tell toolbox which to load with the `--tools-file
 929 | tools.yaml` flag.
 930 | 
 931 | You can find more detailed reference documentation to all resource types in the
 932 | [Resources](https://googleapis.github.io/genai-toolbox/resources/).
 933 | 
 934 | ### Sources
 935 | 
 936 | The `sources` section of your `tools.yaml` defines what data sources your
 937 | Toolbox should have access to. Most tools will have at least one source to
 938 | execute against.
 939 | 
 940 | ```yaml
 941 | sources:
 942 |   my-pg-source:
 943 |     kind: postgres
 944 |     host: 127.0.0.1
 945 |     port: 5432
 946 |     database: toolbox_db
 947 |     user: toolbox_user
 948 |     password: my-password
 949 | ```
 950 | 
 951 | For more details on configuring different types of sources, see the
 952 | [Sources](https://googleapis.github.io/genai-toolbox/resources/sources).
 953 | 
 954 | ### Tools
 955 | 
 956 | The `tools` section of a `tools.yaml` define the actions an agent can take: what
 957 | kind of tool it is, which source(s) it affects, what parameters it uses, etc.
 958 | 
 959 | ```yaml
 960 | tools:
 961 |   search-hotels-by-name:
 962 |     kind: postgres-sql
 963 |     source: my-pg-source
 964 |     description: Search for hotels based on name.
 965 |     parameters:
 966 |       - name: name
 967 |         type: string
 968 |         description: The name of the hotel.
 969 |     statement: SELECT * FROM hotels WHERE name ILIKE '%' || $1 || '%';
 970 | ```
 971 | 
 972 | For more details on configuring different types of tools, see the
 973 | [Tools](https://googleapis.github.io/genai-toolbox/resources/tools).
 974 | 
 975 | ### Toolsets
 976 | 
 977 | The `toolsets` section of your `tools.yaml` allows you to define groups of tools
 978 | that you want to be able to load together. This can be useful for defining
 979 | different groups based on agent or application.
 980 | 
 981 | ```yaml
 982 | toolsets:
 983 |     my_first_toolset:
 984 |         - my_first_tool
 985 |         - my_second_tool
 986 |     my_second_toolset:
 987 |         - my_second_tool
 988 |         - my_third_tool
 989 | ```
 990 | 
 991 | You can load toolsets by name:
 992 | 
 993 | ```python
 994 | # This will load all tools
 995 | all_tools = client.load_toolset()
 996 | 
 997 | # This will only load the tools listed in 'my_second_toolset'
 998 | my_second_toolset = client.load_toolset("my_second_toolset")
 999 | ```
1000 | 
1001 | ### Prompts
1002 | 
1003 | The `prompts` section of a `tools.yaml` defines prompts that can be used for
1004 | interactions with LLMs.
1005 | 
1006 | ```yaml
1007 | prompts:
1008 |   code_review:
1009 |     description: "Asks the LLM to analyze code quality and suggest improvements."
1010 |     messages:
1011 |       - content: "Please review the following code for quality, correctness, and potential improvements: \n\n{{.code}}"
1012 |     arguments:
1013 |       - name: "code"
1014 |         description: "The code to review"
1015 | ```
1016 | 
1017 | For more details on configuring prompts, see the
1018 | [Prompts](https://googleapis.github.io/genai-toolbox/resources/prompts).
1019 | 
1020 | ## Versioning
1021 | 
1022 | This project uses [semantic versioning](https://semver.org/) (`MAJOR.MINOR.PATCH`).
1023 | Since the project is in a pre-release stage (version `0.x.y`), we follow the
1024 | standard conventions for initial  development:
1025 | 
1026 | ### Pre-1.0.0 Versioning
1027 | 
1028 | While the major version is `0`, the public API should be considered unstable.
1029 | The version will be incremented  as follows:
1030 | 
1031 | - **`0.MINOR.PATCH`**: The **MINOR** version is incremented when we add
1032 |   new functionality or make breaking, incompatible API changes.
1033 | - **`0.MINOR.PATCH`**: The **PATCH** version is incremented for
1034 |   backward-compatible bug fixes.
1035 | 
1036 | ### Post-1.0.0 Versioning
1037 | 
1038 | Once the project reaches a stable `1.0.0` release, the version number
1039 | **`MAJOR.MINOR.PATCH`** will follow the more common convention:
1040 | 
1041 | - **`MAJOR`**: Incremented for incompatible API changes.
1042 | - **`MINOR`**: Incremented for new, backward-compatible functionality.
1043 | - **`PATCH`**: Incremented for backward-compatible bug fixes.
1044 | 
1045 | The public API that this applies to is the CLI associated with Toolbox, the
1046 | interactions with official SDKs, and the definitions in the `tools.yaml` file.
1047 | 
1048 | ## Contributing
1049 | 
1050 | Contributions are welcome. Please, see the [CONTRIBUTING](CONTRIBUTING.md)
1051 | to get started.
1052 | 
1053 | Please note that this project is released with a Contributor Code of Conduct.
1054 | By participating in this project you agree to abide by its terms. See
1055 | [Contributor Code of Conduct](CODE_OF_CONDUCT.md) for more information.
1056 | 
1057 | ## Community
1058 | 
1059 | Join our [discord community](https://discord.gg/GQrFB3Ec3W) to connect with our developers!
1060 | 
```

--------------------------------------------------------------------------------
/CODE_OF_CONDUCT.md:
--------------------------------------------------------------------------------

```markdown
 1 | # Code of Conduct
 2 | 
 3 | ## Our Pledge
 4 | 
 5 | In the interest of fostering an open and welcoming environment, we as
 6 | contributors and maintainers pledge to making participation in our project and
 7 | our community a harassment-free experience for everyone, regardless of age, body
 8 | size, disability, ethnicity, gender identity and expression, level of
 9 | experience, education, socio-economic status, nationality, personal appearance,
10 | race, religion, or sexual identity and orientation.
11 | 
12 | ## Our Standards
13 | 
14 | Examples of behavior that contributes to creating a positive environment
15 | include:
16 | 
17 | * Using welcoming and inclusive language
18 | * Being respectful of differing viewpoints and experiences
19 | * Gracefully accepting constructive criticism
20 | * Focusing on what is best for the community
21 | * Showing empathy towards other community members
22 | 
23 | Examples of unacceptable behavior by participants include:
24 | 
25 | * The use of sexualized language or imagery and unwelcome sexual attention or
26 |     advances
27 | * Trolling, insulting/derogatory comments, and personal or political attacks
28 | * Public or private harassment
29 | * Publishing others' private information, such as a physical or electronic
30 |     address, without explicit permission
31 | * Other conduct which could reasonably be considered inappropriate in a
32 |     professional setting
33 | 
34 | ## Our Responsibilities
35 | 
36 | Project maintainers are responsible for clarifying the standards of acceptable
37 | behavior and are expected to take appropriate and fair corrective action in
38 | response to any instances of unacceptable behavior.
39 | 
40 | Project maintainers have the right and responsibility to remove, edit, or reject
41 | comments, commits, code, wiki edits, issues, and other contributions that are
42 | not aligned to this Code of Conduct, or to ban temporarily or permanently any
43 | contributor for other behaviors that they deem inappropriate, threatening,
44 | offensive, or harmful.
45 | 
46 | ## Scope
47 | 
48 | This Code of Conduct applies both within project spaces and in public spaces
49 | when an individual is representing the project or its community. Examples of
50 | representing a project or community include using an official project e-mail
51 | address, posting via an official social media account, or acting as an appointed
52 | representative at an online or offline event. Representation of a project may be
53 | further defined and clarified by project maintainers.
54 | 
55 | This Code of Conduct also applies outside the project spaces when the Project
56 | Steward has a reasonable belief that an individual's behavior may have a
57 | negative impact on the project or its community.
58 | 
59 | ## Conflict Resolution
60 | 
61 | We do not believe that all conflict is bad; healthy debate and disagreement
62 | often yield positive results. However, it is never okay to be disrespectful or
63 | to engage in behavior that violates the project’s code of conduct.
64 | 
65 | If you see someone violating the code of conduct, you are encouraged to address
66 | the behavior directly with those involved. Many issues can be resolved quickly
67 | and easily, and this gives people more control over the outcome of their
68 | dispute. If you are unable to resolve the matter for any reason, or if the
69 | behavior is threatening or harassing, report it. We are dedicated to providing
70 | an environment where participants feel welcome and safe.
71 | 
72 | Reports should be directed to @googleapis/senseai-eco, the
73 | Project Steward(s) for *Project Toolbox*. It is the Project Steward’s duty to
74 | receive and address reported violations of the code of conduct. They will then
75 | work with a committee consisting of representatives from the Open Source
76 | Programs Office and the Google Open Source Strategy team. If for any reason you
77 | are uncomfortable reaching out to the Project Steward, please email
78 | <[email protected]>.
79 | 
80 | We will investigate every complaint, but you may not receive a direct response.
81 | We will use our discretion in determining when and how to follow up on reported
82 | incidents, which may range from not taking action to permanent expulsion from
83 | the project and project-sponsored spaces. We will notify the accused of the
84 | report and provide them an opportunity to discuss it before any action is taken.
85 | The identity of the reporter will be omitted from the details of the report
86 | supplied to the accused. In potentially harmful situations, such as ongoing
87 | harassment or threats to anyone's safety, we may take action without notice.
88 | 
89 | ## Attribution
90 | 
91 | This Code of Conduct is adapted from the Contributor Covenant, version 1.4,
92 | available at
93 | <https://www.contributor-covenant.org/version/1/4/code-of-conduct.html>
94 | 
```

--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------

```markdown
  1 | # How to contribute
  2 | 
  3 | We'd love to accept your patches and contributions to this project.
  4 | 
  5 | ## Before you begin
  6 | 
  7 | ### Sign our Contributor License Agreement
  8 | 
  9 | Contributions to this project must be accompanied by a
 10 | [Contributor License Agreement](https://cla.developers.google.com/about) (CLA).
 11 | You (or your employer) retain the copyright to your contribution; this simply
 12 | gives us permission to use and redistribute your contributions as part of the
 13 | project.
 14 | 
 15 | If you or your current employer have already signed the Google CLA (even if it
 16 | was for a different project), you probably don't need to do it again.
 17 | 
 18 | Visit <https://cla.developers.google.com/> to see your current agreements or to
 19 | sign a new one.
 20 | 
 21 | ### Review our community guidelines
 22 | 
 23 | This project follows
 24 | [Google's Open Source Community Guidelines](https://opensource.google/conduct/).
 25 | 
 26 | ## Contribution process
 27 | 
 28 | > [!NOTE]
 29 | > New contributions should always include both unit and integration tests.
 30 | 
 31 | All submissions, including submissions by project members, require review. We
 32 | use GitHub pull requests for this purpose. Consult
 33 | [GitHub Help](https://help.github.com/articles/about-pull-requests/) for more
 34 | information on using pull requests.
 35 | 
 36 | ### Code reviews
 37 | 
 38 | * Within 2-5 days, a reviewer will review your PR. They may approve it, or request
 39 | changes.
 40 | * When requesting changes, reviewers should self-assign the PR to ensure
 41 | they are aware of any updates.
 42 | * If additional changes are needed, push additional commits to your PR branch -
 43 | this helps the reviewer know which parts of the PR have changed.
 44 | * Commits will be
 45 | squashed when merged.
 46 | * Please follow up with changes promptly.
 47 | * If a PR is awaiting changes by the
 48 | author for more than 10 days, maintainers may mark that PR as Draft. PRs that
 49 | are inactive for more than 30 days may be closed.
 50 | 
 51 | ### Automated Code Reviews
 52 | 
 53 | This repository uses **Gemini Code Assist** to provide automated code reviews on Pull Requests. While this does not replace human review, it provides immediate feedback on code quality and potential issues.
 54 | 
 55 | You can manually trigger the bot by commenting on your Pull Request:
 56 | 
 57 | *   `/gemini`: Manually invokes Gemini Code Assist in comments
 58 | *   `/gemini review`: Posts a code review of the changes in the pull request
 59 | *   `/gemini summary`: Posts a summary of the changes in the pull request.
 60 | *   `/gemini help`: Overview of the available commands
 61 | 
 62 | ## Adding a New Database Source or Tool
 63 | 
 64 | Please create an
 65 | [issue](https://github.com/googleapis/genai-toolbox/issues) before
 66 | implementation to ensure we can accept the contribution and no duplicated work.
 67 | This issue should include an overview of the API design. If you have any
 68 | questions, reach out on our [Discord](https://discord.gg/Dmm69peqjh) to chat
 69 | directly with the team.
 70 | 
 71 | > [!NOTE]
 72 | > New tools can be added for [pre-existing data
 73 | > sources](https://github.com/googleapis/genai-toolbox/tree/main/internal/sources).
 74 | > However, any new database source should also include at least one new tool
 75 | > type.
 76 | 
 77 | ### Adding a New Database Source
 78 | 
 79 | We recommend looking at an [example source
 80 | implementation](https://github.com/googleapis/genai-toolbox/blob/main/internal/sources/postgres/postgres.go).
 81 | 
 82 | * **Create a new directory** under `internal/sources` for your database type
 83 |   (e.g., `internal/sources/newdb`).
 84 | * **Define a configuration struct** for your data source in a file named
 85 |   `newdb.go`. Create a `Config` struct to include all the necessary parameters
 86 |   for connecting to the database (e.g., host, port, username, password, database
 87 |   name) and a `Source` struct to store necessary parameters for tools (e.g.,
 88 |   Name, Kind, connection object, additional config).
 89 | * **Implement the
 90 |   [`SourceConfig`](https://github.com/googleapis/genai-toolbox/blob/fd300dc606d88bf9f7bba689e2cee4e3565537dd/internal/sources/sources.go#L57)
 91 |   interface**. This interface requires two methods:
 92 |   * `SourceConfigKind() string`: Returns a unique string identifier for your
 93 |     data source (e.g., `"newdb"`).
 94 |   * `Initialize(ctx context.Context, tracer trace.Tracer) (Source, error)`:
 95 |     Creates a new instance of your data source and establishes a connection to
 96 |     the database.
 97 | * **Implement the
 98 |   [`Source`](https://github.com/googleapis/genai-toolbox/blob/fd300dc606d88bf9f7bba689e2cee4e3565537dd/internal/sources/sources.go#L63)
 99 |   interface**. This interface requires one method:
100 |   * `SourceKind() string`: Returns the same string identifier as `SourceConfigKind()`.
101 | * **Implement `init()`** to register the new Source.
102 | * **Implement Unit Tests** in a file named `newdb_test.go`.
103 | 
104 | ### Adding a New Tool
105 | 
106 | > [!NOTE]
107 | > Please follow the tool naming convention detailed
108 | > [here](./DEVELOPER.md#tool-naming-conventions).
109 | 
110 | We recommend looking at an [example tool
111 | implementation](https://github.com/googleapis/genai-toolbox/tree/main/internal/tools/postgres/postgressql).
112 | 
113 | * **Create a new directory** under `internal/tools` for your tool type (e.g., `internal/tools/newdb/newdbtool`).
114 | * **Define a configuration struct** for your tool in a file named `newdbtool.go`.
115 | Create a `Config` struct and a `Tool` struct to store necessary parameters for
116 | tools.
117 | * **Implement the
118 |   [`ToolConfig`](https://github.com/googleapis/genai-toolbox/blob/fd300dc606d88bf9f7bba689e2cee4e3565537dd/internal/tools/tools.go#L61)
119 |   interface**. This interface requires one method:
120 |   * `ToolConfigKind() string`: Returns a unique string identifier for your tool
121 |     (e.g., `"newdb-tool"`).
122 |   * `Initialize(sources map[string]Source) (Tool, error)`: Creates a new
123 |     instance of your tool and validates that it can connect to the specified
124 |     data source.
125 | * **Implement the `Tool` interface**. This interface requires the following
126 |   methods:
127 |   * `Invoke(ctx context.Context, params map[string]any) ([]any, error)`:
128 |     Executes the operation on the database using the provided parameters.
129 |   * `ParseParams(data map[string]any, claims map[string]map[string]any)
130 |     (ParamValues, error)`: Parses and validates the input parameters.
131 |   * `Manifest() Manifest`: Returns a manifest describing the tool's capabilities
132 |     and parameters.
133 |   * `McpManifest() McpManifest`: Returns an MCP manifest describing the tool for
134 |     use with the Model Context Protocol.
135 |   * `Authorized(services []string) bool`: Checks if the tool is authorized to
136 |     run based on the provided authentication services.
137 | * **Implement `init()`** to register the new Tool.
138 | * **Implement Unit Tests** in a file named `newdbtool_test.go`.
139 | 
140 | ### Adding Integration Tests
141 | 
142 | * **Add a test file** under a new directory `tests/newdb`.
143 | * **Add pre-defined integration test suites** in the
144 |   `/tests/newdb/newdb_integration_test.go` that are **required** to be run as
145 |   long as your code contains related features. Please check each test suites for
146 |   the config defaults, if your source require test suites config updates, please
147 |   refer to [config option](./tests/option.go):
148 | 
149 |      1. [RunToolGetTest][tool-get]: tests for the `GET` endpoint that returns the
150 |             tool's manifest.
151 | 
152 |      2. [RunToolInvokeTest][tool-call]: tests for tool calling through the native
153 |         Toolbox endpoints.
154 | 
155 |      3. [RunMCPToolCallMethod][mcp-call]: tests tool calling through the MCP
156 |             endpoints.
157 | 
158 |      4. (Optional) [RunExecuteSqlToolInvokeTest][execute-sql]: tests an
159 |         `execute-sql` tool for any source. Only run this test if you are adding an
160 |         `execute-sql` tool.
161 | 
162 |      5. (Optional) [RunToolInvokeWithTemplateParameters][temp-param]: tests for [template
163 |             parameters][temp-param-doc]. Only run this test if template
164 |             parameters apply to your tool.
165 | 
166 | * **Add the new database to the integration test workflow** in
167 |   [integration.cloudbuild.yaml](.ci/integration.cloudbuild.yaml).
168 | 
169 | [tool-get]:
170 |     https://github.com/googleapis/genai-toolbox/blob/v0.23.0/tests/tool.go#L41
171 | [tool-call]:
172 |     https://github.com/googleapis/genai-toolbox/blob/v0.23.0/tests/tool.go#L229
173 | [mcp-call]:
174 |     https://github.com/googleapis/genai-toolbox/blob/v0.23.0/tests/tool.go#L789
175 | [execute-sql]:
176 |     https://github.com/googleapis/genai-toolbox/blob/v0.23.0/tests/tool.go#L609
177 | [temp-param]:
178 |     https://github.com/googleapis/genai-toolbox/blob/v0.23.0/tests/tool.go#L454
179 | [temp-param-doc]:
180 |     https://googleapis.github.io/genai-toolbox/resources/tools/#template-parameters
181 | 
182 | ### Adding Documentation
183 | 
184 | * **Update the documentation** to include information about your new data source
185 |   and tool. This includes:
186 |   * Adding a new page to the `docs/en/resources/sources` directory for your data
187 |     source.
188 |   * Adding a new page to the `docs/en/resources/tools` directory for your tool.
189 | 
190 | * **(Optional) Add samples** to the `docs/en/samples/<newdb>` directory.
191 | 
192 | ### (Optional) Adding Prebuilt Tools
193 | 
194 | You can provide developers with a set of "build-time" tools to aid common
195 | software development user journeys like viewing and creating tables/collections
196 | and data.
197 | 
198 | * **Create a set of prebuilt tools** by defining a new `tools.yaml` and adding
199 |   it to `internal/tools`. Make sure the file name matches the source (i.e. for
200 |   source "alloydb-postgres" create a file named "alloydb-postgres.yaml").
201 | * **Update `cmd/root.go`** to add new source to the `prebuilt` flag.
202 | * **Add tests** in
203 |   [internal/prebuiltconfigs/prebuiltconfigs_test.go](internal/prebuiltconfigs/prebuiltconfigs_test.go)
204 |   and [cmd/root_test.go](cmd/root_test.go).
205 | 
206 | ## Submitting a Pull Request
207 | 
208 | Submit a pull request to the repository with your changes. Be sure to include a
209 | detailed description of your changes and any requests for long term testing
210 | resources.
211 | 
212 | * **Title:** All pull request title should follow the formatting of
213 |   [Conventional
214 |   Commit](https://www.conventionalcommits.org/) guidelines: `<type>[optional
215 |   scope]: description`. For example, if you are adding a new field in postgres
216 |   source, the title should be `feat(source/postgres): add support for
217 |   "new-field" field in postgres source`.
218 |   
219 |   Here are some commonly used `type` in this GitHub repo.
220 | 
221 |   |     **type**    |                                **description**                                                        |
222 |   |-----------------|-------------------------------------------------------------------------------------------------------|
223 |   | Breaking Change | Anything with this type of a `!` after the type/scope introduces a breaking change.                   |
224 |   | feat            | Adding a new feature to the codebase.                                                                 |
225 |   | fix             | Fixing a bug or typo in the codebase. This does not include fixing docs.                              |
226 |   | test            | Changes made to test files.                                                                           |
227 |   | ci              | Changes made to the cicd configuration files or scripts.                                              |
228 |   | docs            | Documentation-related PRs, including fixes on docs.                                                   |
229 |   | chore           | Other small tasks or updates that don't fall into any of the above types.                             |
230 |   | refactor        | Change src code but unlike feat, there are no tests broke and no line lost coverage.                  |
231 |   | revert          | Revert changes made in another commit.                                                                |
232 |   | style           | Update src code, with only formatting and whitespace updates (e.g. code formatter or linter changes). |
233 | 
234 |   Pull requests should always add scope whenever possible. The scope is
235 |   formatted as `<scope-type>/<scope-kind>` (e.g., `sources/postgres`, or
236 |   `tools/mssql-sql`).
237 |   
238 |   Ideally, **each PR covers only one scope**, if this is
239 |   inevitable, multiple scopes can be seaparated with a comma (e.g.
240 |   `sources/postgres,sources/alloydbpg`). If the PR covers multiple `scope-type`
241 |   (such as adding a new database), you can disregard the `scope-type`, e.g.
242 |   `feat(new-db): adding support for new-db source and tool`.
243 | 
244 | * **PR Description:** PR description should **always** be included. It should
245 |   include a concise description of the changes, it's impact, along with a
246 |   summary of the solution. If the PR is related to a specific issue, the issue
247 |   number should be mentioned in the PR description (e.g. `Fixes #1`).
```

--------------------------------------------------------------------------------
/cmd/version.txt:
--------------------------------------------------------------------------------

```
1 | 0.25.0
2 | 
```

--------------------------------------------------------------------------------
/.github/label-sync.yml:
--------------------------------------------------------------------------------

```yaml
1 | ---
2 | ignored: true
3 | 
```

--------------------------------------------------------------------------------
/docs/en/getting-started/quickstart/golden.txt:
--------------------------------------------------------------------------------

```
1 | Hilton Basel
2 | Hyatt Regency
3 | book
```

--------------------------------------------------------------------------------
/.hugo/assets/scss/_variables_project.scss:
--------------------------------------------------------------------------------

```scss
1 | $primary: #80a7e9;
2 | $secondary: #4484f4;
3 | 
```

--------------------------------------------------------------------------------
/.hugo/layouts/partials/td/render-heading.html:
--------------------------------------------------------------------------------

```html
1 | {{ template "partials/td/render-heading.html" . }}
2 | 
```

--------------------------------------------------------------------------------
/docs/en/getting-started/quickstart/python/adk/requirements.txt:
--------------------------------------------------------------------------------

```
1 | google-adk==1.21.0
2 | toolbox-core==0.5.4
3 | pytest==9.0.2
```

--------------------------------------------------------------------------------
/docs/en/getting-started/quickstart/python/core/requirements.txt:
--------------------------------------------------------------------------------

```
1 | google-genai==1.57.0
2 | toolbox-core==0.5.4
3 | pytest==9.0.2
4 | 
```

--------------------------------------------------------------------------------
/.hugo/layouts/robot.txt:
--------------------------------------------------------------------------------

```
1 | User-agent: *
2 | {{ if eq hugo.Environment "preview" }}
3 | Disallow: /*
4 | {{ end }}
```

--------------------------------------------------------------------------------
/.hugo/layouts/partials/hooks/head-end.html:
--------------------------------------------------------------------------------

```html
1 | <script src='{{ .Site.BaseURL }}js/w3.js' type="application/x-javascript"></script>
2 | 
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/alloydbainl/_index.md:
--------------------------------------------------------------------------------

```markdown
1 | ---
2 | title: "AlloyDB AI NL"
3 | type: docs
4 | weight: 1
5 | description: > 
6 |   AlloyDB AI NL Tool.
7 | ---
```

--------------------------------------------------------------------------------
/docs/en/concepts/_index.md:
--------------------------------------------------------------------------------

```markdown
1 | ---
2 | title: "Concepts"
3 | type: docs
4 | weight: 2
5 | description: >
6 |   Some core concepts in Toolbox
7 | ---
8 | 
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/dataform/_index.md:
--------------------------------------------------------------------------------

```markdown
1 | ---
2 | title: "Dataform"
3 | type: docs
4 | weight: 1
5 | description: > 
6 |   Tools that work with Dataform.
7 | ---
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/http/_index.md:
--------------------------------------------------------------------------------

```markdown
1 | ---
2 | title: "HTTP"
3 | type: docs
4 | weight: 1
5 | description: > 
6 |   Tools that work with HTTP Sources.
7 | ---
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/neo4j/_index.md:
--------------------------------------------------------------------------------

```markdown
1 | ---
2 | title: "Neo4j"
3 | type: docs
4 | weight: 1
5 | description: > 
6 |   Tools that work with Neo4j Sources.
7 | ---
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/redis/_index.md:
--------------------------------------------------------------------------------

```markdown
1 | ---
2 | title: "Redis"
3 | type: docs
4 | weight: 1
5 | description: > 
6 |   Tools that work with Redis Sources.
7 | ---
```

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

```markdown
1 | ---
2 | title: "Utility tools"
3 | type: docs
4 | weight: 1
5 | description: > 
6 |   Tools that provide utility.
7 | ---
```

--------------------------------------------------------------------------------
/docs/en/getting-started/quickstart/python/llamaindex/requirements.txt:
--------------------------------------------------------------------------------

```
1 | llama-index==0.14.12
2 | llama-index-llms-google-genai==0.8.3
3 | toolbox-llamaindex==0.5.4
4 | pytest==9.0.2
5 | 
```

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

```markdown
1 | ---
2 | title: "Cloud SQL"
3 | type: docs
4 | weight: 1
5 | description: > 
6 |   Tools that work with Cloud SQL. 
7 | ---
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/dgraph/_index.md:
--------------------------------------------------------------------------------

```markdown
1 | ---
2 | title: "Dgraph"
3 | type: docs
4 | weight: 1
5 | description: > 
6 |   Tools that work with Dgraph Sources.
7 | ---
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/looker/_index.md:
--------------------------------------------------------------------------------

```markdown
1 | ---
2 | title: "Looker"
3 | type: docs
4 | weight: 1
5 | description: >
6 |   Tools that work with Looker Sources.
7 | ---
8 | 
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/sqlite/_index.md:
--------------------------------------------------------------------------------

```markdown
1 | ---
2 | title: "SQLite"
3 | type: docs
4 | weight: 1
5 | description: > 
6 |   Tools that work with SQLite Sources.
7 | ---
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/valkey/_index.md:
--------------------------------------------------------------------------------

```markdown
1 | ---
2 | title: "Valkey"
3 | type: docs
4 | weight: 1
5 | description: > 
6 |   Tools that work with Valkey Sources.
7 | ---
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/oracle/_index.md:
--------------------------------------------------------------------------------

```markdown
1 | ---
2 | title: "Oracle"
3 | type: docs
4 | weight: 1
5 | description: > 
6 |   Tools that work with Oracle Sources.
7 | --- 
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/spanner/_index.md:
--------------------------------------------------------------------------------

```markdown
1 | ---
2 | title: "Spanner"
3 | type: docs
4 | weight: 1
5 | description: > 
6 |   Tools that work with Spanner Sources.
7 | ---
```

--------------------------------------------------------------------------------
/docs/en/samples/_index.md:
--------------------------------------------------------------------------------

```markdown
1 | ---
2 | title: "Samples"
3 | type: docs
4 | weight: 5
5 | description: >
6 |   Samples and guides for using Toolbox.
7 | ---
8 | 
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/bigquery/_index.md:
--------------------------------------------------------------------------------

```markdown
1 | ---
2 | title: "BigQuery"
3 | type: docs
4 | weight: 1
5 | description: > 
6 |   Tools that work with BigQuery Sources.
7 | ---
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/bigtable/_index.md:
--------------------------------------------------------------------------------

```markdown
1 | ---
2 | title: "Bigtable"
3 | type: docs
4 | weight: 1
5 | description: > 
6 |   Tools that work with Bigtable Sources.
7 | ---
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/dataplex/_index.md:
--------------------------------------------------------------------------------

```markdown
1 | ---
2 | title: "Dataplex"
3 | type: docs
4 | weight: 1
5 | description: > 
6 |   Tools that work with Dataplex Sources.
7 | ---
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/firebird/_index.md:
--------------------------------------------------------------------------------

```markdown
1 | ---
2 | title: "Firebird"
3 | type: docs
4 | weight: 1
5 | description: > 
6 |   Tools that work with Firebird Sources.
7 | ---
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/yuagbytedb/_index.md:
--------------------------------------------------------------------------------

```markdown
1 | ---
2 | title: "YugabyteDB"
3 | type: docs
4 | weight: 1
5 | description: > 
6 |   Tools that work with Valkey Sources.
7 | ---
```

--------------------------------------------------------------------------------
/.hugo/archetypes/default.md:
--------------------------------------------------------------------------------

```markdown
1 | +++
2 | date = '{{ .Date }}'
3 | draft = true
4 | title = '{{ replace .File.ContentBaseName "-" " " | title }}'
5 | +++
6 | 
```

--------------------------------------------------------------------------------
/docs/en/getting-started/_index.md:
--------------------------------------------------------------------------------

```markdown
1 | ---
2 | title: "Getting Started"
3 | type: docs
4 | weight: 1
5 | description: >
6 |   How to get started with Toolbox.
7 | ---
8 | 
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/mongodb/_index.md:
--------------------------------------------------------------------------------

```markdown
1 | ---
2 | title: "MongoDB"
3 | type: docs
4 | weight: 1
5 | description: >
6 |   Tools that work with the MongoDB Source.
7 | ---
8 | 
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/cassandra/_index.md:
--------------------------------------------------------------------------------

```markdown
1 | ---
2 | title: "Cassandra"
3 | type: docs
4 | weight: 1
5 | description: > 
6 |   Tools that work with Cassandra Sources.
7 | ---
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/couchbase/_index.md:
--------------------------------------------------------------------------------

```markdown
1 | ---
2 | title: "Couchbase"
3 | type: docs
4 | weight: 1
5 | description: > 
6 |   Tools that work with Couchbase Sources.
7 | ---
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/snowflake/_index.md:
--------------------------------------------------------------------------------

```markdown
1 | ---
2 | title: "Snowflake"
3 | type: docs
4 | weight: 1
5 | description: > 
6 |   Tools that work with Snowflake Sources.
7 | ---
```

--------------------------------------------------------------------------------
/docs/en/getting-started/quickstart/python/langchain/requirements.txt:
--------------------------------------------------------------------------------

```
1 | langchain==1.2.2
2 | langchain-google-vertexai==3.2.1
3 | langgraph==1.0.5
4 | toolbox-langchain==0.5.4
5 | pytest==9.0.2
6 | 
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/firestore/_index.md:
--------------------------------------------------------------------------------

```markdown
1 | ---
2 | title: "Firestore"
3 | type: docs
4 | weight: 1
5 | description: > 
6 |   Tools that work with Firestore Sources.
7 | ---
8 | 
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/oceanbase/_index.md:
--------------------------------------------------------------------------------

```markdown
1 | ---
2 | title: "OceanBase"
3 | type: docs
4 | weight: 1
5 | description: > 
6 |   Tools that work with OceanBase Sources.
7 | --- 
```

--------------------------------------------------------------------------------
/docs/en/samples/looker/_index.md:
--------------------------------------------------------------------------------

```markdown
1 | ---
2 | title: "Looker"
3 | type: docs
4 | weight: 1
5 | description: >
6 |   How to get started with Toolbox using Looker.
7 | ---
8 | 
```

--------------------------------------------------------------------------------
/docs/en/about/_index.md:
--------------------------------------------------------------------------------

```markdown
1 | ---
2 | title: "About"
3 | type: docs
4 | weight: 6
5 | description: >
6 |   A list of other information related to Toolbox.
7 | ---
8 | 
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/singlestore/_index.md:
--------------------------------------------------------------------------------

```markdown
1 | ---
2 | title: "SingleStore"
3 | type: docs
4 | weight: 1
5 | description: > 
6 |   Tools that work with SingleStore Sources
7 | ---
8 | 
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/cloudgda/_index.md:
--------------------------------------------------------------------------------

```markdown
1 | ---
2 | title: "Gemini Data Analytics"
3 | type: docs
4 | weight: 1
5 | description: >
6 |   Tools for Gemini Data Analytics.
7 | ---
8 | 
```

--------------------------------------------------------------------------------
/docs/en/samples/alloydb/_index.md:
--------------------------------------------------------------------------------

```markdown
1 | ---
2 | title: "AlloyDB"
3 | type: docs
4 | weight: 1
5 | description: >
6 |   How to get started with Toolbox using AlloyDB.
7 | ---
8 | 
```

--------------------------------------------------------------------------------
/docs/en/sdks/_index.md:
--------------------------------------------------------------------------------

```markdown
1 | ---
2 | title: "SDKs"
3 | type: docs
4 | weight: 6
5 | description: >
6 |   Client SDKs to connect to the MCP Toolbox server.
7 | ---
8 | 
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/alloydb/_index.md:
--------------------------------------------------------------------------------

```markdown
1 | ---
2 | title: "AlloyDB for PostgreSQL"
3 | type: docs
4 | weight: 1
5 | description: > 
6 |   Tools for AlloyDB for PostgreSQL.
7 | ---
```

--------------------------------------------------------------------------------
/docs/en/samples/bigquery/_index.md:
--------------------------------------------------------------------------------

```markdown
1 | ---
2 | title: "BigQuery"
3 | type: docs
4 | weight: 1
5 | description: >
6 |   How to get started with Toolbox using BigQuery.
7 | ---
8 | 
```

--------------------------------------------------------------------------------
/docs/en/reference/_index.md:
--------------------------------------------------------------------------------

```markdown
1 | ---
2 | title: "Reference"
3 | type: docs
4 | weight: 7
5 | description: >
6 |   This section contains reference documentation.
7 | ---
8 | 
9 | 
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/elasticsearch/_index.md:
--------------------------------------------------------------------------------

```markdown
1 | ---
2 | title: "Elasticsearch"
3 | type: docs
4 | weight: 1
5 | description: > 
6 |   Tools that work with Elasticsearch Sources.
7 | ---
8 | 
```

--------------------------------------------------------------------------------
/.hugo/package.json:
--------------------------------------------------------------------------------

```json
1 | {
2 |   "devDependencies": {
3 |     "autoprefixer": "^10.4.20",
4 |     "postcss": "^8.4.49",
5 |     "postcss-cli": "^11.0.0"
6 |   }
7 | }
8 | 
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/cloudmonitoring/_index.md:
--------------------------------------------------------------------------------

```markdown
1 | ---
2 | title: "Cloud Monitoring"
3 | type: docs
4 | weight: 1
5 | description: >
6 |   Tools that work with Cloud Monitoring source.
7 | ---
8 | 
```

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

```html
1 | {{ $file := .Get 0 }}
2 | {{ (printf "%s%s" .Page.File.Dir $file) | readFile | replaceRE "^---[\\s\\S]+?---" "" | safeHTML }}
3 | 
```

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

```markdown
1 | ---
2 | title: "Resources"
3 | type: docs
4 | weight: 4
5 | description: >
6 |   List of reference documentation for resources in Toolbox.
7 | ---
8 | 
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/clickhouse/_index.md:
--------------------------------------------------------------------------------

```markdown
1 | ---
2 | title: "ClickHouse"
3 | type: docs
4 | weight: 1
5 | description: >
6 |   Tools for interacting with ClickHouse databases and tables.
7 | ---
8 | 
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/mysql/_index.md:
--------------------------------------------------------------------------------

```markdown
1 | ---
2 | title: "MySQL"
3 | type: docs
4 | weight: 1
5 | description: > 
6 |   Tools that work with MySQL Sources, such as Cloud SQL for MySQL.
7 | ---
```

--------------------------------------------------------------------------------
/docs/en/how-to/_index.md:
--------------------------------------------------------------------------------

```markdown
1 | ---
2 | title: "How-to"
3 | type: docs
4 | weight: 3
5 | description: >
6 |   List of guides detailing how to do different things with Toolbox. 
7 | ---
8 | 
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/trino/_index.md:
--------------------------------------------------------------------------------

```markdown
1 | ---
2 | title: "Trino"
3 | type: docs
4 | weight: 1
5 | description: > 
6 |   Tools that work with Trino Sources, such as distributed SQL query engine.
7 | ---
8 | 
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/tidb/_index.md:
--------------------------------------------------------------------------------

```markdown
1 | ---
2 | title: "TiDB"
3 | type: docs
4 | weight: 1
5 | description: > 
6 |   Tools that work with TiDB Sources, such as TiDB Cloud and self-hosted TiDB.
7 | ---
8 | 
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/mssql/_index.md:
--------------------------------------------------------------------------------

```markdown
1 | ---
2 | title: "SQL Server"
3 | type: docs
4 | weight: 1
5 | description: > 
6 |   Tools that work with SQL Server Sources, such as CloudSQL for SQL Server.
7 | ---
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/postgres/_index.md:
--------------------------------------------------------------------------------

```markdown
1 | ---
2 | title: "Postgres"
3 | type: docs
4 | weight: 1
5 | description: > 
6 |   Tools that work with Postgres Sources, such as Cloud SQL for Postgres and AlloyDB. 
7 | ---
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/cloudhealthcare/_index.md:
--------------------------------------------------------------------------------

```markdown
1 | ---
2 | title: "Cloud Healthcare API"
3 | linkTitle: "Cloud Healthcare"
4 | type: docs
5 | weight: 1
6 | description: > 
7 |   Tools that work with Cloud Healthcare Sources.
8 | ---
```

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

```python
1 | # This file makes the 'quickstart' directory a Python package.
2 | 
3 | # You can include any package-level initialization logic here if needed.
4 | # For now, this file is empty.
5 | 
```

--------------------------------------------------------------------------------
/.hugo/assets/scss/_styles_project.scss:
--------------------------------------------------------------------------------

```scss
1 | @import 'td/code-dark';
2 | 
3 | // Make tabs scrollable horizontally instead of wrapping
4 | .nav-tabs {
5 |   flex-wrap: nowrap;
6 |   white-space: nowrap;
7 |   overflow-x: auto;
8 |   overflow-y: hidden;
9 | }
```

--------------------------------------------------------------------------------
/docs/en/how-to/connect-ide/_index.md:
--------------------------------------------------------------------------------

```markdown
 1 | ---
 2 | title: "Connect from your IDE"
 3 | type: docs
 4 | weight: 1
 5 | description: >
 6 |   List of guides detailing how to connect your AI tools (IDEs) to Toolbox using MCP.
 7 | aliases:
 8 | - /how-to/connect_tools_using_mcp
 9 | ---
10 | 
```

--------------------------------------------------------------------------------
/docs/en/samples/alloydb/ai-nl/index.md:
--------------------------------------------------------------------------------

```markdown
 1 | ---
 2 | title: "Getting started with alloydb-ai-nl tool"
 3 | type: docs
 4 | weight: 30
 5 | description: >
 6 |   An end to end tutorial for building an ADK agent using the AlloyDB AI NL tool.
 7 | ---
 8 | 
 9 | {{< ipynb "alloydb_ai_nl.ipynb" >}}
10 | 
```

--------------------------------------------------------------------------------
/gemini-extension.json:
--------------------------------------------------------------------------------

```json
1 | {
2 |   "name": "mcp-toolbox-for-databases",
3 |   "version": "0.25.0",
4 |   "description": "MCP Toolbox for Databases is an open-source MCP server for more than 30 different datasources.",
5 |   "contextFileName": "MCP-TOOLBOX-EXTENSION.md"
6 | }
```

--------------------------------------------------------------------------------
/.hugo/layouts/index.llms-full.txt:
--------------------------------------------------------------------------------

```
 1 | {{ .Site.Params.description }}
 2 | 
 3 | {{ range .Site.Sections }}
 4 | # {{ .Title }}
 5 | {{ .Description }}
 6 | {{ range .Pages }}
 7 | # {{ .Title }}
 8 | {{ .Description }}
 9 | {{ .RawContent }}
10 | {{ range .Pages }}
11 | # {{ .Title }}
12 | {{ .Description }}
13 | {{ .RawContent }}
14 | {{end }}{{ end }}{{ end }}
15 | 
```

--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/config.yml:
--------------------------------------------------------------------------------

```yaml
1 | blank_issues_enabled: false
2 | contact_links:
3 |   - name: Google Cloud Support
4 |     url: https://cloud.google.com/support/
5 |     about: If you have a support contract with Google, please both open an issue here and open Google Cloud Support portal with a link to the issue.
6 | 
```

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

```markdown
 1 | ---
 2 | title: "Documentation"
 3 | type: docs
 4 | notoc: false
 5 | weight: 1
 6 | description: >
 7 |   All of Toolbox's documentation.
 8 | ---
 9 | 
10 | <html>
11 |   <head>
12 |     <link rel="canonical" href="getting-started/introduction/"/>
13 |     <meta http-equiv="refresh" content="0;url=getting-started/introduction/"/>
14 |   </head>
15 | </html>
16 | 
```

--------------------------------------------------------------------------------
/docs/en/getting-started/quickstart/js/adk/package.json:
--------------------------------------------------------------------------------

```json
 1 | {
 2 |   "name": "adk",
 3 |   "version": "1.0.0",
 4 |   "description": "",
 5 |   "main": "quickstart.js",
 6 |   "type": "module",
 7 |   "scripts": {
 8 |     "test": "node --test"
 9 |   },
10 |   "keywords": [],
11 |   "author": "",
12 |   "license": "ISC",
13 |   "dependencies": {
14 |     "@google/adk": "^0.1.3",
15 |     "@toolbox-sdk/adk": "^0.1.5"
16 |   }
17 | }
18 | 
```

--------------------------------------------------------------------------------
/.hugo/layouts/index.llms.txt:
--------------------------------------------------------------------------------

```
 1 | # {{ .Site.Title }}
 2 | 
 3 | > {{ .Site.Params.description }}
 4 | 
 5 | ## Docs
 6 | {{ range .Site.Sections }}
 7 | ### {{ .Title }}
 8 | 
 9 | {{ .Description }}{{ range .Pages }}- [{{ .Title }}]({{ .Permalink }}): {{ .Description }}{{ range .Pages }}  - [{{ .Title }}]({{ .Permalink }}): {{ .Description }}{{end }}{{ end }}{{ end }}
10 | 
```

--------------------------------------------------------------------------------
/docs/en/getting-started/quickstart/js/genAI/package.json:
--------------------------------------------------------------------------------

```json
 1 | {
 2 |   "name": "genai",
 3 |   "version": "1.0.0",
 4 |   "description": "",
 5 |   "main": "quickstart.js",
 6 |   "type" : "module",
 7 |   "scripts": {
 8 |     "test": "node --test"
 9 |   },
10 |   "keywords": [],
11 |   "author": "",
12 |   "license": "ISC",
13 |   "dependencies": {
14 |     "@google/genai": "^1.17.0",
15 |     "@toolbox-sdk/core": "^0.1.2"
16 |   }
17 | }
18 | 
```

--------------------------------------------------------------------------------
/docs/en/getting-started/quickstart/js/genkit/package.json:
--------------------------------------------------------------------------------

```json
 1 | {
 2 |   "name": "genkit",
 3 |   "version": "1.0.0",
 4 |   "description": "",
 5 |   "main": "quickstart.js",
 6 |   "type" : "module",
 7 |   "scripts": {
 8 |     "test": "node --test"
 9 |   },
10 |   "keywords": [],
11 |   "author": "",
12 |   "license": "ISC",
13 |   "dependencies": {
14 |     "@genkit-ai/googleai": "^1.18.0",
15 |     "@toolbox-sdk/core": "^0.1.2",
16 |     "genkit": "^1.18.0"
17 |   }
18 | }
19 | 
```

--------------------------------------------------------------------------------
/docs/en/how-to/connect-ide/alloydb_pg_mcp.md:
--------------------------------------------------------------------------------

```markdown
 1 | ---
 2 | title: "AlloyDB using MCP"
 3 | type: docs
 4 | weight: 2
 5 | description: >
 6 |   Connect your IDE to AlloyDB using Toolbox.
 7 | ---
 8 | <html>
 9 |   <head>
10 |     <link rel="canonical" href="https://cloud.google.com/alloydb/docs/connect-ide-using-mcp-toolbox"/>
11 |     <meta http-equiv="refresh" content="0;url=https://cloud.google.com/alloydb/docs/connect-ide-using-mcp-toolbox"/>
12 |   </head>
13 | </html>
14 | 
```

--------------------------------------------------------------------------------
/docs/en/how-to/connect-ide/spanner_mcp.md:
--------------------------------------------------------------------------------

```markdown
 1 | ---
 2 | title: "Spanner using MCP"
 3 | type: docs
 4 | weight: 2
 5 | description: >
 6 |   Connect your IDE to Spanner using Toolbox.
 7 | ---
 8 | <html>
 9 |   <head>
10 |     <link rel="canonical" href="https://cloud.google.com/spanner/docs/pre-built-tools-with-mcp-toolbox"/>
11 |     <meta http-equiv="refresh" content="0;url=https://cloud.google.com/spanner/docs/pre-built-tools-with-mcp-toolbox"/>
12 |   </head>
13 | </html>
14 | 
```

--------------------------------------------------------------------------------
/docs/en/how-to/connect-ide/bigquery_mcp.md:
--------------------------------------------------------------------------------

```markdown
 1 | ---
 2 | title: "BigQuery using MCP"
 3 | type: docs
 4 | weight: 2
 5 | description: >
 6 |   Connect your IDE to BigQuery using Toolbox.
 7 | ---
 8 | <html>
 9 |   <head>
10 |     <link rel="canonical" href="https://cloud.google.com/bigquery/docs/pre-built-tools-with-mcp-toolbox"/>
11 |     <meta http-equiv="refresh" content="0;url=https://cloud.google.com/bigquery/docs/pre-built-tools-with-mcp-toolbox"/>
12 |   </head>
13 | </html>
14 | 
```

--------------------------------------------------------------------------------
/docs/en/getting-started/quickstart/js/langchain/package.json:
--------------------------------------------------------------------------------

```json
 1 | {
 2 |   "name": "langchain",
 3 |   "version": "1.0.0",
 4 |   "description": "",
 5 |   "main": "quickstart.js",
 6 |   "type": "module",
 7 |   "scripts": {
 8 |     "test": "node --test"
 9 |   },
10 |   "keywords": [],
11 |   "author": "",
12 |   "license": "ISC",
13 |   "dependencies": {
14 |     "@langchain/google-genai": "^2.0.0",
15 |     "@langchain/langgraph": "^1.0.0",
16 |     "@toolbox-sdk/core": "^0.1.2",
17 |     "langchain": "^1.0.0"
18 |   }
19 | }
20 | 
```

--------------------------------------------------------------------------------
/docs/en/getting-started/quickstart/js/llamaindex/package.json:
--------------------------------------------------------------------------------

```json
 1 | {
 2 |   "name": "llamaindex",
 3 |   "version": "1.0.0",
 4 |   "description": "",
 5 |   "main": "quickstart.js",
 6 |   "type": "module",
 7 |   "scripts": {
 8 |     "test": "node --test"
 9 |   },
10 |   "keywords": [],
11 |   "author": "",
12 |   "license": "ISC",
13 |   "dependencies": {
14 |     "@llamaindex/google": "^0.3.20",
15 |     "@llamaindex/workflow": "^1.1.22",
16 |     "@toolbox-sdk/core": "^0.1.2",
17 |     "llamaindex": "^0.12.0"
18 |   }
19 | }
20 | 
```

--------------------------------------------------------------------------------
/docs/en/how-to/connect-ide/alloydb_pg_admin_mcp.md:
--------------------------------------------------------------------------------

```markdown
 1 | ---
 2 | title: "AlloyDB Admin API using MCP"
 3 | type: docs
 4 | weight: 2
 5 | description: >
 6 |   Create your AlloyDB database with MCP Toolbox.
 7 | ---
 8 | 
 9 | <html>
10 |   <head>
11 |    <link rel="canonical" href="https://cloud.google.com/alloydb/docs/connect-ide-using-mcp-toolbox"/>
12 |     <meta http-equiv="refresh" content="0;url=https://cloud.google.com/alloydb/docs/connect-ide-using-mcp-toolbox"/>
13 |   </head>
14 | </html>
15 | 
```

--------------------------------------------------------------------------------
/docs/en/how-to/connect-ide/firestore_mcp.md:
--------------------------------------------------------------------------------

```markdown
 1 | ---
 2 | title: "Firestore using MCP"
 3 | type: docs
 4 | weight: 2
 5 | description: >
 6 |   Connect your IDE to Firestore using Toolbox.
 7 | ---
 8 | 
 9 | <html>
10 |   <head>
11 |     <link rel="canonical" href="https://cloud.google.com/firestore/native/docs/connect-ide-using-mcp-toolbox"/>
12 |     <meta http-equiv="refresh" content="0;url=https://cloud.google.com/firestore/native/docs/connect-ide-using-mcp-toolbox"/>
13 |   </head>
14 | </html>
15 | 
```

--------------------------------------------------------------------------------
/docs/en/sdks/go-sdk.md:
--------------------------------------------------------------------------------

```markdown
 1 | ---
 2 | title: "Go SDK"
 3 | weight: 2
 4 | description: Go lang client SDK
 5 | icon: fa-brands fa-golang
 6 | manualLink: "https://github.com/googleapis/mcp-toolbox-sdk-go"
 7 | manualLinkTarget: _blank
 8 | ---
 9 | 
10 | <html>
11 |   <head>
12 |     <link rel="canonical" href="https://github.com/googleapis/mcp-toolbox-sdk-go"/>
13 |     <meta http-equiv="refresh" content="0;url=https://github.com/googleapis/mcp-toolbox-sdk-go"/>
14 |   </head>
15 | </html>
16 | 
```

--------------------------------------------------------------------------------
/docs/en/sdks/js-sdk.md:
--------------------------------------------------------------------------------

```markdown
 1 | ---
 2 | title: "JS SDK"
 3 | weight: 2
 4 | description: Javascript client SDK
 5 | icon: fa-brands fa-node-js
 6 | manualLink: "https://github.com/googleapis/mcp-toolbox-sdk-js"
 7 | manualLinkTarget: _blank
 8 | ---
 9 | 
10 | <html>
11 |   <head>
12 |     <link rel="canonical" href="https://github.com/googleapis/mcp-toolbox-sdk-js"/>
13 |     <meta http-equiv="refresh" content="0;url=https://github.com/googleapis/mcp-toolbox-sdk-js"/>
14 |   </head>
15 | </html>
16 | 
```

--------------------------------------------------------------------------------
/docs/en/how-to/connect-ide/cloud_sql_mysql_mcp.md:
--------------------------------------------------------------------------------

```markdown
 1 | ---
 2 | title: "Cloud SQL for MySQL using MCP"
 3 | type: docs
 4 | weight: 2
 5 | description: >
 6 |   Connect your IDE to Cloud SQL for MySQL using Toolbox.
 7 | ---
 8 | <html>
 9 |   <head>
10 |     <link rel="canonical" href="https://cloud.google.com/sql/docs/mysql/pre-built-tools-with-mcp-toolbox"/>
11 |     <meta http-equiv="refresh" content="0;url=https://cloud.google.com/sql/docs/mysql/pre-built-tools-with-mcp-toolbox"/>
12 |   </head>
13 | </html>
14 | 
```

--------------------------------------------------------------------------------
/docs/en/sdks/python-sdk.md:
--------------------------------------------------------------------------------

```markdown
 1 | ---
 2 | title: "Python SDK"
 3 | weight: 2
 4 | description: Python client SDK
 5 | icon: fa-brands fa-python
 6 | manualLink: "https://github.com/googleapis/mcp-toolbox-sdk-python"
 7 | manualLinkTarget: _blank
 8 | ---
 9 | 
10 | <html>
11 |   <head>
12 |     <link rel="canonical" href="https://github.com/googleapis/mcp-toolbox-sdk-python"/>
13 |     <meta http-equiv="refresh" content="0;url=https://github.com/googleapis/mcp-toolbox-sdk-python"/>
14 |   </head>
15 | </html>
16 | 
```

--------------------------------------------------------------------------------
/docs/en/how-to/connect-ide/cloud_sql_pg_mcp.md:
--------------------------------------------------------------------------------

```markdown
 1 | ---
 2 | title: "Cloud SQL for Postgres using MCP"
 3 | type: docs
 4 | weight: 2
 5 | description: >
 6 |   Connect your IDE to Cloud SQL for Postgres using Toolbox.
 7 | ---
 8 | <html>
 9 |   <head>
10 |     <link rel="canonical" href="https://cloud.google.com/sql/docs/postgres/pre-built-tools-with-mcp-toolbox"/>
11 |     <meta http-equiv="refresh" content="0;url=https://cloud.google.com/sql/docs/postgres/pre-built-tools-with-mcp-toolbox"/>
12 |   </head>
13 | </html>
14 | 
```

--------------------------------------------------------------------------------
/docs/en/how-to/connect-ide/cloud_sql_mssql_mcp.md:
--------------------------------------------------------------------------------

```markdown
 1 | ---
 2 | title: "Cloud SQL for SQL Server using MCP"
 3 | type: docs
 4 | weight: 2
 5 | description: >
 6 |   Connect your IDE to Cloud SQL for SQL Server using Toolbox.
 7 | ---
 8 | <html>
 9 |   <head>
10 |     <link rel="canonical" href="https://cloud.google.com/sql/docs/sqlserver/pre-built-tools-with-mcp-toolbox"/>
11 |     <meta http-equiv="refresh" content="0;url=https://cloud.google.com/sql/docs/sqlserver/pre-built-tools-with-mcp-toolbox"/>
12 |   </head>
13 | </html>
14 | 
```

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

```python
 1 | from google.adk import Agent
 2 | from google.adk.apps import App
 3 | from toolbox_core import ToolboxSyncClient
 4 | 
 5 | # TODO(developer): update the TOOLBOX_URL to your toolbox endpoint
 6 | client = ToolboxSyncClient("http://127.0.0.1:5000")
 7 | 
 8 | root_agent = Agent(
 9 |     name='root_agent',
10 |     model='gemini-2.5-flash',
11 |     instruction="You are a helpful AI assistant designed to provide accurate and useful information.",
12 |     tools=client.load_toolset(),
13 | )
14 | 
15 | app = App(root_agent=root_agent, name="my_agent")
16 | 
```

--------------------------------------------------------------------------------
/docs/en/samples/snowflake/runme.py:
--------------------------------------------------------------------------------

```python
 1 | import asyncio
 2 | from toolbox_core import ToolboxClient
 3 | 
 4 | 
 5 | async def main():
 6 |     # Replace with the actual URL where your Toolbox service is running
 7 |     async with ToolboxClient("http://127.0.0.1:5000") as toolbox:
 8 |         tool = await toolbox.load_tool("execute_sql")
 9 |         result = await tool("SELECT 1")
10 |         print(result)
11 | 
12 |         tool = await toolbox.load_tool("list_tables")
13 |         result = await tool(table_names="DIM_DATE")
14 |         print(result)
15 | 
16 | 
17 | if __name__ == "__main__":
18 |     asyncio.run(main())
19 | 
```

--------------------------------------------------------------------------------
/docs/en/resources/tools/serverless-spark/_index.md:
--------------------------------------------------------------------------------

```markdown
 1 | ---
 2 | title: "Serverless for Apache Spark"
 3 | type: docs
 4 | weight: 1
 5 | description: > 
 6 |   Tools that work with Google Cloud Serverless for Apache Spark Sources.
 7 | ---
 8 | 
 9 | - [serverless-spark-get-batch](./serverless-spark-get-batch.md)
10 | - [serverless-spark-list-batches](./serverless-spark-list-batches.md)
11 | - [serverless-spark-cancel-batch](./serverless-spark-cancel-batch.md)
12 | - [serverless-spark-create-pyspark-batch](./serverless-spark-create-pyspark-batch.md)
13 | - [serverless-spark-create-spark-batch](./serverless-spark-create-spark-batch.md)
14 | 
```

--------------------------------------------------------------------------------
/.hugo/layouts/partials/navbar-version-selector.html:
--------------------------------------------------------------------------------

```html
 1 | {{ if .Site.Params.versions -}}
 2 | <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
 3 |    {{ .Site.Params.version_menu }}
 4 | </a>
 5 | <div class="dropdown-menu" aria-labelledby="navbarDropdown">
 6 |    <div w3-include-html="/genai-toolbox/releases.releases" w3-include-html-default='<a class="dropdown-item" href="/genai-toolbox/dev/">Dev</a>'></div>
 7 |    <script>
 8 |      // This must run after the w3.js script has loaded.
 9 |      w3.includeHTML();
10 |    </script>
11 | </div>
12 | {{ end -}}
```

--------------------------------------------------------------------------------
/docs/en/blogs/_index.md:
--------------------------------------------------------------------------------

```markdown
 1 | ---
 2 | title: "Featured Articles"
 3 | weight: 3
 4 | description: Toolbox Medium Blogs
 5 | manualLink: "https://medium.com/@mcp_toolbox"
 6 | manualLinkTarget: _blank
 7 | ---
 8 | 
 9 | <html>
10 |   <head>
11 |     <title>Redirecting to Featured Articles</title>
12 |     <link rel="canonical" href="https://medium.com/@mcp_toolbox"/>
13 |     <meta http-equiv="refresh" content="0;url=https://medium.com/@mcp_toolbox"/>
14 |   </head>
15 |   <body>
16 |     <p>If you are not automatically redirected, please <a href="https://medium.com/@mcp_toolbox">follow this link to our articles</a>.</p>
17 |   </body>
18 | </html>
19 | 
```

--------------------------------------------------------------------------------
/.github/auto-label.yaml:
--------------------------------------------------------------------------------

```yaml
 1 | # Copyright 2024 Google LLC
 2 | #
 3 | # Licensed under the Apache License, Version 2.0 (the "License");
 4 | # you may not use this file except in compliance with the License.
 5 | # You may obtain a copy of the License at
 6 | #
 7 | #     https://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 | enabled: false
16 | 
```

--------------------------------------------------------------------------------
/.gemini/config.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 | ignore_patterns:
16 |   - "package-lock.json"
17 |   - "go.sum"
18 |   - "requirements.txt"
```

--------------------------------------------------------------------------------
/main.go:
--------------------------------------------------------------------------------

```go
 1 | // Copyright 2024 Google LLC
 2 | //
 3 | // Licensed under the Apache License, Version 2.0 (the "License");
 4 | // you may not use this file except in compliance with the License.
 5 | // You may obtain a copy of the License at
 6 | //
 7 | //     http://www.apache.org/licenses/LICENSE-2.0
 8 | //
 9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 | 
15 | package main
16 | 
17 | import (
18 | 	"github.com/googleapis/genai-toolbox/cmd"
19 | )
20 | 
21 | func main() {
22 | 	cmd.Execute()
23 | }
24 | 
```

--------------------------------------------------------------------------------
/docs/en/getting-started/quickstart/shared/cloud_setup.md:
--------------------------------------------------------------------------------

```markdown
 1 | <!-- This file has been used in local_quickstart.md, local_quickstart_go.md & local_quickstart_js.md -->
 2 | <!-- [START cloud_setup] -->
 3 | If you plan to use **Google Cloud’s Vertex AI** with your agent (e.g., using
 4 | `vertexai=True` or a Google GenAI model), follow these one-time setup steps for
 5 | local development:
 6 | 
 7 | 1. [Install the Google Cloud CLI](https://cloud.google.com/sdk/docs/install)
 8 | 1. [Set up Application Default Credentials
 9 |    (ADC)](https://cloud.google.com/docs/authentication/set-up-adc-local-dev-environment)
10 | 1. Set your project and enable Vertex AI
11 | 
12 |     ```bash
13 |     gcloud config set project YOUR_PROJECT_ID
14 |     gcloud services enable aiplatform.googleapis.com
15 |     ```
16 | 
17 | <!-- [END cloud_setup] -->
```

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

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

--------------------------------------------------------------------------------
/.github/header-checker-lint.yml:
--------------------------------------------------------------------------------

```yaml
 1 | # Copyright 2024 Google LLC
 2 | #
 3 | # Licensed under the Apache License, Version 2.0 (the "License");
 4 | # you may not use this file except in compliance with the License.
 5 | # You may obtain a copy of the License at
 6 | #
 7 | #     https://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 | allowedCopyrightHolders:
16 |   - 'Google LLC'
17 |   - 'Oracle'
18 | allowedLicenses:
19 |   - 'Apache-2.0'
20 | sourceFileExtensions:
21 |   - 'go'
22 |   - 'yaml'
23 |   - 'yml'
24 | ignoreFiles:
25 |   - 'docs/en/getting-started/quickstart/**'
26 |   - '**/*oracle*'
27 | 
28 | 
```

--------------------------------------------------------------------------------
/.github/renovate.json5:
--------------------------------------------------------------------------------

```
 1 | {
 2 |   extends: [
 3 |     'config:recommended',
 4 |     ':semanticCommitTypeAll(chore)',
 5 |     ':ignoreUnstable',
 6 |     ':separateMajorReleases',
 7 |     ':prConcurrentLimitNone',
 8 |     ':prHourlyLimitNone',
 9 |     ':preserveSemverRanges',
10 |   ],
11 |   minimumReleaseAge: '3',
12 |   rebaseWhen: 'conflicted',
13 |   dependencyDashboardLabels: [
14 |     'type: process',
15 |   ],
16 |   "postUpdateOptions": [
17 |     "gomodTidy"
18 |   ],
19 |   packageRules: [
20 |     {
21 |       groupName: 'GitHub Actions',
22 |       matchManagers: [
23 |         'github-actions',
24 |       ],
25 |       pinDigests: true,
26 |     },
27 |     {
28 |       groupName: 'Go',
29 |       matchManagers: [
30 |         'gomod',
31 |       ],
32 |     },
33 |     {
34 |       groupName: 'Node',
35 |       matchManagers: [
36 |         'npm',
37 |       ],
38 |     },
39 |     {
40 |       groupName: 'Pip',
41 |       matchManagers: [
42 |         'pip_requirements',
43 |       ],
44 |     },
45 |   ],
46 | }
47 | 
```

--------------------------------------------------------------------------------
/cmd/options.go:
--------------------------------------------------------------------------------

```go
 1 | // Copyright 2024 Google LLC
 2 | //
 3 | // Licensed under the Apache License, Version 2.0 (the "License");
 4 | // you may not use this file except in compliance with the License.
 5 | // You may obtain a copy of the License at
 6 | //
 7 | //     http://www.apache.org/licenses/LICENSE-2.0
 8 | //
 9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 | 
15 | package cmd
16 | 
17 | import (
18 | 	"io"
19 | )
20 | 
21 | // Option is a function that configures a Command.
22 | type Option func(*Command)
23 | 
24 | // WithStreams overrides the default writer.
25 | func WithStreams(out, err io.Writer) Option {
26 | 	return func(c *Command) {
27 | 		c.outStream = out
28 | 		c.errStream = err
29 | 	}
30 | }
31 | 
```

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

```html
 1 | <!DOCTYPE html>
 2 | <html lang="en">
 3 | <head>
 4 |     <meta charset="UTF-8">
 5 |     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 6 |     <title>Toolbox UI</title>
 7 |     <link rel="stylesheet" href="/ui/css/style.css">
 8 | </head>
 9 | <body>
10 |     <div id="navbar-container" data-active-nav=""></div>
11 |     <div id="main-content-container"></div>
12 | 
13 |     <script src="/ui/js/navbar.js"></script>
14 |     <script src="/ui/js/mainContent.js"></script>
15 |     <script>
16 |         document.addEventListener('DOMContentLoaded', () => {
17 |             const navbarContainer = document.getElementById('navbar-container');
18 |             const activeNav = navbarContainer.getAttribute('data-active-nav');
19 |             renderNavbar('navbar-container', activeNav);
20 |             renderMainContent('main-content-container', 'homepage-info', getHomepageInstructions())
21 |         });
22 |     </script>
23 | </body>
24 | </html>
25 | 
```

--------------------------------------------------------------------------------
/.github/PULL_REQUEST_TEMPLATE.md:
--------------------------------------------------------------------------------

```markdown
 1 | ## Description
 2 | 
 3 | > Should include a concise description of the changes (bug or feature), it's
 4 | > impact, along with a summary of the solution
 5 | 
 6 | ## PR Checklist
 7 | 
 8 | > Thank you for opening a Pull Request! Before submitting your PR, there are a
 9 | > few things you can do to make sure it goes smoothly:
10 | 
11 | - [ ] Make sure you reviewed
12 |   [CONTRIBUTING.md](https://github.com/googleapis/genai-toolbox/blob/main/CONTRIBUTING.md)
13 | - [ ] Make sure to open an issue as a
14 |   [bug/issue](https://github.com/googleapis/genai-toolbox/issues/new/choose)
15 |   before writing your code! That way we can discuss the change, evaluate
16 |   designs, and agree on the general idea
17 | - [ ] Ensure the tests and linter pass
18 | - [ ] Code coverage does not decrease (if any source code was changed)
19 | - [ ] Appropriate docs were updated (if necessary)
20 | - [ ] Make sure to add `!` if this involve a breaking change
21 | 
22 | 🛠️ Fixes #<issue_number_goes_here>
23 | 
```

--------------------------------------------------------------------------------
/.github/workflows/schedule_reporter.yml:
--------------------------------------------------------------------------------

```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 | name: Schedule Reporter
16 | 
17 | on:
18 |   schedule:
19 |     - cron: '0 6 * * *'  # Runs at 6 AM every morning
20 | 
21 | jobs:
22 |   run_reporter:
23 |     permissions:
24 |         issues: 'write'
25 |         checks: 'read'
26 |         contents: 'read'
27 |     uses: ./.github/workflows/cloud_build_failure_reporter.yml
28 |     with:
29 |       trigger_names: "toolbox-test-nightly,toolbox-test-on-merge,toolbox-continuous-release"
30 | 
```

--------------------------------------------------------------------------------
/.github/trusted-contribution.yml:
--------------------------------------------------------------------------------

```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 | # Trigger presubmit tests for trusted contributors
16 | # https://github.com/googleapis/repo-automation-bots/tree/main/packages/trusted-contribution
17 | # Install: https://github.com/apps/trusted-contributions-gcf
18 | 
19 | trustedContributors:
20 |   - "dependabot[bot]"
21 |   - "renovate-bot"
22 | annotations:
23 |   # Trigger Cloud Build tests
24 |   - type: comment
25 |     text: "/gcbrun"
26 |   - type: label
27 |     text: "tests: run"
28 | 
```

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

```markdown
 1 | ---
 2 | title: "cloud-sql-get-instance"
 3 | type: docs
 4 | weight: 10
 5 | description: >
 6 |   Get a Cloud SQL instance resource.
 7 | ---
 8 | 
 9 | The `cloud-sql-get-instance` tool retrieves a Cloud SQL instance resource using
10 | the Cloud SQL Admin API.
11 | 
12 | {{< notice info >}}
13 | This tool uses a `source` of kind `cloud-sql-admin`.
14 | {{< /notice >}}
15 | 
16 | ## Example
17 | 
18 | ```yaml
19 | tools:
20 |   get-sql-instance:
21 |     kind: cloud-sql-get-instance
22 |     source: my-cloud-sql-admin-source
23 |     description: "Gets a particular cloud sql instance."
24 | ```
25 | 
26 | ## Reference
27 | 
28 | | **field**   | **type** | **required** | **description**                                  |
29 | | ----------- | :------: | :----------: | ------------------------------------------------ |
30 | | kind        |  string  |     true     | Must be "cloud-sql-get-instance".                |
31 | | source      |  string  |     true     | The name of the `cloud-sql-admin` source to use. |
32 | | description |  string  |     false    | A description of the tool.                       |
33 | 
```
Page 1/76FirstPrevNextLast