Skip to main content
Glama
stufently

vkcloud-s3-mcp-ai-cli

VK Cloud S3 MCP Server & AI CLI

Status License

MCP-сервер и CLI для S3 VK Cloud (ВК Облако): подключение Hotbox/Icebox к Claude Code, Cursor и Codex, просмотр объектов и скачивание бэкапов. Бинарь vkcloud-s3 использует отдельный профиль возможностей облака.

English guide · Каталог S3 MCP-серверов

English

A Go MCP server, CLI and agent skill for VK Cloud S3 Object Storage. Connect Claude Code, Cursor and Codex to scoped object storage for inspection and backup recovery. ru-msk and kz-ast pools; bucket tagging is disabled. See the full English guide.

Related MCP server: beget-s3-mcp-ai-cli

Быстрый старт

Возьми бинарь своей платформы из Releases (v0.1.0 опубликован; есть в MCP Registry и Smithery) либо собери с Go 1.27.2:

bash scripts/go.sh go build -o vkcloud-s3 ./cmd/vkcloud-s3
./vkcloud-s3 version
./vkcloud-s3 auth set
./vkcloud-s3 auth status
./vkcloud-s3 ls --json

auth set спрашивает key ID и secret без эха; без TTY читает две строки stdin. Не передавай секрет в argv. Файл ~/.config/vkcloud-s3/credentials создаётся атомарно с 0600; более широкие права отклоняются.

Приоритет: флаги > env > файл. Переменные: VKCLOUD_S3_ACCESS_KEY_ID, VKCLOUD_S3_SECRET_ACCESS_KEY, VKCLOUD_S3_POOL (ru-msk), VKCLOUD_S3_ENDPOINT. HTTP требует VKCLOUD_S3_ALLOW_INSECURE=1.

Образ: ghcr.io/stufently/vkcloud-s3-mcp-ai-cli:0.1.0; локальная сборка: docker build -t vkcloud-s3 . Образ запускает MCP от uid 65532, содержит CA-сертификаты. Передай креды через приватное окружение/файл.

Возможности

  • Потоковые object CRUD, copy, multipart и presigned URL в пределах профиля.

  • Версии, теги, CORS, политика и Object Lock configuration регистрируются при наличии поддержки.

  • Ограниченные сканы, диагностика, JSON, установка MCP и встроенного skill.

Подключение к Claude Code, Cursor, Codex

Add vkcloud-s3 MCP server to Cursor

Кнопка ставит MCP из Docker-образа ghcr.io/stufently/vkcloud-s3-mcp-ai-cli:0.1.0 в режиме только чтения. Ключи в конфиг не пишутся: Cursor подставляет ${env:…} из окружения, поэтому задай VKCLOUD_S3_ACCESS_KEY_ID и VKCLOUD_S3_SECRET_ACCESS_KEY там, откуда запускается Cursor; VKCLOUD_S3_POOL — если бакет не в пуле по умолчанию (пустое значение = пул по умолчанию). Тот же блок — для Windsurf (mcp_config.json) и вручную для ~/.cursor/mcp.json:

{
  "mcpServers": {
    "vkcloud-s3": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "VKCLOUD_S3_ACCESS_KEY_ID",
        "-e",
        "VKCLOUD_S3_SECRET_ACCESS_KEY",
        "-e",
        "VKCLOUD_S3_POOL",
        "ghcr.io/stufently/vkcloud-s3-mcp-ai-cli:0.1.0"
      ],
      "env": {
        "VKCLOUD_S3_ACCESS_KEY_ID": "${env:VKCLOUD_S3_ACCESS_KEY_ID}",
        "VKCLOUD_S3_SECRET_ACCESS_KEY": "${env:VKCLOUD_S3_SECRET_ACCESS_KEY}",
        "VKCLOUD_S3_POOL": "${env:VKCLOUD_S3_POOL}"
      }
    }
  }
}
vkcloud-s3 mcp install --client cursor --dry-run
vkcloud-s3 mcp install --client cursor
vkcloud-s3 mcp install --client claude-desktop
vkcloud-s3 mcp install --client codex
vkcloud-s3 mcp install --client claude-code --scope project
vkcloud-s3 mcp install --client claude-code --scope user

Последняя команда только печатает claude mcp add. Путь бинаря абсолютный; ключи в конфиг не пишутся. Cursor: ~/.cursor/mcp.json, Claude Code project: ./.mcp.json; Desktop — каталог конфигурации своей ОС. JSON сохраняет чужие ключи, .bak и идемпотентность.

Codex: ~/.codex/config.toml. Существующая таблица требует --force; заменяется только блок между # >>> vkcloud-s3 (managed) / # <<< vkcloud-s3 (managed). Таблица без маркеров не заменяется даже с --force; остальные байты TOML целы.

Уровни включаются независимо: vkcloud-s3 mcp --allow-write --allow-delete --allow-admin либо VKCLOUD_S3_ALLOW=write,delete,admin. Флаги доступны и в mcp install. FILE_ROOT включается через VKCLOUD_S3_FILE_ROOT.

