Skip to main content
Glama
Unstructured-IO

Unstructured API MCP Server

Official

非结构化 API MCP 服务器

用于与非结构化 API 交互的 MCP 服务器实现。该服务器提供列出源和工作流的工具。

可用工具

工具

描述

list_sources

列出非结构化 API 中可用的来源。

get_source_info

获取有关特定源连接器的详细信息。

create_source_connector

创建源连接器。)

update_source_connector

通过参数更新现有的源连接器。

delete_source_connector

通过源 ID 删除源连接器。

list_destinations

列出非结构化 API 中可用的目的地。

get_destination_info

获取有关特定目标连接器的详细信息

create_destination_connector

通过参数创建目标连接器。

update_destination_connector

通过目标 ID 更新现有的目标连接器。

delete_destination_connector

根据目标 ID 删除目标连接器。

list_workflows

列出来自非结构化 API 的工作流程。

get_workflow_info

获取有关特定工作流程的详细信息。

create_workflow

创建具有源、目标 ID 等的新工作流。

run_workflow

运行具有工作流 ID 的特定工作流

update_workflow

通过参数更新现有的工作流程。

delete_workflow

根据 ID 删除特定工作流。

list_jobs

列出非结构化 API 中特定工作流的作业。

get_job_info

通过作业 ID 获取特定作业的详细信息。

cancel_job

根据 ID 删除特定作业。

以下是UNS-MCP服务器当前支持的连接器列表,请点击此处查看非结构化平台支持的源连接器完整列表,并点击此处查看目标连接器列表。我们计划添加更多连接器!

来源

目的地

S3

S3

Azure

威维特

Google 云端硬盘

松果

OneDrive

阿斯特拉数据库

Salesforce

MongoDB

SharePoint

Neo4j

Databricks 卷

Databricks 卷增量表

要使用创建/更新/删除连接器的工具,必须在 .env 文件中定义该连接器的凭据。以下是我们支持的连接器的credentials列表:

凭证名称

描述

ANTHROPIC_API_KEY

需要运行minimal_client来与我们的服务器交互。

AWS_KEY和AWS_SECRET

需要通过uns-mcp服务器创建 S3 连接器,请参阅文档和此处了解如何操作

WEAVIATE_CLOUD_API_KEY

需要创建 Weaviate 向量数据库连接器,请参阅文档中的方法

FIRECRAWL_API_KEY

需要在external/firecrawl.py中使用 Firecrawl 工具,在Firecrawl上注册并获取 API 密钥。

ASTRA_DB_APPLICATION_TOKEN ASTRA_DB_API_ENDPOINT

需要通过uns-mcp服务器创建 Astradb 连接器,请参阅文档中的方法

AZURE_CONNECTION_STRING

需要选项 1 通过uns-mcp服务器创建 Azure 连接器,请参阅文档中的方法

AZURE_ACCOUNT_NAME + AZURE_ACCOUNT_KEY

需要选项 2 通过uns-mcp服务器创建 Azure 连接器,请参阅文档中的方法

AZURE_ACCOUNT_NAME + AZURE_SAS_TOKEN

需要选项 3 来通过uns-mcp服务器创建 Azure 连接器,请参阅文档中的方法

NEO4J_PASSWORD

需要通过uns-mcp服务器创建 Neo4j 连接器,请参阅文档中的方法

MONGO_DB_CONNECTION_STRING

需要通过uns-mcp服务器创建 Mongodb 连接器,请参阅文档中的方法

GOOGLEDRIVE_SERVICE_ACCOUNT_KEY

字符串值。原始服务器帐户密钥(请参阅文档)位于 json 文件中,请在终端中运行base64 < /path/to/google_service_account_key.json以获取字符串值

DATABRICKS_CLIENT_ID和DATABRICKS_CLIENT_SECRET

需要通过uns-mcp服务器创建 Databricks 卷/增量表连接器,请参阅文档和此处了解如何操作

ONEDRIVE_CLIENT_ID 、 ONEDRIVE_CLIENT_CRED 、 ONEDRIVE_TENANT_ID

需要通过uns-mcp服务器创建 One Drive 连接器,请参阅文档中的方法

PINECONE_API_KEY

需要通过uns-mcp服务器创建 Pinecone 矢量 DB 连接器,请参阅文档中的方法

SALESFORCE_CONSUMER_KEY 、 SALESFORCE_PRIVATE_KEY

需要通过uns-mcp服务器创建 salesforce 源连接器,请参阅文档中的方法

SHAREPOINT_CLIENT_ID 、 SHAREPOINT_CLIENT_CRED 、 SHAREPOINT_TENANT_ID

需要通过uns-mcp服务器创建 One Drive 连接器,请参阅文档中的方法

LOG_LEVEL

用于设置minimal_client的日志记录级别,例如设置为 ERROR 以获取所有内容

CONFIRM_TOOL_USE

设置为 true,以便minimal_client可以在每次工具调用之前确认执行

DEBUG_API_REQUESTS

设置为 true 以便uns_mcp/server.py可以输出请求参数以便更好地调试

Firecrawl 源

Firecrawl是一个 Web 爬取 API,它在我们的 MCP 中提供两项主要功能:

  1. HTML 内容检索:使用invoke_firecrawl_crawlhtml启动抓取作业并使用check_crawlhtml_status进行监控

  2. LLM 优化文本生成:使用invoke_firecrawl_llmtxt生成文本,使用check_llmtxt_status检索结果

Firecrawl 的工作原理:

Web爬取过程:

  • 从指定的 URL 开始并分析它以识别链接

  • 如果可用,则使用站点地图;否则,遵循网站上的链接

  • 递归遍历每个链接以发现所有子页面

  • 收集每个访问页面的内容,处理 JavaScript 渲染和速率限制

  • 如果需要,可以使用cancel_crawlhtml_job取消作业

  • 如果您需要将所有信息提取到原始 HTML 中,请使用此功能,Unstructured 的工作流程可以很好地清理它:微笑:

LLM 文本生成:

  • 爬取完成后,从爬取的页面中提取干净、有意义的文本内容

  • 生成专门针对大型语言模型格式化的优化文本格式

  • 结果自动上传到指定的 S3 位置

  • 注意:LLM 文本生成作业一旦启动便无法取消。cancel_llmtxt_job 函数是为了保持一致性而提供cancel_llmtxt_job ,但目前 Firecrawl API 尚不支持该函数。

注意:必须设置FIRECRAWL_API_KEY环境变量才能使用这些功能。

Related MCP server: MCP REST API Server

安装和配置

本指南提供了使用 Python 3.12 和uv工具设置和配置 UNS_MCP 服务器的分步说明。

先决条件

  • Python 3.12+

  • uv用于环境管理

  • 来自 Unstructured 的 API 密钥。您可以在此处注册并获取您的 API 密钥。

使用uv (推荐)

使用uvx时无需额外安装,因为它会处理执行。但是,如果您希望直接安装软件包:

uv pip install uns_mcp

配置 Claude 桌面

为了与 Claude Desktop 集成,请将以下内容添加到您的claude_desktop_config.json中:

**注意:**该文件位于~/Library/Application Support/Claude/目录中。

使用uvx命令:

{
   "mcpServers": {
      "UNS_MCP": {
         "command": "uvx",
         "args": ["uns_mcp"],
         "env": {
           "UNSTRUCTURED_API_KEY": "<your-key>"
         }
      }
   }
}

或者,使用 Python 包:

{
   "mcpServers": {
      "UNS_MCP": {
         "command": "python",
         "args": ["-m", "uns_mcp"],
         "env": {
           "UNSTRUCTURED_API_KEY": "<your-key>"
         }
      }
   }
}

使用源代码

  1. 克隆存储库。

  2. 安装依赖项:

    uv sync
  3. 将您的非结构化 API 密钥设置为环境变量。在根目录中创建一个 .env 文件,其中包含以下内容:

    UNSTRUCTURED_API_KEY="YOUR_KEY"

    请参阅.env.template了解可配置的环境变量。

您现在可以使用以下方法之一运行服务器:

uvx pip install -e .

更新您的 Claude 桌面配置:

{
  "mcpServers": {
    "UNS_MCP": {
      "command": "uvx",
      "args": ["uns_mcp"]
    }
  }
}

注意:请记住指向安装包的环境中 uvx 可执行文件

注意:Claude Desktop 不支持。

对于SSE协议,可以通过解耦客户端和服务器来更轻松地进行调试:

  1. 在一个终端中启动服务器:

    uv run python uns_mcp/server.py --host 127.0.0.1 --port 8080
    # or
    make sse-server
  2. 在另一个终端中使用本地客户端测试服务器:

    uv run python minimal_client/client.py "http://127.0.0.1:8080/sse"
    # or
    make sse-client

**注意:**要停止服务,请先在客户端上使用Ctrl+C ,然后在服务器上使用。

配置 Claude Desktop 以使用 stdio:

{
  "mcpServers": {
    "UNS_MCP": {
      "command": "ABSOLUTE/PATH/TO/.local/bin/uv",
      "args": [
        "--directory",
        "ABSOLUTE/PATH/TO/YOUR-UNS-MCP-REPO/uns_mcp",
        "run",
        "server.py"
      ]
    }
  }
}

或者,运行本地客户端:

uv run python minimal_client/client.py uns_mcp/server.py

附加本地客户端配置

使用环境变量配置最小客户端:

  • LOG_LEVEL="ERROR" :设置为抑制来自 LLM 的调试输出,为用户显示清晰的消息。

  • CONFIRM_TOOL_USE='false' :执行前禁用工具使用确认。请谨慎使用,尤其是在开发期间,因为 LLM 可能会执行昂贵的工作流程或删除数据。

调试工具

Anthropic 提供了MCP Inspector工具来调试/测试您的 MCP 服务器。运行以下命令即可启动调试 UI。之后,您可以在左侧窗格中添加环境变量(指向您的本地环境变量)。并将您的个人 API 密钥作为环境变量添加到其中。前往tools ,您可以测试添加到 MCP 服务器的功能。

mcp dev uns_mcp/server.py

如果需要将请求调用参数记录到UnstructuredClient ,请设置环境变量DEBUG_API_REQUESTS=false 。日志存储在unstructured-client-{date}.log格式的文件中,可以检查该文件以调试UnstructuredClient函数的请求调用参数。

为最小客户端添加终端访问

我们将使用@wonderwhy-er/desktop-commander为精简客户端添加终端访问权限。它基于 MCP 文件系统服务器构建。请注意,客户端(也是 LLM)现在可以访问私有文件。

