Skip to main content
Glama
Unstructured-IO

Unstructured API MCP Server

Official

Неструктурированный API MCP-сервер

Реализация сервера MCP для взаимодействия с неструктурированным API. Этот сервер предоставляет инструменты для составления списка источников и рабочих процессов.

Доступные инструменты

Инструмент

Описание

list_sources

Перечисляет доступные источники из неструктурированного API.

get_source_info

Получите подробную информацию о конкретном исходном соединителе.

create_source_connector

Создайте исходный соединитель.)

update_source_connector

Обновить существующий исходный коннектор по параметрам.

delete_source_connector

Удалить исходный соединитель по идентификатору источника.

list_destinations

Список доступных пунктов назначения из неструктурированного API.

get_destination_info

Получите подробную информацию о конкретном целевом соединителе

create_destination_connector

Создайте коннектор назначения по параметрам.

update_destination_connector

Обновите существующий коннектор назначения по идентификатору назначения.

delete_destination_connector

Удалить коннектор назначения по идентификатору назначения.

list_workflows

Перечисляет рабочие процессы из неструктурированного API.

get_workflow_info

Получите подробную информацию о конкретном рабочем процессе.

create_workflow

Создайте новый рабочий процесс с идентификатором источника, назначения и т. д.

run_workflow

Запустить определенный рабочий процесс с идентификатором рабочего процесса

update_workflow

Обновить существующий рабочий процесс по параметрам.

delete_workflow

Удалить определенный рабочий процесс по идентификатору.

list_jobs

Перечисляет задания для определенного рабочего процесса из неструктурированного API.

get_job_info

Получите подробную информацию о конкретной вакансии по ее идентификатору.

cancel_job

Удалить конкретную работу по идентификатору.

list_workflows_with_finished_jobs

Перечисляет все рабочие процессы, имеющие завершенные задания, а также информацию об источнике и месте назначения.

Ниже приведен список коннекторов, которые в настоящее время поддерживает сервер UNS-MCP . Полный список исходных коннекторов, которые поддерживает неструктурированная платформа, см . здесь , а список коннекторов назначения — здесь . Мы планируем добавить еще!

Источник

Место назначения

С3

С3

Лазурный

Weaviate

Google Диск

Шишка

OneDrive

АстраДБ

Salesforce

MongoDB

Sharepoint

Neo4j

Объемы блоков данных

Таблица дельта томов Databricks

Чтобы использовать инструмент, который создает/обновляет/удаляет коннектор, учетные данные для этого конкретного коннектора должны быть определены в вашем файле .env. Ниже приведен список credentials для поддерживаемых нами коннекторов:

Имя удостоверения

Описание

ANTHROPIC_API_KEY

требуется запустить minimal_client для взаимодействия с нашим сервером.

AWS_KEY , AWS_SECRET

требуется создать коннектор S3 через сервер uns-mcp , см. как это сделать в документации и здесь

WEAVIATE_CLOUD_API_KEY

требуется создать векторный коннектор базы данных Weaviate, см. как это сделать в документации

FIRECRAWL_API_KEY

для использования инструментов Firecrawl в external/firecrawl.py необходимо зарегистрироваться в Firecrawl и получить ключ API.

ASTRA_DB_APPLICATION_TOKEN , ASTRA_DB_API_ENDPOINT

требуется создать коннектор Astradb через сервер uns-mcp , см. как это сделать в документации

AZURE_CONNECTION_STRING

требуется опция 1 для создания Azure Connector через сервер uns-mcp , см. как это сделать в документации

AZURE_ACCOUNT_NAME + AZURE_ACCOUNT_KEY

требуется вариант 2 для создания коннектора Azure через сервер uns-mcp , см. как это сделать в документации

AZURE_ACCOUNT_NAME + AZURE_SAS_TOKEN

требуется опция 3 для создания Azure Connector через сервер uns-mcp , см. как это сделать в документации

NEO4J_PASSWORD

требуется создать коннектор Neo4j через сервер uns-mcp , см. как это сделать в документации

MONGO_DB_CONNECTION_STRING

требуется создать коннектор MongoDB через сервер uns-mcp , см. как это сделать в документации

GOOGLEDRIVE_SERVICE_ACCOUNT_KEY

строковое значение. Исходный ключ учетной записи сервера (следуйте документации ) находится в файле json, запустите base64 < /path/to/google_service_account_key.json в терминале, чтобы получить строковое значение

DATABRICKS_CLIENT_ID , DATABRICKS_CLIENT_SECRET

требуется создать коннектор таблицы томов/дельта Databricks через сервер uns-mcp , см. как в документации и здесь

ONEDRIVE_CLIENT_ID , ONEDRIVE_CLIENT_CRED , ONEDRIVE_TENANT_ID

требуется создать коннектор One Drive через сервер uns-mcp , см. как это сделать в документации

