baic-dl-mcp
Provides tools for managing Snowflake data sources, including creating source connections, listing available tables, importing metadata into knowledge bases, and querying data through the data analyst agent.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@baic-dl-mcpList all knowledge bases and their tables"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
BAIC Data Layer MCP Server
An MCP server over the BAIC Data Layer: sources, knowledge bases, knowledge clusters, the three data agents, and transformation pipelines.
API behaviour is documented in DL-API-REFERENCE.md, verified live against two environments. Read that first if anything here surprises you — several endpoints are named misleadingly.
SESSION-LOG.md records how this was built: the platform behaviours found, the bugs fixed along the way, claims that were later corrected, and the open items.
Setup
cp .env.example .env # then fill in credentials + hosts
uv sync.env is gitignored (as is any .env* except the example). Nothing environment-specific is
hardcoded: the tenant and user ids are derived from the access token at runtime, because the
platform uses different tenant ids on different endpoints and they vary per deployment.
Pointing at a different environment
Edit .env — the hosts and credentials there are all that select a deployment:
BAIC_UI_URL BAIC_BACKEND_URL BAIC_USER_MGMT_URL BAIC_USER_NAME BAIC_USER_PASSWDKeeping spare copies (.env-udl-demo, .env-poc-farmers) and copying one over .env works fine;
all .env* files are gitignored except .env.example.
.env is optional when the variables are supplied directly, which is how Docker (--env-file) and
fastmcp.cloud work — the image ships no dotenv file on purpose. Missing values fail at startup
naming the variable.
whoami reports the backend host, tenant and user, so you can always confirm where you are
pointed before running anything.
Related MCP server: bika-mcp
Running
Built on FastMCP. Two transports, chosen by BAIC_TRANSPORT:
uv run baic-dl-mcp # stdio (default) - what Claude Desktop drives
BAIC_TRANSPORT=http uv run baic-dl-mcp # HTTP on :8000Claude Desktop — local
{
"mcpServers": {
"baic-dl": {
"command": "uv",
"args": ["--directory", "/absolute/path/to/BAIC-DL-MCP", "run", "baic-dl-mcp"]
}
}
}Claude Desktop — Docker
docker build -t baic-dl-mcp:latest .{
"mcpServers": {
"baic-dl": {
"command": "docker",
"args": ["run", "-i", "--rm",
"--env-file", "/absolute/path/to/BAIC-DL-MCP/.env",
"baic-dl-mcp:latest"]
}
}
}-i is required — stdio needs stdin held open. Credentials are passed at run time via
--env-file and never baked into the image.
fastmcp.cloud
fastmcp.json points at server.py:mcp and is ready to deploy. Connect the repo in
fastmcp.cloud, then set these as environment variables in the cloud UI
— never commit them:
BAIC_USER_NAME BAIC_USER_PASSWD BAIC_UI_URL BAIC_BACKEND_URL BAIC_USER_MGMT_URLRoot server.py is a path shim, not a second copy of the server: hosted runners load that file
directly rather than importing the installed package, so the relative imports inside
src/baic_dl_mcp/ need src on the path first.
HTTP, for a shared deployment
docker compose up -d # serves http://localhost:8000/mcpBoth paths are verified: 36 tools listed and tools invoked successfully over container stdio and container HTTP.
Start with whoami to confirm which environment you're pointed at.
Tools
36 tools.
Connectivity
Tool | Purpose |
| Confirm connectivity and show which environment, tenant, and user are in play |
Sources
Tool | Purpose |
| List configured data sources (source connections), one page at a time |
| Full detail for one source, including its connection config (secrets masked) |
| The connector engines this platform supports |
| Create a new Snowflake source connection |
| Create a new Postgres source connection |
Ingestion
Tool | Purpose |
| List the tables a source exposes, before importing any of them |
| List destinations - the vector stores or warehouses that ingestion writes into |
| Crawl a source's metadata into a new knowledge base |
| Import a source's metadata into a knowledge base and wait for it to finish |
| Check the status of a metadata import started by import_source_metadata |
Knowledge bases
Tool | Purpose |
| List knowledge bases (KBs) - the metadata imported via Data Ingestion, one page at a time |
| List the tables inside a knowledge base, one page at a time |
| Table descriptions and column-level detail for one or more tables |
| Discovered foreign-key style relationships between tables in a knowledge base |
Knowledge resources
Tool | Purpose |
| List the Golden SQL examples attached to a knowledge base |
| Save a SQL query as a Golden SQL example on a knowledge base |
| Delete a Golden SQL example. Requires BAIC_ALLOW_DESTRUCTIVE=true |
| Read the instructions attached to a knowledge base, with all versions |
| Overwrite the active instructions on a knowledge base. Replaces, does not append |
Knowledge clusters
Tool | Purpose |
| List knowledge clusters (KCs) - the groupings of knowledge bases used by the agents |
| KC detail: member knowledge bases, their engines, and the KC instructions |
| Read a knowledge cluster's instructions, with all versions |
| Overwrite a knowledge cluster's active instructions. Replaces, does not append |
| Create a knowledge cluster from knowledge bases, optionally with instructions |
| Check whether a set of knowledge bases could legally share one knowledge cluster |
| Delete a knowledge cluster. Requires BAIC_ALLOW_DESTRUCTIVE=true |
Agents
Tool | Purpose |
| Ask the Data Discovery agent which tables and columns are relevant to a question |
| Ask the Data Analyst agent a question about a knowledge cluster |
| Ask the Data Engineering agent to write pipeline SQL |
| Confirm the table selection and generate the SQL. Step 2 of 2 |
Pipelines
Tool | Purpose |
| List data pipelines, optionally only those in one knowledge cluster |
| Create a data pipeline |
| Read a pipeline's saved SQL and visual pipeline graph. Defaults to the active version |
| Save SQL and/or the visual pipeline graph onto a pipeline version. Write-only |
| Delete a pipeline. Requires BAIC_ALLOW_DESTRUCTIVE=true |
Two things worth knowing before you use it
Saving pipeline SQL is a write, not a review
Pass save_to_version_id to generate_pipeline_sql or approve_table_selection and the SQL is
generated and saved in that one call. You get back a saved receipt plus a short
sql_preview; the full SQL body and graph are deliberately not returned.
That shape is intentional. Returning 1-2 kB of SQL to the model invites it to re-read the SQL,
call get_table_details to check the column names, and then write several paragraphs explaining
the query and flagging joins for review. None of that is wanted — the SQL comes from the
platform's own engineering agent, generated from the knowledge cluster's metadata and
instructions. With nothing to summarise, there is nothing to summarise.
save_pipeline_sql behaves the same way if you call it directly: compact receipt, no SQL echo.
Its description tells the model not to validate, not to reformat, and not to restate. Use
get_pipeline_sql when you actually want the SQL back.
Two related things worth knowing:
Empty
columnsfromget_table_detailsis normal, not a verification failure. It means enrichment has not run on that table. The response now says so explicitly, because reading it as "I cannot verify this" was what triggered the hedging in the first place. The agents read the source schema directly and do not depend on that endpoint.Branch on
outcome, don't assume a review.generate_pipeline_sqlusually returnsreview_requiredwithnumbered_tablesfor a human to pick from, but it sometimes returnssql_generatedstraight away, and occasionallyno_sql_returned.
ask_data_analyst retries on empty results, on purpose
Snowflake execution is intermittent: the identical request returned data in roughly 3 of 14 measured attempts. The UI behaves the same way, so it is not a client problem. Postgres is reliable — 5/5 on the same kind of query.
Worse, a failed execution is reported as IWX-AI-SUCCESS-001 with an empty result and the answer
"The query returned no results", so on Snowflake an empty result is indistinguishable from a
failure. (Tell-tale: a genuinely empty table returns one row, [{"count": 0}]; a failed execution
returns zero rows, [].)
So the tool retries up to max_attempts (default 3) and reports per-attempt outcomes. Retrying
often recovers but is not dependable. If every attempt is empty you get an execution_warning —
do not relay that to a user as "there is no data". Evidence in DL-API-REFERENCE.md §5.1.
The BAIC DataLayer skill
skills/baic-datalayer/ covers the whole Data Layer, organised the way the UI is — Manage
Connector, Data Ingestion, Data Visualization, and the three Data Agents — with a table mapping
each UI surface to its tools, plus the flows for building a pipeline, asking a question, and
onboarding a source.
It leads with three rules that override default assistant behaviour, because each one breaks a scripted demo:
Pass user wording through verbatim. The knowledge cluster's instructions already supply grain, dedup keys, null handling and dialect, so an "improved" prompt generates different SQL than the one you rehearsed.
Never read, validate or summarise generated SQL. No checking column names via
get_table_details, no explaining the design, no flagging joins for review. Saves are reported in one line.Chain to the next tool call instead of narrating.
reference/quirks.md carries the platform behaviours worth not re-deriving — the intermittent
Snowflake execution, the review gate that does not always fire, empty columns being normal.
Adding it to Claude Desktop
The skill links to the API reference, which Desktop cannot reach because uploads have no access to repo files. Build the self-contained bundle first — it copies the referenced docs inside and rewrites the links:
uv run python scripts/package.py
# -> dist/baic-datalayer-skill.zipThen in Claude Desktop:
Settings → Capabilities → Skills (on some builds: Settings → Features → Skills)
Upload skill and choose
dist/baic-datalayer-skill.zipConfirm
baic-datalayeris listed and enabledStart a new conversation — skills are picked up per conversation, not retroactively
Check it loaded by asking something that should trigger it, e.g. "list the knowledge clusters in baic"
The zip has the skill folder as its root, which is the layout Desktop expects:
baic-datalayer/
SKILL.md
reference/quirks.md
reference/api-reference.md <- copied in, links rewrittenRebuild and re-upload whenever the skill or the tool set changes.
Claude Code does not load this skill in this repo, deliberately: it lives in skills/, not
.claude/skills/, because it tells an assistant how to drive the Data Layer, which is not what
you are doing when you are editing the server. To use it from Claude Code in another project, copy
skills/baic-datalayer/ into that project's .claude/skills/, or unzip the bundle there.
It stays environment-neutral
The skill names no deployment: no hostnames, user emails, ids, or row counts. It tells the model to
call whoami first and to discover ids at run time, because all of those change when you point
.env somewhere else.
DL-API-REFERENCE.md is deliberately not bundled into the skill. It is a human record of
building this server — raw endpoints, one deployment's hosts, ids and counts — and shipping it made
the skill assert things that become false the moment you switch environment. The skill drives MCP
tools, not HTTP, so it does not need it. That dropped the bundle from 31 KB to 5 KB.
scripts/package.py fails the build if the bundle mentions a specific host, email, or UUID, so
this cannot creep back in.
Keeping it honest
uv run python scripts/check_skill.pyFails if the skill names a tool that does not exist, and warns if a tool is never mentioned. A skill that points at a renamed tool sends the model down a dead end, so this is checked rather than trusted.
It is a nudge, not a guarantee
Skills and tool descriptions steer; they do not enforce. The enforcement is structural:
Pass
save_to_version_idso SQL is saved server-side and never returned to the model. SQL that is not in the response cannot be summarised.save_pipeline_sqlreturns a compact receipt, not the SQL body.get_table_detailslabels an emptycolumnslist as expected, so it stops reading as a verification failure.
instruction and question are documented as verbatim in the tool descriptions and in the
server-level instructions too, so the rule still holds when the skill is not loaded.
Guard rails
Two flags in .env, both default-off:
BAIC_ALLOW_DESTRUCTIVE— gatesdelete_pipeline,delete_golden_sql,delete_knowledge_clusterBAIC_ALLOW_AUTO_APPROVE— reserved for chaining the pipeline review gate automatically
create_knowledge_cluster also refuses knowledge bases that would need federation. All structured
KBs in a cluster must share one engine and one account — the platform cannot query across them,
and the API will not stop you. Unstructured (document) KBs are exempt.
Packaging and release
uv run python scripts/package.py # build skill bundle + validate all targets
uv run python scripts/package.py --check # validate onlyThree deployment targets are kept working at once, and the validator fails if any breaks:
Target | Entry | Transport |
Local |
| stdio |
Docker |
| stdio or http |
fastmcp.cloud |
| http |
Before a demo or a release, run the sequence in the package-baic-mcp skill — it regenerates the
README tool table, checks the skill for stale tool names, builds the bundle, rebuilds the image, and
finishes with a live smoke test against the configured environment.
Credentials never enter an artefact: .gitignore covers .env* (except .env.example),
.dockerignore keeps them out of the image, and both are asserted by the validator. Docker and
fastmcp.cloud take them as run-time environment variables.
Layout
src/baic_dl_mcp/
config.py env loading
client.py auth, token refresh, envelope normalisation, paging
domain.py the operations, and the reasons behind each workaround
server.py FastMCP tool surface
server.py path shim for hosted runners (fastmcp.cloud) - no logic
fastmcp.json fastmcp.cloud deployment config
Dockerfile stdio + http, credentials injected at run time
docker-compose.yml HTTP deployment
scripts/
gen_readme_tools.py regenerates the Tools table from the running server
check_skill.py fails if the skill names a tool that does not exist
package.py builds the Desktop skill bundle, validates all targets
skills/
baic-datalayer/ how to drive the Data Layer - ships to Desktop, not loaded here
.claude/skills/
package-baic-mcp/ the release workflow, used while working in this repoThe transport layer is deliberately thin: config/client/domain know nothing about MCP, which
is why swapping the server from the low-level SDK to FastMCP touched only server.py.
The Tools table above is generated from the running server, so it cannot drift out of date:
uv run python scripts/gen_readme_tools.pyIt fails if a tool exists that the table does not list, or vice versa. Run it after adding a tool.
A note on tool schemas
Tools are registered with FastMCP's decorator and no hand-rolled wrapper. An earlier version wrapped
each tool in *args, **kwargs and copied __annotations__ but not __signature__; MCP introspects
the callable it is handed, so every tool advertised two bogus string parameters named args and
kwargs, and clients sent those instead of the real arguments. If you add a wrapper here, set
__signature__ — or better, don't wrap.
Available Tools
36 toolsadd_golden_sqlA
Save a SQL query as a Golden SQL example on a knowledge base.
Use the description to record the question the query answers - that is what makes it useful to the agents later.
| Name | Required | Description | Default |
|---|---|---|---|
| golden_sql | Yes | ||
| description | Yes | ||
| knowledge_base_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that the query will be stored as a Golden SQL example and explains that the description makes it useful to agents later, adding behavioral context. However, it does not mention permissions, validation, error handling, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. The primary action is front-loaded, and the second sentence adds a concise, valuable usage tip about the description field.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple create operation, the description covers the core action and an important nuance about the description parameter, but it omits error conditions, validation behavior, or prerequisites. The output schema exists, so return values are not needed, but more context about what makes a valid golden SQL would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It clarifies that golden_sql is the SQL query and knowledge_base_id identifies the knowledge base, and it specifically explains the purpose of the 'description' parameter. This adds meaning, but it does not detail formats or constraints for the parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence clearly states what the tool does: 'Save a SQL query as a Golden SQL example on a knowledge base.' It uses a specific verb and resource, and the name 'add_golden_sql' plus sibling tools (list_golden_sql, delete_golden_sql) make its role unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool via the verb 'save' and provides a specific usage tip for the description parameter, but it does not explicitly mention when not to use it or name alternatives. Guidance focuses on parameter usage rather than tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
approve_table_selectionA
Confirm the table selection and generate the SQL. Step 2 of 2.
keep_tables and all_offered_tables take fully-qualified DB.SCHEMA.TABLE names;
all_offered_tables is the offered_tables list from generate_pipeline_sql.
PREFERRED: pass save_to_version_id (the pipeline's version_id) and the SQL is generated and
saved in this single call. You get back a saved receipt and a short sql_preview instead
of the full body.
Do not validate the generated SQL. It is produced by the platform's own engineering agent from the knowledge cluster's metadata and instructions; it does not need checking against table metadata, and calling get_table_details or list_kb_tables to verify it is wasted work. Report the saved receipt and stop.
Without save_to_version_id you get sql and graph back, which must then be handed to
save_pipeline_sql unchanged - do not reformat, re-indent, or edit them.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes | ||
| keep_tables | Yes | ||
| pipeline_id | Yes | ||
| max_attempts | No | ||
| target_table | Yes | ||
| all_offered_tables | Yes | ||
| save_to_version_id | No | ||
| knowledge_cluster_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavioral nuances: the two distinct return paths, that all_offered_tables must come from generate_pipeline_sql, the warning that SQL is auto-generated and must not be validated, the instruction to 'Report the saved receipt and stop,' and the directive to pass sql/graph unchanged to save_pipeline_sql. This is rich, non-obvious behavior that the agent needs to know.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is moderately long but every sentence contributes actionable information. It front-loads the core purpose in the first sentence, then uses short paragraphs for preferred usage, alternative usage, and a critical warning. No filler or redundant content—each line earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity, the description covers the essential context: it is the second step of a two-step flow, it has two operational paths with different return values, it explicitly states what to do with the returned data (hand to save_pipeline_sql unchanged) and what not to do (validate against metadata). The output schema exists but the description still summarizes the return payloads, making the tool self-contained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It clarifies the meaning of keep_tables and all_offered_tables (fully-qualified DB.SCHEMA.TABLE names, with all_offered_tables tied to generate_pipeline_sql's offered_tables) and explains the effect of save_to_version_id. However, it does not explain the remaining parameters (pipeline_id, knowledge_cluster_id, session_id, target_table, max_attempts), which are mostly self-explanatory but still lack explicit semantic guidance. The key ambiguous parameters are covered, so this goes above baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb-resource pair: 'Confirm the table selection and generate the SQL.' It explicitly identifies itself as 'Step 2 of 2,' clearly tying it to the preceding generate_pipeline_sql step, and distinguishes the two operational modes (with/without save_to_version_id). This removes ambiguity about the tool's role among the large sibling set.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use and when-not-to-use guidance. It names the preferred path ('PREFERRED: pass save_to_version_id... the SQL is generated and saved in this single call') and the alternative path that requires handing sql/graph to save_pipeline_sql. It also names specific tools to avoid ('get_table_details or list_kb_tables') and explains why validating is wasted work, analogous to TDQS 4.3's explicit alternative naming.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ask_data_analystA
Ask the Data Analyst agent a question about a knowledge cluster.
question must be the user's question VERBATIM - do not rephrase or elaborate it. The
cluster's metadata and instructions supply the context the agent needs.
execute_query mirrors the UI's "Run SQL" toggle and defaults to true, which is almost always what is wanted: a question about data wants an answer, not a query. Only pass false when the user explicitly asks for the SQL without running it. Each attempt takes roughly 40-60s. Pass session_id to continue a conversation.
When executing, an empty result is retried up to max_attempts times, because the same question intermittently produces SQL that returns no rows. If every attempt comes back empty the result carries an execution_warning - an empty result is indistinguishable from a failed execution on this platform, so do not tell the user "there is no data".
| Name | Required | Description | Default |
|---|---|---|---|
| question | Yes | ||
| session_id | No | ||
| max_attempts | No | ||
| execute_query | No | ||
| knowledge_cluster_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and excels by disclosing multiple behavioral traits: the verbatim question requirement, the retry-on-empty behavior, the 40-60s latency, and the warning that empty results are indistinguishable from failure. This goes well beyond basic expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose, and every subsequent sentence provides necessary operational detail. It is appropriately sized for the tool's complexity, with no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers usage, parameter behavior, failure modes, and gotchas (such as not telling the user 'there is no data'), and an output schema exists to document return values. This makes the tool fully comprehensible for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description explains question, execute_query, session_id, and max_attempts in context, leaving only knowledge_cluster_id to be inferred from the tool's purpose. This substantial compensation warrants a score above baseline, though not 5 because a few parameter specifics (e.g., max_attempts default) are not explicitly stated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ("ask") and resource ("the Data Analyst agent about a knowledge cluster"), clearly distinguishing it from sibling tools that manage sources, pipelines, and clusters. It also provides essential context about verbatim questions, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to use the tool (when a question about a knowledge cluster needs an answer) and provides operational guidance on execute_query, session_id, and empty-result behavior. It does not explicitly name alternative tools, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_kc_federationB
Check whether a set of knowledge bases could legally share one knowledge cluster.
| Name | Required | Description | Default |
|---|---|---|---|
| knowledge_base_ids | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. The phrase 'Check whether' implies a read-only operation, but the description does not state whether any state is modified, what the output format is, or what 'legally' means in this context. This is a meaningful transparency gap for a tool with no annotation support.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that immediately communicates the tool's purpose. There is no redundant information or fluff, and the key subject/object structure is front-loaded and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with one parameter and an output schema, so the description doesn't need to explain return values. However, it lacks richer context about the meaning of 'legally share,' error conditions, or whether this is a read-only dry-run. It is minimally adequate but has clear gaps in behavioral and usage context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one parameter, knowledge_base_ids, with 0% description coverage. The description only refers to 'a set of knowledge bases,' which roughly aligns with the parameter but does not explain what the IDs represent, whether they follow a specific format, or any constraints. It adds minimal semantic value beyond the parameter name and schema type.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool's action ('Check') and its specific resource/purpose: whether knowledge bases could legally share one knowledge cluster. This distinguishes it from sibling tools like list_knowledge_clusters or create_knowledge_cluster, which focus on listing or creation rather than legal compatibility checking.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The purpose implies usage: use this tool when you need to verify if a set of knowledge bases can share a cluster. However, it does not explicitly state when to use it versus alternatives, nor mention any prerequisites or exclusions. The usage context is only implicit, matching a score of 3.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_knowledge_clusterA
Create a knowledge cluster from knowledge bases, optionally with instructions.
Refuses knowledge bases that would need federation - all structured KBs must share one engine and one account, because the platform cannot query across them. Unstructured (document) KBs are exempt.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| description | No | ||
| instructions | No | ||
| knowledge_base_ids | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosing behavior. It reveals the important refusal behavior for federated structured KBs, explains why (cannot query across them), and notes the exemption for unstructured document KBs. It does not mention permissions or side effects, but the create action is implicitly mutating and the verb makes that clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is exactly two sentences, front-loaded with the primary action and immediately followed by the key constraint. Every word adds value, and there is no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a create tool with an output schema and many sibling tools, the description covers the core operation and the most critical limitation (federation). It could also mention that the referenced knowledge bases must already exist or that list_knowledge_bases can help discover IDs, but the essential context is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds meaning to 'knowledge_base_ids' by saying the cluster is created 'from knowledge bases' and clarifies that 'instructions' is optional. However, it does not add any detail to 'name' or 'description', leaving those to rely on their obvious names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description immediately states a specific action: 'Create a knowledge cluster from knowledge bases, optionally with instructions.' This clearly identifies the resource and operation, and the federation caveat helps distinguish it from sibling cluster tools like get_knowledge_cluster or delete_knowledge_cluster.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool (creating a cluster from existing knowledge bases) and explicitly states a when-not condition (refuses federated structured KBs). It does not name alternative tools for the refused case, but the exclusion is concrete and useful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_pipelineA
Create a data pipeline.
source_id and knowledge_base_id identify where the pipeline writes; knowledge_cluster_id supplies the context the agent reasons over. Returns the pipeline id and its first version id, both needed to save SQL.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| source_id | Yes | ||
| description | Yes | ||
| knowledge_base_id | Yes | ||
| knowledge_cluster_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full burden, and it does well by explaining the meaning of the key parameters and what the tool returns (pipeline id and first version id). It does not discuss idempotency, auth, or error behavior, but for a 'create' action, the disclosed semantics are adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences with no fluff. It front-loads the purpose ('Create a data pipeline'), then provides a compact parameter explanation, and ends with the return value and its use. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (5 required parameters, no annotations, no schema descriptions) and the existence of an output schema, the description is complete enough: it informs the agent what to pass and what to expect in return, and it positions the tool in the workflow via 'both needed to save SQL.' Minor gaps exist, like not explaining what a 'pipeline' or 'first version' means, but these are not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds meaning to the most confusing parameters: source_id and knowledge_base_id are defined as write targets, and knowledge_cluster_id is defined as reasoning context. The remaining parameters (name, description) are self-explanatory, so the description fills the gap effectively.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Create a data pipeline,' a specific verb+resource statement that clearly distinguishes it from sibling tools like generate_pipeline_sql, save_pipeline_sql, and delete_pipeline. It further clarifies that it creates a pipeline and returns IDs, reinforcing the creation role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on how to use the tool: it explains that source_id and knowledge_base_id identify where the pipeline writes, and knowledge_cluster_id supplies reasoning context. It also states the returned IDs are 'needed to save SQL,' implying this tool should be used before saving SQL. However, it does not explicitly list when not to use it or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_postgres_sourceA
Create a new Postgres source connection.
connection_url is a full JDBC URL, e.g. jdbc:postgresql://host:5432/dbname?sslmode=require Postgres config differs from Snowflake: one JDBC URL + schema, no account or warehouse.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| schema | Yes | ||
| password | Yes | ||
| username | Yes | ||
| description | No | ||
| connection_url | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only says 'Create' and gives parameter configuration details, but does not disclose behavioral traits such as whether the connection is validated, any side effects, required permissions, or idempotency. The config comparison to Snowflake is more about parameters than behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the purpose, followed by a necessary example and a brief contrast to Snowflake. It is efficient and easy to scan, though the example adds a bit of length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and a relatively simple creation tool, the description provides useful context for the URL and schema, but lacks other important context like prerequisites, error behavior, or what happens after creation. The presence of an output schema reduces the need to describe return values, but the overall context is not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains connection_url with an example and clarifies that schema is part of the Postgres configuration, but it does not add meaning for name, username, password, or description. Partial compensation only.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create a new Postgres source connection') with a specific resource and differentiates from the Snowflake variant by mentioning config differences. It is a specific verb+resource+scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool (for Postgres sources) and contrasts it with Snowflake ('no account or warehouse'), implying the alternative create_snowflake_source. However, it does not explicitly state exclusions or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_snowflake_sourceA
Create a new Snowflake source connection.
authentication_type: "default" (username+password), "oauth", or "keypair". Only "oauth" has been confirmed against the live API; if a create fails on this field, that is the most likely cause.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| role | No | ||
| password | No | ||
| username | No | ||
| warehouse | Yes | ||
| source_schema | Yes | ||
| source_database | Yes | ||
| account_identifier | Yes | ||
| authentication_type | No | default |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses a significant behavioral trait: only 'oauth' is confirmed against the live API, and failure on this field is likely. This adds valuable context beyond the schema, though other aspects like idempotency are not addressed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, with the purpose front-loaded and the caveat succinctly placed. Every sentence adds value and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 9 parameters and an output schema, but the description provides minimal context beyond purpose and the authentication caveat. It does not explain required parameter relationships or prerequisites, though the output schema helps reduce the burden.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It explains authentication_type values and warns about reliability, which adds meaning. However, it ignores the other eight parameters, leaving them to rely on names alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create a new Snowflake source connection,' using a specific verb and resource. It is distinct from sibling tools like create_postgres_source and get_source, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for Snowflake sources, but does not explicitly state when to use it vs alternatives like create_postgres_source. The authentication_type note provides operational guidance but not usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_golden_sqlA
Delete a Golden SQL example. Requires BAIC_ALLOW_DESTRUCTIVE=true.
| Name | Required | Description | Default |
|---|---|---|---|
| golden_sql_id | Yes | ||
| knowledge_base_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of disclosing destructive behavior. It explicitly mentions the destructive flag requirement, which implies the operation is permanent and guarded. This adds meaningful context beyond the tool name alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, immediately stating the action and the key prerequisite. No filler or redundant information; every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple delete operation with two clearly named parameters and no output schema, the description covers the essential facts: what it does and the necessary environment setting. It could mention immediacy or side effects, but overall it is sufficiently complete for this tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description does not explain either parameter. While 'golden_sql_id' and 'knowledge_base_id' are inferable from names, the description adds no explicit meaning, failing to compensate for the lack of schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Delete') and the resource ('a Golden SQL example'), making the tool's purpose unambiguous. It also differentiates from siblings like add_golden_sql and list_golden_sql by the delete operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear behavioral prerequisite ('Requires BAIC_ALLOW_DESTRUCTIVE=true'), which is relevant for usage. While it doesn't explicitly contrast with alternatives, the scope is evident and no competing delete-golden-sql tool exists among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_knowledge_clusterB
Delete a knowledge cluster. Requires BAIC_ALLOW_DESTRUCTIVE=true.
| Name | Required | Description | Default |
|---|---|---|---|
| knowledge_cluster_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses a key behavioral requirement (BAIC_ALLOW_DESTRUCTIVE=true) that goes beyond the schema, which is valuable. However, it does not mention whether deletion is irreversible, what data is affected, or any cascading consequences, leaving the full impact unclear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, with two short sentences that each add necessary information: the action and the required permission. There is no wasted wording, and it is well-structured for quick parsing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
As a destructive tool with no annotations and no output schema, the description is too sparse. It lacks critical context such as irreversibility, what associated data is removed, or any safety net information, making it incomplete for an agent to fully assess consequences.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, the description carries full responsibility for explaining the parameter, but it does not mention 'knowledge_cluster_id' at all. The parameter name is self-explanatory, but no additional semantic value is added.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('Delete') and a specific resource ('knowledge cluster'), which unambiguously distinguishes it from sibling tools like create_knowledge_cluster, get_knowledge_cluster, and list_knowledge_clusters.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no explicit guidance on when to use this tool versus alternatives (e.g., when not to delete, or any fallback options). It only implies usage through the tool name and description, but lacks contextual direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_pipelineC
Delete a pipeline. Requires BAIC_ALLOW_DESTRUCTIVE=true.
| Name | Required | Description | Default |
|---|---|---|---|
| pipeline_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description mentions the requirement for BAIC_ALLOW_DESTRUCTIVE=true, but provides no detail about the destructive nature, irreversibility, or side effects. With no annotations, the description carries full burden and falls short.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, using two short sentences with no wasted words. It communicates the essential action and requirement efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with no annotations, output schema, or parameter explanation, the description is too sparse. It fails to convey the consequences of deletion or any additional context needed for safe invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not mention the pipeline_id parameter at all. Schema description coverage is 0%, so the description should compensate but does not, leaving the agent without any guidance on how to specify the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Delete') and the resource ('a pipeline'), making the tool's purpose unambiguous. There is no other sibling tool that deletes pipelines, so it is adequately distinguished.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool or how it compares to alternatives. The only added context is the BAIC_ALLOW_DESTRUCTIVE=true requirement, which is a prerequisite rather than usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discover_tablesA
Ask the Data Discovery agent which tables and columns are relevant to a question.
Fast (~15s) and the best starting point before writing SQL. Returns the relevant tables, their join relationships, and a per-table column shortlist.
| Name | Required | Description | Default |
|---|---|---|---|
| question | Yes | ||
| knowledge_cluster_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses ~15s latency and output composition, which is useful. But it does not state whether the operation is read-only, any auth requirements, failure modes, or how the agent handles ambiguous questions, leaving notable gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two focused sentences with no redundancy. It front-loads the core action and then adds concise, useful context about speed and output structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description gives a good overview for a discovery tool and leverages the existing output schema (so return values are covered). However, it lacks explanation of the knowledge_cluster_id parameter and any prerequisites, making it not fully self-sufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not explicitly explain the parameters. 'Question' is implied by the context, but 'knowledge_cluster_id' is never mentioned, leaving a required parameter ambiguous. With zero schema documentation, the description fails to compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it asks the Data Discovery agent for relevant tables and columns, and specifies the output includes tables, join relationships, and a per-table column shortlist. It distinguishes itself as a fast starting point before writing SQL, differentiating it from other table or SQL tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says 'the best starting point before writing SQL,' giving a clear when-to-use context. However, it does not mention alternatives or when not to use it, so it lacks full exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_pipeline_sqlA
Ask the Data Engineering agent to write pipeline SQL.
Branch on outcome, do not assume:
"review_required" - the usual case. Print
review_promptverbatim - it is already formatted with numbers. Do not renumber, reformat, or drop the numbers, and do not recommend which tables to keep: the selection is the user's, and a recommendation defeats the point of the review. Then ALSO offer the same numbered tables (plus "keep all") through the client's selection UI and wait - the verbatim rule governs the printed text, and offering those options as a selection does not violate it. Wait on a typed reply only if the client has no selection UI. Then call approve_table_selection with the same session_id. Iftarget_is_also_a_sourceis non-empty, the pipeline would write over a table it reads from - surface that and get explicit confirmation."sql_generated" - the agent skipped the review and wrote SQL immediately. If you passed save_to_version_id it is already saved; just report the
savedreceipt."needs_clarification" - the agent needs more detail. Relay
questionsto the user verbatim, offering the answers as a selection where the options are enumerable, then call this tool again with the SAMEsession_idand their answers as the instruction. Do not answer on their behalf and do not invent a definition for an ambiguous term.
Pass save_to_version_id (the pipeline's version_id) so that if SQL arrives on this turn it is saved without a round trip.
instruction must be the user's request VERBATIM - their exact wording, not a rephrasing.
Do not add table names, columns, joins, grain or dialect hints they did not write: the
knowledge cluster's own instructions already supply those, and rewriting the request changes
what the platform's agent generates.
Do not validate generated SQL against table metadata, and do not summarise it.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | No | ||
| instruction | Yes | ||
| pipeline_id | Yes | ||
| save_to_version_id | No | ||
| knowledge_cluster_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses branching behavior on outcome, the verbatim printing rule, the side effect of saving SQL when save_to_version_id is provided, the requirement to surface target_is_also_a_source conflicts, and the explicit prohibition on validating or summarising SQL. This is exceptionally transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Although long, the description is tightly organised with bullet points for outcome branches, bolded key directives, and front-loaded purpose. Every sentence conveys a necessary protocol detail, and there is no redundant content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 5 parameters, no annotations, and 0% schema description coverage, making this description the sole source of guidance. It covers all three outcome branches, the additional safety check for target_is_also_a_source, the UI selection workflow, and the save behavior. It fully prepares the agent to execute the correct workflow, making it complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It thoroughly explains `instruction` (must be verbatim, no added hints) and `save_to_version_id` (pipeline version to save SQL). It also clarifies `session_id` usage across calls and for approve_table_selection. `pipeline_id` and `knowledge_cluster_id` are not explicitly defined but are inferable from context and the phrase 'knowledge cluster's own instructions.'
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Ask the Data Engineering agent to write pipeline SQL,' a clear verb+resource statement. It distinguishes from siblings like get_pipeline_sql and save_pipeline_sql by indicating this tool generates SQL through the agent, not retrieves or saves it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides extensive procedural guidance: when to pass save_to_version_id, how to handle each outcome, and when to call approve_table_selection. It also includes explicit 'do not' instructions (e.g., do not validate generated SQL, do not renumber the review prompt). However, it does not directly name alternative tools for comparison, so the 'vs alternatives' aspect is less explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ingestion_taskA
Check the status of a metadata import started by import_source_metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only says 'check the status' without indicating whether the operation is read-only, what status values can be returned, whether it blocks, or what errors may occur. This lack of detail fails to provide adequate transparency about the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence that immediately conveys the action and context with no redundant or unnecessary words. It is front-loaded and to the point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple status-check tool, the description gives essential workflow context (tie to import_source_metadata) and the schema covers the parameter. However, it omits details about the response content, possible status values, and any potential errors. Given the absence of annotations and output schema, this is a minimally viable description but leaves notable gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one required parameter (task_id) with 0% description coverage, and the description does not mention task_id at all. While the name 'task_id' is somewhat self-explanatory, the description does not explain that it is the identifier returned by import_source_metadata, nor does it clarify format or origin, leaving the agent to infer the relationship.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Check the status of a metadata import started by import_source_metadata.' This uses a specific verb ('check') and resource ('metadata import'), and explicitly ties it to a sibling tool, distinguishing it from import_source_metadata (which starts imports) and import_and_wait (which likely waits).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context by referencing the originating tool ('started by import_source_metadata'), implying this should be used after initiating an import and specifically for status checking. It does not explicitly state when not to use it or name alternatives, but the workflow context is sufficiently clear for most cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_kb_instructionsA
Read the instructions attached to a knowledge base, with all versions.
| Name | Required | Description | Default |
|---|---|---|---|
| knowledge_base_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It explicitly says 'Read', indicating a non-mutating operation, and adds 'with all versions' to clarify the scope. However, it does not disclose potential errors, auth requirements, or return structure beyond what the output schema may cover.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, direct, with no filler. It communicates the operation and key detail (all versions) efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has one parameter and an output schema. The description covers the core behavior (read all versions). It lacks explicit error handling or alternative guidance, but for a simple read with output schema, it is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage for knowledge_base_id. The description mentions 'knowledge base' but does not explicitly define knowledge_base_id as the identifier or provide formats/source. The parameter name is self-explanatory, offering partial compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Read' and the resource 'instructions attached to a knowledge base', with the detail 'with all versions'. This distinguishes it from sibling tools like get_kc_instructions (knowledge cluster) and update_kb_instructions (write operation).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use: to read knowledge base instructions. It does not explicitly mention alternatives or exclusions, but the context is clear from the resource type. No guidance about when not to use (e.g., for clusters), but the intent is obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_kc_instructionsA
Read a knowledge cluster's instructions, with all versions.
Note: a KC can have an empty active version while an older version holds the real
content, so instructions here is the effective text, not blindly the active row.
| Name | Required | Description | Default |
|---|---|---|---|
| knowledge_cluster_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses an important behavior: the effective instructions may come from an older version when the active version is empty. This goes beyond the basic 'read' semantics and prevents misinterpretation of the returned content.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the primary purpose followed by a critical caveat. No redundant words or filler; every sentence adds necessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (one parameter) and the description covers the main caveat (active vs older version) that affects result interpretation. With an output schema present, return values are presumably structured. However, it does not address potential empty results or error handling, which reduces completeness slightly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has one parameter, knowledge_cluster_id, with no description (0% coverage). The description mentions 'a knowledge cluster' but does not add specific meaning to the parameter beyond what the name itself conveys. It fails to explain how to obtain the ID or any format expectations.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Read') and resource ('knowledge cluster's instructions') and highlights 'with all versions' as a distinctive feature. This clearly differentiates it from siblings like get_knowledge_cluster (metadata) and get_kb_instructions (knowledge base instructions).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when one needs a knowledge cluster's instructions, but it does not explicitly contrast with get_kb_instructions or other alternatives, nor does it state when not to use this tool. The note about effective text provides contextual guidance but not explicit selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_knowledge_clusterA
KC detail: member knowledge bases, their engines, and the KC instructions.
knowledge_base_ids here is what the agent tools need, so fetch this before asking questions if you want to inspect the context first.
| Name | Required | Description | Default |
|---|---|---|---|
| knowledge_cluster_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It mentions the output contents (member knowledge bases, engines, instructions) and that the returned IDs are useful for other tools, which implies a read operation. However, it doesn't disclose potential errors, permissions, or any side effects. For a simple get-like tool, this is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with two sentences and no redundant wording. It front-loads the core purpose ('KC detail') and then adds usage context. The first sentence is a fragment, but it is efficient. It earns its place without excessive detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (one parameter, no nested objects) and the presence of an output schema, the description is sufficiently complete. It states what the tool returns and provides a usage scenario. The output schema likely covers return value structure, so the description doesn't need to detail that. It reasonably supports selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has a single parameter (knowledge_cluster_id) with no description, and schema description coverage is 0%. The description doesn't explain the input parameter directly, but it does mention knowledge_base_ids in the output, implying the purpose of the cluster ID. It partially compensates for the lack of schema detail by contextualizing the result, but falls short of fully explaining the parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly indicates this tool retrieves details of a knowledge cluster, specifically its member knowledge bases, their engines, and the KC instructions. This differentiates it from siblings like get_kc_instructions, which focuses narrowly on instructions, and list_knowledge_clusters, which lists clusters. The use of 'KC detail' is telegraphic but contextually clear, and the tool name reinforces its purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second sentence gives explicit usage guidance: fetch this before asking questions if you want to inspect context, since knowledge_base_ids are needed by agent tools. This tells the agent when to use the tool (as a prerequisite) and why, even though it doesn't name specific alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pipeline_sqlA
Read a pipeline's saved SQL and visual pipeline graph. Defaults to the active version.
| Name | Required | Description | Default |
|---|---|---|---|
| version_id | No | ||
| pipeline_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of disclosing behavioral traits. It states the default behavior of using the active version when version_id is null, which is useful. However, it does not mention error handling, permissions, or other side effects, but for a read operation this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded, with two sentences containing only essential information. Every word earns its place, and it avoids redundancy with the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool is a simple read operation with an output schema available, the description is sufficiently complete. It explains what is read and the default version behavior, which covers the main contextual needs. It does not over-explain, relying on the output schema for return structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, so the description must compensate. It adds meaning for version_id by explaining the default behavior, and pipeline_id is implied as the pipeline identifier. However, it does not explicitly name or describe the parameters, leaving some ambiguity about their exact roles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool 'Read[s] a pipeline's saved SQL and visual pipeline graph', using a specific verb and resource. It differentiates from siblings like save_pipeline_sql (write) and generate_pipeline_sql (create) by focusing on reading the saved artifacts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by indicating it reads the saved SQL and graph, but does not explicitly state when to use this tool versus alternatives like generate_pipeline_sql or list_pipelines. The 'Defaults to the active version' note provides some context, but no explicit when/when-not or alternative guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sourceB
Full detail for one source, including its connection config (secrets masked).
| Name | Required | Description | Default |
|---|---|---|---|
| source_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that connection config is included with secrets masked, which is a useful behavioral trait. However, with no annotations, it falls short of disclosing other behaviors such as error handling, permission requirements, or whether it returns only the current state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the essential information and includes a useful caveat about secrets masking. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, output schema provided), the description is mostly sufficient: it states the tool retrieves full details and masks secrets. It could be improved by noting that source IDs are obtained from list_sources, but this is not a major gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema shows a single source_id string parameter, but the description does not explain how to obtain a valid source_id or its exact format. Schema descriptions are absent, and the description's mention of 'one source' only implicitly refers to the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Full detail for one source' clearly indicates this retrieves a single source's details, and the clarification 'including its connection config (secrets masked)' adds specificity. It distinguishes from list_sources by focusing on a single source, though it does not explicitly name the alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus list_sources or other source-related tools. The description simply states what the tool does without mentioning prerequisites or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_table_detailsA
Table descriptions and column-level detail for one or more tables.
Batches - pass several table names in one call. include_profiles adds full profiling stats, which are large.
Paged over table_names: read has_more and pass page=1, page=2, ... to continue.
page_size defaults to 25 with include_profiles=True and 200 without, because profiles run
about 5 KB per table and a bigger page is rejected by the client. Passing many table names is
fine - only one page of them is fetched and returned per call.
An empty columns list is an ordinary state meaning enrichment has not run for that table.
It is not an error and not a signal that anything is wrong. In particular it says nothing
about SQL generated by the platform's agents, which read the source schema directly - do not
treat empty columns as a reason to distrust or flag generated SQL.
This tool is for exploring a schema. It is not a validation step for generated SQL; do not call it to check SQL before saving a pipeline.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| page_size | No | ||
| table_names | Yes | ||
| include_profiles | No | ||
| knowledge_base_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and excels. It discloses batching behavior, page_size defaults depending on include_profiles (25 vs 200) with the reason (5 KB per profile, client rejects bigger pages), pagination via has_more and page, and that only one page is fetched per call. It also explains that an empty columns list is a normal state, not an error, and explicitly warns against misinterpreting it as a signal about generated SQL.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but every sentence contributes essential operational detail. It is front-loaded with purpose, then moves through batching, paging, page_size logic, empty-columns semantics, and finally usage boundaries. No sentence is redundant or filler; the structure is logical and easy to navigate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity and the presence of an output schema, the description covers all major behavioral aspects: batching, pagination, size trade-offs, and common error conditions (empty columns). It also addresses the critical misuse case (validation of generated SQL). The only missing piece is knowledge_base_id semantics, but overall it is thorough enough for an agent to use it correctly in most scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains table_names (pass several table names), include_profiles (adds large profiling stats and affects page_size), page (pagination continuation), and page_size (defaults based on include_profiles). However, knowledge_base_id, a required parameter, is never mentioned or described, leaving a significant gap in understanding how to invoke the tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific statement: 'Table descriptions and column-level detail for one or more tables.' This clearly identifies the verb (get details), resource (tables), and scope (one or more). It also distinguishes from siblings by stating it is 'for exploring a schema' and explicitly not for validation of generated SQL, a clear contrast with tools like generate_pipeline_sql and get_pipeline_sql.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context: 'This tool is for exploring a schema' and an explicit when-not: 'It is not a validation step for generated SQL; do not call it to check SQL before saving a pipeline.' It also provides guidance on batching and include_profiles. However, it does not name alternative tools to use for validation or other schema exploration tasks, so it stops short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_table_relationshipsC
Discovered foreign-key style relationships between tables in a knowledge base.
| Name | Required | Description | Default |
|---|---|---|---|
| knowledge_base_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral transparency. It states the tool returns discovered foreign-key relationships, implying a read-only operation, but it does not disclose whether the discovery involves computation, caching, or any side effects. No details about result limits or behavior are provided.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence with no filler or redundant information. It gets straight to the point and is easy to read.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is low-complexity with one parameter and no output schema, but the description is still quite minimal. It does not explain the structure of the response, whether the relationships are exhaustive, or what 'discovered' means operationally. For a simple getter, this is borderline sufficient, but it leaves some contextual gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one required parameter, knowledge_base_id, with no description (0% schema coverage). The description only mentions 'in a knowledge base,' which weakly ties the parameter to its role but does not explain its format, uniqueness, or how to obtain its value. This adds minimal semantic value beyond the parameter name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool provides discovered foreign-key style relationships between tables within a knowledge base. This distinguishes it from sibling tools like get_table_details or list_kb_tables, which focus on individual tables. However, the phrase 'Discovered' is a past-participle and lacks an imperative verb, making it slightly less direct than an explicit 'Get' or 'List'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No usage guidance is provided. The description does not mention when to use this tool versus alternatives, nor does it specify prerequisites or typical scenarios. There are no exclusions or alternative tool references.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_and_waitA
Import a source's metadata into a knowledge base and wait for it to finish.
Convenience wrapper over import_source_metadata + get_ingestion_task. Returns the knowledge_base_id and the final status; if it is still running when timeout_s elapses the import continues server-side and you can keep polling get_ingestion_task.
Writes embeddings into destination_id, so use a destination you own.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| source_id | Yes | ||
| timeout_s | No | ||
| description | No | ||
| table_names | Yes | ||
| source_schema | Yes | ||
| destination_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well. It discloses blocking behavior (waits for completion), timeout semantics (continues server-side after timeout_s), return values (knowledge_base_id and final status), and a side effect (writes embeddings into destination_id), plus a caution about ownership.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loaded with the core purpose, and each of the three short paragraphs adds new information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's behavior, timeout, side effects, and ownership, and the output schema presumably documents return values. However, the lack of parameter semantics for key required fields leaves the description incomplete for confident tool invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only timeout_s and destination_id are given explicit meaning in the description. Other required parameters such as name, source_schema, and table_names are not described, and with 0% schema description coverage the agent has insufficient guidance for correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it imports a source's metadata into a knowledge base and waits for it to finish. It explicitly identifies itself as a convenience wrapper over import_source_metadata + get_ingestion_task, distinguishing it from those sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly names the underlying tools and explains this is a convenience wrapper, providing an alternative to using them separately. It also advises using a destination you own and mentions polling get_ingestion_task if the import continues after timeout, guiding when to use this tool vs the lower-level APIs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_source_metadataA
Crawl a source's metadata into a new knowledge base.
Asynchronous: returns a task_id plus the new knowledge_base_id. Poll with get_ingestion_task. destination_id is required - get one from list_destinations. This writes embeddings into that destination, so pick a destination you own.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| source_id | Yes | ||
| description | No | ||
| table_names | Yes | ||
| source_schema | Yes | ||
| destination_id | Yes | ||
| profiling_enabled | No | ||
| auto_generate_dictionary | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the tool is asynchronous, returns task_id and knowledge_base_id, writes embeddings into the destination, and requires an owned destination. This adds meaningful behavioral context beyond the schema fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three concise sentences, front-loaded with the main purpose, followed by essential async details. Every sentence adds value with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the async workflow and destination ownership, but with eight parameters and no schema descriptions, it leaves important gaps (e.g., what source_schema expects, what table_names should contain, how profiling_enabled/auto_generate_dictionary affect behavior). An output schema exists, so return values are covered, but parameter-level guidance is incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It only explains destination_id in detail ('get one from list_destinations', 'writes embeddings'). Other required parameters like source_schema and table_names are not described, leaving the agent to infer their meaning from names alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Crawl a source's metadata into a new knowledge base.' It identifies the resource (source metadata), the target (new knowledge base), and distinguishes this from sibling tools by highlighting its asynchronous nature and return of task_id and knowledge_base_id.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides concrete usage guidance: explains the asynchronous workflow, tells the agent to poll with get_ingestion_task, requires destination_id from list_destinations, and warns to choose a destination the agent owns. It does not explicitly name alternatives like import_and_wait, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_available_tablesA
List the tables a source exposes, before importing any of them.
This is the Import Source table picker - use it to choose what to ingest.
| Name | Required | Description | Default |
|---|---|---|---|
| source_id | Yes | ||
| source_schema | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that this is a pre-import operation ('before importing any of them'), implying no side effects. It doesn't detail return format or error behavior, but the output schema exists and the read-only nature is clear from 'List'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the action verb, and contains no filler. Every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (2 params, output schema present), the description covers the core purpose and usage context sufficiently. It lacks mentions of prerequisites like source existence, but the overall import workflow context is clear from 'Import Source table picker'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not mention source_id or source_schema by name or explain their meaning. 'source' is referenced generically, but source_schema is entirely omitted, leaving the agent guessing about that parameter's role.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and resource ('tables a source exposes') and clarifies the temporal scope ('before importing any of them'). It distinguishes itself from sibling tools like list_sources (which lists sources) and discover_tables by positioning as the 'Import Source table picker'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use it: 'use it to choose what to ingest', and calls it the 'Import Source table picker'. It gives clear context for the import workflow, though it does not explicitly mention alternatives or exclusions, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_connector_typesA
The connector engines this platform supports.
There is no server endpoint for this; the list is fixed in the frontend.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of behavioral disclosure. It clearly reveals that there is no server endpoint and the list is fixed in the frontend, which informs the agent that this operation is static and likely non-hazardous. This adds meaningful context beyond the empty schema, though it does not describe return structure (covered by output schema).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences, front-loaded with the core purpose and followed by a clarifying note. Every word earns its place; no filler or repetition. It is an excellent model of concise tool documentation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, parameterless tool with an output schema, the description fully explains the unique behavior (static list, no server call). It is complete and sufficient for an agent to know what to expect. The siblings are numerous but the description clearly distinguishes this as a fixed enumeration tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool accepts zero parameters, and the schema coverage is 100% (empty schema). Per the baseline for zero parameters, the description need not compensate for missing parameter documentation. The description adds no parameter details, which is appropriate given there are none.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the resource: "The connector engines this platform supports." It distinguishes the tool from siblings like list_sources and list_destinations by focusing on engine types. Though it lacks an explicit verb like "list", the tool name and noun phrase make the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by noting this is a static, frontend-fixed list with no server endpoint. However, it does not explicitly contrast with alternative tools or state when to choose this over list_sources or list_destinations. The guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_destinationsA
List destinations - the vector stores or warehouses that ingestion writes into.
Needed to pick a destination_id for import_source_metadata.
Paged: read has_more and total, and pass page=1, page=2, ... to continue.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| page_size | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral transparency burden. It discloses pagination behavior ('read has_more and total, pass page=1, page=2...'), which is useful. However, it does not explicitly state that the operation is read-only or mention any other behavioral aspects like permissions or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences: the first states the purpose, the second gives a use case, and the third explains pagination. Every sentence adds value, with no waste or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (2 optional parameters) and an output schema exists, so the description doesn't need to describe return values. It covers purpose, use case, and pagination adequately. While it doesn't mention error handling, that is less critical for a straightforward list operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, so the description compensates by explaining the pagination pattern. It clarifies that 'page' is used to continue through pages and mentions reading 'has_more' and 'total', giving meaning beyond the bare integer parameters in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function with a specific verb and resource: 'List destinations'. It further defines what destinations are ('vector stores or warehouses that ingestion writes into'), which distinguishes it from sibling tools like list_sources and list_knowledge_bases.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an explicit use case: 'Needed to pick a destination_id for import_source_metadata.' This tells the agent when to use the tool. It also provides pagination instructions, though it does not explicitly mention when not to use it or name alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_golden_sqlA
List the Golden SQL examples attached to a knowledge base.
Paged: read has_more and total, and pass page=1, page=2, ... to continue.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| page_size | No | ||
| knowledge_base_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the pagination behavior and the read-only nature of the operation. It doesn't mention any side effects or permissions, but for a list tool this is acceptable. The pagination details add meaningful behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose, and the pagination guidance is concise. Every sentence earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a list tool with an output schema, the description covers the primary purpose and the non-obvious pagination behavior. It doesn't explain response fields, but the output schema covers that. It lacks a note about default page behavior, but overall it's complete enough for a simple listing tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains the 'page' parameter usage via pagination instructions, but doesn't explain 'page_size' or the exact meaning/format of 'knowledge_base_id'. Partial compensation, but not complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'List' with a clear resource 'Golden SQL examples' and scope 'attached to a knowledge base'. This clearly distinguishes it from sibling tools like add_golden_sql and delete_golden_sql.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit pagination usage instructions (read has_more/total, pass page=1,2,...). It doesn't explicitly name alternatives or when-not-to-use, but the list operation's purpose is self-evident in context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_kb_tablesA
List the tables inside a knowledge base, one page at a time.
Paged: read has_more and total, and pass page=1, page=2, ... to continue.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| page_size | No | ||
| knowledge_base_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full transparency burden. It discloses the paged nature of the response and instructs reading has_more/total and incrementing page, but does not mention permissions, error behavior, or other side effects. The read-only nature is only implied by the verb 'list'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only two sentences, with no filler. The first sentence states the core purpose, and the second concisely explains the pagination contract.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a simple list operation with an output schema. The description provides the essential purpose and pagination behavior, which is sufficient given the schema handles parameter details. It does not over-explain but could be slightly more complete by noting that knowledge_base_id is required, though the schema already marks it required.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It explains the page parameter's role in pagination, but leaves page_size and knowledge_base_id without explicit descriptions beyond their names. The pagination mechanism adds value for page and implicitly for has_more/total.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool 'List the tables inside a knowledge base' with a specific verb and resource, clearly distinguishing it from siblings like list_knowledge_bases and list_available_tables.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used to enumerate tables within a specific knowledge base, but provides no explicit comparison to alternatives like list_available_tables or discover_tables. The pagination guidance gives a how-to but not a when-to.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_knowledge_basesA
List knowledge bases (KBs) - the metadata imported via Data Ingestion, one page at a time.
Each row links a KB to its source, so use this to go from a source name to a knowledge_base_id. status SUCCESS means metadata was crawled successfully.
Paged, and this is the big one: a deployment can hold thousands of KBs. Read total and
has_more, then pass page=1, page=2, ... to walk it. page_size is capped at 500 - asking
for more does not return more, and requesting the whole collection at once is what breaks the
client's 1 MB response limit. To find one specific KB, prefer paging until you match it over
trying to pull everything at once.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| page_size | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for behavioral disclosure. It goes beyond a basic listing by explaining pagination mechanics ('Read total and has_more, then pass page=1, page=2'), the page_size cap ('capped at 500'), the risk of breaking the 1 MB response limit, and the meaning of status SUCCESS. This provides rich contextual behavior beyond what annotations would typically convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and then expands into pagination details, limits, and usage recommendations. Each sentence contributes critical operational information, and the paragraph break improves readability. Although it is longer than a simple one-liner, the extra length is warranted by the paging complexity and does not contain fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's paging complexity and the presence of an output schema, the description is highly complete. It covers the use case, pagination walk-through, page_size cap, response limit risk, and status field semantics. It does not need to describe return values because an output schema is provided. For a two-parameter paged list endpoint, this description leaves no major gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, so the description must add meaning to the parameters. It explains that page is used for pagination ('pass page=1, page=2, ...') and that page_size has a cap ('page_size is capped at 500 - asking for more does not return more'). While this adds significant value, the default page=0 (from the schema) is not reconciled with the 'page=1, page=2' guidance, leaving slight ambiguity about the starting index.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'List knowledge bases (KBs) - the metadata imported via Data Ingestion, one page at a time,' which clearly identifies the action and resource. It also explains that each row links a KB to its source, differentiating it from sibling tools like list_sources and list_kb_tables. This is a specific verb+resource with clear distinction from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use the tool: 'use this to go from a source name to a knowledge_base_id.' It also provides usage guidance on pagination and recommends paging to find a specific KB rather than pulling everything at once. However, it does not explicitly mention alternative tools for scenarios where this tool should not be used, so it lacks explicit when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_knowledge_clustersA
List knowledge clusters (KCs) - the groupings of knowledge bases used by the agents.
Paged: read has_more and total, and pass page=1, page=2, ... to continue.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| page_size | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It adds value by revealing pagination behavior: the response includes `has_more` and `total`, and the `page` parameter is used to iterate. This goes beyond the schema. However, it does not disclose potential edge cases (e.g., page indexing default of 0 vs. the description suggesting 1-based pagination), which is a minor gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: the first sentence states the purpose, and the second provides essential pagination guidance. Every sentence adds value with no redundancy or filler. It is appropriately sized for a simple list tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list operation, the description is quite complete: it defines the resource, gives pagination details, and references the response fields (`has_more`, `total`). An output schema exists, so detailing return values is unnecessary. However, the inconsistency between the default `page=0` and the described `page=1` page numbering could confuse an agent, preventing a perfect score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides only names, defaults, and types for `page` and `page_size` with 0% description coverage. The description adds semantics for the `page` parameter by showing how to use it in pagination ('pass page=1, page=2, ...'), but it does not explain `page_size` or its relationship to pagination. The explanation partially compensates for the schema gap, but is incomplete for both parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function with a specific verb and resource: 'List knowledge clusters (KCs)'. It also explains what KCs are ('the groupings of knowledge bases used by the agents'), which distinguishes it from the sibling tools like list_knowledge_bases (lists bases, not clusters) and get_knowledge_cluster (fetches a single cluster). This leaves no ambiguity about the tool's purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use this tool (when you need a list of knowledge clusters) and includes practical pagination instructions ('pass page=1, page=2, ... to continue'). It does not explicitly mention alternatives or when not to use it, but the context and purpose are clear enough for an agent to select this tool appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_pipelinesA
List data pipelines, optionally only those in one knowledge cluster.
Paged: read has_more and total, and pass page=1, page=2, ... to continue.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| page_size | No | ||
| knowledge_cluster_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
It discloses pagination behavior by instructing the agent to read has_more and total and pass page numbers, which is valuable behavioral context. No annotations are provided, so this detail helps, though it could mention more about authentication or response format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two succinct sentences, front-loading the core purpose and then adding the pagination detail. Every word earns its place, with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, return values are covered. The description adds filter and pagination details, making it fairly complete for a list tool. It lacks explicit mention of ordering or potential edge cases, but is adequate for the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains knowledge_cluster_id as an optional filter and hints at the page parameter syntax, but it does not explain page_size or the default page=0, and there's a slight inconsistency with examples using page=1. With 0% schema coverage, the description partially compensates but not fully.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List data pipelines' with an optional filter by knowledge cluster, using a specific verb and resource. This distinguishes it from sibling tools like list_sources and list_destinations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool (when you need to list pipelines) and provides a specific use case with the optional cluster filter. However, it does not explicitly name alternatives or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_sourcesA
List configured data sources (source connections), one page at a time.
source_type: RELATIONAL_DB (default), DOCUMENT, CONVERSATION, NOSQL, or "" for all. Returns source_id (usable everywhere a source id is needed), name, engine type, and the account/database/schema so you can tell which sources can share a knowledge cluster.
Paged: read has_more and total, and pass page=1, page=2, ... to continue. Deployments
hold hundreds of sources, so never assume one page is all of them. page_size is capped at
500 because a larger response is rejected by the client.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| page_size | No | ||
| source_type | No | RELATIONAL_DB |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses paging behavior (has_more/total, page increments), page_size cap (500), and return fields (source_id, name, engine type, account/database/schema). It also notes the default for source_type and the meaning of empty string.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise paragraphs each serve a distinct purpose: overview, source_type parameter, and paging mechanics. No filler, clear organization, and front-loaded purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists, the description does not need to detail return values. It covers paging, parameter semantics, and the key decision of which sources can share a knowledge cluster. The page_size cap warning is valuable contextual completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has no parameter descriptions (0% coverage). The description compensates by explaining source_type values and default, page usage for continuation, and page_size cap. This adds essential meaning beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action with a resource: 'List configured data sources (source connections)'. It clearly distinguishes from siblings like get_source (single source) and create_* tools, and clarifies one-page-at-a-time semantics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context for use: helps identify which sources can share a knowledge cluster, and warns not to assume one page is all. However, it does not explicitly name alternative tools or when-not-to-use scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_pipeline_sqlA
Save SQL and/or the visual pipeline graph onto a pipeline version. Write-only.
This is a plain write. Do NOT do any of the following around it:
do not validate or lint the SQL, or check it against table metadata
do not call get_table_details, list_kb_tables or get_table_relationships first
do not reformat, re-indent, re-qualify or otherwise edit the SQL
do not restate or summarise the SQL afterwards
Pass the sql and graph from approve_table_selection through byte-for-byte. The SQL comes
from the platform's own engineering agent and is already validated against the knowledge
cluster's metadata.
Returns a compact receipt - saved flag, byte count, graph node count, version - and deliberately not the SQL body. Confirm the receipt in one line and stop. Use get_pipeline_sql only if the SQL itself is genuinely needed later.
Partial update: passing only sql leaves an existing graph untouched.
| Name | Required | Description | Default |
|---|---|---|---|
| sql | No | ||
| graph | No | ||
| version_id | Yes | ||
| pipeline_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully carries the behavioral disclosure burden. It discloses that this is a plain write, that the SQL is already validated, that the return is a compact receipt deliberately excluding the SQL body, and that passing only sql leaves the graph untouched. This goes beyond minimal disclosure and is highly transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear purpose, a bullet list of negative instructions, and a section on return behavior. Each sentence adds value, and the formatting makes the critical warnings and usage guidance easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (write-only, partial update, integration with approve_table_selection), the description is complete. It covers the input source, the exact behavior, the return receipt, and the stop-after-confirm instruction. The presence of an output schema means return details need not be fully expounded, and the description still mentions the receipt contents.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds meaning for sql and graph by specifying they come from approve_table_selection and must be passed byte-for-byte, and it explains partial update semantics. However, pipeline_id and version_id are not explicitly described, though their meaning is inferable from context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool saves SQL and/or the visual pipeline graph onto a pipeline version, a specific verb+resource combination. It distinguishes from siblings like get_pipeline_sql and generate_pipeline_sql by emphasizing the write-only nature and the 'save' action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use guidance: it says to use get_pipeline_sql only if the SQL itself is genuinely needed later, and it lists explicit "do NOT" actions to avoid before/after the save. It also clarifies the partial update behavior, giving complete usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_kb_instructionsA
Overwrite the active instructions on a knowledge base. Replaces, does not append.
| Name | Required | Description | Default |
|---|---|---|---|
| instructions | Yes | ||
| knowledge_base_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the burden of disclosing behavior. It does disclose the key behavior that this overwrite replaces rather than appends, which is useful. However, it does not mention irreversibility, permission requirements, or any side effects on active instructions, which would be important for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short, direct sentences that front-load the primary action and resource. Every word earns its place, and it avoids repetition of schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with only two parameters and an output schema, the description covers the core purpose and the key behavioral nuance (replace vs. append). However, it lacks guidance on prerequisites, reversibility, or relationship to sibling tools, leaving some context gaps for a mutation operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not add meaning to the parameters beyond what the input schema already shows. The parameter names 'knowledge_base_id' and 'instructions' are self-explanatory, but no formats, examples, or constraints are given.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Overwrite' and identifies the resource as 'the active instructions on a knowledge base.' It also explicitly notes the behavior 'Replaces, does not append,' which distinguishes it from append-style tools and makes the purpose unambiguous relative to siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool should be used when one needs to replace knowledge base instructions, but it provides no explicit when-to-use or when-not-to-use guidance and does not mention alternatives such as get_kb_instructions or update_kc_instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_kc_instructionsA
Overwrite a knowledge cluster's active instructions. Replaces, does not append.
High leverage: these instructions steer the SQL the Data Engineering agent generates - grain, dedup keys, null handling, dialect, idempotency. Verified to change the output.
| Name | Required | Description | Default |
|---|---|---|---|
| instructions | Yes | ||
| knowledge_cluster_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden and explicitly discloses the destructive/replacing behavior ('Replaces, does not append') and the observable effect ('Verified to change the output'). This is strong behavioral disclosure, though it omits permission requirements or error scenarios.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences in the first paragraph state the purpose and key behavioral distinction; the second paragraph adds valuable domain context. No filler or repetition, making it highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter update tool, the description covers what is overwritten, that it replaces rather than appends, and why it matters. Since an output schema exists, return value details are not required. A mention of idempotency or prerequisites would round it out, but the current content is largely sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description adds meaning to 'instructions' by explaining they control SQL generation (grain, dedup keys, etc.), which goes beyond the bare field name. However, it provides no additional detail about the format or constraints of either parameter, and knowledge_cluster_id is only implicitly identified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Overwrite') and resource ('knowledge cluster's active instructions'), and clearly states 'Replaces, does not append' to distinguish from append-style updates. It differentiates from sibling tools like update_kb_instructions by targeting a knowledge cluster rather than a knowledge base.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context for when to use: it is 'high leverage' and steers the SQL generated by the Data Engineering agent, with concrete impact areas (grain, dedup keys, null handling, dialect, idempotency). It does not explicitly name alternatives or exclusions, but the context strongly implies its purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
whoamiA
Confirm connectivity and show which environment, tenant, and user are in play.
Call this first in a session. Everything is environment-specific - hosts, ids, how much data exists - so never assume which deployment you are pointed at; the backend_url identifies it.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of disclosure. It explains the tool's behavior (connectivity check, reveals environment/tenant/user) and adds context about the backend_url identifying the deployment. It does not mention side effects, but none are expected for a whoami-style tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose, followed by actionable guidance. Every sentence adds value, with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters, an output schema exists, and the description covers purpose and usage context, it is complete for an agent to correctly select and invoke this tool. The environment-specific warning adds essential operational context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the description is not required to explain parameter details. A baseline of 4 is appropriate because there is nothing to clarify beyond the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('Confirm', 'show') and resources ('connectivity', 'environment, tenant, and user'). This distinguishes it from all sibling tools, which focus on data operations, making the purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly instructs 'Call this first in a session' and provides a strong rationale (everything is environment-specific, never assume deployment). This gives clear when-to-use guidance, and no alternatives are needed since the tool is uniquely foundational.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
36 tool updates
v0.1.0- First observed
add_golden_sql - First observed
approve_table_selection - First observed
ask_data_analyst - First observed
check_kc_federation - First observed
create_knowledge_cluster - First observed
create_pipeline - First observed
create_postgres_source - First observed
create_snowflake_source - First observed
delete_golden_sql - First observed
delete_knowledge_cluster - First observed
delete_pipeline - First observed
discover_tables - First observed
generate_pipeline_sql - First observed
get_ingestion_task - First observed
get_kb_instructions - First observed
get_kc_instructions - First observed
get_knowledge_cluster - First observed
get_pipeline_sql - First observed
get_source - First observed
get_table_details - First observed
get_table_relationships - First observed
import_and_wait - First observed
import_source_metadata - First observed
list_available_tables - First observed
list_connector_types - First observed
list_destinations - First observed
list_golden_sql - First observed
list_kb_tables - First observed
list_knowledge_bases - First observed
list_knowledge_clusters - First observed
list_pipelines - First observed
list_sources - First observed
save_pipeline_sql - First observed
update_kb_instructions - First observed
update_kc_instructions - First observed
whoami
TDQS
Most tools have clearly distinct purposes. The only potential confusion is between import_source_metadata and import_and_wait, and among list_available_tables, list_kb_tables, and discover_tables, but their descriptions clarify the different stages. Overall, an agent can reliably select the right tool.
Tool names overwhelmingly follow a consistent verb_noun pattern with clear prefixes like list_, get_, create_, update_, delete_. The use of KB/KC abbreviations is consistent within entities. The only outlier is whoami, but it's a standard connectivity check and doesn't break the pattern.
36 tools is excessively high for a coherent MCP surface, exceeding the 25-tool threshold. The server bundles multiple subdomains (sources, destinations, KBs, KCs, pipelines, agents) into one toolset, which would be better split into focused servers.
The toolset covers the core ingestion-to-pipeline workflow well, including source listing, import, KB/KC management, and SQL generation. However, there are notable gaps: no update or delete for sources, no direct KB delete, no destination creation, and no pipeline execution/trigger tool. This creates dead ends for lifecycle management.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Hosted MCP server for AI-driven data ops. Create apps, manage schemas, and CRUD structured data.
MCP server for Product Management
MCP server exposing the Backtest360 engine API as tools for AI agents.
Jepto MCP server that provides access to client knowledgebase & analytics for connected data sources
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceMCP Server for interacting with Cube semantic layers that provides tools for querying and describing data from Cube deployments.15GPL 3.0
- AlicenseNot gradedqualityDmaintenanceMCP server for integrating with Bika.ai platform, enabling AI assistants to perform CRUD operations on databases, manage attachments, and utilize automation and webhooks.1MIT
- AlicenseNot gradedqualityCmaintenanceMCP server for cinematic context platform, enabling video asset management, lineage tracing, and pipeline orchestration via DataHub.Apache 2.0
- AlicenseNot gradedqualityAmaintenanceMCP server that enables AI agents to search, fetch, and analyze a self-maintaining markdown knowledge base with provenance, drift detection, and canonical definitions.MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/prepmonk/baic-dl-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server