Инструменты MCP

Level

Tools

read

s3_list_buckets, s3_list_objects, s3_head_object, s3_get_object, s3_preview_object, s3_presign_get, s3_list_object_versions, s3_list_multipart_uploads, s3_list_parts, s3_get_bucket_config, s3_largest_objects, s3_prefix_usage, s3_unfinished_uploads, s3_get_object_tagging

read + FILE_ROOT

s3_download_file

write

s3_put_object, s3_create_folder, s3_copy_object, s3_presign_put, s3_multipart_create, s3_multipart_presign_part, s3_multipart_complete, s3_put_object_tagging

write + FILE_ROOT

s3_upload_file

delete

s3_delete_object, s3_delete_objects, s3_multipart_abort

admin

s3_create_bucket, s3_put_bucket_versioning, s3_put_bucket_cors, s3_put_bucket_policy, s3_delete_bucket_policy, s3_put_object_lock_configuration

admin + delete

s3_delete_bucket

Ресурсы: vkcloud-s3://config, vkcloud-s3://capabilities, vkcloud-s3://pools. Неподдерживаемые возможности исключают инструменты.

Списки — до 1000 элементов с continuation_token; версии/multipart имеют второй маркер. Inline get/put — 262144 байт, preview — 65536; большие файлы идут через presigned URL или FILE_ROOT. Ответ содержит structuredContent и JSON-текст; текст свыше 256 КиБ заменяется краткой сводкой. Ошибки: code/message/retryable; 429/503 SDK повторяет адаптивно.

Аналитика сканирует максимум max_scan (по умолчанию 10000); partial/token отмечают неполный результат. Prefix usage выдаёт страницы агрегатов через next_result_offset. Это не биллинг.

Сценарий: Проверка Hotbox/Icebox и доступ к нужному региону

Профиль включает московский ru-msk и казахстанский kz-ast пулы. Выберите пул своего бакета, проверьте метаданные Hotbox/Icebox и создайте короткую ссылку для передачи существующего архива:

vkcloud-s3 --pool ru-msk stat backups/daily/archive.tar
vkcloud-s3 --pool ru-msk du backups/daily/ --max-scan 10000 --json
vkcloud-s3 --pool ru-msk presign backups/daily/archive.tar --expires 3600

Примеры используют существующий бакет backups и объект daily/archive.tar; замените их своими значениями. Профиль и API облака ещё требуют живой проверки.

CLI

vkcloud-s3 mb backups
vkcloud-s3 cp ./archive.tar s3://backups/daily/archive.tar --part-size 5242880 --overwrite --yes
vkcloud-s3 ls backups/daily/ --max-keys 100 --json
vkcloud-s3 stat backups/daily/archive.tar
vkcloud-s3 cp s3://backups/daily/archive.tar ./restored.tar
vkcloud-s3 cp ./directory s3://backups/tree/ --recursive --overwrite --yes
vkcloud-s3 cp s3://backups/tree/ ./restored-directory --recursive
vkcloud-s3 cp s3://backups/daily/archive.tar s3://backups/copy.tar --overwrite --yes
vkcloud-s3 cat backups/daily/notes.txt
vkcloud-s3 versions backups/daily/ --json
vkcloud-s3 du backups/daily/ --max-scan 10000 --json
vkcloud-s3 presign backups/daily/archive.tar --expires 3600
vkcloud-s3 rm backups/copy.tar --yes
vkcloud-s3 rb empty-bucket --yes
vkcloud-s3 doctor --json
vkcloud-s3 compat --markdown

cp принимает обычные локальные пути и S3 URI s3://bucket/key либо vkcloud-s3://bucket/key. Большие загрузки используют manager/multipart, --recursive копирует каталоги/префиксы. Перезапись требует --overwrite и подтверждения; выгрузка атомарна. rm/rb/mv без --yes на не-TTY дают код 2; на TTY спрашивают. --json общий, ошибки — stderr и ненулевой код.

doctor проверяет источник/права кредов, DNS/TLS, часы по Date и ListBuckets: >5 минут — предупреждение, >15 — ошибка.

Skill для AI-агентов

vkcloud-s3 skill install
vkcloud-s3 skill install --target ./agent-skills/vkcloud-s3

По умолчанию ~/.claude/skills/vkcloud-s3. Идемпотентно устанавливает SKILL.md и шесть references: backup/restore, share, least privilege, cost hygiene, migration, incident response. Триггеры: «vkcloud s3», «бакет VK Cloud», «загрузи в s3», «presigned», «бэкап в s3».

Безопасность

Если conditional_writes:false, запись без перезаписи отказывает до S3-запросов: HEAD не даёт атомарной защиты. Для согласованной записи используй --overwrite --yes в CLI либо overwrite:true, confirm:true в MCP, сохраняя политику подтверждения. Если conditional_delete:false, mv и s3_move_object отключены.