PINECONE_API_KEY

требуется создать коннектор базы данных Pinecone vector DB через сервер uns-mcp , см. как это сделать в документации

SALESFORCE_CONSUMER_KEY , SALESFORCE_PRIVATE_KEY

требуется создать исходный коннектор salesforce через сервер uns-mcp , см. как это сделать в документации

SHAREPOINT_CLIENT_ID , SHAREPOINT_CLIENT_CRED , SHAREPOINT_TENANT_ID

требуется создать коннектор One Drive через сервер uns-mcp , см. как это сделать в документации

LOG_LEVEL

Используется для установки уровня ведения журнала для нашего minimal_client , например, установите значение ERROR, чтобы получить все

CONFIRM_TOOL_USE

установите значение true, чтобы minimal_client мог подтвердить выполнение перед каждым вызовом инструмента

DEBUG_API_REQUESTS

установите значение true, чтобы uns_mcp/server.py мог выводить параметры запроса для лучшей отладки

Источник Firecrawl

Firecrawl — это API веб-сканирования, который предоставляет две основные возможности в нашем MCP:

  1. Извлечение HTML-контента : использование invoke_firecrawl_crawlhtml для запуска заданий сканирования и check_crawlhtml_status для их мониторинга

  2. Генерация текста, оптимизированного для LLM : использование invoke_firecrawl_llmtxt для генерации текста и check_llmtxt_status для получения результатов

Как работает Firecrawl:

Процесс сканирования веб-страниц:

  • Начинает с указанного URL-адреса и анализирует его для выявления ссылок

  • Использует карту сайта, если она доступна; в противном случае переходит по ссылкам, найденным на сайте.

  • Рекурсивно обходит каждую ссылку, чтобы обнаружить все подстраницы.

  • Собирает контент с каждой посещенной страницы, обрабатывает рендеринг JavaScript и ограничения скорости

  • При необходимости задания можно отменить с помощью cancel_crawlhtml_job

  • Используйте это, если вам нужно извлечь всю информацию в необработанный HTML. Рабочий процесс Unstructured отлично справляется с этой задачей :smile:

Генерация текста LLM:

  • После сканирования извлекает чистый, осмысленный текстовый контент из просканированных страниц.

  • Создает оптимизированные текстовые форматы, специально отформатированные для больших языковых моделей.

  • Результаты автоматически загружаются в указанное место S3.

  • Примечание: задания по генерации текста LLM нельзя отменить после запуска. Функция cancel_llmtxt_job предусмотрена для обеспечения согласованности, но в настоящее время не поддерживается API Firecrawl.

Примечание: для использования этих функций необходимо установить переменную среды FIRECRAWL_API_KEY .

Related MCP server: MCP REST API Server

Установка и настройка

В этом руководстве приведены пошаговые инструкции по настройке и конфигурированию сервера UNS_MCP с использованием Python 3.12 и инструмента uv .

Предпосылки

  • Питон 3.12+

  • uv для управления окружающей средой

  • Ключ API от Unstructured. Вы можете зарегистрироваться и получить свой ключ API здесь .

Использование uv (рекомендуется)

При использовании uvx не требуется дополнительная установка, так как он обрабатывает выполнение. Однако, если вы предпочитаете установить пакет напрямую:

uv pip install uns_mcp

Настроить рабочий стол Клода

Для интеграции с 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. Запустите сервер в одном терминале:

    uv run python uns_mcp/server.py --host 127.0.0.1 --port 8080
    # or
    make sse-server
  2. Протестируйте сервер, используя локальный клиент в другом терминале:

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

Примечание: Чтобы остановить службы, сначала нажмите Ctrl+C на клиенте, а затем на сервере.

Настройте Claude Desktop для использования stdio:

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

Либо запустите локальный клиент:

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

Дополнительная конфигурация локального клиента

Настройте минимальный клиент с использованием переменных окружения:

  • LOG_LEVEL="ERROR" : установите для подавления отладочных выходных данных LLM, отображая понятные сообщения для пользователей.

  • CONFIRM_TOOL_USE='false' : Отключить подтверждение использования инструмента перед выполнением. Используйте с осторожностью , особенно во время разработки, так как LLM может выполнять дорогостоящие рабочие процессы или удалять данные.

Инструменты отладки

Anthropic предоставляет инструмент MCP Inspector для отладки/тестирования вашего сервера MCP. Выполните следующую команду, чтобы запустить отладочный пользовательский интерфейс. Оттуда вы сможете добавлять переменные среды (указывающие на ваш локальный env) на левой панели. Включите туда свой личный ключ API как env var. Перейдите в 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 , он полностью заменяет конфигурацию рабочего процесса.

CHANGELOG.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. Dates show when Glama detected each change.

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

ActivitySlowing
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

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
    C
    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.
    23
    939
    139
    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
    -

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Unstructured-IO/UNS-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server