执行以下命令来安装该包:

npx @wonderwhy-er/desktop-commander setup

然后使用额外的参数启动客户端:

uv run python minimal_client/client.py "http://127.0.0.1:8080/sse" "@wonderwhy-er/desktop-commander"
# or
make sse-client-terminal

使用工具子集

如果您的客户端仅支持使用部分工具,则您应该注意以下事项:

  • update_workflow工具必须与create_workflow工具一起在上下文中加载,因为它包含有关如何创建和配置自定义节点的详细描述。

已知问题

  • update_workflow - 需要在上下文中具有正在更新的工作流的配置,可以通过用户提供或调用get_workflow_info工具来实现,因为该工具不能用作patch应用程序,它完全取代了工作流配置。

变更日志.md

任何新开发的功能/修复/增强功能都将添加到 CHANGELOG.md。在我们发布稳定版本之前,最好使用 0.xx-dev 预发布格式。

故障排除

  • 如果您遇到Error: spawn <command> ENOENT则表示<command>未安装或未在您的 PATH 中可见:

    • 确保安装它并将其添加到您的 PATH。

    • 或者在配置的command字段中提供命令的绝对路径。例如,将python替换为/opt/miniconda3/bin/python

Available Tools

26 tools
cancel_crawlhtml_jobC

Cancel an in-progress Firecrawl HTML crawl job.

Args:
    crawl_id: ID of the crawl job to cancel

Returns:
    Dictionary containing the result of the cancellation
NameRequiredDescriptionDefault
crawl_idYes

Output Schema

NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. While it states the tool cancels jobs and returns a dictionary result, it lacks critical details: what permissions are needed, whether cancellation is reversible, potential side effects (e.g., partial data cleanup), rate limits, or error conditions. For a mutation tool with zero annotation coverage, this is a significant gap.

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

Conciseness4/5

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

The description is appropriately concise with three sentences: purpose statement, parameter explanation, and return value note. It's front-loaded with the core functionality. The structure is clear, though the 'Args' and 'Returns' sections could be integrated more smoothly into prose.

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

Completeness3/5

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

Given the tool's complexity (mutation with 1 parameter), lack of annotations, and presence of an output schema, the description is minimally adequate. The output schema reduces the need to detail return values, but the description misses behavioral context (e.g., cancellation effects) and usage guidelines. It covers basics but leaves gaps for safe and effective use.

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

Parameters3/5

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 documents the single parameter 'crawl_id' with a brief explanation ('ID of the crawl job to cancel'), which adds basic meaning beyond the schema's title 'Crawl Id'. However, it doesn't provide format examples, validation rules, or where to obtain the ID, leaving the parameter only partially clarified.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'Cancel an in-progress Firecrawl HTML crawl job.' It specifies the verb ('cancel'), resource ('Firecrawl HTML crawl job'), and scope ('in-progress'). However, it doesn't explicitly differentiate from sibling tools like 'cancel_job' or 'check_crawlhtml_status', which could create ambiguity about when to use this specific tool versus alternatives.

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

Usage Guidelines2/5

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. It doesn't mention prerequisites (e.g., job must be in-progress), exclusions (e.g., cannot cancel completed jobs), or comparisons to sibling tools like 'cancel_job' or 'check_crawlhtml_status'. This leaves the agent without context for tool selection.

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

cancel_jobB

Delete a specific job.

Args:
    job_id: ID of the job to cancel

Returns:
    String containing the response from the job cancellation
NameRequiredDescriptionDefault
job_idYes

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description carries full burden but only states it 'deletes' a job and returns a response string. It lacks critical behavioral details: whether cancellation is reversible, what happens to associated resources, permission requirements, error conditions (e.g., invalid job_id), or side effects. This is inadequate for a destructive operation.

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

Conciseness5/5

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

The description is efficiently structured with a clear purpose statement followed by Args and Returns sections. Every sentence earns its place: the first states the action, and the next two clarify input and output without redundancy. It's front-loaded and appropriately sized for a simple tool.

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

Completeness3/5

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

Given 1 parameter with 0% schema coverage and an output schema (implied by 'Returns'), the description adds basic parameter semantics but lacks behavioral context for a destructive tool. It's minimally viable but has clear gaps in usage guidelines and transparency, making it incomplete for safe agent operation.

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

Parameters4/5

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

Schema description coverage is 0%, but the description explicitly documents the single parameter 'job_id' with its purpose ('ID of the job to cancel'), adding essential meaning beyond the bare schema. Since there's only one parameter, this nearly compensates for the coverage gap, though format examples (e.g., numeric vs. string) would improve it.

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

Purpose4/5

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

The description clearly states the verb 'Delete' and the resource 'a specific job', making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'delete_workflow' or 'delete_source_connector' which also delete resources, nor does it clarify what type of job this refers to in the context of the server.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., job must be running), exclusions (e.g., cannot cancel completed jobs), or relationships to siblings like 'check_crawlhtml_status' or 'list_jobs' that might help select jobs to cancel.

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

check_crawlhtml_statusB

Check the status of an existing Firecrawl HTML crawl job.

Args:
    crawl_id: ID of the crawl job to check

Returns:
    Dictionary containing the current status of the crawl job
NameRequiredDescriptionDefault
crawl_idYes

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states it's a status check, implying a read-only operation, but doesn't mention potential side effects, authentication needs, rate limits, or error handling. This leaves gaps for a tool that interacts with crawl jobs.

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

Conciseness5/5

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

The description is well-structured and front-loaded with the core purpose, followed by clear sections for Args and Returns. Every sentence earns its place without redundancy, making it efficient and easy to parse.

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

Completeness3/5

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

Given the tool's low complexity (1 parameter) and the presence of an output schema (which handles return values), the description is minimally adequate. However, with no annotations and incomplete behavioral context, it could benefit from more details on usage scenarios or error cases to be fully complete.

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

Parameters4/5

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

The description adds meaningful context for the single parameter 'crawl_id' by specifying it as 'ID of the crawl job to check', which clarifies its purpose beyond the schema's basic title 'Crawl Id'. Since schema description coverage is 0%, this compensation is effective, though it doesn't detail format or constraints.

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

Purpose4/5

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

The description clearly states the verb 'Check' and the resource 'status of an existing Firecrawl HTML crawl job', making the purpose evident. However, it doesn't explicitly differentiate from sibling tools like 'check_llmtxt_status' or 'get_job_info', which might have overlapping functionality, so it doesn't reach the highest score.

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

Usage Guidelines2/5

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 such as 'check_llmtxt_status' for LLM text crawls or 'get_job_info' for general job status. It only implies usage by mentioning 'existing Firecrawl HTML crawl job', but lacks explicit when/when-not instructions or prerequisites.

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

check_llmtxt_statusB

Check the status of an existing llmfull.txt generation job.

Args:
    job_id: ID of the llmfull.txt generation job to check

Returns:
    Dictionary containing the current status of the job and text content if completed
NameRequiredDescriptionDefault
job_idYes

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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 the tool returns a dictionary with status and text content if completed, which is helpful. However, it lacks details on error handling, rate limits, authentication needs, or whether it's a read-only operation, leaving significant behavioral gaps.

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

Conciseness5/5

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

The description is appropriately sized and front-loaded, starting with the core purpose followed by structured sections for arguments and returns. Every sentence adds value without redundancy, making it efficient and easy to parse.

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

Completeness4/5

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

Given the tool's low complexity (one parameter) and the presence of an output schema (implied by 'Returns' section), the description is reasonably complete. It covers the purpose, parameter meaning, and return value. However, it could improve by addressing behavioral aspects like error cases or usage context relative to siblings.

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

Parameters4/5

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

The description adds meaningful context for the single parameter 'job_id' by specifying it's the 'ID of the llmfull.txt generation job to check'. Since schema description coverage is 0% (no schema descriptions provided), this compensates well, though it doesn't detail format or constraints. With 0 parameters documented in the schema, the baseline is 4.

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

Purpose4/5

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

The description clearly states the tool's purpose with a specific verb ('Check') and resource ('status of an existing llmfull.txt generation job'), making it easy to understand what the tool does. However, it doesn't explicitly differentiate from sibling tools like 'check_crawlhtml_status' or 'get_job_info', which appear to be related status-checking tools.

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

Usage Guidelines2/5

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. It doesn't mention sibling tools like 'check_crawlhtml_status' or 'get_job_info', nor does it specify prerequisites or exclusions. Usage is implied only through the description of checking job status.

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

create_destination_connectorB

Create a destination connector based on type.

Args:
    ctx: Context object with the request and lifespan context
    name: A unique name for this connector
    destination_type: The type of destination being created

    type_specific_config:
        astradb:
            collection_name: The AstraDB collection name
            keyspace: The AstraDB keyspace
            batch_size: (Optional[int]) The batch size for inserting documents
        databricks_delta_table:
            catalog: Name of the catalog in Databricks Unity Catalog
            database: The database in Unity Catalog
            http_path: The cluster’s or SQL warehouse’s HTTP Path value
            server_hostname: The Databricks cluster’s or SQL warehouse’s Server Hostname value
            table_name: The name of the table in the schema
            volume: Name of the volume associated with the schema.
            schema: (Optional[str]) Name of the schema associated with the volume
            volume_path: (Optional[str]) Any target folder path within the volume, starting
                        from the root of the volume.
        databricks_volumes:
            catalog: Name of the catalog in Databricks
            host: The Databricks host URL
            volume: Name of the volume associated with the schema
            schema: (Optional[str]) Name of the schema associated with the volume. The default
                     value is "default".
            volume_path: (Optional[str]) Any target folder path within the volume,
                        starting from the root of the volume.
        mongodb:
            database: The name of the MongoDB database
            collection: The name of the MongoDB collection
        neo4j:
            database: The Neo4j database, e.g. "neo4j"
            uri: The Neo4j URI e.g. neo4j+s://<neo4j_instance_id>.databases.neo4j.io
            batch_size: (Optional[int]) The batch size for the connector
        pinecone:
            index_name: The Pinecone index name
            namespace: (Optional[str]) The pinecone namespace, a folder inside the
                       pinecone index
            batch_size: (Optional[int]) The batch size
        s3:
            remote_url: The S3 URI to the bucket or folder
        weaviate:
            cluster_url: URL of the Weaviate cluster
            collection: Name of the collection in the Weaviate cluster

            Note: Minimal schema is required for the collection, e.g. record_id: Text