MCP по умолчанию регистрирует только read; неподдерживаемые возможности и отсутствующие уровни исключают инструмент.

VKCLOUD_S3_DESTRUCTIVE_POLICY: confirm использует elicitation при поддержке клиента, иначе нужен confirm:true после согласия человека; elicit требует elicitation и не допускает обхода confirm:true; block всегда запрещает, allow выполняет без гейта. Отказ предшествует любым S3-запросам. Гейт покрывает удаления, move, presigned PUT, политику/Object Lock, suspension versioning и перезаписи.

При conditional_writes:true операции put/copy/move/multipart complete/upload file используют overwrite:false, HEAD цели и If-None-Match: *; при false запись по умолчанию отказывает. overwrite:true требует тот же гейт.

Скоуп: VKCLOUD_S3_ALLOWED_BUCKETS=backups и VKCLOUD_S3_ALLOWED_PREFIXES=backups/daily/. Префикс учитывает границу сегмента; daily-evil не подходит. Сегменты '..' отклоняются. Частичный скоуп запрещает целый бакет и широкие списки даже при наличии его в ALLOWED_BUCKETS. Copy/move проверяет источник и цель.

Файловые MCP-инструменты используют os.Root: только относительные пути внутри FILE_ROOT; '..', абсолютные пути и симлинки наружу отклоняются. На каждый вызов одна JSON-строка в stderr; VKCLOUD_S3_AUDIT_FILE дополнительно пишет в 0600. Секреты и X-Amz-Signature/Credential/Security-Token редактируются в логах/ошибках. Полная подписанная ссылка — только результат операции. Ограничивай также права самого S3-ключа.

s3_download_file по умолчанию публикует скачанный файл без замены существующего, в том числе созданного во время скачивания. Для замены передай overwrite:true: применяется разрушительная политика с подтверждением через форму либо confirm:true после согласия человека.

Пулы и классы хранения VK Cloud

Пулы, эндпоинты и классы — в таблице совместимости; каждый факт, цены и ошибки с первоисточниками — в ресерче. Пул по умолчанию: ru-msk; регион SigV4 равен выбранному пулу. В профиле verified:false: проверка на versitygw не подтверждает API облака. Неподтверждённые сведения помечены [предположение]; цены в профиле не являются калькулятором биллинга.

Lifecycle, ACL, bucket tagging и object retention могут поддерживаться облаком, но эта версия не предоставляет инструментов для их настройки; данные профиля описывают совместимость S3 API.

FAQ

Как выбрать endpoint VK Cloud S3? Используйте VKCLOUD_S3_POOL=ru-msk или kz-ast; соответствующий endpoint берётся из профиля совместимости. Не меняйте регион подписи независимо от выбранного сервиса.

Поддерживает ли этот проект Hotbox и Icebox? Оба класса представлены в профиле как STANDARD и STANDARD_IA. Наличие класса в профиле не означает, что CLI автоматически переводит объекты между классами; особенности и цены указаны в ресерче VK Cloud.

Можно ли менять теги бакета VK Cloud через MCP? bucket_tagging выключен; инструменты тегов объектов и бакета не следует считать взаимозаменяемыми. Проверяйте vkcloud-s3://capabilities и таблицу инструментов ниже.

Что такое MCP-сервер? Программа предоставляет агентам инструменты и ресурсы через Model Context Protocol; здесь stdio.

Как подключить MCP-сервер к Claude Code? Сохрани ключи auth set, затем используй project install либо напечатанную user-команду.

Безопасно ли давать агенту доступ к S3? Ограничь ключи, скоуп и уровни; сохрани confirm/block и одобряй разрушительные эффекты осознанно.

Чем это отличается от aws-cli и rclone? Бинарь объединяет MCP, гейт, аудит, аналитику, skill и CLI; aws-cli/rclone остаются самостоятельными средствами передачи/автоматизации.

Какие возможности поддерживаются? См. capabilities и compat. Инструменты регистрируются по профилю; lifecycle, ACL, bucket tagging и object retention эта версия не настраивает.

Другие провайдеры

Общий каталог: MCP-серверы и CLI для российских S3.

Провайдер

Репозиторий

Сценарий

Selectel

selectel-s3-mcp-ai-cli

Выбор пула и восстановление резервных копий

Yandex Cloud

yandex-s3-mcp-ai-cli

Инвентаризация объектов и проверка версий бэкапов

VK Cloud

vkcloud-s3-mcp-ai-cli

Проверка Hotbox/Icebox и доступ к нужному региону

Cloud.ru

cloudru-s3-mcp-ai-cli

Диагностика доступа к Evolution Object Storage

Timeweb Cloud

timeweb-s3-mcp-ai-cli

Восстановление архивов и учёт объёма префикса

MWS

mws-s3-mcp-ai-cli

Проверка HMAC-доступа и короткие ссылки на архивы

Beget

beget-s3-mcp-ai-cli

