Skip to main content
Glama
zhouweico

mcp-kubevela

by zhouweico

mcp-kubevela

KubeVela MCP Server - 让 AI 助手能够查询和管理 KubeVela 的应用交付:查询应用状态、触发部署、跟踪工作流、管理插件等。

基于 VelaUX REST API(/api/v1,JWT Bearer 认证,参见 VelaUX OpenAPI 文档),支持应用交付的查询与操作。

特性

  • 多协议传输stdio(默认)、ssestreamable-http,一套代码适配本地与远程场景

  • 接口认证:HTTP 传输支持 Bearer Token 保护,未授权请求返回 401

  • JWT 自动管理:用户名/密码登录换取 accessToken,401 时自动 refresh / 重登录并重放请求,无需手工维护 Token

  • KubeVela 原生概念:直接以 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

vela_list_applications

应用

应用列表(支持项目/环境/目标/关键字过滤)

GET /applications

vela_get_application

应用

应用详情(基础信息、环境绑定、策略)

GET /applications/{app}

vela_get_app_status

应用

运行状态(全环境概览或单环境详情)

GET .../status

vela_list_components

应用

组件列表 / 组件详情(含 properties/traits)

GET .../components[/{comp}]

vela_list_revisions

应用

版本历史(可按环境/状态过滤)

GET .../revisions

vela_compare_application

应用

配置差异对比(最新配置 vs 运行态 / 指定版本 vs 运行态或最新)

POST .../compare

vela_get_application_manifest

应用

导出 Application CR YAML(GitOps 迁移 / 备份)

POST .../compare

vela_list_deploy_records

部署与工作流

环境部署记录

GET .../envs/{env}/records

vela_list_workflow_records

部署与工作流

工作流列表 / 执行记录 / 记录详情(三合一)

GET .../workflows[...]

vela_get_workflow_logs

部署与工作流

工作流步骤日志

GET .../records/{r}/logs

vela_list_triggers

触发器

Webhook 触发器列表(含 token 与触发地址)

GET .../triggers

vela_list_projects

项目与环境

项目列表(名称 / 别名 / 命名空间 / 负责人)

GET /projects

vela_list_project_targets

项目与环境

项目可用的交付目标

GET /projects/{p}/targets

vela_list_project_users

项目与环境

项目成员及角色(权限排查)

GET /projects/{p}/users

vela_list_envs

项目与环境

环境列表(可按项目过滤)

GET /envs

vela_list_targets

项目与环境

交付目标列表

GET /targets

vela_list_clusters

平台

集群列表 / 集群详情

GET /clusters[/{c}]

vela_list_addons

平台

插件市场 / 已启用插件 / 详情+状态

GET /addons[...]

vela_list_definitions

平台

X-Definition 列表 / 参数 schema

GET /definitions[...]

vela_velaql_query

平台

VelaQL 查询(Pod / 日志 / 资源拓扑),schema-typed (view, params) 接口覆盖 9 个已知 view

GET /query

vela_system_info

平台

平台系统信息(版本 / 登录方式 / 集群与应用统计 / 已启用插件)

GET /system_info

写工具(7 个)

按交付生命周期排列:创建 → 预演 → 部署 → 工作流控制 → 回滚 → 触发器。

工具

分组

说明

对应 API

vela_create_application

应用

创建应用(含首个组件)

POST /applications

vela_dry_run_application

应用

部署预演(只渲染不落地)

POST .../dry-run

vela_deploy_application

应用

触发部署(异步,需人工确认)

POST .../deploy

vela_resume_workflow

部署与工作流

恢复挂起的工作流(需人工确认)

.../resume

vela_terminate_workflow

部署与工作流

终止执行中的工作流(需人工确认)

.../terminate

vela_rollback_application

应用

回滚到指定版本(需人工确认)

.../rollback

vela_create_trigger

触发器

创建 Webhook 触发器(返回 token 与触发地址)

POST .../triggers

未提供的高危操作:删除应用、回收环境、启用/禁用插件、删除触发器未实现为工具, 此类操作请通过 VelaUX 控制台或 vela CLI 人工执行。

只读 / 写的区别:「类型 = 只读」的 21 个工具在只读模式下仍然可用; 「类型 = 写」的 7 个工具会被完全排除——不出现在 tools/list 中, Agent 既看不到也无法调用(注册期排除,非运行期拦截)。 只读为默认行为,因此未显式设置 VELA_READ_ONLY=false 的部署,Agent 只能查询、 绝无意外变更交付的风险。

部署为异步语义vela_deploy_application 触发后立即返回部署记录标识, 用 vela_list_workflow_records / vela_get_workflow_logs 轮询进度与日志。

配置

环境变量

MCP 传输与认证

变量

说明

默认值

MCP_TRANSPORT

传输协议:stdio / sse / streamable-http

stdio

MCP_HOST

HTTP 传输监听地址(stdio 忽略),默认仅本地回环;对外暴露需显式设置并务必配置 MCP_AUTH_TOKEN

127.0.0.1

MCP_PORT

HTTP 传输监听端口(stdio 忽略)

8080

MCP_AUTH_TOKEN

设置后启用 Bearer Token 认证,保护 HTTP 接口

-(不鉴权)

MCP_STATELESS_HTTP

启用无状态 HTTP 模式,适合 Serverless 部署(详见下方说明)

