mcp-kubevela
mcp-kubevela enables AI assistants to manage KubeVela application delivery via the VelaUX API. Key capabilities include:
Application Management: List, detail, status, components, revisions, compare configurations, export manifests, create, deploy, dry-run, and rollback (with confirmation).
Workflow & Deployment Control: List records/logs, resume suspended workflows, terminate workflows (with confirmation).
Triggers: List and create webhook triggers (custom, DockerHub, ACR, Harbor, JFrog).
Projects, Environments & Targets: List projects, delivery targets, members, environments.
Platform: List clusters, browse addons, view X-Definitions, execute VelaQL, system info.
Safety: Read-only mode, destructive ops require confirmation, permissions via VelaUX roles.
Integration: Supports stdio, SSE, streamable-http transports, JWT auth with auto-refresh, works with local AI clients and Docker.
Click on "Install 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., "@mcp-kubevelalist applications in project default"
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.
mcp-kubevela
KubeVela MCP Server - 让 AI 助手能够查询和管理 KubeVela 的应用交付:查询应用状态、触发部署、跟踪工作流、管理插件等。
基于 VelaUX REST API(/api/v1,JWT Bearer 认证,参见 VelaUX OpenAPI 文档),支持应用交付的查询与操作。
特性
多协议传输:
stdio(默认)、sse、streamable-http,一套代码适配本地与远程场景接口认证:HTTP 传输支持 Bearer Token 保护,未授权请求返回
401JWT 自动管理:用户名/密码登录换取 accessToken,
401时自动 refresh / 重登录并重放请求,无需手工维护 TokenKubeVela 原生概念:直接以
project / application / env / target / workflow / addon组织交付,读写一体默认只读:写工具默认不注册,需显式
VELA_READ_ONLY=false开启,避免未经配置即直连生产环境危险操作防护:回滚/终止工作流等高危操作带
destructiveHint注解并通过 MCP 2.0 Elicitation 确认;删除应用、回收环境、禁用插件等高危能力未提供工具,从根源上杜绝误操作写前确认:部署、回滚、恢复/终止工作流、创建触发器等写操作通过 MCP 2.0
Resolve+Elicit机制弹出确认表单,需用户明确同意后才执行;客户端不支持 Elicitation 时由 SDK 拒绝调用(fail-closed)MCP Resources:以
vela://URI 暴露系统信息、项目列表、环境列表、集群列表等只读元数据,客户端可直接读取Stateless HTTP:支持无状态 HTTP 模式,每次请求独立处理、无会话状态,适合 Serverless / 多副本部署
灵活部署:
uvx免安装运行、Docker 构建即用
Related MCP server: Kube MCP
前置准备
准备一个可访问的 VelaUX(KubeVela 的 API Server + 控制台)实例。你需要准备:
VelaUX 地址(如
http://localhost:8000)登录用户名 / 密码(首次安装 VelaUX 后默认管理员为
admin)
快速开始
MCP 客户端(stdio,本地)
以 Claude Code 为例,在项目 .mcp.json 或全局 ~/.claude.json 中添加:
{
"mcpServers": {
"kubevela": {
"type": "stdio",
"command": "uvx",
"args": ["mcp-kubevela"],
"env": {
"VELA_URL": "http://localhost:8000",
"VELA_USERNAME": "admin",
"VELA_PASSWORD": "your-password",
"VELA_READ_ONLY": "false"
}
}
}
}本服务默认只读(
VELA_READ_ONLY=true),写工具不注册。上述示例显式设为false以启用创建 / 部署 / 回滚等写能力;仅需查询时删掉该项即可。
Cursor、OpenCode、Claude Desktop 等客户端的配置格式相同,核心均为
command: uvx+args: ["mcp-kubevela"],按各客户端语法填入VELA_*环境变量即可。
Docker
方式一:stdio(由客户端拉起容器,适合本地集成)
{
"mcpServers": {
"kubevela": {
"type": "stdio",
"command": "docker",
"args": ["run", "-i", "--rm", "ghcr.io/zhouweico/mcp-kubevela:latest"],
"env": {
"VELA_URL": "http://your-velaux:8000",
"VELA_USERNAME": "admin",
"VELA_PASSWORD": "your-password"
}
}
}
}必须带
-i(保持 stdin 管道),否则容器内的 stdio 服务无法与客户端通信。
方式二:HTTP + 认证(容器独立运行,客户端远程连接,适合多客户端共享)
先启动容器:
docker run -d -p 8080:8080 \
-e MCP_TRANSPORT=streamable-http \
-e MCP_AUTH_TOKEN=your-strong-token \
-e VELA_URL=http://your-velaux:8000 \
-e VELA_USERNAME=admin \
-e VELA_PASSWORD=your-password \
ghcr.io/zhouweico/mcp-kubevela:latest再在 Claude Code 的 .mcp.json 中通过 HTTP 连接:
{
"mcpServers": {
"kubevela": {
"type": "streamable-http",
"url": "http://localhost:8080/mcp",
"headers": {
"Authorization": "Bearer your-strong-token"
}
}
}
}可用工具
只读工具(21 个)
按业务域分组排列:应用 → 部署与工作流 → 触发器 → 项目与环境 → 平台。
工具 | 分组 | 说明 | 对应 API |
| 应用 | 应用列表(支持项目/环境/目标/关键字过滤) |
|
| 应用 | 应用详情(基础信息、环境绑定、策略) |
|
| 应用 | 运行状态(全环境概览或单环境详情) |
|
| 应用 | 组件列表 / 组件详情(含 properties/traits) |
|
| 应用 | 版本历史(可按环境/状态过滤) |
|
| 应用 | 配置差异对比(最新配置 vs 运行态 / 指定版本 vs 运行态或最新) |
|
| 应用 | 导出 Application CR YAML(GitOps 迁移 / 备份) |
|
| 部署与工作流 | 环境部署记录 |
|
| 部署与工作流 | 工作流列表 / 执行记录 / 记录详情(三合一) |
|
| 部署与工作流 | 工作流步骤日志 |
|
| 触发器 | Webhook 触发器列表(含 token 与触发地址) |
|
| 项目与环境 | 项目列表(名称 / 别名 / 命名空间 / 负责人) |
|
| 项目与环境 | 项目可用的交付目标 |
|
| 项目与环境 | 项目成员及角色(权限排查) |
|
| 项目与环境 | 环境列表(可按项目过滤) |
|
| 项目与环境 | 交付目标列表 |
|
| 平台 | 集群列表 / 集群详情 |
|
| 平台 | 插件市场 / 已启用插件 / 详情+状态 |
|
| 平台 | X-Definition 列表 / 参数 schema |
|
| 平台 | VelaQL 查询(Pod / 日志 / 资源拓扑),schema-typed |
|
| 平台 | 平台系统信息(版本 / 登录方式 / 集群与应用统计 / 已启用插件) |
|
写工具(7 个)
按交付生命周期排列:创建 → 预演 → 部署 → 工作流控制 → 回滚 → 触发器。
工具 | 分组 | 说明 | 对应 API |
| 应用 | 创建应用(含首个组件) |
|
| 应用 | 部署预演(只渲染不落地) |
|
| 应用 | 触发部署(异步,需人工确认) |
|
| 部署与工作流 | 恢复挂起的工作流(需人工确认) |
|
| 部署与工作流 | 终止执行中的工作流(需人工确认) |
|
| 应用 | 回滚到指定版本(需人工确认) |
|
| 触发器 | 创建 Webhook 触发器(返回 token 与触发地址) |
|
未提供的高危操作:删除应用、回收环境、启用/禁用插件、删除触发器未实现为工具, 此类操作请通过 VelaUX 控制台或
velaCLI 人工执行。只读 / 写的区别:「类型 = 只读」的 21 个工具在只读模式下仍然可用; 「类型 = 写」的 7 个工具会被完全排除——不出现在
tools/list中, Agent 既看不到也无法调用(注册期排除,非运行期拦截)。 只读为默认行为,因此未显式设置VELA_READ_ONLY=false的部署,Agent 只能查询、 绝无意外变更交付的风险。部署为异步语义:
vela_deploy_application触发后立即返回部署记录标识, 用vela_list_workflow_records/vela_get_workflow_logs轮询进度与日志。
配置
环境变量
MCP 传输与认证
变量 | 说明 | 默认值 |
| 传输协议: |
|
| HTTP 传输监听地址(stdio 忽略),默认仅本地回环;对外暴露需显式设置并务必配置 |
|
| HTTP 传输监听端口(stdio 忽略) |
|
| 设置后启用 Bearer Token 认证,保护 HTTP 接口 | -(不鉴权) |
| 启用无状态 HTTP 模式,适合 Serverless 部署(详见下方说明) |
|
| 日志级别: |
|
VelaUX 连接
变量 | 说明 | 默认值 |
| VelaUX API Server 地址 |
|
| 登录用户名(必填) | - |
| 登录密码(必填) | - |
| 请求超时(秒) |
|
| 只读模式,排除全部写工具。默认只读,需写能力时显式设为 |
|
| 跳过 TLS 证书验证,用于自签名证书环境(详见下方说明) |
|
认证凭证只需用户名/密码:客户端首次请求时自动调用
POST /api/v1/auth/login换取 accessToken / refreshToken 并缓存;收到401时先尝试 refresh 续期、 失败则重新登录,然后重放原请求(最多一次),全程无需人工干预。
KubeVela 概念说明
KubeVela 的交付组织层级为:项目(project)> 应用(application)> 环境绑定(env binding)> 组件(component)/ 运维特征(trait),部署由工作流(workflow)驱动,落点为交付目标(target,对应集群+命名空间)。
组件的
properties传参为 JSON 字符串(如'{"image":"nginx:latest"}'),由组件定义(ComponentDefinition)的 schema 约束,可用vela_list_definitions查询参数 schema。部署后应用状态、Pod、日志等运行时信息可通过
vela_get_app_status与vela_velaql_query获取。
只读模式
本服务默认即只读模式(VELA_READ_ONLY=true),全部写工具不注册,仅允许查询,可直接用于生产环境。
如需写能力(创建 / 部署 / 回滚 / 终止工作流 / 创建触发器),须显式关闭只读:
{
"env": {
"VELA_READ_ONLY": "false"
}
}TLS 证书验证
本服务基于 httpx2 发起 HTTPS 请求,默认会验证 TLS 证书(行为与 httpx 一致)。
在使用自签名证书或内部 CA 的环境中,HTTPS 请求会因证书校验失败而报错。此时可设置环境变量
VELA_INSECURE=true跳过 TLS 证书验证。该选项适用于开发、测试等使用自签名证书的环境。
{
"env": {
"VELA_INSECURE": "true"
}
}安全警告:禁用 TLS 证书验证是不安全的,会使得 HTTPS 连接容易受到中间人攻击。请勿在生产环境中使用,生产环境应使用受信任的 CA 签发的有效证书。
多协议传输
通过 MCP_TRANSPORT 选择传输协议:
stdio(默认):标准输入输出,适合 Claude Code、Cursor 等本地 AI 客户端集成。sse:Server-Sent Events,HTTP 传输,端点http://<host>:<port>/sse。streamable-http:Streamable HTTP,端点http://<host>:<port>/mcp。
以 streamable-http 启动示例:
MCP_TRANSPORT=streamable-http \
MCP_HOST=0.0.0.0 MCP_PORT=8080 \
MCP_AUTH_TOKEN=your-strong-token \
mcp-kubevela接口认证
设置 MCP_AUTH_TOKEN 后,所有 HTTP 请求必须携带正确 Token,否则返回 401:
Authorization: Bearer <MCP_AUTH_TOKEN>也兼容 X-Auth-Token / X-MCP-Token 请求头。健康检查端点 GET /health 免鉴权,返回 {"status":"ok"},用于容器探活。
stdio传输为本地进程通信,不涉及网络,无需也不会进行 Token 认证。未设置MCP_AUTH_TOKEN时 HTTP 接口不鉴权,生产环境请务必配置。注意区分两类凭证:
MCP_AUTH_TOKEN保护本 MCP Server 的 HTTP 接口;VELA_USERNAME/VELA_PASSWORD用于登录 VelaUX API,两者互不相关。
MCP Resources
本服务以 MCP 2.0 Resources 暴露只读元数据,客户端可直接通过 URI 读取,无需调用工具:
Resource URI | 说明 |
| VelaUX 平台系统信息(版本 / 登录方式 / 集群与应用统计 / 已启用插件) |
| 列出所有项目 |
| 列出所有环境 |
| 列出所有纳管集群 |
Resources 仅暴露只读数据,不涉及任何写操作。
Stateless HTTP 模式
设置 MCP_STATELESS_HTTP=true 可启用无状态 HTTP 模式,每次请求独立处理、不保留会话状态,适合 Serverless 平台(如 AWS Lambda、阿里云函数计算)或多副本无状态部署:
MCP_TRANSPORT=streamable-http \
MCP_STATELESS_HTTP=true \
MCP_PORT=8080 \
mcp-kubevelaStateless 模式下不支持流式响应(SSE stream),每个 HTTP 请求独立完成工具调用后返回。适合短时、无状态的工具调用场景。
权限模型
本 MCP Server 不实现任何鉴权逻辑:它仅用配置的 VELA_USERNAME / VELA_PASSWORD 登录 VelaUX,原样转发请求。
因此,你能看到哪些数据、能执行哪些写操作,完全由该 VelaUX 账号在 KubeVela 的「项目角色」决定,与 MCP Server 本身无关。
数据权限:账号只能查询其项目角色覆盖范围内的项目 / 应用 / 环境 / 交付目标。例如列全量应用时,返回的正是该账号有权看到的子集,并非平台全量。
执行权限:触发部署、恢复/终止工作流、回滚、创建触发器等写操作能否成功,取决于账号在对应项目是否拥有足够角色(如
project-admin/project-edit/ 自定义角色)。若 VelaUX 返回403,说明账号权限不足——这是 KubeVela 的授权结果,不是 MCP 的限制。VELA_READ_ONLY不是权限开关:它只在 MCP 层决定「是否注册写工具」(粗粒度安全闸),既不会授予、也不会剥夺任何 VelaUX 权限。真正的授权始终来自登录账号本身。最小权限建议:生产环境建议为 MCP 配置专用 VelaUX 账号,仅授予所需项目的最小角色(如
project-view/project-edit),而非平台管理员。多租户隔离应通过 VelaUX 的项目角色实现,而非依赖本服务的配置项。
不确定当前账号在某个项目的角色?用
vela_list_project_users(指定project_name)查看该项目的成员与角色即可排查权限问题。
容器化部署
本地构建(Docker)
# 构建镜像
docker build -t mcp-kubevela:latest .
# 以 streamable-http 运行并启用认证
docker run -d --name mcp-kubevela -p 8080:8080 \
-e MCP_TRANSPORT=streamable-http \
-e MCP_AUTH_TOKEN=your-strong-token \
-e VELA_URL=http://your-velaux:8000 \
-e VELA_USERNAME=admin \
-e VELA_PASSWORD=your-password \
mcp-kubevela:latestDocker Compose
复制 .env.example 为 .env 并按需修改,然后:
cp .env.example .env
docker compose up -ddocker-compose.yml 已内置 build(基于本地 Dockerfile 构建并标记为 mcp-kubevela:latest)和健康检查(探测 /health),以非 root 用户运行,适合本地开发部署。
使用场景示例
配置好后,你可以这样和 AI 对话(每条示例后括注主要涉及的工具):
平台初识与巡检
新接入一个环境,先摸清平台全貌:
连一下 KubeVela 平台,告诉我版本、有几个集群、几个应用、开了哪些插件(vela_system_info)
列出所有项目和各自的负责人,再看看 default 项目能部署到哪些交付目标(vela_list_projects + vela_list_project_targets)
盘点一下所有集群和环境,画一张「项目 → 环境 → 目标集群」的映射表(vela_list_clusters + vela_list_envs + vela_list_targets)
现在启用了哪些插件?fluxcd 插件的状态如何,插件市场里有没有可用的更新版本(vela_list_addons)
查询交付
列出 default 项目下的所有应用,按环境分组(vela_list_applications)
demo 应用在 prod 环境的运行状态怎么样?有没有异常的组件(vela_get_app_status)
看看 demo 应用有哪些组件,webservice 组件的镜像和资源配置是什么(vela_list_components)
webservice 这种组件类型都支持哪些参数?我想加个环境变量(vela_list_definitions)
部署与发布
创建一个应用 my-app,组件用 webservice,镜像 nginx:latest,部署到 dev 环境(vela_list_definitions → vela_create_application)
先 dry-run 看看渲染结果有没有问题,没问题再把 demo 部署到 prod,然后盯着进度直到完成(vela_dry_run_application → vela_deploy_application → vela_list_workflow_records 轮询)
部署卡在人工审批了,帮我放行(vela_list_workflow_records → vela_resume_workflow)
这次发布不对劲,先终止工作流,看下版本历史,回滚到上一个正常版本(vela_terminate_workflow → vela_list_revisions → vela_rollback_application)
故障排查
demo 最近一次部署的工作流执行到哪一步了?把失败步骤的日志给我(vela_list_workflow_records + vela_get_workflow_logs)
用 VelaQL 查一下 demo 在 prod 环境的 Pod 列表,有没有在重启的(vela_velaql_query,view=component-pod-view,params={appNs, appName})
demo 应用线上行为和配置对不上,帮我对比一下集群运行态和最新配置有没有漂移(vela_compare_application)
对比一下 demo 当前运行态和 v2 版本的配置差异,看看当时改了什么(vela_list_revisions + vela_compare_application)
prod 环境最近的部署记录列一下,找找是哪次部署之后开始出问题的(vela_list_deploy_records)
GitOps 与备份
把 demo 应用的最新配置导出成 Application YAML,我要提交到 Git 仓库(vela_get_application_manifest,source=latest)
导出 demo 当前在集群里实际运行的 YAML,和 Git 里的版本对比一下(vela_get_application_manifest,source=running)
CI/CD 集成
给 demo 应用建一个 webhook 触发器,Harbor 推送镜像后自动部署到 dev 环境,把触发地址给我(vela_create_trigger,payloadType=harbor)
demo 现在有哪些触发器?把每个的触发地址和绑定的工作流列出来(vela_list_triggers)
权限与协作排查
我部署 demo 到 prod 报 403,看看我在这个项目里是什么角色(vela_list_project_users)
prod-cluster 这个目标在哪些项目里可用?帮我确认 team-a 项目能不能部过去(vela_list_projects + vela_list_project_targets)
部署、回滚、恢复/终止工作流、创建触发器等写操作通过 MCP 2.0
Resolve+Elicit机制要求用户二次确认,避免对话中的误操作直接落到集群。 删除应用、回收环境、启用/禁用插件等高危操作未提供工具,请在 VelaUX 控制台或velaCLI 中人工执行。写前确认:5 个写操作(
deploy/rollback/resume/terminate/create_trigger)执行前会通过 MCP 2.0 Elicitation 弹出确认表单,展示应用名、版本、工作流等上下文信息,需用户明确勾选并同意后才执行。confirm参数由 SDK 从inputSchema中剔除,AI 不可见也无法伪造。客户端不支持 Elicitation 时由 SDK 直接拒绝调用(fail-closed),不会降级为直接执行。
开发
pip install -e ".[dev]"
pytest # respx mock 测试,无需真实 VelaUX 环境
ruff check src tests实现注记
VelaUX 工作流记录的
resume/terminate/rollback接口是 GET 方法(非 POST),客户端已按源码契约实现组件
properties是 JSON 字符串(非对象)应用列表接口无分页参数;其余列表接口统一
page/pageSize错误响应结构为
{"BusinessCode": int, "Message": str}
License
MIT
Available Tools
21 toolsvela_compare_applicationARead-onlyIdempotent
对比应用配置差异(诊断配置漂移)。三种模式:
仅传 env:最新配置 vs 该环境集群运行态
传 revision + compare_with=running:指定版本 vs 集群运行态
传 revision + compare_with=latest:指定版本 vs 最新配置
对应 API:POST /api/v1/applications/{app}/compare
| Name | Required | Description | Default |
|---|---|---|---|
| env | No | 环境名。不传 revision 时必填:对比最新配置与该环境集群运行态 | |
| app_name | Yes | 应用名称 | |
| revision | No | 版本号。传入后以该版本为基准做对比 | |
| compare_with | No | revision 的对比对象:running(集群运行态)或 latest(最新配置) | running |
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint:false. The description adds behavioral context by explaining the three comparison modes and the underlying API endpoint, which helps the agent understand the tool's side-effect-free nature and how the parameters influence behavior.
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 concise and front-loaded with the primary purpose, followed by a clear bulleted list of modes. Every sentence earns its place, and the API endpoint is provided as a reference. No fluff.
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?
The tool has an output schema, so return format is covered there. The description fully explains the input combinations and the diagnostic purpose, making it complete for an agent to select and invoke correctly. Sibling relationships are not needed since this is a distinct comparison tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 80%, so the baseline is 3. The description goes beyond the schema by synthesizing the parameter combinations (env-only, revision+running, revision+latest), clarifying the interplay between env, revision, and compare_with. This adds meaning beyond the individual parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool compares application configuration differences to diagnose configuration drift, with specific verb and resource. It also details three distinct comparison modes, distinguishing it from other tools in the sibling list that are primarily list/get/query operations.
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 explicitly explains when to use each of the three modes (only env, revision with compare_with=running, revision with compare_with=latest), providing concrete conditions. It does not explicitly mention exclusions or alternative tools, but the mode guidance is clear enough for an agent to decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vela_get_applicationBRead-onlyIdempotent
查看应用详情(基础信息、策略、环境绑定、资源统计)。
对应 API:GET /api/v1/applications/{appName}
| Name | Required | Description | Default |
|---|---|---|---|
| app_name | Yes | 应用名称 | |
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| icon | No | |
| name | No | |
| alias | No | |
| labels | No | |
| project | No | |
| namespace | No | |
| annotations | No | |
| description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, covering the safety profile. The description adds the HTTP method (GET) and the categories of returned information, but it does not disclose additional behavioral traits like authentication needs, rate limits, or the effect of response_format. This moderate additional context, combined with strong annotations, justifies a 3.
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 two short lines: a single sentence summarizing the purpose and the API endpoint. It is concise, front-loaded, and contains no irrelevant information, achieving perfect efficiency.
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 read-only tool with two parameters and an output schema, the description is fairly complete. It covers what the tool does, the detail categories, and the underlying API. It lacks explicit usage guidance and sibling differentiation, but given the annotations and output schema richness, it is sufficient for most cases. A perfect score would require more explicit context.
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 schema provides minimal descriptions: app_name is just '应用名称' (application name) and response_format has an enum but no description. The description adds the URL template '/api/v1/applications/{appName}', clarifying that app_name maps to the path parameter. However, response_format is not explained, so with only 50% schema coverage the description only partially compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool views application details and enumerates the included categories (basic info, policies, environment bindings, resource statistics). It also provides the API endpoint, adding specificity. However, it does not explicitly distinguish itself from sibling tools like vela_get_app_status or vela_get_application_manifest, though the level of detail implies it is the full-detail view.
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 'use this for full details, use get_app_status for status only'. The description simply states what the tool does without any when/when-not criteria or exclusions, leaving the agent without explicit decision support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vela_get_application_manifestARead-onlyIdempotent
导出应用的 Application CR YAML 清单(GitOps 迁移 / 备份 / 审计用)。
source=latest 导出最新渲染配置;source=running 导出集群中实际运行的 CR。 基于 compare 接口的 YAML 字段实现。 对应 API:POST /api/v1/applications/{app}/compare
| Name | Required | Description | Default |
|---|---|---|---|
| env | Yes | 环境名 | |
| source | No | 导出来源:latest(最新渲染配置)或 running(集群运行态 CR) | latest |
| app_name | Yes | 应用名称 |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, and non-destructive behavior. The description adds context about the underlying compare API and the difference between latest and running states, which goes beyond what annotations provide. No contradictions found.
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 concise: two sentences plus an API reference. It front-loads the purpose and use cases, then explains source options, with no redundant or filler 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?
The tool has a rich output schema, thorough annotations, and a description covering purpose, use cases, source semantics, and API mapping. Everything needed for correct invocation is present.
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 parameters are fully described in the schema (100% coverage), and the description reinforces the meaning of 'source' with concrete semantics (latest vs running). The API reference adds extra clarity, making parameter usage well understood.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool exports the Application CR YAML manifest, using a specific verb ('导出') and resource ('Application CR YAML 清单'). It distinguishes from siblings like vela_get_application by targeting manifest export for GitOps/backup/audit use cases.
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 explicitly provides use cases (GitOps migration/backup/audit) and differentiates between source=latest and source=running. It doesn't explicitly name alternative tools, but the context is clear enough for an agent to know when to choose this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vela_get_app_statusARead-onlyIdempotent
查看应用运行状态(全部环境概览或指定环境详情)。
对应 API:GET /api/v1/applications/{app}/status GET /api/v1/applications/{app}/envs/{env}/status
| Name | Required | Description | Default |
|---|---|---|---|
| env | No | 环境名。不填返回所有环境的状态概览 | |
| app_name | Yes | 应用名称 | |
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, so the safety profile is covered. The description adds behavioral nuance by distinguishing between all-environment overview and per-environment detail, and includes the concrete API endpoints that shape expected behavior. It does not go into pagination or error modes, but the extra context is valuable beyond annotations.
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 two short sentences: the first states the purpose and scope, the second lists the API endpoints. Every word earns its place, and the key information is front-loaded. There is no redundancy or filler.
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 that an output schema exists and annotations cover safety, the description is sufficiently complete for a read-only status tool. It clearly defines the two operational modes and maps to APIs. It does not mention authentication or rate limits, but these are not critical for a simple status read. The tool is well-specified overall.
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 coverage is 67% (app_name and env have descriptions; response_format only has an enum reference). The description does not add parameter details beyond what the schema already provides, and the schema descriptions are adequate. The description's mention of '不填返回所有环境的状态概览' aligns with the schema's env description, but does not enhance 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 uses a specific verb '查看' (view) and resource '应用运行状态' (application running status), and further clarifies scope with '全部环境概览或指定环境详情' (all environments overview or specific environment details). This clearly distinguishes it from sibling list tools like vela_list_applications and vela_system_info.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by describing the two modes (overview vs specific env) but does not explicitly state when to prefer this tool over alternatives or provide exclusions. Sibling tools are not referenced, so the guidance is implicit rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vela_get_workflow_logsARead-onlyIdempotent
查看工作流执行记录中某个步骤的日志(step 必填,步骤名可先查记录详情获取)。
对应 API:GET .../workflows/{wf}/records/{record}/logs?step=
| Name | Required | Description | Default |
|---|---|---|---|
| step | Yes | 步骤名(必填,来自记录详情中的步骤列表) | |
| record | Yes | 工作流执行记录名 | |
| app_name | Yes | 应用名称 | |
| workflow_name | Yes | 工作流名 |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool as read-only, idempotent, and non-destructive. The description adds value by exposing the underlying API endpoint and noting that the step name must come from record details, which implies a dependency on another resource. No contradictions with annotations.
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 two sentences long, front-loads the purpose, and includes the corresponding API for reference. Every sentence earns its place with zero waste or redundancy.
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 an output schema present, the description need not explain return values. The tool is a straightforward read-only logs fetch, and the description covers its essential aspect (step dependency) along with the API endpoint. It is slightly terse but adequate for a tool in a well-structured context.
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 input schema has 100% coverage for all four parameters, each with descriptive text. The description supplements this by explicitly highlighting that step is required and sourced from record details, and by showing the API's query parameter context. This adds useful meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: viewing logs for a specific step in a workflow execution record. It uses a specific verb+resource+scope structure (view workflow step logs) and is clearly distinct from all sibling tools, which are list/get operations for other entities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear prerequisite: the step parameter is required and its name should be obtained from the record details first. While it does not explicitly name alternative tools, no siblings serve the same purpose, so the contextual guidance is sufficient. This is a clear usage context with a practical hint.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vela_list_addonsARead-onlyIdempotent
查看插件(addon)市场列表 / 已启用插件 / 单个插件详情与状态。
对应 API:GET /api/v1/addons[...]、GET /api/v1/enabled_addon
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | 按名称模糊过滤 | |
| registry | No | 按插件仓库过滤 | |
| addon_name | No | 插件名。填写后返回该插件详情与启用状态 | |
| enabled_only | No | 仅列出已启用的插件 | |
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, and non-destructive behavior. The description adds valuable context by mapping to specific API endpoints and clarifying the three modes of operation (list vs. enabled vs. detail/status). This goes beyond the annotations without contradicting them. However, it doesn't describe additional behavioral details like pagination, ordering, or potential large response sizes, so not a 5.
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 concise, using two sentences to convey the full scope. It's front-loaded with the main purpose and includes the relevant API endpoints as a bonus. No wordiness or redundancy.
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 list/detail tool with 5 optional parameters and an output schema, the description covers the primary modes and aligns with the parameters. It doesn't need to explain return values since an output schema exists. It could mention pagination or resource limits, but the core behavior is sufficiently described.
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 80%, so baseline is 3. The description doesn't add much beyond what the schema already explains for each parameter. The mention of '单个插件详情与状态' aligns with the addon_name parameter, but it doesn't provide new semantic insights or usage examples for query, registry, or enabled_only.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: viewing addon marketplace lists, enabled plugins, and individual addon details/status. It uses specific verbs ('查看' = view/list) and distinguishes this resource (addons) from sibling tools that handle other resources like applications, components, and environments.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool: for any addon-related query, with three distinct modes (marketplace list, enabled list, single addon detail). It doesn't explicitly name alternatives, but among the sibling tools, none cover addons, so the use case is unambiguous. Missing explicit exclusions or 'when-not-to-use' guidance, hence not a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vela_list_applicationsARead-onlyIdempotent
列出 KubeVela 应用,支持按项目/环境/交付目标/关键字过滤。
对应 API:GET /api/v1/applications
| Name | Required | Description | Default |
|---|---|---|---|
| env | No | 按环境过滤 | |
| query | No | 按名称/别名/描述模糊过滤 | |
| target_name | No | 按交付目标过滤 | |
| project_name | No | 按项目过滤 | |
| response_format | No | 输出格式:markdown 或 json | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| applications | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds the API endpoint and filter scope but reveals no further behavioral details like pagination, ordering, or result limits; this is acceptable given the annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences, front-loaded with the action and resource. It is concise and every phrase carries relevant information, including API mapping and filter capabilities.
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 read-only list operation with full annotations, an output schema, and self-describing parameters, the description is complete. It names the object, supported filters, and API endpoint, giving an agent everything needed to invoke 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 100%, so every parameter (env, query, target_name, project_name, response_format) already has a meaningful description. The tool description summarizes the filter categories but does not add new semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('列出' = list) and resource ('KubeVela 应用'), and specifies supported filter dimensions and the corresponding API endpoint. This distinguishes it from sibling tools like vela_get_application (single-get) and vela_get_app_status (status).
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 gives clear context for when to use this tool: whenever a list of applications is needed, with optional filters by project, environment, target, or keyword. It does not explicitly state exclusions or name alternatives, but the list-vs-get distinction is implicit and supported by sibling tool names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vela_list_clustersARead-onlyIdempotent
列出纳管集群;指定 cluster_name 时返回集群详情(含资源信息)。
对应 API:GET /api/v1/clusters[/{clusterName}]
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| query | No | 按名称模糊过滤(仅列表时生效) | |
| page_size | No | ||
| cluster_name | No | 集群名。填写后返回该集群详情 | |
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only and non-destructive behavior. The description adds meaningful behavioral context by explaining that specifying cluster_name changes the response to a single cluster's details, and it includes the corresponding API endpoint. It does not contradict the annotations.
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 exceptionally concise: two short sentences that front-load the main action and then provide the minimal API mapping. Every word earns its place with no redundant filler.
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?
The description adequately covers the tool's core purpose and dual-mode behavior, and an output schema exists to handle return values. However, it omits pagination semantics and the response_format option, which are relevant for an agent deciding how to invoke the tool effectively.
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 only 40%, and the description adds little parameter-level meaning beyond reinforcing cluster_name. Pagination parameters (page, page_size) and response_format are not explained in the description, leaving the agent to infer their behavior from defaults and schema structure alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists managed clusters and, when cluster_name is provided, returns detailed resource information for that cluster. It uses a specific verb plus resource and distinguishes this from sibling list tools like vela_list_applications.
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 conveys the two primary usage modes: list all clusters when no cluster_name is given, and view a specific cluster's details when it is supplied. It does not explicitly name alternatives or exclusions, but the tool's uniqueness among siblings makes the context clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vela_list_componentsARead-onlyIdempotent
查看应用的组件列表;指定 component 时返回组件详情(properties、traits、definition)。
对应 API:GET /api/v1/applications/{app}/components[/{comp}]
| Name | Required | Description | Default |
|---|---|---|---|
| env | No | 环境名(仅列表时生效) | |
| app_name | Yes | 应用名称 | |
| component | No | 组件名。填写后返回该组件详情(含 properties 与 traits) | |
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the dual behavior (list vs. detail) and the API path, but does not elaborate on formats, pagination, or error behavior. This is modest supplemental context beyond annotations, warranting a score of 3.
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 two sentences, front-loaded with the primary action (list components), and includes a succinct summary of the conditional detail mode and the API endpoint. Every word contributes, with no redundancy or excessive detail.
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 that an output schema exists (as per context signals), the description need not explain return values. It adequately covers the tool's dual purpose and provides a reference to the API. The slight gap is that it does not mention the 'env' parameter's list-only effect, but that is already in the schema. Overall sufficient for the tool's complexity.
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 high (75%+), and each parameter already has a description in the schema (e.g., 'component' notes it returns details including properties/traits). The tool description reinforces the component behavior but adds little beyond the schema. Thus the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: listing application components, and when a component is specified, returning its details (properties, traits, definition). It also gives the corresponding API endpoint, making the scope explicit and distinguishing it from sibling tools like get_application or list_applications.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool: for listing components or retrieving a specific component's details. It does not explicitly state when not to use it or name alternatives, but the conditional behavior ('指定 component 时') gives a usage pattern. No exclusion criteria are mentioned, so it fits 'clear context, no exclusions'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vela_list_definitionsARead-onlyIdempotent
查看组件/运维特征/策略/工作流步骤定义;指定 definition_name 返回参数 schema。
对应 API:GET /api/v1/definitions[/{name}]?type=
| Name | Required | Description | Default |
|---|---|---|---|
| def_type | Yes | 定义类型:component / trait / policy / workflowstep | |
| query_all | No | 是否包含隐藏定义(默认只列常用定义) | |
| definition_name | No | 定义名。填写后返回详情(含参数 schema) | |
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and idempotent behavior. The description adds context by noting that specifying definition_name returns the parameter schema and by providing the exact API endpoint, which goes beyond the basic safety profile.
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 remarkably concise: two sentences that front-load the core purpose and follow with the API reference. Every word earns its place with no redundancy.
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 read-only listing tool with an output schema and good annotations, the description covers all essential aspects: what it lists, how to get details, and the underlying API. No critical information is 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 high (75%), so the baseline is 3. The description enhances param understanding by explaining that definition_name triggers schema return and by mapping the definition types to Chinese labels, adding meaningful semantic context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: viewing component/trait/policy/workflow step definitions, with the added behavior of returning a parameter schema when a definition name is specified. This distinguishes it from sibling tools that operate on applications, components, or projects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for listing definitions and retrieving schemas via the API mapping, but does not explicitly state when to use this tool versus alternatives or mention any exclusions. Sibling tools are not referenced, so the usage context is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vela_list_deploy_recordsBRead-onlyIdempotent
查看应用在指定环境的部署记录。
对应 API:GET /api/v1/applications/{app}/envs/{env}/records
| Name | Required | Description | Default |
|---|---|---|---|
| env | Yes | 环境名 | |
| page | No | ||
| app_name | Yes | 应用名称 | |
| page_size | No | ||
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, covering most safety behavior. The description adds the specific API endpoint and environment scoping, but does not disclose pagination behavior, default page size, or how the response is structured beyond the schema. Meets baseline but adds limited value.
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 consists of two concise sentences: one for the purpose and one for the corresponding API. It is front-loaded, contains no redundant text, and every word adds value.
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?
The description provides the core function and API mapping, which is helpful. However, with 5 parameters and pagination, it could mention that results are paginated or that page_size applies. Given the presence of an output schema, return values need not be described, but the description still feels minimal for a complete context.
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 only 40% (only app_name and env have descriptions). The tool description does not elaborate on any parameters, especially page, page_size, and response_format, which are left without descriptions in the schema. It fails to compensate for the low coverage, leaving agents unclear about pagination and output format 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?
The description clearly states the tool's purpose: '查看应用在指定环境的部署记录' (view deployment records of an application in a specific environment), with an explicit API mapping. It is specific about verb and resource, but does not explicitly differentiate from sibling list tools like vela_list_workflow_records.
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. The description simply describes the function and API, offering no context for selection, exclusions, or references to other tools that might be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vela_list_envsARead-onlyIdempotent
列出环境(env)及其关联的交付目标。
对应 API:GET /api/v1/envs
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| page_size | No | ||
| project_name | No | 按项目过滤 | |
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the API endpoint and the fact that associated delivery targets are included in the response, which is useful behavioral context beyond the annotations.
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 extremely concise: two short sentences (one describing the action, one listing the API). It is front-loaded with the core purpose and contains no unnecessary 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 simple list operation with strong annotations and an output schema, the description covers the core purpose, the API mapping, and the extra detail about associated delivery targets. It does not explicitly mention pagination or project filtering, but these are documented in the schema. Overall, it is sufficiently complete for typical use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not explain any of the parameters. Schema description coverage is only 25% (only project_name has a description). Page, page_size, and response_format lack descriptions, and the tool description does not compensate for this gap. Parameter names are somewhat self-explanatory, but the coverage is too low.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists environments and their associated delivery targets, using a specific verb (list) and resource (envs). It also provides the API endpoint, which further clarifies the exact purpose and distinguishes it from sibling tools like vela_list_targets.
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 does not provide any guidance on when to use this tool versus alternatives. There is no mention of filtering, prerequisites, or exclusions. It simply states what it does without contextualizing use cases or referencing similar list tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vela_list_projectsARead-onlyIdempotent
列出平台中的项目(project),创建应用前用于确认可选项目。
对应 API:GET /api/v1/projects
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | 页码(从 0 开始) | |
| page_size | No | 分页大小 | |
| response_format | No | 输出格式:markdown 或 json | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| projects | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false, so the safety profile is clear. The description adds only the API endpoint and use case, not additional behavioral traits like pagination limits or result ordering. Since annotations carry the burden, a 3 is appropriate.
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 two short sentences, perfectly sized and front-loaded with the primary action. Every sentence adds value, including the API reference and usage context.
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 read-only list tool with pagination params and an output schema, the description is sufficient. It explains the use case and provides the API endpoint, while annotations and schema cover safety and parameters. It does not explain pagination behavior, but that is already in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%; all three parameters (page, page_size, response_format) have descriptions in the schema. The tool description itself does not add parameter-level meaning, so the baseline of 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists projects in the platform with a specific verb and resource, and adds the use case 'before creating an application to confirm available projects.' This effectively differentiates it from sibling tools that list other entities like users or applications.
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?
It provides clear context: use this tool before creating an application to confirm available projects. While it doesn't explicitly name alternatives or say when not to use it, the use-case guidance is sufficient and directly tied to the tool's purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vela_list_project_targetsARead-onlyIdempotent
列出指定项目可用的交付目标(target),部署前确认目标合法性。
对应 API:GET /api/v1/projects/{projectName}/targets
| Name | Required | Description | Default |
|---|---|---|---|
| project_name | Yes | 项目名称 | |
| response_format | No | 输出格式:markdown 或 json | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds the API endpoint and the purpose (pre-deployment validation) but no additional behavioral traits like pagination or response structure. With annotations present, this is adequate but not enriched.
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 two sentences, front-loaded with the main action, and includes the API endpoint as supplementary info. Every sentence earns its place, with no redundant or verbose text.
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 read-only list tool with annotations covering safety, an output schema present, and all parameters documented, the description is sufficient. It states purpose, usage context, and API reference. Slight deduction for not mentioning that results are specifically for the given project, though this is implied by the resource scoping.
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 coverage is 100%: both project_name and response_format have Chinese descriptions in the schema. The description adds no extra parameter semantics beyond restating the tool's purpose. Baseline 3 applies because the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists available delivery targets for a specified project, using a specific verb ('列出') and resource ('项目可用的交付目标'). It differentiates from sibling tool vela_list_targets by explicitly scoping to a project, and mentions the use case (pre-deployment validation).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool: '部署前确认目标合法性' (confirm target legality before deployment). However, it does not explicitly mention alternatives or exclusions, such as comparing with vela_list_targets which lists targets globally without project scope.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vela_list_project_usersARead-onlyIdempotent
列出指定项目的成员及其角色,用于排查权限(403)类问题。
对应 API:GET /api/v1/projects/{projectName}/users
| Name | Required | Description | Default |
|---|---|---|---|
| project_name | Yes | 项目名称 | |
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds the API endpoint and troubleshooting purpose, but no additional behavioral traits like pagination or authentication requirements, so it does not go beyond the annotation baseline.
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?
Two concise sentences: the first states purpose and use case, the second gives the API path. No redundant information, well 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?
For a simple read-only list tool with output schema and strong annotations, the description covers the core purpose, use case, and API reference. Minor gap: response_format is not explained, but the overall context is sufficient for an agent to select and invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50% with project_name described but response_format not. The description only mentions the project name in passing and does not explain the response_format parameter or its possible values, so it compensates poorly for the low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool lists members of a specified project and their roles, with a specific verb and resource. It also distinguishes itself from sibling tools like vela_list_projects and vela_list_project_targets by focusing on project users.
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?
Explicitly states the tool is for troubleshooting permission (403) errors, giving clear context for when to use it. It does not mention when not to use it or alternative tools, but the use case is sufficiently clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vela_list_revisionsARead-onlyIdempotent
查看应用版本(revision)历史,可用于回滚前确认目标版本。
对应 API:GET /api/v1/applications/{app}/revisions
| Name | Required | Description | Default |
|---|---|---|---|
| env | No | 按环境过滤 | |
| page | No | 页码(从 0 开始) | |
| status | No | 按状态过滤,如 complete/failed/terminated | |
| app_name | Yes | 应用名称 | |
| page_size | No | 分页大小 | |
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. However, the description adds only the use case and API endpoint, offering no additional behavioral traits such as result ordering, pagination behavior, or response contents.
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 consists of two short sentences that are front-loaded with the primary purpose. Every sentence contributes useful information (purpose, use case, API mapping) with no redundancy.
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?
The tool is a simple read-only list operation with rich schema (83% coverage), an output schema, and safety annotations. The description adequately covers the core use case and API mapping; no critical missing information is evident for an agent to select and invoke 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 83% (above 80%), so the baseline is 3. The description does not explain parameters, but the schema already documents app_name, env, status, page, page_size, and response_format is a self-explanatory enum.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function with a specific verb ('查看' - view) and resource ('应用版本(revision)历史'). It also adds a use case ('可用于回滚前确认目标版本') and distinguishes from sibling tools like vela_list_deploy_records by focusing on revision history.
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 explicitly provides a usage context: '可用于回滚前确认目标版本' (can be used to confirm target version before rollback). This gives clear guidance on when to use the tool, though it does not mention exclusions or alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vela_list_targetsBRead-onlyIdempotent
列出交付目标(target,即集群+命名空间组合)。
对应 API:GET /api/v1/targets
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| page_size | No | ||
| project_name | No | 按项目过滤 | |
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds the API method (GET) and clarifies the target definition, but it does not disclose pagination behavior, response format nuances, or any other operational details. Since annotations cover the key behavioral traits, a score of 3 is appropriate.
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 extremely concise—two sentences that state exactly what the tool does and the corresponding API. No redundant words, no filler. It earns a top score for efficiency and front-loading.
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 that this is a straightforward listing tool with an output schema and strong annotations, the description is minimally adequate. It defines the resource and API, and the output schema covers return structure. However, it lacks usage guidance and parameter explanation, and does not differentiate from sibling tools, leaving some gaps for a fully contextual understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not mention parameters at all. Schema coverage is only 25% (only project_name has a description), so the description should compensate by explaining parameter meanings, but it does not. The agent must rely solely on the schema's sparse descriptions and defaults, leaving page, page_size, and response_format ambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: listing delivery targets, and defines 'target' as a cluster+namespace combination. It also gives the corresponding API endpoint, adding specificity. However, it does not distinguish itself from the sibling tool 'vela_list_project_targets', so it falls 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?
No guidance is provided on when to use this tool versus alternatives. The description does not mention any prerequisites, exclusions, or why one would prefer this over 'vela_list_project_targets' or other list tools. This leaves the agent without decision support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vela_list_triggersARead-onlyIdempotent
列出应用的 webhook 触发器(含 token,可拼接触发地址)。
对应 API:GET /api/v1/applications/{app}/triggers
| Name | Required | Description | Default |
|---|---|---|---|
| app_name | Yes | 应用名称 | |
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds useful context beyond annotations: it discloses that the response includes tokens and that the tool can be used to construct trigger addresses, plus the corresponding API endpoint.
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 extremely concise, consisting of two short sentences. It is front-loaded with the primary purpose and includes the API endpoint as a secondary note. Every word earns its place with no fluff or redundancy.
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 list tool with rich annotations and an output schema, the description is mostly complete. It covers the core function and a key output detail. However, it leaves the response_format parameter unexplained, which is a minor gap given the schema also lacks a description for 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 50%: only app_name is described, while response_format is not. The description does not compensate for the undocumented response_format parameter, nor does it add any parameter-level meaning beyond what the schema provides. It does not explain how the parameters affect the call or output.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists an application's webhook triggers and even mentions that the response includes tokens for constructing trigger URLs. This specific verb+resource clearly distinguishes it from sibling list tools like vela_list_components or vela_list_revisions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, nor does it mention exclusions or prerequisites. It only states what it does and the API endpoint, leaving the agent to infer usage context 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.
vela_list_workflow_recordsARead-onlyIdempotent
三合一查询:不填 workflow_name 列出工作流;填 workflow_name 列出执行记录; 再填 record 返回该次执行详情(含各步骤状态,可据此取日志)。
对应 API:GET /api/v1/applications/{app}/workflows[/{wf}/records[/{record}]]
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| record | No | 记录名。填写后返回该次执行的详情(含步骤状态) | |
| app_name | Yes | 应用名称 | |
| page_size | No | ||
| workflow_name | No | 工作流名(形如 workflow-<env>)。不填则返回该应用的工作流列表 | |
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
注解已声明只读、幂等、非破坏性,描述额外补充了条件式返回行为(工作流列表/记录/详情)及“含各步骤状态,可据此取日志”的用途,增强了行为透明度。虽未提及分页或认证,但在注解覆盖安全特性的前提下,描述已提供重要上下文。
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?
描述极简,采用分号分隔条件逻辑,并附上对应 API 的 URL 模板,信息密度高且结构清晰,没有冗余内容。
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?
对于这种条件组合查询工具,描述完整覆盖了三种调用层级和返回内容(含步骤状态),并关联日志获取用途。存在输出 schema 时无需赘述返回格式,描述足以帮助 agent 正确选择工具并构造参数。
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 覆盖率为 50%,描述对关键参数 workflow_name 和 record 的条件语义进行了补充,解释了不填和填写时的行为差异。这超出了 schema 本身的信息,弥补了覆盖率不足。但 page、page_size、response_format 未在描述中说明,因此未给满分。
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?
描述以“三合一查询”开篇,明确说明工具的核心功能:根据是否填写 workflow_name 和 record 分别列出工作流、执行记录或执行详情。具体动词“列出”和资源(工作流/记录)清晰,且与兄弟工具如 vela_get_workflow_logs 形成区分。
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?
描述提供了明确的按条件使用场景:不填 workflow_name 列出工作流,填 workflow_name 列出执行记录,再填 record 获取详情。虽然没有显式给出“何时不使用”或替代工具,但上下文清晰,足以指导 agent 根据参数选择用途。
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vela_system_infoARead-onlyIdempotent
查看 VelaUX 平台系统信息:KubeVela 版本、登录方式、集群/应用统计、已启用插件等。
适合作为接入新环境后的连通性与版本自检。 对应 API:GET /api/v1/system_info
| Name | Required | Description | Default |
|---|---|---|---|
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safe read-only nature is known. The description adds the exact API endpoint (GET /api/v1/system_info) and a clear description of the returned data categories, reinforcing the read-only behavior without contradiction.
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?
Three concise lines: resource and content, recommended use case, and API endpoint. No filler, no redundant restatement of the name, and important information 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?
Given low complexity, robust annotations, and an output schema, the description is complete. It states the resource, the exact API, the kind of information returned, and a practical usage scenario. No critical behavioral or prerequisite details are missing for a read-only system info tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single optional parameter response_format is fully described by the input schema with an enum of markdown/json and a default of markdown. The description does not mention it, but since the schema provides complete semantics, no additional compensation is required. The schema coverage is 0%, but the parameter is self-explanatory.
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?
Description states a specific verb '查看' (view) and a clear resource 'VelaUX 平台系统信息', enumerating contents like KubeVela version, login method, cluster/app stats, and enabled plugins. This clearly distinguishes it from sibling list/get tools that target individual entities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides an explicit use case: '适合作为接入新环境后的连通性与版本自检' (suitable as a connectivity/version self-check after onboarding a new environment). It does not mention alternatives or exclusions, but the context is specific enough for an agent to identify when this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vela_velaql_queryARead-onlyIdempotent
执行 VelaQL 查询(Pod 列表、容器日志、资源拓扑等运行时数据)。
对应 API:GET /api/v1/query?velaql= 使用 view 枚举 + 结构化 params (见各 view 的 ParamSchema 描述), 由服务器拼装 velaql 字符串。错误以结构化文本返回, LLM 可直接 parse 修复后重试。
| Name | Required | Description | Default |
|---|---|---|---|
| view | Yes | 视图。必须是受支持 view 之一。 | |
| params | Yes | 视图参数 (JSON 对象)。键名见 view 描述: service-endpoints-view / application-resource-tree-view / service-applied-resources-view / component-pod-view -> {appNs, appName}; component-service-view -> {appNs, appName, [name, cluster, clusterNs]}; service-view -> {appNs, appName, [cluster, clusterNs]}; pod-view -> {cluster, namespace, name}; application-resource-detail-view -> {cluster, namespace, name, kind, apiVersion}; collect-logs -> {cluster, namespace, pod, container, [previous, timestamps, tailLines]} | |
| cluster | No | 多集群覆盖; 应用层 view 忽略此参数 (应用通过 target 决定集群), pod-view / collect-logs 此参数为必填 (在 params 之外, 此处供未来 cluster 路由优化) | |
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, covering the safety profile. The description adds meaningful behavioral detail: '错误以结构化文本返回, LLM 可直接 parse 修复后重试' and that the server assembles the velaql string, which informs error recovery and invocation expectations. No contradiction with annotations.
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 two sentences with a clear lead action, API endpoint, usage pattern, and error-handling note. Every sentence adds distinct value with no filler or repetition.
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 a view enum and nested params, the description plus rich schema/annotations covers the essential context: what it does, how it works, and error recovery. It doesn't enumerate all views, but the schema does, so the description is sufficient for selection and 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?
The tool description itself only points to 'ParamSchema' descriptions and does not explain parameters, but the input schema provides detailed per-view key mappings (75% coverage). The schema carries the semantic burden, so the description adds little beyond the pointer, keeping this at the baseline 3.
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 opens with '执行 VelaQL 查询' and lists concrete runtime data examples (Pod list, container logs, resource topology), clearly defining the tool's function. It also cites the exact API endpoint (GET /api/v1/query?velaql=), which helps distinguish it from sibling resource-listing tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the query mechanism (view enum + structured params, server-assembled VelaQL) but does not explicitly state when to prefer this tool over sibling list/get tools, nor does it provide exclusions. Usage is implied rather than explicit, so guidance is present but not fully fleshed out.
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.
28 tool updates
v0.5.0- Changed
vela_compare_application8 fields changed- removed
Input schema / $defs / CompareApplicationInputRemoved value: -{ - "additionalProperties": false, - "description": "对比应用配置差异的输入参数", - "properties": { - "app_name": { - "description": "应用名称", - "minLength": 1, - "title": "App Name", - "type": "string" - }, - "compare_with": { - "default": "running", - "description": "revision 的对比对象:running(集群运行态)或 latest(最新配置)", - "pattern": "^(running|latest)$", - "title": "Compare With", - "type": "string" - }, - "env": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "环境名。不传 revision 时必填:对比最新配置与该环境集群运行态", - "title": "Env" - }, - "response_format": { - "$ref": "#/$defs/ResponseFormat", - "default": "markdown" - }, - "revision": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "版本号。传入后以该版本为基准做对比", - "title": "Revision" - } - }, - "required": [ - "app_name" - ], - "title": "CompareApplicationInput", - "type": "object" -} - added
Input schema / properties / app_nameAdded value: +{ + "description": "应用名称", + "minLength": 1, + "title": "App Name", + "type": "string" +} - added
Input schema / properties / compare_withAdded value: +{ + "default": "running", + "description": "revision 的对比对象:running(集群运行态)或 latest(最新配置)", + "pattern": "^(running|latest)$", + "title": "Compare With", + "type": "string" +} - added
Input schema / properties / envAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "环境名。不传 revision 时必填:对比最新配置与该环境集群运行态", + "title": "Env" +} - removed
Input schema / properties / paramsRemoved value: -{ - "$ref": "#/$defs/CompareApplicationInput" -} - added
Input schema / properties / response_formatAdded value: +{ + "$ref": "#/$defs/ResponseFormat", + "default": "markdown" +} - added
Input schema / properties / revisionAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "版本号。传入后以该版本为基准做对比", + "title": "Revision" +} - changed
Input schema / requiredPrevious value: -[ - "params" -]New value: +[ + "app_name" +]
- Removed
vela_create_application - Removed
vela_create_trigger - Removed
vela_deploy_application - Removed
vela_dry_run_application - Changed
vela_get_app_status12 fields changed- removed
Input schema / $defs / AppStatusInputRemoved value: -{ - "additionalProperties": false, - "description": "查询应用状态的输入参数", - "properties": { - "app_name": { - "description": "应用名称", - "minLength": 1, - "title": "App Name", - "type": "string" - }, - "env": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "环境名。不填返回所有环境的状态概览", - "title": "Env" - }, - "response_format": { - "$ref": "#/$defs/ResponseFormat", - "default": "markdown" - } - }, - "required": [ - "app_name" - ], - "title": "AppStatusInput", - "type": "object" -} - added
Input schema / properties / app_nameAdded value: +{ + "description": "应用名称", + "minLength": 1, + "title": "App Name", + "type": "string" +} - added
Input schema / properties / envAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "环境名。不填返回所有环境的状态概览", + "title": "Env" +} - removed
Input schema / properties / paramsRemoved value: -{ - "$ref": "#/$defs/AppStatusInput" -} - added
Input schema / properties / response_formatAdded value: +{ + "$ref": "#/$defs/ResponseFormat", + "default": "markdown" +} - changed
Input schema / requiredPrevious value: -[ - "params" -]New value: +[ + "app_name" +] - added
Output schema / additionalPropertiesAdded value: +true - added
Output schema / descriptionAdded value: +"vela_get_app_status 的结构化输出(status 可为列表或字典)" - removed
Output schema / properties / resultRemoved value: -{ - "title": "Result", - "type": "string" -} - added
Output schema / properties / statusAdded value: +{ + "anyOf": [ + {}, + { + "type": "null" + } + ], + "default": null, + "title": "Status" +} - removed
Output schema / requiredRemoved value: -[ - "result" -] - changed
Output schema / titlePrevious value: -"vela_get_app_statusOutput"New value: +"GetAppStatusOutput"
- Changed
vela_get_application18 fields changed- removed
Input schema / $defs / AppNameInputRemoved value: -{ - "additionalProperties": false, - "description": "仅需应用名的输入参数", - "properties": { - "app_name": { - "description": "应用名称", - "maxLength": 64, - "minLength": 1, - "title": "App Name", - "type": "string" - }, - "response_format": { - "$ref": "#/$defs/ResponseFormat", - "default": "markdown" - } - }, - "required": [ - "app_name" - ], - "title": "AppNameInput", - "type": "object" -} - added
Input schema / properties / app_nameAdded value: +{ + "description": "应用名称", + "maxLength": 64, + "minLength": 1, + "title": "App Name", + "type": "string" +} - removed
Input schema / properties / paramsRemoved value: -{ - "$ref": "#/$defs/AppNameInput" -} - added
Input schema / properties / response_formatAdded value: +{ + "$ref": "#/$defs/ResponseFormat", + "default": "markdown" +} - changed
Input schema / requiredPrevious value: -[ - "params" -]New value: +[ + "app_name" +] - added
Output schema / additionalPropertiesAdded value: +true - added
Output schema / descriptionAdded value: +"vela_get_application 的结构化输出(应用详情,字段透传 API 响应)" - added
Output schema / properties / aliasAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Alias" +} - added
Output schema / properties / annotationsAdded value: +{ + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Annotations" +} - added
Output schema / properties / descriptionAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Description" +} - added
Output schema / properties / iconAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Icon" +} - added
Output schema / properties / labelsAdded value: +{ + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Labels" +} - added
Output schema / properties / nameAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Name" +} - added
Output schema / properties / namespaceAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Namespace" +} - added
Output schema / properties / projectAdded value: +{ + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Project" +} - removed
Output schema / properties / resultRemoved value: -{ - "title": "Result", - "type": "string" -} - removed
Output schema / requiredRemoved value: -[ - "result" -] - changed
Output schema / titlePrevious value: -"vela_get_applicationOutput"New value: +"GetApplicationOutput"
- Changed
vela_get_application_manifest6 fields changed- removed
Input schema / $defsRemoved value: -{ - "GetManifestInput": { - "additionalProperties": false, - "description": "导出应用 YAML 清单的输入参数", - "properties": { - "app_name": { - "description": "应用名称", - "minLength": 1, - "title": "App Name", - "type": "string" - }, - "env": { - "description": "环境名", - "minLength": 1, - "title": "Env", - "type": "string" - }, - "source": { - "default": "latest", - "description": "导出来源:latest(最新渲染配置)或 running(集群运行态 CR)", - "pattern": "^(latest|running)$", - "title": "Source", - "type": "string" - } - }, - "required": [ - "app_name", - "env" - ], - "title": "GetManifestInput", - "type": "object" - } -} - added
Input schema / properties / app_nameAdded value: +{ + "description": "应用名称", + "minLength": 1, + "title": "App Name", + "type": "string" +} - added
Input schema / properties / envAdded value: +{ + "description": "环境名", + "minLength": 1, + "title": "Env", + "type": "string" +} - removed
Input schema / properties / paramsRemoved value: -{ - "$ref": "#/$defs/GetManifestInput" -} - added
Input schema / properties / sourceAdded value: +{ + "default": "latest", + "description": "导出来源:latest(最新渲染配置)或 running(集群运行态 CR)", + "pattern": "^(latest|running)$", + "title": "Source", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "params" -]New value: +[ + "app_name", + "env" +]
- Changed
vela_get_workflow_logs7 fields changed- removed
Input schema / $defsRemoved value: -{ - "GetWorkflowLogsInput": { - "additionalProperties": false, - "description": "查询工作流步骤日志的输入参数", - "properties": { - "app_name": { - "description": "应用名称", - "minLength": 1, - "title": "App Name", - "type": "string" - }, - "record": { - "description": "工作流执行记录名", - "minLength": 1, - "title": "Record", - "type": "string" - }, - "step": { - "description": "步骤名(必填,来自记录详情中的步骤列表)", - "title": "Step", - "type": "string" - }, - "workflow_name": { - "description": "工作流名", - "minLength": 1, - "title": "Workflow Name", - "type": "string" - } - }, - "required": [ - "app_name", - "workflow_name", - "record", - "step" - ], - "title": "GetWorkflowLogsInput", - "type": "object" - } -} - added
Input schema / properties / app_nameAdded value: +{ + "description": "应用名称", + "minLength": 1, + "title": "App Name", + "type": "string" +} - removed
Input schema / properties / paramsRemoved value: -{ - "$ref": "#/$defs/GetWorkflowLogsInput" -} - added
Input schema / properties / recordAdded value: +{ + "description": "工作流执行记录名", + "minLength": 1, + "title": "Record", + "type": "string" +} - added
Input schema / properties / stepAdded value: +{ + "description": "步骤名(必填,来自记录详情中的步骤列表)", + "title": "Step", + "type": "string" +} - added
Input schema / properties / workflow_nameAdded value: +{ + "description": "工作流名", + "minLength": 1, + "title": "Workflow Name", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "params" -]New value: +[ + "app_name", + "workflow_name", + "record", + "step" +]
- Changed
vela_list_addons8 fields changed- removed
Input schema / $defs / ListAddonsInputRemoved value: -{ - "additionalProperties": false, - "description": "查询插件的输入参数", - "properties": { - "addon_name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "插件名。填写后返回该插件详情与启用状态", - "title": "Addon Name" - }, - "enabled_only": { - "default": false, - "description": "仅列出已启用的插件", - "title": "Enabled Only", - "type": "boolean" - }, - "query": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "按名称模糊过滤", - "title": "Query" - }, - "registry": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "按插件仓库过滤", - "title": "Registry" - }, - "response_format": { - "$ref": "#/$defs/ResponseFormat", - "default": "markdown" - } - }, - "title": "ListAddonsInput", - "type": "object" -} - added
Input schema / properties / addon_nameAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "插件名。填写后返回该插件详情与启用状态", + "title": "Addon Name" +} - added
Input schema / properties / enabled_onlyAdded value: +{ + "default": false, + "description": "仅列出已启用的插件", + "title": "Enabled Only", + "type": "boolean" +} - removed
Input schema / properties / paramsRemoved value: -{ - "$ref": "#/$defs/ListAddonsInput" -} - added
Input schema / properties / queryAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "按名称模糊过滤", + "title": "Query" +} - added
Input schema / properties / registryAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "按插件仓库过滤", + "title": "Registry" +} - added
Input schema / properties / response_formatAdded value: +{ + "$ref": "#/$defs/ResponseFormat", + "default": "markdown" +} - removed
Input schema / requiredRemoved value: -[ - "params" -]
- Changed
vela_list_applications14 fields changed- removed
Input schema / $defs / ListApplicationsInputRemoved value: -{ - "additionalProperties": false, - "description": "列出应用的输入参数", - "properties": { - "env": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "按环境过滤", - "title": "Env" - }, - "project_name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "按项目过滤", - "title": "Project Name" - }, - "query": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "按名称/别名/描述模糊过滤", - "title": "Query" - }, - "response_format": { - "$ref": "#/$defs/ResponseFormat", - "default": "markdown", - "description": "输出格式:markdown 或 json" - }, - "target_name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "按交付目标过滤", - "title": "Target Name" - } - }, - "title": "ListApplicationsInput", - "type": "object" -} - added
Input schema / properties / envAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "按环境过滤", + "title": "Env" +} - removed
Input schema / properties / paramsRemoved value: -{ - "$ref": "#/$defs/ListApplicationsInput" -} - added
Input schema / properties / project_nameAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "按项目过滤", + "title": "Project Name" +} - added
Input schema / properties / queryAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "按名称/别名/描述模糊过滤", + "title": "Query" +} - added
Input schema / properties / response_formatAdded value: +{ + "$ref": "#/$defs/ResponseFormat", + "default": "markdown", + "description": "输出格式:markdown 或 json" +} - added
Input schema / properties / target_nameAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "按交付目标过滤", + "title": "Target Name" +} - removed
Input schema / requiredRemoved value: -[ - "params" -] - added
Output schema / additionalPropertiesAdded value: +true - added
Output schema / descriptionAdded value: +"vela_list_applications 的结构化输出" - added
Output schema / properties / applicationsAdded value: +{ + "anyOf": [ + { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Applications" +} - removed
Output schema / properties / resultRemoved value: -{ - "title": "Result", - "type": "string" -} - removed
Output schema / requiredRemoved value: -[ - "result" -] - changed
Output schema / titlePrevious value: -"vela_list_applicationsOutput"New value: +"ListApplicationsOutput"
- Changed
vela_list_clusters8 fields changed- removed
Input schema / $defs / ListClustersInputRemoved value: -{ - "additionalProperties": false, - "description": "列出集群的输入参数", - "properties": { - "cluster_name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "集群名。填写后返回该集群详情", - "title": "Cluster Name" - }, - "page": { - "default": 0, - "minimum": 0, - "title": "Page", - "type": "integer" - }, - "page_size": { - "default": 20, - "maximum": 100, - "minimum": 1, - "title": "Page Size", - "type": "integer" - }, - "query": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "按名称模糊过滤(仅列表时生效)", - "title": "Query" - }, - "response_format": { - "$ref": "#/$defs/ResponseFormat", - "default": "markdown" - } - }, - "title": "ListClustersInput", - "type": "object" -} - added
Input schema / properties / cluster_nameAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "集群名。填写后返回该集群详情", + "title": "Cluster Name" +} - added
Input schema / properties / pageAdded value: +{ + "default": 0, + "minimum": 0, + "title": "Page", + "type": "integer" +} - added
Input schema / properties / page_sizeAdded value: +{ + "default": 20, + "maximum": 100, + "minimum": 1, + "title": "Page Size", + "type": "integer" +} - removed
Input schema / properties / paramsRemoved value: -{ - "$ref": "#/$defs/ListClustersInput" -} - added
Input schema / properties / queryAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "按名称模糊过滤(仅列表时生效)", + "title": "Query" +} - added
Input schema / properties / response_formatAdded value: +{ + "$ref": "#/$defs/ResponseFormat", + "default": "markdown" +} - removed
Input schema / requiredRemoved value: -[ - "params" -]
- Changed
vela_list_components7 fields changed- removed
Input schema / $defs / ListComponentsInputRemoved value: -{ - "additionalProperties": false, - "description": "查询组件的输入参数", - "properties": { - "app_name": { - "description": "应用名称", - "minLength": 1, - "title": "App Name", - "type": "string" - }, - "component": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "组件名。填写后返回该组件详情(含 properties 与 traits)", - "title": "Component" - }, - "env": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "环境名(仅列表时生效)", - "title": "Env" - }, - "response_format": { - "$ref": "#/$defs/ResponseFormat", - "default": "markdown" - } - }, - "required": [ - "app_name" - ], - "title": "ListComponentsInput", - "type": "object" -} - added
Input schema / properties / app_nameAdded value: +{ + "description": "应用名称", + "minLength": 1, + "title": "App Name", + "type": "string" +} - added
Input schema / properties / componentAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "组件名。填写后返回该组件详情(含 properties 与 traits)", + "title": "Component" +} - added
Input schema / properties / envAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "环境名(仅列表时生效)", + "title": "Env" +} - removed
Input schema / properties / paramsRemoved value: -{ - "$ref": "#/$defs/ListComponentsInput" -} - added
Input schema / properties / response_formatAdded value: +{ + "$ref": "#/$defs/ResponseFormat", + "default": "markdown" +} - changed
Input schema / requiredPrevious value: -[ - "params" -]New value: +[ + "app_name" +]
- Changed
vela_list_definitions7 fields changed- removed
Input schema / $defs / ListDefinitionsInputRemoved value: -{ - "additionalProperties": false, - "description": "查询 X-Definition 的输入参数", - "properties": { - "def_type": { - "$ref": "#/$defs/DefinitionType", - "description": "定义类型:component / trait / policy / workflowstep" - }, - "definition_name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "定义名。填写后返回详情(含参数 schema)", - "title": "Definition Name" - }, - "query_all": { - "default": false, - "description": "是否包含隐藏定义(默认只列常用定义)", - "title": "Query All", - "type": "boolean" - }, - "response_format": { - "$ref": "#/$defs/ResponseFormat", - "default": "markdown" - } - }, - "required": [ - "def_type" - ], - "title": "ListDefinitionsInput", - "type": "object" -} - added
Input schema / properties / def_typeAdded value: +{ + "$ref": "#/$defs/DefinitionType", + "description": "定义类型:component / trait / policy / workflowstep" +} - added
Input schema / properties / definition_nameAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "定义名。填写后返回详情(含参数 schema)", + "title": "Definition Name" +} - removed
Input schema / properties / paramsRemoved value: -{ - "$ref": "#/$defs/ListDefinitionsInput" -} - added
Input schema / properties / query_allAdded value: +{ + "default": false, + "description": "是否包含隐藏定义(默认只列常用定义)", + "title": "Query All", + "type": "boolean" +} - added
Input schema / properties / response_formatAdded value: +{ + "$ref": "#/$defs/ResponseFormat", + "default": "markdown" +} - changed
Input schema / requiredPrevious value: -[ - "params" -]New value: +[ + "def_type" +]
- Changed
vela_list_deploy_records8 fields changed- removed
Input schema / $defs / ListDeployRecordsInputRemoved value: -{ - "additionalProperties": false, - "description": "查询环境部署记录的输入参数", - "properties": { - "app_name": { - "description": "应用名称", - "minLength": 1, - "title": "App Name", - "type": "string" - }, - "env": { - "description": "环境名", - "minLength": 1, - "title": "Env", - "type": "string" - }, - "page": { - "default": 0, - "minimum": 0, - "title": "Page", - "type": "integer" - }, - "page_size": { - "default": 20, - "maximum": 100, - "minimum": 1, - "title": "Page Size", - "type": "integer" - }, - "response_format": { - "$ref": "#/$defs/ResponseFormat", - "default": "markdown" - } - }, - "required": [ - "app_name", - "env" - ], - "title": "ListDeployRecordsInput", - "type": "object" -} - added
Input schema / properties / app_nameAdded value: +{ + "description": "应用名称", + "minLength": 1, + "title": "App Name", + "type": "string" +} - added
Input schema / properties / envAdded value: +{ + "description": "环境名", + "minLength": 1, + "title": "Env", + "type": "string" +} - added
Input schema / properties / pageAdded value: +{ + "default": 0, + "minimum": 0, + "title": "Page", + "type": "integer" +} - added
Input schema / properties / page_sizeAdded value: +{ + "default": 20, + "maximum": 100, + "minimum": 1, + "title": "Page Size", + "type": "integer" +} - removed
Input schema / properties / paramsRemoved value: -{ - "$ref": "#/$defs/ListDeployRecordsInput" -} - added
Input schema / properties / response_formatAdded value: +{ + "$ref": "#/$defs/ResponseFormat", + "default": "markdown" +} - changed
Input schema / requiredPrevious value: -[ - "params" -]New value: +[ + "app_name", + "env" +]
- Changed
vela_list_envs7 fields changed- removed
Input schema / $defs / ListEnvsInputRemoved value: -{ - "additionalProperties": false, - "description": "列出环境的输入参数", - "properties": { - "page": { - "default": 0, - "minimum": 0, - "title": "Page", - "type": "integer" - }, - "page_size": { - "default": 20, - "maximum": 100, - "minimum": 1, - "title": "Page Size", - "type": "integer" - }, - "project_name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "按项目过滤", - "title": "Project Name" - }, - "response_format": { - "$ref": "#/$defs/ResponseFormat", - "default": "markdown" - } - }, - "title": "ListEnvsInput", - "type": "object" -} - added
Input schema / properties / pageAdded value: +{ + "default": 0, + "minimum": 0, + "title": "Page", + "type": "integer" +} - added
Input schema / properties / page_sizeAdded value: +{ + "default": 20, + "maximum": 100, + "minimum": 1, + "title": "Page Size", + "type": "integer" +} - removed
Input schema / properties / paramsRemoved value: -{ - "$ref": "#/$defs/ListEnvsInput" -} - added
Input schema / properties / project_nameAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "按项目过滤", + "title": "Project Name" +} - added
Input schema / properties / response_formatAdded value: +{ + "$ref": "#/$defs/ResponseFormat", + "default": "markdown" +} - removed
Input schema / requiredRemoved value: -[ - "params" -]
- Changed
vela_list_project_targets5 fields changed- removed
Input schema / $defs / ListProjectTargetsInputRemoved value: -{ - "additionalProperties": false, - "description": "列出项目交付目标的输入参数", - "properties": { - "project_name": { - "description": "项目名称", - "minLength": 1, - "title": "Project Name", - "type": "string" - }, - "response_format": { - "$ref": "#/$defs/ResponseFormat", - "default": "markdown" - } - }, - "required": [ - "project_name" - ], - "title": "ListProjectTargetsInput", - "type": "object" -} - removed
Input schema / properties / paramsRemoved value: -{ - "$ref": "#/$defs/ListProjectTargetsInput" -} - added
Input schema / properties / project_nameAdded value: +{ + "description": "项目名称", + "minLength": 1, + "title": "Project Name", + "type": "string" +} - added
Input schema / properties / response_formatAdded value: +{ + "$ref": "#/$defs/ResponseFormat", + "default": "markdown", + "description": "输出格式:markdown 或 json" +} - changed
Input schema / requiredPrevious value: -[ - "params" -]New value: +[ + "project_name" +]
- Changed
vela_list_project_users5 fields changed- removed
Input schema / $defs / ListProjectUsersInputRemoved value: -{ - "additionalProperties": false, - "description": "列出项目成员的输入参数", - "properties": { - "project_name": { - "description": "项目名称", - "minLength": 1, - "title": "Project Name", - "type": "string" - }, - "response_format": { - "$ref": "#/$defs/ResponseFormat", - "default": "markdown" - } - }, - "required": [ - "project_name" - ], - "title": "ListProjectUsersInput", - "type": "object" -} - removed
Input schema / properties / paramsRemoved value: -{ - "$ref": "#/$defs/ListProjectUsersInput" -} - added
Input schema / properties / project_nameAdded value: +{ + "description": "项目名称", + "minLength": 1, + "title": "Project Name", + "type": "string" +} - added
Input schema / properties / response_formatAdded value: +{ + "$ref": "#/$defs/ResponseFormat", + "default": "markdown" +} - changed
Input schema / requiredPrevious value: -[ - "params" -]New value: +[ + "project_name" +]
- Changed
vela_list_projects12 fields changed- removed
Input schema / $defs / ListProjectsInputRemoved value: -{ - "additionalProperties": false, - "description": "列出项目的输入参数", - "properties": { - "page": { - "default": 0, - "minimum": 0, - "title": "Page", - "type": "integer" - }, - "page_size": { - "default": 20, - "maximum": 100, - "minimum": 1, - "title": "Page Size", - "type": "integer" - }, - "response_format": { - "$ref": "#/$defs/ResponseFormat", - "default": "markdown" - } - }, - "title": "ListProjectsInput", - "type": "object" -} - added
Input schema / properties / pageAdded value: +{ + "default": 0, + "description": "页码(从 0 开始)", + "minimum": 0, + "title": "Page", + "type": "integer" +} - added
Input schema / properties / page_sizeAdded value: +{ + "default": 20, + "description": "分页大小", + "maximum": 100, + "minimum": 1, + "title": "Page Size", + "type": "integer" +} - removed
Input schema / properties / paramsRemoved value: -{ - "$ref": "#/$defs/ListProjectsInput" -} - added
Input schema / properties / response_formatAdded value: +{ + "$ref": "#/$defs/ResponseFormat", + "default": "markdown", + "description": "输出格式:markdown 或 json" +} - removed
Input schema / requiredRemoved value: -[ - "params" -] - added
Output schema / additionalPropertiesAdded value: +true - added
Output schema / descriptionAdded value: +"vela_list_projects 的结构化输出" - added
Output schema / properties / projectsAdded value: +{ + "anyOf": [ + { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Projects" +} - removed
Output schema / properties / resultRemoved value: -{ - "title": "Result", - "type": "string" -} - removed
Output schema / requiredRemoved value: -[ - "result" -] - changed
Output schema / titlePrevious value: -"vela_list_projectsOutput"New value: +"ListProjectsOutput"
- Changed
vela_list_revisions9 fields changed- removed
Input schema / $defs / ListRevisionsInputRemoved value: -{ - "additionalProperties": false, - "description": "查询应用版本历史的输入参数", - "properties": { - "app_name": { - "description": "应用名称", - "minLength": 1, - "title": "App Name", - "type": "string" - }, - "env": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "按环境过滤", - "title": "Env" - }, - "page": { - "default": 0, - "description": "页码(从 0 开始)", - "minimum": 0, - "title": "Page", - "type": "integer" - }, - "page_size": { - "default": 20, - "description": "分页大小", - "maximum": 100, - "minimum": 1, - "title": "Page Size", - "type": "integer" - }, - "response_format": { - "$ref": "#/$defs/ResponseFormat", - "default": "markdown" - }, - "status": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "按状态过滤,如 complete/failed/terminated", - "title": "Status" - } - }, - "required": [ - "app_name" - ], - "title": "ListRevisionsInput", - "type": "object" -} - added
Input schema / properties / app_nameAdded value: +{ + "description": "应用名称", + "minLength": 1, + "title": "App Name", + "type": "string" +} - added
Input schema / properties / envAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "按环境过滤", + "title": "Env" +} - added
Input schema / properties / pageAdded value: +{ + "default": 0, + "description": "页码(从 0 开始)", + "minimum": 0, + "title": "Page", + "type": "integer" +} - added
Input schema / properties / page_sizeAdded value: +{ + "default": 20, + "description": "分页大小", + "maximum": 100, + "minimum": 1, + "title": "Page Size", + "type": "integer" +} - removed
Input schema / properties / paramsRemoved value: -{ - "$ref": "#/$defs/ListRevisionsInput" -} - added
Input schema / properties / response_formatAdded value: +{ + "$ref": "#/$defs/ResponseFormat", + "default": "markdown" +} - added
Input schema / properties / statusAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "按状态过滤,如 complete/failed/terminated", + "title": "Status" +} - changed
Input schema / requiredPrevious value: -[ - "params" -]New value: +[ + "app_name" +]
- Changed
vela_list_targets7 fields changed- removed
Input schema / $defs / ListTargetsInputRemoved value: -{ - "additionalProperties": false, - "description": "列出交付目标的输入参数", - "properties": { - "page": { - "default": 0, - "minimum": 0, - "title": "Page", - "type": "integer" - }, - "page_size": { - "default": 20, - "maximum": 100, - "minimum": 1, - "title": "Page Size", - "type": "integer" - }, - "project_name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "按项目过滤", - "title": "Project Name" - }, - "response_format": { - "$ref": "#/$defs/ResponseFormat", - "default": "markdown" - } - }, - "title": "ListTargetsInput", - "type": "object" -} - added
Input schema / properties / pageAdded value: +{ + "default": 0, + "minimum": 0, + "title": "Page", + "type": "integer" +} - added
Input schema / properties / page_sizeAdded value: +{ + "default": 20, + "maximum": 100, + "minimum": 1, + "title": "Page Size", + "type": "integer" +} - removed
Input schema / properties / paramsRemoved value: -{ - "$ref": "#/$defs/ListTargetsInput" -} - added
Input schema / properties / project_nameAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "按项目过滤", + "title": "Project Name" +} - added
Input schema / properties / response_formatAdded value: +{ + "$ref": "#/$defs/ResponseFormat", + "default": "markdown" +} - removed
Input schema / requiredRemoved value: -[ - "params" -]
- Changed
vela_list_triggers5 fields changed- removed
Input schema / $defs / ListTriggersInputRemoved value: -{ - "additionalProperties": false, - "description": "列出应用触发器的输入参数", - "properties": { - "app_name": { - "description": "应用名称", - "minLength": 1, - "title": "App Name", - "type": "string" - }, - "response_format": { - "$ref": "#/$defs/ResponseFormat", - "default": "markdown" - } - }, - "required": [ - "app_name" - ], - "title": "ListTriggersInput", - "type": "object" -} - added
Input schema / properties / app_nameAdded value: +{ + "description": "应用名称", + "minLength": 1, + "title": "App Name", + "type": "string" +} - removed
Input schema / properties / paramsRemoved value: -{ - "$ref": "#/$defs/ListTriggersInput" -} - added
Input schema / properties / response_formatAdded value: +{ + "$ref": "#/$defs/ResponseFormat", + "default": "markdown" +} - changed
Input schema / requiredPrevious value: -[ - "params" -]New value: +[ + "app_name" +]
- Changed
vela_list_workflow_records9 fields changed- removed
Input schema / $defs / ListWorkflowRecordsInputRemoved value: -{ - "additionalProperties": false, - "description": "查询工作流/执行记录的输入参数", - "properties": { - "app_name": { - "description": "应用名称", - "minLength": 1, - "title": "App Name", - "type": "string" - }, - "page": { - "default": 0, - "minimum": 0, - "title": "Page", - "type": "integer" - }, - "page_size": { - "default": 20, - "maximum": 100, - "minimum": 1, - "title": "Page Size", - "type": "integer" - }, - "record": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "记录名。填写后返回该次执行的详情(含步骤状态)", - "title": "Record" - }, - "response_format": { - "$ref": "#/$defs/ResponseFormat", - "default": "markdown" - }, - "workflow_name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "工作流名(形如 workflow-<env>)。不填则返回该应用的工作流列表", - "title": "Workflow Name" - } - }, - "required": [ - "app_name" - ], - "title": "ListWorkflowRecordsInput", - "type": "object" -} - added
Input schema / properties / app_nameAdded value: +{ + "description": "应用名称", + "minLength": 1, + "title": "App Name", + "type": "string" +} - added
Input schema / properties / pageAdded value: +{ + "default": 0, + "minimum": 0, + "title": "Page", + "type": "integer" +} - added
Input schema / properties / page_sizeAdded value: +{ + "default": 20, + "maximum": 100, + "minimum": 1, + "title": "Page Size", + "type": "integer" +} - removed
Input schema / properties / paramsRemoved value: -{ - "$ref": "#/$defs/ListWorkflowRecordsInput" -} - added
Input schema / properties / recordAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "记录名。填写后返回该次执行的详情(含步骤状态)", + "title": "Record" +} - added
Input schema / properties / response_formatAdded value: +{ + "$ref": "#/$defs/ResponseFormat", + "default": "markdown" +} - added
Input schema / properties / workflow_nameAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "工作流名(形如 workflow-<env>)。不填则返回该应用的工作流列表", + "title": "Workflow Name" +} - changed
Input schema / requiredPrevious value: -[ - "params" -]New value: +[ + "app_name" +]
- Removed
vela_resume_workflow - Removed
vela_rollback_application - Changed
vela_system_info4 fields changed- removed
Input schema / $defs / SystemInfoInputRemoved value: -{ - "additionalProperties": false, - "description": "查询系统信息的输入参数", - "properties": { - "response_format": { - "$ref": "#/$defs/ResponseFormat", - "default": "markdown" - } - }, - "title": "SystemInfoInput", - "type": "object" -} - removed
Input schema / properties / paramsRemoved value: -{ - "$ref": "#/$defs/SystemInfoInput" -} - added
Input schema / properties / response_formatAdded value: +{ + "$ref": "#/$defs/ResponseFormat", + "default": "markdown" +} - removed
Input schema / requiredRemoved value: -[ - "params" -]
- Removed
vela_terminate_workflow - Changed
vela_velaql_query12 fields changed- added
Input schema / $defs / ResponseFormatAdded value: +{ + "enum": [ + "markdown", + "json" + ], + "title": "ResponseFormat", + "type": "string" +} - removed
Input schema / $defs / VelaQLInputRemoved value: -{ - "additionalProperties": false, - "description": "VelaQL 查询的输入参数", - "properties": { - "velaql": { - "description": "VelaQL 查询语句,如 component-pod-view{appNs=default,appName=demo}.status 或 collect-logs{cluster=local,namespace=default,pod=xxx}.logs", - "minLength": 1, - "title": "Velaql", - "type": "string" - } - }, - "required": [ - "velaql" - ], - "title": "VelaQLInput", - "type": "object" -} - added
Input schema / $defs / VelaQLViewAdded value: +{ + "description": "All VelaQL views the vela_velaql_query tool accepts.\n\nAdding a new view = add a member here + a ParamSchema below + an entry\nin VIEWS.", + "enum": [ + "service-endpoints-view", + "application-resource-tree-view", + "service-applied-resources-view", + "component-pod-view", + "component-service-view", + "service-view", + "pod-view", + "application-resource-detail-view", + "collect-logs" + ], + "title": "VelaQLView", + "type": "string" +} - added
Input schema / properties / clusterAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "多集群覆盖; 应用层 view 忽略此参数 (应用通过 target 决定集群), pod-view / collect-logs 此参数为必填 (在 params 之外, 此处供未来 cluster 路由优化)", + "title": "Cluster" +} - removed
Input schema / properties / params / $refRemoved value: -"#/$defs/VelaQLInput" - added
Input schema / properties / params / additionalPropertiesAdded value: +true - added
Input schema / properties / params / descriptionAdded value: +"视图参数 (JSON 对象)。键名见 view 描述: service-endpoints-view / application-resource-tree-view / service-applied-resources-view / component-pod-view -> {appNs, appName}; component-service-view -> {appNs, appName, [name, cluster, clusterNs]}; service-view -> {appNs, appName, [cluster, clusterNs]}; pod-view -> {cluster, namespace, name}; application-resource-detail-view -> {cluster, namespace, name, kind, apiVersion}; collect-logs -> {cluster, namespace, pod, container, [previous, timestamps, tailLines]}" - added
Input schema / properties / params / titleAdded value: +"Params" - added
Input schema / properties / params / typeAdded value: +"object" - added
Input schema / properties / response_formatAdded value: +{ + "$ref": "#/$defs/ResponseFormat", + "default": "markdown" +} - added
Input schema / properties / viewAdded value: +{ + "$ref": "#/$defs/VelaQLView", + "description": "视图。必须是受支持 view 之一。" +} - changed
Input schema / requiredPrevious value: -[ - "params" -]New value: +[ + "view", + "params" +]
28 tool updates
v0.1.1- First observed
vela_compare_application - First observed
vela_create_application - First observed
vela_create_trigger - First observed
vela_deploy_application - First observed
vela_dry_run_application - First observed
vela_get_app_status - First observed
vela_get_application - First observed
vela_get_application_manifest - First observed
vela_get_workflow_logs - First observed
vela_list_addons - First observed
vela_list_applications - First observed
vela_list_clusters - First observed
vela_list_components - First observed
vela_list_definitions - First observed
vela_list_deploy_records - First observed
vela_list_envs - First observed
vela_list_project_targets - First observed
vela_list_project_users - First observed
vela_list_projects - First observed
vela_list_revisions - First observed
vela_list_targets - First observed
vela_list_triggers - First observed
vela_list_workflow_records - First observed
vela_resume_workflow - First observed
vela_rollback_application - First observed
vela_system_info - First observed
vela_terminate_workflow - First observed
vela_velaql_query
TDQS
Scored across 21 tools
Tools are mostly distinct by resource type (applications, components, revisions, workflows, envs, targets, etc.). Some tools are overloaded (e.g., vela_list_workflow_records returns workflows, records, or details; vela_list_components lists or gets details), which could cause initial confusion, but descriptions clarify the behavior.
Almost all tools follow the vela_<verb>_<resource> pattern with list/get verbs. A few exceptions like vela_velaql_query, vela_system_info, and vela_compare_application break the pattern slightly, but the overall naming remains predictable and consistent.
21 tools cover KubeVela's many resource types and API endpoints thoroughly. Though above the typical 3-15 range, each tool serves a distinct purpose and the count feels justified rather than bloated.
As a read-only diagnostic server, the surface is comprehensive: projects, applications, components, revisions, records, workflows, envs, targets, clusters, addons, definitions, system info, compare, manifest, triggers, and VelaQL queries. Write operations are absent but consistent with the apparent focus on troubleshooting and audit, leaving no critical gaps for that purpose.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
- mcpOAuthcom.vibgrate
Query your team's drift, vulnerability, and upgrade data from any AI assistant. OAuth 2.1, 51 tools.
Deploy, monitor, and manage your OpenClaw AI assistants via natural language.
Plan Salesforce deploys, open pull requests and trigger pipelines from your AI client.
Inspect and control your Northflank projects, services, jobs, and builds from your AI assistant.
Related MCP Servers
- AlicenseBqualityNot gradedmaintenanceEnables AI assistants to interact with Netflix Conductor Workflow Engine for troubleshooting workflows, managing executions, and creating/updating workflow and task definitions through natural language.192-
- AlicenseAqualityCmaintenanceEnables AI assistants to interact with and manage Kubernetes clusters, supporting operations on pods, deployments, services, configmaps, secrets, namespaces, metrics, and events with built-in safety features for destructive actions.9131MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to perform DevOps tasks including Kubernetes management, cloud provider operations, CI/CD, security scanning, and infrastructure monitoring through natural language.MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with ArgoCD APIs through standardized MCP tools for managing applications, resources, and deployments.MIT