Просмотр и восстановление файлов из готового бакета

Shared Go kit

s3-mcp-ai-cli-kit

Общие MCP, CLI, защиты и CI

Лицензия

MIT. Проверенные факты и предположения.

Проверки в Docker: bash scripts/go.sh go test -race ./..., bash scripts/conformance.sh, bash scripts/mcp_smoke.sh, bash scripts/mutation_gate.sh, bash scripts/check_docs.sh. Conformance использует versitygw v1.8.0 и тестовые ключи.

Общие MCP/CLI, защиты и проверки поставляет s3-mcp-ai-cli-kit v0.1.0; в этом репозитории остаются встроенный профиль, тонкий main и документы VK Cloud.

Available Tools

14 tools
s3_get_bucket_configB

Read location, versioning, CORS, policy and Object Lock; report absent/unsupported configuration.

ParametersJSON Schema
NameRequiredDescriptionDefault
bucketYes

TDQS

B3/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It usefully discloses one behavioral trait: absent or unsupported configuration is reported rather than erroring. It does not state that it is read-only, what permissions are required, or that it likely fans out into several underlying API calls.

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

Conciseness4/5

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

One front-loaded sentence with the verb first and no filler. It is appropriately sized, though the trailing clause about absent configs could be seen as slightly compressed.

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

Completeness3/5

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

No output schema exists, so the description should ideally sketch the shape of the multi-domain response; it only notes the absent/unsupported handling. Adequate but leaves the return structure and the bucket parameter unaddressed.

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

Parameters2/5

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

Schema coverage is 0% and the single 'bucket' parameter is never mentioned, described, or exemplified in the description. For a tool whose only input is a bucket identifier, the description adds no meaning about format or required identifier.

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

Purpose4/5

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

Clear verb+resource ('Read ... bucket config') and it enumerates the exact configuration domains fetched: location, versioning, CORS, policy, Object Lock. This implicitly separates it from the object-oriented siblings (s3_get_object, s3_head_object, etc.), though it never explicitly names an alternative.

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

Usage Guidelines2/5

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

No statement of when to reach for this tool versus the many s3_list_* / s3_get_object variants. The agent must infer that this is the bucket-level inspection call. No prerequisites or exclusion conditions are given.

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

s3_get_objectA

Read at most 262144 bytes inline as text/base64; use presign for larger objects.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
bucketYes
encodingNo
max_bytesNo
version_idNo

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden and does disclose two meaningful traits: a hard 262144-byte truncation cap and that content is returned as text or base64. It omits permission requirements, error behavior for missing keys, and whether truncated output is flagged, leaving real gaps for a read tool with zero annotation coverage.

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

Conciseness5/5

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

A single dense sentence with the size constraint and output format front-loaded, followed immediately by the routing alternative. No filler; every clause carries information.

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

Completeness3/5

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

For a read tool with no annotations and no output schema, the description covers the essential size/encoding behavior but leaves key gaps: version_id handling, truncation signaling, and failure modes. Adequate to call the tool, not complete for an agent to do so confidently.

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

Parameters3/5

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

Schema coverage is 0% with 5 parameters, so the description must compensate. It partially does: the byte cap implies max_bytes and 'text/base64' implies encoding, but version_id is never mentioned and its semantics are undocumented in both schema and description.

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

Purpose4/5

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

States a specific verb and resource (read an S3 object) plus a concrete scope for the operation (at most 262144 bytes, inline as text/base64). It explicitly distinguishes itself from s3_presign_get, but says nothing about how it differs from near-neighbors like s3_head_object or s3_preview_object, so the differentiation is partial.

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

Usage Guidelines4/5

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

Gives an explicit when-not condition ('use presign for larger objects') and names the alternative tool, which is exactly the routing decision an agent needs. It stops short of a full when/when-not picture because it never addresses metadata-only (s3_head_object) or preview (s3_preview_object) use cases.

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

s3_get_object_taggingC

Get object tags.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
bucketYes
version_idNo

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing: no required permissions, no behavior for untagged objects (empty tag set vs. missing-tag error), no versioning interaction with version_id, and no error semantics. The only signal is the implicit read-only nature of "Get".

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

Conciseness3/5

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

A single four-word sentence — there is no padding or buried lead, but the brevity stems from under-specification rather than disciplined editing. It is front-loaded only in the trivial sense that there is nothing else to order.

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

Completeness2/5

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

For a three-parameter tool with zero annotation coverage and no output schema, the description is far too thin. It does not cover parameter behavior, permissions, or the shape of the tag result, so the agent lacks the context needed to invoke it confidently in edge cases.

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

Parameters2/5

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

Schema description coverage is 0% across three parameters, and the description adds no parameter meaning at all. While bucket/key/version_id follow familiar S3 conventions, version_id in particular is undocumented — an agent gets no indication whether omitting it targets the current version or the latest tagging state.

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

Purpose3/5

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