false

MCP_LOG_LEVEL

日志级别:debug/info/warning/error

info

VelaUX 连接

变量

说明

默认值

VELA_URL

VelaUX API Server 地址

http://localhost:8000

VELA_USERNAME

登录用户名(必填)

-

VELA_PASSWORD

登录密码(必填)

-

VELA_TIMEOUT

请求超时(秒)

30

VELA_READ_ONLY

只读模式,排除全部写工具。默认只读,需写能力时显式设为 false

true

VELA_INSECURE

跳过 TLS 证书验证,用于自签名证书环境(详见下方说明)

false

认证凭证只需用户名/密码:客户端首次请求时自动调用 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_statusvela_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

说明

vela://system-info

VelaUX 平台系统信息(版本 / 登录方式 / 集群与应用统计 / 已启用插件)

vela://projects

列出所有项目

vela://envs

列出所有环境

vela://clusters

列出所有纳管集群

Resources 仅暴露只读数据,不涉及任何写操作。

Stateless HTTP 模式

设置 MCP_STATELESS_HTTP=true 可启用无状态 HTTP 模式,每次请求独立处理、不保留会话状态,适合 Serverless 平台(如 AWS Lambda、阿里云函数计算)或多副本无状态部署:

MCP_TRANSPORT=streamable-http \
MCP_STATELESS_HTTP=true \
MCP_PORT=8080 \
mcp-kubevela

Stateless 模式下不支持流式响应(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:latest

Docker Compose

复制 .env.example.env 并按需修改,然后:

cp .env.example .env
docker compose up -d

docker-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_definitionsvela_create_application

先 dry-run 看看渲染结果有没有问题,没问题再把 demo 部署到 prod,然后盯着进度直到完成

vela_dry_run_applicationvela_deploy_applicationvela_list_workflow_records 轮询)

部署卡在人工审批了,帮我放行

vela_list_workflow_recordsvela_resume_workflow

这次发布不对劲,先终止工作流,看下版本历史,回滚到上一个正常版本

vela_terminate_workflowvela_list_revisionsvela_rollback_application

故障排查

demo 最近一次部署的工作流执行到哪一步了?把失败步骤的日志给我

vela_list_workflow_records + vela_get_workflow_logs

用 VelaQL 查一下 demo 在 prod 环境的 Pod 列表,有没有在重启的

