deepset-mcp
OfficialThis server lets AI agents manage and operate the deepset Haystack Enterprise Platform—building, validating, debugging, deploying, and searching with pipelines, indexes, and related resources.
Manage workspaces: list, fetch, and create workspaces.
Manage pipelines: create, list, fetch, version, validate, deploy, patch, restore, and debug pipeline configurations.
Manage indexes: create, list, fetch, validate, update, and deploy indexes.
Search with pipelines: run queries against deployed pipelines, with optional filters and custom params.
Inspect run history: list search history and pipeline traces, retrieve trace spans, span tags, and logs for debugging.
Work with Haystack components: search and get component definitions, run individual components, list component families, and manage custom components and their installation logs.
Use templates: search, list, and fetch pipeline/indexing templates.
Explore platform resources: list and get available models, list and get secrets.
Get help: search official deepset documentation and load bundled skill guides for custom component/tool development.
Manipulate stored results: use object-store tools to fetch, slice, grep, sed, and jq-query objects returned by other tools.
Click on "Deploy 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., "@deepset-mcpCreate a new pipeline for document search"
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.
deepset-mcp
The official MCP server and Python SDK for the Haystack Enterprise Platform
deepset-mcp enables AI agents to build and debug pipelines on the Haystack Enterprise Platform through 45+ specialized tools. It also provides a Python SDK for programmatic access to many platform resources.
Documentation
Related MCP server: mcp-dagster
Quick Links
Development
Installation
Install the project using uv:
# Install uv first
pipx install uv
# Install project with all dependencies
uv sync --locked --all-extras --all-groupsLocal Development
If you want to test your changes locally, follow these steps:
Add a script run-deepset-mcp.sh that uses the binary from the project's virtual env
#!/usr/bin/env bash
# Wrapper to run the local deepset-mcp server for Cursor MCP.
# Use this as command so it doesn't depend on uv or PATH.
set -e
cd "$(dirname "$0")"
exec .venv/bin/deepset-mcpUse it this way in Cursor:
"deepset": {
"command": "/bin/bash",
"args": ["/Users/*****/****/deepset-mcp-server/run-deepset-mcp.sh"],
"cwd": "/Users/*****/****/deepset-mcp-server",
"env": {
"DEEPSET_WORKSPACE": "WORKSPACE",
"DEEPSET_API_KEY": "API_KEY"
}
}Note: If you change the codebase, make sure to restart the MCP server.
Code Quality & Testing
Run code quality checks and tests using the Makefile:
# Install dependencies
make install
# Code quality
make lint # Run ruff linting
make format # Format code with ruff
make types # Run mypy type checking
# Testing
make test # Run unit tests (default)
make test-unit # Run unit tests only
make test-integration # Run integration tests
make test-all # Run all tests
# Clean up
make clean # Remove cache filesDocumentation
Documentation is built using MkDocs with the Material theme:
Configuration:
mkdocs.ymlContent:
docs/directoryAuto-generated API docs via mkdocstrings
Deployed via GitHub Pages (automated via GitHub Actions on push to main branch)
Available Tools
83 toolsactivate_deploymentB
Re-activates a deployment's current active revision, marking it as desired to be served.
Use this to bring a deactivated deployment back online without pushing a new revision. :param deployment_id: ID of the deployment. :returns: The updated deployment or error message.
The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
| deployment_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. It does disclose the effective side effect ('marking it as desired to be served') and that it avoids a new revision, plus the return shape, but is silent on permissions/authorization, idempotency, and reversibility for what is a mutation.
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 core purpose and usage are front-loaded in the first two sentences. The remainder is repetitive object-store boilerplate ('The output is automatically stored...', 'Use the returned object ID...') that restates the same idea multiple times and dilutes the signal.
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?
It covers purpose, usage, and return handling, but with no annotations and no output schema it should do more: it omits auth requirements and, importantly, fails to disambiguate from the sibling 'activate_deployment_revision', which is the biggest risk for this 1-param mutation 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 for the single required parameter. ':param deployment_id: ID of the deployment.' merely restates the schema title ('Deployment Id') and adds no format, identifier source, or lookup guidance.
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?
States a specific verb and resource ('Re-activates a deployment's current active revision') and even scopes it as the current active revision without pushing a new one. However, it never acknowledges or distinguishes itself from the near-identical sibling 'activate_deployment_revision', which an agent selecting between the two would need.
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?
Explicitly states when to use it: 'to bring a deactivated deployment back online without pushing a new revision', which contrasts with a revision-pushing flow. No explicit when-not or named alternatives (e.g., deactivate_deployment, update_deployment) are offered, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
activate_deployment_revisionB
Activates a revision, marking it as the deployment's desired served revision. :param deployment_id: ID of the deployment. :param revision_id: ID of the revision to activate. :returns: The updated deployment or error message.
The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
| revision_id | Yes | ||
| deployment_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. It usefully discloses the return path (object ID like @obj_123 and object-store interaction), but for a mutation it omits key traits: whether activating replaces the currently served revision, required permissions, and reversibility/downtime implications.
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 purpose is front-loaded and the docstring params are compact, but the trailing block about the object store is repetitive ('object ID' repeated across three sentences) and bloats the definition with shared boilerplate.
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 two-param mutation with no annotations and no output schema, the definition covers the return/object-store behavior but leaves important gaps: effect on the currently served revision, auth requirements, and failure semantics. Adequate but 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 is the only source of parameter meaning. It identifies both params ('ID of the deployment', 'ID of the revision to activate'), but these are near-tautological restatements of the names and add no format, constraint, or lookup detail.
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?
States a specific verb (activates) and resource (revision) plus a concrete effect: 'marking it as the deployment's desired served revision.' This distinguishes it from the sibling activate_deployment (which targets a deployment, not a revision), though no sibling is named explicitly.
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?
There is no when-to-use guidance, no prerequisites, and no reference to alternatives such as activate_deployment or create_deployment_revision. The agent must infer the calling context from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_deployment_tagB
Adds a tag to a deployment. Each deployment supports at most three tags. :param deployment_id: ID of the deployment. :param tag_name: Tag to add (1-50 characters; letters, digits, spaces, underscores, hyphens). :returns: The deployment's full tag list after the add, or error message.
The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
| tag_name | Yes | ||
| deployment_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It usefully states the maximum tag count (three), the tag_name validation rules, and the return shape ('full tag list after the add, or error message'). However, it omits permissions/auth requirements, idempotency behavior for duplicate tags, and reversibility.
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 core content is front-loaded reasonably well: purpose, limit, parameter notes, and return value. However, the trailing paragraphs about automatic object storage, preview object IDs, and object store tools are generic boilerplate that does not clearly earn its place for a simple tag-adding tool and adds noise.
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 mutation tool with no annotations or output schema, the description is fairly complete: it states what the tool does, the input constraints, the return value, and a deployment-level limit. It still lacks auth, error-condition, and duplicate-tag behavior, but covers the essentials an agent needs to call it.
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, and it largely does. It explains that deployment_id is the ID of the deployment and gives concrete character and length constraints for tag_name. It could go further by indicating where deployment_id comes from, but it meaningfully documents 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 first sentence states a specific verb and resource: 'Adds a tag to a deployment.' It distinguishes the action from sibling tools like delete_deployment_tag and list_deployment_tags implicitly through the verb 'Adds.' However, it does not explicitly name or contrast against those siblings, so it falls just short of a 5.
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 when-to-use guidance, no alternatives, and no exclusions. The hard constraint of at most three tags is useful context but is a limitation, not usage direction. An agent is left to infer that this tool should be used whenever a tag needs to be added.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_deploymentA
Creates a new deployment (AI Gateway), optionally linked to a pipeline.
A deployment created without an origin_pipeline_id has no active revision until you call
create_deployment_revision and activate_deployment_revision. Default service sizing follows
Development unless explicit sizing fields are provided.
:param name: Name of the deployment.
:param description: Optional description.
:param group_label: Optional label used to group related deployments.
:param origin_pipeline_id: ID of the platform pipeline to link, if any.
:param deployment_mode: Execution mode, "MANAGED" or "SERVERLESS" (default "MANAGED").
:param service_level: Sizing tier, "PRODUCTION", "DEVELOPMENT", or "CUSTOM" (default "DEVELOPMENT").
:param idle_timeout_in_seconds: Seconds of inactivity before scaling down.
:param min_query_replica_count: Minimum number of query replicas.
:param max_query_replica_count: Maximum number of query replicas.
:param max_index_replica_count: Maximum number of index replicas.
:param cpu_request: Requested CPU per replica.
:param cpu_limit: CPU limit per replica.
:param memory_request: Requested memory per replica.
:param memory_limit: Memory limit per replica.
:param gpu_limit_gigabyte: GPU memory limit in gigabytes.
:returns: The created deployment or error message.
All parameters accept object references in the form @obj_id or @obj_id.path.to.value.
Examples::
# Direct call with values
create_deployment(data={'key': 'value'}, threshold=10)
# Call with references
create_deployment(data='@obj_123', threshold='@obj_456.config.threshold')
# Mixed call
create_deployment(data='@obj_123.items', threshold=10)The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| cpu_limit | No | ||
| cpu_request | No | ||
| description | No | ||
| group_label | No | ||
| memory_limit | No | ||
| service_level | No | DEVELOPMENT | |
| memory_request | No | ||
| deployment_mode | No | MANAGED | |
| gpu_limit_gigabyte | No | ||
| origin_pipeline_id | No | ||
| idle_timeout_in_seconds | No | ||
| max_index_replica_count | No | ||
| max_query_replica_count | No | ||
| min_query_replica_count | No |
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 usefully discloses default behavior (sizing defaults to DEVELOPMENT unless explicit sizing fields are given), the post-creation state (no active revision without a pipeline), and that output is auto-stored and returned as an object ID. It says nothing about permissions/auth requirements, provisioning side effects, or costs, which are meaningful gaps for a create-a-resource operation.
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?
Purpose and the critical 'no active revision' caveat are front-loaded, and the param reference is justified by 15 undocumented params. However, the Examples block is generic boilerplate that references 'data' and 'threshold' – parameters that do not exist on create_deployment – which adds noise and potential confusion rather than 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?
For a 15-parameter mutation tool with no annotations and no output schema, the description is fairly complete: it covers parameter meaning, defaults, the revision workflow dependency, and the return/preview behavior (object ID usable with object store tools). It omits auth/permission prerequisites and any description of the created deployment's fields, but an agent has enough to invoke it correctly.
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, and it does: a full :param list documents all 15 parameters with semantics and defaults (e.g., idle_timeout_in_seconds as 'Seconds of inactivity before scaling down', the MANAGED/SERVERLESS and PRODUCTION/DEVELOPMENT/CUSTOM enums, and the @obj_id reference syntax). Some entries are near-tautological (e.g., 'Name of the deployment', 'Maximum number of index replicas'), keeping it out of the top score.
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 opening sentence gives a specific verb and resource ('Creates a new deployment (AI Gateway)') plus the scoping condition that it is optionally linked to a pipeline. An agent can distinguish this from siblings like create_deployment_revision, update_deployment, and deploy_pipeline. It stops short of explicitly naming which sibling to use in which situation.
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 explains the key branch: without an origin_pipeline_id the deployment has no active revision until create_deployment_revision and activate_deployment_revision are called, which effectively routes the agent to the follow-up tools. It lacks explicit exclusions or guidance on when not to use create_deployment, but the workflow context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_deployment_revisionA
Pushes a new revision onto a deployment, e.g. from a platform pipeline version.
Creating a revision does not serve it automatically; call activate_deployment_revision
to make it the deployment's served revision.
:param deployment_id: ID of the deployment.
:param comment: Comment describing the revision.
:param config_yaml: Inline pipeline configuration YAML, for an externally pushed revision.
:param source_version_id: ID of the source pipeline version, for a platform pipeline revision.
:param source_type: Where the revision's pipeline configuration comes from, "PLATFORM_PIPELINE"
(default) or "EXTERNAL_PIPELINE".
:returns: The newly created revision or error message.
All parameters accept object references in the form @obj_id or @obj_id.path.to.value.
Examples::
# Direct call with values
create_deployment_revision(data={'key': 'value'}, threshold=10)
# Call with references
create_deployment_revision(data='@obj_123', threshold='@obj_456.config.threshold')
# Mixed call
create_deployment_revision(data='@obj_123.items', threshold=10)The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
| comment | Yes | ||
| config_yaml | No | ||
| source_type | No | PLATFORM_PIPELINE | |
| deployment_id | Yes | ||
| source_version_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does well: it discloses that creation is non-serving and requires a separate activation step, and explains that the result is auto-stored and returned as a preview with an object ID. It omits permission/auth requirements, reversibility, and error conditions beyond a generic "or error message".
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 purpose and parameter notes are front-loaded and useful, but the description is padded with leaked Sphinx directives and a generic template block whose examples use parameters that do not exist on this tool (data, threshold). Those examples are actively misleading and do not earn their 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 5-param mutation tool with no annotations and no output schema, the description covers purpose, the activation prerequisite, per-parameter meaning, the object-reference convention, and the return shape. Missing pieces are edge behavior such as auth requirements and validation failures.
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, and it documents all five parameters including the source_type enum values and the situational role of config_yaml vs source_version_id. It also explains the @obj_id / @obj_id.path.to.value reference syntax, which the schema never mentions.
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?
States a specific verb and resource ("Pushes a new revision onto a deployment") and immediately scopes it against the sibling that serves revisions. An agent can distinguish it from activate_deployment_revision without opening the schema.
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?
Explicitly names the follow-up tool and the condition that selects it: creating a revision does not serve it, call activate_deployment_revision to serve it. No exclusions are given for when *not* to create a revision, so it stops short of a full when/when-not/alternatives statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_experimentA
Creates an Experiment that compares a candidate pipeline version against a baseline.
Both sides are scored by the same Metric Group over the test cases of one Dataset. The baseline
is either another pipeline version (give baseline_pipeline_name and
baseline_pipeline_version_id together) or Recorded (leave both unset): a Recorded baseline
reuses the Sessions each test case recorded, with nothing replayed. The candidate is always a
pipeline version that will be replayed on each test case.
Replaying runs the pipeline on the customer's models, so get a yes before creating when the
cost matters. sessions_per_test_case sets how many Sessions each side scores per test case
(1..50); existing Sessions on that version are reused and only the shortfall is replayed. Find
ids with list_metric_groups (metric groups) and list_experiments (an existing
Experiment's dataset_id). Read the running or finished Experiment with
get_experiment_results.
:param name: Human-readable name for the Experiment.
:param dataset_id: The Dataset's id (the UI's Dataset dropdown).
:param metric_group_id: The Metric Group id to score both sides with.
:param candidate_pipeline_name: Name of the candidate pipeline.
:param candidate_pipeline_version_id: The candidate pipeline version to replay.
:param baseline_pipeline_name: Baseline pipeline name; omit for a Recorded baseline.
:param baseline_pipeline_version_id: Baseline version id; required when baseline_pipeline_name is given.
:param sessions_per_test_case: Repetitions per test case (1..50, default 1).
:param replay_mode: FIRST_USER_MESSAGE replays the first turn only; ALL_USER_MESSAGES replays every turn.
:returns: The created Experiment, or an error message.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| dataset_id | Yes | ||
| replay_mode | No | FIRST_USER_MESSAGE | |
| metric_group_id | Yes | ||
| baseline_pipeline_name | No | ||
| sessions_per_test_case | No | ||
| candidate_pipeline_name | Yes | ||
| baseline_pipeline_version_id | No | ||
| candidate_pipeline_version_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 and does well: it warns that replaying runs on customer models and requires a "yes" before creating when cost matters. It also explains the Recorded-vs-replayed asymmetry. It does not cover error behavior or rate limits, keeping it short of a 5.
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?
Well structured and front-loaded with purpose, then baseline semantics, cost warning, and parameter docs. It is somewhat long due to the embedded :param list, but every paragraph adds real information 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?
For a 9-parameter tool with no output schema and no annotations, the description covers the creation semantics, baseline selection, cost implications, and id-discovery routing. It omits what the Experiment response contains beyond a brief :returns line, but overall it is complete enough to call correctly.
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, and it does: every parameter is explained, including the baseline/candidate pairing rules, the 1..50 range and default for sessions_per_test_case, and the replay_mode enum values. The only gap is that enum semantics for replay_mode are brief.
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?
States a specific verb and resource ("Creates an Experiment") and immediately scopes it as comparing a candidate pipeline version against a baseline. It explains what the tool is for in one sentence, which distinguishes it from siblings like list_experiments and get_experiment_results.
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?
Gives clear conditions for the baseline mode (set both baseline fields together vs. leave unset for Recorded) and names sibling tools for finding ids and reading results. It does not explicitly state when not to use the tool, but the routing information is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_indexC
Creates a new index within your Haystack Enterprise Platform workspace. :param index_name: Unique name of the index to create. :param yaml_configuration: YAML configuration to use for the index. :param description: Description of the index to create. :returns: A message and the created index, or an error message.
All parameters accept object references in the form @obj_id or @obj_id.path.to.value.
Examples::
# Direct call with values
create_index(data={'key': 'value'}, threshold=10)
# Call with references
create_index(data='@obj_123', threshold='@obj_456.config.threshold')
# Mixed call
create_index(data='@obj_123.items', threshold=10)The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
| index_name | Yes | ||
| description | No | ||
| yaml_configuration | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It does disclose useful behavior: the return is 'a message and the created index, or an error message', the output is auto-stored, and an object ID is returned for chaining. It says nothing about permissions, uniqueness enforcement on index_name, or side effects, which leaves real gaps 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 purpose is front-loaded, but the body is bloated with Sphinx docstring artifacts (:param:, :returns:), generic boilerplate about the object store repeated twice, and example calls whose parameter names (data, threshold) do not match this tool's schema. Much of the text does not earn 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?
With no output schema and no annotations, the description does cover the return shape and object-store mechanics, which is the minimum needed to use the result. It omits duplicate-name behavior, required permissions, and what the YAML configuration must contain, so an agent could still call it incorrectly.
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 names all three parameters and adds genuinely useful object-reference syntax ('@obj_id.path.to.value') not present in the schema, but the per-parameter notes are thin (yaml_configuration is not explained beyond 'YAML configuration to use') and the code examples reference non-existent parameters (data, threshold), which is actively misleading.
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 opening sentence gives a specific verb+resource ('Creates a new index') scoped to the Haystack Enterprise Platform workspace, which is enough to distinguish it from unrelated siblings like create_pipeline or create_deployment. It does not explicitly contrast itself with the closest siblings (update_index, validate_index, deploy_index), so it stops short of a 5.
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?
There is no guidance on when to use create_index versus update_index, validate_index, or deploy_index, nor any stated prerequisites. The only routing advice concerns post-call object handling ('use the object store tools'), not tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_pipelineB
Creates a new pipeline within the currently configured deepset workspace. :param pipeline_name: Name of the pipeline to create. :param yaml_configuration: YAML configuration for the pipeline. :returns: Created pipeline or error message.
All parameters accept object references in the form @obj_id or @obj_id.path.to.value.
Examples::
# Direct call with values
create_pipeline(data={'key': 'value'}, threshold=10)
# Call with references
create_pipeline(data='@obj_123', threshold='@obj_456.config.threshold')
# Mixed call
create_pipeline(data='@obj_123.items', threshold=10)The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
| pipeline_name | Yes | ||
| yaml_configuration | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses output is automatically stored with object ID and returns a preview, which is useful. However, no annotations are provided, and the description does not cover potential side effects or authorization needs.
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?
Purpose front-loaded, but includes redundant docstring-style param/return lines and mismatched examples. Could be more concise and accurate.
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 output schema, 0% schema coverage, and many siblings, the description omits crucial context like YAML structure, prerequisites, error handling, and differentiation from pipeline versioning tools.
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%. Description adds minimal info (pipeline name and YAML config), but the examples are mismatched, referencing non-existent parameters 'data' and 'threshold', which confuses. No explanation of YAML format.
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?
Clearly states verb 'creates' and resource 'pipeline' within deepset workspace. Distinguishes from siblings like create_index or create_workspace.
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 examples and mentions object references for parameter passing, but lacks explicit guidance on when to use this tool versus alternatives like create_pipeline_version or deploy_pipeline.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_pipeline_versionA
Creates a new version of an existing pipeline with the provided YAML configuration.
Use this to update a pipeline's configuration. Each call creates a new immutable version, preserving the full history of changes.
If is_draft is True, and there is already a draft version, the existing draft will be finalized and incremented to a new version number. :param pipeline_name: Name of the pipeline to create a version for. :param yaml_configuration: The new YAML configuration for this version. :param description: Optional description of what changed in this version. :param is_draft: If True, the version is created as a draft (default: False). :returns: The newly created pipeline version or error message.
All parameters accept object references in the form @obj_id or @obj_id.path.to.value.
Examples::
# Direct call with values
create_pipeline_version(data={'key': 'value'}, threshold=10)
# Call with references
create_pipeline_version(data='@obj_123', threshold='@obj_456.config.threshold')
# Mixed call
create_pipeline_version(data='@obj_123.items', threshold=10)The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
| is_draft | No | ||
| description | No | ||
| pipeline_name | Yes | ||
| yaml_configuration | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses immutability, version history, draft finalization, output storage, and object ID usage. No annotations, so description carries full burden and meets it thoroughly.
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?
Well-structured with opening statement, behavior explanation, parameter list, and examples. Slightly verbose with redundant parameter docstring but not excessive.
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?
Covers purpose, all parameters, behavior, output format, and usage examples. Adequate for a 4-parameter tool with no output schema.
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 0% description coverage. Description compensates fully by describing each parameter, default values, reference format, and providing examples.
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?
Clearly states it creates a new immutable version of an existing pipeline with YAML configuration. Distinguishes from siblings like create_pipeline and patch_pipeline_version.
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 explicit usage context: "Use this to update a pipeline's configuration." Explains behavior with is_draft and object references, but lacks explicit exclusions or when-not-to-use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_workspaceA
Creates a new workspace with the specified name.
This tool creates a new workspace that can be used to organize pipelines, indexes, and other resources. The workspace name must be unique across the platform. Once created, you can start deploying pipelines and other resources within this workspace. :param name: The name for the new workspace. Must be unique. :returns: Success confirmation or error message.
The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It discloses mutation (creates), uniqueness requirement, output format with object ID, and storage behavior. However, it does not mention permissions, rate limits, 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 concise overall, but includes extra details about object store tools and referencing results, which are tangentially relevant. Could be slightly more streamlined.
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, no output schema, no annotations), the description covers purpose, input, output, and uniqueness constraint. Lacks error handling details and authentication requirements.
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 sole parameter 'name' has no schema description (0% coverage), but the description adds meaningful context: 'The name for the new workspace. Must be unique.' This compensates well 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 explicitly states 'Creates a new workspace with the specified name' and explains its role in organizing pipelines, indexes, and other resources. It clearly distinguishes from sibling tools like create_index and create_pipeline.
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 mentions the uniqueness constraint and that workspaces can be used after creation, but does not provide explicit guidance on when to use this tool versus alternatives 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.
deactivate_deploymentB
Marks a deployment as no longer desired to be served, keeping its active revision intact. :param deployment_id: ID of the deployment. :returns: The updated deployment or error message.
The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
| deployment_id | 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 adds useful behavioral context by stating the active revision is preserved (implying reversibility), but omits permissions/auth requirements, whether served traffic is immediately stopped, and whether the action can be undone.
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 lead sentence is well front-loaded and earns its place, but the trailing object-store boilerplate ('Use the object store tools...', 'Use the returned object ID...') is generic and largely irrelevant to a deactivate operation.
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 one-param mutation with no output schema and no annotations, the description covers the return path reasonably well, explaining the object-ID preview and how to consume it, though the safety/permission profile remains undocumented.
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% and the single param is documented only as ':param deployment_id: ID of the deployment,' which restates the name. With one self-evident ID parameter the gap is minor, but the description adds no format or source detail 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?
States a specific verb and resource: 'Marks a deployment as no longer desired to be served, keeping its active revision intact.' The 'keeping its active revision intact' clause implicitly distinguishes it from delete_deployment, though it never names that sibling directly.
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 explicit when-to-use guidance or alternatives. With siblings like delete_deployment, activate_deployment, and update_deployment in the list, the description never says when to prefer deactivation over deletion or how it relates to activation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
debug_pipelineA
Runs a pipeline configuration in debug mode: pin a breakpoint, resume a snapshot, or trace a full run.
Debugs a pipeline configuration directly (not a saved pipeline by name) -- pass the YAML you want to test, e.g. from get_pipeline_version, create_pipeline_version, or a local draft. The inline run trace is always returned, so a failure is visible even for a run that never reaches a breakpoint.
One call carries at most one of:
break_at_component_name (with break_at_visit_count) -- run from inputs until the breakpoint is hit, then stop and return a resumable snapshot in the 'snapshot' field. Pass that back as resume_from to continue the run.
resume_from -- replay a snapshot returned by a previous debug run to completion; inputs are ignored, they come from the snapshot.
neither -- run the pipeline from inputs to completion as a plain debug run. :param yaml_configuration: The pipeline YAML configuration to debug. :param inputs: Named pipeline inputs keyed by the input name declared under the pipeline config's 'inputs' mapping (e.g. {"query": "What is love?"}). Ignored when resume_from is set. :param break_at_component_name: Name of the component to break at. Mutually exclusive with resume_from; omit both to run to completion as a plain debug run. :param break_at_visit_count: Break when the target has been visited this many times (0 breaks before the first visit; relevant for loops/cycles). Only used if break_at_component_name is set. :param resume_from: A snapshot returned by a previous debug run (its 'snapshot' field), replayed to completion. Mutually exclusive with break_at_component_name. :param files: File IDs to download and inject into the inputs declared under the pipeline config's 'inputs.files' mapping. :param pipeline_id: Optional ID of the pipeline this debug run is associated with. :param pipeline_version_id: Optional ID of the pipeline version to associate the run with (requires pipeline_id). :param dry_run: Best-effort stateless run: state-modifying components (e.g. DocumentWriter) are replaced with no-op equivalents so the pipeline can be inspected without side effects. Required for indexing pipelines (their document store carries no index until deploy time); harmless for query pipelines. Set it on resume too if the original run used dry_run, otherwise the run is rejected.
:returns: PipelineDebugResult with status, result/snapshot, and the run trace, or an error message.
All parameters accept object references in the form @obj_id or @obj_id.path.to.value.
Examples::
# Direct call with values
debug_pipeline(data={'key': 'value'}, threshold=10)
# Call with references
debug_pipeline(data='@obj_123', threshold='@obj_456.config.threshold')
# Mixed call
debug_pipeline(data='@obj_123.items', threshold=10)The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
| files | No | ||
| inputs | No | ||
| dry_run | No | ||
| pipeline_id | No | ||
| resume_from | No | ||
| yaml_configuration | Yes | ||
| pipeline_version_id | No | ||
| break_at_visit_count | No | ||
| break_at_component_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully carries behavioral disclosure: it explains resumable snapshot behavior, the always-returned inline run trace, state-modifying dry_run substitutions, and the resume rejection on dry_run mismatch. It also notes that outputs are auto-stored and can be referenced via object IDs.
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 well structured: a clear overview, mode breakdown, parameter definitions, and examples. Each section adds essential operational detail, and the first sentence front-loads the core 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?
For a tool with 9 parameters, no annotations, and no output schema, the description is remarkably complete. It covers return shape, side effects, dry_run behavior, error visibility, object-reference usage, and example calls, leaving almost no operational ambiguity.
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 zero descriptions, but the description documents all 9 parameters, including mutual exclusions, defaults (break_at_visit_count=0), ignored inputs when resume_from is set, and the requirement that pipeline_version_id requires pipeline_id. This fully compensates for the schema coverage gap.
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 states a specific action and scope: 'Runs a pipeline configuration in debug mode: pin a breakpoint, resume a snapshot, or trace a full run.' It also explicitly distinguishes from saved pipelines ('directly (not a saved pipeline by name)'), which separates it from siblings like run_component or deploy_pipeline.
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 defines three mutually exclusive usage modes and tells users to pass YAML from get_pipeline_version/create_pipeline_version or a local draft. It provides concrete when-to-use guidance for dry_run ('Required for indexing pipelines... harmless for query pipelines') and warns to set it on resume too. However, it does not explicitly name alternative tools, so it stops short of full explicit exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_deploymentA
Deletes a deployment along with all of its revisions. This cannot be undone. :param deployment_id: ID of the deployment to delete. :returns: Confirmation or error message.
The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
| deployment_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It explicitly discloses the critical destructive trait ('along with all of its revisions. This cannot be undone.'), which is exactly what an agent needs. It could be improved by mentioning auth requirements or rate limits, but the core destructive behavior is well covered.
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 core message is front-loaded and clear, but the description is bloated with 6+ sentences of boilerplate about object storage ('The output is automatically stored...', 'Use the object store tools...'), which is irrelevant to a destructive delete operation and dilutes the signal.
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 (1 required param, no output schema) and lack of annotations, the description covers the essential destructive warning but is incomplete on prerequisites and environment context. The included object-store boilerplate is noise for this 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% for the single parameter 'deployment_id', so the description must compensate. It does mention ':param deployment_id: ID of the deployment to delete.', providing a basic definition, but adds no format, syntax, or sourcing guidance beyond what the name implies.
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?
States a specific verb ('Deletes') and resource ('deployment') and clarifies the cascading scope ('along with all of its revisions'). This distinguishes it from siblings like update_deployment or deactivate_deployment.
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 states it is irreversible but provides no guidance on when to use this tool versus alternatives like deactivate_deployment or delete_deployment_tag, nor any prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_deployment_tagB
Removes a tag from a deployment. Tag matching is case-insensitive. :param deployment_id: ID of the deployment. :param tag_name: Tag to remove. :returns: The deployment's full tag list after removal, or error message.
The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
| tag_name | Yes | ||
| deployment_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, and it does disclose one useful trait (case-insensitive tag matching) and the return shape. It omits important behaviors for a mutation: required permissions, idempotency (what happens if the tag is absent), and whether removal is reversible.
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?
Purpose is front-loaded, which is good, but the trailing block about automatic output storage, object IDs, and the object store is generic boilerplate that consumes roughly half the text without helping an agent call this delete 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 two-parameter delete with no annotations and no output schema, the description covers purpose, both params, and the return value (full tag list or error message), which is adequate. It still leaves auth/permission requirements and failure modes unexplained.
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 does document both params via the docstring (:param deployment_id:, :param tag_name:) and adds the case-insensitivity rule for tag_name. However, the descriptions are minimal paraphrases ('Tag to remove.') rather than adding format or constraint detail.
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?
States a specific verb and resource ('Removes a tag from a deployment'), which is unambiguous. It does not explicitly distinguish itself from the close sibling add_deployment_tag or list_deployment_tags, but the verb makes the direction of the operation obvious.
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 when-to-use guidance, no mention of the sibling add_deployment_tag/list_deployment_tags, and no prerequisites. The only guidance is the object-store boilerplate about passing the returned object ID to other functions, which covers follow-up 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.
deploy_indexA
Deploys an index to production.
This function attempts to deploy the specified index in the given workspace. If the deployment fails due to validation errors, it returns an object describing the validation errors. :param index_name: Name of the index to deploy.
:returns: A string indicating the deployment result or the validation results including errors.
The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
| index_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It discloses that the tool attempts to deploy, returns validation errors on failure, and stores output with an object ID. However, it lacks details on prerequisites (e.g., index must exist) and implications of deployment.
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 functional but somewhat verbose, with docstring-style param/returns and redundant mentions of object ID usage. It front-loads the main action but could be more streamlined.
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 explains the return format and error handling but omits important context: it mentions 'in the given workspace' but the schema lacks a workspace parameter. Missing details on deployment effects and prerequisites like validation.
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 adds a clear definition for the single parameter 'index_name' ('Name of the index to deploy'). This fully compensates for the missing schema description.
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 deploys an index to production, using a specific verb and resource. It distinguishes from sibling tools like create_index (creates but doesn't deploy) and validate_index (validates but doesn't deploy).
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 deploying an existing index but does not explicitly compare to alternatives like create_index or validate_index. No guidance on prerequisites or when to choose this tool over siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deploy_pipelineA
Deploys a pipeline to production.
This function attempts to deploy the specified pipeline in the given workspace. If the deployment fails due to validation errors, it returns a validation result. :param pipeline_name: Name of the pipeline to deploy. :param version_id: Optional ID of the pipeline version to deploy. If None, deploys the latest non-draft version.
:returns: Deployment validation result or error message.
The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
| version_id | No | ||
| pipeline_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses return behavior (validation result on failure, stored object ID) and how to use the object ID. However, it does not mention destructive actions, auth requirements, or side effects of deployment.
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 includes docstring-style parameter and return sections, making it somewhat lengthy (6 sentences). Information is front-loaded, but could be more concise.
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, 0% schema coverage, and no output schema, the description provides parameter meanings, return value with object ID usage, and partial behavioral context. It lacks prerequisites (e.g., pipeline existence, permissions) but is fairly complete for deployment.
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 fully explains both parameters: pipeline_name is the name of the pipeline, version_id is optional and defaults to latest non-draft version. This adds significant meaning beyond 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 'Deploys a pipeline to production,' which identifies the specific action and resource. It is distinct from sibling tools like 'create_pipeline' (which creates) and 'validate_pipeline' (which only validates).
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 does not provide guidance on when to use this tool versus alternatives (e.g., deploy_index, validate_pipeline). It only explains behavior on failure but no context for appropriate use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_component_definitionB
Returns the definition of a specific Haystack component.
:param component_type: Fully qualified component type
(e.g. haystack.components.routers.conditional_router.ConditionalRouter)
:param haystack_version: Optional version of Haystack to use.
Pass the same version as specified in the pipeline yaml's dependencies section for the haystack-ai package.
:returns: ComponentDefinition model or error message string
The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
| component_type | Yes | ||
| haystack_version | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does not disclose any behavioral aspects such as side effects, permissions, or whether the operation is read-only. While the name suggests a get operation, the description does not explicitly state that it is safe or free of side effects, and there are no annotations to fill this 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 reasonably structured but contains redundant boilerplate about the object store and output formatting (e.g., repeating 'Use the object store tools...' twice). While not excessively long, this repetition could be trimmed for conciseness without losing essential 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 description covers the tool's purpose, parameters, and return type, but it lacks context about why or when one would need a component definition (e.g., for inspecting inputs/outputs before pipeline creation). It does not explain the structure of the returned definition or its typical use in the broader workflow.
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 provides meaningful explanations for both parameters. For component_type, it gives a concrete example. For haystack_version, it explains how to derive the value from the pipeline's dependencies. This adds clarity beyond the schema, which only lists types and required status.
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: 'Returns the definition of a specific Haystack component.' This is a specific verb-resource pair, and it distinguishes from sibling tools like get_pipeline or list_pipelines by focusing on component definitions.
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 does not provide guidance on when to use this tool versus alternatives. It lacks any mention of use cases, prerequisites, or scenarios where this tool is appropriate, leaving the agent to infer its purpose from the name and generic description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cost_breakdownA
Reads the LLM cost of the workspace, or of one pipeline, grouped by model, pipeline, deployment or API key.
Use this to find what drove the cost: which models, pipelines, deployments or API keys spent the most.
Costs are in USD. Results are sorted by cost, highest first, unless you set sort_by and sort_order.
Each entry has a key (a model or provider name, or a UUID for the other dimensions) and a readable
label. A deleted pipeline still shows up with group_by='pipeline', labelled with its UUID.
total is the number of groups across all pages; when has_more is true, read the next
page_number. total_requests counts queries, not individual LLM calls. A cost_total of null
means the group had usage but none of it was priced. Without dates the range is the last 30 days.
:param group_by: The dimension to group by: model, workspace, pipeline, deployment, api_key or provider.
:param pipeline_name: Restrict to this pipeline. Omit for the whole workspace. Needs Pipelines read as well as
Costs read.
:param start_date: Inclusive start as an ISO timestamp. Defaults to 30 days before end_date.
:param end_date: Exclusive end as an ISO timestamp. Defaults to no upper bound.
:param sort_by: Sort by label, cost_total, total_tokens or total_requests. Defaults to cost_total.
:param sort_order: ASC or DESC. Defaults to DESC.
:param limit: Groups per page, from 1 to 100.
:param page_number: The page to read, starting at 1.
:returns: One page of the breakdown, or an error message.
The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| sort_by | No | ||
| end_date | No | ||
| group_by | Yes | ||
| sort_order | No | ||
| start_date | No | ||
| page_number | No | ||
| pipeline_name | No |
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 richly: sort defaults, pagination semantics (total across all pages, has_more, page_number), that total_requests counts queries not LLM calls, that a null cost_total means unpriced usage, the 30-day default window, that deleted pipelines still appear with a UUID label, and the required Pipelines read + Costs read permissions.
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 core is well front-loaded: purpose, then the 'what drove the cost' framing, then parameter details. It is dense but nearly every sentence adds information; the trailing object-store boilerplate is the only portion that is generic 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?
There is no output schema, yet the description explains the return shape (key/label entries, total, total_requests, cost_total nullability) and the object-store handoff via an @obj_123 ID. An agent has everything needed to call the tool and interpret results.
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 document all eight parameters, and it does: group_by dimensions, pipeline_name scope plus its permission prerequisite, inclusive/exclusive date semantics with defaults, sort_by/sort_order options and defaults, limit range (1-100), and page_number starting at 1.
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?
States a specific verb and resource (reads LLM cost), names the scope (workspace or one pipeline) and the grouping dimensions. The phrase 'grouped by model, pipeline, deployment or API key' implicitly separates it from the totals and over-time siblings, but it never names them explicitly, so an agent must infer the distinction.
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?
'Use this to find what drove the cost: which models, pipelines, deployments or API keys spent the most' tells the agent exactly when this tool is the right pick. There is no explicit when-not guidance or named alternative (e.g. get_cost_totals, get_cost_over_time), so it stops 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.
get_cost_over_timeA
Reads the LLM cost of the workspace, or of one pipeline, per UTC day.
Use this to see how spending developed, find the day a cost spike started, or compare periods.
Costs are in USD. There is one point per day with usage; days without usage are left out, so a missing
day means zero cost. A cost_total of null means that day had usage but none of it was priced.
Without dates the range is the last 30 days. start_date is inclusive and end_date exclusive.
The daily figures leave out unpriced LLM calls; use get_cost_totals to check whether the cost is
complete.
:param pipeline_name: Restrict to this pipeline. Omit for the whole workspace. Needs Pipelines read as well as
Costs read.
:param start_date: Inclusive start as an ISO timestamp. Defaults to 30 days before end_date.
:param end_date: Exclusive end as an ISO timestamp. Defaults to no upper bound.
:returns: The daily cost, or an error message.
The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
| end_date | No | ||
| start_date | No | ||
| pipeline_name | No |
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 that days without usage are omitted (missing day = zero cost), that cost_total null means usage existed but was unpriced, that unpriced calls are excluded from daily figures, and that pipeline_name requires Pipelines read plus Costs read.
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?
Front-loaded with purpose then semantics; each sentence about dates, nulls, and defaults earns its place. The trailing object-store boilerplate ('output is automatically stored... @obj_123... use the object store tools') is generic filler that dilutes an otherwise tight description.
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?
No output schema or annotations exist, so the description must cover behavior and returns; it does, explaining the per-day return shape, null semantics, exclusions, date defaults, and permission requirements. An agent has everything needed to call this correctly.
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%, yet all three parameters are documented: pipeline_name's scope and permission requirement, start_date as an inclusive ISO timestamp defaulting to 30 days before end_date, and end_date as exclusive with no default upper bound. This fully compensates for the empty schema descriptions.
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?
States a specific verb (reads) and resource (LLM cost) with an explicit granularity (per UTC day) and scope option (workspace or one pipeline). This is clearly distinguishable from siblings like get_cost_totals (completeness check) and get_cost_breakdown (dimensional split).
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?
Gives three concrete when-to-use cases (track spending over time, locate a spike's start day, compare periods) and routes the agent to get_cost_totals for verifying cost completeness. There is no explicit when-not guidance or contrast with get_cost_breakdown, so it falls 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_cost_totalsA
Reads the total LLM cost, tokens and requests of the workspace, or of one pipeline, over a date range.
Use this to answer how much a workspace or pipeline spent on LLM calls. Costs are in USD.
Without dates the range is the last 30 days. start_date is inclusive and end_date exclusive, so
for September 2026 pass 2026-09-01T00:00:00Z and 2026-10-01T00:00:00Z.
Check is_cost_complete before reporting total_cost. When it is false, total_cost is a lower
bound, not the final figure: say so, and name the models in unpriced_models (LLM calls with no price
on file) and mention pending_generation_count (calls whose cost is still being calculated, which
usually clears within a minute). total_requests counts queries, not individual LLM calls; one query
can make several LLM calls.
:param pipeline_name: Restrict to this pipeline. Omit for the whole workspace. Needs Pipelines read as well as
Costs read.
:param start_date: Inclusive start as an ISO timestamp. Defaults to 30 days before end_date.
:param end_date: Exclusive end as an ISO timestamp. Defaults to no upper bound.
:returns: The cost totals, or an error message.
The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
| end_date | No | ||
| start_date | No | ||
| pipeline_name | No |
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 richly: it warns that total_cost may be a lower bound when is_cost_complete is false, explains unpriced_models and pending_generation_count (clearing within a minute), and notes total_requests counts queries not LLM calls. It also surfaces the required read permissions for the pipeline scope.
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?
Dense and front-loaded with the core purpose, semantics, and caveats in the critical first lines. The closing object-store paragraph is somewhat boilerplate and repeated ('object ID' several times), but the informational paragraphs largely earn their 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?
Despite having no output schema, the description explains the return path: a formatted preview with an object ID, that the output is auto-stored and referenceable, and that object-store tools can inspect nested properties. Combined with the cost caveats, an agent has everything needed to call and interpret it.
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 and it does: pipeline_name (restrict to pipeline, omit for workspace, permission requirement), start_date (inclusive ISO timestamp, defaults to 30 days before end_date), and end_date (exclusive, defaults to no upper bound), reinforced by a concrete September 2026 example.
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?
States a specific verb and resource ('Reads the total LLM cost, tokens and requests') plus the scope ('of the workspace, or of one pipeline, over a date range'). This is distinguishable from implicit siblings like get_cost_breakdown and get_cost_over_time by naming 'totals'.
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?
Explicitly frames the use case ('Use this to answer how much a workspace or pipeline spent on LLM calls') and clarifies cost units (USD) and the workspace-vs-pipeline selection via pipeline_name. It does not name the alternative cost tools, so it stops short of full 5-level routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_custom_componentsA
Get a list of all installed custom components.
:param haystack_version: Optional version of Haystack to use.
Pass the same version as specified in the pipeline yaml's dependencies section for the haystack-ai package.
:returns: ComponentDefinitionList model or error message string.
The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
| haystack_version | No |
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 transparently mentions that the output is automatically stored, returns an object ID, and can be referenced elsewhere. It also notes 'ComponentDefinitionList model or error message string.' It does not explicitly state read-only behavior, but the get semantics imply it. The disclosure of the object store side effect is an informative behavioral trait beyond what annotations would provide.
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 organized with the main purpose first, followed by parameter documentation, return type, and additional usage notes. It is somewhat verbose but each sentence adds value, such as storage behavior and object ID usage. It is appropriately sized for a tool with one parameter and a clear output.
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?
Despite no output schema, the description fully clarifies what the tool returns (ComponentDefinitionList model or error string) and how to further interact with the result (object store tools). It covers all necessary aspects for a simple list tool, including the optional parameter handling and the storage mechanism. No critical information is missing.
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 compensates by explaining the parameter 'haystack_version' in detail: 'Pass the same version as specified in the pipeline yaml's `dependencies` section.' This adds meaning beyond the schema, which only shows the type. The explanation is sufficient for understanding how to set it correctly.
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: 'Get a list of all installed custom components.' This is a specific verb ('Get') and resource ('list of installed custom components'), and it distinguishes from siblings like list_custom_component_installations, which focuses on installation logs. The purpose is unambiguous and effectively differentiates from similar 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 implies usage context ('get a list of all installed custom components') but does not explicitly state when to prefer this tool over alternatives like search_component_definitions or get_component_definition. There is no guidance on exclusions or comparisons, though the purpose is clear. It gives basic instructions on the optional haystack_version parameter but lacks explicit when-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_deploymentB
Fetches details for a specific deployment, including its active revision and runtime status. :param deployment_id: ID of the deployment to fetch. :returns: Deployment details or error message.
The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
| deployment_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, and it does disclose an important non-obvious behavior: the result is stored in an object store and returned as a formatted preview with an object ID. However, it says nothing about permissions, error conditions beyond 'error message', or whether the read is side-effect free.
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 core purpose is front-loaded and clear, but the docstring-style block is padded: ':returns: Deployment details or error message' is followed by three sentences that all circle the same object-store/object-ID idea, with the last two largely redundant.
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?
There is no output schema, so the description is right to describe the return mechanism (object ID, preview, chaining into object-store tools). It stops short on other essentials such as error handling and where the deployment_id comes from, leaving gaps for a tool embedded among ~60 siblings.
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 single param has no schema description, so the description must compensate. It offers only 'ID of the deployment to fetch', which restates the parameter name rather than clarifying format, source, or where to obtain it.
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?
States a specific verb and resource ('Fetches details for a specific deployment') and adds the scope of what is returned (active revision, runtime status). This distinguishes it from list_deployments and get_deployment_revision without naming them, but the differentiation is implicit rather than explicit.
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 never says when to use this tool versus the many siblings (get_deployment_revision, get_deployment_stats, get_deployment_metrics, list_deployment_revisions). Usage is only inferable from 'specific deployment', so an agent gets no routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_deployment_metricsB
Fetches per-replica CPU/memory usage, resource limits, and replica counts for a deployment. :param deployment_id: ID of the deployment. :param start_ms: Start of the time range, in unix milliseconds. :param end_ms: End of the time range, in unix milliseconds. :returns: Deployment metrics or error message.
The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
| end_ms | Yes | ||
| start_ms | Yes | ||
| deployment_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It does disclose a real behavioral trait: output is auto-stored and returns an object ID (@obj_123) that feeds object-store tools. That is valuable and non-obvious. It does not, however, cover auth/permission requirements, read-only nature, 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 core purpose is front-loaded, but the object-store explanation is repeated across three sentences ('referenced in other functions', 'use the object store tools', 'pass this result to other functions') with overlapping meaning. The docstring-style ':param/:returns' formatting is also less scannable than prose.
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?
With no annotations and no output schema, the description does cover parameter meaning and the return/object-store mechanism, which is the critical missing structured data. It falls short on usage routing relative to get_deployment_stats and on any access/permission context, leaving an agent with gaps before invoking it.
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 schema provides only bare titles, and the description compensates by documenting all three parameters, including the unit for start_ms/end_ms ('unix milliseconds'). That unit detail is genuinely additive. Deployment_id is described only generically ('ID of the deployment'), so it is not perfect.
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 gives a specific verb and resource: 'Fetches per-replica CPU/memory usage, resource limits, and replica counts for a deployment.' An agent immediately knows the resource and the metric types returned. However, it does not distinguish itself from the sibling get_deployment_stats, which an agent could plausibly confuse with 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?
There is no when-to-use guidance and no mention of alternatives or prerequisites. With siblings like get_deployment_stats and get_deployment present, the description should state what selects this tool over those, but it leaves that entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_deployment_revisionB
Fetches a single deployment revision, including the pipeline configuration YAML it serves. :param deployment_id: ID of the deployment. :param revision_id: ID of the revision to fetch. :returns: The revision, including its config YAML, or error message.
The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
| revision_id | Yes | ||
| deployment_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, but it does disclose real behavior: the result is auto-stored, returned as a formatted preview with an object ID, and nested properties are reached via object-store tools. It omits permission/auth requirements and only vaguely gestures at errors ('or error message').
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 lead sentence is well front-loaded, but the trailing block repeats the object-store idea across four sentences ('automatically stored', 'referenced in other functions', 'use the object store tools', 'pass this result to other functions') without adding new 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?
For a two-param fetch with no output schema, the description covers the return shape (revision + config YAML) at a high level and explains the object-store handoff. It is missing selection guidance and the meaning of the two IDs, which are the main gaps an agent would hit.
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, yet the :param lines merely restate the names ('ID of the deployment', 'ID of the revision to fetch') without format, source, or how to obtain them. It adds almost no meaning beyond the parameter 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?
States a specific verb and resource ('Fetches a single deployment revision') and adds scope detail ('including the pipeline configuration YAML it serves'), which clearly separates it from the sibling list_deployment_revisions. An agent can identify the operation without opening the schema.
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?
There is no statement of when to choose this over siblings like get_deployment, list_deployment_revisions, or activate_deployment_revision, and no prerequisites or exclusions. The object-store notes describe what to do with the result, not when to call this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_deployment_statsB
Fetches query volume, outcome split, and run durations for a deployment. :param deployment_id: ID of the deployment. :param days: Size of the rolling window, in days (1-90, default 30). :param granularity: Bucket width for the returned series, "DAY" (default) or "HOUR". :param time_zone: IANA time zone used to bucket the series (default "UTC"). :returns: Deployment statistics or error message.
The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| time_zone | No | UTC | |
| granularity | No | DAY | |
| deployment_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. It does add genuinely useful behavioral context: the result is auto-stored in an object store and returned as an object ID (@obj_123) that can be fed into other functions and inspected via object-store tools. What it omits is the read-only nature, any authorization requirements, and whether values are nil for inactive deployments.
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 :param/:returns block is efficient, but the object-store tail is spread over three sentences that partially restate each other ('stored and can be referenced', 'use the object store tools', 'pass this result to other functions'). Front-loading is good, but there is redundancy that could be compressed.
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 4-param tool with no output schema and no annotations, the definition covers parameters well and explains the important non-obvious behavior that the actual data lives behind an object ID. It is nearly complete; the remaining gap is distinguishing it from the metrics sibling and any dependency on deployment state.
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, and it largely does: each of the four params gets a :param line with units, bounds (1-90), defaults (30, DAY, UTC), and the enum values for granularity. This is meaningfully richer than the bare schema titles, though it doesn't explain time_zone's effect on bucket boundaries beyond 'bucket the series'.
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 and resource and enumerates exactly what is returned: query volume, outcome split, and run durations for a deployment. That is a clear purpose. However, it never distinguishes itself from the sibling get_deployment_metrics, which an agent could easily confuse with stats, so it falls short of a 5.
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?
There is no when-to-use guidance, no prerequisites (e.g., the deployment must be active), and no reference to alternatives such as get_deployment_metrics or get_deployment. The agent is left to infer applicability purely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_evaluation_tryA
Reads an ad-hoc try that try_evaluator handed back while it was still running.
EXPIRED means the result aged out (tries are kept for an hour): run try_evaluator again.
:param pipeline_name: Name of the pipeline.
:param try_id: The try_id from try_evaluator.
:returns: The try report, or an error message.
| Name | Required | Description | Default |
|---|---|---|---|
| try_id | Yes | ||
| pipeline_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the burden, and it discloses real behavioral traits: tries expire after an hour (TTL), an EXPIRED state exists, and it may return 'an error message'. It doesn't cover auth or idempotency, but the lifecycle and failure semantics are genuinely useful beyond structured 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?
Front-loaded with the core purpose and expiration behavior, then the params. The Sphinx-style :param:/:returns: tags are slightly redundant with the prose but compact and scannable.
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?
With no output schema, the description correctly states the return ('The try report, or an error message'), and both required params are covered. For a two-param read tool this is essentially complete, with only auth/prerequisite detail missing.
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, and it documents both parameters. Critically, it explains that try_id originates from try_evaluator, adding meaning the bare string-typed schema does not convey.
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?
States a specific verb ('Reads') and resource ('an ad-hoc try'), and ties it directly to the sibling try_evaluator that produced the try. An agent can distinguish it from try_evaluator (which initiates) without opening either schema.
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?
Explicitly establishes the workflow: try_id comes 'from try_evaluator', so this is the retrieval step after a try is handed back. It also gives a concrete remedy on EXPIRED (re-run try_evaluator). It lacks an explicit 'do not use this to start a try' exclusion, 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.
get_evaluatorA
Fetches one Evaluator, or one of its versions with the Python source.
Without version_id it returns the Evaluator with every version, newest first, each with
the Metrics it declares but no source. With version_id it returns that version including
its python_code; pass latest_version.evaluator_version_id to read the current source.
:param evaluator_id: The Evaluator's id.
:param version_id: A version's id, to read that version's source.
:returns: The Evaluator or the version, or an error message.
The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
| version_id | No | ||
| evaluator_id | Yes |
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, and it does a good job: it discloses exactly what is returned in each mode, that source is omitted unless version_id is set, that errors come back as a message, and the object-store side effect with an @obj_123 ID. It does not cover permissions or rate limits, hence not a 5.
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 first sentence is well front-loaded, but the piece is padded: the :param version_id line restates the opening paragraph, the :returns line restates the outcome, and the closing two sentences about the object ID duplicate the earlier object-store note. Structure is conventional but several sentences do not earn their 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?
With no output schema, the description must explain return values, and it does so for both modes plus the object-store preview and cross-function reuse. For a two-parameter read tool this is nearly complete; only permission/error-handling detail is missing.
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, and it does: both parameters are documented via :param lines, with version_id carrying real behavioral meaning (it controls whether python_code is returned). evaluator_id's semantics as "The Evaluator's id" is thin but adequate alongside the required-parameter constraint.
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?
States a specific verb and resource ("Fetches one Evaluator, or one of its versions with the Python source") and immediately distinguishes the two operating modes by the presence of version_id. It implicitly contrasts with the list_evaluators sibling via "one Evaluator," but never names the alternative explicitly.
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?
Gives concrete conditional guidance: without version_id you get every version newest-first without source; with version_id you get that version's python_code, and it tells you to pass latest_version.evaluator_version_id to read current source. No exclusion or explicit alternative tool is named, but the when-to-use context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_experiment_resultsA
Reads an Experiment's results: each Metric, candidate against baseline, then each test case.
Find an Experiment with list_experiments. metrics has one entry per Metric of the
Metric Group, in its order: each side's value (or labels for a Label), delta and
delta_pct of the candidate over the baseline, and how many Sessions errored, meaning
the Evaluator's own code broke. A test case's value is the mean over its Sessions, and a Metric
is averaged only over the paired_test_cases both sides have a value for, so check that
count before trusting a delta. pipeline_metrics compares DURATION, TOKENS and COST the
same way. Each test case lists the Sessions each side scored and, per Score Metric keyed
{evaluator_id}:{metric_key}, each side's mean; that is where to look for the test cases
behind a regression. Resolve evaluator ids to names with list_evaluators. Results are
partial while status is REPLAYING or SCORING.
:param experiment_id: The Experiment's id.
:param max_test_cases: Most test cases to return; metrics still cover every test case.
:returns: The results, or an error message.
The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
| experiment_id | Yes | ||
| max_test_cases | No |
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 richly: it discloses that results are partial while status is REPLAYING or SCORING, that 'errored' means the Evaluator's own code broke, that Metrics are averaged only over paired_test_cases with values on both sides, and that pipeline_metrics compares duration/tokens/cost. These are exactly the semantic gotchas an agent could not infer from the bare 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?
Front-loaded with the core purpose, then structured into metrics/pipeline_metrics/test-case detail; nearly every sentence carries information. Minor deduction for the generic object-store boilerplate tail that is auto-injected and adds little selection 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?
With no output schema and no annotations, the description thoroughly describes the return shape (per-side value/labels, delta, delta_pct, errored counts, per-Metric means, session listings) so an agent knows what it gets. Nothing material for correct invocation appears to be missing.
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, and it largely does: max_test_cases is explained precisely ('Most test cases to return; metrics still cover every test case'), which is a non-obvious interaction. experiment_id is only described as 'The Experiment's id,' which is thin but sufficient given the required string.
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?
States a specific verb and resource ('Reads an Experiment's results') and immediately enumerates the scope it covers: each Metric, candidate vs baseline, and each test case. It is clear and concrete, though it never explicitly distinguishes itself from the nearby sibling get_experiment_run, leaving that routing decision to the agent.
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?
Gives actionable context: find the Experiment via list_experiments, resolve evaluator ids via list_evaluators, and check paired_test_cases counts before trusting a delta. It even points the agent at where to look for regressions. It stops short of explicit when-not-to-use or exclusion conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_experiment_runA
Reads one scoring run: how its cells ended, a summary per Metric, then the grid rows.
A scoring run is a Metric Group judging chosen Sessions of one pipeline. Find one with
list_metric_groups (last_run) or list_experiments (a side's scoring_runs).
It judges each chosen Session with each Evaluator; one cell per pair. counts says how
the cells ended: errored is the Evaluator's own code breaking (see the cell's
error_detail), not a low Metric; failed is a cell that never ran and can be retried.
metrics summarises each Evaluator's Metric over every row, rows past max_rows
included: mean, min and max for a Score, a count per label for a Label, and how often it did
not apply. Each row is a Session with its cells; a cell's metrics carry the value per
address (session, turn/2, ...) and the rationale the Evaluator wrote, which is what to
group failures by. run.selection says whether the Sessions were SAMPLED or HAND_PICKED;
only sampled runs say anything about traffic as a whole.
:param pipeline_name: Name of the pipeline.
:param metric_group_id: The id of the Metric Group the run scored with.
:param run_id: The run's id.
:param max_rows: Most rows to return; the summaries still cover every row.
:returns: The run report, or an error message.
The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | Yes | ||
| max_rows | No | ||
| pipeline_name | Yes | ||
| metric_group_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 and does so well: it distinguishes 'errored' (Evaluator code breaking, see error_detail) from 'failed' (never ran, retryable), explains that summaries cover rows past max_rows, and warns that only SAMPLED runs generalize to traffic. It omits any auth/permission or rate-limit 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?
Long but dense and front-loaded: the first sentence states the return shape, and each subsequent sentence earns its place by explaining semantics rather than restating the name. The trailing object-store/object-ID boilerplate is templated and slightly padded, but still operationally relevant.
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 complex, no-annotation, no-output-schema read tool this covers the important ground: return structure, error-vs-failure semantics, summarization scope, and the selection caveat. Missing only ancillary operational details such as permissions and payload size limits.
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% across 4 params, so the description must compensate. It meaningfully clarifies max_rows ('Most rows to return; the summaries still cover every row') and gives terse docstrings for the other three, but adds no format or sourcing detail beyond the identifiers' identity.
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?
States a precise verb+resource ('Reads one scoring run') and then enumerates the exact return shape — cell outcomes, per-Metric summary, grid rows. It also defines what a scoring run is, which lets an agent distinguish it from run-adjacent siblings like get_evaluation_try or get_pipeline_trace.
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 routes the agent to the tools that produce the required identifiers ('Find one with list_metric_groups (last_run) or list_experiments (a side's scoring_runs)'), which is genuine when-to-use guidance. It stops short of stating when-not-to-use this tool or any exclusion conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_from_object_storeA
Use this tool to fetch an object from the object store.
You can fetch a specific object by using the object's id (e.g. @obj_001).
You can also fetch any nested path by using the path-parameter
(e.g. {"object_id": "@obj_001", "path": "user_info.given_name"}
-> returns the content at obj.user_info.given_name).
:param object_id: The id of the object to fetch in the format @obj_001.
:param path: The path of the object to fetch in the format of access.to.attr or ["access"]["to"]["attr"].
:return: String representation of the object or of the value at path.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | ||
| object_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. It does disclose the return shape ('String representation of the object or of the value at path'), which is valuable given there is no output schema. But it omits failure behavior (missing id, invalid path), any permission/auth requirements, and any side-effect statement for this read operation.
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?
Front-loaded with the purpose, then progressively adds the id mode, the path mode, and parameter docs. The JSON example is worth its space; the format is efficient overall, with only minor redundancy between the prose path explanation and the `:param path:` line.
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 no annotations and no output schema, the description covers the essentials (what it returns, both parameter formats), which is more than minimal. But it stops short of error/edge-case behavior and any resource-identification guidance for deciding between this and the other object-store tools.
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 carry parameter meaning, and it does: it specifies the id format (`@obj_001`) and two accepted path syntaxes (`access.to.attr` and `["access"]["to"]["attr"]`) with a concrete example. This meaningfully compensates for the undocumented schema, though the empty-string default for `path` is never explained.
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?
States a specific verb+resource ('fetch an object from the object store') and immediately operationalizes it with two retrieval modes. It is clear on its own, but never names the adjacent siblings (get_slice_from_object_store, sed_object_store, grep_object_store) to draw the boundary, so an agent still has to infer which store tool applies.
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 explains the two ways to call it (by id, or by id plus nested path with a worked example), which is genuine usage guidance. However, it gives no when-to-use vs the many store siblings and no exclusions, so the routing decision is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_indexB
Fetches detailed configuration information for a specific index, identified by its unique index_name.
:param index_name: Unique name of the index to fetch.
:returns: The index configuration or an error message.
The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
| index_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It usefully discloses that output is auto-stored, returned as an object ID preview, and that nested properties require object store tools, but says nothing about auth requirements, read-only nature, or error conditions beyond 'an error message'.
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 core purpose is front-loaded, but the entry mixes Sphinx-style ':param:'/':returns:' directives with prose and then spends three sentences on object store mechanics. Some redundancy between ':returns:' and the object-ID paragraphs.
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?
With no output schema and no annotations, the description does the needed lifting by describing the return value ('index configuration or an error message') and the object-ID indirection pattern. It is nearly complete for this simple one-parameter read.
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% and the single parameter has no schema description, so the description must compensate. It does document index_name as the 'Unique name of the index to fetch', which adds the uniqueness constraint but no format or naming convention details.
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?
States a specific verb ('Fetches') and resource ('detailed configuration information for a specific index'), anchored by the unique index_name. It is clearly differentiated from list_indexes by the singular scope, though no sibling is named explicitly.
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?
There is no explicit when-to-use vs. list_indexes/update_index guidance, but the description does give downstream workflow direction ('Use the object store tools in combination with the object ID'). Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_latest_custom_component_installation_logsB
Get the logs from the latest custom component installation.
:returns: The latest installation logs or error message.
The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the output is stored and returns an object ID for further use, implying a read operation. However, with no annotations, it does not explicitly confirm no side effects or state the exact behavior beyond output handling.
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 adequate but contains some redundancy (e.g., mentioning logs twice). It is structured as a paragraph but could be more streamlined.
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 parameters or output schema, the description sufficiently explains the output format and how to use it with object store tools. It lacks details on error scenarios but covers the essentials.
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?
No parameters are defined, so the schema provides full coverage. The description adds value by explaining the output storage and object ID usage, meeting the baseline for a zero-parameter 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 clearly states the tool retrieves logs from the latest custom component installation. The name and description are consistent, but no explicit differentiation from sibling tools is provided.
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 includes instructions on using the output with object store tools but lacks guidance on when to choose this tool over alternatives like list_custom_component_installations or get_custom_components.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_modelsA
Lists the models including their configuration options available for use in a workspace's pipelines and indexes.
This includes predefined models offered by deepset as well as custom models configured
at the workspace or organization level. Use this tool to discover which model names and
providers can be used, which configuration options are available, and which default
configuration is offered when configuring chat generators.
:param limit: Maximum number of models to return per page.
:param page_number: The page to fetch, starting at 1.
:param connected: If set, only return models for which the workspace does (True) or
does not (False) have a working integration configured.
:param provider: If set, only return models from this provider. Accepts a well-known
ModelProvider value (e.g. 'openai', 'anthropic', 'gemini', 'aws-bedrock') or any other
provider name as a plain string. Case-insensitive, exact match.
:param model: If set, only return models whose configured model name contains this value
(e.g. 'gpt-4o'). Case-insensitive, substring match.
:returns: A page of models including their configuration options or an error message.
The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| model | No | ||
| provider | No | ||
| connected | No | ||
| page_number | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden and provides good transparency: it states the tool lists models (read-only), returns a page of models with an object ID, explains output storage and how to access nested properties, and mentions error messages. It does not cover rate limits or page size limits but is otherwise thorough.
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 paragraph, parameter documentation, and output handling. It is front-loaded and each sentence adds value, though some redundancy exists (e.g., repeating 'configuration options'). Overall, it is appropriately sized.
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 5 parameters, no required fields, no output schema, and no annotations, the description is highly complete. It explains all parameters, output format (object ID), how to use the object store, error messages, and the scope (workspace/organization level). No important details are missing.
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 fully compensates by providing detailed explanations for all 5 parameters: limit, page_number, connected, provider (with well-known values and case-insensitivity), and model (with substring match). Each parameter's behavior is clearly explained.
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 lists models including configuration options, covering predefined and custom models, and specifies its use case for discovering model names, providers, and default configurations for chat generators. It distinguishes itself from sibling tools that handle indexes, pipelines, or workspaces.
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 tool to discover...'), providing clear context. However, it does not explicitly mention when not to use it or alternatives, though no competing sibling tool exists.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pipelineA
Fetches information for a specific pipeline, identified by its unique pipeline_name.
:param pipeline_name: The name of the pipeline to fetch.
:returns: Pipeline details or error message.
The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
| pipeline_name | Yes |
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 discloses that the output is automatically stored, returns a formatted preview with an object ID, and can be passed to other functions. It also mentions error messages. This is valuable beyond the schema, though it stops short of stating permissions or explicit read-only safety.
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 sized but contains redundancy; two sentences about using the object ID could be merged. The use of `:param` and `:returns` is conventional, but the instructions are somewhat scattered.
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 one-parameter tool, it covers the return format and how to use the object ID, but it lacks explicit usage guidance versus siblings and does not elaborate on error conditions beyond a generic message. The overall context is adequate for basic use but not comprehensive.
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 schema description coverage at 0%, the description must compensate. However, it only restates the parameter name ('The name of the pipeline to fetch') and adds 'unique', which adds little meaning beyond the schema. No format, constraints, or examples are provided.
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 'Fetches information for a specific pipeline' and identifies the resource by the unique `pipeline_name`, distinguishing it from sibling tools like `list_pipelines` (fetching all) and `get_pipeline_version` (a version-specific resource).
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 implies usage when you have a specific pipeline name, but does not explicitly mention when to prefer this over alternatives, nor does it state exclusions. The guidance about using object store tools is about post-processing, not tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pipeline_logsA
Fetches logs for a specific pipeline.
Retrieves log entries for the specified pipeline, with optional filtering by log level. This is useful for debugging pipeline issues or monitoring pipeline execution. :param pipeline_name: Name of the pipeline to fetch logs for. :param limit: Maximum number of log entries to return (default: 30). :param level: Filter logs by level. If None, returns all levels. :param after: The cursor to fetch the next page of results.
:returns: Pipeline logs or error message.
The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | ||
| level | No | ||
| limit | No | ||
| pipeline_name | Yes |
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 explains output is automatically stored and returns an object ID, which is key behavioral info. It could be more transparent about permissions or 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 well-structured with a front-loaded purpose and parameter docs, but has slight redundancy between 'Fetches logs' and 'Retrieves log entries'.
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?
It covers parameters and output usage but lacks details on return format and pagination mechanics (how to get the first cursor). Given no output schema, this is a 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?
Schema description coverage is 0%, but the description fully compensates by explaining each parameter's purpose (pipeline_name, limit, level, after) with clear 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 states 'Fetches logs for a specific pipeline' with a specific verb and resource. It distinguishes from siblings as no other tool fetches logs.
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 mentions 'useful for debugging pipeline issues or monitoring pipeline execution', providing clear context. However, it lacks explicit exclusions or alternative comparisons.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pipeline_traceA
Retrieves the Haystack pipeline run trace including all spans for a single search history record.
Returns the execution trace for one query: every
component span with essential tags (excluding the component's input and output),
timing, and failure details. Use this to deep-dive into a
specific query run identified by its query_id (obtainable from
list_pipeline_traces or list_pipeline_search_history).
For a targeted look at one span including the input and output at one component, use
get_pipeline_trace_span_tags; for the logs, use get_pipeline_trace_logs.
:param pipeline_name: Name of the pipeline.
:param query_id: UUID of the search history query whose trace to retrieve.
Obtain this from the query_id / search_history_id field of a
list_pipeline_traces or list_pipeline_search_history response.
:returns: The pipeline trace entry including all spans or an error message.
The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
| query_id | Yes | ||
| pipeline_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and discloses important behaviors: returns all spans, excludes component input/output, includes timing and failure details, and automatically stores output with an object ID. It clearly signals a read-like operation via 'Retrieves' and explains the side effect of storage.
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 longer than strictly necessary, with some redundancy (query_id source is mentioned twice). However, it is well-structured with a front-loaded purpose, clear param block, and separate usage guidance. Every major section 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 absence of annotations and output schema, the description provides a comprehensive context: what is returned, what is excluded, error handling, object store integration, and how to reference the result. It covers the tool's role in the broader workflow and directs users to related tools when needed.
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% (no descriptions in properties), but the description fully explains both parameters. pipeline_name is simply 'Name of the pipeline,' and query_id is given a detailed definition with instructions to obtain it from the query_id/search_history_id field of list_pipeline_traces or list_pipeline_search_history responses.
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 and resource: 'Retrieves the Haystack pipeline run trace including all spans for a single search history record.' It clearly differentiates from sibling tools by focusing on the full trace for a single query, and mentions alternatives for other granularities.
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?
Explicitly states when to use ('Use this to deep-dive into a specific query run') and how to obtain required identifiers ('obtainable from list_pipeline_traces or list_pipeline_search_history'). It also provides concrete alternatives: 'For a targeted look at one span... use get_pipeline_trace_span_tags; for the logs, use get_pipeline_trace_logs.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pipeline_trace_logsA
Retrieves the log entries for a single Haystack pipeline run trace.
Returns the run's logs (e.g. to diagnose warnings or errors emitted during the run). Each entry includes the logger, level, message, timestamp, and extra fields.
Obtain query_id from list_pipeline_traces or list_pipeline_search_history.
If errors occur outside of the pipeline (e.g. in the API or search history service), they will not appear in the
trace logs. Use the get_pipeline_logs tool to retrieve logs for the pipeline itself (e.g. startup errors,
configuration issues, orother runtime problems).
:param pipeline_name: Name of the pipeline.
:param query_id: UUID of the search history query.
:returns: List of log entries or an error message.
The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
| query_id | Yes | ||
| pipeline_name | Yes |
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 the return structure (logger, level, message, timestamp, extra fields), the exclusion of errors outside the pipeline, and the automatic storing of output with an object ID for reference. It does not mention pagination or auth, but provides substantial behavioral context beyond a simple read-only claim.
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 longer than average but well-structured with clear paragraphs and param documentation. Some redundancy exists around the object ID mention ('Returns a formatted preview' and 'Use the returned object ID'), but the content is all relevant and earned.
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 2 parameters, no output schema, and no annotations, this description is remarkably complete. It covers purpose, use cases, parameter semantics, expected return format, error boundaries, related tools, and how to reference the result. It leaves little ambiguity for an AI agent attempting to invoke the 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?
Although the input schema provides no descriptions for either parameter (0% coverage), the description compensates fully by defining pipeline_name as 'Name of the pipeline' and query_id as 'UUID of the search history query', and additionally tells users where to obtain query_id. This exceeds schema-level information.
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 explicitly states 'Retrieves the log entries for a single Haystack pipeline run trace', which is a specific verb+resource combination. It distinguishes from siblings by naming the alternative get_pipeline_logs and explaining when each should be used.
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 clearly says when to use this tool (to diagnose warnings/errors emitted during a run) and when to use get_pipeline_logs instead (pipeline startup errors, configuration issues). It also explains how to obtain query_id from list_pipeline_traces or list_pipeline_search_history.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pipeline_trace_span_tagsA
Retrieves all tags for a single span within a Haystack pipeline run trace.
A span's tags carry the component-level detail, including its input and output
(e.g. haystack.component.input / haystack.component.output) plus type and
error information. Use this to inspect one component run in detail.
Obtain span_id from a span in a get_pipeline_trace response, and query_id
from list_pipeline_traces or list_pipeline_search_history.
:param pipeline_name: Name of the pipeline.
:param query_id: UUID of the search history query.
:param span_id: UUID of the span whose tags to retrieve.
:returns: The span's tag dictionary or an error message.
The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
| span_id | Yes | ||
| query_id | Yes | ||
| pipeline_name | 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 the return type (tag dictionary or error message), the automatic storage of output, and the object ID behavior. It lacks details on permissions or rate limits, but covers key behavioral aspects.
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 structured with clear sections (purpose, usage hints, param docs, returns) and uses formatting (bold, code) for readability. It is somewhat lengthy but each section 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?
The description covers purpose, usage context, parameter semantics, return behavior, and object store integration. Given no output schema or annotations, it is fairly complete, though it could include an example of the tag dictionary 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?
Despite 0% schema coverage, the description explicitly defines each parameter in the :param: lines, including types and purpose (e.g., 'UUID of the span whose tags to retrieve'). This compensates well for the schema's silence.
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 ('Retrieves all tags for a single span') on a specific resource ('within a Haystack pipeline run trace'), clearly distinguishing it from sibling tools like get_pipeline_trace.
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 ('Use this to inspect one component run in detail') and explains how to obtain the required parameters from other tools (get_pipeline_trace, list_pipeline_traces). It does not explicitly mention when not to use it, but the guidance is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pipeline_versionA
Fetches a specific version of a pipeline by its version ID. :param pipeline_name: Name of the pipeline. :param version_id: UUID of the version to fetch. :returns: Pipeline version details or error message.
The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
| version_id | Yes | ||
| pipeline_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses that the output is automatically stored in the object store and returns an object ID for referencing. It explains how to use the result with object store tools. However, it omits authentication needs, rate limits, or side effects, though the operation is likely read-only.
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 informative with a clear purpose, parameter docs, and output usage notes. It is slightly lengthy due to repeating param docs that could be in the schema, but overall front-loaded with the main action. Every sentence 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?
For a simple fetch tool with no output schema, the description explains the return format (object ID) and how to use it. It covers the basic workflow but lacks details on error handling or prerequisites. Given the tool's simplicity, it is reasonably 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?
The schema has 0% description coverage, but the description includes explicit parameter documentation: ':param pipeline_name: Name of the pipeline.' and ':param version_id: UUID of the version to fetch.' This adds crucial meaning beyond the schema's property titles.
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 fetches a specific pipeline version by ID, using the verb 'fetches' and specific resource 'version'. It distinguishes from siblings like 'list_pipeline_versions' (which lists all versions) and 'patch_pipeline_version' (which modifies).
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 (fetching a specific version) but does not explicitly guide when to use this vs. alternatives like 'list_pipeline_versions' for multiple versions or 'get_pipeline' for the pipeline itself. It mentions using object store tools for nested properties, which helps for further interaction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_secretA
Retrieves detailed information about a specific secret by its ID.
Use this tool to get information about a specific secret when you know its ID. The secret value itself is not returned for security reasons, only metadata. :param secret_id: The unique identifier of the secret to retrieve
:returns: Secret information or error message
The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
| secret_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must convey behavior. It states the secret value is not returned, output is stored, and an object ID is returned for referencing. It lacks details on auth needs, rate limits, or error handling.
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 concise but contains redundant phrasing (e.g., 'Use this tool to get information about a specific secret' reiterates the purpose). It front-loads the core action but could be tighter.
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 tool with one parameter and no annotations, the description covers retrieval, security nuance, and output format. However, it omits specifics like what metadata is returned, error case handling, and explicit object store usage instructions.
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%. The description adds minimal semantics by calling secret_id 'the unique identifier of the secret to retrieve,' which is a slight improvement over the schema's bare title. Given the low coverage, more elaboration is needed.
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 function: 'Retrieves detailed information about a specific secret by its ID.' It differentiates from siblings like list_secrets by emphasizing 'specific secret' and 'by 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?
The description explicitly says when to use: 'Use this tool to get information about a specific secret when you know its ID.' It also notes that the secret value is not returned for security reasons, implying alternative uses for other data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_session_replayA
Reads a session replay that replay_session handed back while it was still running.
:param pipeline_name: Name of the pipeline.
:param replay_run_id: The replay_run_id from replay_session.
:returns: The replay report with the new Session's id once it ended, or an error message.
| Name | Required | Description | Default |
|---|---|---|---|
| pipeline_name | Yes | ||
| replay_run_id | Yes |
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 discloses the return payload (replay report with the new Session's id) and an error case, which is useful behavioral context, but omits permission requirements, whether the call is read-only/safe to retry, and how it behaves while the replay is still running.
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?
Compact and front-loaded with the core action and the sibling linkage first. The reST directive fragments are a little terse but each line adds information; nothing is wasted.
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?
With no annotations and no output schema, the description covers the essentials: what it returns (replay report plus Session id), the error case, and both parameters. Reasonably complete for a 2-param read tool, with only permission/retry semantics left implicit.
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 documents both parameters, notably giving provenance for ``replay_run_id`` ('from ``replay_session``'), which is meaningful beyond the bare schema titles. It doesn't specify the id format or pipeline_name constraints, keeping it short of a 5.
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?
States a specific verb ('Reads') and resource ('a session replay'), and ties it directly to the sibling ``replay_session`` that generates the id. It clearly distinguishes itself from the tool that starts the replay, though the phrase 'handed back while it was still running' is slightly awkward.
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 (retrieve the replay produced by ``replay_session``) and notes the return depends on the replay having ended, but never explicitly states when to call this versus ``replay_session`` or what to do if the replay hasn't finished.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_slice_from_object_storeA
Extract a slice from a string or list object that is stored in the object store.
:param object_id: Identifier of the object. :param start: Start index for slicing. :param end: End index for slicing (optional - leave empty to get slice from start to end of sequence). :param path: Navigation path to object to slice (optional). :return: String representation of the slice.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | ||
| path | No | ||
| start | No | ||
| object_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description indicates the return type (string representation) but does not disclose error handling (e.g., invalid indices) or side effects. With no annotations, more details are expected.
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 includes a structured docstring format, though the parameter tags are slightly verbose for a tool description.
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 adequately covers the tool's functionality and parameters, but lacks information on error cases and does not differentiate from sibling tools in the object store family.
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?
All four parameters are explained with purpose and defaults/optionality, adding significant value since the input schema has 0% description coverage.
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 (extract) and resource (slice from object store), which is distinct from siblings like get_from_object_store (whole object) and grep_object_store (search).
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 explicit guidance on when to use this tool versus alternatives such as get_from_object_store or grep_object_store; usage context is only implied by the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_templateA
Fetches detailed information for a specific pipeline or indexing template, identified by its template_name.
:param template_name: The name of the template to fetch.
:returns: Pipeline or indexing template details or error message.
The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
| template_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Even without annotations, the description discloses key behavioral traits: the output is automatically stored, a preview with an object ID is returned, and the ID can be used with object store tools or passed to other functions. This goes beyond just 'fetches template' and aids the agent in understanding the return format and 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 concise and well-structured: main purpose first, then param explanation, return behavior, and usage tips. The docstring-style formatting is clear, and each sentence adds value. Slight room for improvement by front-loading more critical info.
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 get-template tool with one parameter and no output schema, the description covers purpose, parameter, return value (including object ID utility), and error handling (indicated by 'error message'). This is sufficiently complete for the complexity level.
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 compensate. It provides a basic docstring for the only parameter, 'template_name', stating 'The name of the template to fetch.' This adds meaning beyond the schema (which only gives title and type), but lacks details on format, allowed values, or constraints.
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 explicitly states the action ('Fetches detailed information') and the resource ('specific pipeline or indexing template'), identified by a unique name. It clearly distinguishes from sibling tools like list_templates or search_templates.
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 (to get details of a single template by name), but it does not explicitly state when not to use it or point to alternatives (e.g., list_templates for listing, search_templates for searching). No direct comparison to siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_workspaceA
Fetches detailed information for a specific workspace by name.
This tool retrieves comprehensive details about a specific workspace, including its unique ID, supported languages, and configuration settings. Use this when you need detailed information about a particular workspace. :param workspace_name: The name of the workspace to fetch details for. :returns: Workspace details or error message.
The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
| workspace_name | Yes |
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 describes the output format (object ID, preview), explains how to access nested properties via object store, and mentions error messages. It implies a read-only operation, but does not explicitly state non-destructive behavior. Overall, it is transparent for a simple get operation.
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, front-loading the purpose and then detailing output and usage. It is slightly verbose with repetition (e.g., 'This tool retrieves' and 'Use this when'), but every sentence adds value. The docstring-style parameter description is included.
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 output schema and a simple single-parameter input, the description provides comprehensive context: return format (object ID, preview), instructions for accessing nested properties via object store, and mention of error messages. It fully compensates for missing structured metadata.
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, but the description adds meaning by stating 'The name of the workspace to fetch details for.' This clarifies the parameter's purpose beyond the schema's title 'Workspace Name' and indicates it is required.
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 fetches detailed information for a specific workspace by name. It uses a specific verb ('Fetches') and resource ('workspace'), and distinguishes from siblings like list_workspaces (list all) and create_workspace (create).
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 clear context for when to use the tool: 'Use this when you need detailed information about a particular workspace.' It does not explicitly exclude alternative tools like list_workspaces, but the purpose is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
grep_object_storeA
Search for a regex pattern in a string stored in the object store.
Returns matches with surrounding context, similar to grep.
:param object_id: The id of the object to search in the format @obj_001.
:param pattern: Regular expression pattern to search for.
:param path: Navigation path to a nested string attribute (optional).
:param case_sensitive: Whether the search should be case sensitive (default: False).
:return: Matches with context, or a message if no matches found.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | ||
| pattern | Yes | ||
| object_id | Yes | ||
| case_sensitive | No |
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 that the tool returns matches with surrounding context (similar to grep) and explains each parameter's role. It does not mention side effects, authentication, or rate limits, but the behavior is clearly described as a read-only pattern search with optional 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 concise, starting with the main purpose and then listing parameters. It is front-loaded and each sentence adds value. The parameter list is slightly redundant with the schema but aids readability.
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 (4 parameters, 2 required, no output schema), the description is complete. It explains input format, optional parameters, and return value (matches with context or no-matches message). No gaps are apparent.
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?
Despite 0% schema description coverage, the description adds meaningful explanations for each parameter: 'object_id' format (@obj_001), 'pattern' as regex, 'path' as navigation to nested attribute, and 'case_sensitive' default. This significantly enhances the schema's minimal definitions.
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: searching for a regex pattern in a string stored in the object store. It uses a specific verb ('search for') and resource ('string stored in the object store'), and distinguishes itself from sibling tools like 'get_from_object_store' and 'sed_object_store' by mentioning 'regex pattern' and 'similar to grep'.
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 the tool (search for patterns in object store strings) and includes optional parameters (path, case_sensitive) that guide usage. It does not explicitly state when not to use it or compare to alternatives, but the provided context (e.g., 'similar to grep') implies appropriate use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_component_familiesA
Lists all Haystack component families that are available on deepset.
:param haystack_version: Optional version of Haystack to use.
Pass the same version as specified in the pipeline yaml's dependencies section for the haystack-ai package.
:returns: ComponentFamilyList model or error message string
The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
| haystack_version | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full transparency burden. It discloses that the output is automatically stored and returns a preview with an object ID for further reference, which is a behavioral trait beyond the schema. It also notes the return type (ComponentFamilyList model or error message). While it doesn't explicitly state read-only or error conditions, the 'lists' verb implicitly indicates a safe read operation, and the storage behavior is disclosed.
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, followed by parameter and return information, then a short paragraph on output usage. It uses a structured format with :param and :returns tags, which aids scannability. While a bit lengthy, each sentence provides useful information without redundancy, earning a high score.
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 tool with one optional parameter and no output schema, the description covers all necessary aspects: purpose, parameter semantics, return type, and the handling of returned object IDs. It also explains that the output is stored for later use, which is essential for the agent to understand the tool's behavior. No significant gaps remain.
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 sole parameter (haystack_version) is thoroughly explained: 'Optional version of Haystack to use. Pass the same version as specified in the pipeline yaml's `dependencies` section for the `haystack-ai` package.' This adds crucial context beyond the raw schema, which only declares a nullable string. The description compensates fully for the 0% schema description coverage.
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: 'Lists all Haystack component families that are available on deepset.' The verb 'lists' plus the resource 'Haystack component families' makes the purpose specific and unambiguous. It also distinguishes itself from sibling list tools (e.g., list_workspaces, list_pipelines) by targeting a unique resource category.
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 contextual guidance for the optional haystack_version parameter and explains how to use the returned object ID. However, it does not explicitly state when to use this tool versus alternatives, nor does it mention any exclusions. Usage is implied rather than stated, fitting the 'implied usage' criterion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_custom_component_installationsB
List custom component installations. :param limit: Maximum number of installations to return per page. :param after: The cursor to fetch the next page of results.
:returns: Custom component installations or error message.
The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | ||
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses the return format (formatted preview with object ID) and mentions automatic storage for cross-function reference. However, it lacks details on error handling 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 moderately concise but includes a Python-docstring style for parameters that adds length without improving clarity for an AI agent.
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 pagination, return format, and object ID usage, compensating for lacking output schema. However, it omits error conditions and authorization requirements.
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?
Despite 0% schema description coverage, the description explains 'limit' as max per page and 'after' as cursor for pagination, adding meaning beyond the schema's type and defaults.
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 custom component installations' as the action and resource, which is distinct from sibling tools like 'list_component_families' or 'list_indexes'. However, it does not explicitly differentiate 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 provides no guidance on when to use this tool versus alternatives, missing exclusion criteria or context about pagination limits.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_deployment_activityB
Lists activation and revision activity for a deployment. :param deployment_id: ID of the deployment. :param after: The cursor to fetch the next page of results. :returns: Paginated list of activity events or error message.
The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | ||
| deployment_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, and it does add a genuinely useful behavioral trait: output is automatically stored, returned as a preview with an @obj_ ID, and can be fed to object-store tools or other functions. However, it says nothing about permissions, result limits, or event types beyond 'activation and revision activity'.
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 core purpose leads, but the body mixes docstring-style :param/:returns tags with prose and then repeats the object-store workflow across three sentences. It is usable but padded, with some redundancy about passing the object ID to other functions.
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 two-param, no-output-schema, no-annotation tool, the description does cover the return shape (paginated activity events/preview) and the object-store handoff, which is the main gap. It is nonetheless thin on parameter meaning and on how the activity list relates to the deployment revision tools.
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 does name both params, and 'after: the cursor to fetch the next page' usefully explains the opaque anyOf/null cursor field, but 'deployment_id: ID of the deployment' is tautological and adds nothing over the schema title.
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?
States a specific verb and resource — listing activation and revision activity for a deployment — which is distinct from revision-listing siblings like list_deployment_revisions. It does not explicitly name or contrast with those siblings, so it stops short of a 5.
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?
There is no when-to-use guidance and no condition that selects this tool over list_deployment_revisions, get_deployment_revision, or get_deployment_stats. The reader must infer the use case from the purpose sentence alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_deployment_revisionsA
Lists revisions of a deployment, i.e. the history of pipeline configurations it has served. :param deployment_id: ID of the deployment. :param after: The cursor to fetch the next page of results. :returns: Paginated list of revisions or error message.
The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | ||
| deployment_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. It does disclose useful behavior: results are paginated via a cursor and the output is auto-stored as an object with a preview ID. However, it omits ordering, page-size limits, and permission requirements.
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 opening sentence is front-loaded and efficient, but the Sphinx-style param lines duplicate the schema and the four lines of object-store boilerplate add notable length. Structure is reasonable but not tight.
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?
With no output schema and no annotations, the description still covers both parameters, the paginated return shape, and the object-store handoff mechanism. It is largely complete for a two-parameter list tool, missing only ordering and permission details.
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, and it does document both parameters meaningfully ('ID of the deployment', 'cursor to fetch the next page'). It adds the needed semantics the bare schema lacks.
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?
States a specific verb ('Lists') and resource ('revisions of a deployment') and expands it concretely as 'the history of pipeline configurations it has served.' This cleanly distinguishes it from the singular sibling get_deployment_revision and the related create/activate revision 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?
Usage is implied through the pagination cursor note and the object-store instructions, but the description never states when to prefer this over get_deployment_revision or list_deployments, nor any prerequisites. There is no explicit when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_deploymentsA
Lists deployments (AI Gateways) in the currently configured deepset workspace.
A deployment serves a pipeline behind a stable endpoint, independent of the pipeline's own draft/version history. :param after: The cursor to fetch the next page of results. :param group_label: Filter deployments by group label. :param tags: Filter deployments by tags (matches if any tag is present). :returns: Paginated list of deployments or error message.
The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | ||
| after | No | ||
| group_label | No |
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 disclose key behavior: it is a read-style listing, results are paginated by cursor, and the output is stored in the object store with a preview object ID. It omits permission/auth requirements and any rate or scope limits, but the operational model is largely covered.
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 purpose and parameters are front-loaded and useful, but the tail repeats itself: 'output is automatically stored and can be referenced in other functions' is restated by 'Use the returned object ID to pass this result to other functions,' so the final block does not fully earn its 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?
With no output schema and no annotations, the description compensates by explaining the return shape (paginated list or error, formatted preview with @obj_123) and how to consume it via object store tools. Minor gaps remain on error cases and scope of the listing, but an agent has enough to call it correctly.
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%, yet the description documents all three parameters: after is the next-page cursor, group_label filters by group label, and tags filters with 'any tag present' semantics. That 'any match' clarification is meaning the schema alone could not convey.
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?
States a specific verb and resource ('Lists deployments (AI Gateways)') plus the scope ('currently configured deepset workspace'), and adds a definition of what a deployment is. It distinguishes itself reasonably from siblings like get_deployment or list_deployment_revisions, though it never explicitly contrasts them.
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?
Usage is only implied: the filter parameters (group_label, tags) and cursoring suggest browsing/filtering a deployment inventory, but the description never says when to use this instead of get_deployment or create_deployment, nor states any prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_deployment_tagsB
Lists distinct tag strings attached to deployments in the workspace.
Useful for autocomplete when adding tags, or to see how deployments are currently grouped. :param name: Case-insensitive substring filter on tag names. :param order: Sort order for the returned tags, "ASC" or "DESC" (default "ASC"). :returns: List of distinct tag names or error message.
The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| order | No | ASC |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It conveys that this is a read (list) with a return shape plus a generic note that output is stored and referenceable via an object ID, which is genuinely useful. It does not disclose permission requirements or rate-limit behavior, and the object-store boilerplate is copy-pasted rather than tailored.
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 opening purpose and the :param/:returns lines are tight and front-loaded. However, four lines of generic object-store boilerplate ('The output is automatically stored...', '@obj_123', 'Use the object store tools...') are repeated filler that does not clearly apply to a tag-name list and dilutes the signal.
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 list tool with no output schema, the description covers purpose, both params, and return type, which is adequate. But with zero annotations the behavioral profile (authorization, whether tags are workspace-scoped) is unstated, and the mismatched object-store text leaves the actual return contract ('list of distinct tag names or error message') ambiguous.
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 document both parameters, and it does. 'name' is described as a case-insensitive substring filter on tag names, and 'order' is documented as ASC/DESC with default 'ASC' — semantic detail beyond the bare schema. Only a minor gap remains (no note that the default means omitted order sorts ascending).
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?
States a specific verb and resource: 'Lists distinct tag strings attached to deployments in the workspace.' An agent can distinguish it from list_deployments or add_deployment_tag by the 'distinct tag strings' scope. It stops short of explicitly naming a sibling to route against, so it is clear rather than fully differentiating.
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?
Adds usage context ('useful for autocomplete when adding tags, or to see how deployments are currently grouped'), which implies when it is helpful. However it never names the relevant alternatives (add_deployment_tag, delete_deployment_tag, list_deployments) or states exclusions, so routing is left partly to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_doc_sectionsA
List the main sections of the deepset AI Platform documentation.
Use this to understand what documentation is available and help users navigate
to the right section. Pass a section id to search_docs as section to limit
search results to that part of the docs.
:returns: A list of documentation sections with descriptions and URLs.
| Name | Required | Description | Default |
|---|---|---|---|
No 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 discloses that this is a read-only enumeration returning sections with descriptions and URLs via the ':returns:' note. It does not mention pagination or rate limits, but for a zero-argument list tool the behavioral profile is essentially complete.
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 short sentences: the purpose is front-loaded, followed by usage guidance and the return contract, with no filler. 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?
For a trivial no-arg read tool with no output schema, the description covers purpose, when to use it, the sibling relationship, and the shape of the return value. Nothing an agent needs to invoke it correctly is missing.
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 takes zero parameters, so per the rubric the baseline is 4. The description doesn't need to explain parameter syntax, though it usefully notes that a returned section id is consumed elsewhere.
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?
States a specific verb+resource (list documentation sections) with a scope qualifier ('main sections of the deepset AI Platform documentation'). It is clearly distinct from the sibling search_docs, which it references as a complementary query tool.
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?
Explicitly states when to use it ('to understand what documentation is available and help users navigate') and how it feeds into the alternative: passing a section id to search_docs as the section parameter. Both the use case and the hand-off to a sibling are spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_evaluatorsA
Lists the Evaluators in the workspace.
An Evaluator is a versioned Python function that judges a Session and reports named Metrics. Each entry carries its newest version's id and the Metrics that version declares (name, shape, grain and, for a closed Label, its vocabulary), but not the source. Evaluators belong to the workspace, not to a pipeline; a Metric Group picks which ones a scoring run judges with. :returns: The Evaluators, or an error message.
The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
No 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 largely meets it: it discloses that each entry carries the newest version's id and declared Metrics (name, shape, grain, Label vocabulary) but not the source, and that output is auto-stored with an object ID usable with object store tools. It does not mention pagination limits or what an error message looks like, so it falls short of full disclosure.
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?
Purpose is front-loaded and the body is informative rather than padded. There is mild redundancy between 'can be referenced in other functions' and the closing 'Use the returned object ID to pass this result to other functions,' which repeats the same idea.
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?
With no output schema and no parameters, the description must explain returns, and it does: it summarizes the returned fields and the object-ID handoff pattern. It stops short of describing pagination or error shapes, but is sufficient for a 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 tool takes zero parameters, so the baseline of 4 applies; there is nothing for the description to disambiguate. Describing the shape of returned entries is useful but is not 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?
States a specific verb and resource with scope ('Lists the Evaluators in the workspace') and then defines what an Evaluator actually is, distinguishing it from a generic list. An agent can tell this apart from the singular get_evaluator or from list_metric_groups without opening a schema.
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?
Usage is implied rather than stated: it explains that Evaluators belong to the workspace and that a Metric Group selects which ones a scoring run uses, which gives contextual orientation. But it never explicitly says when to choose this over get_evaluator or list_metric_groups, nor any when-not condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_experimentsA
Lists the workspace's Experiments, newest first.
An Experiment compares a candidate pipeline version against a baseline on the test cases of one
Dataset: each side gets its Sessions (reused, or replayed against its version) and is scored by
the same Metric Group. The baseline is another version, or, when recorded, the Sessions the
Dataset recorded. status and each side's status go REPLAYING, SCORING, then ENDED or
FAILED; a side's error says why it failed and scoring_counts how its evaluations ended.
Read how the candidate did against the baseline with get_experiment_results. To read one
side's scoring run cell by cell, pass its scoring_runs[].experiment_run_id, that entry's
pipeline_id resolved to a name with list_pipelines, and the Experiment's
metric_group_id to get_experiment_run.
:param pipeline_name: Only Experiments with either side on this pipeline, when given.
:returns: The Experiments, or an error message.
The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
| pipeline_name | No |
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, and it does substantial work: it discloses the status lifecycle (REPLAYING -> SCORING -> ENDED/FAILED per side), the semantics of the side's error and scoring_counts fields, and that output is auto-stored with an @obj_NNN preview. Gaps remain: no mention of pagination, result limits, or permissions for a list 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 purpose and filtering/routing content is front-loaded and useful, but the trailing object-store block repeats itself across four sentences ('The output is automatically stored...', 'Returns a formatted preview...', 'Use the object store tools...', 'Use the returned object ID...') and could be compressed to one. The domain paragraph is dense but 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?
With no output schema and no annotations, the description must cover returns and behavior; it states ':returns: The Experiments, or an error message' and explains the @obj_NNN preview mechanism. Combined with the status/error/scoring_counts lifecycle detail, an agent has enough to call and interpret it, though pagination/limits are unaddressed.
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% and the single parameter has no schema description, but the description compensates explicitly: 'pipeline_name: Only Experiments with either side on this pipeline, when given.' That clarifies both the matching semantics (either side) and the optional nature, adding real meaning beyond the bare anyOf string.
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?
States a specific verb and resource with scope: 'Lists the workspace's Experiments, newest first.' It then defines what an Experiment is and names the siblings it is not (get_experiment_results, get_experiment_run), so an agent can distinguish it from other experiment tools without opening a schema.
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?
Explicitly routes the agent: use get_experiment_results to compare candidate vs baseline, and get_experiment_run with scoring_runs[].experiment_run_id plus list_pipelines for cell-level reading. It also explains when the pipeline_name filter applies ('when given'). It lacks an explicit when-not-this-tool statement, but 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_indexesA
Retrieves a list of all indexes available within the currently configured deepset workspace.
:param after: The cursor to fetch the next page of results.
If there are more results to fetch, the cursor will appear as next_cursor on the response.
:returns: List of indexes or error message.
The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
| after | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses key behaviors: read-only listing, pagination via cursor, automatic storage of output with object ID, and that the result is a formatted preview requiring further object store tools to explore nested properties.
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 clear and front-loaded with the main purpose, but it includes some technical details about cursor and object ID that could be slightly more concise. Still efficient overall.
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 listing tool with one optional parameter and no output schema, the description provides all necessary information: purpose, pagination, output format, and how to use the result with other tools. No 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 only parameter 'after' is fully explained: it is a cursor for pagination, and its usage is tied to the response field 'next_cursor'. This compensates for the 0% schema coverage.
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?
Description clearly states it retrieves a list of all indexes in the workspace, using a specific verb and resource. It distinguishes from siblings like create_index, get_index, and deploy_index by focusing on listing.
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?
Usage is implied but not explicitly contrasted with alternatives like get_index for a single index. The description lacks guidance on when to choose list_indexes over other index-related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_metric_groupsA
Lists the workspace's Metric Groups, newest first.
A Metric Group is a named, ordered set of Evaluators. It belongs to the workspace, not to a
pipeline: a scoring run judges chosen Sessions of one pipeline with it, and an Experiment scores
both its sides with one. With pipeline_name, each entry's last_run is its newest scoring
run on that pipeline without the grid (status, selection, timing), or null when it never ran
there; read a run's results with get_experiment_run.
:param pipeline_name: A pipeline to attach each Metric Group's most recent scoring run on.
:returns: The Metric Groups, or an error message.
The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
| pipeline_name | No |
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 a fair job: it discloses newest-first ordering, the null-vs-populated semantics of each entry's ``last_run``, that an error message may be returned instead of data, and the object-store side effect with ``@obj_...`` IDs. It stops short of permissions or rate-limit behavior, but the disclosed traits are concrete and non-obvious.
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 tool-specific content is front-loaded and dense with signal, but the closing four sentences of object-store boilerplate repeat each other ('can be referenced in other functions' vs 'pass this result to other functions'). That template padding dilutes an otherwise tight description.
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?
No output schema and no annotations exist, so the description must cover behavior and returns itself, and it largely does: entity definition, ordering, the ``pipeline_name`` effect on ``last_run``, error returns, and the object-store handoff are all present. The main gap is that a single-param tool is simple enough that this is close to sufficient without being exhaustive.
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 for the lone ``pipeline_name`` parameter, and it does: it explains that the parameter attaches each group's most recent scoring run on that pipeline, described without the grid (status, ``selection``, timing), and yields null when the group never ran there. That is meaning well beyond the bare ``anyOf[string, null]`` 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?
States a specific verb and resource ('Lists the workspace's Metric Groups') plus an ordering ('newest first'), and then defines what a Metric Group is, which is what separates it from entities like evaluators or experiments in the sibling set. It never explicitly names a sibling to route away from, but the entity definition does the disambiguating work.
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 explains the effect of ``pipeline_name`` and routes the agent to ``get_experiment_run`` for reading a run's results, which is useful contextual guidance. It does not state when to prefer this tool over the other list_* siblings or any preconditions/exclusions, so usage remains 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_pipelinesA
Retrieves a list of all pipeline available within the currently configured deepset workspace.
:param after: The cursor to fetch the next page of results.
If there are more results to fetch, the cursor will appear as next_cursor on the response.
:returns: List of pipelines or error message.
The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
| after | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It explains pagination behavior (cursor, next_cursor) and automatic output storage with object IDs. However, it does not disclose idempotency, permissions, rate limits, 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 efficient with about 6 sentences, front-loading the main purpose. Some sentences are explanatory but not overly verbose. Minor redundancy with object store instructions.
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 (1 optional param, no output schema), the description adequately covers purpose, pagination, and output handling. Missing details on default behavior (e.g., first page without after) but overall 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?
The input schema has 0% description coverage, but the description fully explains the 'after' parameter, its role in pagination, and how to interpret the response's next_cursor. This adds significant value 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 clearly states the tool retrieves a list of all pipelines in the workspace, using specific verb 'Retrieves' and resource 'list of pipelines'. It distinguishes from siblings like 'get_pipeline' (single pipeline) and search variants.
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 for listing all pipelines with pagination support but does not explicitly state when to use this tool versus alternatives like search_pipeline. No exclusion or when-not-to-use guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_pipeline_search_historyA
Retrieves search history for a specific pipeline with pagination.
Returns past searches run with the given pipeline. Each entry includes the
search query (request.query), results (response), timing
(time/duration), status, user info, feedback, labels, and note.
Search history is archived ~30 minutes after a search runs and is then available via this endpoint.
Use the after parameter with next_cursor from the response to
fetch the next page.
:param pipeline_name: Name of the pipeline to get search history for.
:param limit: Maximum number of entries to return per page (default 10, max 1000).
:param after: ISO-8601 timestamp cursor to fetch entries older than this point.
Pass the value from next_cursor on the previous response.
:param query_filter: An OData filter expression to narrow down results.
Supported fields: query, client_source_path, pipeline_version_id, answer,
api_key, created_at, created_by, tags/tag_id, feedbacks, feedbacks/score,
feedbacks/comment, feedbacks/bookmarked, session_id, search_session_id,
feedbacks/result_id, request/filters, request/params, duration, labels,
status, note.
Example: "created_at ge 2024-01-01T00:00:00Z" or "status eq 'failed'".
:param sort_field: Field to sort results by. One of: created_at, query,
duration, feedbacks/score. Defaults to created_at.
:param sort_order: Sort direction — ASC (oldest first) or DESC (newest first).
Defaults to DESC.
:returns: Paginated list of search history entries or error message.
The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | ||
| limit | No | ||
| sort_field | No | created_at | |
| sort_order | No | DESC | |
| query_filter | No | ||
| pipeline_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses important behaviors: archiving delay of ~30 minutes, output stored and returned as object ID for use with object store tools, and pagination mechanics.
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 front-loaded purpose and detailed parameter sections. It is somewhat lengthy but each sentence adds value. Could be slightly more concise but overall effective.
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 output schema and no annotations, the description thoroughly covers input parameters, output structure (including fields in each entry), pagination, and how to use object IDs. It also mentions error handling briefly.
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% coverage, but the description provides extensive documentation for all 6 parameters including defaults, examples, supported fields for query_filter, and enum values for sort_field and sort_order.
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 retrieves search history for a specific pipeline with pagination. It distinguishes itself from the sibling tool 'list_search_history' by focusing on pipeline-specific history.
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 explains the context for using this tool (getting search history for a pipeline) and provides detailed pagination guidance. However, it does not explicitly state when to use it versus alternatives like 'list_search_history'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_pipeline_tracesA
Lists Haystack pipeline run trace summaries for a specific pipeline.
Returns one lightweight summary per query run — query_id, query text, status,
timing (duration_s, created_at), and failure details if the run failed.
Summaries do not include spans or logs. Use this to browse runs, find slow or
failed queries, then pass a query_id to get_pipeline_trace for the full
execution trace (spans with essential tags such as component type),
get_pipeline_trace_span_tags for a single span with full tags (including input/output),
or get_pipeline_trace_logs for the logs of the trace.
Use the after parameter with next_cursor from the response to fetch
the next page.
:param pipeline_name: Name of the pipeline to retrieve traces for.
:param limit: Maximum number of trace entries to return per page (default 10).
:param after: ISO-8601 timestamp cursor from next_cursor on the previous response.
:param query_filter: An OData filter expression to narrow down results.
Supported fields: query, client_source_path, pipeline_version_id, answer,
api_key, created_at, created_by, tags/tag_id, feedbacks, feedbacks/score,
feedbacks/comment, feedbacks/bookmarked, session_id, search_session_id,
feedbacks/result_id, request/filters, request/params, duration, labels,
status, note.
Example: "status eq 'failed'" or "created_at ge 2024-01-01T00:00:00Z".
:param sort_field: Field to sort results by. One of: created_at, query,
duration, feedbacks/score. Defaults to created_at.
:param sort_order: Sort direction — ASC (oldest first) or DESC (newest first).
Defaults to DESC.
:returns: Paginated list of pipeline trace summaries or an error message.
The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | ||
| limit | No | ||
| sort_field | No | created_at | |
| sort_order | No | DESC | |
| query_filter | No | ||
| pipeline_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility. It discloses what the summaries include (query_id, status, timing, failure details) and what they exclude ('do not include spans or logs'), and explains that the output is automatically stored and returns an object ID for later reference.
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 purpose and return semantics, then parameter docs. It is longer than minimal, but the length is justified by the parameter richness and usage guidance; no sentence is wasted.
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 six parameters, no output schema, and no annotations, the description fully covers return values, pagination, filtering, sorting, object ID handling, and differentiates from related tools.
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 compensates fully with :param docs for all six parameters, including defaults, supported filter fields, enum values for sort_field, and OData filter examples.
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: 'Lists Haystack pipeline run trace summaries for a specific pipeline.' It clearly distinguishes itself from siblings like get_pipeline_trace, get_pipeline_trace_span_tags, and get_pipeline_trace_logs by stating it returns lightweight summaries without spans or logs.
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?
Explicit usage guidance is provided: 'Use this to browse runs, find slow or failed queries, then pass a query_id to get_pipeline_trace for the full execution trace...' It also documents pagination via 'after' and 'next_cursor', and mentions alternatives for spans, tags, and logs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_pipeline_versionsA
Lists all versions of a pipeline, ordered by version number descending (newest first). :param pipeline_name: Name of the pipeline to list versions for. :param after: Cursor (version_id UUID) to fetch the next page of results. :returns: Paginated list of pipeline versions or error message.
The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | ||
| pipeline_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It mentions pagination via 'after' cursor, auto-storage of output, and formatted preview with object ID. However, it lacks details on error handling, rate limits, or any destructive aspects. The read-only nature is implied but not stated.
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?
Description includes a clear one-liner for purpose, parameter docs, and then extra sentences about auto-storage and object ID usage. While informative, it could be more concise by integrating the storage note with the return description.
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 output schema, the description explains the return format (formatted preview with object ID) and pagination. However, it does not describe the schema of each version or cover error scenarios, making it adequate but not thorough.
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 descriptions for parameters (coverage 0%), so the description adds essential meaning: 'pipeline_name' as the target pipeline and 'after' as a cursor UUID for pagination. This compensates well for the schema gap.
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 'Lists all versions of a pipeline' and specifies ordering 'by version number descending (newest first)'. It distinguishes this from siblings like get_pipeline_version (single version) and list_pipelines (list pipelines).
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 explicit guidance on when to use this tool versus alternatives such as get_pipeline_version, search_pipeline_with_filters, or list_pipeline_search_history. The description does not mention prerequisites 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.
list_search_historyA
Retrieves search history for the configured deepset workspace.
Returns past searches run in the workspace, including queries, answers, prompts, feedback, and metadata. Use this to inspect what users have searched for, analyze usage, or debug pipeline behavior.
Each entry includes:
request.query— the search query texttime/created_at— when the search randuration— how long it took (seconds)status— 'success' or 'failed'pipeline.name— which pipeline handled the queryresponse— the list of search resultsfeedback,labels,note— user annotations
Use the after parameter with the next_cursor value from the
previous response to fetch the next page.
:param limit: Maximum number of entries to return per page (default 10, max 1000).
:param after: ISO-8601 timestamp cursor to fetch entries older than this point.
Pass the value from next_cursor on the previous response.
:param query_filter: An OData filter expression to narrow down results.
Supported fields: query, client_source_path, pipeline_version_id, answer,
api_key, created_at, created_by, tags/tag_id, feedbacks, feedbacks/score,
feedbacks/comment, feedbacks/bookmarked, session_id, search_session_id,
feedbacks/result_id, request/filters, request/params, duration, labels,
status, note.
Example: "created_at ge 2024-01-01T00:00:00Z" or "query eq 'my search'".
:param sort_field: Field to sort results by. One of: created_at, query,
duration, feedbacks/score. Defaults to created_at.
:param sort_order: Sort direction — ASC (oldest first) or DESC (newest first).
Defaults to DESC.
:returns: Paginated list of search history entries or error message.
The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | ||
| limit | No | ||
| sort_field | No | created_at | |
| sort_order | No | DESC | |
| query_filter | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description covers pagination, output storage, object ID referencing, and entry structure. It does not mention rate limits or auth but adequately communicates read-only 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 well-structured with clear sections (purpose, uses, entry fields, params, output). It is slightly verbose but each sentence adds value; could be more concise.
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 params, no annotations, no output schema), the description is remarkably complete: it explains pagination, output format, object ID usage, and parameter details thoroughly.
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?
Despite 0% schema description coverage, the description provides comprehensive parameter docs: limit, after, query_filter with examples, sort_field, sort_order with defaults and enumerations, adding significant value beyond 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 it retrieves search history for the configured deepset workspace, listing past searches with detailed fields. It distinguishes itself from sibling tools like list_pipeline_search_history by focusing on workspace-level history.
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 usage scenarios (inspect searches, analyze usage, debug) and pagination guidance. However, it does not explicitly contrast with similar tools 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_secretsA
Lists all secrets available in the user's deepset organization.
Use this tool to retrieve a list of secrets with their names and IDs. This is useful for getting an overview of all secrets before retrieving specific ones. :param limit: Maximum number of secrets to return (default: 10) :param after: The cursor to fetch the next page of results
:returns: List of secrets or error message
The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | ||
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries full burden. It discloses that the output is a list with names/IDs, is automatically stored, includes pagination details (limit, after cursor), and provides a formatted preview with an object ID. No mention of side effects, but reasonable for a read-only listing operation.
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 no unnecessary repetition. It is front-loaded with purpose. Minor redundancy in docstring formatting, but overall each sentence contributes useful 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?
Given the simplicity of the tool (2 parameters, no output schema, no annotations), the description fully covers purpose, parameters, output behavior, and integration with object store. It is complete for an effective listing 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 has 0% coverage, but the description explicitly documents both parameters: 'limit: Maximum number of secrets to return (default: 10)' and 'after: The cursor to fetch the next page of results'. This adds meaningful context beyond the raw schema types and defaults.
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 'Lists all secrets available in the user's deepset organization' with a specific verb and resource. It distinguishes from sibling 'get_secret' by implying the action covers all secrets.
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 notes it's useful 'for getting an overview of all secrets before retrieving specific ones,' providing a when-to-use hint. It also explains how to use the output (object ID for further operations), but does not explicitly mention when not to use it or name alternatives like get_secret.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_sessionsA
Lists a pipeline's Sessions that a scoring run can judge, newest last activity first.
A Session is the turns that share a search_session_id; a run without one is a single-turn
Session named by its query_id. Only Sessions whose every turn still has its trace are
listed. session_id is the id a scoring run takes. To find Sessions that went wrong
(a failed turn, negative feedback), use list_pipeline_traces with an OData filter instead
and take each row's search_session_id, or its query_id when that is empty.
:param pipeline_name: Name of the pipeline.
:param origin: Only Sessions whose every turn came from a Service, the pipeline's own API, or the Playground.
:param deployment_id: Only Sessions whose every turn this Service served.
:param pipeline_version_id: Only Sessions whose every turn this pipeline version served.
:param since: ISO-8601 time; only Sessions last active at or after it.
:param until: ISO-8601 time; only Sessions last active at or before it.
:param limit: Most Sessions per page (at most 200). A page can hold fewer and still have a next.
:param cursor: The next value of the previous page.
:returns: One page of Sessions, or an error message.
The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| since | No | ||
| until | No | ||
| cursor | No | ||
| origin | No | ||
| deployment_id | No | ||
| pipeline_name | Yes | ||
| pipeline_version_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does well: it discloses the trace-completeness filter, the pagination quirk ('a page can hold fewer and still have a next'), and how session_id relates to what a scoring run consumes. It does not cover authorization, rate limits, or errors beyond 'or an error message', so it stops short of a 5.
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?
Front-loaded with purpose and the Session definition, then ordered cleanly into alternative-tool guidance, parameter docs, and return note. It is long but nearly every line carries information; the trailing object-store boilerplate is generic filler that dilutes an otherwise tight definition.
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 an 8-parameter list tool with no annotations and no output schema, the definition covers purpose, scope filter, all parameters, pagination, return shape, and how to handle the stored result object. Nothing an agent needs to call this correctly appears to be missing.
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 carry all parameter meaning, and it does: every one of the 8 parameters gets a semantic gloss, including the important 'every turn' semantics for origin/deployment_id/pipeline_version_id, ISO-8601 for since/until, the 200 cap for limit, and cursor being the previous page's 'next'. The only nit is that origin values are reworded rather than matching the enum literals.
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?
States a specific verb and resource ('Lists a pipeline's Sessions that a scoring run can judge') plus ordering ('newest last activity first'), and defines what a Session actually is (turns sharing a search_session_id, otherwise a single-turn query_id). It explicitly distinguishes itself from the nearest sibling by naming list_pipeline_traces and the use case that selects 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?
Gives explicit routing: use this for Sessions a scoring run can judge; use list_pipeline_traces with an OData filter when looking for Sessions that went wrong, and it even explains how to recover the session key from that path. The filtering constraint ('only Sessions whose every turn still has its trace') tells the agent when this tool will silently return less than expected.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_templatesA
Retrieves a list of all available pipeline and indexing templates.
:param limit: Maximum number of templates to return (default: 100).
:param pipeline_type: The type of pipeline to return.
:param after: The cursor to fetch the next page of results.
If there are more results to fetch, the cursor will appear as next_cursor on the response.
:returns: List of pipeline templates or error message.
The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | ||
| limit | No | ||
| pipeline_type | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses pagination via 'after' parameter and 'next_cursor' response, and explains that output is automatically stored and can be referenced via object ID. However, it does not mention rate limits or authorization needs, which are less critical for a read-only list endpoint.
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 parameter documentation and return behavior. It is concise, with each sentence adding value, though the object storage guidance could be integrated more tightly.
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 output schema, the description covers return format (list, object ID, store), cursor pagination, and a note about error messages. It adequately handles three parameters, but could mention empty result cases.
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 each parameter: limit (default 100), pipeline_type (type of pipeline), and after (cursor for pagination). It adds operational meaning beyond the schema's type definitions.
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 retrieves a list of all available pipeline and indexing templates. It uses a specific verb ('retrieves') and resource ('templates'), distinguishing it from sibling tools like list_indexes and list_pipelines.
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 does not provide guidance on when to use this tool versus alternatives such as search_templates. It mentions pagination but lacks explicit context for when this tool is appropriate or when to use other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_workspacesB
Retrieves a list of all workspaces available to the user.
This tool provides an overview of all workspaces that the user has access to. Each workspace contains information about its name, ID, supported languages, and default idle timeout settings. :returns: List of workspaces or error message.
The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
No 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 behavioral traits such as automatic storage of output and returning an object ID for further reference, but it does not explicitly state read-only safety or any side effects. This adds moderate value beyond a simple 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 somewhat verbose with redundancy in the first two sentences. It is structured with a clear purpose sentence followed by output details, but could be more concise. The information about object ID usage is useful but could be integrated more tightly.
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 (0 parameters, no output schema, no annotations), the description covers the purpose, output fields, and how to use the result (object ID). It is fairly complete, though it could mention potential limitations like pagination or authentication requirements.
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?
There are zero parameters, so schema coverage is 100%. The description adds meaning by describing the output structure (fields like name, ID, languages, idle timeout) and how to use the object ID. This justifies a score above the baseline of 3, but not 5 as it could be more specific.
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 retrieves a list of all workspaces available to the user, using specific verb 'Retrieves' and resource 'list of all workspaces'. It also enumerates the per-workspace fields (name, ID, supported languages, idle timeout). However, it does not explicitly differentiate from sibling tools like get_workspace or other list tools, settling for a score of 4.
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 no explicit guidance on when to use this tool versus alternatives such as get_workspace or other list tools. It merely states what it does without contextual advice, resulting in a low score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
load_skillA
Loads the full content of a bundled skill guide by name.
Use this tool to read the step-by-step instructions for a specific skill supported by this server.
Available skills: - custom-code: Use this skill whenever writing, generating, reviewing, or fixing a Haystack custom component (deepset_cloud_custom_nodes.code.code_component.Code) or custom tool (deepset_cloud_custom_nodes.tools.code_tool.CodeTool) for the deepset/Haystack enterprise platform. Triggers include requests to create a custom component, a custom tool, to check custom code against the platform's structural constraints (single class/function per file, required decorators, type annotations, allowed dependencies), or to extend the existing pipeline for functionality that is not already covered by existing components. - evaluation: Use this skill before writing, reviewing or fixing an Evaluator (an Evaluation Function) for the Haystack Enterprise Platform, before suggesting which Evaluators a pipeline needs, and before picking the Sessions a scoring run should judge. Covers the @metrics declaration and its grains, the return shape the worker enforces, the judge() contract for LLM-judged criteria, the exact source shape the Judge form can open, how to find Sessions (including failed and negatively rated ones), and structural recipes over the Session helpers.
:param skill_name: The name of the skill to load (see the list above). :returns: The skill's markdown content, or an error message listing available skills if not found.
| Name | Required | Description | Default |
|---|---|---|---|
| skill_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden, and it does disclose the failure behavior: a missing skill returns 'an error message listing available skills' rather than failing opaquely, and the success payload is markdown content. It does not explicitly state the read-only/idempotent nature of the call, leaving a small gap for an unannotated 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?
Purpose is front-loaded in the first sentence, and the trailing ':param'/':returns' lines are compact. The Available skills entries are long, but each clause maps to a real routing decision, so the length is largely earned rather than 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?
With no output schema, the description supplies the return contract ('the skill's markdown content, or an error message listing available skills if not found'). Combined with the enumerated valid values and per-skill triggers, an agent has everything needed to select and invoke the tool correctly.
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% (the schema only says 'Skill Name'), so the description must compensate. It does so by defining the parameter's meaning and enumerating the valid values ('custom-code', 'evaluation'), effectively supplying the enum the schema lacks. It stops short of describing naming/case conventions.
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 states a specific verb and resource ('Loads the full content of a bundled skill guide by name') and the second clarifies the scope ('step-by-step instructions for a specific skill supported by this server'). This is clearly distinguishable from every sibling tool, which are API/deployment/pipeline operations rather than knowledge retrieval.
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 tells the agent when to use the tool ('to read the step-by-step instructions for a specific skill'), and the Available skills list gives per-skill trigger conditions ('Use this skill whenever writing, generating, reviewing, or fixing a Haystack custom component...', 'Use this skill before writing, reviewing or fixing an Evaluator...'). The conditions that select each argument value are spelled out rather than inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
patch_pipeline_versionA
Updates fields of an existing pipeline version in place.
At least one of yaml_configuration, description, or is_draft must be provided. :param pipeline_name: Name of the pipeline. :param version_id: UUID of the version to update. :param yaml_configuration: New YAML configuration for the version (optional). :param description: New description for the version (optional). :param is_draft: New draft status for the version (optional). :returns: The updated pipeline version or error message.
All parameters accept object references in the form @obj_id or @obj_id.path.to.value.
Examples::
# Direct call with values
patch_pipeline_version(data={'key': 'value'}, threshold=10)
# Call with references
patch_pipeline_version(data='@obj_123', threshold='@obj_456.config.threshold')
# Mixed call
patch_pipeline_version(data='@obj_123.items', threshold=10)The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
| is_draft | No | ||
| version_id | Yes | ||
| description | No | ||
| pipeline_name | Yes | ||
| yaml_configuration | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries the burden. It mentions that it updates in place, returns the updated pipeline version or error, and explains object reference and object store usage. However, it does not discuss permissions, atomicity, or reversibility.
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 statement, parameter list, reference explanation, and examples. It is appropriately sized but some redundancy exists in repeating the parameter explanations.
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 output schema and no annotations, the description covers purpose, parameters, references, and output. It mentions the return is an object ID stored in object store. Could be improved by describing the structure of the updated version or common error cases.
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 description coverage, the description compensates by listing each parameter with a brief explanation, including that they accept object references. Examples further clarify usage. Could add more detail on accepted formats or constraints.
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 updates fields of an existing pipeline version in place, which distinctly differs from create (create_pipeline_version) and restore (restore_pipeline_version) 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?
It states that at least one optional field must be provided but does not explicitly compare with alternatives like create_pipeline_version or restore_pipeline_version. The context is clear but lacks exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
replay_sessionA
Replays a recorded Session against a pipeline version, a draft included, into a new Session.
Use it to check a pipeline change on real Sessions: replay the Sessions behind the change
against the draft version, then try_evaluator the relevant Evaluators on each source
Session and on its replayed_session_id, and compare. Each replay runs the pipeline on the
customer's models, so say what it costs and get a yes before replaying. The source Session and
the deployed pipeline are untouched.
FIRST_USER_MESSAGE replays the first turn only; ALL_USER_MESSAGES replays every turn of a chat in
order. Leave it unset to use the server's default (the first turn), and say so when reporting.
If status is still CREATED or STARTED the wait ran out: poll get_session_replay.
:param pipeline_name: Name of the pipeline.
:param session_id: The Session to replay: a search_session_id, or a single-turn run's query_id.
:param pipeline_version_id: The pipeline version to replay against, e.g. the current draft's.
:param replay_mode: FIRST_USER_MESSAGE or ALL_USER_MESSAGES; unset uses the server's default.
:param wait_seconds: How long to wait for the replay before handing back the id to poll.
:returns: The replay report with the new Session's id, or an error message.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes | ||
| replay_mode | No | ||
| wait_seconds | No | ||
| pipeline_name | Yes | ||
| pipeline_version_id | Yes |
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 and does so: it discloses that the source Session and deployed pipeline are untouched, that each replay runs on the customer's models and costs money requiring a yes, and the exact semantics of FIRST_USER_MESSAGE vs ALL_USER_MESSAGES with the unset default. This is unusually complete behavioral disclosure.
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?
Front-loads the purpose and the cost/workflow guidance before the enumerated parameter block, and every sentence carries signal. It is on the long side and the param block partially restates schema fields, but nothing is 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?
Given a mutation-ish 5-param tool with no annotations and no output schema, the description covers cost, consent, scope, defaults, polling fallback, and return value, leaving nothing an agent needs to call it correctly unaddressed.
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 and it does, documenting all five parameters including session_id accepting a search_session_id or query_id, pipeline_version_id as e.g. the current draft, replay_mode's enum semantics and default, and wait_seconds' waiting behavior.
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?
States a specific verb (replays) and resource (a recorded Session against a pipeline version, draft included, into a new Session). An agent can immediately distinguish it from siblings like get_session_replay or run_component.
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?
Gives explicit when-to-use (check a pipeline change on real Sessions), a concrete workflow (replay the Sessions behind the change against the draft, then try_evaluator and compare), an alternative for polling (get_session_replay) if status is CREATED/STARTED, and a consent prerequisite before spending customer models.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restore_pipeline_versionC
Restores a non-draft pipeline version to be editable as a new draft.
The previous draft (if any) is finalized, getting an incremented version number. :param pipeline_name: Name of the pipeline to restore. :param version_id: UUID of the version to restore. :returns: The restored pipeline version or error message.
All parameters accept object references in the form @obj_id or @obj_id.path.to.value.
Examples::
# Direct call with values
restore_pipeline_version(data={'key': 'value'}, threshold=10)
# Call with references
restore_pipeline_version(data='@obj_123', threshold='@obj_456.config.threshold')
# Mixed call
restore_pipeline_version(data='@obj_123.items', threshold=10)The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
| version_id | Yes | ||
| pipeline_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the full burden. It discloses two key behaviors: finalizing the previous draft with an incremented version number, and that the output is automatically stored in the object store. However, it does not explain potential irreversibility (finalization may be destructive) or required permissions. The side effects are mentioned but not thoroughly explored.
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 verbose but includes irrelevant and incorrect examples (e.g., 'data', 'threshold' parameters) and a repetitive explanation about object references. The core purpose and side effects are front-loaded, but the extraneous content harms conciseness. Every sentence does not earn 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?
The tool modifies state and returns an object store reference, but the description does not cover edge cases (e.g., what if no previous draft exists? what if version is already a draft?). With no output schema, the return format is only partially described ('formatted preview'), lacking details. The incorrect examples further reduce 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 fully explain parameters. It clarifies version_id as a UUID and pipeline_name as the name, but the examples are grossly incorrect, suggesting parameters 'data' and 'threshold' that do not exist in the schema. This undermines the parameter description and could mislead an agent.
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 the tool restores a non-draft pipeline version to be editable as a new draft with side effects. However, the examples that follow are contradictory, using parameters 'data' and 'threshold' that do not match the actual schema, which confuses the intended purpose. The verb 'restore' and resource 'pipeline version' are specific, but the incorrect examples lower clarity.
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 does not specify when to use this tool versus alternatives like patch_pipeline_version. It lacks any guidance on prerequisites (e.g., ensuring the version is non-draft) or when not to use it. The sibling tools include patch_pipeline_version for editing drafts, but no comparison is provided, leaving an agent without context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_componentA
Run a Haystack component with the given parameters.
This tool allows you to execute a Haystack component by providing its type
and initialization parameters, then passing input data to get results.
Use this to test components and see how they would work in your pipeline.
:param component_type: The type of component to run
(e.g., "haystack.components.builders.prompt_builder.PromptBuilder")
:param init_params: Initialization parameters for the component
:param input_data: Input data for the component
:param input_types: Optional type information for inputs (inferred if not provided). For custom types use the full
import path (e.g. haystack.dataclasses.document.Document for Document)
:param haystack_version: Optional version of Haystack to use for the component.
Pass the same version as specified in the pipeline yaml's dependencies section for the haystack-ai package.
:returns: Dictionary containing the component's outputs or error message string
All parameters accept object references in the form @obj_id or @obj_id.path.to.value.
Examples::
# Direct call with values
run_component(data={'key': 'value'}, threshold=10)
# Call with references
run_component(data='@obj_123', threshold='@obj_456.config.threshold')
# Mixed call
run_component(data='@obj_123.items', threshold=10)The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
| input_data | No | ||
| init_params | No | ||
| input_types | No | ||
| component_type | Yes | ||
| haystack_version | No |
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 transparently explains that outputs are stored and returned as object IDs, supports object references, and notes error message returns. It does not mention side effects or resource implications, but the execution nature is 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 long but well-structured with clear sections: purpose, parameters, examples, and output behavior. It front-loads the core purpose and uses formatting (code blocks, :param tags) to improve readability. Some redundancy exists (e.g., repetition of 'output is automatically stored') but overall it is 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?
Given the tool's complexity (5 params, no output schema) and lack of annotations, the description is remarkably complete. It covers parameter semantics, object reference syntax, output storage and retrieval via object ID, error handling, and versioning considerations. It leaves no significant gaps for an agent to misuse the 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 fully compensate. It explains each parameter (component_type, init_params, input_data, input_types, haystack_version) and provides concrete examples with object references and error handling. This far exceeds the schema's minimal type-only definitions.
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: 'Run a Haystack component with the given parameters' and elaborates on executing components to get results. It distinguishes itself from sibling tools by focusing on component execution/testing rather than pipeline management or object store operations.
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 usage context ('Use this to test components and see how they would work in your pipeline') and gives practical examples. However, it does not explicitly mention when not to use this tool or suggest alternative tools for related tasks, though the sibling list makes the context clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_component_definitionsA
Searches for components based on name or description using semantic similarity.
:param query: The search query
:param top_k: Maximum number of results to return (default: 5)
:param haystack_version: Optional version of Haystack to use.
Pass the same version as specified in the pipeline yaml's dependencies section for the haystack-ai package.
:returns: ComponentSearchResults model or error message string
The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| top_k | No | ||
| haystack_version | No |
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 output is automatically stored, returns a formatted preview with an object ID, and explains how to use the object ID with object store tools. It also notes the possibility of an error message string. This goes beyond a simple 'search' description, though it stops short of discussing 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 well-structured with a clear opening statement, parameter docs, and return behavior. It is slightly long but every sentence conveys useful information, especially the object ID usage instructions.
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 search behavior, parameter usage, return type, storage mechanism, and how to reference the result via object ID. It is sufficient for an agent to correctly invoke and use the tool, though it could be even more complete by explaining the semantics of 'semantic similarity' in terms of matching behavior.
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 fully compensates by explaining all three parameters: query, top_k (with default and meaning), and haystack_version (with detailed guidance on matching the pipeline yaml). This adds significant 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 the tool 'Searches for components based on name or description using semantic similarity,' which is a specific verb+resource+method. This clearly distinguishes it from sibling search tools like search_docs and search_pipeline.
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 (semantic search for components) and even adds a note about matching the haystack_version to the pipeline yaml. However, it does not explicitly exclude alternative tools or mention 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.
search_docsA
Search the Haystack Enterprise Platform documentation.
Use this to find information about Haystack components, pipelines, document stores, embedders, generators, retrievers, and other AI platform features. Returns relevant documentation excerpts with source URLs.
:param query: The search query. Be specific about what you're looking for.
Examples: 'How to create a RAG pipeline', 'OpenAI embedder configuration',
'document store filters'.
:param section: Optional documentation section id from list_doc_sections (for example,
how-to-guides or api). Limits results to that section.
:returns: Relevant documentation excerpts with source URLs.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| section | No |
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 return shape ('excerpts with source URLs') and that section narrows results, but says nothing about ranking, result count limits, pagination, or empty-result behavior for a search 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?
Front-loaded with the one-line purpose, then scope, then parameters. Sphinx-style ':param:' markup is slightly verbose and the ':returns:' line restates the 'source URLs' already stated in the opening paragraph, a minor redundancy but not wasteful overall.
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?
No output schema and no annotations, so the description must stand alone; it covers purpose, both parameters, and the return contents, which is nearly enough for a two-parameter read tool. It stops short on result-volume and pagination behavior, the main remaining 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?
Schema description coverage is 0%, so the description must compensate, and it does: 'query' is explained with three concrete example queries, and the optional 'section' is defined as a section id sourced from list_doc_sections with two examples ('how-to-guides', 'api'). This resolves the meaning and provenance of 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?
States a specific verb and resource ('Search the Haystack Enterprise Platform documentation') and enumerates the topical scope (components, pipelines, document stores, embedders, generators, retrievers). It is implicitly distinct from sibling search tools like search_pipeline and search_templates, but never names them, leaving the agent to infer the boundary.
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?
Explicitly frames when to use it ('Use this to find information about Haystack components, pipelines...') and points to list_doc_sections as the source for valid section ids, which is a genuine routing hint. No when-not guidance or exclusion against the other search_* siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_pipelineA
Searches using a pipeline.
Uses the specified pipeline to perform a search with the given query. Before executing the search, checks if the pipeline is deployed (status = DEPLOYED). Returns search results. :param pipeline_name: Name of the pipeline to use for search. :param query: The search query to execute.
:returns: Search results or error message.
The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| pipeline_name | Yes |
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 that the tool checks deployment status, returns search results, automatically stores output with an object ID, and can return error messages. This adds valuable context beyond a simple search.
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 somewhat verbose with repetition (e.g., 'Returns search results' and 'Returns a formatted preview'). It could be more concise by merging statements, but it is front-loaded with the core 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 two simple parameters and no output schema, the description covers the main behavior: deployment check, object ID storage, and integration hints. Lacks details on error types or pagination, but it is mostly complete for a basic search 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 input schema has 0% parameter description coverage, but the description explicitly documents each parameter with clear meaning (pipeline_name, query). Although not exhaustive on formats, it sufficiently compensates for the schema gap.
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 searches using a pipeline with a given query. However, it does not differentiate from sibling tools like search_pipeline_with_filters or search_pipeline_with_params, which might have more specific purposes.
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 a pipeline is available and deployed (checks status) but does not provide explicit guidance on when to use this tool versus alternatives. No exclusions or preferred contexts are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_pipeline_with_filtersB
Searches using a pipeline with filters.
Uses the specified pipeline to perform a search with the given query and filters. Filters follow the Haystack filter syntax: https://docs.haystack.deepset.ai/docs/metadata-filtering. Before executing the search, checks if the pipeline is deployed (status = DEPLOYED). Returns search results. :param pipeline_name: Name of the pipeline to use for search. :param query: The search query to execute. :param filters: The filters to apply to the search.
:returns: Search results or error message.
The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| filters | No | ||
| pipeline_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses the pre-execution deployment check and that output is stored with an object ID. However, no annotations are present, and the description does not cover permissions, rate limits, or read-only nature. Adequate but not comprehensive.
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?
Description is somewhat verbose with redundant phrasing (e.g., 'Searches using...' and 'Uses the specified pipeline...'). The docstring format is structured but could be trimmed.
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?
Lacks details on return value structure; only says 'search results or error message' and mentions a formatted preview. Without an output schema, the description should specify result fields or types. Incomplete for a search 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 coverage is 0%, but the description compensates by explaining all three parameters: pipeline_name, query, and filters (with link to syntax). Adds meaningful context beyond the schema's type and title.
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?
Description clearly states the tool performs a search using a pipeline with filters (verb+resource). It distinguishes from siblings like 'search_pipeline' and 'search_pipeline_with_params' by explicitly mentioning Haystack filter syntax and the pipeline deployment check.
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 on when to use this tool vs alternatives (e.g., 'search_pipeline' or 'search_pipeline_with_params'). Does not mention when not to use or prerequisites beyond the deployment check.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_pipeline_with_paramsA
Searches using a pipeline with params.
Uses the specified pipeline to perform a search with the given query and params. Params can be arbitrary parameters to customize the search behavior. Filters can be used as well under the "filters" key in params. Filters follow the Haystack filter syntax: https://docs.haystack.deepset.ai/docs/metadata-filtering. Before executing the search, checks if the pipeline is deployed (status = DEPLOYED). Returns search results. :param pipeline_name: Name of the pipeline to use for search. :param query: The search query to execute. :param params: The parameters to customize the search.
:returns: Search results or error message.
The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| params | No | ||
| pipeline_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description carries the full burden. It discloses key behaviors: it checks if the pipeline is deployed before executing, stores results in an object store for later reference, and returns a formatted preview with an object ID. It also notes potential error messages. This level of detail helps an AI agent understand side effects and output format, though it does not mention rate limits or authentication needs.
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 verbose and contains redundancy, e.g., the first two sentences both state the same idea: 'Searches using a pipeline with params.' and 'Uses the specified pipeline to perform a search...'. It also includes a docstring-style parameter list that could be integrated more succinctly. While it is clearly structured, it could be tighter.
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 lack of output schema and low schema coverage, the description provides comprehensive context: it explains the pre-execution check, the return format (error messages or object ID preview), and the object store integration. It also hints at using object store tools to view nested properties. This covers the essential aspects needed for an AI agent to use the tool effectively.
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 description coverage, the description compensates well. It defines each parameter: pipeline_name ('Name of the pipeline to use'), query ('The search query to execute'), and params ('parameters to customize the search'). For params, it adds that arbitrary parameters are allowed and that filters can be specified under the 'filters' key, with a link to the Haystack filter syntax. This adds significant value beyond the bare 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: 'Searches using a pipeline with params.' It specifies the verb 'searches' and the resource 'pipeline with params', making the function distinct. However, it does not explicitly differentiate from sibling tools like search_pipeline and search_pipeline_with_filters, which could confuse an AI agent when selecting among them.
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 no explicit guidance on when to use this tool versus alternatives. It does not mention conditions for choosing this tool over search_pipeline or search_pipeline_with_filters, nor does it explain any prerequisites. The only implicit hint is the mention of arbitrary params, but this is not framed as a usage criterion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_templatesA
Searches for pipeline or indexing templates based on name or description using semantic similarity. :param query: The search query. :param top_k: Maximum number of results to return (default: 10). :param pipeline_type: The type of pipeline to return ('indexing' or 'query'; default: 'query').
:returns: Search results with similarity scores or error message.
The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| top_k | No | ||
| pipeline_type | No | query |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that output is automatically stored, returns an object ID, and can be referenced in other functions. It also mentions similarity scores and error messages. This adds value beyond the lack of annotations, though it doesn't cover rate limits 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 front-loaded with purpose, then parameter list, then return and usage hints. Each section adds value, though the docstring format is slightly verbose for the parameter count. No redundant sentences.
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 output schema, the description fully explains input parameters, return type (search results with scores, object ID, error messages), and how to use the object ID. It covers all needed context for an agent to use the tool effectively.
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 description coverage, the description compensates by explaining query, top_k (default 10), and pipeline_type (default 'query', options 'indexing' or 'query'). It adds meaning beyond the schema's type and default fields.
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 searches for pipeline or indexing templates using semantic similarity on name or description. The verb 'searches' and resource 'templates' are specific, and it distinguishes from sibling tools like search_pipeline or list_templates.
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 for semantic similarity searches but does not explicitly state when to prefer this over exact-match tools or list_templates. No alternatives or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sed_object_storeA
Find and replace text in a string stored in the object store using regex.
Applies substitution (like sed s/pattern/replacement/) and stores the result
as a new object, returning its ID. The original object is not modified.
:param object_id: The id of the object to modify in the format @obj_001.
:param pattern: Regular expression pattern to find.
:param replacement: Replacement string. Supports backreferences like \1, \2.
:param path: Navigation path to a nested string attribute (optional).
:param count: Maximum number of replacements (0 = replace all, default: 0).
:param case_sensitive: Whether the pattern match should be case sensitive (default: False).
:return: New object ID with the modified string and a preview of the result.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | ||
| count | No | ||
| pattern | Yes | ||
| object_id | Yes | ||
| replacement | Yes | ||
| case_sensitive | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description provides key behavioral details: the original object is not modified, the result is stored as a new object, and it returns the new object ID and a preview. It could mention error conditions or performance, but the core behavior is well disclosed.
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-organized: a brief opening sentence followed by a parameter list. It front-loads the purpose. However, the parameter list is somewhat verbose with repeated line breaks, which could be tightened without losing clarity.
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 (6 parameters, regex substitution) and the absence of an output schema, the description fully covers what the tool does, its parameters, return value (new ID and preview), and safety (non-destructive). No critical information is missing, and it aligns with sibling 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?
Schema description coverage is 0%, so the description compensates by explaining all six parameters: `object_id`, `pattern`, `replacement`, `path`, `count`, `case_sensitive`. It adds meaning like "Supports backreferences" for `replacement` and "Navigate to a nested string attribute" for `path`, exceeding the schema's minimal definitions.
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 "Find and replace text in a string stored in the object store using regex," specifying the verb (find and replace), resource (string in object store), and method (regex). It distinguishes from siblings like `grep_object_store` (search) and `get_from_object_store` (retrieve).
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 explains the tool's operation (like `sed s/pattern/replacement/`) and that it creates a new object without modifying the original. While it implies usage for regex substitution, it does not explicitly state when to use this tool versus alternatives or provide exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
try_evaluatorA
Tries Evaluator source on one Session and returns what it found. Persists nothing.
Use it to check a draft before showing it as ready, and to judge a replayed Session against
its source. The source is an Evaluation Function as the evaluation skill describes; to try a
saved Evaluator, read a version's python_code with get_evaluator and pass it. A try that
judges with a model costs a model call per judged turn on the customer's provider.
outcome ERRORED means the code broke: read error_detail and fix it. metrics are the
values per address with their rationales. trace_summary says which Session Tools the
evaluator called. If status is RUNNING the wait ran out: poll get_evaluation_try.
:param pipeline_name: Name of the pipeline the Session belongs to.
:param python_code: The Evaluation Function's source.
:param session_id: The Session to judge: a search_session_id, or a single-turn run's query_id.
:param wait_seconds: How long to wait for the result before handing back the id to poll.
:returns: The try report, or an error message.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes | ||
| python_code | Yes | ||
| wait_seconds | No | ||
| pipeline_name | Yes |
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 and does so well: it discloses the side-effect profile ("Persists nothing"), the cost model (a model call per judged turn on the customer's provider), the semantics of each outcome value (ERRORED → read error_detail; RUNNING → poll get_evaluation_try), and the shape of the result (metrics with rationales, trace_summary).
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?
Front-loaded with the core action and the no-persistence guarantee, then layers usage, cost, and outcome semantics efficiently. The trailing ":param"/":returns:" epilogue partially restates content already given in prose, a minor 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 4-parameter, no-annotation, no-output-schema tool, the description supplies everything an agent needs: purpose, usage, cost, failure handling, polling behavior, and the meaning of each returned field. Nothing material is missing.
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, and it documents all four parameters in prose, adding real meaning beyond the bare schema: session_id is a search_session_id or a single-turn run's query_id, and wait_seconds controls how long before handing back the id to poll. It stops short of format details but fully closes the coverage gap.
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?
States a specific verb and resource ("Tries Evaluator source on one Session") plus a scope constraint ("Persists nothing"), which immediately separates it from siblings like get_evaluation_try, get_evaluator, and list_evaluators. The agent knows exactly what operation this performs before opening any schema.
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?
Gives explicit use cases ("check a draft before showing it as ready", "judge a replayed Session against its source") and routes to alternatives (read a version's python_code with get_evaluator to try a saved Evaluator). The condition selecting this versus get_evaluation_try is also spelled out via the RUNNING/poll flow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_deploymentB
Updates a deployment's metadata, sizing, or execution mode.
Only fields you provide are changed; omitted fields keep their current value. :param deployment_id: ID of the deployment to update. :param name: New name for the deployment. :param description: New description. :param group_label: New group label. :param deployment_mode: New execution mode, "MANAGED" or "SERVERLESS". :param service_level: New sizing tier, "PRODUCTION", "DEVELOPMENT", or "CUSTOM". :param idle_timeout_in_seconds: New idle timeout, in seconds. :param min_query_replica_count: New minimum number of query replicas. :param max_query_replica_count: New maximum number of query replicas. :param max_index_replica_count: New maximum number of index replicas. :param cpu_request: New requested CPU per replica. :param cpu_limit: New CPU limit per replica. :param memory_request: New requested memory per replica. :param memory_limit: New memory limit per replica. :param gpu_limit_gigabyte: New GPU memory limit in gigabytes. :returns: The updated deployment or error message.
All parameters accept object references in the form @obj_id or @obj_id.path.to.value.
Examples::
# Direct call with values
update_deployment(data={'key': 'value'}, threshold=10)
# Call with references
update_deployment(data='@obj_123', threshold='@obj_456.config.threshold')
# Mixed call
update_deployment(data='@obj_123.items', threshold=10)The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| cpu_limit | No | ||
| cpu_request | No | ||
| description | No | ||
| group_label | No | ||
| memory_limit | No | ||
| deployment_id | Yes | ||
| service_level | No | ||
| memory_request | No | ||
| deployment_mode | No | ||
| gpu_limit_gigabyte | No | ||
| idle_timeout_in_seconds | No | ||
| max_index_replica_count | No | ||
| max_query_replica_count | No | ||
| min_query_replica_count | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden. It does disclose meaningful patch semantics ('Only fields you provide are changed') and the return shape, but it says nothing about authorization, reversibility, or side effects. Worse, the examples reference parameters ('data', 'threshold') that do not exist on this tool, leaking generic boilerplate that could actively mislead an agent.
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 purpose and patch-semantics statements are front-loaded and efficient, and the parameter list is scannable. However, the trailing object-reference examples and object-store narrative are boilerplate that does not match this tool's parameters and dilutes the signal.
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 15-parameter mutation tool with no annotations and no output schema, the description does a fair job covering parameters, mutation semantics, and the return value. It still omits permission requirements, error/conflict behavior, and any routing to related deployment tools, and the mismatched examples leave an agent with unresolved questions.
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, and it largely does: it enumerates the allowed values for deployment_mode and service_level and gives units for idle_timeout_in_seconds and gpu_limit_gigabyte. Many entries merely restate the schema titles ('New name for the deployment'), and formats for cpu/memory strings remain unstated, keeping it out of 5 territory.
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?
States a specific verb and resource ('Updates a deployment') and names the three updateable areas (metadata, sizing, execution mode), which lets an agent distinguish it from read tools like get_deployment and lifecycle tools like activate_deployment. It does not explicitly differentiate from siblings such as create_deployment_revision or update_index, so it stops short of a 5.
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?
There is no statement of when to use this tool versus alternatives, nor prerequisites such as required permissions or deployment state. The only contextual hint is the patch-like note that omitted fields keep their current value, which is behavioral rather than routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_indexA
Updates an index configuration in the specified workspace with a replacement configuration snippet.
This function validates the replacement configuration snippet before applying it to the index. If the validation fails and skip_validation_errors is False, it returns error messages. Otherwise, the replacement snippet is used to update the index's configuration. :param index_name: Name of the index to update. :param original_config_snippet: The configuration snippet to replace. :param replacement_config_snippet: The new configuration snippet. :param skip_validation_errors: If True (default), updates the index even if validation fails. If False, stops update when validation fails. :returns: Updated index or error message.
All parameters accept object references in the form @obj_id or @obj_id.path.to.value.
Examples::
# Direct call with values
update_index(data={'key': 'value'}, threshold=10)
# Call with references
update_index(data='@obj_123', threshold='@obj_456.config.threshold')
# Mixed call
update_index(data='@obj_123.items', threshold=10)The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
| index_name | Yes | ||
| skip_validation_errors | No | ||
| original_config_snippet | Yes | ||
| replacement_config_snippet | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Given no annotations, the description discloses validation, error behavior, and object reference support. It could mention whether it performs a full replacement or merge, but overall is 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 lengthy and includes repetitive param docs and examples. While structured, it could be more concise without losing clarity.
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 validation, error handling, object references, examples, and output format. Missing details on whether the update is a full replacement or merge, and permission requirements.
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 full parameter documentation with types and behavior, including the skip_validation_errors default and object reference syntax.
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 updates an index configuration using a replacement snippet, distinguishing it from create and validate 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 explains validation behavior and the skip_validation_errors flag, giving context for when to update with or without validation. It does not explicitly name alternatives but implicates create_index and validate_index.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_indexA
Validates the provided index YAML configuration against the deepset API. :param yaml_configuration: The YAML configuration to validate. :returns: Validation result with original YAML or error message.
All parameters accept object references in the form @obj_id or @obj_id.path.to.value.
Examples::
# Direct call with values
validate_index(data={'key': 'value'}, threshold=10)
# Call with references
validate_index(data='@obj_123', threshold='@obj_456.config.threshold')
# Mixed call
validate_index(data='@obj_123.items', threshold=10)The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
| yaml_configuration | Yes |
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 mentions validation, return of original YAML or error, automatic output storage, and object reference substitution, but does not disclose potential side effects (likely none).
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 somewhat verbose with docstring-style tags and multiple examples. It could be more succinct while retaining key 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?
For a single-parameter validation tool with no output schema, the description covers purpose, parameter format, object references, and output handling. It's complete but could mention that it's specifically for index configurations.
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 description compensates. It explains the yaml_configuration parameter's purpose and demonstrates object reference usage, adding significant meaning beyond 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 it validates YAML configuration against the deepset API. It distinguishes from siblings like create_index or validate_pipeline by focusing on validation of index configuration.
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?
Examples illustrate usage with direct values and object references, but it does not explicitly compare with validate_pipeline or other siblings. The reference mechanism is well explained.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_pipelineB
Validates the provided pipeline YAML configuration against the deepset API. :param yaml_configuration: The YAML configuration to validate. :returns: Validation result with original YAML or error message.
All parameters accept object references in the form @obj_id or @obj_id.path.to.value.
Examples::
# Direct call with values
validate_pipeline(data={'key': 'value'}, threshold=10)
# Call with references
validate_pipeline(data='@obj_123', threshold='@obj_456.config.threshold')
# Mixed call
validate_pipeline(data='@obj_123.items', threshold=10)The output is automatically stored and can be referenced in other functions.
Returns a formatted preview with an object ID (e.g., @obj_123).
Use the object store tools in combination with the object ID to view nested properties of the object.
Use the returned object ID to pass this result to other functions.
| Name | Required | Description | Default |
|---|---|---|---|
| yaml_configuration | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the output is automatically stored and can be referenced in other functions, and that it returns a formatted preview with an object ID. It also explains object reference syntax. Since there are no annotations, this behavioral context is valuable.
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 structured with a param/returns block and examples, but it is somewhat verbose. It could be more concise by removing the docstring-style formatting and redundancy about object references.
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 a single parameter and no output schema, the description covers the input, return format, object references, and output storage. However, it lacks details on error handling, expected success/failure conditions, and potential validation outcomes.
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 adds meaning beyond the schema by explaining the yaml_configuration parameter ('The YAML configuration to validate') and describing the object reference pattern. With 0% schema description coverage, this compensation is significant.
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 validates pipeline YAML configuration against the deepset API. It specifies the resource (pipeline YAML) and action (validate), giving a clear purpose. However, it does not explicitly distinguish from sibling tools like validate_index.
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 examples of calling the tool but gives no guidance on when to use it versus alternatives. It lacks explicit context for when to use or not use this tool, and does not mention when it should be preferred over other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
yq_object_storeA
Query or transform structured data stored in the object store using a jq filter expression.
Use this to filter, map, select, or rewrite nested data without pulling the whole object into
context, e.g. {"object_id": "@obj_001", "filter": ".items[] | select(.active) | .name"}.
Transforming filters work the same way, e.g. .config.timeout = 30.
If the targeted value is a JSON or YAML string (e.g. a pipeline's YAML config), it is parsed before the filter runs so you can navigate into its fields; a transformed result is re-serialized back to that same format.
By default, the result is stored as a new object and returned with a preview, so you can reference
it further (e.g. get_from_object_store) or feed it back into another yq_object_store call. Set
store=False if you just want the full result inline and don't need it stored, e.g. for a small
lookup you'll act on immediately.
:param object_id: The id of the object to query in the format @obj_001.
:param filter: jq filter expression to apply, e.g. .field, .items[], .[] | select(.status=="done"),
or a transformation like .field = "value".
:param path: Navigation path to a nested attribute to query instead of the whole object (optional).
:param store: Whether to store the result as a new object (default: True). Set to False to get the
full result inline instead of a preview, without writing anything to the object store.
:return: New object ID and a preview of the result, the full result if store is False, or a message
if the filter is invalid or produced no results.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | ||
| store | No | ||
| filter | Yes | ||
| object_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavior fully. It explains JSON/YAML parsing, re-serialization, the default store behavior, return types (preview vs. full result), and error messages. It does not explicitly state read-only nature but implies it by storing new objects. No contradictions with missing annotations.
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: starts with purpose, then usage guidelines, then detailed parameter explanations. It uses examples and front-loads key information. No redundant sentences; every sentence adds value. Appropriate length for the tool's complexity.
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 output schema and 0% schema coverage, the description covers purpose, parameters, return values, and behavior with JSON/YAML. It mentions error conditions but lacks details on performance or size limits. Overall complete for a data query/transform 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 compensates fully. It provides :param explanations for all four parameters: object_id (format with @obj_001), filter (jq expressions), path (optional nested attribute), and store (default True vs. inline). This adds crucial meaning beyond schema titles and types.
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: querying or transforming structured data using a jq filter. It specifies the action (query/transform), resource (object store data), and method (jq filter). It differentiates from siblings like grep_object_store (text search) and sed_object_store (text substitution) by focusing on structured data transformation.
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 usage context: 'filter, map, select, or rewrite nested data without pulling the whole object into context.' It includes examples and explains the default behavior. However, it does not explicitly state when not to use or mention alternatives beyond implicit differentiation from siblings.
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.
2 tool updates
v0.1.33- Added
create_experiment - Added
get_experiment_results
6 tool updates
v0.1.31- Added
get_cost_breakdown - Added
get_cost_over_time - Added
get_cost_totals - Changed
get_experiment_run3 fields changed- removed
Input schema / properties / experiment_idRemoved value: -{ - "title": "Experiment Id", - "type": "string" -} - added
Input schema / properties / metric_group_idAdded value: +{ + "title": "Metric Group Id", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "pipeline_name", - "experiment_id", - "run_id" -]New value: +[ + "pipeline_name", + "metric_group_id", + "run_id" +]
- Changed
list_experiments4 fields changed- added
Input schema / properties / pipeline_name / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / pipeline_name / defaultAdded value: +null - removed
Input schema / properties / pipeline_name / typeRemoved value: -"string" - removed
Input schema / requiredRemoved value: -[ - "pipeline_name" -]
- Added
list_metric_groups
9 tool updates
v0.1.29- Added
get_evaluation_try - Added
get_evaluator - Added
get_experiment_run - Added
get_session_replay - Added
list_evaluators - Added
list_experiments - Added
list_sessions - Added
replay_session - Added
try_evaluator
19 tool updates
v0.1.27- Added
activate_deployment - Added
activate_deployment_revision - Added
add_deployment_tag - Added
create_deployment - Added
create_deployment_revision - Added
deactivate_deployment - Added
delete_deployment - Added
delete_deployment_tag - Added
get_deployment - Added
get_deployment_metrics - Added
get_deployment_revision - Added
get_deployment_stats - Added
list_deployment_activity - Added
list_deployment_revisions - Added
list_deployment_tags - Added
list_deployments - Added
list_doc_sections - Changed
search_docs1 field changed- added
Input schema / properties / sectionAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Section" +}
- Added
update_deployment
5 tool updates
v0.1.25- Changed
get_component_definition1 field changed- added
Input schema / properties / haystack_versionAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Haystack Version" +}
- Changed
get_custom_components1 field changed- added
Input schema / properties / haystack_versionAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Haystack Version" +}
- Changed
list_component_families1 field changed- added
Input schema / properties / haystack_versionAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Haystack Version" +}
- Changed
run_component1 field changed- added
Input schema / properties / haystack_versionAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Haystack Version" +}
- Changed
search_component_definitions1 field changed- added
Input schema / properties / haystack_versionAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Haystack Version" +}
1 tool update
v0.1.22- Added
debug_pipeline
1 tool update
v0.1.16- Added
yq_object_store
1 tool update
v0.1.14- Added
load_skill
1 tool update
v0.1.13- Changed
get_models3 fields changed- added
Input schema / $defsAdded value: +{ + "ModelProvider": { + "description": "Well-known providers of models.\n\nThis is not an exhaustive list of all providers a model may report. Other provider values\n(e.g. from custom or newly added integrations) are still valid and accepted as plain strings.", + "enum": [ + "aws-bedrock", + "openai", + "gemini", + "anthropic" + ], + "title": "ModelProvider", + "type": "string" + } +} - added
Input schema / properties / modelAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Model" +} - added
Input schema / properties / providerAdded value: +{ + "anyOf": [ + { + "$ref": "#/$defs/ModelProvider" + }, + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Provider" +}
3 tool updates
v0.1.11- Added
get_models - Added
get_pipeline_trace_logs - Added
get_pipeline_trace_span_tags
1 tool update
v0.1.10- Changed
deploy_pipeline1 field changed- added
Input schema / properties / version_idAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Version Id" +}
5 tool updates
v0.1.9- Added
get_pipeline_trace - Changed
list_pipeline_search_history2 fields changed- added
Input schema / properties / sort_fieldAdded value: +{ + "default": "created_at", + "enum": [ + "created_at", + "query", + "duration", + "feedbacks/score" + ], + "title": "Sort Field", + "type": "string" +} - added
Input schema / properties / sort_orderAdded value: +{ + "default": "DESC", + "enum": [ + "ASC", + "DESC" + ], + "title": "Sort Order", + "type": "string" +}
- Added
list_pipeline_traces - Changed
list_search_history2 fields changed- added
Input schema / properties / sort_fieldAdded value: +{ + "default": "created_at", + "enum": [ + "created_at", + "query", + "duration", + "feedbacks/score" + ], + "title": "Sort Field", + "type": "string" +} - added
Input schema / properties / sort_orderAdded value: +{ + "default": "DESC", + "enum": [ + "ASC", + "DESC" + ], + "title": "Sort Order", + "type": "string" +}
- Changed
list_templates1 field changed- added
Input schema / properties / afterAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "After" +}
2 tool updates
v0.1.5- Added
grep_object_store - Added
sed_object_store
40 tool updates
v0.1.0- First observed
create_index - First observed
create_pipeline - First observed
create_pipeline_version - First observed
create_workspace - First observed
deploy_index - First observed
deploy_pipeline - First observed
get_component_definition - First observed
get_custom_components - First observed
get_from_object_store - First observed
get_index - First observed
get_latest_custom_component_installation_logs - First observed
get_pipeline - First observed
get_pipeline_logs - First observed
get_pipeline_version - First observed
get_secret - First observed
get_slice_from_object_store - First observed
get_template - First observed
get_workspace - First observed
list_component_families - First observed
list_custom_component_installations - First observed
list_indexes - First observed
list_pipeline_search_history - First observed
list_pipeline_versions - First observed
list_pipelines - First observed
list_search_history - First observed
list_secrets - First observed
list_templates - First observed
list_workspaces - First observed
patch_pipeline_version - First observed
restore_pipeline_version - First observed
run_component - First observed
search_component_definitions - First observed
search_docs - First observed
search_pipeline - First observed
search_pipeline_with_filters - First observed
search_pipeline_with_params - First observed
search_templates - First observed
update_index - First observed
validate_index - First observed
validate_pipeline
TDQS
Scored across 83 tools
Most tools target a clearly distinct resource+action, and the descriptions carefully distinguish subtle pairs (get_pipeline_logs vs get_pipeline_trace_logs, activate_deployment vs activate_deployment_revision). The main overlap is the search trio (search_pipeline, search_pipeline_with_params, search_pipeline_with_filters), where with_params also accepts filters, plus list_search_history vs list_pipeline_search_history and list_pipeline_traces overlapping in scope.
The set overwhelmingly follows a consistent verb_noun snake_case convention (list_, get_, create_, update_, delete_, search_, validate_, deploy_). Minor deviations exist in a handful of noun/tool-first names (yq_object_store, sed_object_store, grep_object_store, load_skill), but these are readable and don't undermine predictability.
83 tools is very heavy and exceeds the range where an agent can reliably select without help, even given the genuinely broad platform scope. Many fine-grained operations (per-revision, per-tag, per-cost-view) could be consolidated, making the surface hard to navigate.
Read/write coverage is broad across pipelines, deployments, indexes, workspaces, evaluations, costs, and docs, but delete/lifecycle operations are missing for several core resources (no delete_pipeline, delete_index, update/delete_workspace, and no create_secret despite get/list_secret). These gaps will cause dead ends for full CRUD workflows.
Maintenance
Related MCP Connectors
- mcp-serverOAuthcom.make
Give your AI agents the tools to build, manage, and run automation workflows.
Backend platform for AI agents: one agentstack.execute tool runs batched steps over +700 actions (hosting, storage, auth, payments, CRM, app builder).
Build, validate, and deploy multi-agent AI solutions from any AI environment.
The AI orchestration agent for modern software teams.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceDeploys and serves Haystack Pipelines and Agents as REST APIs and MCP tools, enabling AI assistants to interact with custom NLP pipelines for tasks like RAG, document processing, and intelligent agents through natural language.5,210 PyPI154Apache 2.0
- AlicenseBqualityDmaintenanceEnables AI agents to interact with Dagster instances, explore data pipelines, monitor runs, and manage assets.925Apache 2.0
- AlicenseNot gradedqualityCmaintenanceEnables running durable, traceable AI agents via LangGraph through a universal MCP interface, integrating with Hatchet for orchestration, logging, and retries. Provides tools for knowledge management (ingestion, RAG) and Kubernetes operations (diagnosis, auto-fix).MIT
- FlicenseNot gradedqualityCmaintenanceEnables document Q&A and knowledge retrieval through hybrid semantic and keyword search, with tools for document ingestion, chunking, summarization, PII redaction, and RAGAS-based evaluation.-