Server definition
- Hash
- sha256:77ce1b743526624a1afdff987bf971cc0a5f7c357f3ebdb2412b05a31d5fdf77
- What it is
- What a remote MCP server returned when asked what it offers: 25 tools
The blob, as servednamed by its sha256
{
"instructions": "stagenth 旗下「文件中转」MCP 服务。客户端通过 Authorization: Bearer <API_TOKEN> 认证。每个工具在对应用户的上下文中执行,用户间数据隔离。提供文件管理(6)+ 上传/下载(2)+ 分享互通(2)+ Excel→图表(2:excel_inspect / excel_to_chart)等工具。",
"tools": [
{
"description": "创建文件夹 (类似 ``mkdir -p``)。\n\n 幂等: 如果路径已经存在, 直接返回该文件夹元数据, 不抛错。\n ",
"inputSchema": {
"properties": {
"folder_path": {
"description": "要创建的完整路径, 形如 '/工作/项目A/2026'。中间路径不存在时按 mkdir -p 语义递归创建; 末端已存在时直接返回原文件夹 (幂等).",
"title": "Folder Path",
"type": "string"
}
},
"required": [
"folder_path"
],
"title": "create_folderArguments",
"type": "object"
},
"name": "create_folder",
"outputSchema": null
},
{
"description": "为文件生成一个分享链接。",
"inputSchema": {
"properties": {
"expires_in_seconds": {
"anyOf": [
{
"minimum": 60,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "多少秒后过期;不传=永久",
"title": "Expires In Seconds"
},
"file_id": {
"description": "要分享的文件 ID",
"title": "File Id",
"type": "integer"
},
"max_downloads": {
"anyOf": [
{
"minimum": 1,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "最多下载次数",
"title": "Max Downloads"
},
"password": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "可选密码",
"title": "Password"
}
},
"required": [
"file_id"
],
"title": "create_share_linkArguments",
"type": "object"
},
"name": "create_share_link",
"outputSchema": null
},
{
"description": "删除一个文件。",
"inputSchema": {
"properties": {
"file_id": {
"description": "文件 ID",
"title": "File Id",
"type": "integer"
}
},
"required": [
"file_id"
],
"title": "delete_fileArguments",
"type": "object"
},
"name": "delete_file",
"outputSchema": null
},
{
"description": "批量删除文件(移入回收站,30 天内可在网页端恢复)。\n\n 逐个删除,单个失败不影响其余;返回每个 ID 的结果。\n ",
"inputSchema": {
"properties": {
"file_ids": {
"description": "要删除的文件 ID 列表(list_files 可查),单次最多 100 个",
"items": {
"type": "integer"
},
"title": "File Ids",
"type": "array"
}
},
"required": [
"file_ids"
],
"title": "delete_filesArguments",
"type": "object"
},
"name": "delete_files",
"outputSchema": null
},
{
"description": "删除文件夹 (类似 ``rmdir`` 或 ``rm -r``)。\n\n 内部 ready/locked 文件按\"软删进回收站\"处理, 30 天后才物删 OSS 字节;\n 用户可在该窗口期内通过回收站恢复。\n ",
"inputSchema": {
"properties": {
"folder_path": {
"description": "要删除的文件夹完整路径",
"title": "Folder Path",
"type": "string"
},
"recursive": {
"default": false,
"description": "False (默认): 文件夹必须为空 (无子文件夹 + 无文件), 否则报 folder_not_empty。True: 递归删除整棵子树, 内部所有文件软删进回收站 (类似 rm -rf).",
"title": "Recursive",
"type": "boolean"
}
},
"required": [
"folder_path"
],
"title": "delete_folderArguments",
"type": "object"
},
"name": "delete_folder",
"outputSchema": null
},
{
"description": "批量删除文件夹 (delete_folder 的批量版)。\n\n 逐个删除, 单个失败不影响其余; 返回每个路径的结果。\n 文件按软删进回收站处理, 30 天内可在网页端恢复。\n ",
"inputSchema": {
"properties": {
"folder_paths": {
"description": "要删除的文件夹完整路径列表, 单次最多 50 个",
"items": {
"type": "string"
},
"title": "Folder Paths",
"type": "array"
},
"recursive": {
"default": true,
"description": "True (默认): 递归删除每棵子树, 内部文件软删进回收站 (类似 rm -rf)。False: 仅删除空文件夹, 非空的报 folder_not_empty.",
"title": "Recursive",
"type": "boolean"
}
},
"required": [
"folder_paths"
],
"title": "delete_foldersArguments",
"type": "object"
},
"name": "delete_folders",
"outputSchema": null
},
{
"description": "下载一个文件, 按 MCP spec 2025-06-18 的原生 content 类型返回。\n\n 根据文件 category 自动选择最合适的 MCP content block 类型:\n - image (jpg/png/webp/...) → content[0].type = \"image\"\n (base64 + mimeType; AI 客户端原生显示图片, 多模态 LLM 可直接看图)\n - audio (mp3/wav/...) → content[0].type = \"audio\"\n (base64 + mimeType; AI 客户端原生播放, 多模态模型可直接听)\n - text/code + as_text=true → content[0].type = \"text\"\n (UTF-8 字符串; 适合代码/文档阅读分析)\n - 其他所有 (video / document / archive / 大文本 / ...)\n → content[0].type = \"resource_link\"\n (15 分钟有效的 URL + mimeType + size; 签名自带, 无需 Authorization;\n AI 用 bash curl 拉字节, 或提示用户点链接在浏览器下载)\n\n 【限速】所有分支都遵守会员档位的 download_speed_bytes_per_sec 设定:\n - image / audio / text 分支走 astream_file(throttle=...) 读字节再 base64\n - resource_link 分支: 链接指向 /api/v1/mcp-download/{token}, 目标路由\n 也用同一套 astream_file + throttle 算法 (详见 api/v1/mcp_download.py)\n\n 【零副作用】不再使用 share_service.create_share —— MCP 下载不会在你的\n 账号里留下任何公开分享记录, 不进分享面板, 不计分享审计。\n ",
"inputSchema": {
"properties": {
"as_text": {
"default": false,
"description": "【仅文本/代码文件】直接返 UTF-8 字符串文本内容。图片/音频等非文本文件不受此参数影响(它们按 MCP 原生 content type 返回)。",
"title": "As Text",
"type": "boolean"
},
"file_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "File Id"
},
"file_uuid": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "File Uuid"
}
},
"title": "download_fileArguments",
"type": "object"
},
"name": "download_file",
"outputSchema": null
},
{
"description": "通过分享链接下载文件(无需是文件拥有者)。\n\n 适合别人发给你一个 /s/<uuid> 链接,你想让 AI 直接读取其内容的场景。\n 不会占用你的存储配额。下载计入分享者的月流量。\n ",
"inputSchema": {
"properties": {
"as_text": {
"default": false,
"description": "对文本/代码文件直接返回字符串,不做 base64",
"title": "As Text",
"type": "boolean"
},
"password": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "分享密码,如有",
"title": "Password"
},
"share_uuid": {
"description": "分享链接的 UUID(分享 URL 最后一段,如 /s/<uuid>)",
"title": "Share Uuid",
"type": "string"
}
},
"required": [
"share_uuid"
],
"title": "download_shared_fileArguments",
"type": "object"
},
"name": "download_shared_file",
"outputSchema": null
},
{
"description": "直接返回文本类文件的内容(txt/md/csv/json/日志/代码等),AI 免下载即读。\n\n 二进制文件(图片/压缩包/Office 等)请用 download_file;超长文本按 max_bytes 截断并标记。\n ",
"inputSchema": {
"properties": {
"file_id": {
"description": "要读取的文本类文件 ID",
"title": "File Id",
"type": "integer"
},
"max_bytes": {
"default": 204800,
"description": "最多返回字节数(默认 200KB,上限 500KB)",
"maximum": 512000,
"minimum": 1024,
"title": "Max Bytes",
"type": "integer"
}
},
"required": [
"file_id"
],
"title": "file_readArguments",
"type": "object"
},
"name": "file_read",
"outputSchema": null
},
{
"description": "查询单个文件详情。file_id 与 file_uuid 提供其一即可。",
"inputSchema": {
"properties": {
"file_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "文件 ID",
"title": "File Id"
},
"file_uuid": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "文件 UUID(二选一)",
"title": "File Uuid"
}
},
"title": "get_file_infoArguments",
"type": "object"
},
"name": "get_file_info",
"outputSchema": null
},
{
"description": "以 ASCII 树状图返回用户的文件夹/文件层级 (推荐: 用户问“目录结构”时用这个).\n\n 返回:\n {\n \"root_path\": \"/\",\n \"tree\": \"ASCII 字符串\",\n \"stats\": {\"folders\": N, \"files\": M, \"truncated\": bool}\n }\n ",
"inputSchema": {
"properties": {
"folder_path": {
"default": "/",
"description": "起始路径, 默认 '/' 即整个用户文件树。",
"title": "Folder Path",
"type": "string"
},
"include_files": {
"default": true,
"description": "True 时把文件也画进树, False 只画目录。",
"title": "Include Files",
"type": "boolean"
},
"max_depth": {
"default": 10,
"description": "最大渲染深度, 默认 10. 超出深度的节点显示为 '...'.",
"maximum": 32,
"minimum": 1,
"title": "Max Depth",
"type": "integer"
},
"max_nodes": {
"default": 300,
"description": "最大渲染节点数 (文件+文件夹合计). 超出后用 'N more...' 截断.",
"maximum": 2000,
"minimum": 10,
"title": "Max Nodes",
"type": "integer"
}
},
"title": "get_folder_treeArguments",
"type": "object"
},
"name": "get_folder_tree",
"outputSchema": null
},
{
"description": "查看当前用户的存储配额使用情况。",
"inputSchema": {
"properties": {},
"title": "get_user_quotaArguments",
"type": "object"
},
"name": "get_user_quota",
"outputSchema": null
},
{
"description": "把别人分享的文件导入到当前登录用户的文件列表。\n\n 等价于「下载后再上传」,但服务端直接从源文件拷贝字节流、仍走配额/白名单/秒传检查,\n 所以比本地往返更快、也不消耗带宽。\n 下载量计入分享者的月流量;存储占用计入当前用户的配额。\n ",
"inputSchema": {
"properties": {
"password": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "分享密码,如有",
"title": "Password"
},
"share_uuid": {
"description": "分享链接的 UUID",
"title": "Share Uuid",
"type": "string"
}
},
"required": [
"share_uuid"
],
"title": "import_shared_fileArguments",
"type": "object"
},
"name": "import_shared_file",
"outputSchema": null
},
{
"description": "列出当前用户的文件 (默认递归遍历整个文件夹层级).\n\n 返回值同时附带 ``subfolders``(直接子文件夹列表) 与 ``has_subfolders``\n 提示, 帮助 AI 感知层级结构。若用户问“目录结构 / 树”, 直接调\n ``get_folder_tree`` 拿到 ASCII 树状图更直观。\n\n 每个 item 都有 ``folder_path`` 字段标注它的实际归属, 同名文件不会\n 因递归而混淆。\n ",
"inputSchema": {
"properties": {
"category": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "按分类过滤:audio/video/image/text/code/document/archive/other",
"title": "Category"
},
"folder_path": {
"default": "/",
"description": "目标文件夹路径, 形如 '/' 或 '/工作/项目A'。默认 '/' 列根目录。用 list_folders 探查可用路径。",
"title": "Folder Path",
"type": "string"
},
"page": {
"default": 1,
"minimum": 1,
"title": "Page",
"type": "integer"
},
"recursive": {
"default": true,
"description": "True (默认) = 深度遍历, 返回该路径及所有后代文件夹下的全部文件; False = 仅列直接子文件 (类似 'ls'). 用户问“都有什么文件”时一律保持 True.",
"title": "Recursive",
"type": "boolean"
},
"search": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "按文件名或描述搜索",
"title": "Search"
},
"size": {
"default": 20,
"maximum": 100,
"minimum": 1,
"title": "Size",
"type": "integer"
}
},
"title": "list_filesArguments",
"type": "object"
},
"name": "list_files",
"outputSchema": null
},
{
"description": "列出文件夹 (类似 ``ls -d`` 只看目录)。\n\n 路径不存在抛 folder_not_found。要列文件用 list_files。\n ",
"inputSchema": {
"properties": {
"folder_path": {
"default": "/",
"description": "父文件夹路径, 默认 '/' 即根目录。返回直接子文件夹列表 (不含其文件).",
"title": "Folder Path",
"type": "string"
},
"recursive": {
"default": false,
"description": "True 时返回整棵子树 (深度遍历)。默认 False — 只列直接子文件夹.",
"title": "Recursive",
"type": "boolean"
}
},
"title": "list_foldersArguments",
"type": "object"
},
"name": "list_folders",
"outputSchema": null
},
{
"description": "把文件挪到指定文件夹 (类似 ``mv file /target/dir/``)。\n\n OSS 字节不动, 只改逻辑路径, 操作几毫秒完成。\n ",
"inputSchema": {
"properties": {
"auto_create_folders": {
"default": true,
"description": "目标路径不存在时是否 mkdir -p",
"title": "Auto Create Folders",
"type": "boolean"
},
"file_id": {
"description": "要移动的文件 ID",
"title": "File Id",
"type": "integer"
},
"target_folder_path": {
"description": "目标文件夹路径, 形如 '/归档/2026'。'/' 即移到根目录.",
"title": "Target Folder Path",
"type": "string"
}
},
"required": [
"file_id",
"target_folder_path"
],
"title": "move_fileArguments",
"type": "object"
},
"name": "move_file",
"outputSchema": null
},
{
"description": "移动整个文件夹 (类似 ``mv /工作/项目A /归档/``)。\n\n 会递归更新所有后代的逻辑路径。OSS 字节不动。\n ",
"inputSchema": {
"properties": {
"auto_create_folders": {
"default": true,
"description": "目标父路径不存在时是否 mkdir -p",
"title": "Auto Create Folders",
"type": "boolean"
},
"folder_path": {
"description": "要移动的文件夹完整路径, 如 '/工作/项目A'",
"title": "Folder Path",
"type": "string"
},
"target_parent_path": {
"description": "新父文件夹路径。'/' 即移到根目录。若也想改名, 用 rename_folder 工具 (不在此工具中合并).",
"title": "Target Parent Path",
"type": "string"
}
},
"required": [
"folder_path",
"target_parent_path"
],
"title": "move_folderArguments",
"type": "object"
},
"name": "move_folder",
"outputSchema": null
},
{
"description": "改名 (不动 parent)。",
"inputSchema": {
"properties": {
"folder_path": {
"description": "要改名的文件夹完整路径",
"title": "Folder Path",
"type": "string"
},
"new_name": {
"description": "新名字 (不含 / )。同 parent 下不能重名.",
"maxLength": 255,
"minLength": 1,
"title": "New Name",
"type": "string"
}
},
"required": [
"folder_path",
"new_name"
],
"title": "rename_folderArguments",
"type": "object"
},
"name": "rename_folder",
"outputSchema": null
},
{
"description": "抓取一个公开网页,返回干净的 Markdown(供 AI 阅读/总结/提取)。\n\n 只抓公开网页,禁止内网/保留地址;不生成任何内容,只做抓取与格式转换。\n ",
"inputSchema": {
"properties": {
"formats": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "输出格式子集:markdown / html / text,默认 markdown",
"title": "Formats"
},
"only_main_content": {
"default": true,
"description": "只提取正文主体,去掉导航/广告/页脚",
"title": "Only Main Content",
"type": "boolean"
},
"url": {
"description": "要抓取的网页 URL(http/https,仅限公开网页)",
"title": "Url",
"type": "string"
}
},
"required": [
"url"
],
"title": "scrape_urlArguments",
"type": "object"
},
"name": "scrape_url",
"outputSchema": null
},
{
"description": "在当前用户的所有文件中搜索。",
"inputSchema": {
"properties": {
"limit": {
"default": 20,
"maximum": 100,
"minimum": 1,
"title": "Limit",
"type": "integer"
},
"query": {
"description": "搜索关键词(文件名或描述)",
"title": "Query",
"type": "string"
}
},
"required": [
"query"
],
"title": "search_filesArguments",
"type": "object"
},
"name": "search_files",
"outputSchema": null
},
{
"description": "上传单个分片 (第 2 步 / 共 3 步)。\n\n 可并发调用, 后端内部会记录已上传索引。网络抖动重试同一 chunk_index\n 安全 (服务端幂等写临时块)。\n ",
"inputSchema": {
"properties": {
"chunk_index": {
"description": "分片索引 (0-based), 最后一片索引 = total_chunks-1",
"minimum": 0,
"title": "Chunk Index",
"type": "integer"
},
"data_base64": {
"description": "本片字节的 base64 编码。每片大小应等于 upload_init 返回的 chunk_size, 最后一片可能短。单次调用建议 <12MB base64 (约 8-9MB 原字节)。",
"title": "Data Base64",
"type": "string"
},
"session_uuid": {
"description": "upload_init 返回的会话 UUID",
"title": "Session Uuid",
"type": "string"
}
},
"required": [
"session_uuid",
"chunk_index",
"data_base64"
],
"title": "upload_chunkArguments",
"type": "object"
},
"name": "upload_chunk",
"outputSchema": null
},
{
"description": "合并所有分片 (第 3 步 / 共 3 步)。\n\n 两种路径:\n - 直传 (推荐, shim 走这条): parts 带齐所有 (part_number, etag),\n 后端调 OSS CompleteMultipartUpload 服务端合并, 不耗 ECS 内存/带宽。\n - 中转 (兼容老 shim / 网页端): 不传 parts, 从临时分片合并。\n\n 返回最终 file 元数据 (id, uuid, filename, size_bytes, sha256, ...).\n ",
"inputSchema": {
"properties": {
"parts": {
"anyOf": [
{
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "【OSS 直传模式】每片对应的 (part_number, etag)。如: [{\"part_number\": 1, \"etag\": \"abc...\"}, ...]。shim 在 PUT 每片到 OSS 后从响应头拿到 ETag, 传回来。传了 parts 走 OSS CompleteMultipartUpload 合并 (字节不经 ECS)。不传则走老路: 从 upload_chunk 落地的临时片合并 (中转模式)。",
"title": "Parts"
},
"session_uuid": {
"description": "upload_init 返回的会话 UUID",
"title": "Session Uuid",
"type": "string"
}
},
"required": [
"session_uuid"
],
"title": "upload_completeArguments",
"type": "object"
},
"name": "upload_complete",
"outputSchema": null
},
{
"description": "上传一个文件(base64 形式)到用户的文件中转站。\n\n 仅在用户明确要求把某个文件存入中转站 / 传输到其他设备 / 分享给他人时调用。\n 上传会占用用户的付费存储配额并按传输量扣 credit —— 不要主动上传\n 中间结果、日志、临时文件或用户没有要求保存的命令输出。\n\n 用 init + 单次分片 + complete 的方式复用现有服务。\n 适合中小文件(< 20MB)。超大文件请使用 Web 端分片上传。\n\n 新增 folder_path: 上传到指定文件夹, 默认根目录 \"/\"。\n ",
"inputSchema": {
"properties": {
"auto_create_folders": {
"default": true,
"description": "路径不存在时是否自动 mkdir -p, 默认 True (类似 Linux mkdir -p)",
"title": "Auto Create Folders",
"type": "boolean"
},
"content_base64": {
"description": "文件内容的 base64 编码。较大文件建议分多次调用前先咨询管理员。",
"title": "Content Base64",
"type": "string"
},
"filename": {
"description": "文件名(含扩展名)",
"title": "Filename",
"type": "string"
},
"folder_path": {
"default": "/",
"description": "目标文件夹路径。'/' = 根目录 (默认); '/工作/2026' = 嵌套路径。auto_create_folders=True 时路径不存在会 mkdir -p; auto_create_folders=False 时不存在抛错。",
"title": "Folder Path",
"type": "string"
},
"mime_type": {
"default": "",
"title": "Mime Type",
"type": "string"
}
},
"required": [
"filename",
"content_base64"
],
"title": "upload_fileArguments",
"type": "object"
},
"name": "upload_file",
"outputSchema": null
},
{
"description": "发起分片上传会话 (第 1 步 / 共 3 步)。\n\n 返回:\n - instant=true 时, file 字段是已秒传的文件元数据, 直接用即可\n - instant=false 时, 用 session_uuid + 服务端给的 chunk_size/total_chunks\n 逐片调 upload_chunk, 最后调 upload_complete。\n ",
"inputSchema": {
"properties": {
"auto_create_folders": {
"default": true,
"description": "路径不存在时是否自动 mkdir -p",
"title": "Auto Create Folders",
"type": "boolean"
},
"filename": {
"description": "文件名(含扩展名)",
"title": "Filename",
"type": "string"
},
"folder_path": {
"default": "/",
"description": "目标文件夹路径, 默认 '/' 即根目录。auto_create_folders=True 时会按 mkdir -p 语义自动建。",
"title": "Folder Path",
"type": "string"
},
"mime_type": {
"default": "",
"title": "Mime Type",
"type": "string"
},
"sha256": {
"description": "整个文件的 sha256 (64 位小写十六进制); 服务端用这个做秒传命中",
"maxLength": 64,
"minLength": 64,
"title": "Sha256",
"type": "string"
},
"total_size_bytes": {
"description": "整个文件的字节数",
"minimum": 1,
"title": "Total Size Bytes",
"type": "integer"
}
},
"required": [
"filename",
"total_size_bytes",
"sha256"
],
"title": "upload_initArguments",
"type": "object"
},
"name": "upload_init",
"outputSchema": null
},
{
"description": "把多个文件打包成一个 ZIP,存入文件中转站并返 15 分钟下载 URL。\n\n 单包上限 50 个文件 / 200MB 原始体积;同名文件自动加序号。\n ",
"inputSchema": {
"properties": {
"file_ids": {
"description": "要打包的文件 ID 列表(1-50 个)",
"items": {
"type": "integer"
},
"title": "File Ids",
"type": "array"
},
"zip_name": {
"default": "",
"description": "压缩包文件名(可选,自动补 .zip)",
"title": "Zip Name",
"type": "string"
}
},
"required": [
"file_ids"
],
"title": "zip_filesArguments",
"type": "object"
},
"name": "zip_files",
"outputSchema": null
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:77ce1b743526624a1afdff987bf971cc0a5f7c357f3ebdb2412b05a31d5fdf77 | sha256sum