Skip to main content
Glama

build_connect_data_source

Create a data connector to an EXTERNAL source the app owner controls (their own database, a REST API, or a warehouse). Returns a connector_id. Does NOT bind schemas yet. Flow: build_connect_data_source → build_discover_source (lists the tables/streams; needs this connector_id) → build_bind_data_source (bind streams to app schemas) → build_run_data_source (mode='sync' bindings only; live reads need no run). For a database you do NOT need to know the tables upfront: omit table_names and let discovery + bind pick them (the connector is a manual-trigger shell until bound, and a run before a sync bind is refused). Pass table_names only when you already know exactly which tables to sync. Credentials are sent to the platform and NEVER echoed back; prefer read-only DB creds / the Key Store for production. Requires a domain- or project-admin API key.

Input Schema

NameRequiredDescriptionDefault
authNoapi kind: {type: none|api_key|bearer|basic|oauth2, ...}.
hostNoServer hostname (database kinds, Fabric, ClickHouse, Snowflake, Databricks). BigQuery/Redshift take their connection settings in `config`.
kindYesSource kind.
nameYesConnector name (unique within the project).
portNoServer port; omit for the dialect default (5432 PostgreSQL, 3306 MySQL, 1433 MSSQL/Fabric, 1521 Oracle, 27017 MongoDB).
configNoExtra source config (e.g. warehouse account).
db_typeNodatabase/warehouse: postgresql|mysql|mssql|oracle|mongodb|snowflake|bigquery|redshift|databricks|clickhouse|fabric.
base_urlNoapi kind: API base URL.
databaseNodatabase/warehouse: database name.
endpointNoapi kind: endpoint path.
passwordNoDB password — sent to the platform, never echoed.
ssl_modeNodatabase kind: TLS mode, one of disable|allow|prefer|require|verify-ca|verify-full (or the MySQL spellings disabled|preferred|required|verify_ca|verify_identity); other values are rejected. Default 'require'. Used by PostgreSQL/MySQL/MSSQL/Fabric/MongoDB; Oracle and the HTTP warehouses (Snowflake/Databricks/ClickHouse/BigQuery/Redshift) ignore it.
usernameNodatabase/warehouse: login user (prefer a read-only one).
test_firstNoProbe connectivity before creating (default true).
table_namesNodatabase/warehouse, OPTIONAL: the source tables to sync, e.g. ["customers", "orders"]. Omit when you don't know them yet — run build_discover_source next and bind the streams it returns.
project_uuidNoProject the connector belongs to (from build_list_projects); your key must be allowed to build into it. API-key callers pass it to scope the connector to that project.
schema_namespaceNoNamespace for schemas from this source.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / table_names
      Added value: +{
      +  "description": "database/warehouse, OPTIONAL: the source tables to sync, e.g. [\"customers\", \"orders\"]. Omit when you don't know them yet — run build_discover_source next and bind the streams it returns.",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
  2. Changed1 schema field changed
    • addedInput schema / properties / project_uuid
      Added value: +{
      +  "description": "Project the connector belongs to (from build_list_projects); your key must be allowed to build into it. API-key callers pass it to scope the connector to that project.",
      +  "type": "string"
      +}
  3. Changed5 schema fields changed
    • addedInput schema / properties / database / description
      Added value: +"database/warehouse: database name."
    • addedInput schema / properties / host / description
      Added value: +"Server hostname (database kinds, Fabric, ClickHouse, Snowflake, Databricks). BigQuery/Redshift take their connection settings in `config`."
    • addedInput schema / properties / port / description
      Added value: +"Server port; omit for the dialect default (5432 PostgreSQL, 3306 MySQL, 1433 MSSQL/Fabric, 1521 Oracle, 27017 MongoDB)."
    • addedInput schema / properties / ssl_mode / description
      Added value: +"database kind: TLS mode, one of disable|allow|prefer|require|verify-ca|verify-full (or the MySQL spellings disabled|preferred|required|verify_ca|verify_identity); other values are rejected. Default 'require'. Used by PostgreSQL/MySQL/MSSQL/Fabric/MongoDB; Oracle and the HTTP warehouses (Snowflake/Databricks/ClickHouse/BigQuery/Redshift) ignore it."
    • addedInput schema / properties / username / description
      Added value: +"database/warehouse: login user (prefer a read-only one)."
  4. First observed

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare it is a non-read-only, open-world, non-idempotent write with destructiveHint=false, and the description adds context annotations cannot express: it returns a connector_id, performs no schema binding, credentials are sent to the platform and never echoed, read-only creds/Key Store are preferred, and a domain- or project-admin API key is required. It also flags the connector is a manual-trigger shell until bound.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose and return value, then the flow, then the table_names nuance and security note — a sensible ordering with no filler sentences. Slight deduction for re-explaining table_names in both the flow and the credential paragraph, which lengthens an already dense description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 17-parameter, nested-object creation tool with no output schema, the description covers the returned identifier, the authorization prerequisite, credential safety, and how the call fits into the multi-step build sequence. Nothing an agent needs to invoke it correctly — required fields, prerequisites, follow-up tool — is left out.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description goes further by explaining the operational meaning of `table_names` (omit it and let discovery + bind select tables, or pass it only when the exact sync set is known) and reinforcing credential handling. That said, much of it restates the schema's own parameter guidance rather than adding new syntax or format detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Create a data connector to an EXTERNAL source') and immediately scopes it to sources the app owner controls, listing the three kinds (database, REST API, warehouse). It also draws the boundary that this tool does not bind schemas, which separates it from build_bind_data_source/build_discover_source.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit ordered pipeline (build_connect_data_source → build_discover_source → build_bind_data_source → build_run_data_source) with the note that live reads need no run. It also states when to pass `table_names` versus omitting it, and names the failure mode ('a run before a sync bind is refused'), so the agent knows both when and when-not.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.