Unstructured API MCP Server
OfficialНеструктурированный API MCP-сервер
Реализация сервера MCP для взаимодействия с неструктурированным API. Этот сервер предоставляет инструменты для составления списка источников и рабочих процессов.
Доступные инструменты
Инструмент | Описание |
| Перечисляет доступные источники из неструктурированного API. |
| Получите подробную информацию о конкретном исходном соединителе. |
| Создайте исходный соединитель.) |
| Обновить существующий исходный коннектор по параметрам. |
| Удалить исходный соединитель по идентификатору источника. |
| Список доступных пунктов назначения из неструктурированного API. |
| Получите подробную информацию о конкретном целевом соединителе |
| Создайте коннектор назначения по параметрам. |
| Обновите существующий коннектор назначения по идентификатору назначения. |
| Удалить коннектор назначения по идентификатору назначения. |
| Перечисляет рабочие процессы из неструктурированного API. |
| Получите подробную информацию о конкретном рабочем процессе. |
| Создайте новый рабочий процесс с идентификатором источника, назначения и т. д. |
| Запустить определенный рабочий процесс с идентификатором рабочего процесса |
| Обновить существующий рабочий процесс по параметрам. |
| Удалить определенный рабочий процесс по идентификатору. |
| Перечисляет задания для определенного рабочего процесса из неструктурированного API. |
| Получите подробную информацию о конкретной вакансии по ее идентификатору. |
| Удалить конкретную работу по идентификатору. |
| Перечисляет все рабочие процессы, имеющие завершенные задания, а также информацию об источнике и месте назначения. |
Ниже приведен список коннекторов, которые в настоящее время поддерживает сервер UNS-MCP . Полный список исходных коннекторов, которые поддерживает неструктурированная платформа, см . здесь , а список коннекторов назначения — здесь . Мы планируем добавить еще!
Источник | Место назначения |
С3 | С3 |
Лазурный | Weaviate |
Google Диск | Шишка |
OneDrive | АстраДБ |
Salesforce | MongoDB |
Sharepoint | Neo4j |
Объемы блоков данных | |
Таблица дельта томов Databricks |
Чтобы использовать инструмент, который создает/обновляет/удаляет коннектор, учетные данные для этого конкретного коннектора должны быть определены в вашем файле .env. Ниже приведен список credentials для поддерживаемых нами коннекторов:
Имя удостоверения | Описание |
| требуется запустить |
| требуется создать коннектор S3 через сервер |
| требуется создать векторный коннектор базы данных Weaviate, см. как это сделать в документации |
| для использования инструментов Firecrawl в |
| требуется создать коннектор Astradb через сервер |
| требуется опция 1 для создания Azure Connector через сервер |
| требуется вариант 2 для создания коннектора Azure через сервер |
| требуется опция 3 для создания Azure Connector через сервер |
| требуется создать коннектор Neo4j через сервер |
| требуется создать коннектор MongoDB через сервер |
| строковое значение. Исходный ключ учетной записи сервера (следуйте документации ) находится в файле json, запустите |
| требуется создать коннектор таблицы томов/дельта Databricks через сервер |
| требуется создать коннектор One Drive через сервер |
| требуется создать коннектор базы данных Pinecone vector DB через сервер |
| требуется создать исходный коннектор salesforce через сервер |
| требуется создать коннектор One Drive через сервер |
| Используется для установки уровня ведения журнала для нашего |
| установите значение true, чтобы |
| установите значение true, чтобы |
Источник Firecrawl
Firecrawl — это API веб-сканирования, который предоставляет две основные возможности в нашем MCP:
Извлечение HTML-контента : использование
invoke_firecrawl_crawlhtmlдля запуска заданий сканирования иcheck_crawlhtml_statusдля их мониторингаГенерация текста, оптимизированного для 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>"
}
}
}
}Использование исходного кода
Клонируйте репозиторий.
Установить зависимости:
uv syncУстановите свой неструктурированный ключ 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 отладку можно упростить, разделив клиент и сервер:
Запустите сервер в одном терминале:
uv run python uns_mcp/server.py --host 127.0.0.1 --port 8080 # or make sse-serverПротестируйте сервер, используя локальный клиент в другом терминале:
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 toolscancel_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
| Name | Required | Description | Default |
|---|---|---|---|
| crawl_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| crawl_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| destination_type | Yes | ||
| type_specific_config | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| source_type | Yes | ||
| type_specific_config | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It 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.
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.
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.
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.
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.
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 informationCustom 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": "" } }
| Name | Required | Description | Default |
|---|---|---|---|
| workflow_config | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| destination_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| source_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| workflow_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| destination_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| source_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| workflow_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| s3_uri | Yes | ||
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| s3_uri | Yes | ||
| max_urls | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| destination_type | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| workflow_id | No | ||
| status | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| source_type | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| destination_id | No | ||
| source_id | No | ||
| status | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| source_type | No | ||
| destination_type | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| input_file_path | Yes | ||
| output_file_dir | Yes | ||
| strategy | No | vlm | |
| vlm_model | No | claude-3-5-sonnet-20241022 | |
| vlm_model_provider | No | anthropic | |
| output_type | No | json |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| workflow_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| destination_id | Yes | ||
| destination_type | Yes | ||
| type_specific_config | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| source_id | Yes | ||
| source_type | Yes | ||
| type_specific_config | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| workflow_id | Yes | ||
| workflow_config | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
47 tool updates
v1.0.0- Changed
cancel_crawlhtml_job1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "result": { + "additionalProperties": true, + "title": "Result", + "type": "object" + } + }, + "required": [ + "result" + ], + "title": "cancel_crawlhtml_jobOutput", + "type": "object" +}
- Changed
cancel_job1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "result": { + "title": "Result", + "type": "string" + } + }, + "required": [ + "result" + ], + "title": "cancel_jobOutput", + "type": "object" +}
- Changed
check_crawlhtml_status1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "result": { + "additionalProperties": true, + "title": "Result", + "type": "object" + } + }, + "required": [ + "result" + ], + "title": "check_crawlhtml_statusOutput", + "type": "object" +}
- Changed
check_llmtxt_status1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "result": { + "additionalProperties": true, + "title": "Result", + "type": "object" + } + }, + "required": [ + "result" + ], + "title": "check_llmtxt_statusOutput", + "type": "object" +}
- Removed
create_astradb_destination - Removed
create_azure_source - Added
create_destination_connector - Removed
create_gdrive_source - Removed
create_neo4j_destination - Removed
create_s3_destination - Removed
create_s3_source - Added
create_source_connector - Removed
create_weaviate_destination - Changed
create_workflow9 fields changed- added
Input schema / $defs / CreateWorkflowTypedDict / properties / reprocess_allAdded value: +{ + "$ref": "#/$defs/Nullable_bool_" +} - changed
Input schema / $defs / Nullable_Dict_str__Any__ / anyOfPrevious value: -[ - { - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } +] - added
Input schema / $defs / Nullable_bool_Added value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] +} - removed
Input schema / $defs / WorkflowNodeTypeRemoved value: -{ - "enum": [ - "partition", - "prompter", - "chunk", - "embed" - ], - "title": "WorkflowNodeType", - "type": "string" -} - added
Input schema / $defs / WorkflowNodeTypedDict / properties / idAdded value: +{ + "$ref": "#/$defs/Nullable_str_" +} - removed
Input schema / $defs / WorkflowNodeTypedDict / properties / type / $refRemoved value: -"#/$defs/WorkflowNodeType" - added
Input schema / $defs / WorkflowNodeTypedDict / properties / type / titleAdded value: +"Type" - added
Input schema / $defs / WorkflowNodeTypedDict / properties / type / typeAdded value: +"string" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "result": { + "title": "Result", + "type": "string" + } + }, + "required": [ + "result" + ], + "title": "create_workflowOutput", + "type": "object" +}
- Removed
delete_astradb_destination - Removed
delete_azure_source - Added
delete_destination_connector - Removed
delete_gdrive_source - Removed
delete_neo4j_destination - Removed
delete_s3_destination - Removed
delete_s3_source - Added
delete_source_connector - Removed
delete_weaviate_destination - Changed
delete_workflow1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "result": { + "title": "Result", + "type": "string" + } + }, + "required": [ + "result" + ], + "title": "delete_workflowOutput", + "type": "object" +}
- Changed
get_destination_info1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "result": { + "title": "Result", + "type": "string" + } + }, + "required": [ + "result" + ], + "title": "get_destination_infoOutput", + "type": "object" +}
- Changed
get_job_info1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "result": { + "title": "Result", + "type": "string" + } + }, + "required": [ + "result" + ], + "title": "get_job_infoOutput", + "type": "object" +}
- Changed
get_source_info1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "result": { + "title": "Result", + "type": "string" + } + }, + "required": [ + "result" + ], + "title": "get_source_infoOutput", + "type": "object" +}
- Changed
get_workflow_info1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "result": { + "title": "Result", + "type": "string" + } + }, + "required": [ + "result" + ], + "title": "get_workflow_infoOutput", + "type": "object" +}
- Changed
invoke_firecrawl_crawlhtml1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "result": { + "additionalProperties": true, + "title": "Result", + "type": "object" + } + }, + "required": [ + "result" + ], + "title": "invoke_firecrawl_crawlhtmlOutput", + "type": "object" +}
- Changed
invoke_firecrawl_llmtxt1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "result": { + "additionalProperties": true, + "title": "Result", + "type": "object" + } + }, + "required": [ + "result" + ], + "title": "invoke_firecrawl_llmtxtOutput", + "type": "object" +}
- Changed
list_destinations3 fields changed- added
Input schema / $defsAdded 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" + } +} - changed
Input schema / properties / destination_type / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "$ref": "#/$defs/DestinationConnectorType" + }, + { + "type": "string" + }, + { + "type": "null" + } +] - changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "result": { + "title": "Result", + "type": "string" + } + }, + "required": [ + "result" + ], + "title": "list_destinationsOutput", + "type": "object" +}
- Changed
list_jobs3 fields changed- added
Input schema / $defsAdded value: +{ + "JobStatus": { + "enum": [ + "SCHEDULED", + "IN_PROGRESS", + "COMPLETED", + "STOPPED", + "FAILED" + ], + "title": "JobStatus", + "type": "string" + } +} - changed
Input schema / properties / status / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "$ref": "#/$defs/JobStatus" + }, + { + "type": "string" + }, + { + "type": "null" + } +] - changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "result": { + "title": "Result", + "type": "string" + } + }, + "required": [ + "result" + ], + "title": "list_jobsOutput", + "type": "object" +}
- Changed
list_sources3 fields changed- added
Input schema / $defsAdded 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" + } +} - changed
Input schema / properties / source_type / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "$ref": "#/$defs/SourceConnectorType" + }, + { + "type": "string" + }, + { + "type": "null" + } +] - changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "result": { + "title": "Result", + "type": "string" + } + }, + "required": [ + "result" + ], + "title": "list_sourcesOutput", + "type": "object" +}
- Changed
list_workflows3 fields changed- added
Input schema / $defsAdded value: +{ + "WorkflowState": { + "enum": [ + "active", + "inactive" + ], + "title": "WorkflowState", + "type": "string" + } +} - changed
Input schema / properties / status / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "$ref": "#/$defs/WorkflowState" + }, + { + "type": "string" + }, + { + "type": "null" + } +] - changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "result": { + "title": "Result", + "type": "string" + } + }, + "required": [ + "result" + ], + "title": "list_workflowsOutput", + "type": "object" +}
- Added
list_workflows_with_finished_jobs - Added
partition_local_file - Changed
run_workflow1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "result": { + "title": "Result", + "type": "string" + } + }, + "required": [ + "result" + ], + "title": "run_workflowOutput", + "type": "object" +}
- Removed
update_astradb_destination - Removed
update_azure_source - Added
update_destination_connector - Removed
update_gdrive_source - Removed
update_neo4j_destination - Removed
update_s3_destination - Removed
update_s3_source - Added
update_source_connector - Removed
update_weaviate_destination - Changed
update_workflow9 fields changed- added
Input schema / $defs / CreateWorkflowTypedDict / properties / reprocess_allAdded value: +{ + "$ref": "#/$defs/Nullable_bool_" +} - changed
Input schema / $defs / Nullable_Dict_str__Any__ / anyOfPrevious value: -[ - { - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } +] - added
Input schema / $defs / Nullable_bool_Added value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] +} - removed
Input schema / $defs / WorkflowNodeTypeRemoved value: -{ - "enum": [ - "partition", - "prompter", - "chunk", - "embed" - ], - "title": "WorkflowNodeType", - "type": "string" -} - added
Input schema / $defs / WorkflowNodeTypedDict / properties / idAdded value: +{ + "$ref": "#/$defs/Nullable_str_" +} - removed
Input schema / $defs / WorkflowNodeTypedDict / properties / type / $refRemoved value: -"#/$defs/WorkflowNodeType" - added
Input schema / $defs / WorkflowNodeTypedDict / properties / type / titleAdded value: +"Type" - added
Input schema / $defs / WorkflowNodeTypedDict / properties / type / typeAdded value: +"string" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "result": { + "title": "Result", + "type": "string" + } + }, + "required": [ + "result" + ], + "title": "update_workflowOutput", + "type": "object" +}
39 tool updates
- First observed
cancel_crawlhtml_job - First observed
cancel_job - First observed
check_crawlhtml_status - First observed
check_llmtxt_status - First observed
create_astradb_destination - First observed
create_azure_source - First observed
create_gdrive_source - First observed
create_neo4j_destination - First observed
create_s3_destination - First observed
create_s3_source - First observed
create_weaviate_destination - First observed
create_workflow - First observed
delete_astradb_destination - First observed
delete_azure_source - First observed
delete_gdrive_source - First observed
delete_neo4j_destination - First observed
delete_s3_destination - First observed
delete_s3_source - First observed
delete_weaviate_destination - First observed
delete_workflow - First observed
get_destination_info - First observed
get_job_info - First observed
get_source_info - First observed
get_workflow_info - First observed
invoke_firecrawl_crawlhtml - First observed
invoke_firecrawl_llmtxt - First observed
list_destinations - First observed
list_jobs - First observed
list_sources - First observed
list_workflows - First observed
run_workflow - First observed
update_astradb_destination - First observed
update_azure_source - First observed
update_gdrive_source - First observed
update_neo4j_destination - First observed
update_s3_destination - First observed
update_s3_source - First observed
update_weaviate_destination - First observed
update_workflow
TDQS
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.
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.
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.
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
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
An MCP server that provides an API to LLMs to manage their JumpCloud resources.
Model Context Protocol server for the Apideck Unified API. Connect any MCP-compatible agent framework to 100+ accounting systems, HRIS platforms, file storage providers, and more through one integration. More information https://www.apideck.com/mcp-server
MCP server that lets AI assistants use all OneSchema features exposed via the public API.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA 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.6MIT
- FlicenseNot gradedqualityDmaintenanceA server implementation of the Model Context Protocol (MCP) that provides REST API endpoints for managing and interacting with MCP resources.-
- AlicenseCqualityAmaintenanceAn 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.23939139TypeScriptISC
- FlicenseNot gradedqualityDmaintenanceAn 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
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Unstructured-IO/UNS-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server