"Get object tags" states a verb (get) and a resource (an object's tags), so the operation itself is unambiguous. However, it is essentially a restatement of the tool name with no differentiation from siblings such as s3_get_object or s3_head_object, leaving the agent to infer where tag retrieval fits in the S3 read family.

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

Usage Guidelines2/5

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

There is no when-to-use, when-not-to-use, or alternative-tool guidance anywhere in the description. The agent must guess whether this is meant for auditing tag sets, pre-delete checks, or general metadata reads, and must infer relationships with s3_get_object and s3_get_bucket_config on its own.

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

s3_head_objectC

Read object metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
bucketYes
version_idNo

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It does not disclose that no object body is returned, whether permissions/403 errors are common, whether a version_id is required for non-current versions, or what metadata fields come back. Only the implied read-only nature of 'Read' is conveyed.

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

Conciseness3/5

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

It is a single front-loaded sentence with no filler, which is structurally clean. But brevity here tips into under-specification: the sentence is too small to carry the tool's semantics rather than genuinely efficient.

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

Completeness2/5

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

With no annotations, no output schema, and 0% parameter coverage, an agent lacks everything it needs to call this correctly. Details on version_id usage, the metadata-only return, and error conditions are all missing.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate and does not. The three parameters (bucket, key, version_id) are only inferable from their names; the description adds no meaning, format, or requirement details beyond the schema property names.

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

Purpose4/5

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

'Read object metadata' names a specific verb (read) and resource (object metadata), which is clearer than a tautology. However, it does not differentiate from close siblings like s3_get_object or s3_get_object_tagging, so an agent can't tell from the text alone why HEAD-style metadata retrieval is the right pick over a full GET.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives such as s3_get_object (content) or s3_get_object_tagging (tags). The distinction only surfaces semantically if the agent already knows S3 HEAD semantics; the description never states it.

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

s3_largest_objectsC

Bounded largest objects scan, default max_scan 10000; partial results carry continuation token.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
bucketYes
prefixNo
max_scanNo
continuation_tokenNo

TDQS

C2.9/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It usefully discloses bounded scanning, default max_scan=10000, and that partial results carry a continuation token. However, it omits read-only nature, permissions, cost/latency implications, and whether max_scan counts objects or bytes.

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

Conciseness4/5

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

Single compact sentence, front-loaded with the core operation and key constraint. No fluff, but its brevity comes at the cost of missing parameter and usage detail.

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

Completeness2/5

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

For a 5-parameter scan with no annotations or output schema, the description is too thin. It omits the roles of bucket, prefix, and limit, the relationship between limit and max_scan, how 'largest' is defined or ordered, and what the response contains.

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

Parameters2/5

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

Schema coverage is 0% across 5 parameters. The description only addresses max_scan and continuation_token, leaving bucket, prefix, and limit undefined, and does not clarify how limit differs from max_scan.

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

Purpose4/5

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

States a specific operation (scan for largest objects) and a key constraint (bounded with default max_scan). It does not differentiate from siblings like s3_list_objects or s3_prefix_usage, which also enumerate bucket contents.

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

Usage Guidelines2/5

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

No guidance on when to choose this over s3_list_objects or s3_prefix_usage, nor any prerequisites. The default max_scan and continuation token are parameter behavior, not selection criteria.

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

s3_list_bucketsB

List visible buckets with pagination.

ParametersJSON Schema
NameRequiredDescriptionDefault
max_keysNo
continuation_tokenNo

TDQS

B3.1/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. It discloses 'visible' buckets and pagination, which adds useful context beyond the schema, but omits auth requirements, return format, and whether visibility is account-scoped or permission-scoped.

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

Conciseness4/5

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

One short sentence with no waste, front-loading the action and resource. It is appropriately sized for a simple list operation.

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

Completeness2/5

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

For a tool with no annotations, no output schema, and zero schema description coverage on 2 parameters, the description is minimal. It leaves parameter meaning, return shape, and pagination mechanics unexplained.

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

Parameters2/5

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

Schema coverage is 0% and the description mentions only 'pagination', which loosely corresponds to max_keys and continuation_token. It does not explain the relationship between the parameters or their syntax, leaving most semantics undocumented.

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

Purpose4/5

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

States a specific verb and resource: listing buckets. It is distinguishable from siblings like s3_list_objects or s3_list_object_versions by the resource 'buckets'. However, it doesn't call out the distinction explicitly, so an agent must infer it from the resource name.

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

Usage Guidelines3/5

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

The mention of 'visible' and 'pagination' implies usage context, but no explicit when-to-use, when-not-to-use, or sibling alternatives are given. An agent gets a weak signal without direction.

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

s3_list_multipart_uploadsC

List unfinished uploads; pass both returned markers.

ParametersJSON Schema
NameRequiredDescriptionDefault
bucketYes
prefixNo
max_keysNo
upload_idNo
continuation_tokenNo

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full disclosure burden. It hints that results are paginated via markers, but does not state read-only safety, required permissions, whether results are scoped by bucket/prefix, or what the response contains.

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

Conciseness4/5

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

Two terse, front-loaded clauses with no padding. It is appropriately sized for a short definition, though the second clause is too compressed to be useful.

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

Completeness2/5

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

With no annotations, no output schema, and 0% parameter coverage across 5 parameters, the description is far too thin for the complexity. An agent cannot determine filtering behavior, permission needs, or return shape from this text.

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

Parameters2/5

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

Schema description coverage is 0% for 5 parameters, so the description must compensate and largely does not. The cryptic phrase "both returned markers" ambiguously gestures at continuation_token/upload_id while bucket, prefix, and max_keys remain completely unexplained.

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

Purpose3/5

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

The description states a clear verb+resource ("List unfinished uploads"), which is better than a tautology. However, it does not differentiate from near-duplicate siblings such as s3_list_parts and s3_unfinished_uploads, leaving the agent to guess which is appropriate.

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

Usage Guidelines2/5

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

The only guidance is "pass both returned markers," which is a pagination instruction rather than a when-to-use rule. There is no indication of when this is preferable to s3_list_parts or s3_unfinished_uploads, nor any prerequisites.

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

s3_list_objectsC

List a scoped prefix, at most 1000 objects per page.

ParametersJSON Schema
NameRequiredDescriptionDefault
bucketYes
prefixNo
max_keysNo
continuation_tokenNo

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations, the description carries the full burden. It discloses a page limit of 1000 objects and implies pagination, but doesn't explain that continuation_token is used for pagination, what happens when no prefix is given, or any permissions or rate limits. This is insufficient for a tool with four parameters.

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

Conciseness4/5

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

The description is a single sentence with no wasted words, though it could benefit from being more front-loaded with essential information about pagination.

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

Completeness2/5

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

Given four parameters, no annotations, and no output schema, the description is too sparse. It fails to explain pagination, the role of continuation_token, or how to correctly scope the listing, leaving an agent likely to misuse the tool.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It only mentions 'scoped prefix' and '1000 objects per page', which loosely maps to prefix and max_keys, but provides no meaning for bucket or continuation_token, leaving critical parameters undocumented.

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

Purpose3/5

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

The description states the operation (list) and the resource (objects under a scoped prefix), and mentions a page limit of 1000. However, it doesn't clearly distinguish itself from sibling list tools like s3_list_object_versions or s3_list_parts, and lacks explicit S3 context.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives such as s3_prefix_usage or s3_largest_objects. The mention of a 'scoped prefix' implies usage but doesn't specify when or why to choose this over other listing methods.

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

s3_list_object_versionsC

List versions and delete markers with both pagination markers.

ParametersJSON Schema
NameRequiredDescriptionDefault
bucketYes
prefixNo
max_keysNo
version_markerNo
continuation_tokenNo

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It reveals that delete markers are surfaced (a useful behavioral trait), but says nothing about permissions, ordering, how to iterate pages, or cost/rate characteristics of a versioned listing.

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

Conciseness4/5

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

A single tight, front-loaded sentence with no waste. It is slightly cryptic ('both pagination markers' rather than naming the markers), but efficient overall.

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

Completeness2/5

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

For a 5-parameter listing tool with no annotations and no output schema, the description is far too thin. It does not compensate for the absent parameter documentation or explain the pagination loop an agent must run.

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

Parameters2/5

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

Schema description coverage is 0% across 5 parameters. The phrase 'both pagination markers' obliquely gestures at version_marker and continuation_token, but bucket, prefix, and max_keys are undocumented, and the description gives no syntax or semantics for any of them.

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

Purpose4/5

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

States a specific verb (List) and resource (object versions), and adds the notable scope detail that delete markers are included. This implicitly distinguishes it from s3_list_objects, which lists only current objects, though the sibling is never named.

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

Usage Guidelines2/5

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

No when-to-use guidance, no prerequisites, and no mention of alternatives like s3_list_objects or s3_list_multipart_uploads. The agent must infer that this is the versioned-listing variant purely from the tool name.

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

s3_list_partsD

List multipart parts.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
bucketYes
max_keysNo
upload_idYes
continuation_tokenNo

TDQS

D1.3/5.0
Behavior1/5

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

No annotations are provided, so the description carries the full behavioral burden, and it discloses nothing: no pagination behavior, no note that results are only meaningful for an active upload, no auth/permission requirements, no error semantics for expired upload IDs.

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

Conciseness2/5

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

The single sentence is short but that brevity reflects under-specification rather than economy. There is no structure, no front-loaded context, and nothing to help an agent act correctly.

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

Completeness1/5

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

With no annotations, no output schema, and 5 completely undocumented parameters, the definition is inadequate for an agent to invoke this tool correctly. It fails to convey required inputs' meaning or expected return shape.

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

Parameters1/5

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

Schema description coverage is 0% across 5 parameters (bucket, key, upload_id, max_keys, continuation_token), and the description adds no meaning for any of them. Notably, it never explains that upload_id identifies the upload whose parts are being listed, nor how max_keys/continuation_token drive pagination.

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

Purpose2/5

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

The description 'List multipart parts' essentially restates the tool name (s3_list_parts) without adding distinguishing detail. It does not clarify that these are parts belonging to a single in-progress multipart upload, which is the key distinction from the sibling s3_list_multipart_uploads.

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

Usage Guidelines1/5

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

No guidance whatsoever on when to use this tool, what prerequisites exist (a valid upload_id from an in-progress multipart upload), or how it relates to s3_list_multipart_uploads and s3_unfinished_uploads.

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

s3_prefix_usageC

Bounded usage by first-level prefixes; paginate aggregate rows with next_result_offset.

ParametersJSON Schema
NameRequiredDescriptionDefault
bucketYes
prefixNo
max_scanNo
result_offsetNo
continuation_tokenNo

TDQS

C2.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full disclosure burden, and it delivers very little. "Bounded" implies scan limits via max_scan and "paginate" implies a paged result set, but the description never states what the bound is, what permissions are needed, whether the operation is a read or a scan with cost implications, or what the aggregate rows contain.

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

Conciseness4/5

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

One short sentence, front-loaded with the scoping idea and followed by the pagination note; there is no filler. It is appropriately brief, though brevity here borders on under-specification rather than discipline.

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

Completeness2/5

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

For a five-parameter tool with zero schema descriptions, no annotations, and no output schema, the description leaves critical gaps: it never explains what "usage" is, how the aggregate is computed, why the scan is bounded, or how pagination terminates. An agent cannot confidently invoke this from the definition alone.

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

Parameters2/5

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

Schema description coverage is 0% across five parameters (bucket, prefix, max_scan, result_offset, continuation_token), so the description is required to compensate and does not. Worse, it directs the agent to paginate with "next_result_offset," a name that does not exist in the schema, where the pagination fields are result_offset and continuation_token — a misleading reference.

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

Purpose2/5

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

The phrase "usage by first-level prefixes" largely restates the tool name, s3_prefix_usage, without defining what "usage" actually measures (storage bytes, object counts, request volume). It does hint at aggregation grouped by top-level prefixes, but there is no clear verb and no differentiation from siblings such as s3_largest_objects that also report size-oriented data.

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

Usage Guidelines2/5

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

There is no guidance on when to choose this tool over the other thirteen s3_* siblings, nor any stated preconditions or exclusions. The only procedural hint is that aggregate rows are paginated, which is mechanics rather than routing context.

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

s3_presign_getC

Create signed GET URL; default 3600 seconds, provider maximum is unverified.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
bucketYes
version_idNo
expires_secondsNo

TDQS

C2.9/5.0
Behavior3/5

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

Annotations are absent, so the description carries the full burden, and it does disclose two real behaviors: the default expiry is 3600 seconds and the provider's maximum is unverified. What it omits is significant for a credential-issuing tool — that the returned URL grants temporary anonymous access, which credentials/permits are needed to sign, and whether the URL is reusable.

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

Conciseness4/5

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

One compact clause plus a semicolon-joined caveat; nothing is padded and the core action is front-loaded. It is terse to the point of under-specification, but that is a completeness problem rather than a verbosity one.

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

Completeness2/5

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

With no annotations, no output schema, and 0% schema coverage, the description should carry more. It never states what is returned (a URL string), what expiry bounds are valid, or what permission the caller needs to sign the URL, so an agent cannot reliably invoke it without prior S3 knowledge.

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

Parameters2/5

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

Schema description coverage is 0% across 4 parameters. The description supplies a default for expires_seconds (3600) that the schema does not encode, which is genuine added value, but bucket, key, and version_id receive no explanatory text anywhere, leaving the majority of parameters undocumented.

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

Purpose4/5

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

States a specific verb and artifact: 'Create signed GET URL'. This clearly separates it from siblings like s3_get_object (which returns object bytes) and the many s3_list_* / s3_get_*_config tools. It stops short of naming the resource (an S3 object identified by bucket/key), so it isn't a 5.

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

Usage Guidelines2/5

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

No guidance on when to use presigning versus just fetching the object with s3_get_object, nor any note about handing the URL to an external party or credential requirements. The agent must infer the use case entirely.

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

s3_preview_objectC

Preview first at most 65536 bytes, detected type and CSV header.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
bucketYes
encodingNo
max_bytesNo
version_idNo

TDQS

C2.9/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It discloses important traits such as the byte cap (65536) and partial-read behavior, and it mentions return content (detected type, CSV header). However, it omits read-only confirmation, permissions, side effects, error behavior, and rate/cost context.

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

Conciseness5/5

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

A single front-loaded sentence with no wasted words. It is appropriately sized for the description's scope, even though the content itself is sparse.

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

Completeness2/5

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

For a tool with five parameters, no output schema, and no annotations, the description is too sparse. It gives some return information but omits parameter semantics, access requirements, and operational constraints, leaving an agent under-informed for correct invocation.

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

Parameters1/5

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

Schema description coverage is 0% and there are five parameters, yet the description explains none of them. It mentions '65536 bytes' and 'CSV header' but does not map these to max_bytes, encoding, bucket, key, or version_id, so it fails to compensate 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.

Purpose4/5

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

States a specific verb ('preview') and resource ('object' via name), plus the scope ('first at most 65536 bytes') and return content ('detected type and CSV header'). It is clear enough to distinguish it from full-object retrieval, but it does not explicitly name or route against siblings like s3_get_object or s3_head_object.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus s3_get_object, s3_head_object, or other siblings. The word 'preview' implies a use case, but there are no explicit conditions, exclusions, or alternatives stated.

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

s3_unfinished_uploadsC

Find uploads older than N hours (default 24), bounded by max_scan.

ParametersJSON Schema
NameRequiredDescriptionDefault
bucketYes
prefixNo
max_scanNo
upload_idNo
older_than_hoursNo
continuation_tokenNo

TDQS

C2.8/5.0
Behavior3/5

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

No annotations are supplied, so the description carries the full burden. It does disclose one meaningful behavior not present in the schema: the scan is 'bounded by max_scan', implying results may be truncated. It says nothing about read-only safety, permissions, or how partial results are signalled, which leaves real gaps for a 6-parameter tool.

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

Conciseness4/5

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

A single sentence with no filler, and the core scoping detail (older than N hours) is front-loaded. It is efficient, though arguably too terse for a six-parameter tool, which shows up as a completeness gap rather than verbosity.

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

Completeness2/5

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

With no annotations, no output schema, and six parameters, the description should explain what is returned (list of uploads and which fields), how pagination via continuation_token works, and how this differs from s3_list_multipart_uploads. None of that is present, leaving the agent under-informed for a non-trivial tool.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It adds genuine meaning for the two least obvious parameters (older_than_hours default of 24, and max_scan as a scan bound), but leaves bucket, prefix, upload_id, and continuation_token entirely undocumented, so compensation is only partial.

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

Purpose3/5

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

The verb 'Find' plus 'uploads older than N hours' gives a rough idea, and the name says 'unfinished uploads', so the agent can infer this surfaces stale/incomplete multipart uploads. However, the description never actually says 'multipart' or what makes an upload 'unfinished', and it does not differentiate from the sibling s3_list_multipart_uploads, which appears to overlap.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no mention of when not to use it, and no reference to the obvious alternative s3_list_multipart_uploads. The only contextual hint is the default threshold, which is a parameter detail rather than usage guidance.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 14 tool updatesv0.1.0
    • First observeds3_get_bucket_config
    • First observeds3_get_object
    • First observeds3_get_object_tagging
    • First observeds3_head_object
    • First observeds3_largest_objects
    • First observeds3_list_buckets
    • First observeds3_list_multipart_uploads
    • First observeds3_list_object_versions
    • First observeds3_list_objects
    • First observeds3_list_parts
    • First observeds3_prefix_usage
    • First observeds3_presign_get
    • First observeds3_preview_object
    • First observeds3_unfinished_uploads

TDQS

C2.6/5.0

Scored across 14 tools

Disambiguation3/5

Most tools target distinct operations, but s3_unfinished_uploads and s3_list_multipart_uploads both surface unfinished multipart uploads, differing only in filtering/pagination, which invites misselection. The trio s3_get_object, s3_head_object, and s3_preview_object also overlap around reading object data, though their descriptions clarify the boundaries.

Naming Consistency4/5

All tools use a consistent s3_ prefix and lower snake_case, making the surface predictable. Most follow verb_noun (get_object, list_objects, head_object), but a few are noun phrases (largest_objects, prefix_usage, unfinished_uploads), a minor deviation from the dominant pattern.

Tool Count5/5

With 14 tools, the set is well within the sweet spot for an S3 inspection/diagnostics server. Each tool covers a distinct S3 capability (listing, metadata, config, tags, versions, multipart, analytics, presigning) without redundant filler.

Completeness3/5

The surface is entirely read/list/analysis oriented: there is no put_object, delete_object, copy, or abort_multipart_upload, so agents can detect problems (e.g. unfinished uploads, largest objects) but cannot remediate them. If read-only diagnostics is the intent this is reasonable, but it leaves notable lifecycle gaps for general S3 use.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    C
    quality
    A
    maintenance
    Beget S3 MCP server and Go CLI: browse, preview and restore files in a bucket. Read-only by default; write, delete and admin tools only behind switches, destructive calls confirmed by a person.
    10
    1
    MIT
  • A
    license
    C
    quality
    A
    maintenance
    Selectel S3 MCP server and Go CLI: browse, preview and restore files in a bucket. Read-only by default; write, delete and admin tools only behind switches, destructive calls confirmed by a person.
    13
    MIT