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 "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@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
50 toolscreate_indexA
Creates a new index within your deepset 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.
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 are provided, so the description carries full burden. It discloses that parameters accept object references and that output is stored and returns an object ID, but does not mention destructive behavior, auth needs, 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 well-structured with clear sections: purpose, parameter descriptions, support for references, examples. It is front-loaded and moderately concise, though the examples are somewhat lengthy.
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 3 parameters, no output schema, and no annotations, the description covers basic purpose, parameters with reference support, and output format. However, it misses error conditions, prerequisites, and details on the YAML configuration.
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 add value. It lists each parameter with a brief explanation and mentions object reference support, but lacks details like what a valid YAML configuration entails or constraints on index_name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a new index within the deepset platform workspace, differentiating it from siblings like update_index or 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?
No explicit when-to-use or when-not-to-use guidance is provided. Usage is implied by the tool's basic purpose, but it does not distinguish from alternatives like update_index or validate_index.
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.
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.
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_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_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"].
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | ||
| object_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description only explains the basic input mechanics. It does not disclose any behavioral traits like read-only nature, side effects, rate limits, or error conditions.
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 purpose and includes efficient param documentation. Every sentence adds value, though it could be slightly 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?
For a simple fetch tool, the description covers input semantics well but lacks output format details and does not differentiate from similar tools. Context for choosing this tool over siblings 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?
Despite 0% schema description coverage, the description thoroughly explains the object_id format (@obj_001), path format (dot or bracket notation), and provides complete usage examples, fully compensating for the schema's lack of 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?
The description clearly states the tool fetches an object from the object store, with specific examples for object_id and path. However, it does not differentiate from siblings like get_slice_from_object_store or grep_object_store.
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 scenarios: fetching by id and fetching nested paths. It does not include when not to use or mention alternatives, leaving usage guidance implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_indexA
Fetches detailed configuration information for a specific index, identified by its unique index_name.
:param index_name: Unique name of the index to fetch.
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?
With no annotations, the description bears the full transparency burden. It discloses that output is automatically stored, returns an object ID, and advises using object store tools. This gives clear behavioral context beyond a simple fetch, though it does not mention 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 moderately concise but includes a param docstring that could be integrated more tightly. It has some redundancy (mentions 'index_name' twice) and advice that, while helpful, adds length. Could be 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?
There is no output schema, so the description explains the return format (formatted preview with object ID) and how to use it (object store tools). This makes the tool usable, though it could detail the configuration content slightly more. Overall sufficient for a simple fetch 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% (no descriptions in schema), but the description includes a ':param index_name: Unique name of the index to fetch.' line, adding meaning beyond the type alone. It 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 uses 'Fetches detailed configuration information for a specific index,' clearly stating the action and resource. It distinguishes from siblings like list_indexes (which lists all) and other get_* tools by specifying the target is a single 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 implies usage for fetching configuration of a specific index but does not explicitly state when to use this tool over alternatives (e.g., list_indexes for listing all, or update_index for modifications). No when-not or alternative guidance is provided.
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_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_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_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_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.
: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?
With no annotations, the description carries the full burden. It discloses the return format (markdown content) and error behavior (message listing available skills if not found), which gives useful behavioral expectations. It does not mention side effects or permissions, but for a read-only skill loader this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with an opening definition, usage sentence, bulleted skill list, and param/returns sections. The custom-code skill explanation is somewhat lengthy but provides valuable context, earning its place. No wasted words 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 one-parameter read tool with no output schema, this description is complete: it covers purpose, when to use, parameter semantics, return value, and error handling. The inclusion of the available skill list makes it self-contained. No 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?
Schema coverage is 0%, so the description fully compensates. It explicitly states the parameter meaning ('The name of the skill to load') and provides an enumerated list of valid values (custom-code), effectively serving as an inline enum. This gives the agent everything needed to populate skill_name 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 opens with a specific verb+resource: 'Loads the full content of a bundled skill guide by name.' This clearly distinguishes the tool from siblings like get_template or search_templates by focusing on skill guides rather than templates or generic docs. The additional detail about available skills further clarifies its purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says 'Use this tool to read the step-by-step instructions for a specific skill supported by this server,' providing clear context for when to invoke it. It also lists a concrete skill with trigger scenarios, but it does not explicitly mention when not to use it or name alternative tools, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
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_docsB
Search the deepset platform documentation.
This tool allows you to search through deepset's official documentation to find information about features, API usage, best practices, and troubleshooting guides. Use this when you need to look up specific deepset functionality or help users understand how to use deepset features.
:param query: The search query to execute against the documentation. :returns: The formatted search results from the documentation.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so description carries full burden. It describes the tool as searching documentation and returning formatted results, which is sufficient for a read-only search tool. However, it does not disclose potential limitations like maximum result count or source freshness.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two paragraphs and a parameter docstring. It front-loads the main purpose and then elaborates. The docstring adds structure but could be shortened.
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 one parameter, the description covers the basic purpose and usage. However, it lacks details about how results are formatted, pagination, or error handling, which would be helpful for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description includes a brief docstring for the query parameter, adding meaning beyond the input schema which has no description. However, schema coverage is 0%, so description partially compensates. It explains what the query is used for but does not detail expected format or 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 clearly states the tool searches deepset documentation for information about features, API usage, best practices, and troubleshooting guides. It distinguishes from sibling tools like search_pipeline or search_templates by specifying documentation domain.
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 using it to look up specific functionality or help users, but does not explicitly state when not to use it or provide alternatives. It implies usage context 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.
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.
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. Dates show when Glama detected each change.
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
Most tools have clearly distinct purposes (pipelines, indexes, workspaces, secrets, components, templates, etc.), and descriptions are detailed. However, the three search_pipeline variants (plain, with_filters, with_params) overlap in capability, and list_search_history vs list_pipeline_search_history could be confused.
The vast majority of tools follow a consistent verb_noun snake_case pattern (list_*, get_*, create_*, deploy_*, validate_*, etc.). Minor deviations exist such as grep_object_store, sed_object_store, and yq_object_store (Unix-command style) and occasional get/list alternations (e.g., get_custom_components vs list_custom_component_installations).
With 50 tools, this is a very large surface for an MCP server. While the scope is broad (pipelines, indexes, workspaces, secrets, components, templates, traces, object store), the count exceeds the 25+ threshold that is considered too many, making it heavy for agents to navigate.
The tool set covers a wide range of operations: create/read/update/deploy for pipelines and indexes, plus workspaces, secrets, components, templates, and search history. Notable gaps include the absence of delete operations for any resource (pipelines, indexes, workspaces, secrets) and lack of create_secret, which limits full lifecycle management.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
- mcp-serverOAuthcom.make
Give your AI agents the tools to build, manage, and run automation workflows.
Build, validate, and deploy multi-agent AI solutions from any AI environment.
The AI orchestration agent for modern software teams.
run any ai model. compose agents, stack knowledge, connect tools. one api, pay per run.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceDeploys 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.150Apache 2.0
- AlicenseBqualityDmaintenanceEnables AI agents to interact with Dagster instances, explore data pipelines, monitor runs, and manage assets.923Apache 2.0

Azure DevOps MCP Serverofficial
AlicenseNot gradedqualityAmaintenanceProvides Azure DevOps tooling for AI agents, enabling interaction with projects, work items, repositories, and pipelines through natural language.82,4471,997MIT- AlicenseNot gradedqualityBmaintenanceEnables 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
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/deepset-ai/deepset-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server