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サーバーが現在サポートしているコネクタのリストです。Unstructuredプラットフォームがサポートするソースコネクタの完全なリストはこちら、宛先コネクタのリストはこちらでご確認ください。今後、コネクタをさらに追加していく予定です。

ソース

行き先

S3

S3

アズール

ウィービエイト

Googleドライブ

松ぼっくり

ワンドライブ

アストラDB

セールスフォース

モンゴDB

シェアポイント

ネオ4j

Databricks ボリューム

Databricks ボリューム デルタ テーブル

コネクタを作成/更新/削除するツールを使用するには、.env ファイルで特定のコネクタの認証情報を定義する必要があります。サポート対象のコネクタのcredentialsのリストは以下のとおりです。

資格情報名

説明

ANTHROPIC_API_KEY

サーバーと対話するには、 minimal_clientを実行する必要があります。

AWS_KEY 、 AWS_SECRET

uns-mcpサーバー経由でS3コネクタを作成する必要があります。方法については、ドキュメントとここを参照してください。

WEAVIATE_CLOUD_API_KEY

WeaviateベクターDBコネクタを作成するために必要です。ドキュメントで方法を確認してください。

FIRECRAWL_API_KEY

external/firecrawl.pyの Firecrawl ツールを使用するには、 Firecrawlにサインアップして API キーを取得する必要があります。

ASTRA_DB_APPLICATION_TOKEN 、 ASTRA_DB_API_ENDPOINT

uns-mcpサーバー経由でAstradbコネクタを作成する必要があります。方法についてはドキュメントを参照してください。

AZURE_CONNECTION_STRING

uns-mcpサーバー経由で Azure コネクタを作成するにはオプション 1 が必要です。方法についてはドキュメントを参照してください。

AZURE_ACCOUNT_NAME + AZURE_ACCOUNT_KEY

uns-mcpサーバー経由で Azure コネクタを作成するにはオプション 2 が必要です。方法についてはドキュメントを参照してください。

AZURE_ACCOUNT_NAME + AZURE_SAS_TOKEN

uns-mcpサーバー経由で Azure コネクタを作成するにはオプション 3 が必要です。方法についてはドキュメントを参照してください。

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

uns_mcp/server.pyリクエストパラメータを出力してデバッグを効率化できるように true に設定します

ファイアクロールソース

Firecrawlは、MCP で 2 つの主な機能を提供する Web クロール API です。

  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 のワークフローにより、非常にきれいにクリーンアップされます :smile:

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を使用する場合、実行は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 Desktop の設定を更新します。

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

注: パッケージをインストールした環境でuvx実行ファイルを指定することを忘れないでください

注意: Claude Desktop ではサポートされていません。

SSE プロトコルの場合、クライアントとサーバーを分離することでデバッグが簡単になります。

  1. 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を使用し、次にサーバーで 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サーバーのデバッグ/テストに使用できるMCP Inspectorツールを提供しています。以下のコマンドを実行するとデバッグ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
ParametersJSON Schema
NameRequiredDescriptionDefault
crawl_idYes

Output Schema

ParametersJSON 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
ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYes

Output Schema

ParametersJSON 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
ParametersJSON Schema
NameRequiredDescriptionDefault
crawl_idYes

Output Schema

ParametersJSON 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
ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYes

Output Schema

ParametersJSON 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
ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
destination_typeYes
type_specific_configYes

Output Schema

ParametersJSON 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
ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
source_typeYes
type_specific_configYes

Output Schema

ParametersJSON 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": "" } }

ParametersJSON Schema
NameRequiredDescriptionDefault
workflow_configYes

Output Schema

ParametersJSON 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
ParametersJSON Schema
NameRequiredDescriptionDefault
destination_idYes

Output Schema

ParametersJSON 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
ParametersJSON Schema
NameRequiredDescriptionDefault
source_idYes

Output Schema

ParametersJSON 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
ParametersJSON Schema
NameRequiredDescriptionDefault
workflow_idYes

Output Schema

ParametersJSON 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
ParametersJSON Schema
NameRequiredDescriptionDefault
destination_idYes

Output Schema

ParametersJSON 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
ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYes

Output Schema

ParametersJSON 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
ParametersJSON Schema
NameRequiredDescriptionDefault
source_idYes

Output Schema

ParametersJSON 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
ParametersJSON Schema
NameRequiredDescriptionDefault
workflow_idYes

Output Schema

ParametersJSON 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
ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
s3_uriYes
limitNo

Output Schema

ParametersJSON 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
ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
s3_uriYes
max_urlsNo

Output Schema

ParametersJSON 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
ParametersJSON Schema
NameRequiredDescriptionDefault
destination_typeNo

Output Schema

ParametersJSON 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
ParametersJSON Schema
NameRequiredDescriptionDefault
workflow_idNo
statusNo

Output Schema

ParametersJSON 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
ParametersJSON Schema
NameRequiredDescriptionDefault
source_typeNo

Output Schema

ParametersJSON 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
ParametersJSON Schema
NameRequiredDescriptionDefault
destination_idNo
source_idNo
statusNo

Output Schema

ParametersJSON 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
ParametersJSON Schema
NameRequiredDescriptionDefault
source_typeNo
destination_typeNo

Output Schema

ParametersJSON 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.
ParametersJSON Schema
NameRequiredDescriptionDefault
input_file_pathYes
output_file_dirYes
strategyNovlm
vlm_modelNoclaude-3-5-sonnet-20241022
vlm_model_providerNoanthropic
output_typeNojson

Output Schema

ParametersJSON 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
ParametersJSON Schema
NameRequiredDescriptionDefault
workflow_idYes

Output Schema

ParametersJSON 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
ParametersJSON Schema
NameRequiredDescriptionDefault
destination_idYes
destination_typeYes
type_specific_configYes

Output Schema

ParametersJSON 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
ParametersJSON Schema
NameRequiredDescriptionDefault
source_idYes
source_typeYes
type_specific_configYes

Output Schema

ParametersJSON 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
ParametersJSON Schema
NameRequiredDescriptionDefault
workflow_idYes
workflow_configYes

Output Schema

ParametersJSON 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

ActivityInactive
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
    255 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
    -