@atengk/mcp-server-s3
One-line summary: This MCP server gives an AI agent full lifecycle control over any S3-compatible object storage (RustFS, MinIO, AWS S3, Aliyun OSS, Cloudflare R2, Tencent COS) through 19 atomic tools with built-in safety guardrails.
Probe connectivity —
s3_pingreports endpoint, RTT, effective region, and masked credentialsManage buckets —
list_buckets,create_bucket,delete_bucket(with optional force),get_bucket_locationBrowse & search objects —
list_objects(delimiter-based virtual directory tree, cursor pagination),search_objects(keyword/regex),stat_object(size, Content-Type, ETag, metadata)Read content —
read_object_text(256KB truncation + binary interception) andread_object_range(HTTP Range byte reads for tailing large logs)Write & transfer files —
put_object_text,upload_file(auto multipart for >32MB),download_file(sandbox-constrained),get_presigned_url(timed GET/PUT links)Copy, move & tag —
copy_object(same/cross bucket),move_object(atomic rename),get_object_tags,set_object_tagsDelete safely —
delete_object,delete_objects_batch(≤1000),delete_objects_by_prefix(triple-fuse guard: no root prefix, explicit confirmation, batch cap)Safety guarantee — read-only mode physically hides all write/delete tools at handshake, local workspace sandbox blocks path traversal, reads are truncated to prevent context blowup
Provides S3-compatible object storage management for Cloudflare R2, enabling bucket and object operations, file transfer, presigned URLs, copy/move/delete, and tag management through the S3 API.
Provides S3-compatible object storage management for MinIO, including bucket lifecycle, object listing/search, text and range reads, local file upload/download, presigned URLs, copy/move/delete, batch deletion, and object tags.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@@atengk/mcp-server-s3list all buckets in my S3 account"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
@atengk/mcp-server-s3
基于标准 S3 协议 深度连接与管控兼容对象存储(RustFS、MinIO、AWS S3、阿里云 OSS、Cloudflare R2、腾讯云 COS 等)的生产级 Model Context Protocol (MCP) 服务。为大语言模型(LLM)与 AI 智能体(Claude Desktop、Cursor、Antigravity、Cline、Dify、Coze 等)提供安全、可控、高内聚的对象存储全生命周期管理与数据流动基础设施。
🌟 核心特性 (Features)
🌐 多云协议统一驱动:严格基于工业级标准 S3 API 构建,无缝抹平私有化 RustFS、MinIO 与各大公有云差异,支持 Path-style 路径寻址与 Virtual-hosted 虚拟主机寻址自动切换(ADR-0001)。
⚡ 双模通信与安全接入:
🛡️ 三位一体安全防灾铁律(ADR-0002):
前置只读门禁 (
Read-Only Guard):开启MCP_S3_READ_ONLY=true时,在 MCP 握手层物理隐藏所有破坏性写/删类工具;工作区沙箱隔离 (
Sandbox Guard):基于MCP_S3_ALLOWED_LOCAL_DIR严格限定本地文件读写边界,彻底阻断路径遍历(../)逃逸与宿主机敏感凭证泄露;前缀递归删除三重熔断 (
Prefix Deletion Guard):强制拦截根前缀、强制要求显式布尔确认参数、单批次严格限制 1000 上限,防止误删整个存储桶;文本直读智能截断 (
Content Truncator):限制 256KB 文本直读上限,自动截断超量日志并注入警示,彻底杜绝上下文风暴。
🚀 大对象分段上传与纯文本深度探测(ADR-0006):
自适应 Multipart Upload:大文件(>32MB)自动启用 8MB 分片并发分段上传,彻底突破 5GB 单流上限并增强网络波动抗重试韧性;
仿 Git Null Byte 探测:对未显式打标 MIME 的对象检测前 512 字节空字节,宽容放行纯文本与日志,杜绝
application/octet-stream误伤阻断。
🛠️ 19 项生产级工具矩阵:覆盖自省探针、存储桶生命周期、虚拟目录树浏览与游标分页、模式搜索、文本与 Range 范围读取、本地磁盘双向流式互传、时效预签名直链、对象原子移动与标签治理。
🔍 毫秒级自省探针 (
s3_ping):发送极轻量校验请求,以毫秒级时延返回当前生效 Endpoint、脱敏 AccessKey、Region、网络往返 RTT 及连通状态(ADR-0005)。🐳 生产级轻量容器化:提供 Alpine 多阶段构建
Dockerfile(非 root 用户运行)与开箱即用的docker-compose.yaml(一键拉起 MinIO + S3 MCP 集群)。📦 免安装一键即用:发布至 npm 官方注册表
@atengk/mcp-server-s3,由 GitHub Actions 原生 OIDC 签发不可篡改的 SLSA Provenance 防伪溯源凭证(ADR-0004)。
Related MCP server: S3 MCP Server
🚀 快速上手 (Quick Start)
方式一:终端命令行即时启动 (CLI Flags)
@atengk/mcp-server-s3 原生支持双模参数输入体系,命令行参数(CLI Flags)优先级高于环境变量,非常适合临时排障与终端交互:
# 连接自建 RustFS / MinIO (Path-Style 模式)
npx -y @atengk/mcp-server-s3 --endpoint http://s3.example.com:9000 --access-key-id your_access_key --secret-access-key your_secret_key --path-style
# 以安全只读模式启动,限定默认存储桶
npx -y @atengk/mcp-server-s3 --region us-east-1 --bucket prod-public-data --read-only
# 启动 HTTP SSE 远程守护服务(监听 8000 端口,开启密钥鉴权)
npx -y @atengk/mcp-server-s3 --transport sse --port 8000 --api-key secret-token-888方式二:桌面端 AI 客户端配置 (MCP Client Config)
在您的 MCP 客户端配置文件(如 Claude Desktop 的 claude_desktop_config.json 或 Cursor 的 MCP 设置)中直接声明服务项:
{
"mcpServers": {
"my-s3-storage": {
"command": "npx",
"args": ["-y", "@atengk/mcp-server-s3"],
"env": {
"MCP_S3_ENDPOINT": "http://s3.example.com:9000",
"MCP_S3_REGION": "us-east-1",
"MCP_S3_ACCESS_KEY_ID": "your_access_key",
"MCP_S3_SECRET_ACCESS_KEY": "your_secret_key",
"MCP_S3_FORCE_PATH_STYLE": "true",
"MCP_S3_DEFAULT_BUCKET": "my-bucket"
}
}
}
}💡 多实例与多云并存体系 (Multi-Instance Configuration)
📌 核心运行机制:环境变量配置如何天然支持多实例?
在 MCP 架构规范中,AI 客户端(Claude Desktop、Cursor 等)为配置列表中的每一个服务项启动一个独立的操作系统子进程 (Child Process)。 每个服务进程各自持有完全隔离的
env环境变量字典,进程间完全物理隔离,绝不会产生交叉污染或覆盖。 因此,您可以在同一个 AI 客户端中同时接入多个不同云服务商、不同权限环境的对象存储服务!
完整多实例并存配置范例
在同一个客户端配置文件中,同时接入 RustFS (私有云)、MinIO (本地开发) 以及 AWS S3 (生产只读):
{
"mcpServers": {
"s3-rustfs": {
"command": "npx",
"args": ["-y", "@atengk/mcp-server-s3"],
"env": {
"MCP_S3_ENDPOINT": "http://rustfs.example.com:9000",
"MCP_S3_REGION": "us-east-1",
"MCP_S3_ACCESS_KEY_ID": "rustfsadmin",
"MCP_S3_SECRET_ACCESS_KEY": "your_secret_key",
"MCP_S3_FORCE_PATH_STYLE": "true"
}
},
"s3-local-minio": {
"command": "npx",
"args": ["-y", "@atengk/mcp-server-s3"],
"env": {
"MCP_S3_ENDPOINT": "http://127.0.0.1:9000",
"MCP_S3_REGION": "us-east-1",
"MCP_S3_ACCESS_KEY_ID": "minioadmin",
"MCP_S3_SECRET_ACCESS_KEY": "minioadmin",
"MCP_S3_FORCE_PATH_STYLE": "true",
"MCP_S3_DEFAULT_BUCKET": "dev-bucket"
}
},
"s3-prod-aws": {
"command": "npx",
"args": ["-y", "@atengk/mcp-server-s3"],
"env": {
"MCP_S3_REGION": "us-west-2",
"MCP_S3_ACCESS_KEY_ID": "AKIAIOSFODNN7EXAMPLE",
"MCP_S3_SECRET_ACCESS_KEY": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"MCP_S3_READ_ONLY": "true",
"MCP_S3_DEFAULT_BUCKET": "company-prod-data"
}
}
}
}调度体验:在对话中,AI 能够跨实例自如调度:
调用
s3-rustfs:s3_ping检视 RustFS 节点时延与状态;调用
s3-local-minio:upload_file将本地构建产物传输至开发桶;调用
s3-prod-aws:read_object_text检索生产线上日志(写与删操作被物理门禁彻底阻断,保障数据安全)。
⚙️ 主流对象存储场景配置参考 (Scenarios)
{
"mcpServers": {
"rustfs": {
"command": "npx",
"args": ["-y", "@atengk/mcp-server-s3"],
"env": {
"MCP_S3_ENDPOINT": "http://rustfs.example.com:9000",
"MCP_S3_REGION": "us-east-1",
"MCP_S3_ACCESS_KEY_ID": "rustfsadmin",
"MCP_S3_SECRET_ACCESS_KEY": "your_secret_key",
"MCP_S3_FORCE_PATH_STYLE": "true"
}
}
}
}{
"mcpServers": {
"minio": {
"command": "npx",
"args": ["-y", "@atengk/mcp-server-s3"],
"env": {
"MCP_S3_ENDPOINT": "http://127.0.0.1:9000",
"MCP_S3_REGION": "us-east-1",
"MCP_S3_ACCESS_KEY_ID": "minioadmin",
"MCP_S3_SECRET_ACCESS_KEY": "minioadmin",
"MCP_S3_FORCE_PATH_STYLE": "true"
}
}
}
}{
"mcpServers": {
"aws-s3": {
"command": "npx",
"args": ["-y", "@atengk/mcp-server-s3"],
"env": {
"MCP_S3_REGION": "us-west-2",
"MCP_S3_ACCESS_KEY_ID": "AKIAIOSFODNN7EXAMPLE",
"MCP_S3_SECRET_ACCESS_KEY": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
}
}
}
}{
"mcpServers": {
"aliyun-oss": {
"command": "npx",
"args": ["-y", "@atengk/mcp-server-s3"],
"env": {
"MCP_S3_ENDPOINT": "https://oss-cn-hangzhou.aliyuncs.com",
"MCP_S3_REGION": "oss-cn-hangzhou",
"MCP_S3_ACCESS_KEY_ID": "LTAI5txxxxxxxxxxxx",
"MCP_S3_SECRET_ACCESS_KEY": "your_aliyun_secret",
"MCP_S3_FORCE_PATH_STYLE": "false"
}
}
}
}{
"mcpServers": {
"cloudflare-r2": {
"command": "npx",
"args": ["-y", "@atengk/mcp-server-s3"],
"env": {
"MCP_S3_ENDPOINT": "https://<account_id>.r2.cloudflarestorage.com",
"MCP_S3_REGION": "auto",
"MCP_S3_ACCESS_KEY_ID": "your_r2_access_key_id",
"MCP_S3_SECRET_ACCESS_KEY": "your_r2_secret_access_key"
}
}
}
}{
"mcpServers": {
"tencent-cos": {
"command": "npx",
"args": ["-y", "@atengk/mcp-server-s3"],
"env": {
"MCP_S3_ENDPOINT": "https://cos.ap-guangzhou.myqcloud.com",
"MCP_S3_REGION": "ap-guangzhou",
"MCP_S3_ACCESS_KEY_ID": "AKIDxxxxxxxxxxxxxxxx",
"MCP_S3_SECRET_ACCESS_KEY": "your_cos_secret_key",
"MCP_S3_FORCE_PATH_STYLE": "false"
}
}
}
}🤖 典型 AI 智能体对话调度场景 (Prompt Showcase)
接入 @atengk/mcp-server-s3 后,您可以直接使用自然语言驱动 AI 智能体完成高阶存储运维工作:
# 场景 1:连通性诊断与节点状态检视
> "帮我测试一下对象存储的连通性,看看当前的延迟、生效地域和绑定的默认存储桶。"
→ AI 自动触发: s3_ping
# 场景 2:虚拟目录树分层探索与检索
> "列出 backup 桶下 logs/2026/03/ 目录里的所有文件,找出大小超过 10MB 的前 5 个对象。"
→ AI 自动触发: list_objects(prefix="logs/2026/03/", delimiter="/")
# 场景 3:线上大日志精准定位排障
> "app.log 文件有 500MB,帮我直接读取最后 4KB 的内容分析报错原因,不要下载整个文件。"
→ AI 自动触发: stat_object(key="app.log") 获取总大小,随后调用 read_object_range 提取末尾字节
# 场景 4:双向安全文件互传与时效分享
> "将本地 ./dist/report.pdf 上传到 public 桶,并生成一个 2 小时有效期的下载直链发给我。"
→ AI 自动触发: upload_file(local_path="./dist/report.pdf") 紧接着 get_presigned_url(expires_in=7200)
# 场景 5:归档迁移与标签治理
> "把 temp 桶中 2025 年以前的所有对象归档,打上 retention=archive 标签并移动到 archive/ 目录下。"
→ AI 自动调度: list_objects + set_object_tags + move_object🛠️ 19 项核心工具矩阵清单 (Tools Matrix)
服务向 AI 暴露了严格遵循最小权限与防御性架构的 19 项原子工具:
1. 探针自省与桶生命周期管理
工具名称 | 参数契约概览 | 核心职责与安全规范 |
| 无入参 | 毫秒级自检端点连通性、网络 RTT、生效 Region 与脱敏鉴权身份 |
| 无入参 | 列出所有存储桶名称及创建时间列表 |
|
| 创建新存储桶(支持指定部署物理区域) |
|
| 删除存储桶(只读门禁下隐藏,支持 force 强制清空后删桶) |
|
| 查询存储桶的物理实际部署地域 |
2. 对象检索与内容分块直读
工具名称 | 参数契约概览 | 核心职责与安全规范 |
|
| 模拟分层虚拟目录树(Delimiter 默认为 |
|
| 在前缀路径树中执行关键字匹配与正则搜索 |
|
| 提取对象大小、Content-Type、最后修改时间、ETag 及元数据 |
|
| 纯文本直读,256KB 阈值截断保护;支持仿 Git Null Byte 深度探测 |
|
| HTTP Range 字节范围读取(适用于大日志尾部排障与文件头检视) |
3. 本地磁盘双向流式互传与时效直链
工具名称 | 参数契约概览 | 核心职责与安全规范 |
|
| 文本/JSON 内容直传与对象覆盖 |
|
| 本地磁盘文件流式上传,受沙箱保护;>32MB 自动启用并发分段上传 |
|
| S3 对象流式保存为本地文件,受工作区沙箱保护 |
|
| 为大文件或多媒体生成有时效的预签名 HTTP 直链(GET/PUT) |
4. 批处理治理与标签管控
工具名称 | 参数契约概览 | 核心职责与安全规范 |
|
| 同桶与跨桶对象复制 |
|
| 原子化移动与重命名(复制成功后安全删除源对象) |
|
| 删除指定的单个对象 |
|
| 批量删除指定的多个对象键列表(单批上限 1000) |
|
| 递归清理虚拟子目录,内置三重防灾熔断守卫 |
|
| 查询对象关联的 Key-Value 标签字典 |
|
| 写入或全量覆盖对象业务标签 |
📋 12-Factor 规范环境变量矩阵 (Configuration)
配置优先级:命令行参数 (CLI Flags) > 规范主环境变量 (MCP_S3_*) > AWS 兼容环境变量 (AWS_*) > 内部默认值。
规范主环境变量 ( | 兼容备用变量 ( | 默认值 | 作用与规范说明 |
|
| 无 | S3 兼容接入点(如 |
|
|
| 目标物理地域(MinIO / RustFS 通常为 |
|
| 无 | S3 访问密钥 ID |
|
| 无 | S3 访问密钥 Secret |
|
| 无 | STS 临时会话令牌(可选) |
|
|
| 是否强制使用路径寻址(MinIO / RustFS 设为 |
| 无 | 无 | 默认绑定存储桶(配置后各 Tool 的 |
| 无 |
| 只读门禁模式:为 |
| 无 |
| 本地沙箱基准目录:严格阻断沙箱范围外的文件读写操作 |
| 无 |
| 文本读取最大安全阈值:超出部分强制截断防爆 |
| 无 |
| 预签名直链默认生命周期(秒) |
| 无 |
| 通信传输模式: |
| 无 |
|
|
| 无 |
|
|
|
| 无 | HTTP SSE 鉴权 Token:配置后强制 Bearer Token / URL 校验 |
⚡ 命令行参数完整速查表 (CLI Flags)
命令行选项 | 对应规范环境变量 | 说明 |
|
| S3 API 兼容接入点 |
|
| 目标物理地域 (默认: |
|
| S3 Access Key ID |
|
| S3 Secret Access Key |
|
| STS 临时会话令牌 (可选) |
|
| 强制使用路径寻址 (MinIO / RustFS 必选) |
|
| 默认绑定的存储桶名称 |
|
| 开启只读门禁模式 |
|
| 本地文件沙箱基准目录 (默认: |
|
| 通信传输模式 ( |
|
| SSE 监听主机地址 (默认: |
|
| SSE 监听端口号 (默认: |
|
| HTTP SSE 接入鉴权 Bearer Token |
| — | 打印详细中文帮助文档 |
| — | 打印当前版本号 |
🐳 云原生容器化部署与 HTTP SSE 鉴权 (Docker & SSE)
对于希望在私有网络或云上集中托管 S3 MCP 服务的场景,可直接使用容器化方案常驻运行:
1. 使用 Docker Compose 一键启动微服务集群
docker-compose.yaml 默认直接拉取 GitHub Packages (GHCR) 发布的预编译多架构镜像(ghcr.io/atengk/mcp-server-s3:latest),无需本地安装 Node/pnpm 或进行耗时编译,甚至仅需单独下载单份 docker-compose.yaml 即可秒级拉起完整的 MinIO + S3 MCP 集群:
# 后台拉起微服务集群 (MinIO + 预编译 S3 MCP)
docker compose up -d
# 检查服务就绪探针 (健康检查公开免鉴权)
curl http://localhost:8000/health💡 进阶提示:如需锁定特定版本,可运行
MCP_S3_IMAGE_TAG=v1.0.1 docker compose up -d;如需基于本地源码二次开发,仅需按docker-compose.yaml中提示解除build注释即可。
2. 远程 HTTP SSE 鉴权接入规范
当设置了 MCP_S3_API_KEY=your-secret-token 时,服务将自动启用 CORS 与双栈校验机制:
# 方式 1: 通过标准 Authorization Bearer 请求头连接 SSE (推荐桌面/网关客户端)
curl -N -H "Authorization: Bearer your-secret-token" http://localhost:8000/sse
# 方式 2: 通过 URL 查询参数连接 SSE (适配原生浏览器 EventSource API)
curl -N "http://localhost:8000/sse?token=your-secret-token"
# 发送 JSON-RPC 消息 (带 Bearer Token)
curl -X POST -H "Authorization: Bearer your-secret-token" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"ping","id":1}' \
"http://localhost:8000/message?sessionId=<SESSION_ID>"🛡️ 三位一体安全防灾体系 (Security Guardrails)
AI Agent 发起请求
│
┌─────────────────┴─────────────────┐
│ │
[写/删高危操作] [文件读写操作]
│ │
▼ ▼
【Read-Only Guard 检查】 【Sandbox Guard 校验】
(若开启只读则协议层隐藏/阻断) (判断是否处于受管本地工作区内)
│ │
▼ ▼
【Prefix Deletion Guard 检查】 【Content Truncator 过滤】
• 严禁根前缀 ("" 或 "/") • 限制最大单次读取 256KB
• 强制显式 confirm 参数 • 超出部分截断并注入警示
• 单批次强制截断上限 1000 • 二进制 Null Byte 智能拦截❓ 常见问题排查 (FAQ)
Q1: 连接 MinIO 或 RustFS 时报 PermanentRedirect 或 BucketRegionError?
解答:私有化对象存储(MinIO、RustFS)默认采用 Path-Style 路径寻址(格式如 http://endpoint/bucket/key)。若未显式启用,SDK 将尝试向虚拟主机域名 http://bucket.endpoint/ 发起 DNS 解析并导致失败。请确保设置:
环境变量:
MCP_S3_FORCE_PATH_STYLE=true或命令行选项:
--path-style
Q2: 提示 Forbidden: Path traversal or access outside sandbox is prohibited?
解答:服务内置严格的工作区沙箱保护(ADR-0002),禁止访问 MCP_S3_ALLOWED_LOCAL_DIR 范围之外的绝对路径或带有 ../ 的路径。请将文件操作限制在沙箱基准目录内,或通过修改 --allowed-local-dir /path/to/workdir 扩大授权范围。
Q3: 为什么开启 MCP_S3_READ_ONLY=true 后 AI 看不到上传或删除工具?
解答:这是我们深思熟虑的安全设计。只读门禁不是在运行时抛出拒绝异常,而是在 MCP 握手初期的 tools/list 协议层物理移除了所有破坏性写/删类工具定义。这样既能 100% 杜绝 AI 误执行写删行为,又能有效缩减提示词体积,防止上下文污染。
📊 架构设计与工程分层 (Architecture)
src/
├── config/ # 12-Factor App 强类型环境配置与 CLI 命令行解析 (env.ts, cli.ts)
├── connection/ # S3Client 连接单例工厂与凭据链管理 (s3-client-factory.ts)
├── security/ # 只读门禁、沙箱验证、递归删除三重防御、文本截断器 (readonly-guard.ts, sandbox-guard.ts, prefix-guard.ts, content-truncator.ts)
├── services/ # 领域服务分治(Bucket、Object、Transfer、Presign、Tagging、Probe 逻辑)
├── server/ # Stdio 与 HTTP SSE 双模服务实现与安全门禁 (sse-server.ts)
├── types/ # 领域接口契约与 Zod 运行时校验 Schema
└── index.ts # 装配入口、CLI 调度与进程信号优雅退出管理📝 统一领域模型与架构决策 (Domain Model & ADRs)
统一领域语言与术语表:详见 CONTEXT.md
核心架构决策记录 (ADRs):
🤝 贡献与开源许可 (License)
本项目采用 MIT License 开源协议。
Copyright (c) 2026 Ateng.
Available Tools
21 toolscopy_objectC
同桶或跨桶对象复制
| Name | Required | Description | Default |
|---|---|---|---|
| source_key | Yes | ||
| target_key | Yes | ||
| source_bucket | No | ||
| target_bucket | No |
TDQS
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 largely fails it: it never says whether an existing target_key is overwritten, whether object metadata/tags are preserved, what permissions or buckets are required, or whether large objects are streamed/copied server-side. Only the same-vs-cross-bucket capability is hinted at, which is really schema territory.
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?
One short front-loaded phrase with zero padding, which is structurally clean. However the brevity is under-specification rather than efficiency: for a 4-parameter mutation tool, this size leaves essential information out.
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 write operation with no annotations, no output schema, and 4 parameters at 0% schema coverage, the description is not complete enough to call the tool confidently. Return shape is excusable given no output schema, but overwrite behavior, permissions, and parameter defaults are all missing.
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 and does not: it never explains that source_key/target_key are object keys, that source_bucket/target_bucket are optional and default to the current bucket, or what happens when only one bucket is supplied. The single phrase '同桶或跨桶' gestures at the optional bucket parameters but adds no usable semantics.
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?
States a specific verb+resource ('对象复制' / copy object) and adds a scope qualifier (same-bucket or cross-bucket), so an agent can tell what it does at a glance. It does not differentiate itself from the sibling move_object, which is the main tool an agent could confuse it with, so it stops short of 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?
There is no when-to-use guidance and no mention of alternatives, even though move_object, upload_file, and download_file all overlap in intent. The agent must infer that copy is non-destructive and that move_object should be preferred when the source should be removed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_bucketC
创建新存储桶(支持指定部署区域)
| Name | Required | Description | Default |
|---|---|---|---|
| bucket | Yes | ||
| region | No |
TDQS
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 mention bucket-name global uniqueness, required permissions, whether creation is reversible, or any limits on bucket count — significant omissions for a mutation 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?
A single short sentence, front-loaded with the verb and resource, with the optional region capability in parentheses. It is efficient, though the terseness borders on under-specification.
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 write operation with no annotations, no output schema, and 0% parameter documentation, the description is too thin. Critical details (name collision behavior, permission requirements, region default, return value) are absent.
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 loosely maps to both parameters, clarifying that 'region' means the deployment region, but adds no naming rules, format, or default behavior for either parameter.
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?
States a specific verb and resource ('create a new storage bucket') plus an optional capability (specifying the region). An agent can distinguish it from siblings like delete_bucket, list_buckets, or get_bucket_location, though no sibling is named explicitly.
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 offers no context on when to create a bucket versus when to use other tools, nor any prerequisites (credentials, permissions, namespace constraints). The only guidance is the parenthetical about region support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_bucketB
删除存储桶(支持 force 参数强制清理桶内对象后删除)
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | ||
| bucket | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral burden. It usefully discloses the destructive side effect that force purges contained objects before deletion, but says nothing about irreversibility, required permissions, or failure behavior on a non-empty bucket without force.
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?
A single front-loaded sentence with the destructive force behavior given inline. No waste, though the terse parenthetical could be expanded marginally for the missing details.
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 two-parameter tool with no annotations and no output schema, the description covers purpose and the force side effect but omits permission requirements and error/edge-case behavior, leaving gaps an agent would want before invoking a delete.
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 add meaning. It explains the force parameter's semantics (clear objects then delete), but the required bucket parameter is left entirely to the schema despite bare string typing.
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?
States a specific verb+resource (delete bucket) that an agent can distinguish from object-level siblings like delete_object. It does not, however, explicitly name an alternative or note that it operates on the whole bucket rather than its contents.
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 parenthetical implies a use condition — force is needed to remove a non-empty bucket — which hints at when the option applies. There is no explicit when-to-use versus delete_objects_by_prefix or other cleanup alternatives, so guidance remains only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_objectC
删除指定的单个对象
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ||
| bucket | No |
TDQS
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. Deletion is destructive and irreversible, but the description says nothing about permanence, permission requirements, error behavior for missing objects, or whether the bucket is auto-derived. The single word 删除 implies a write, but no operational traits are disclosed.
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?
A single short phrase, efficient and front-loaded, but so terse that it under-specifies rather than being a model of concision. It doesn't waste words, but it also doesn't earn its place with useful content.
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?
A destructive mutation tool with no annotations, no output schema, and zero parameter documentation. The description should carry the behavioral and parameter burden, but it only restates the name. An agent lacks enough information to call it confidently.
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% and both parameters (key, bucket) are undocumented in the schema. The description mentions neither parameter by name or meaning, leaving the agent to infer that key identifies the object and bucket identifies the target bucket. With 2 params at 0% coverage, the description should compensate but does not.
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?
States a specific verb (删除, delete) and resource (对象, object), with the scope qualifier 单个 (single). This distinguishes it from delete_objects_batch and delete_objects_by_prefix. However it doesn't name the bucket/key identity concept that differentiates it from other single-object 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?
No when-to-use guidance. Given three sibling delete tools (singleton, batch, by-prefix), the description gives no explicit guidance for choosing between them beyond the word 单个, which implies but does not state the alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_objects_batchC
批量删除指定的多个对象键列表(单批上限 1000 个对象)
| Name | Required | Description | Default |
|---|---|---|---|
| keys | Yes | ||
| bucket | No |
TDQS
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 for a destructive operation. It discloses only the 1000-object batch cap and says nothing about permissions, reversibility, partial-failure behavior, or how missing/nonexistent keys are handled.
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?
A single short sentence, front-loaded with the operation and followed by the batch limit. Nothing is wasted, though the 1000 cap duplicates the schema's maxItems constraint.
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 batch tool with no annotations and no output schema, the description is thin: it omits error semantics, partial-success handling, bucket scoping, and any authorization context an agent would need before invoking it.
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% for two parameters. The description confirms that 'keys' is a list of object keys and restates the 1000 maxItems already enforced by the schema, but the 'bucket' parameter is never mentioned and no format or syntax detail is added.
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 states a specific verb+resource: batch-deleting a supplied list of object keys. This is distinguishable from the single-key delete_object and the delete_objects_by_prefix sibling, since it operates on an explicit key list, though no sibling is named.
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?
There is no explicit guidance on when to prefer this over delete_object (one key), delete_objects_by_prefix (prefix sweep), or repeated single deletes. The use case is only weakly implied by '指定的多个对象键列表'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_objects_by_prefixC
递归清理虚拟子目录树,内置三重防灾熔断守卫
| Name | Required | Description | Default |
|---|---|---|---|
| bucket | No | ||
| prefix | Yes | ||
| confirm_recursive_delete | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it only vaguely claims 'triple disaster-prevention circuit breaker guards' without naming thresholds, what is protected, or whether the guards can still allow mass deletion. It never says the operation is irreversible, what permissions are needed, or whether partially-matching trees are affected.
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?
It is a single short sentence, but brevity here comes from under-specification rather than economy: for a destructive recursive delete, the one clause about 'circuit breaker guards' is too abstract to earn its place, and nothing actionable is front-loaded.
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?
A destructive, recursive bulk-delete tool with no annotations, no output schema, and zero parameter documentation needs far more than one vague sentence. Missing are the confirm flag's meaning, irreversibility, scope of deletion, and failure/partial-success behavior.
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% across 3 parameters, and the description mentions none of them. It does not define prefix scoping semantics, whether bucket is optional/defaulted, or what setting confirm_recursive_delete=true actually authorizes, so it fails to compensate for the schema gap.
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 conveys a recursive bulk cleanup of a virtual directory tree, which implies deletion by prefix, so the verb+resource is inferable. However, it never states the resource is S3 objects, and it does nothing to distinguish this from siblings like delete_object or delete_objects_batch, leaving the agent to guess which delete variant applies.
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?
There is no guidance on when to use this tool versus delete_object (single object) or delete_objects_batch (explicit key list), nor on when a recursive prefix delete is appropriate. The required confirm_recursive_delete flag's role is not explained either, so the agent has no routing rationale.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
download_fileC
S3 对象流式保存为本地文件(受本地工作区沙箱保护)
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ||
| bucket | No | ||
| local_path | 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. The sandbox note is genuinely useful context, but it omits whether the file is overwritten, whether directories are created, permission/auth requirements, and streaming/size limits — significant gaps for a tool that writes to disk.
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?
A single front-loaded sentence with no filler. It is appropriately terse, though the brevity is partly under-specification rather than pure economy.
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?
With no annotations, no output schema, and 0% parameter coverage, the description should do far more work. It establishes the action and the sandbox constraint but leaves behavior, parameters, and result handling undocumented.
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% and the description explains none of the three parameters. It does not clarify the relationship between 'key' and the optional 'bucket', or what 'local_path' is relative to (presumably the sandbox root), leaving the agent to guess.
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 gives a clear verb+resource: streaming an S3 object into a local file, with the sandbox qualifier adding scope. It is distinguishable from siblings like upload_file and read_object_text, though it never names them explicitly.
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?
There is no guidance on when to choose this over read_object_text, read_object_range, or get_presigned_url, nor any stated prerequisites. The agent must infer the use case from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_bucket_locationC
查询存储桶的物理实际部署地域
| Name | Required | Description | Default |
|---|---|---|---|
| bucket | 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 behavioral burden. It reveals only that a region is returned; it says nothing about required permissions, behavior for non-existent buckets, and only weakly implies the return shape. That is a thin disclosure for a tool with zero structured safety metadata.
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?
A single short sentence with no filler and the key resource front-loaded. It is appropriately sized, though its brevity borders on under-specification rather than efficient conciseness.
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?
With no annotations, no output schema, and undocumented parameters, the description should do more: it does not describe the return representation (e.g., a region code string), error conditions, or any usage constraints. For a tool whose structured metadata is entirely absent, this leaves notable 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 single 'bucket' parameter has 0% schema description coverage, so the schema supplies no meaning at all. The description implies the parameter identifies the bucket to query but does not clarify the expected identifier format (name vs. ARN vs. path), leaving a real ambiguity unresolved.
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?
States a specific verb and resource ('查询存储桶...地域' – query a bucket's physical deployment region), which is clearly distinguishable from siblings like list_buckets, create_bucket or stat_object. It is clear but does not explicitly contrast itself with any sibling.
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?
There is no guidance on when to use this tool versus alternatives (e.g., stat_object or list_buckets, which might also expose location-related metadata), nor any stated prerequisites or preconditions. The agent must infer the usage context entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_object_tagsC
查询对象关联的 Key-Value 标签字典
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ||
| bucket | No |
TDQS
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 implies a read operation and that a tag dictionary is returned, but says nothing about permissions, behavior when an object has no tags, or errors for a missing object/bucket.
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?
A single short phrase, front-loaded with the verb and resource, with no filler. It is under-specified rather than bloated, so it stays concise without wasting words.
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 2-parameter tool with 0% schema coverage, no annotations, and no output schema, the description should explain the parameters and any read behavior. It omits both, so an agent lacks the minimum needed to invoke it confidently.
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% and neither parameter is documented in the schema. The description mentions "对象" (object), which loosely hints that "key" is the object key, but it never clarifies the required "key" versus the optional "bucket" scope, leaving the agent to guess.
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 Chinese phrase "查询对象关联的 Key-Value 标签字典" gives a specific verb (查询/query) and resource (对象标签/object tags), so an agent understands it reads tag metadata for an object. It does not, however, differentiate itself from the sibling set_object_tags or state the inverse relationship between the two.
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 offers no when-to-use guidance, no prerequisites, and no mention of set_object_tags as the write counterpart. The agent must infer usage 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.
get_presigned_urlB
生成带有时效的预签名 HTTP(S) 直链(支持 GET 下载与 PUT 上传)
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ||
| bucket | No | ||
| method | No | ||
| expires_in | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that links are time-limited and support GET/PUT, but omits key behavioral details: required permissions, whether the object must exist, default method/expiry behavior, and whether generating a URL has 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?
A single, front-loaded sentence with no wasted words. It efficiently communicates the core action, time limitation, and supported methods.
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 tool with four undocumented parameters, no annotations, and no output schema, a one-line description is insufficient. It lacks usage guidance, parameter semantics, and behavioral details needed to call the tool correctly.
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% across four parameters. The description conceptually covers method (GET/PUT) and expiry ('时效'), but says nothing about the required key, the optional bucket, expiry units/defaults/limits, or how those parameters interact.
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 states a specific verb and resource: generating a time-limited presigned HTTP(S) direct link, with supported methods GET/PUT. It is distinguishable from transfer siblings like download_file and upload_file, though it does not explicitly name or contrast 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?
Usage is implied: use this when you need a time-limited direct link for GET download or PUT upload. However, it provides no explicit when-to-use guidance, no exclusions, and does not point to alternatives such as download_file or upload_file.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_bucketsB
列出所有存储桶名称及创建时间列表
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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 implies a read operation and discloses the returned fields, but says nothing about permissions, whether results are paginated, or any limits on bucket count.
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?
A single front-loaded sentence that carries the verb, resource, and return fields with no filler. It is appropriately sized for a zero-parameter listing 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?
For a simple no-argument read tool with no output schema, the description usefully states what is returned (names plus creation times). The remaining gap is only behavioral context such as permissions or pagination, which is minor 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?
The tool takes zero parameters, so the baseline is 4. There is no parameter syntax to clarify and the schema is trivially complete.
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?
States a specific verb (列出/list) and resource (存储桶/buckets), and even specifies the returned fields (names and creation time). The resource 'bucket' inherently distinguishes it from the many object-level siblings (list_objects, search_objects), 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.
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 how it relates to siblings such as get_bucket_location or list_objects. The agent must infer context entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_objectsC
模拟分层虚拟目录树(Delimiter 默认为 /),支持游标分页
| Name | Required | Description | Default |
|---|---|---|---|
| bucket | No | ||
| prefix | No | ||
| max_keys | No | ||
| delimiter | No | ||
| continuation_token | No |
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 discloses that the delimiter defaults to '/' and that cursor pagination is supported, but omits critical behavioral details like read-only nature, permission requirements, return format, sorting, and the effect of max_keys.
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?
A single short sentence with no wasted words, and the delimiter default is front-loaded. It is appropriately sized for its content, though the content itself is sparse.
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 tool with 5 parameters, no annotations, no output schema, and 0% schema description coverage, the description is significantly incomplete. It does not explain key parameters like bucket and prefix, nor does it describe what the operation returns.
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% for all 5 parameters. The description only clarifies the delimiter default ('/') and implies continuation_token via 'cursor pagination', leaving bucket, prefix, and max_keys undocumented in both schema and description.
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 says it simulates a hierarchical virtual directory tree and supports cursor pagination, which hints at listing objects, but it never explicitly states the verb 'list' or the resource 'objects'. It relies on the tool name to convey the core action and does not distinguish itself from siblings like search_objects.
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?
There is no guidance on when to use this tool versus alternatives such as search_objects or list_buckets. No prerequisites, conditions, or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_objectC
原子化移动与重命名对象(复制成功后自动删除源对象)
| Name | Required | Description | Default |
|---|---|---|---|
| source_key | Yes | ||
| target_key | Yes | ||
| source_bucket | No | ||
| target_bucket | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does disclose two important traits: the operation is atomic and the source object is removed after a successful copy, which is real destructive-behavior context. However it says nothing about target overwrite behavior, cross-bucket implications, or failure/rollback semantics.
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?
A single tight sentence with the key semantic (atomic move plus automatic source deletion) front-loaded in parentheses. No waste, though it is arguably too terse for a 4-parameter mutation 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?
For a destructive, multi-parameter mutation tool with no annotations and no output schema, the description is under-specified: bucket parameters, overwrite behavior, and error semantics are absent. The core move semantics are covered, but not enough for an agent to call it confidently in edge cases.
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?
Four parameters with 0% schema description coverage, so the description must compensate and does not. It never explains source_key/target_key semantics for renaming or how source_bucket/target_bucket behave (defaults, cross-bucket moves), leaving half the parameters undocumented everywhere.
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?
States a precise verb pair plus resource: atomically moves and renames an object, and clarifies the difference from a plain copy by noting the source is deleted after a successful copy. This implicitly distinguishes it from copy_object without naming it, so it falls just short of 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?
There is no explicit when-to-use guidance and no mention of alternatives such as copy_object plus delete_object, nor when not to use this tool. The only implicit signal is the embedded 'delete source after copy' semantics.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
put_object_textC
文本直接写入或覆盖对象
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ||
| bucket | No | ||
| content | Yes | ||
| content_type | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full behavioral burden. It does disclose that the operation writes or overwrites an object, but it omits critical details like required permissions, whether the bucket must exist, how existing content is handled, and what the operation returns.
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 a single short phrase, which is concise but severely under-specified for a mutation tool with four parameters and no annotations. It lacks structure and sufficient content to earn its place as a useful description.
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 a write tool with four parameters, no annotations, and no output schema, the description is far too sparse. It does not cover parameter meanings, permissions, return behavior, or usage context, leaving the definition materially incomplete.
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 is solely responsible for clarifying the four parameters. It adds no meaning beyond the tool name, failing to explain key, bucket, content, or content_type, and thus leaves required parameters undocumented.
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 states a specific verb and resource: writing text directly to or overwriting an object. This clearly distinguishes it from read operations, but it does not explicitly name or contrast with close siblings like upload_file or read_object_text, so it falls short of full sibling 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?
No guidance is provided on when to use this tool versus alternatives such as upload_file or other write tools. There is no mention of conditions, prerequisites, or exclusions, 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.
read_object_rangeB
HTTP Range 字节范围读取(适用于大对象末尾排障与对象头检视)
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ||
| bucket | No | ||
| end_byte | Yes | ||
| start_byte | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full behavioral burden. It discloses the HTTP Range mechanism (implying a read-only, partial read) and intended use cases, but omits permissions, rate limits, error behavior, and return format 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?
A single sentence with no wasted words, front-loading the core action and following with a compact use-case clause. It is appropriately sized for a tool description, even if it omits details better handled elsewhere.
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?
With 4 parameters, 0% schema description coverage, no annotations, and no output schema, the description should explain parameter semantics and basic behavior. It only provides purpose and two use cases, leaving critical invocation details absent.
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%, and the description does not mention any parameter by name. 'Byte range' loosely implies start_byte and end_byte, but key and bucket are completely undocumented, so the description fails to compensate for the coverage gap.
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 states a specific verb and resource: 'HTTP Range byte range read'. It also adds two use cases (large object tail troubleshooting and object header inspection) that hint at when this differs from a full-object read, but it never names sibling tools like read_object_text or download_file.
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 parenthetical explicitly says the tool is suitable for large object tail troubleshooting and object header inspection, giving clear context for when to use it. It does not provide exclusions or name alternatives, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_object_textC
文本直读,受 256KB 阈值截断保护,二进制文件智能拦截引导
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ||
| bucket | No | ||
| encoding | No | ||
| max_bytes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does disclose meaningful traits – a 256KB truncation threshold and binary-file interception – but omits permission requirements, error behavior, and what happens when truncation triggers.
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?
A single compact clause that front-loads the core purpose and appends the two scoping traits. Efficient, though terse enough to feel under-specified rather than fully economical.
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 4-parameter read tool with no annotations, no output schema, and zero schema description coverage, the description leaves too much unspecified – notably how to target the object, encoding behavior, and the byte-limit parameter.
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?
All 4 parameters (key, bucket, encoding, max_bytes) have 0% schema description coverage, and the description adds no meaning for any of them. max_bytes plausibly relates to the 256KB threshold but is never linked to 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 states a specific verb and resource ('文本直读' – direct text read) and adds scope constraints (256KB truncation, binary interception). The purpose is clear, though it does not explicitly distinguish itself from the closest sibling read_object_range.
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?
Usage is only implied: the mention of binary-file interception suggests this is for text files, but there is no explicit when-to-use guidance or naming of alternatives such as read_object_range or download_file.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
s3_pingA
毫秒级自检端点连通性、网络 RTT、生效 Region 与脱敏鉴权身份
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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 that the auth identity returned is masked (脱敏) and that RTT/Region are surfaced, implying a read-only probe, but it never states that the call is non-destructive, side-effect free, or requires no permissions.
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?
A single dense sentence that front-loads the verb and lists the checked dimensions with no filler. It is appropriately sized for a trivial no-arg endpoint, though the terse list style leaves nothing explaining what the output looks like.
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 no-parameter, no-output-schema diagnostic tool, the description covers the meaningful surface: it tells the agent what the call probes and that identity is redacted. Only the safety/side-effect profile is left unstated.
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 tool takes zero parameters, so per the rubric the baseline is 4. There is no argument surface for the description to clarify further.
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 names a specific verb (自检/self-check) and enumerates exactly what is checked: endpoint connectivity, network RTT, effective Region, and masked auth identity. That is far more specific than the bare name s3_ping and clearly separates it from the object/bucket manipulation siblings, though it never explicitly says it is a diagnostic-only tool.
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?
Usage is only implied — '自检' suggests a health/diagnostic check, but there is no statement of when to call it, what problem it solves, or how it relates to the other S3 tools. No alternatives or exclusions are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_objectsC
在前缀路径树中执行关键字匹配与正则搜索
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| bucket | No | ||
| prefix | No | ||
| max_results | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden: it never declares the operation read-only, gives no pagination or result-limit behavior, and no indication of cost or scoping requirements. It also advertises two search modes but the schema exposes no mode selector, leaving the behavioral contract ambiguous.
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?
A single front-loaded sentence with no filler or redundancy. It is clean and readable, though arguably terse relative to the tool's four 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?
For a 4-parameter tool with no annotations, no output schema, and no parameter documentation, the description is far too thin. Nothing tells the agent how to scope the search, cap results, or interpret the response.
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% across 4 parameters, so the description must compensate and does not. It hints at keyword vs regex semantics for 'query' but does not say which applies or how it is selected, and never mentions bucket, prefix, or max_results at all.
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 names a verb (matching/search) and a scope ('prefix path tree'), and it specifies two modes (keyword matching and regex). However, 'prefix path tree' is not a standard term and it never clarifies whether object keys, paths, or contents are searched, nor does it distinguish itself from siblings like list_objects or read_object_text.
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?
There is no statement of when to use this tool instead of list_objects, read_object_text, or the other search-adjacent siblings. The agent is left to infer that this is a filtered lookup rather than a plain listing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_object_tagsC
写入或全量覆盖对象业务标签
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ||
| tags | Yes | ||
| bucket | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose the important behavioral trait that this is a full replace rather than a merge (全量覆盖), which meaningfully warns of destructive behavior on existing tags. However, nothing is said about permissions, failure modes, or what happens to unspecified tags beyond the overwrite claim.
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?
A single compact sentence with the critical 'full overwrite' semantics front-loaded and no filler. It is not under-specified for its length, though that length is itself the limitation.
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 mutation tool with no annotations, no output schema, and 0% schema description coverage on three parameters (one nested), a single clause is far too thin. An agent lacks the destructive-write context and parameter details needed to invoke it safely.
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% and there are three parameters, including a nested key-value 'tags' object and an optional 'bucket'. The description only vaguely gestures at 'business tags' and adds no meaning for 'key', 'bucket', value typing, or the nested structure, so it fails to compensate for the coverage gap.
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 verb+resource are specific: 写入/全量覆盖 (write / full overwrite) applied to 对象业务标签 (object business tags). It is clearly distinguishable from the read-side sibling get_object_tags, though it never names that sibling explicitly.
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?
There is no indication of when to use this versus get_object_tags, when the overwrite semantics are appropriate, or what prerequisites (bucket/key validity, permissions) apply. Usage must be entirely inferred from the name and verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stat_objectC
提取对象大小、Content-Type、最后修改时间、ETag 及元数据
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ||
| bucket | No |
TDQS
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 implies a read-only extraction and lists returned attributes, but omits required permissions, behavior for a missing key, bucket defaults, and error or rate-limit characteristics.
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?
A single front-loaded sentence with no filler; each clause names a returned metadata field. Appropriately sized for a simple stat operation.
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?
With no annotations and no output schema, the description partially compensates by listing returned fields. However, input parameters are entirely unaddressed and there is no output structure or error behavior, leaving the definition incomplete for correct invocation.
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%, with two parameters, key and bucket, completely undocumented in both schema and description. The description adds no input semantics, so an agent cannot tell that key is required or that bucket is optional.
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?
States a specific verb, 提取, and the resource attributes returned: object size, Content-Type, last modified time, ETag, and metadata. Clear, but it does not differentiate this stat operation from siblings such as get_object_tags or read_object_text.
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?
Implied usage is to retrieve object metadata, but there is no explicit when-to-use guidance, no exclusions, and no named alternative for cases where object content or tags are needed instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_fileC
本地文件流式上传至 S3(受本地工作区沙箱严格约束保护)
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ||
| bucket | No | ||
| local_path | Yes | ||
| content_type | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does disclose two non-obvious traits: the transfer is streamed, and the local path is strictly confined to the workspace sandbox. It omits whether existing keys are overwritten, failure/partial-upload semantics, size limits, and required credentials, so the disclosure is only partial.
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?
A single compact sentence that front-loads the action and scope. Nothing is wasted, though the parenthetical is doing double duty as a constraint rather than as structure. It is appropriately sized for the content it carries.
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?
This is a mutation tool with no annotations, no output schema, and four undocumented parameters. The description covers purpose and one key guardrail but says nothing about return values, error behavior, or parameter meanings, leaving significant gaps for an agent to call it correctly.
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% for all four parameters, so the description must compensate and largely does not. 'Local file' loosely maps to local_path and the S3 target to key/bucket, but nothing explains key format, whether bucket is optional or defaulted, or acceptable content_type values. The uncovered parameters remain opaque.
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 names a specific verb and resource: streaming upload of a local file to S3. This clearly distinguishes it from siblings like put_object_text (text payload), download_file (reverse direction), and copy_object (server-side copy). It stops short of naming those alternatives explicitly, so it stays at 4.
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?
There is no statement of when to use this tool versus put_object_text, copy_object, or download_file, and no mention of prerequisites. The parenthetical sandbox note hints that the source path must live inside the workspace, but that is a constraint rather than usage routing. An agent gets no explicit when-to-use 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.
21 tool updates
v1.0.0- First observed
copy_object - First observed
create_bucket - First observed
delete_bucket - First observed
delete_object - First observed
delete_objects_batch - First observed
delete_objects_by_prefix - First observed
download_file - First observed
get_bucket_location - First observed
get_object_tags - First observed
get_presigned_url - First observed
list_buckets - First observed
list_objects - First observed
move_object - First observed
put_object_text - First observed
read_object_range - First observed
read_object_text - First observed
s3_ping - First observed
search_objects - First observed
set_object_tags - First observed
stat_object - First observed
upload_file
TDQS
Scored across 21 tools
Most tools have clearly distinct purposes: copy vs move, single/batch/prefix delete, text vs range read, file vs text upload. Minor overlap exists between list_objects and search_objects (both can return object keys by prefix) and between read_object_text and read_object_range, but the descriptions clarify their intended scopes.
Nearly all tools follow a predictable snake_case verb_noun pattern (list_buckets, create_bucket, delete_object, get_object_tags). Minor deviations include s3_ping (service prefix instead of a verb) and delete_objects_batch/by_prefix (extra qualifiers), but the overall convention is consistent.
21 tools is on the heavy side for the rubric's 16-25 range. While S3 is a broad domain and most tools serve distinct needs, there are three deletion tools, two read tools, and two write tools that could arguably be consolidated, making the surface feel somewhat fragmented.
Core lifecycle coverage is strong: bucket create/list/delete/location, object CRUD, copy/move, tags get/set, presigned URLs, and diagnostics. Gaps remain for advanced S3 features such as multipart upload, versioning, ACLs/policies, and metadata updates beyond tags, but agents can work around these for common workflows.
Maintenance
Related MCP Connectors
Browse, upload, download, and share files in your S3-compatible buckets with delegated roles.
MCP-first toolbox for agents: KV storage, auth, queue, and utility tools. Free in early access.
Create a free sandbox object storage bucket; upload, download, list, inspect, and delete objects.
Context and control for any AI. Agent identity, scoped access, and proof across tools.
Related MCP Servers
- FlicenseBqualityDmaintenanceEnables AI models to interact with Akave's S3-compatible storage by providing tools for managing storage buckets and objects through standardized Model Context Protocol (MCP).1343 npm3-
- AlicenseAqualityDmaintenanceEnables interaction with S3-compatible storage services like AWS S3 and Cloudflare R2, supporting bucket management, object listing, reading, uploading, and deletion operations.558 npmISC
- FlicenseAqualityDmaintenanceProvides tools for interacting with MinIO and S3-compatible object storage through MCP clients like Claude. It enables comprehensive bucket and object management, including listing, creating, uploading, and generating presigned URLs.132-
- FlicenseNot gradedqualityCmaintenanceEnables LLM agents to interact with MinIO/S3 object storage, supporting bucket and object operations like listing, reading, writing, and generating presigned URLs.1-