Returns:
    String containing the created destination connector information
NameRequiredDescriptionDefault
nameYes
destination_typeYes
type_specific_configYes

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. While it mentions the tool creates something (implying mutation), it doesn't disclose permission requirements, whether the operation is idempotent, error conditions, or what happens if a connector with the same name exists. The description provides some context about configuration options but lacks critical behavioral information for a creation tool.

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

Conciseness3/5

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

The description is appropriately structured with clear sections (Args, Returns) but is quite lengthy due to the detailed parameter documentation. While this length is justified given the complexity, it could benefit from a brief introductory sentence explaining what a destination connector is before diving into parameters.

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

Completeness4/5

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

Given the tool's complexity (3 parameters with nested objects, 8 destination types) and no annotations, the description does a good job covering parameter semantics. The existence of an output schema means the description doesn't need to explain return values. However, it lacks context about the broader system and how this tool fits into workflows with other tools.

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

Parameters5/5

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

With 0% schema description coverage, the description provides extensive parameter documentation that fully compensates. It explains all three parameters (name, destination_type, type_specific_config) and provides detailed configuration options for each destination type, including optional parameters and default values. 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.

Purpose4/5

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

The description clearly states the tool creates a destination connector based on type, which is a specific verb+resource combination. It distinguishes from siblings like 'update_destination_connector' and 'delete_destination_connector' by focusing on creation, but doesn't explicitly differentiate from 'create_source_connector' or explain what a destination connector is in this context.

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

Usage Guidelines2/5

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

No guidance is provided about when to use this tool versus alternatives. It doesn't mention prerequisites, when creation is appropriate versus updating existing connectors, or how this relates to sibling tools like 'create_source_connector' or 'create_workflow' in the broader system context.

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

create_source_connectorA