vela_velaql_queryview=component-pod-viewparams={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_manifestsource=latest

导出 demo 当前在集群里实际运行的 YAML,和 Git 里的版本对比一下

vela_get_application_manifestsource=running

CI/CD 集成

给 demo 应用建一个 webhook 触发器,Harbor 推送镜像后自动部署到 dev 环境,把触发地址给我

vela_create_triggerpayloadType=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 控制台或 vela CLI 中人工执行。

写前确认: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 tools
vela_compare_applicationA
Read-onlyIdempotent

对比应用配置差异(诊断配置漂移)。三种模式:

  • 仅传 env:最新配置 vs 该环境集群运行态

  • 传 revision + compare_with=running:指定版本 vs 集群运行态

  • 传 revision + compare_with=latest:指定版本 vs 最新配置

对应 API:POST /api/v1/applications/{app}/compare

ParametersJSON Schema
NameRequiredDescriptionDefault
envNo环境名。不传 revision 时必填:对比最新配置与该环境集群运行态
app_nameYes应用名称
revisionNo版本号。传入后以该版本为基准做对比
compare_withNorevision 的对比对象:running(集群运行态)或 latest(最新配置)running
response_formatNomarkdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_applicationB
Read-onlyIdempotent

查看应用详情(基础信息、策略、环境绑定、资源统计)。

对应 API:GET /api/v1/applications/{appName}

ParametersJSON Schema
NameRequiredDescriptionDefault
app_nameYes应用名称
response_formatNomarkdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
iconNo
nameNo
aliasNo
labelsNo
projectNo
namespaceNo
annotationsNo
descriptionNo

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives, such as '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_manifestA
Read-onlyIdempotent

导出应用的 Application CR YAML 清单(GitOps 迁移 / 备份 / 审计用)。

source=latest 导出最新渲染配置;source=running 导出集群中实际运行的 CR。 基于 compare 接口的 YAML 字段实现。 对应 API:POST /api/v1/applications/{app}/compare

ParametersJSON Schema
NameRequiredDescriptionDefault
envYes环境名
sourceNo导出来源:latest(最新渲染配置)或 running(集群运行态 CR)latest
app_nameYes应用名称

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_statusA
Read-onlyIdempotent

查看应用运行状态(全部环境概览或指定环境详情)。

对应 API:GET /api/v1/applications/{app}/status GET /api/v1/applications/{app}/envs/{env}/status

ParametersJSON Schema
NameRequiredDescriptionDefault
envNo环境名。不填返回所有环境的状态概览
app_nameYes应用名称
response_formatNomarkdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
statusNo

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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_logsA
Read-onlyIdempotent

查看工作流执行记录中某个步骤的日志(step 必填,步骤名可先查记录详情获取)。

对应 API:GET .../workflows/{wf}/records/{record}/logs?step=

ParametersJSON Schema
NameRequiredDescriptionDefault
stepYes步骤名(必填,来自记录详情中的步骤列表)
recordYes工作流执行记录名
app_nameYes应用名称
workflow_nameYes工作流名

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_addonsA
Read-onlyIdempotent

查看插件(addon)市场列表 / 已启用插件 / 单个插件详情与状态。

对应 API:GET /api/v1/addons[...]、GET /api/v1/enabled_addon

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNo按名称模糊过滤
registryNo按插件仓库过滤
addon_nameNo插件名。填写后返回该插件详情与启用状态
enabled_onlyNo仅列出已启用的插件
response_formatNomarkdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_applicationsA
Read-onlyIdempotent

列出 KubeVela 应用,支持按项目/环境/交付目标/关键字过滤。

对应 API:GET /api/v1/applications

ParametersJSON Schema
NameRequiredDescriptionDefault
envNo按环境过滤
queryNo按名称/别名/描述模糊过滤
target_nameNo按交付目标过滤
project_nameNo按项目过滤
response_formatNo输出格式:markdown 或 jsonmarkdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
applicationsNo

TDQS

A4.1/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_clustersA
Read-onlyIdempotent

列出纳管集群;指定 cluster_name 时返回集群详情(含资源信息)。

对应 API:GET /api/v1/clusters[/{clusterName}]

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
queryNo按名称模糊过滤(仅列表时生效)
page_sizeNo
cluster_nameNo集群名。填写后返回该集群详情
response_formatNomarkdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_componentsA
Read-onlyIdempotent

查看应用的组件列表;指定 component 时返回组件详情(properties、traits、definition)。

对应 API:GET /api/v1/applications/{app}/components[/{comp}]

ParametersJSON Schema
NameRequiredDescriptionDefault
envNo环境名(仅列表时生效)
app_nameYes应用名称
componentNo组件名。填写后返回该组件详情(含 properties 与 traits)
response_formatNomarkdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_definitionsA
Read-onlyIdempotent

查看组件/运维特征/策略/工作流步骤定义;指定 definition_name 返回参数 schema。

对应 API:GET /api/v1/definitions[/{name}]?type=

ParametersJSON Schema
NameRequiredDescriptionDefault
def_typeYes定义类型:component / trait / policy / workflowstep
query_allNo是否包含隐藏定义(默认只列常用定义)
definition_nameNo定义名。填写后返回详情(含参数 schema)
response_formatNomarkdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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_recordsB
Read-onlyIdempotent

查看应用在指定环境的部署记录。

对应 API:GET /api/v1/applications/{app}/envs/{env}/records

ParametersJSON Schema
NameRequiredDescriptionDefault
envYes环境名
pageNo
app_nameYes应用名称
page_sizeNo
response_formatNomarkdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives. 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_envsA
Read-onlyIdempotent

列出环境(env)及其关联的交付目标。

对应 API:GET /api/v1/envs

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
page_sizeNo
project_nameNo按项目过滤
response_formatNomarkdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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_projectsA
Read-onlyIdempotent

列出平台中的项目(project),创建应用前用于确认可选项目。

对应 API:GET /api/v1/projects

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo页码(从 0 开始)
page_sizeNo分页大小
response_formatNo输出格式:markdown 或 jsonmarkdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
projectsNo

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_targetsA
Read-onlyIdempotent

列出指定项目可用的交付目标(target),部署前确认目标合法性。

对应 API:GET /api/v1/projects/{projectName}/targets

ParametersJSON Schema
NameRequiredDescriptionDefault
project_nameYes项目名称
response_formatNo输出格式:markdown 或 jsonmarkdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_usersA
Read-onlyIdempotent

列出指定项目的成员及其角色,用于排查权限(403)类问题。

对应 API:GET /api/v1/projects/{projectName}/users

ParametersJSON Schema
NameRequiredDescriptionDefault
project_nameYes项目名称
response_formatNomarkdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_revisionsA
Read-onlyIdempotent

查看应用版本(revision)历史,可用于回滚前确认目标版本。

对应 API:GET /api/v1/applications/{app}/revisions

ParametersJSON Schema
NameRequiredDescriptionDefault
envNo按环境过滤
pageNo页码(从 0 开始)
statusNo按状态过滤,如 complete/failed/terminated
app_nameYes应用名称
page_sizeNo分页大小
response_formatNomarkdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_targetsB
Read-onlyIdempotent

列出交付目标(target,即集群+命名空间组合)。

对应 API:GET /api/v1/targets

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
page_sizeNo
project_nameNo按项目过滤
response_formatNomarkdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus 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_triggersA
Read-onlyIdempotent

列出应用的 webhook 触发器(含 token,可拼接触发地址)。

对应 API:GET /api/v1/applications/{app}/triggers

ParametersJSON Schema
NameRequiredDescriptionDefault
app_nameYes应用名称
response_formatNomarkdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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_recordsA
Read-onlyIdempotent

三合一查询:不填 workflow_name 列出工作流;填 workflow_name 列出执行记录; 再填 record 返回该次执行详情(含各步骤状态,可据此取日志)。

对应 API:GET /api/v1/applications/{app}/workflows[/{wf}/records[/{record}]]

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
recordNo记录名。填写后返回该次执行的详情(含步骤状态)
app_nameYes应用名称
page_sizeNo
workflow_nameNo工作流名(形如 workflow-<env>)。不填则返回该应用的工作流列表
response_formatNomarkdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_infoA
Read-onlyIdempotent

查看 VelaUX 平台系统信息:KubeVela 版本、登录方式、集群/应用统计、已启用插件等。

适合作为接入新环境后的连通性与版本自检。 对应 API:GET /api/v1/system_info

ParametersJSON Schema
NameRequiredDescriptionDefault
response_formatNomarkdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_queryA
Read-onlyIdempotent

执行 VelaQL 查询(Pod 列表、容器日志、资源拓扑等运行时数据)。

对应 API:GET /api/v1/query?velaql= 使用 view 枚举 + 结构化 params (见各 view 的 ParamSchema 描述), 由服务器拼装 velaql 字符串。错误以结构化文本返回, LLM 可直接 parse 修复后重试。

ParametersJSON Schema
NameRequiredDescriptionDefault
viewYes视图。必须是受支持 view 之一。
paramsYes视图参数 (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]}
clusterNo多集群覆盖; 应用层 view 忽略此参数 (应用通过 target 决定集群), pod-view / collect-logs 此参数为必填 (在 params 之外, 此处供未来 cluster 路由优化)
response_formatNomarkdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

  1. 28 tool updatesv0.5.0
    • Changedvela_compare_application8 fields changed
      • removedInput schema / $defs / CompareApplicationInput
        Removed 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"
        -}
      • addedInput schema / properties / app_name
        Added value: +{
        +  "description": "应用名称",
        +  "minLength": 1,
        +  "title": "App Name",
        +  "type": "string"
        +}
      • addedInput schema / properties / compare_with
        Added value: +{
        +  "default": "running",
        +  "description": "revision 的对比对象:running(集群运行态)或 latest(最新配置)",
        +  "pattern": "^(running|latest)$",
        +  "title": "Compare With",
        +  "type": "string"
        +}
      • addedInput schema / properties / env
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "环境名。不传 revision 时必填:对比最新配置与该环境集群运行态",
        +  "title": "Env"
        +}
      • removedInput schema / properties / params
        Removed value: -{
        -  "$ref": "#/$defs/CompareApplicationInput"
        -}
      • addedInput schema / properties / response_format
        Added value: +{
        +  "$ref": "#/$defs/ResponseFormat",
        +  "default": "markdown"
        +}
      • addedInput schema / properties / revision
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "版本号。传入后以该版本为基准做对比",
        +  "title": "Revision"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "params"
        -]New value: +[
        +  "app_name"
        +]
    • Removedvela_create_application
    • Removedvela_create_trigger
    • Removedvela_deploy_application
    • Removedvela_dry_run_application
    • Changedvela_get_app_status12 fields changed
      • removedInput schema / $defs / AppStatusInput
        Removed 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"
        -}
      • addedInput schema / properties / app_name
        Added value: +{
        +  "description": "应用名称",
        +  "minLength": 1,
        +  "title": "App Name",
        +  "type": "string"
        +}
      • addedInput schema / properties / env
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "环境名。不填返回所有环境的状态概览",
        +  "title": "Env"
        +}
      • removedInput schema / properties / params
        Removed value: -{
        -  "$ref": "#/$defs/AppStatusInput"
        -}
      • addedInput schema / properties / response_format
        Added value: +{
        +  "$ref": "#/$defs/ResponseFormat",
        +  "default": "markdown"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "params"
        -]New value: +[
        +  "app_name"
        +]
      • addedOutput schema / additionalProperties
        Added value: +true
      • addedOutput schema / description
        Added value: +"vela_get_app_status 的结构化输出(status 可为列表或字典)"
      • removedOutput schema / properties / result
        Removed value: -{
        -  "title": "Result",
        -  "type": "string"
        -}
      • addedOutput schema / properties / status
        Added value: +{
        +  "anyOf": [
        +    {},
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Status"
        +}
      • removedOutput schema / required
        Removed value: -[
        -  "result"
        -]
      • changedOutput schema / title
        Previous value: -"vela_get_app_statusOutput"New value: +"GetAppStatusOutput"
    • Changedvela_get_application18 fields changed
      • removedInput schema / $defs / AppNameInput
        Removed 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"
        -}
      • addedInput schema / properties / app_name
        Added value: +{
        +  "description": "应用名称",
        +  "maxLength": 64,
        +  "minLength": 1,
        +  "title": "App Name",
        +  "type": "string"
        +}
      • removedInput schema / properties / params
        Removed value: -{
        -  "$ref": "#/$defs/AppNameInput"
        -}
      • addedInput schema / properties / response_format
        Added value: +{
        +  "$ref": "#/$defs/ResponseFormat",
        +  "default": "markdown"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "params"
        -]New value: +[
        +  "app_name"
        +]
      • addedOutput schema / additionalProperties
        Added value: +true
      • addedOutput schema / description
        Added value: +"vela_get_application 的结构化输出(应用详情,字段透传 API 响应)"
      • addedOutput schema / properties / alias
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Alias"
        +}
      • addedOutput schema / properties / annotations
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": true,
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Annotations"
        +}
      • addedOutput schema / properties / description
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Description"
        +}
      • addedOutput schema / properties / icon
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Icon"
        +}
      • addedOutput schema / properties / labels
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": true,
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Labels"
        +}
      • addedOutput schema / properties / name
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Name"
        +}
      • addedOutput schema / properties / namespace
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Namespace"
        +}
      • addedOutput schema / properties / project
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": true,
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Project"
        +}
      • removedOutput schema / properties / result
        Removed value: -{
        -  "title": "Result",
        -  "type": "string"
        -}
      • removedOutput schema / required
        Removed value: -[
        -  "result"
        -]
      • changedOutput schema / title
        Previous value: -"vela_get_applicationOutput"New value: +"GetApplicationOutput"
    • Changedvela_get_application_manifest6 fields changed
      • removedInput schema / $defs
        Removed 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"
        -  }
        -}
      • addedInput schema / properties / app_name
        Added value: +{
        +  "description": "应用名称",
        +  "minLength": 1,
        +  "title": "App Name",
        +  "type": "string"
        +}
      • addedInput schema / properties / env
        Added value: +{
        +  "description": "环境名",
        +  "minLength": 1,
        +  "title": "Env",
        +  "type": "string"
        +}
      • removedInput schema / properties / params
        Removed value: -{
        -  "$ref": "#/$defs/GetManifestInput"
        -}
      • addedInput schema / properties / source
        Added value: +{
        +  "default": "latest",
        +  "description": "导出来源:latest(最新渲染配置)或 running(集群运行态 CR)",
        +  "pattern": "^(latest|running)$",
        +  "title": "Source",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "params"
        -]New value: +[
        +  "app_name",
        +  "env"
        +]
    • Changedvela_get_workflow_logs7 fields changed
      • removedInput schema / $defs
        Removed 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"
        -  }
        -}
      • addedInput schema / properties / app_name
        Added value: +{
        +  "description": "应用名称",
        +  "minLength": 1,
        +  "title": "App Name",
        +  "type": "string"
        +}
      • removedInput schema / properties / params
        Removed value: -{
        -  "$ref": "#/$defs/GetWorkflowLogsInput"
        -}
      • addedInput schema / properties / record
        Added value: +{
        +  "description": "工作流执行记录名",
        +  "minLength": 1,
        +  "title": "Record",
        +  "type": "string"
        +}
      • addedInput schema / properties / step
        Added value: +{
        +  "description": "步骤名(必填,来自记录详情中的步骤列表)",
        +  "title": "Step",
        +  "type": "string"
        +}
      • addedInput schema / properties / workflow_name
        Added value: +{
        +  "description": "工作流名",
        +  "minLength": 1,
        +  "title": "Workflow Name",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "params"
        -]New value: +[
        +  "app_name",
        +  "workflow_name",
        +  "record",
        +  "step"
        +]
    • Changedvela_list_addons8 fields changed
      • removedInput schema / $defs / ListAddonsInput
        Removed 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"
        -}
      • addedInput schema / properties / addon_name
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "插件名。填写后返回该插件详情与启用状态",
        +  "title": "Addon Name"
        +}
      • addedInput schema / properties / enabled_only
        Added value: +{
        +  "default": false,
        +  "description": "仅列出已启用的插件",
        +  "title": "Enabled Only",
        +  "type": "boolean"
        +}
      • removedInput schema / properties / params
        Removed value: -{
        -  "$ref": "#/$defs/ListAddonsInput"
        -}
      • addedInput schema / properties / query
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "按名称模糊过滤",
        +  "title": "Query"
        +}
      • addedInput schema / properties / registry
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "按插件仓库过滤",
        +  "title": "Registry"
        +}
      • addedInput schema / properties / response_format
        Added value: +{
        +  "$ref": "#/$defs/ResponseFormat",
        +  "default": "markdown"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "params"
        -]
    • Changedvela_list_applications14 fields changed
      • removedInput schema / $defs / ListApplicationsInput
        Removed 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"
        -}
      • addedInput schema / properties / env
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "按环境过滤",
        +  "title": "Env"
        +}
      • removedInput schema / properties / params
        Removed value: -{
        -  "$ref": "#/$defs/ListApplicationsInput"
        -}
      • addedInput schema / properties / project_name
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "按项目过滤",
        +  "title": "Project Name"
        +}
      • addedInput schema / properties / query
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "按名称/别名/描述模糊过滤",
        +  "title": "Query"
        +}
      • addedInput schema / properties / response_format
        Added value: +{
        +  "$ref": "#/$defs/ResponseFormat",
        +  "default": "markdown",
        +  "description": "输出格式:markdown 或 json"
        +}
      • addedInput schema / properties / target_name
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "按交付目标过滤",
        +  "title": "Target Name"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "params"
        -]
      • addedOutput schema / additionalProperties
        Added value: +true
      • addedOutput schema / description
        Added value: +"vela_list_applications 的结构化输出"
      • addedOutput schema / properties / applications
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "additionalProperties": true,
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Applications"
        +}
      • removedOutput schema / properties / result
        Removed value: -{
        -  "title": "Result",
        -  "type": "string"
        -}
      • removedOutput schema / required
        Removed value: -[
        -  "result"
        -]
      • changedOutput schema / title
        Previous value: -"vela_list_applicationsOutput"New value: +"ListApplicationsOutput"
    • Changedvela_list_clusters8 fields changed
      • removedInput schema / $defs / ListClustersInput
        Removed 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"
        -}
      • addedInput schema / properties / cluster_name
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "集群名。填写后返回该集群详情",
        +  "title": "Cluster Name"
        +}
      • addedInput schema / properties / page
        Added value: +{
        +  "default": 0,
        +  "minimum": 0,
        +  "title": "Page",
        +  "type": "integer"
        +}
      • addedInput schema / properties / page_size
        Added value: +{
        +  "default": 20,
        +  "maximum": 100,
        +  "minimum": 1,
        +  "title": "Page Size",
        +  "type": "integer"
        +}
      • removedInput schema / properties / params
        Removed value: -{
        -  "$ref": "#/$defs/ListClustersInput"
        -}
      • addedInput schema / properties / query
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "按名称模糊过滤(仅列表时生效)",
        +  "title": "Query"
        +}
      • addedInput schema / properties / response_format
        Added value: +{
        +  "$ref": "#/$defs/ResponseFormat",
        +  "default": "markdown"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "params"
        -]
    • Changedvela_list_components7 fields changed
      • removedInput schema / $defs / ListComponentsInput
        Removed 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"
        -}
      • addedInput schema / properties / app_name
        Added value: +{
        +  "description": "应用名称",
        +  "minLength": 1,
        +  "title": "App Name",
        +  "type": "string"
        +}
      • addedInput schema / properties / component
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "组件名。填写后返回该组件详情(含 properties 与 traits)",
        +  "title": "Component"
        +}
      • addedInput schema / properties / env
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "环境名(仅列表时生效)",
        +  "title": "Env"
        +}
      • removedInput schema / properties / params
        Removed value: -{
        -  "$ref": "#/$defs/ListComponentsInput"
        -}
      • addedInput schema / properties / response_format
        Added value: +{
        +  "$ref": "#/$defs/ResponseFormat",
        +  "default": "markdown"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "params"
        -]New value: +[
        +  "app_name"
        +]
    • Changedvela_list_definitions7 fields changed
      • removedInput schema / $defs / ListDefinitionsInput
        Removed 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"
        -}
      • addedInput schema / properties / def_type
        Added value: +{
        +  "$ref": "#/$defs/DefinitionType",
        +  "description": "定义类型:component / trait / policy / workflowstep"
        +}
      • addedInput schema / properties / definition_name
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "定义名。填写后返回详情(含参数 schema)",
        +  "title": "Definition Name"
        +}
      • removedInput schema / properties / params
        Removed value: -{
        -  "$ref": "#/$defs/ListDefinitionsInput"
        -}
      • addedInput schema / properties / query_all
        Added value: +{
        +  "default": false,
        +  "description": "是否包含隐藏定义(默认只列常用定义)",
        +  "title": "Query All",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / response_format
        Added value: +{
        +  "$ref": "#/$defs/ResponseFormat",
        +  "default": "markdown"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "params"
        -]New value: +[
        +  "def_type"
        +]
    • Changedvela_list_deploy_records8 fields changed
      • removedInput schema / $defs / ListDeployRecordsInput
        Removed 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"
        -}
      • addedInput schema / properties / app_name
        Added value: +{
        +  "description": "应用名称",
        +  "minLength": 1,
        +  "title": "App Name",
        +  "type": "string"
        +}
      • addedInput schema / properties / env
        Added value: +{
        +  "description": "环境名",
        +  "minLength": 1,
        +  "title": "Env",
        +  "type": "string"
        +}
      • addedInput schema / properties / page
        Added value: +{
        +  "default": 0,
        +  "minimum": 0,
        +  "title": "Page",
        +  "type": "integer"
        +}
      • addedInput schema / properties / page_size
        Added value: +{
        +  "default": 20,
        +  "maximum": 100,
        +  "minimum": 1,
        +  "title": "Page Size",
        +  "type": "integer"
        +}
      • removedInput schema / properties / params
        Removed value: -{
        -  "$ref": "#/$defs/ListDeployRecordsInput"
        -}
      • addedInput schema / properties / response_format
        Added value: +{
        +  "$ref": "#/$defs/ResponseFormat",
        +  "default": "markdown"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "params"
        -]New value: +[
        +  "app_name",
        +  "env"
        +]
    • Changedvela_list_envs7 fields changed
      • removedInput schema / $defs / ListEnvsInput
        Removed 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"
        -}
      • addedInput schema / properties / page
        Added value: +{
        +  "default": 0,
        +  "minimum": 0,
        +  "title": "Page",
        +  "type": "integer"
        +}
      • addedInput schema / properties / page_size
        Added value: +{
        +  "default": 20,
        +  "maximum": 100,
        +  "minimum": 1,
        +  "title": "Page Size",
        +  "type": "integer"
        +}
      • removedInput schema / properties / params
        Removed value: -{
        -  "$ref": "#/$defs/ListEnvsInput"
        -}
      • addedInput schema / properties / project_name
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "按项目过滤",
        +  "title": "Project Name"
        +}
      • addedInput schema / properties / response_format
        Added value: +{
        +  "$ref": "#/$defs/ResponseFormat",
        +  "default": "markdown"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "params"
        -]
    • Changedvela_list_project_targets5 fields changed
      • removedInput schema / $defs / ListProjectTargetsInput
        Removed 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"
        -}
      • removedInput schema / properties / params
        Removed value: -{
        -  "$ref": "#/$defs/ListProjectTargetsInput"
        -}
      • addedInput schema / properties / project_name
        Added value: +{
        +  "description": "项目名称",
        +  "minLength": 1,
        +  "title": "Project Name",
        +  "type": "string"
        +}
      • addedInput schema / properties / response_format
        Added value: +{
        +  "$ref": "#/$defs/ResponseFormat",
        +  "default": "markdown",
        +  "description": "输出格式:markdown 或 json"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "params"
        -]New value: +[
        +  "project_name"
        +]
    • Changedvela_list_project_users5 fields changed
      • removedInput schema / $defs / ListProjectUsersInput
        Removed 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"
        -}
      • removedInput schema / properties / params
        Removed value: -{
        -  "$ref": "#/$defs/ListProjectUsersInput"
        -}
      • addedInput schema / properties / project_name
        Added value: +{
        +  "description": "项目名称",
        +  "minLength": 1,
        +  "title": "Project Name",
        +  "type": "string"
        +}
      • addedInput schema / properties / response_format
        Added value: +{
        +  "$ref": "#/$defs/ResponseFormat",
        +  "default": "markdown"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "params"
        -]New value: +[
        +  "project_name"
        +]
    • Changedvela_list_projects12 fields changed
      • removedInput schema / $defs / ListProjectsInput
        Removed 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"
        -}
      • addedInput schema / properties / page
        Added value: +{
        +  "default": 0,
        +  "description": "页码(从 0 开始)",
        +  "minimum": 0,
        +  "title": "Page",
        +  "type": "integer"
        +}
      • addedInput schema / properties / page_size
        Added value: +{
        +  "default": 20,
        +  "description": "分页大小",
        +  "maximum": 100,
        +  "minimum": 1,
        +  "title": "Page Size",
        +  "type": "integer"
        +}
      • removedInput schema / properties / params
        Removed value: -{
        -  "$ref": "#/$defs/ListProjectsInput"
        -}
      • addedInput schema / properties / response_format
        Added value: +{
        +  "$ref": "#/$defs/ResponseFormat",
        +  "default": "markdown",
        +  "description": "输出格式:markdown 或 json"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "params"
        -]
      • addedOutput schema / additionalProperties
        Added value: +true
      • addedOutput schema / description
        Added value: +"vela_list_projects 的结构化输出"
      • addedOutput schema / properties / projects
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "additionalProperties": true,
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Projects"
        +}
      • removedOutput schema / properties / result
        Removed value: -{
        -  "title": "Result",
        -  "type": "string"
        -}
      • removedOutput schema / required
        Removed value: -[
        -  "result"
        -]
      • changedOutput schema / title
        Previous value: -"vela_list_projectsOutput"New value: +"ListProjectsOutput"
    • Changedvela_list_revisions9 fields changed
      • removedInput schema / $defs / ListRevisionsInput
        Removed 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"
        -}
      • addedInput schema / properties / app_name
        Added value: +{
        +  "description": "应用名称",
        +  "minLength": 1,
        +  "title": "App Name",
        +  "type": "string"
        +}
      • addedInput schema / properties / env
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "按环境过滤",
        +  "title": "Env"
        +}
      • addedInput schema / properties / page
        Added value: +{
        +  "default": 0,
        +  "description": "页码(从 0 开始)",
        +  "minimum": 0,
        +  "title": "Page",
        +  "type": "integer"
        +}
      • addedInput schema / properties / page_size
        Added value: +{
        +  "default": 20,
        +  "description": "分页大小",
        +  "maximum": 100,
        +  "minimum": 1,
        +  "title": "Page Size",
        +  "type": "integer"
        +}
      • removedInput schema / properties / params
        Removed value: -{
        -  "$ref": "#/$defs/ListRevisionsInput"
        -}
      • addedInput schema / properties / response_format
        Added value: +{
        +  "$ref": "#/$defs/ResponseFormat",
        +  "default": "markdown"
        +}
      • addedInput schema / properties / status
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "按状态过滤,如 complete/failed/terminated",
        +  "title": "Status"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "params"
        -]New value: +[
        +  "app_name"
        +]
    • Changedvela_list_targets7 fields changed
      • removedInput schema / $defs / ListTargetsInput
        Removed 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"
        -}
      • addedInput schema / properties / page
        Added value: +{
        +  "default": 0,
        +  "minimum": 0,
        +  "title": "Page",
        +  "type": "integer"
        +}
      • addedInput schema / properties / page_size
        Added value: +{
        +  "default": 20,
        +  "maximum": 100,
        +  "minimum": 1,
        +  "title": "Page Size",
        +  "type": "integer"
        +}
      • removedInput schema / properties / params
        Removed value: -{
        -  "$ref": "#/$defs/ListTargetsInput"
        -}
      • addedInput schema / properties / project_name
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "按项目过滤",
        +  "title": "Project Name"
        +}
      • addedInput schema / properties / response_format
        Added value: +{
        +  "$ref": "#/$defs/ResponseFormat",
        +  "default": "markdown"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "params"
        -]
    • Changedvela_list_triggers5 fields changed
      • removedInput schema / $defs / ListTriggersInput
        Removed 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"
        -}
      • addedInput schema / properties / app_name
        Added value: +{
        +  "description": "应用名称",
        +  "minLength": 1,
        +  "title": "App Name",
        +  "type": "string"
        +}
      • removedInput schema / properties / params
        Removed value: -{
        -  "$ref": "#/$defs/ListTriggersInput"
        -}
      • addedInput schema / properties / response_format
        Added value: +{
        +  "$ref": "#/$defs/ResponseFormat",
        +  "default": "markdown"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "params"
        -]New value: +[
        +  "app_name"
        +]
    • Changedvela_list_workflow_records9 fields changed
      • removedInput schema / $defs / ListWorkflowRecordsInput
        Removed 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"
        -}
      • addedInput schema / properties / app_name
        Added value: +{
        +  "description": "应用名称",
        +  "minLength": 1,
        +  "title": "App Name",
        +  "type": "string"
        +}
      • addedInput schema / properties / page
        Added value: +{
        +  "default": 0,
        +  "minimum": 0,
        +  "title": "Page",
        +  "type": "integer"
        +}
      • addedInput schema / properties / page_size
        Added value: +{
        +  "default": 20,
        +  "maximum": 100,
        +  "minimum": 1,
        +  "title": "Page Size",
        +  "type": "integer"
        +}
      • removedInput schema / properties / params
        Removed value: -{
        -  "$ref": "#/$defs/ListWorkflowRecordsInput"
        -}
      • addedInput schema / properties / record
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "记录名。填写后返回该次执行的详情(含步骤状态)",
        +  "title": "Record"
        +}
      • addedInput schema / properties / response_format
        Added value: +{
        +  "$ref": "#/$defs/ResponseFormat",
        +  "default": "markdown"
        +}
      • addedInput schema / properties / workflow_name
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "工作流名(形如 workflow-<env>)。不填则返回该应用的工作流列表",
        +  "title": "Workflow Name"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "params"
        -]New value: +[
        +  "app_name"
        +]
    • Removedvela_resume_workflow
    • Removedvela_rollback_application
    • Changedvela_system_info4 fields changed
      • removedInput schema / $defs / SystemInfoInput
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "查询系统信息的输入参数",
        -  "properties": {
        -    "response_format": {
        -      "$ref": "#/$defs/ResponseFormat",
        -      "default": "markdown"
        -    }
        -  },
        -  "title": "SystemInfoInput",
        -  "type": "object"
        -}
      • removedInput schema / properties / params
        Removed value: -{
        -  "$ref": "#/$defs/SystemInfoInput"
        -}
      • addedInput schema / properties / response_format
        Added value: +{
        +  "$ref": "#/$defs/ResponseFormat",
        +  "default": "markdown"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "params"
        -]
    • Removedvela_terminate_workflow
    • Changedvela_velaql_query12 fields changed
      • addedInput schema / $defs / ResponseFormat
        Added value: +{
        +  "enum": [
        +    "markdown",
        +    "json"
        +  ],
        +  "title": "ResponseFormat",
        +  "type": "string"
        +}
      • removedInput schema / $defs / VelaQLInput
        Removed 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"
        -}
      • addedInput schema / $defs / VelaQLView
        Added 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"
        +}
      • addedInput schema / properties / cluster
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "多集群覆盖; 应用层 view 忽略此参数 (应用通过 target 决定集群), pod-view / collect-logs 此参数为必填 (在 params 之外, 此处供未来 cluster 路由优化)",
        +  "title": "Cluster"
        +}
      • removedInput schema / properties / params / $ref
        Removed value: -"#/$defs/VelaQLInput"
      • addedInput schema / properties / params / additionalProperties
        Added value: +true
      • addedInput schema / properties / params / description
        Added 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]}"
      • addedInput schema / properties / params / title
        Added value: +"Params"
      • addedInput schema / properties / params / type
        Added value: +"object"
      • addedInput schema / properties / response_format
        Added value: +{
        +  "$ref": "#/$defs/ResponseFormat",
        +  "default": "markdown"
        +}
      • addedInput schema / properties / view
        Added value: +{
        +  "$ref": "#/$defs/VelaQLView",
        +  "description": "视图。必须是受支持 view 之一。"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "params"
        -]New value: +[
        +  "view",
        +  "params"
        +]
  2. 28 tool updatesv0.1.1
    • First observedvela_compare_application
    • First observedvela_create_application
    • First observedvela_create_trigger
    • First observedvela_deploy_application
    • First observedvela_dry_run_application
    • First observedvela_get_app_status
    • First observedvela_get_application
    • First observedvela_get_application_manifest
    • First observedvela_get_workflow_logs
    • First observedvela_list_addons
    • First observedvela_list_applications
    • First observedvela_list_clusters
    • First observedvela_list_components
    • First observedvela_list_definitions
    • First observedvela_list_deploy_records
    • First observedvela_list_envs
    • First observedvela_list_project_targets
    • First observedvela_list_project_users
    • First observedvela_list_projects
    • First observedvela_list_revisions
    • First observedvela_list_targets
    • First observedvela_list_triggers
    • First observedvela_list_workflow_records
    • First observedvela_resume_workflow
    • First observedvela_rollback_application
    • First observedvela_system_info
    • First observedvela_terminate_workflow
    • First observedvela_velaql_query

TDQS

A3.7/5.0

Scored across 21 tools

Disambiguation4/5

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.

Naming Consistency4/5

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.

Tool Count4/5

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.

Completeness4/5

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

ActivitySlowing
ResponsivenessNo issues

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

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables 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.
    9
    13
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to interact with ArgoCD APIs through standardized MCP tools for managing applications, resources, and deployments.
    MIT