Create a source connector based on type. Args: ctx: Context object with the request and lifespan context name: A unique name for this connector source_type: The type of source being created (e.g., 'azure', 'onedrive', 'salesforce', 'gdrive', 's3', 'sharepoint')

    type_specific_config:
        azure:
            remote_url: The Azure Storage remote URL with the format
                        az://<container-name>/<path/to/file/or/folder/in/container/as/needed>
            recursive: (Optional[bool]) Whether to access subfolders
        gdrive:
            drive_id: The Drive ID for the Google Drive source
            recursive: (Optional[bool]) Whether to access subfolders
            extensions: (Optional[list[str]]) File extensions to filter
        onedrive:
            path: The path to the target folder in the OneDrive account
            user_pname: The User Principal Name (UPN) for the OneDrive user account
            recursive: (Optional[bool]) Whether to access subfolders
            authority_url: (Optional[str]) The authentication token provider URL
        s3:
            remote_url: The S3 URI to the bucket or folder (e.g., s3://my-bucket/)
            recursive: (Optional[bool]) Whether to access subfolders
        salesforce:
            username: The Salesforce username
            categories: (Optional[list[str]]) Optional Salesforce domain,the names of the
                        Salesforce categories (objects) that you want to access, specified as
                        a comma-separated list. Available categories include Account, Campaign,
                        Case, EmailMessage, and Lead.
        sharepoint:
            site: The SharePoint site to connect to
            user_pname: The username for the SharePoint site
            path: (Optional) The path within the SharePoint site
            recursive: (Optional[bool]) Whether to access subfolders
            authority_url: (Optional[str]) The authority URL for authentication

Returns:
    String containing the created source connector information
NameRequiredDescriptionDefault
nameYes
source_typeYes
type_specific_configYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It clearly indicates this is a creation/mutation operation ('Create a source connector'), which implies it's not read-only. However, it doesn't disclose important behavioral aspects like authentication requirements, error conditions, idempotency, or what happens if a connector with the same name already exists.

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

Conciseness4/5

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

The description is appropriately structured with clear sections (Args, Returns) and uses bullet points for readability. While detailed, every sentence provides necessary information about parameters. The front-loaded purpose statement is clear, though the parameter documentation is extensive.

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

Completeness4/5

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

Given the complexity (3 parameters with nested objects, 0% schema coverage, no annotations), the description does an excellent job explaining parameters. With an output schema present, it doesn't need to detail return values. However, it lacks context about the broader system (what connectors are used for, prerequisites) and behavioral constraints.

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

Parameters5/5

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

With 0% schema description coverage, the description provides extensive parameter documentation that fully compensates. It explains all 3 parameters in detail, including the complex 'type_specific_config' with comprehensive examples for each source type variant. 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.

Purpose4/5

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

The description clearly states the tool creates a source connector based on type, which is a specific verb+resource combination. It distinguishes itself from siblings like 'create_destination_connector' by focusing on source connectors. However, it doesn't explicitly differentiate from 'update_source_connector' in terms of when to create vs update.

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

Usage Guidelines2/5

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 like 'update_source_connector' or 'get_source_info'. It mentions creating based on type but doesn't specify prerequisites, constraints, or when this operation is appropriate versus other source-related operations.

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

create_workflowB

Create a new workflow.

Args:
    workflow_config: A Typed Dictionary containing required fields (destination_id - should be a
    valid UUID, name, source_id - should be a valid UUID, workflow_type) and non-required fields
    (schedule, and workflow_nodes). Note workflow_nodes is only enabled when workflow_type
    is `custom` and is a list of WorkflowNodeTypedDict: partition, prompter,chunk, embed
    Below is an example of a partition workflow node:
        {
            "name": "vlm-partition",
            "type": "partition",
            "sub_type": "vlm",
            "settings": {
                        "provider": "your favorite provider",
                        "model": "your favorite model"
                        }
        }


Returns:
    String containing the created workflow information

Custom workflow DAG nodes

  • If WorkflowType is set to custom, you must also specify the settings for the workflow’s directed acyclic graph (DAG) nodes. These nodes’ settings are specified in the workflow_nodes array.

  • A Source node is automatically created when you specify the source_id value outside of the workflow_nodes array.

  • A Destination node is automatically created when you specify the destination_id value outside of the workflow_nodes array.

  • You can specify Partitioner, Chunker, Prompter, and Embedder nodes.

  • The order of the nodes in the workflow_nodes array will be the same order that these nodes appear in the DAG, with the first node in the array added directly after the Source node. The Destination node follows the last node in the array.

  • Be sure to specify nodes in the allowed order. The following DAG placements are all allowed:

    • Source -> Partitioner -> Destination,

    • Source -> Partitioner -> Chunker -> Destination,

    • Source -> Partitioner -> Chunker -> Embedder -> Destination,

    • Source -> Partitioner -> Prompter -> Chunker -> Destination,

    • Source -> Partitioner -> Prompter -> Chunker -> Embedder -> Destination

Partitioner node A Partitioner node has a type of partition and a subtype of auto, vlm, hi_res, or fast.

Examples:

  • auto strategy: { "name": "Partitioner", "type": "partition", "subtype": "vlm", "settings": { "provider": "anthropic", (required) "model": "claude-sonnet-4-20250514", (required) "output_format": "text/html", "user_prompt": null, "format_html": true, "unique_element_ids": true, "is_dynamic": true, "allow_fast": true } }

  • vlm strategy: Allowed values are provider and model. Below are examples: - "provider": "anthropic" "model": "claude-sonnet-4-20250514", - "provider": "openai" "model": "gpt-4o"

  • hi_res strategy: { "name": "Partitioner", "type": "partition", "subtype": "unstructured_api", "settings": { "strategy": "hi_res", "include_page_breaks": <true|false>, "pdf_infer_table_structure": <true|false>, "exclude_elements": [ "", "" ], "xml_keep_tags": <true|false>, "encoding": "", "ocr_languages": [ "", "" ], "extract_image_block_types": [ "image", "table" ], "infer_table_structure": <true|false> } }

  • fast strategy { "name": "Partitioner", "type": "partition", "subtype": "unstructured_api", "settings": { "strategy": "fast", "include_page_breaks": <true|false>, "pdf_infer_table_structure": <true|false>, "exclude_elements": [ "", "" ], "xml_keep_tags": <true|false>, "encoding": "", "ocr_languages": [ "", "" ], "extract_image_block_types": [ "image", "table" ], "infer_table_structure": <true|false> } }

Chunker node A Chunker node has a type of chunk and subtype of chunk_by_character or chunk_by_title.

  • chunk_by_character { "name": "Chunker", "type": "chunk", "subtype": "chunk_by_character", "settings": { "include_orig_elements": <true|false>, "new_after_n_chars": , (required, if not provided

set same as max_characters) "max_characters": , (required) "overlap": , (required, if not provided set default to 0) "overlap_all": <true|false>, "contextual_chunking_strategy": "v1" } }

  • chunk_by_title { "name": "Chunker", "type": "chunk", "subtype": "chunk_by_title", "settings": { "multipage_sections": <true|false>, "combine_text_under_n_chars": , "include_orig_elements": <true|false>, "new_after_n_chars": , (required, if not provided

set same as max_characters) "max_characters": , (required) "overlap": , (required, if not provided set default to 0) "overlap_all": <true|false>, "contextual_chunking_strategy": "v1" } }

Prompter node An Prompter node has a type of prompter and subtype of:

  • openai_image_description,

  • anthropic_image_description,

  • bedrock_image_description,

  • vertexai_image_description,

  • openai_table_description,

  • anthropic_table_description,

  • bedrock_table_description,

  • vertexai_table_description,

  • openai_table2html,

  • openai_ner

Example: { "name": "Prompter", "type": "prompter", "subtype": "", "settings": {} }

Embedder node An Embedder node has a type of embed

Allowed values for subtype and model_name include:

  • "subtype": "azure_openai"

    • "model_name": "text-embedding-3-small"

    • "model_name": "text-embedding-3-large"

    • "model_name": "text-embedding-ada-002"

  • "subtype": "bedrock"

    • "model_name": "amazon.titan-embed-text-v2:0"

    • "model_name": "amazon.titan-embed-text-v1"

    • "model_name": "amazon.titan-embed-image-v1"

    • "model_name": "cohere.embed-english-v3"

    • "model_name": "cohere.embed-multilingual-v3"

  • "subtype": "togetherai":

    • "model_name": "togethercomputer/m2-bert-80M-2k-retrieval"

    • "model_name": "togethercomputer/m2-bert-80M-8k-retrieval"

    • "model_name": "togethercomputer/m2-bert-80M-32k-retrieval"

Example: { "name": "Embedder", "type": "embed", "subtype": "", "settings": { "model_name": "" } }

NameRequiredDescriptionDefault
workflow_configYes

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. While it explains what happens when creating workflows (automatic source/destination nodes, DAG ordering), it lacks critical information about permissions required, whether this is a mutating operation, error handling, rate limits, or what happens to existing workflows. The description doesn't contradict annotations since none exist, but fails to provide sufficient behavioral context for a creation tool.

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

Conciseness2/5

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

The description is excessively long (over 1500 words) with redundant examples and formatting issues. While the initial section is reasonably structured, the extensive examples for partitioner strategies, chunker types, prompter subtypes, and embedder models could be summarized more concisely. The description front-loads key information but then buries the reader in repetitive examples that don't all earn their place.

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

Completeness4/5

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

Given the complexity of workflow creation with multiple node types and configurations, the description provides substantial context about parameter usage, DAG construction, and node specifications. With an output schema present, it doesn't need to explain return values. However, for a creation tool with no annotations, it should ideally include more about behavioral aspects like permissions, idempotency, or error cases to be fully complete.

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

Parameters5/5

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

With 0% schema description coverage and only 1 parameter (workflow_config), the description provides extensive semantic information beyond the bare schema. It explains required vs optional fields, UUID requirements, conditional dependencies (workflow_nodes only for custom type), detailed examples for different node types, and DAG ordering rules. This fully compensates for the lack of schema descriptions and adds substantial value for understanding parameter usage.

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

Purpose4/5

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 workflow with specific configuration requirements. It distinguishes itself from siblings like 'update_workflow' and 'delete_workflow' by focusing on creation rather than modification or deletion. However, it doesn't explicitly contrast with 'run_workflow' which executes existing workflows versus creating new ones.

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

Usage Guidelines3/5

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

The description implies usage through parameter explanations and examples, particularly for custom workflows with DAG nodes. It mentions that 'workflow_nodes' is only enabled when workflow_type is 'custom', providing some conditional guidance. However, there's no explicit guidance on when to use this tool versus alternatives like 'update_workflow' or 'run_workflow', nor any prerequisites or error conditions.

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

delete_destination_connectorC

Delete a destination connector.

Args:
    destination_id: ID of the destination connector to delete

Returns:
    String containing the result of the deletion
NameRequiredDescriptionDefault
destination_idYes

Output Schema

NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but offers minimal behavioral insight. It states the tool deletes something and returns a string result, but doesn't disclose whether deletion is reversible, what permissions are needed, if there are dependencies (e.g., workflows using the connector), or potential 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.

Conciseness4/5

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

The description is well-structured with clear sections for Args and Returns, and each sentence is purposeful. It could be slightly more concise by integrating the parameter explanation into the main sentence, but overall it's efficient.

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

Completeness3/5

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

For a destructive operation with no annotations, the description is minimally adequate but lacks important context. It covers the basic purpose and parameter, and an output schema exists (so return values needn't be detailed), but it misses critical behavioral details like safety warnings or dependencies.

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

Parameters3/5

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

Schema description coverage is 0%, but the description explicitly documents the single parameter ('destination_id') and its purpose ('ID of the destination connector to delete'), adding meaningful context beyond the bare schema. However, it doesn't provide format examples or constraints.

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

Purpose4/5

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

The description clearly states the action ('Delete') and resource ('a destination connector'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'delete_source_connector' or 'delete_workflow' beyond mentioning the specific resource type.

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

Usage Guidelines2/5

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

No guidance is provided about when to use this tool versus alternatives. The description doesn't mention prerequisites (e.g., whether the connector must be inactive), consequences, or relationships to sibling tools like 'delete_source_connector' or 'delete_workflow'.

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

delete_source_connectorB

Delete a source connector.

Args:
    source_id: ID of the source connector to delete

Returns:
    String containing the result of the deletion
NameRequiredDescriptionDefault
source_idYes

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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 states this is a deletion operation, implying it's destructive, but doesn't disclose critical behavioral traits like whether deletion is permanent, requires specific permissions, affects associated data (e.g., workflows or jobs), or has rate limits. For a destructive tool with zero annotation coverage, this is a significant gap.

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

Conciseness5/5

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

The description is front-loaded with the core purpose in the first sentence, followed by structured Arg and Return sections that are clear and efficient. Every sentence earns its place without redundancy, making it appropriately sized for the tool's complexity.

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

Completeness3/5

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

Given the tool has an output schema (implied by 'Returns' statement), the description doesn't need to detail return values. However, as a destructive operation with no annotations and minimal behavioral disclosure, it's incomplete—lacking info on side effects, prerequisites, or error handling. It meets a baseline but has clear gaps for safe usage.

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

Parameters4/5

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

The description adds meaningful context for the single parameter 'source_id' by specifying it's 'ID of the source connector to delete', which clarifies its role beyond the schema's basic title 'Source Id'. With 0% schema description coverage and only one parameter, this adequately compensates, though it could note format or sourcing details.

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

Purpose4/5

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

The description clearly states the verb ('Delete') and resource ('a source connector'), making the purpose unambiguous. However, it doesn't differentiate from its sibling 'delete_destination_connector' or 'delete_workflow', which would require specifying what makes a source connector distinct from those other deletable entities.

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

Usage Guidelines2/5

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 like 'delete_destination_connector' or 'delete_workflow', nor does it mention prerequisites (e.g., ensuring the connector isn't in use) or consequences. It simply states what the tool does without contextual usage information.

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

delete_workflowB

Delete a specific workflow.

Args:
    workflow_id: ID of the workflow to delete

Returns:
    String containing the response from the workflow deletion
NameRequiredDescriptionDefault
workflow_idYes

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool deletes a workflow but doesn't cover critical aspects like whether deletion is permanent, requires specific permissions, affects associated jobs, or has side effects. For a destructive operation with zero annotation coverage, this is a significant gap in transparency.

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

Conciseness4/5

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

The description is well-structured and front-loaded with the core purpose, followed by brief sections for args and returns. It avoids unnecessary words, though the returns section could be more informative. Overall, it's efficient and easy to parse.

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

Completeness3/5

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

Given the tool's destructive nature, lack of annotations, and an output schema (which handles return values), the description is minimally adequate. It covers the basic purpose and parameter but misses important behavioral details like irreversibility or dependencies, leaving gaps for safe agent use.

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

Parameters4/5

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

The description adds meaningful context for the single parameter 'workflow_id' by specifying it's the 'ID of the workflow to delete', which clarifies its role beyond the schema's basic title. With 0% schema description coverage and only one parameter, this compensation is adequate, though it doesn't detail ID format or sourcing.

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

Purpose5/5

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

The description clearly states the specific action ('Delete') and resource ('a specific workflow'), distinguishing it from sibling tools like 'create_workflow', 'update_workflow', and 'get_workflow_info'. It directly communicates the tool's function without ambiguity.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. While the purpose is clear, there's no mention of prerequisites (e.g., workflow must exist), consequences (e.g., irreversible deletion), or when to choose deletion over other operations like updating or canceling jobs. The description lacks context for decision-making.

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

get_destination_infoB

Get detailed information about a specific destination connector.

Args:
    destination_id: ID of the destination connector to get information for

Returns:
    String containing the destination connector information
NameRequiredDescriptionDefault
destination_idYes

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It states it 'gets' information (implying read-only) and returns a string, but doesn't disclose behavioral traits like error handling (e.g., what happens if destination_id is invalid), authentication needs, rate limits, or whether the data is cached. For a read operation with zero annotation coverage, this leaves significant gaps.

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

Conciseness5/5

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

The description is appropriately sized and front-loaded: the first sentence states the core purpose, followed by structured 'Args' and 'Returns' sections. Every sentence earns its place with no redundant information, making it efficient and easy to parse.

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

Completeness4/5

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

Given the tool's low complexity (single parameter, read operation) and the presence of an output schema (which handles return values), the description is reasonably complete. It covers the purpose and parameter semantics adequately. However, without annotations, it could benefit from more behavioral context (e.g., error cases) to be fully comprehensive.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It adds meaning by explaining 'destination_id' as 'ID of the destination connector to get information for', which clarifies the parameter's role beyond the schema's generic 'Destination Id' title. However, it doesn't provide format examples (e.g., UUID) or sourcing guidance. With only one parameter, this is sufficient for a high score.

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

Purpose4/5

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

The description clearly states the verb 'Get' and resource 'detailed information about a specific destination connector', making the purpose explicit. It distinguishes from siblings like 'list_destinations' (which lists multiple) and 'create/update/delete_destination_connector' (which modify). However, it doesn't explicitly contrast with 'get_source_info' or 'get_workflow_info', which have similar patterns but different resources.

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

Usage Guidelines2/5

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. It doesn't mention when to choose this over 'list_destinations' for overviews, or prerequisites like needing a valid destination_id. Usage is implied by the name and purpose but not explicitly stated.

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

get_job_infoC

Get detailed information about a specific job.

Args:
    job_id: ID of the job to get information for

Returns:
    String containing the job information
NameRequiredDescriptionDefault
job_idYes

Output Schema

NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden for behavioral disclosure. It states this is a read operation ('Get'), but doesn't mention any behavioral traits like authentication requirements, rate limits, error conditions, or what 'detailed information' entails. For a tool with no annotation coverage, this leaves significant gaps in understanding how it behaves.

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

Conciseness4/5

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

The description is appropriately concise with three brief sentences that are front-loaded (purpose first, then args, then returns). Each sentence serves a clear purpose, though the 'Returns' section could be more informative given the output schema exists.

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

Completeness3/5

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

Given the tool's moderate complexity (single parameter read operation), no annotations, and the presence of an output schema, the description is minimally adequate. It covers the basic purpose and parameter but lacks behavioral context and usage guidance. The output schema reduces the need to explain return values, but more completeness would include when to use this versus sibling tools.

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

Parameters3/5

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

The description adds minimal semantic context for the single parameter 'job_id' by stating it's 'ID of the job to get information for', which slightly clarifies its purpose beyond the schema's basic 'Job Id' title. With 0% schema description coverage and only one parameter, this meets the baseline expectation but doesn't provide rich additional context like format examples or constraints.

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

Purpose4/5

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

The description clearly states the tool's purpose with a specific verb ('Get') and resource ('detailed information about a specific job'), making it immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'list_jobs' or 'check_crawlhtml_status', which might provide related job information in different contexts.

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

Usage Guidelines2/5

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. With siblings like 'list_jobs' (for listing multiple jobs) and various 'check_status' tools, there's no indication of whether this is for general job details, status checks, or other purposes, leaving the agent to infer usage context.

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

get_source_infoC

Get detailed information about a specific source connector.

Args:
    source_id: ID of the source connector to get information for, should be valid UUID

Returns:
    String containing the source connector information
NameRequiredDescriptionDefault
source_idYes

Output Schema

NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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 states the tool retrieves information (implying read-only), but doesn't disclose behavioral traits like authentication requirements, rate limits, error handling, or what 'detailed information' includes. The return value description is vague ('String containing the source connector information'), lacking format or structure details.

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

Conciseness4/5

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

The description is appropriately sized and front-loaded: the first sentence states the purpose clearly. The 'Args' and 'Returns' sections are structured but could be more concise (e.g., combining into a single paragraph). No wasted sentences, though the return description is overly vague.

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

Completeness3/5

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

Given the tool's low complexity (1 parameter, no nested objects) and the presence of an output schema (though not provided here), the description is somewhat complete but has gaps. It covers the basic purpose and parameter, but lacks behavioral context and clear usage guidelines. The output schema existence means return values don't need full explanation, but the description's vague return statement ('String containing...') is insufficient without seeing the schema.

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

Parameters3/5

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

The description adds minimal semantics beyond the input schema. It explains that 'source_id' is the 'ID of the source connector to get information for' and specifies it 'should be valid UUID', which clarifies the expected format. However, with 0% schema description coverage and only one parameter, this provides some value but doesn't fully compensate for the schema's lack of descriptions. Baseline is 4 for 0 parameters, but here there is 1 parameter with partial coverage.

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

Purpose4/5

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 detailed information about a specific source connector.' It specifies the verb ('Get'), resource ('source connector'), and scope ('detailed information'). However, it doesn't explicitly differentiate from sibling tools like 'list_sources' or 'get_destination_info', which would require a 5.

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

Usage Guidelines2/5

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. It doesn't mention sibling tools like 'list_sources' (for listing all sources) or 'get_destination_info' (for destination details), nor does it specify prerequisites or exclusions. The only implied usage is when you need detailed info for a specific source ID.

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

get_workflow_infoB

Get detailed information about a specific workflow.

Args:
    workflow_id: ID of the workflow to get information for

Returns:
    String containing the workflow information
NameRequiredDescriptionDefault
workflow_idYes

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It mentions returning a string with workflow information but lacks details on permissions, rate limits, error handling, or what 'detailed information' entails. This is insufficient for a tool with no annotation coverage.

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

Conciseness5/5

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

The description is front-loaded with the core purpose, followed by clear sections for Args and Returns. Every sentence earns its place, with no wasted words, making it efficient and well-structured.

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

Completeness4/5

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

Given one parameter, no annotations, and an output schema exists (so return values needn't be detailed), the description is mostly complete. It covers the purpose and parameter semantics adequately, though behavioral transparency is lacking.

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

Parameters3/5

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 that 'workflow_id' is the ID of the workflow to get information for. This adds basic meaning beyond the schema's title ('Workflow Id'), though it doesn't specify format or constraints.

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

Purpose4/5

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

The description clearly states the verb ('Get detailed information') and resource ('about a specific workflow'), making the purpose evident. However, it does not differentiate from sibling tools like 'get_job_info' or 'get_source_info' beyond the resource type, which is a minor gap.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives, such as 'list_workflows' for overviews or other 'get_*_info' tools for different resources. The description only states what it does, not when it's appropriate.

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

invoke_firecrawl_crawlhtmlA

Start an asynchronous web crawl job using Firecrawl to retrieve HTML content.

Args:
    url: URL to crawl
    s3_uri: S3 URI where results will be uploaded
    limit: Maximum number of pages to crawl (default: 100)

Returns:
    Dictionary with crawl job information including the job ID
NameRequiredDescriptionDefault
urlYes
s3_uriYes
limitNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the crawl is 'asynchronous' and that results are uploaded to S3, which adds useful context beyond basic parameters. However, it lacks details on permissions, rate limits, error handling, or job lifecycle management, which are important for a tool that starts background jobs.

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

Conciseness5/5

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

The description is well-structured and front-loaded with the core purpose, followed by organized sections for arguments and returns. Every sentence adds value without redundancy, making it easy for an agent to parse quickly and efficiently.

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

Completeness4/5

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

Given the tool's complexity (starting asynchronous jobs) and lack of annotations, the description does a good job covering the basics: purpose, parameters, and return value. With an output schema present, it doesn't need to detail return values. However, it could improve by addressing job management (e.g., linking to status-checking tools) or error scenarios.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It provides clear semantics for all three parameters: 'url' as the target to crawl, 's3_uri' as the upload destination, and 'limit' as the page maximum with a default. This adds meaningful context beyond the bare schema, though it doesn't cover validation rules or format specifics.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'Start an asynchronous web crawl job using Firecrawl to retrieve HTML content.' It specifies the verb ('start'), resource ('web crawl job'), and technology ('Firecrawl'), though it doesn't explicitly differentiate from sibling tools like 'invoke_firecrawl_llmtxt' beyond mentioning HTML content retrieval.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. The description mentions retrieving HTML content but doesn't explain when to choose this over 'invoke_firecrawl_llmtxt' or other crawling-related tools like 'check_crawlhtml_status', leaving the agent without context for tool selection.

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

invoke_firecrawl_llmtxtA

Start an asynchronous llmfull.txt generation job using Firecrawl. This file is a standardized markdown file containing information to help LLMs use a website at inference time. The llmstxt endpoint leverages Firecrawl to crawl your website and extracts data using gpt-4o-mini Args: url: URL to crawl s3_uri: S3 URI where results will be uploaded max_urls: Maximum number of pages to crawl (1-100, default: 10)

Returns:
    Dictionary with job information including the job ID
NameRequiredDescriptionDefault
urlYes
s3_uriYes
max_urlsNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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 key behavioral traits: asynchronous operation, Firecrawl crawling, GPT-4o-mini extraction, and S3 upload destination. However, it doesn't mention rate limits, authentication requirements, error handling, or job monitoring aspects that would be important for an asynchronous tool.

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

Conciseness5/5

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

The description is well-structured and appropriately sized. It starts with the core purpose, explains what the tool produces, then lists parameters and return value in clear sections. Every sentence earns its place with no redundant information.

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

Completeness4/5

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

Given the tool's complexity (asynchronous job with crawling and AI extraction), no annotations, and the presence of an output schema, the description provides good coverage. It explains the purpose, parameters, and return value, though could benefit from more behavioral context about job monitoring (hinted at by sibling tools like check_llmtxt_status) and error scenarios.

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

Parameters4/5

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

With 0% schema description coverage, the description must compensate, which it does effectively. It provides clear semantics for all 3 parameters: URL to crawl, S3 URI for results, and max_urls with range and default. The description adds meaningful context beyond what the bare schema provides, though it could elaborate on URL format requirements or S3 URI structure.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'Start an asynchronous llmfull.txt generation job using Firecrawl' with specific details about what the file contains and how it's generated. It distinguishes from siblings like 'invoke_firecrawl_crawlhtml' by specifying the 'llmfull.txt' output format and GPT-4o-mini extraction, though it doesn't explicitly contrast with all siblings.

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

Usage Guidelines3/5

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

The description implies usage for generating standardized markdown files from websites, but doesn't explicitly state when to use this tool versus alternatives like 'invoke_firecrawl_crawlhtml' or other job-related tools. It provides context about the output format but lacks explicit guidance on tool selection scenarios.

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

list_destinationsB

List available destinations from the Unstructured API.

Args:
    destination_type: Optional destination connector type to filter by

Returns:
    String containing the list of destinations
NameRequiredDescriptionDefault
destination_typeNo

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions the tool lists destinations but doesn't describe key behaviors: whether it's a read-only operation, if it requires specific permissions, how results are formatted (e.g., pagination, sorting), or any rate limits. The return statement is vague ('String containing the list of destinations'), lacking detail on structure.

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

Conciseness4/5

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

The description is well-structured and concise, with three clear sections: a purpose statement, args, and returns. Each sentence serves a specific function without redundancy. It could be slightly more front-loaded by integrating the parameter explanation into the main description, but overall it's efficient.

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

Completeness3/5

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

Given the tool's low complexity (one optional parameter) and the presence of an output schema, the description is minimally adequate. However, it lacks completeness for a tool with no annotations: it doesn't explain behavioral aspects like safety, permissions, or result formatting. The output schema existence reduces the need to detail returns, but more context on usage and behavior would improve completeness.

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

Parameters4/5

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

The description adds meaningful context for the single parameter: it explains that 'destination_type' is an 'Optional destination connector type to filter by.' This clarifies the parameter's purpose beyond the schema, which only shows it as an optional string/enum with a default of null. Since there's only one parameter and the description covers it well, this earns a high score despite 0% schema description coverage.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'List available destinations from the Unstructured API.' It specifies the verb ('List') and resource ('available destinations'), making the function unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'list_sources' or 'list_workflows', which would require a 5.

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

Usage Guidelines2/5

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. It doesn't mention related tools like 'get_destination_info' for detailed information or 'create_destination_connector' for setup. There's no context about prerequisites, such as whether authentication is needed or when listing destinations is appropriate.

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

list_jobsB
List jobs via the Unstructured API.

Args:
    workflow_id: Optional workflow ID to filter by
    status: Optional job status to filter by

Returns:
    String containing the list of jobs
NameRequiredDescriptionDefault
workflow_idNo
statusNo

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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 states the tool lists jobs but doesn't disclose behavioral traits like whether it's paginated, rate-limited, requires authentication, returns structured data, or has any side effects. The mention of 'String containing the list of jobs' hints at the return format but lacks detail.

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

Conciseness4/5

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

The description is appropriately sized and front-loaded with the core purpose. The Args and Returns sections add structure, though 'String containing the list of jobs' is somewhat vague. No extraneous information is included.

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

Completeness3/5

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

Given the tool's low complexity (2 optional parameters) and the presence of an output schema, the description is minimally adequate. However, with no annotations and 0% schema description coverage, it should do more to explain behavioral aspects like filtering logic or return format details, which the output schema might cover but isn't described here.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It adds meaningful context by explaining that 'workflow_id' and 'status' are optional filters, which clarifies their purpose beyond the schema's basic titles. However, it doesn't detail the 'status' enum values or provide examples.

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

Purpose4/5

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

The description clearly states the tool's purpose as 'List jobs via the Unstructured API,' which is a specific verb+resource combination. However, it doesn't explicitly distinguish this tool from similar sibling tools like 'get_job_info' or 'list_workflows_with_finished_jobs,' which might also retrieve job-related information.

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

Usage Guidelines2/5

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. It doesn't mention any prerequisites, exclusions, or compare it to sibling tools like 'get_job_info' (for single job details) or 'list_workflows_with_finished_jobs' (for a specific subset).

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

list_sourcesC
List available sources from the Unstructured API.

Args:
    source_type: Optional source connector type to filter by

Returns:
    String containing the list of sources
NameRequiredDescriptionDefault
source_typeNo

Output Schema

NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but lacks behavioral details. It doesn't disclose whether this is a read-only operation, if it requires authentication, rate limits, pagination behavior, or what format the returned string contains. The mention of 'Returns: String containing the list of sources' is minimal and doesn't explain structure or content.

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

Conciseness4/5

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

The description is appropriately sized with three sentences: purpose, parameter explanation, and return statement. It's front-loaded with the main purpose first. The Args/Returns structure is clear, though slightly redundant with the schema.

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

Completeness3/5

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

Given the tool's low complexity (1 optional parameter) and the presence of an output schema (which should document return values), the description is minimally complete. However, with no annotations and limited behavioral transparency, it leaves gaps in understanding how the tool behaves in practice.

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

Parameters3/5

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

Schema description coverage is 0%, but the description adds basic meaning for the single parameter by stating 'Optional source connector type to filter by'. This clarifies the parameter's purpose beyond the schema's enum values, though it doesn't provide examples or explain the filtering logic. With 1 parameter and some added context, this meets the baseline.

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

Purpose4/5

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

The description clearly states the action ('List available sources') and resource ('from the Unstructured API'), providing a specific verb+resource combination. It distinguishes from siblings like 'list_destinations' or 'list_jobs' by specifying sources, though it doesn't explicitly contrast with them.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like 'get_source_info' or 'create_source_connector'. The description mentions filtering by source_type but doesn't explain when this filtering is appropriate or what happens without it.

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

list_workflowsB
List workflows from the Unstructured API.

Args:
    destination_id: Optional destination connector ID to filter by
    source_id: Optional source connector ID to filter by
    status: Optional workflow status to filter by

Returns:
    String containing the list of workflows
NameRequiredDescriptionDefault
destination_idNo
source_idNo
statusNo

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It states it's a list operation (implies read-only) and mentions filtering parameters, but doesn't describe important behaviors like pagination, rate limits, authentication requirements, error conditions, or what 'list' means (e.g., all workflows, only accessible ones). The return statement is minimal and doesn't explain format.

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

Conciseness4/5

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

The description is appropriately sized and well-structured with clear sections (Args, Returns). Each sentence earns its place by stating the purpose and documenting parameters. However, the return statement could be more informative, and there's some redundancy in 'List workflows' and 'list of workflows'.

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

Completeness3/5

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

Given 3 parameters with 0% schema coverage and no annotations, the description does a decent job explaining parameters but lacks behavioral context. The presence of an output schema means the description doesn't need to detail return values, but it should still cover usage guidelines and operational aspects. For a list tool with filtering, this is minimally adequate but has clear gaps.

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

Parameters4/5

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

The description adds significant value beyond the input schema, which has 0% description coverage. It explains that parameters are optional filters (destination_id, source_id, status) and provides context about what they filter by. This compensates well for the schema's lack of descriptions, though it doesn't detail parameter formats or the status enum values.

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

Purpose4/5

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

The description clearly states 'List workflows from the Unstructured API' which specifies the verb (list) and resource (workflows). It distinguishes from siblings like 'get_workflow_info' (single workflow) and 'list_workflows_with_finished_jobs' (subset with jobs), though not explicitly. However, it doesn't fully differentiate from 'list_jobs' which lists a different resource type.

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

Usage Guidelines2/5

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. It doesn't mention when to choose 'list_workflows' over 'get_workflow_info' (for single workflow details) or 'list_workflows_with_finished_jobs' (for workflows with completed jobs). No context about prerequisites or typical use cases is provided.

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

list_workflows_with_finished_jobsB
List workflows with finished jobs via the Unstructured API.
Args:
    source_type: Optional source connector type to filter by
    destination_type: Optional destination connector type to filter by
Returns:
    String containing the list of workflows with finished jobs and source and destination
    details
NameRequiredDescriptionDefault
source_typeNo
destination_typeNo

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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 the tool lists workflows with finished jobs and returns a string with details, but lacks critical behavioral info: whether it's read-only, pagination, rate limits, authentication needs, or what 'finished jobs' entails (e.g., success/failure status).

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

Conciseness4/5

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

Front-loaded with the main purpose, followed by args and returns sections. Efficient with no wasted sentences, though the returns section could be more precise (e.g., format of the string).

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

Completeness3/5

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

Given 2 parameters with 0% schema coverage and no annotations, the description adds some param semantics but lacks behavioral context. An output schema exists, so return values needn't be detailed, but overall completeness is moderate due to missing usage and transparency details.

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

Parameters4/5

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

Schema description coverage is 0%, but the description compensates by explaining both parameters: 'source_type' and 'destination_type' as optional filters. It adds meaning beyond the schema by specifying they filter by connector types, though it doesn't detail the enum values or filtering logic.

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

Purpose4/5

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

The description clearly states the verb ('List') and resource ('workflows with finished jobs'), specifying it's via the Unstructured API. It distinguishes from siblings like 'list_workflows' by focusing on workflows with finished jobs, though it doesn't explicitly contrast with 'list_jobs' which might overlap.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like 'list_workflows' or 'list_jobs'. The description mentions filtering by source/destination types but doesn't explain when this filtering is beneficial or what happens without filters.

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

partition_local_fileA
Transform a local file into structured data using the Unstructured API.

Args:
    input_file_path: The absolute path to the file.
    output_file_dir: The absolute path to the directory where the output file should be saved.
    strategy: The strategy for transformation.
        Available strategies:
            VLM - most advanced transformation suitable for difficult PDFs and Images
            hi_res - high resolution transformation suitable for most document types
            fast - fast transformation suitable for PDFs with extractable text
            auto - automatically choose the best strategy based on the input file
    vlm_model: The VLM model to use for the transformation.
    vlm_model_provider: The VLM model provider to use for the transformation.
    output_type: The type of output to generate. Options: 'json' for json
                 or 'md' for markdown.

Returns:
    A string containing the structured data or a message indicating the output file
    path with the structured data.
NameRequiredDescriptionDefault
input_file_pathYes
output_file_dirYes
strategyNovlm
vlm_modelNoclaude-3-5-sonnet-20241022
vlm_model_providerNoanthropic
output_typeNojson

Output Schema

NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description carries full burden. It mentions the transformation process and output options but lacks details about error conditions, performance characteristics, file size limits, or authentication requirements. The description doesn't contradict any annotations since none exist.

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

Conciseness4/5

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

The description is well-structured with clear sections (Args, Returns) and bullet points for strategies. It's appropriately sized for a 6-parameter tool, though some strategy descriptions could be more concise. Every sentence adds value, with no redundant information.

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

Completeness4/5

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, transformation operation) and no annotations, the description does well. It explains parameters thoroughly and mentions the return value. However, it lacks information about error handling, file format support, or transformation limitations that would be helpful for a file processing tool.

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

Parameters5/5

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

With 0% schema description coverage, the description provides excellent parameter semantics beyond the bare schema. It explains each parameter's purpose, provides strategy descriptions with use cases, lists available options for output_type, and clarifies what each parameter represents. This fully compensates for the schema's lack of descriptions.

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

Purpose5/5

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

The description clearly states the specific action ('Transform a local file into structured data') and identifies the technology used ('using the Unstructured API'). It distinguishes this tool from all sibling tools which deal with workflows, connectors, and jobs rather than file processing.

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

Usage Guidelines3/5

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

The description implies usage context through strategy explanations (e.g., 'VLM - most advanced transformation suitable for difficult PDFs and Images'), but doesn't explicitly state when to use this tool versus alternatives or mention any prerequisites. No sibling tools appear to offer similar file transformation capabilities.

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

run_workflowB

Run a specific workflow.

Args:
    workflow_id: ID of the workflow to run

Returns:
    String containing the response from the workflow execution
NameRequiredDescriptionDefault
workflow_idYes

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool executes a workflow and returns a response string, but lacks details on permissions required, whether it's idempotent, rate limits, error handling, or what the response entails (e.g., job ID, status). This is inadequate for a mutation tool with zero annotation coverage.

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

Conciseness5/5

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

The description is efficiently structured with a clear purpose statement followed by brief Arg and Return sections. Every sentence adds value without redundancy, making it easy to parse and front-loaded with essential information.

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

Completeness3/5

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

Given the tool's complexity (executing workflows), lack of annotations, and presence of an output schema (which handles return values), the description is minimally adequate. It covers the basic purpose and parameter semantics but lacks behavioral details and usage guidelines, leaving gaps for safe and effective use.

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

Parameters4/5

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

The description adds meaningful context for the single parameter 'workflow_id' by specifying it's the 'ID of the workflow to run', which clarifies its role beyond the schema's basic title. With 0% schema description coverage and only one parameter, this compensates well, though it doesn't detail format constraints (e.g., UUID).

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

Purpose4/5

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

The description clearly states the action ('Run') and resource ('a specific workflow'), making the purpose immediately understandable. However, it doesn't distinguish this tool from potential alternatives or siblings like 'invoke_firecrawl_crawlhtml' or 'invoke_firecrawl_llmtxt' that might also execute workflows or similar processes.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. The description doesn't mention prerequisites (e.g., needing an existing workflow), exclusions, or how it differs from sibling tools like 'create_workflow' or job-related tools, leaving the agent to infer usage context.

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

update_destination_connectorB

Update a destination connector based on type.

Args:
    ctx: Context object with the request and lifespan context
    destination_id: ID of the destination connector to update
    destination_type: The type of destination being updated

    type_specific_config:
        astradb:
            collection_name: (Optional[str]): The AstraDB collection name
            keyspace: (Optional[str]): The AstraDB keyspace
            batch_size: (Optional[int]) The batch size for inserting documents
        databricks_delta_table:
            catalog: (Optional[str]): Name of the catalog in Databricks Unity Catalog
            database: (Optional[str]): The database in Unity Catalog
            http_path: (Optional[str]): The cluster’s or SQL warehouse’s HTTP Path value
            server_hostname: (Optional[str]): The Databricks cluster’s or SQL warehouse’s
                             Server Hostname value
            table_name: (Optional[str]): The name of the table in the schema
            volume: (Optional[str]): Name of the volume associated with the schema.
            schema: (Optional[str]) Name of the schema associated with the volume
            volume_path: (Optional[str]) Any target folder path within the volume, starting
                        from the root of the volume.
        databricks_volumes:
            catalog: (Optional[str]): Name of the catalog in Databricks
            host: (Optional[str]): The Databricks host URL
            volume: (Optional[str]): Name of the volume associated with the schema
            schema: (Optional[str]) Name of the schema associated with the volume. The default
                     value is "default".
            volume_path: (Optional[str]) Any target folder path within the volume,
                        starting from the root of the volume.
        mongodb:
            database: (Optional[str]): The name of the MongoDB database
            collection: (Optional[str]): The name of the MongoDB collection
        neo4j:
            database: (Optional[str]): The Neo4j database, e.g. "neo4j"
            uri: (Optional[str]): The Neo4j URI
                  e.g. neo4j+s://<neo4j_instance_id>.databases.neo4j.io
            batch_size: (Optional[int]) The batch size for the connector
        pinecone:
            index_name: (Optional[str]): The Pinecone index name
            namespace: (Optional[str]) The pinecone namespace, a folder inside the
                       pinecone index
            batch_size: (Optional[int]) The batch size
        s3:
            remote_url: (Optional[str]): The S3 URI to the bucket or folder
        weaviate:
            cluster_url: (Optional[str]): URL of the Weaviate cluster
            collection: (Optional[str]): Name of the collection in the Weaviate cluster

            Note: Minimal schema is required for the collection, e.g. record_id: Text

Returns:
    String containing the updated destination connector information
NameRequiredDescriptionDefault
destination_idYes
destination_typeYes
type_specific_configYes

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states this is an update operation, implying mutation, but doesn't cover critical aspects like required permissions, whether changes are reversible, error handling, or rate limits. The Returns section mentions output format, but lacks details on success/failure responses 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.

Conciseness3/5

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

The description is appropriately front-loaded with the core purpose, but the extensive parameter documentation (while valuable) makes it lengthy. The structure with 'Args' and 'Returns' sections is clear, but some redundancy exists (e.g., repeating 'Optional' annotations). Every sentence earns its place, but it could be more streamlined.

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

Completeness4/5

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

Given the tool's complexity (3 parameters with nested objects, no annotations, but has output schema), the description is largely complete. It covers the core purpose and detailed parameter semantics, and the output schema existence means return values needn't be explained. However, it lacks behavioral context like error cases or mutation implications, leaving minor gaps.

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

Parameters5/5

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

The description adds substantial value beyond the input schema, which has 0% description coverage. It thoroughly documents the 'type_specific_config' parameter by listing all supported destination types (matching the enum) and their optional fields with clear explanations, making the parameter semantics explicit and actionable for an AI agent.

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

Purpose4/5

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

The description clearly states the verb ('Update') and resource ('a destination connector based on type'), making the purpose evident. It distinguishes this tool from siblings like 'create_destination_connector' and 'delete_destination_connector' by specifying it's for updates, though it doesn't explicitly differentiate from 'update_source_connector' or 'update_workflow' beyond the resource name.

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

Usage Guidelines2/5

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. It doesn't mention prerequisites (e.g., needing an existing destination connector), exclusions, or comparisons to sibling tools like 'create_destination_connector' for initial setup or 'get_destination_info' for checking current settings.

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

update_source_connectorB

Update a source connector based on type.

Args:
    ctx: Context object with the request and lifespan context
    source_id: ID of the source connector to update
    source_type: The type of source being updated (e.g., 'azure', 'onedrive',
                 'salesforce', 'gdrive', 's3', 'sharepoint')

    type_specific_config:
        azure:
            remote_url: (Optional[str]) The Azure Storage remote URL with the format
                        az://<container-name>/<path/to/file/or/folder/in/container/as/needed>
            recursive: (Optional[bool]) Whether to access subfolders
        gdrive:
            drive_id: (Optional[str]) The Drive ID for the Google Drive source
            recursive: (Optional[bool]) Whether to access subfolders
            extensions: (Optional[list[str]]) File extensions to filter
        onedrive:
            path: (Optional[str]) The path to the target folder in the OneDrive account
            user_pname: (Optional[str]) The User Principal Name (UPN) for the OneDrive
                        user account
            recursive: (Optional[bool]) Whether to access subfolders
            authority_url: (Optional[str]) The authentication token provider URL
        s3:
            remote_url: (Optional[str]) The S3 URI to the bucket or folder
                        (e.g., s3://my-bucket/)
            recursive: (Optional[bool]) Whether to access subfolders
        salesforce:
            username: (Optional[str]) The Salesforce username
            categories: (Optional[list[str]]) Optional Salesforce domain,the names of the
                        Salesforce categories (objects) that you want to access, specified as
                        a comma-separated list. Available categories include Account, Campaign,
                        Case, EmailMessage, and Lead.
        sharepoint:
            site: Optional([str]) The SharePoint site to connect to
            user_pname: Optional([str]) The username for the SharePoint site
            path: (Optional) The path within the SharePoint site
            recursive: (Optional[bool]) Whether to access subfolders
            authority_url: (Optional[str]) The authority URL for authentication

Returns:
    String containing the updated source connector information
NameRequiredDescriptionDefault
source_idYes
source_typeYes
type_specific_configYes

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the tool updates a connector but doesn't specify required permissions, whether changes are reversible, rate limits, or error handling. The return value is briefly noted but lacks detail on format or potential errors. For a mutation tool with zero annotation coverage, this is insufficient.

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

Conciseness3/5

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

The description is front-loaded with the tool's purpose but becomes verbose with detailed parameter explanations. While the parameter details are valuable, the structure could be more efficient—e.g., using a bulleted list. Some sentences are lengthy, but overall, it avoids unnecessary fluff and stays focused on functionality.

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

Completeness4/5

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

Given the tool's complexity (3 parameters with nested objects, no annotations, but an output schema exists), the description is reasonably complete. It covers parameter semantics thoroughly and notes the return value. However, it lacks behavioral context like permissions or error handling, which is a gap for a mutation tool, though the output schema mitigates some completeness needs.

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

Parameters5/5

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

The description adds substantial meaning beyond the input schema, which has 0% description coverage. It explains 'source_type' with examples (e.g., 'azure', 'onedrive') and details 'type_specific_config' with optional parameters for each type, including data formats and purposes. This compensates fully for the schema's lack of descriptions, making parameters understandable.

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

Purpose4/5

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

The description clearly states the tool updates a source connector based on type, providing a specific verb ('update') and resource ('source connector'). It distinguishes from siblings like 'create_source_connector' and 'delete_source_connector' by focusing on modification rather than creation or deletion. However, it doesn't explicitly contrast with 'update_destination_connector' or 'update_workflow'.

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

Usage Guidelines2/5

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. It doesn't mention prerequisites (e.g., needing an existing source connector), compare with sibling tools like 'create_source_connector' for initial setup, or specify scenarios where updates are appropriate versus deletion and recreation. Usage is implied but not explicitly stated.

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

update_workflowB

Update an existing workflow.

Args:
    workflow_id: ID of the workflow to update
    workflow_config: A Typed Dictionary containing required fields (destination_id,
    name, source_id, workflow_type) and non-required fields (schedule, and workflow_nodes)

Returns:
    String containing the updated workflow information
NameRequiredDescriptionDefault
workflow_idYes
workflow_configYes

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It states this is an update operation but doesn't mention permissions required, whether changes are reversible, rate limits, or what happens to unspecified fields. The return value is vaguely described as 'String containing the updated workflow information' without format details, leaving significant behavioral gaps.

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

Conciseness4/5

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

The description is well-structured with clear sections for Args and Returns. Each sentence serves a purpose: stating the action, explaining parameters, and describing the return. While efficient, the parameter explanations could be slightly more detailed given the complexity of workflow_config.

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

Completeness3/5

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

Given the tool's complexity (mutation operation with nested configuration), no annotations, and an output schema exists (though not shown), the description is minimally adequate. It covers the basic action and parameter structure but lacks behavioral context, error handling, and detailed return format explanation that would make it complete for safe agent use.

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

Parameters4/5

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

The description adds substantial value beyond the input schema, which has 0% description coverage. It explains that 'workflow_config' is a Typed Dictionary and lists required fields (destination_id, name, source_id, workflow_type) and optional fields (schedule, workflow_nodes). This clarifies parameter structure and requirements that aren't evident from the schema alone.

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

Purpose4/5

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

The description clearly states the action ('Update') and resource ('an existing workflow'), making the purpose immediately understandable. However, it doesn't distinguish this tool from sibling tools like 'update_destination_connector' or 'update_source_connector' beyond the different resource type, missing explicit differentiation.

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

Usage Guidelines2/5

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 like 'create_workflow' or 'delete_workflow'. There's no mention of prerequisites (e.g., needing an existing workflow ID), error conditions, or typical use cases, leaving the agent with minimal contextual direction.

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.

  1. 47 tool updatesv1.0.0
    • Changedcancel_crawlhtml_job1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "additionalProperties": true,
        +      "title": "Result",
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "cancel_crawlhtml_jobOutput",
        +  "type": "object"
        +}
    • Changedcancel_job1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "cancel_jobOutput",
        +  "type": "object"
        +}
    • Changedcheck_crawlhtml_status1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "additionalProperties": true,
        +      "title": "Result",
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "check_crawlhtml_statusOutput",
        +  "type": "object"
        +}
    • Changedcheck_llmtxt_status1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "additionalProperties": true,
        +      "title": "Result",
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "check_llmtxt_statusOutput",
        +  "type": "object"
        +}
    • Removedcreate_astradb_destination
    • Removedcreate_azure_source
    • Addedcreate_destination_connector
    • Removedcreate_gdrive_source
    • Removedcreate_neo4j_destination
    • Removedcreate_s3_destination
    • Removedcreate_s3_source
    • Addedcreate_source_connector
    • Removedcreate_weaviate_destination
    • Changedcreate_workflow9 fields changed
      • addedInput schema / $defs / CreateWorkflowTypedDict / properties / reprocess_all
        Added value: +{
        +  "$ref": "#/$defs/Nullable_bool_"
        +}
      • changedInput schema / $defs / Nullable_Dict_str__Any__ / anyOf
        Previous value: -[
        -  {
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": true,
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / $defs / Nullable_bool_
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ]
        +}
      • removedInput schema / $defs / WorkflowNodeType
        Removed value: -{
        -  "enum": [
        -    "partition",
        -    "prompter",
        -    "chunk",
        -    "embed"
        -  ],
        -  "title": "WorkflowNodeType",
        -  "type": "string"
        -}
      • addedInput schema / $defs / WorkflowNodeTypedDict / properties / id
        Added value: +{
        +  "$ref": "#/$defs/Nullable_str_"
        +}
      • removedInput schema / $defs / WorkflowNodeTypedDict / properties / type / $ref
        Removed value: -"#/$defs/WorkflowNodeType"
      • addedInput schema / $defs / WorkflowNodeTypedDict / properties / type / title
        Added value: +"Type"
      • addedInput schema / $defs / WorkflowNodeTypedDict / properties / type / type
        Added value: +"string"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "create_workflowOutput",
        +  "type": "object"
        +}
    • Removeddelete_astradb_destination
    • Removeddelete_azure_source
    • Addeddelete_destination_connector
    • Removeddelete_gdrive_source
    • Removeddelete_neo4j_destination
    • Removeddelete_s3_destination
    • Removeddelete_s3_source
    • Addeddelete_source_connector
    • Removeddelete_weaviate_destination
    • Changeddelete_workflow1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "delete_workflowOutput",
        +  "type": "object"
        +}
    • Changedget_destination_info1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "get_destination_infoOutput",
        +  "type": "object"
        +}
    • Changedget_job_info1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "get_job_infoOutput",
        +  "type": "object"
        +}
    • Changedget_source_info1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "get_source_infoOutput",
        +  "type": "object"
        +}
    • Changedget_workflow_info1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "get_workflow_infoOutput",
        +  "type": "object"
        +}
    • Changedinvoke_firecrawl_crawlhtml1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "additionalProperties": true,
        +      "title": "Result",
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "invoke_firecrawl_crawlhtmlOutput",
        +  "type": "object"
        +}
    • Changedinvoke_firecrawl_llmtxt1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "additionalProperties": true,
        +      "title": "Result",
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "invoke_firecrawl_llmtxtOutput",
        +  "type": "object"
        +}
    • Changedlist_destinations3 fields changed
      • addedInput schema / $defs
        Added value: +{
        +  "DestinationConnectorType": {
        +    "enum": [
        +      "astradb",
        +      "azure_ai_search",
        +      "couchbase",
        +      "databricks_volumes",
        +      "databricks_volume_delta_tables",
        +      "delta_table",
        +      "elasticsearch",
        +      "gcs",
        +      "kafka-cloud",
        +      "milvus",
        +      "mongodb",
        +      "motherduck",
        +      "neo4j",
        +      "onedrive",
        +      "pinecone",
        +      "postgres",
        +      "redis",
        +      "qdrant-cloud",
        +      "s3",
        +      "snowflake",
        +      "weaviate-cloud",
        +      "ibm_watsonx_s3"
        +    ],
        +    "title": "DestinationConnectorType",
        +    "type": "string"
        +  }
        +}
      • changedInput schema / properties / destination_type / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "$ref": "#/$defs/DestinationConnectorType"
        +  },
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "list_destinationsOutput",
        +  "type": "object"
        +}
    • Changedlist_jobs3 fields changed
      • addedInput schema / $defs
        Added value: +{
        +  "JobStatus": {
        +    "enum": [
        +      "SCHEDULED",
        +      "IN_PROGRESS",
        +      "COMPLETED",
        +      "STOPPED",
        +      "FAILED"
        +    ],
        +    "title": "JobStatus",
        +    "type": "string"
        +  }
        +}
      • changedInput schema / properties / status / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "$ref": "#/$defs/JobStatus"
        +  },
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "list_jobsOutput",
        +  "type": "object"
        +}
    • Changedlist_sources3 fields changed
      • addedInput schema / $defs
        Added value: +{
        +  "SourceConnectorType": {
        +    "enum": [
        +      "azure",
        +      "box",
        +      "confluence",
        +      "couchbase",
        +      "databricks_volumes",
        +      "dropbox",
        +      "elasticsearch",
        +      "gcs",
        +      "google_drive",
        +      "kafka-cloud",
        +      "mongodb",
        +      "onedrive",
        +      "outlook",
        +      "postgres",
        +      "s3",
        +      "salesforce",
        +      "sharepoint",
        +      "slack",
        +      "snowflake",
        +      "jira",
        +      "zendesk"
        +    ],
        +    "title": "SourceConnectorType",
        +    "type": "string"
        +  }
        +}
      • changedInput schema / properties / source_type / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "$ref": "#/$defs/SourceConnectorType"
        +  },
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "list_sourcesOutput",
        +  "type": "object"
        +}
    • Changedlist_workflows3 fields changed
      • addedInput schema / $defs
        Added value: +{
        +  "WorkflowState": {
        +    "enum": [
        +      "active",
        +      "inactive"
        +    ],
        +    "title": "WorkflowState",
        +    "type": "string"
        +  }
        +}
      • changedInput schema / properties / status / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "$ref": "#/$defs/WorkflowState"
        +  },
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "list_workflowsOutput",
        +  "type": "object"
        +}
    • Addedlist_workflows_with_finished_jobs
    • Addedpartition_local_file
    • Changedrun_workflow1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "run_workflowOutput",
        +  "type": "object"
        +}
    • Removedupdate_astradb_destination
    • Removedupdate_azure_source
    • Addedupdate_destination_connector
    • Removedupdate_gdrive_source
    • Removedupdate_neo4j_destination
    • Removedupdate_s3_destination
    • Removedupdate_s3_source
    • Addedupdate_source_connector
    • Removedupdate_weaviate_destination
    • Changedupdate_workflow9 fields changed
      • addedInput schema / $defs / CreateWorkflowTypedDict / properties / reprocess_all
        Added value: +{
        +  "$ref": "#/$defs/Nullable_bool_"
        +}
      • changedInput schema / $defs / Nullable_Dict_str__Any__ / anyOf
        Previous value: -[
        -  {
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": true,
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / $defs / Nullable_bool_
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ]
        +}
      • removedInput schema / $defs / WorkflowNodeType
        Removed value: -{
        -  "enum": [
        -    "partition",
        -    "prompter",
        -    "chunk",
        -    "embed"
        -  ],
        -  "title": "WorkflowNodeType",
        -  "type": "string"
        -}
      • addedInput schema / $defs / WorkflowNodeTypedDict / properties / id
        Added value: +{
        +  "$ref": "#/$defs/Nullable_str_"
        +}
      • removedInput schema / $defs / WorkflowNodeTypedDict / properties / type / $ref
        Removed value: -"#/$defs/WorkflowNodeType"
      • addedInput schema / $defs / WorkflowNodeTypedDict / properties / type / title
        Added value: +"Type"
      • addedInput schema / $defs / WorkflowNodeTypedDict / properties / type / type
        Added value: +"string"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "update_workflowOutput",
        +  "type": "object"
        +}
  2. 39 tool updates
    • First observedcancel_crawlhtml_job
    • First observedcancel_job
    • First observedcheck_crawlhtml_status
    • First observedcheck_llmtxt_status
    • First observedcreate_astradb_destination
    • First observedcreate_azure_source
    • First observedcreate_gdrive_source
    • First observedcreate_neo4j_destination
    • First observedcreate_s3_destination
    • First observedcreate_s3_source
    • First observedcreate_weaviate_destination
    • First observedcreate_workflow
    • First observeddelete_astradb_destination
    • First observeddelete_azure_source
    • First observeddelete_gdrive_source
    • First observeddelete_neo4j_destination
    • First observeddelete_s3_destination
    • First observeddelete_s3_source
    • First observeddelete_weaviate_destination
    • First observeddelete_workflow
    • First observedget_destination_info
    • First observedget_job_info
    • First observedget_source_info
    • First observedget_workflow_info
    • First observedinvoke_firecrawl_crawlhtml
    • First observedinvoke_firecrawl_llmtxt
    • First observedlist_destinations
    • First observedlist_jobs
    • First observedlist_sources
    • First observedlist_workflows
    • First observedrun_workflow
    • First observedupdate_astradb_destination
    • First observedupdate_azure_source
    • First observedupdate_gdrive_source
    • First observedupdate_neo4j_destination
    • First observedupdate_s3_destination
    • First observedupdate_s3_source
    • First observedupdate_weaviate_destination
    • First observedupdate_workflow

TDQS

A3.5/5.0

Scored across 26 tools

Disambiguation4/5

Most tools have distinct purposes targeting specific resources like connectors, workflows, jobs, and local files, with clear separation between source/destination connectors and workflow operations. However, some ambiguity exists between cancel_job and cancel_crawlhtml_job, as both cancel jobs but for different job types, which could cause confusion without careful reading of descriptions.

Naming Consistency5/5

Tool names follow a highly consistent verb_noun pattern throughout, such as create_destination_connector, list_workflows, and update_source_connector. All tools use snake_case with clear action-object pairs, making the naming predictable and easy to understand across the entire set.

Tool Count3/5

With 26 tools, the count feels heavy for the server's purpose of managing unstructured data workflows, connectors, and jobs. While the domain is broad, the tool set includes many specific operations (e.g., separate tools for checking status of different job types) that could potentially be consolidated, making it borderline excessive but still manageable.

Completeness5/5

The tool set provides comprehensive coverage for the unstructured data processing domain, including full CRUD operations for connectors and workflows, job management with status checks and cancellation, workflow execution, and local file partitioning. There are no obvious gaps, and the tools support end-to-end workflows from source to destination with various processing nodes.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A server implementation that allows secure communication between MCP clients and privateGPT, enabling users to chat with privateGPT using knowledge bases and manage sources, groups, and users through a standardized Model Context Protocol.
    6
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    A server implementation of the Model Context Protocol (MCP) that provides REST API endpoints for managing and interacting with MCP resources.
    -
  • A
    license
    B
    quality
    A
    maintenance
    An MCP (Model Context Protocol) server for interacting with a Paperless-NGX API server. This server provides tools for managing documents, tags, correspondents, and document types in your Paperless-NGX instance.
    44
    403 npm
    148
    TypeScript
    ISC
  • F
    license
    Not graded
    quality
    D
    maintenance
    An unofficial MCP server for DevRev integration, enabling AI assistants to search, manage works, explore product hierarchies, and retrieve object details seamlessly.
    3
    -