agc-connect-mcp
This MCP server lets AI assistants manage Huawei AppGallery Connect (apps, uploads, reviews, reports, arbitrary Connect APIs) and search official HarmonyOS developer documentation.
HarmonyOS docs: search and fetch official Huawei HarmonyOS documentation (no AGC credentials needed)
AGC API catalog: search ~200 Connect API endpoints and read full API parameter docs
Credential/status check: verify Service Account / API client configuration and site
Apps & projects: list projects/apps, get appId from package name, view app details, audit comments, phased release info
File & package management: upload files (APK/AAB/APP/screenshots/videos), attach software packages, check parse status
Publishing: submit apps for review with timed or phased release options
Reviews & ratings: list reviews, reply publicly, view rating summaries and breakdowns
Reports: export download/install/failure/user/payment reports, download and preview them
Generic API calls: call any Connect API (PMS, provisioning, testing, domain, qualification, agreements) with auto-selected auth
Intents Kit: share or revoke intent events to Xiaoyi (requires app-level credentials)
Safety controls: read-only mode and confirmation prompts for externally visible actions
Provides tools for interacting with AppGallery Connect to manage apps, upload packages, submit releases, reply to reviews, view ratings, export reports, and call the full Connect API for HarmonyOS and Android apps.
Provides search and full-text retrieval of official HarmonyOS developer documentation, including API references, development guides, best practices, FAQs, and publishing guidelines.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@agc-connect-mcpSearch HarmonyOS docs for upload API and check my app's latest review status"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
agc-connect-mcp
English | 中文
面向华为鸿蒙开发者的 MCP(Model Context Protocol)服务。装这一个,就能在 Claude Code、Cursor、VS Code、Codex、Gemini CLI、Trae、DevEco Studio 等 AI 工具里:
操作 AppGallery Connect:查询应用和审核状态、上传软件包、提交发布、查看并回复评论、查评分、导出报表,以及调用其余全部 Connect API(PMS 商品、证书 / Profile / 设备、测试版本、域名、资质审核、协议管理等)。
查询鸿蒙官方文档:内置华为官方「鸿蒙开发者知识 MCP」,可检索 API 参考、开发指南、最佳实践、FAQ、上架规范等(与官网准实时同步),无需再单独配置。
本项目为社区开源项目,与华为公司无关,也未获其背书。AppGallery Connect、HarmonyOS 为华为技术有限公司的商标。
功能
工具 | 作用 | 需要 AGC 凭据 |
| 检索鸿蒙官方文档、获取全文 | 否 |
| 搜索内置的 Connect API 目录(约 200 个接口、450 篇文档),在线读取接口参数文档 | 否 |
| 检查凭据与站点配置 | — |
| 列出所有项目与应用;包名 → appId | 是 |
| 应用详情(基本信息、多语言、审核意见、分阶段发布) | 是 |
| 上传本地文件(软件包、图标、截图、视频、资质材料),返回 objectId | 是 |
| 上传并关联软件包(HarmonyOS | 是 |
| 查询软件包解析状态 | 是 |
| 提交审核发布(支持定时上架、分阶段发布) | 是 |
| 评论查询与回复、评分统计 | 是 |
| 导出下载安装、安装失败、用户分析、付费等报表,可下载到本地并预览 | 是 |
| 以当前凭据调用任意 Connect API,覆盖所有没有专用工具的接口 | 是 |
| 意图框架(Intents Kit)意图共享、事件撤销:向小艺推送或撤回事件提醒 | 需应用凭据(见下文) |
大多数工具有 platform 参数:harmonyos 表示 HarmonyOS 5 及以上的应用和元服务,android 表示 Android 以及 HarmonyOS 4 及以下。
Related MCP server: App Store Connect MCP
安装
需要 Node.js 20.11 或以上。
各客户端的配置都是同一套「命令 + 参数 + 环境变量」:
command: npx
args: -y github:chen2he/agc-connect-mcp
env: AGC_SERVICE_ACCOUNT_FILE=/path/to/service-account.json
AGC_CLIENT_FILE=/path/to/api-client.jsonnpx 会直接从 GitHub 下载本项目并自动编译(仅首次运行需要,之后使用缓存)。两个 env 都可以省略:不配置 AGC 凭据时,文档检索类工具照常可用。凭据的获取方法见配置 AGC 凭据。
git clone https://github.com/chen2he/agc-connect-mcp.git
cd agc-connect-mcp
npm install # 会自动编译到 dist/然后把下文各配置中的 npx -y github:chen2he/agc-connect-mcp 换成 node /绝对路径/agc-connect-mcp/dist/index.js。
Claude Code
claude mcp add agc -s user \
-e AGC_SERVICE_ACCOUNT_FILE=/path/to/service-account.json \
-e AGC_CLIENT_FILE=/path/to/api-client.json \
-- npx -y github:chen2he/agc-connect-mcpCodex CLI
codex mcp add agc \
--env AGC_SERVICE_ACCOUNT_FILE=/path/to/service-account.json \
--env AGC_CLIENT_FILE=/path/to/api-client.json \
-- npx -y github:chen2he/agc-connect-mcp也可以直接编辑 ~/.codex/config.toml:
[mcp_servers.agc]
command = "npx"
args = ["-y", "github:chen2he/agc-connect-mcp"]
env = { AGC_SERVICE_ACCOUNT_FILE = "/path/to/service-account.json", AGC_CLIENT_FILE = "/path/to/api-client.json" }使用 mcpServers JSON 的客户端
Claude Desktop、Cursor、Windsurf、Cline / Roo Code、Gemini CLI、Trae、DevEco Studio(CodeGenie)、Cherry Studio 等都用下面这种格式:
{
"mcpServers": {
"agc": {
"command": "npx",
"args": ["-y", "github:chen2he/agc-connect-mcp"],
"env": {
"AGC_SERVICE_ACCOUNT_FILE": "/path/to/service-account.json",
"AGC_CLIENT_FILE": "/path/to/api-client.json"
}
}
}
}客户端 | 配置文件位置 |
Claude Desktop | macOS: |
Cursor | 全局 |
Windsurf |
|
Gemini CLI |
|
Cline / Roo Code | 插件面板 → MCP Servers → 编辑配置 |
Trae / DevEco Studio / Cherry Studio 等 | 在各自的 MCP 设置里添加上面的 JSON |
VS Code(GitHub Copilot Agent 模式)
.vscode/mcp.json,或者用户设置里的 MCP 配置:
{
"servers": {
"agc": {
"type": "stdio",
"command": "npx",
"args": ["-y", "github:chen2he/agc-connect-mcp"],
"env": { "AGC_SERVICE_ACCOUNT_FILE": "/path/to/service-account.json" }
}
}
}Windows 用户:少数客户端无法直接启动
npx,可以把命令改成"command": "cmd", "args": ["/c", "npx", "-y", "github:chen2he/agc-connect-mcp"]。
配置 AGC 凭据
在 AppGallery Connect 打开「用户与访问 → API 密钥 → Connect API」创建凭据。两种凭据可以同时配置,服务会按每个接口文档所支持的鉴权方式自动选用,两种都支持时优先用 Service Account。
凭据 | 创建方式 | 环境变量 |
Service Account | 「Service Account」页签 → 创建,类型选开发者级,会自动下载 |
|
API 客户端 | 「API 客户端」页签 → 创建,项目保持 N/A,下载凭据 JSON |
|
根据官方文档,两种凭据能调用的接口有差别,建议两种都配上:
接口 | Service Account | API 客户端 |
HarmonyOS 发布 / 上传 / 测试 / 证书 Profile / 域名 | ✅ | ✅ |
大部分报表、包名查 appId、项目与应用列表 | ✅ | ✅ |
评论与评分、PMS 商品、Android 发布(v2 接口) | ❌ | ✅ |
团队列表、应用简略信息、证书指纹查询 / 添加 | ❌ | ❌(仅 OAuth 客户端,面向平台类开发者) |
凭据的角色决定能调用哪些接口,例如发布需要「APP 管理员」及以上,报表需要「运营」。配置好后,在 AI 工具里让它调用 agc_auth_status 就能验证。
意图框架(Intents Kit)的应用凭据
intents_* 工具调用的是 hag.cloud.huawei.com 上的意图框架服务端接口,用的是每个应用自己的 Client ID / Client Secret(AGC「项目设置 → 应用」里查看),不是上面的 Connect API 凭据。可以用一个 JSON 文件配置多个应用:
{
"my-app": { "client_id": "应用的 Client ID", "client_secret": "应用的 Client Secret" }
}然后设置 AGC_APP_CLIENTS_FILE=/path/to/app-clients.json,调用时用 app 参数指定别名(只配了一个应用时可以省略)。只有一个应用时,也可以直接用 AGC_APP_CLIENT_ID + AGC_APP_CLIENT_SECRET。
意图注册、特性配置、配置检查与提交审核都在小艺开放平台的网页端完成,华为没有开放这部分的管理接口。小艺开放平台对开发者开放的服务端接口只有意图共享 / 事件撤销(已支持)和账号绑定 / 解绑通知。
其他环境变量
变量 | 说明 |
|
|
| 设为 |
| 设为 |
| 自定义知识库 MCP 地址(默认为华为官方地址) |
| Connect API 文档缓存目录,默认 |
| 单次请求超时,默认 120000 |
使用示例
「ArkUI 的 Navigation 怎么跨包路由?给我官方示例。」
「列出我在 AGC 上的所有应用和它们的审核状态。」
「把
build/outputs/default/entry-default-signed.app上传到 com.example.app,解析完成后提交发布,备注写‘修复若干问题’。」「导出过去 30 天按国家分组的下载安装报表,告诉我哪几个国家增长最快。」
「看看最近一个月的 1~2 星差评,帮我起草回复。」(提交回复前会先请你确认)
「用 PMS API 创建一个 6 元的消耗型商品。」(会先查接口文档,再通过
agc_request调用)
注意事项
评论与评分只对已正式上架的应用有数据。审核中或未发布的应用会返回
50010028(“应用不属于该开发者”)。PMS 接口要把
appId放在请求头里(agc_request的headers参数)。agc_get_api_doc会列出这类需要自行传入的请求头。报表返回的下载地址约 5 分钟后失效,需要报表内容时直接用
downloadTo参数下载。意图共享的
intentEntityInfo字段因意图而异,可以先用harmonyos_search_docs查「<意图名> 意图 Schema」;推送的是面向真实用户的提醒,务必确认openId/sid正确。提交发布、回复评论、推送意图事件、下架、删除等会对外生效的操作,工具说明里要求 AI 先向你确认;也可以设置
AGC_READ_ONLY=true,从根本上禁止写操作。
安全
Service Account 的 JWT 在本地用 PS256 签名,私钥不会发送到任何地方;带凭据的请求只会发往
*.huawei.com。建议通过文件路径(
AGC_SERVICE_ACCOUNT_FILE/AGC_CLIENT_FILE)提供凭据,不要把密钥直接写进客户端的配置 JSON,凭据文件的权限建议设为600。本仓库不包含任何华为文档正文,只有接口元数据(方法、路径、标题、鉴权方式);文档正文在运行时从华为开发者文档中心拉取。
开发
npm install
npm test # 编译并运行端到端测试(本地模拟服务器,不需要网络和真实凭据)
npm run update-catalog # 从华为文档中心重新生成 data/ 下的接口目录;加 -- --refresh 忽略本地缓存目录结构:
src/
index.ts MCP 服务入口
tools.ts 全部工具定义
client.ts Connect API 请求、上传、下载
auth.ts Service Account JWT / API 客户端 token
catalog.ts 接口目录检索、按接口选择鉴权方式
portal.ts 华为文档中心接口与文档缓存
html2md.ts 文档 HTML → Markdown
knowledge.ts 鸿蒙开发者知识 MCP 代理
hag.ts 意图框架(Intents Kit)服务端接口与应用级 token
update-catalog.ts 维护脚本:生成 data/
data/ 接口目录(元数据)
test/ 端到端测试许可证
Available Tools
17 toolsagc_auth_status检查 AGC 鉴权配置ARead-only
显示已配置的凭据(Service Account / API 客户端)、站点、只读模式,并逐一验证:API 客户端会向华为换取 token;Service Account 会本地签发 JWT 并调用一次查询接口确认可用。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the readOnlyHint annotation by disclosing the exact verification steps: API clients exchange tokens with Huawei, and Service Accounts locally sign JWT and call a query interface. This informs the agent that the tool may perform network calls and credential validation despite being read-only. No contradiction with annotations exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense sentence that front-loads what is displayed and then provides the verification details. Every clause adds value, and the structure is easy to parse. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter diagnostic tool with readOnlyHint, this description is complete. It covers what is displayed, what is verified, and how each credential type is validated. Since there is no output schema, the description sufficiently communicates the tool's behavior and expected result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and schema coverage is 100%, so there is nothing for the description to add. The baseline of 4 applies because the description correctly omits parameter details that would be redundant.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the action (display and verify) and the resource (AGC auth configuration: credentials, sites, read-only mode). It distinguishes this tool from the sibling tools, which focus on API requests, app info, reviews, and file operations. The addition of concrete verification steps leaves no ambiguity about what this tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool should be used to inspect and validate AGC authentication setup, especially before making API calls. However, it does not explicitly state when to use it compared with alternatives, nor does it mention any exclusions or prerequisites. The intended usage is understandable but left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agc_get_api_doc查看 AGC API 文档ARead-only
读取某个 Connect API 文档的完整内容(Markdown,含接口 URL、Header/Query/Body 参数表、响应字段、示例)。正文从华为开发者文档中心实时拉取并在本地缓存 7 天。docId 来自 agc_search_api 的 doc 字段;也可传文档标题(精确)或 docId 片段。
| Name | Required | Description | Default |
|---|---|---|---|
| docId | Yes | 文档 ID,如 agc-help-publish-api-app-submit-0000002271160585 | |
| includeExamples | No | 是否包含调用示例代码(Java),默认 false 以节省篇幅 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark readOnlyHint and openWorldHint. The description adds meaningful behavioral context beyond those: content is pulled live from Huawei's documentation center and cached locally for 7 days, and it accepts title/docId fragments as well as full docIds. This is useful operational information; no contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two dense sentences: the first states the deliverable and format, the second states source/caching behavior and input sourcing. No filler or repetition of schema field names.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only doc-fetch tool with no output schema, the description fully characterizes the return value (Markdown with URL, parameter tables, response fields, examples) and the includeExamples default. It gives enough operational detail to select and invoke the tool correctly, with annotations covering the safety profile.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, and the description goes beyond the schema by explaining that docId can come from agc_search_api's doc field, or be an exact title or a docId fragment. This resolves ambiguity not present in the schema's terse docId description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a concrete verb-resource pair: it reads the full contents of a Connect API document, and enumerates what that content contains (Markdown, interface URL, header/query/body parameter tables, response fields, examples). It also explicitly ties docId to agc_search_api's doc field, which differentiates it from the search sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear context: use this after agc_search_api, whose doc field supplies docId, and it notes the alternative input forms (exact title or docId fragment). It does not explicitly state when not to use it or name excluded alternatives, but the routing from search to retrieval is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agc_get_app_id按包名查询应用 IDARead-only
根据应用包名(最多 50 个,逗号分隔)查询 AGC 应用 ID(appId)。
| Name | Required | Description | Default |
|---|---|---|---|
| packageNames | Yes | 包名,多个用英文逗号分隔,如 com.example.app |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, and the description does not contradict them. It adds useful constraints (max 50 names) and the fact that the result is an appId, but it does not describe response shape, ordering, error behavior, or how open-world results should be interpreted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no filler: it front-loads the input constraint and states the output. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, read-only lookup tool, the description covers what is consumed and what is produced at a sufficient level. It could be more explicit about how multiple package names map to returned appIds, but the low complexity and readOnly/openWorld annotations make the current description reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents packageNames with comma-separated format and an example, so the baseline is high. The description adds the meaningful max-50 bound that is not present in the schema, which helps an agent correctly size the input before calling the tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the exact operation and resource: query AGC app ID from package names, with the specific limit of 50 comma-separated names. It is clearly a package-name-to-appId lookup, though it does not explicitly contrast itself with sibling tools like agc_list_apps or agc_get_app_info.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to choose this tool over sibling alternatives, nor any when-not-to-use conditions. The only context is the operation itself; no alternative tool is named or excluded.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agc_get_app_info查询应用详细信息BRead-only
查询应用基本信息、各语言描述、审核意见、分阶段发布信息等。
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | 语言,如 zh-CN、en-US;不传返回全部语言 | |
| appId | Yes | ||
| platform | Yes | 应用平台:harmonyos = HarmonyOS 5 及以上应用/元服务(v3 接口);android = Android 及 HarmonyOS 4 及以下(v2 接口) | |
| versionId | No | HarmonyOS 版本 ID(releaseType=6 时必填) | |
| releaseType | No | 发布方式:1 全网(默认);HarmonyOS 可用 6 = 测试发布(需配合 versionId);Android 可用 3 = 分阶段 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the agent knows this is a safe read operation. The description adds that it returns multiple categories of information (basic info, language descriptions, review comments, staged release info), which is useful. However, it doesn't disclose details like pagination, response size, or that review comments might be nested within the response.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the main purpose and lists the key content categories. It's efficient and doesn't waste words, though it could be slightly more structured with separators.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only query tool with 80% schema coverage and no output schema, the description covers the main purpose and content categories. However, it doesn't mention the relationship between releaseType and versionId (though the schema does), nor does it clarify what '分阶段发布信息' means in practice. The openWorldHint suggests the tool may return data from external sources, but the description doesn't elaborate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 80%, so the schema already documents most parameters. The description adds the overall purpose but doesn't add meaning beyond the schema for individual parameters. The releaseType and versionId relationship is already in the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb ('查询' = query) and resource ('应用详细信息' = app detailed info), listing specific content categories: basic info, language descriptions, review comments, staged release info. It distinguishes from siblings like agc_list_apps (which lists apps) and agc_list_reviews (which lists reviews), though it doesn't explicitly name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for querying app details, and the schema's platform/releaseType fields provide some context (e.g., harmonyos vs android, releaseType=6 requires versionId). However, it doesn't explicitly state when to use this tool vs alternatives like agc_list_apps or agc_list_reviews, nor does it mention exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agc_get_package_compile_status查询软件包编译/解析状态CRead-only
查询软件包解析状态。successStatus:0 正常 / 1 解析中 / 2 失败。
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | ||
| pkgIds | Yes | 软件包 ID,逗号分隔(HarmonyOS 为 packageId,Android 为 pkgVersion) | |
| platform | Yes | 应用平台:harmonyos = HarmonyOS 5 及以上应用/元服务(v3 接口);android = Android 及 HarmonyOS 4 及以下(v2 接口) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint and openWorldHint annotations already communicate safety and openness. The description adds value by explaining successStatus values (0/1/2), which is useful output context not present in the schema. It does not describe error handling, missing packages, or rate limits, but with annotations covering the read-only nature, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the core action and includes the key status mapping. It is efficient, though slightly too terse and omits the compile aspect from the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a status-query tool with no output schema, the description should at least clarify the return semantics and suggest when to call it. It does explain successStatus but misses usage timing, the compile-vs-parse ambiguity, and any note about batch behavior. The schema covers parameters, but the overall context feels incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67%, and the description adds no parameter-level explanations. The schema documents pkgIds and platform, but appId remains undescribed in both schema and description. The description's mention of successStatus does not aid parameter understanding, so it fails to compensate for the appId gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the action ('查询') and resource ('软件包解析状态'), and the title clarifies it relates to compile/parse status. It is distinguishable from sibling tools like agc_get_app_info by the specific status focus. However, the description only says '解析' (parse) while the title says '编译/解析' (compile/parse), a minor inconsistency.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention typical triggers (e.g., after package upload), prerequisites, or why to use this instead of agc_get_app_info. Usage context must be inferred entirely 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.
agc_get_ratings查询应用评分ARead-only
查询应用评分汇总(平均分、各星级数量)和评分明细。仅已上架应用有数据;时间跨度不超过 6 个月。需要 API 客户端凭据。
| Name | Required | Description | Default |
|---|---|---|---|
| end | Yes | 结束时间,格式同上;YYYY-MM-DD 取当天结束 | |
| site | No | 站点:cn 中国 / de 德国 / sg 新加坡 / ru 俄罗斯。默认使用 AGC_SITE 配置 | |
| appId | Yes | ||
| begin | Yes | 开始时间:YYYY-MM-DD(按北京时间)、ISO 时间或毫秒时间戳 | |
| platform | Yes | 应用平台:harmonyos = HarmonyOS 5 及以上应用/元服务(v3 接口);android = Android 及 HarmonyOS 4 及以下(v2 接口) | |
| countries | No | 国家码,逗号分隔,默认 CN | CN |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
注解已标明 readOnlyHint=true,描述额外补充了注解未覆盖的行为约束:仅已上架应用有数据、时间跨度限制、需要凭据。这些是有价值的上下文,但未披露分页或返回格式等行为细节。
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
描述仅三句话,每句都有实际作用:说明功能与返回值、说明数据条件、说明认证要求。信息前置且无冗余。
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
对于只读查询工具,描述已覆盖返回内容类型、数据可用性条件、时间跨度限制和认证要求;schema 也处理了大部分参数说明。虽无输出 schema,但对返回内容的概括已足够,缺少示例和分页说明属于次要不足。
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
输入 schema 的参数描述覆盖率达到 83%,大多数参数已由 schema 说明,描述本身未增加参数级语义。appId 缺少描述但整体覆盖率仍高,因此给予基准 3 分。
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
描述明确了操作对象(应用评分)和动作(查询),并指出返回汇总(平均分、各星级数量)和明细,功能边界清楚。但没有明确与兄弟工具 agc_list_reviews 区分,因此未达到满分。
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
描述给出了明确的使用条件:仅已上架应用有数据、时间跨度不超过 6 个月、需要 API 客户端凭据。虽然没有明确说何时不使用或给出替代工具,但这些上下文足以帮助智能体判断适用场景。
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agc_get_report导出 AGC 报表ARead-only
导出运营报表(CSV/Excel),返回文件下载地址(有效期约 5 分钟,需要内容时直接传 downloadTo);可选下载到本地并预览前若干行。时间跨度一般不超过 180 天。可用报表:
harmony-download:HarmonyOS 应用下载安装(harmonyos)
harmony-install-failed:HarmonyOS 应用安装失败(harmonyos)
harmony-user-analysis:HarmonyOS 应用/元服务用户分析(harmonyos)
harmony-atomic-distribute:HarmonyOS 元服务分发分析(harmonyos)
download:下载安装(android)
install-failed:安装失败(android)
new-and-retention:新增和留存(android)
iap:应用内付费(android)
paid-download:付费下载(android)
paid-download-detail:付费下载明细(android)
game-reservation:预约(android)
activity-award:指定用户群发奖(android)
coupon:优惠券活动(android)
atomic-distribute:元服务分发分析(旧版)(android)
atomic-user:元服务新增留存(旧版)(android)
atomic-widget:元服务卡片分析(旧版)(android)
| Name | Required | Description | Default |
|---|---|---|---|
| site | No | 站点:cn 中国 / de 德国 / sg 新加坡 / ru 俄罗斯。默认使用 AGC_SITE 配置 | |
| appId | Yes | ||
| report | Yes | ||
| endDate | Yes | 结束日期 YYYY-MM-DD 或 YYYYMMDD(UTC) | |
| filters | No | 过滤器,键为 filterCondition、值为 filterConditionValue,如 {"countryId":"CN","appVersion":"1.0.0"} | |
| groupBy | No | 分组:date(默认)/ countryId / appVersion / businessType / province / city / deviceName 等,视报表而定 | |
| language | No | zh-CN | |
| startDate | Yes | 开始日期 YYYY-MM-DD 或 YYYYMMDD(UTC) | |
| downloadTo | No | 下载保存路径(文件或目录);传 "tmp" 保存到系统临时目录。不传则只返回下载地址 | |
| exportType | No | CSV | |
| extraQuery | No | 其他报表特有的 Query 参数(如 timeType),参见 agc_get_api_doc | |
| previewLines | No | 下载 CSV 后预览的行数,默认 30 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description adds crucial behavioral details: download URL validity (~5 minutes), optional local download with preview, and the 180-day time span limit. These are not in the annotations and materially help the agent decide how to handle results. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: it front-loads the core purpose and behavior, then uses a bullet list for the report types. Every sentence carries necessary information; the length is justified by the need to enumerate 16 report types. No redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (12 parameters, nested objects, no output schema), the description covers the main flow (export, download, preview) and key constraints (time span). It does not detail the response format or explain all optional parameters, but the schema already documents many, and the description provides enough for an agent to successfully invoke the tool. Slightly incomplete for edge cases like extraQuery.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description significantly enriches the 'report' parameter by mapping each enum value to its meaning (e.g., harmony-download = HarmonyOS 应用下载安装). It also clarifies downloadTo's purpose. However, it does not explain filters, groupBy, extraQuery, or site beyond the schema's partial descriptions (67% coverage). It adds value but does not fully compensate for all undocumented parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool exports operational reports in CSV/Excel, returns a download URL, and optionally downloads and previews. It lists all report types with meanings, making it unambiguous. It is distinct from sibling tools like agc_request or agc_get_api_doc because it is specifically for report export.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use it (when exporting reports) and gives a practical tip (pass downloadTo if content is needed). It does not explicitly mention alternatives or when not to use it, but the sibling tools are clearly different, so the guidance is adequate though not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agc_list_apps列出项目与应用ARead-only
列出当前团队的所有 AGC 项目及每个项目下的应用(appId、名称、包名、设备类型)。(官方的“获取团队列表 / 应用简略信息”接口只对 OAuth 客户端开放,本工具改用项目管理接口实现。)
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | No | 只查询某个项目;不传则列出全部项目 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true. The description adds useful context about the 'current team' scope and the API-workaround rationale, but it does not disclose behaviors like pagination, data volume, or authentication failure handling. This is acceptable for a simple read-only list, but not deeply transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two compact sentences: the primary behavior is front-loaded, and the parenthetical implementation note is short and relevant. There is no filler or redundant restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only listing tool with one optional parameter, the description covers scope, returned data, and the implementation rationale. Combined with the readOnlyHint annotation and the fully documented schema, an agent has everything needed to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single optional projectId parameter is fully described in the schema ('only query a certain project; list all if not passed'), so the description does not need to add parameter details. With 100% schema coverage, the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('list all AGC projects and apps under each project') and enumerates the returned fields (appId, name, package name, device type). It also identifies the implementation source, making the tool's purpose unambiguous and distinguishable from more specific AGC tools like agc_get_app_info.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: this is the general listing tool for projects and apps, and it explains why it exists (the official API is OAuth-only, so it uses the project management API instead). It does not explicitly name alternatives or when-not-to-use conditions, but the listing intention is clear enough for an agent to route appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agc_list_reviews查询应用评论ARead-only
查询应用评论列表(时间跨度不超过 6 个月,一次只能查询同一站点内的国家)。需要 API 客户端凭据(评论接口不支持 Service Account);站点(site)需与所查国家所在站点一致。
| Name | Required | Description | Default |
|---|---|---|---|
| end | Yes | 结束时间,格式同上;YYYY-MM-DD 取当天结束 | |
| page | No | ||
| site | No | 站点:cn 中国 / de 德国 / sg 新加坡 / ru 俄罗斯。默认使用 AGC_SITE 配置 | |
| sort | No | 0 按时间 / 1 分数降序 / 2 分数升序 | |
| appId | Yes | ||
| begin | Yes | 开始时间:YYYY-MM-DD(按北京时间)、ISO 时间或毫秒时间戳 | |
| langs | No | 语言过滤(HarmonyOS 如 zh;Android 如 zh_CN) | |
| limit | No | 每页条数,最大 100,默认 20 | |
| content | No | 评论内容关键词 | |
| ratings | No | 评分过滤,如 "1,2" | |
| platform | Yes | 应用平台:harmonyos = HarmonyOS 5 及以上应用/元服务(v3 接口);android = Android 及 HarmonyOS 4 及以下(v2 接口) | |
| versions | No | 应用版本过滤,逗号分隔 | |
| countries | No | 国家码,逗号分隔,默认 CN | CN |
| devReplyStates | No | 答复状态:0 未答复 / 1 已答复 / 6 用户追加回复 / 3 答复被回复 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint and openWorldHint annotations, the description discloses meaningful behavioral traits: the comments API does not support Service Account authentication, results are limited to 6-month spans, and site-country coupling restricts queries. This adds real operational context that annotations do not provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two dense sentences with no filler. The primary purpose is front-loaded, followed by the most critical operational constraints. Every phrase earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the 14-parameter complexity, the description covers authentication, time limits, and site-country rules. With a rich schema and readOnly/openWorld annotations, it is mostly complete; the main omission is any indication of return shape or pagination behavior, which would further help an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 86%, so the schema already documents most parameters. The description adds cross-parameter semantics: begin/end are limited to 6 months, and site must align with the countries being queried. It does not add nuance for all optional filters like devReplyStates or sort, but the schema largely covers their meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('查询应用评论列表') and resource, and adds important scope constraints (6-month span, single-site country limitation). It does not explicitly differentiate from siblings like agc_get_ratings or agc_reply_review, but the list semantics are clear and distinct enough.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage constraints: time span must not exceed 6 months, only one site's countries can be queried at a time, API client credentials are required, and the site must match the country's site. It does not name alternatives or state when not to use this tool, so it falls short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agc_reply_review回复用户评论A
以开发者身份公开回复用户评论(或回复用户的追加回复)。回复会对所有用户可见,调用前请与用户确认回复内容。
| Name | Required | Description | Default |
|---|---|---|---|
| lang | Yes | 语言:HarmonyOS 取 zh / en / bo / ug;Android 取 zh_CN 这类格式 | |
| site | No | 站点:cn 中国 / de 德国 / sg 新加坡 / ru 俄罗斯。默认使用 AGC_SITE 配置 | |
| appId | Yes | ||
| content | Yes | 回复内容 | |
| platform | Yes | 应用平台:harmonyos = HarmonyOS 5 及以上应用/元服务(v3 接口);android = Android 及 HarmonyOS 4 及以下(v2 接口) | |
| reviewId | Yes | ||
| toReplyId | No | 回复用户的追加回复时传该回复 ID | |
| countryCode | Yes | 评论所属国家码,如 CN | |
| updateReplyId | No | 仅 Android:修改已有回复时传回复 ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the reply is public and requires user confirmation before calling, which is important behavioral context beyond the annotations (readOnlyHint false). It does not contradict the annotations. However, it does not mention rate limits, authentication requirements, or whether replies can be edited later, but the schema covers the update parameter. Overall, it adds meaningful context about the public nature and the need for confirmation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences that front-load the purpose and include the critical pre-call instruction. There is no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutating tool with 9 parameters and no output schema, the description does not explain error conditions, prerequisites (e.g., authentication), or the differences between creating a new reply, replying to a nested reply (toReplyId), or updating an existing reply (updateReplyId). The schema covers these, but the description is minimal and leaves room for an agent to misunderstand the nuances. It is adequate but lacks deeper context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides descriptions for 78% of the parameters, so the description does not need to explain them. The tool description itself does not add any parameter-specific guidance beyond what the schema already provides. Given the high coverage, a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: publicly replying to user comments or to a user's follow-up reply, as a developer. It specifies the action (回复) and the resource (用户评论/追加回复), and distinguishes it from read-only review tools like agc_list_reviews. The visibility condition (回复会对所有用户可见) adds clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes a pre-call guideline (确认回复内容 with the user) but does not explain when to use this tool versus alternatives or any exclusions. Since there is no sibling tool for replying, it is not a major gap, but the guidance is minimal and does not address conditions like when to use updateReplyId or toReplyId.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agc_request调用任意 AGC Connect APIADestructive
以当前凭据调用任意 Connect API 端点(自动添加鉴权头、按站点选择域名)。适用于没有专用工具的接口,如 PMS 商品管理、Provisioning 证书/Profile、Testing 测试版本、Domain、资质审核、协议管理等。调用前请先用 agc_get_api_doc 确认方法、路径和参数。返回 HTTP 状态与原始 JSON。
| Name | Required | Description | Default |
|---|---|---|---|
| auth | No | 强制使用的凭据;默认按接口文档支持的鉴权方式自动选择(两者都支持时优先 Service Account) | |
| body | No | JSON 请求体 | |
| path | Yes | 接口路径,如 /api/publish/v3/app-info;路径参数需自行替换(如 {appId})。也可传完整 https://connect-api*.cloud.huawei.com URL | |
| site | No | 站点:cn 中国 / de 德国 / sg 新加坡 / ru 俄罗斯。默认使用 AGC_SITE 配置 | |
| query | No | Query 参数;数组值会展开为重复参数(如 filterCondition) | |
| method | Yes | ||
| headers | No | 额外请求头。鉴权头自动添加;但部分接口要求业务参数放在请求头里(如 PMS 接口的 appId),见 agc_get_api_doc 的 Header 段 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the agent knows it can be destructive. The description adds useful behavioral context: automatic auth header addition, site-based domain selection, and return format (HTTP status + raw JSON). It also advises checking documentation first, which is a safety measure. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, front-loaded with the main purpose, then examples, a prerequisite instruction, and return format. Every sentence earns its place with no fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a generic API caller with 7 parameters and no output schema, the description covers purpose, when to use, how to use (with prerequisite), and return format. It does not mention error handling or rate limits, but these are less critical given the annotations and the instruction to consult documentation. It is adequately complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 86% and the schema descriptions are detailed (path parameters, auth default selection, site options, query array expansion, header business parameters). The description does not add significant parameter semantics beyond the schema; it only mentions auth and site behavior already covered in the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool calls any Connect API endpoint with current credentials, adding auth headers and selecting domain by site. It explicitly lists example domains (PMS, Provisioning, Testing, etc.) and distinguishes from dedicated tools by saying it is for interfaces without dedicated tools. This is a specific verb+resource with clear scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says it is for interfaces without dedicated tools and instructs to first use agc_get_api_doc to confirm method, path, and parameters. This gives clear when-to-use guidance and a prerequisite, effectively routing the agent away from misuse. It also implies when not to use it (when a dedicated tool exists).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agc_search_api搜索 AGC API 目录ARead-only
在内置的 AppGallery Connect Connect API 目录(约 200 个端点、450 篇文档,含数据模型、错误码、附录)中按关键词搜索。关键词可用中文或英文,空格分隔表示同时匹配。找到端点后用 agc_get_api_doc 查看参数,再用专用工具或 agc_request 调用。
| Name | Required | Description | Default |
|---|---|---|---|
| group | No | 按 API 分组过滤,如 Publishing / Upload / Reports / Comments / PMS / Provisioning / Testing / Domain / Project | |
| limit | No | 最多返回端点数,默认 30 | |
| query | Yes | 关键词,如“提交发布”、“评论”、“upload”、“app-info”、“错误码 204144647” | |
| platform | No | 按平台过滤 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description adds meaningful behavioral details: the catalog size, bilingual keyword support, and that space-separated keywords mean simultaneous matching. It also reinforces openWorldHint=false by specifying the search is within the built-in catalog. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences with no filler: the first establishes scope and keyword behavior, the second provides the follow-up workflow. Information is front-loaded and every clause earns its place, despite the minor 'Connect Connect' typo.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with no output schema, the description is complete enough for an agent to select and invoke it: it explains what the catalog contains, keyword semantics, and the downstream workflow. It does not explicitly describe the return format, but the mention of finding endpoints and then checking params via agc_get_api_doc makes this sufficiently clear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, giving a baseline of 3. The description adds extra meaning for the query parameter (Chinese or English keywords, space-separated terms match simultaneously), which goes beyond the schema's examples. It does not cover group/platform beyond what the schema already provides, so a 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('search by keyword') against a specific resource ('built-in AppGallery Connect API catalog'), with concrete scope (~200 endpoints, 450 docs). It clearly differentiates from agc_get_api_doc by saying the next step after finding an endpoint is to use that tool, though it does not explicitly contrast with sibling search tools like harmonyos_search_docs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear workflow context: search the catalog first, then use agc_get_api_doc for parameters, then invoke via dedicated tools or agc_request. It implies when this tool is appropriate but does not explicitly state exclusions or alternatives, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agc_submit_app提交应用发布审核ADestructive
提交应用审核发布(上架)。调用前应确认应用信息完整、软件包已解析成功。这是对外生效的操作,调用前请与用户确认。HarmonyOS 走 POST /api/publish/v3/app-submit;Android 走 POST /api/publish/v2/app-submit。
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | ||
| phased | No | 分阶段发布设置;不传为全网发布 | |
| remark | No | 提审备注,10-300 字 | |
| platform | Yes | 应用平台:harmonyos = HarmonyOS 5 及以上应用/元服务(v3 接口);android = Android 及 HarmonyOS 4 及以下(v2 接口) | |
| releaseTime | No | 指定上架时间,格式 yyyy-MM-ddTHH:mm:ssZZ,如 2026-10-01T10:00:00+0800;不填则审核通过后立即上架 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=true, and openWorldHint=true. The description adds valuable context: '这是对外生效的操作,调用前请与用户确认' (this is an externally effective operation, confirm with user before calling). It also mentions preconditions about app info and package parsing. This goes beyond the annotations by adding the user-confirmation requirement and readiness checks, which is useful for an agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with the main action front-loaded. It includes preconditions, a warning about external effect, and platform-specific endpoint details in a few sentences. No wasted words. It's well-structured and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (nested 'phased' object, platform-specific behavior, and external effects), the description covers the key context: preconditions, user confirmation, and platform routing. The schema handles parameter details like releaseTime and phased settings. There's no output schema, but the description doesn't need to explain return values. It's fairly complete for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 80%, so the schema already documents most parameters. The description doesn't add extra meaning beyond what the schema provides, except for noting the platform-specific endpoints which relate to the 'platform' parameter. Since the schema covers the parameters well, a baseline of 3 is appropriate; the description adds marginal value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: '提交应用审核发布(上架)' (submit app review release/listing). It specifies the resource (app) and the operation (submit for review). It also distinguishes between HarmonyOS and Android endpoints, which helps differentiate from sibling tools like agc_update_app_package or agc_list_reviews. The purpose is unambiguous and specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear preconditions: '调用前应确认应用信息完整、软件包已解析成功' (confirm app info is complete and package parsed successfully before calling). It also warns that this is an externally effective operation and requires user confirmation. While it doesn't explicitly name alternative tools, the context makes it clear this is the submission action, and the platform-specific endpoints guide usage. This is adequate guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agc_update_app_package上传并关联应用软件包ADestructive
上传软件包并写入应用当前草稿版本:HarmonyOS 走 PUT /api/publish/v3/app-package-info(返回 packageId),Android 走 PUT /api/publish/v2/app-file-info(fileType=5,返回 pkgVersion)。可以传本地 filePath(自动上传),也可以传已上传的 objectId + fileName。软件包需异步解析,约 2 分钟后再提交发布,可用 agc_get_package_compile_status 查询。
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | ||
| fileName | No | 文件名(含后缀);使用 objectId 时必填 | |
| filePath | No | 本地软件包路径(.app / .apk / .aab / .rpk) | |
| objectId | No | 已上传文件的 objectId(与 filePath 二选一) | |
| platform | Yes | 应用平台:harmonyos = HarmonyOS 5 及以上应用/元服务(v3 接口);android = Android 及 HarmonyOS 4 及以下(v2 接口) | |
| releaseType | No | Android:1 全网(默认)/ 3 分阶段 | |
| releasePhase | No | HarmonyOS:0 全网(默认)/ 3 分阶段 | |
| chineseMainlandFlag | No | 软件包是否分发中国大陆,注册地非中国大陆时必填 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, and the description aligns by stating it writes to the draft version. It adds valuable behavioral context: the operation is asynchronous, requires a ~2-minute wait, and returns a packageId or pkgVersion. This goes beyond the annotations, which only signal danger, not the async nature or the need to poll the compile status.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense sentence that front-loads the core purpose and packs in essential details (platform differences, input modes, async wait, sibling tool). While efficient and free of fluff, it could be more scannable if split into bullet points or short paragraphs. Still, every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (8 parameters, two platforms, two input modes, async behavior) and lack of an output schema, the description covers the key operational aspects: how to provide the file, what each platform returns, and the follow-up action (check compile status). It doesn't detail error scenarios or prerequisites like having a draft version, but it provides enough for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 88%, so most parameters are already documented. The description adds meaningful context for the filePath vs objectId relationship (mutually exclusive alternatives) and clarifies platform-specific behavior (which API each uses). It also hints at the releaseType/releasePhase defaults, though those are in the schema. Overall, it adds value beyond the schema without redundancy.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: upload a software package and associate it with the current draft version of the app. It specifies the resource (app package), the action (upload and write), and distinguishes between HarmonyOS and Android paths with distinct API endpoints. This differentiates it from siblings like agc_upload_file (which only uploads) and agc_submit_app (which submits for release).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the two input modes (filePath for direct upload, objectId+fileName for already-uploaded files) and instructs to wait ~2 minutes before publishing, pointing to agc_get_package_compile_status for status checks. It doesn't explicitly state when to use alternative tools, but the context makes it clear this tool handles both upload and association, and it references a sibling for follow-up. Some explicit 'when not to use' guidance would push it to 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agc_upload_file上传文件到 AGCA
把本地文件(软件包 .app/.apk/.aab/.rpk、图标、截图、视频、PDF、资质 zip 等)上传到 AGC 文件服务器,返回 objectId。得到 objectId 后需调用相应接口(如 agc_update_app_package,或通过 agc_request 调用更新应用文件信息接口)把文件关联到应用。
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | ||
| fileName | No | 上报的文件名(含后缀),默认取本地文件名 | |
| filePath | Yes | 本地文件绝对路径(支持 ~/ 开头) | |
| releaseType | No | 发布方式,默认 1(全网) | |
| chineseMainlandFlag | No | 软件包是否分发中国大陆:1 是 / 0 否。开发者注册地非中国大陆时必填 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the tool returns an objectId and requires a subsequent call to associate the file, which is useful behavioral context. It also implies a side effect (uploading to an external server), consistent with readOnlyHint=false. However, it does not detail potential constraints like authorization, overwrite behavior, or rate limits; annotations don't carry much of the burden, so the description could be richer.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences and front-loads the purpose and types of files, followed by a clear next-step instruction. No wasted words, and the essential workflow is conveyed efficiently. Slightly longer than strictly necessary but still well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 5 parameters and no output schema, the description covers the core purpose, return value (objectId), and the necessary follow-up logic to link the file to an app. It does not explain error handling or scenario-specific requirements like chineseMainlandFlag, but those are covered by the schema. Given the available structure, the description is adequately complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides descriptions for 4 of 5 parameters (80% coverage), including filePath, fileName, releaseType, and chineseMainlandFlag. The tool description adds context about accepted file types (packages, icons, screenshots, etc.), which is helpful, but it does not clarify appId beyond the schema. This is a baseline score where schema handles most parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool uploads local files (listing specific types like .app/.apk/.aab/.rpk, icons, etc.) to the AGC file server and returns an objectId. It also differentiates from siblings by explicitly naming agc_update_app_package as a follow-up step, making the upload-only scope unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context: it is the first step for associating files with an app, and explicitly instructs the agent to call other interfaces (e.g., agc_update_app_package or agc_request) after obtaining the objectId. It does not mention when not to use this tool or alternatives for other upload scenarios, but the workflow is well-defined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
harmonyos_get_docs获取鸿蒙开发者文档全文ARead-only
按文档标识批量获取 HarmonyOS 官方文档全文(Markdown,一次最多 10 篇)。标识来自 harmonyos_search_docs 结果的 parent 字段。
| Name | Required | Description | Default |
|---|---|---|---|
| names | Yes | 文档标识列表,如 ["document/cn/harmonyos-guides/abilitykit-overview"] |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, covering the safety profile. The description adds the Markdown output format and the batch limit of 10, which are useful behavioral details beyond the annotations. No contradictions or missing critical traits are apparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no fluff. The core action, limit, format, and input source are front-loaded. Every word adds value, and the description is appropriately sized for a simple tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with a single parameter, no output schema, and annotations covering safety, the description provides everything an agent needs to call it correctly: what it does, the input source, and the limit. No missing information is evident.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameter 'names' is documented in the schema with an example. The description adds the key semantic detail that identifiers must come from the parent field of search results, which guides correct parameter construction beyond the schema's generic example. This raises the score above the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (batch fetch full text), the resource (HarmonyOS official docs), the format (Markdown), and the limit (max 10). It also specifies that identifiers come from the parent field of harmonyos_search_docs results, distinguishing it from the search sibling. The verb 'get' and resource are unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly ties usage to a prior step: identifiers come from harmonyos_search_docs results. This tells the agent when to use this tool (after search) and where to obtain valid inputs. While it doesn't list exclusions, the implied workflow is clear and sufficient for an agent to select it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
harmonyos_search_docs搜索鸿蒙开发者文档ARead-only
通过华为官方“鸿蒙开发者知识 MCP”检索最新的 HarmonyOS 官方文档:版本说明、API 参考、开发指南、最佳实践、FAQ、DevEco Studio 指南、UX 设计、应用上架与分发等(与官网准实时同步)。返回匹配的文本片段及文档标识 parent;片段不够时用 harmonyos_get_docs 取全文。Connect API 接口参数请优先用 agc_search_api / agc_get_api_doc。
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | 搜索词,中英文均可,如“Navigation 路由传参”“应用签名 证书申请” |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the read-only nature is covered. The description adds valuable behavioral context: it returns matching text snippets and a document identifier 'parent', and mentions near-real-time synchronization with the official website. This goes beyond annotations by disclosing the return format and data freshness, though it doesn't detail pagination or limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded: it states the core function first, then lists content types, then provides routing alternatives. Every sentence earns its place, with no filler or redundancy. It is well-structured for quick parsing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (one parameter, no output schema). Annotations cover read-only and open-world behavior. The description adds return format (snippets + parent identifier), how to get full text (harmonyos_get_docs), and when to use alternatives (Connect API). Nothing essential is missing for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one parameter 'query' with a description that already explains it accepts Chinese or English search terms with examples. Schema coverage is 100%. The tool description adds no additional parameter-specific semantics beyond what the schema provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches HarmonyOS official documentation via Huawei's MCP, listing content categories (version notes, API reference, guides, etc.) and explicitly distinguishes it from siblings by naming harmonyos_get_docs for full text retrieval and agc_search_api/agc_get_api_doc for Connect API parameters. The verb '检索' (search) and resource 'HarmonyOS 官方文档' are specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit routing guidance: use harmonyos_get_docs when snippets are insufficient, and prefer agc_search_api/agc_get_api_doc for Connect API interface parameters. This tells the agent exactly when to choose this tool over alternatives, leaving no ambiguity.
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.
17 tool updates
v0.1.0- First observed
agc_auth_status - First observed
agc_get_api_doc - First observed
agc_get_app_id - First observed
agc_get_app_info - First observed
agc_get_package_compile_status - First observed
agc_get_ratings - First observed
agc_get_report - First observed
agc_list_apps - First observed
agc_list_reviews - First observed
agc_reply_review - First observed
agc_request - First observed
agc_search_api - First observed
agc_submit_app - First observed
agc_update_app_package - First observed
agc_upload_file - First observed
harmonyos_get_docs - First observed
harmonyos_search_docs
TDQS
Scored across 17 tools
Most tools target distinct resources and actions, and the agc_/harmonyos_ prefixes clearly separate API catalog docs from HarmonyOS docs. The main ambiguity is agc_request as a generic fallback that conceptually overlaps with all specialized tools, and agc_upload_file vs agc_update_app_package share upload behavior, but descriptions draw clear boundaries.
The vast majority follow a consistent agc_verb_noun pattern, and the two harmonyos_ tools are internally consistent. Minor deviations like agc_auth_status (no verb) and agc_request (not verb_noun) plus the mixed prefixes keep it from a perfect score.
17 tools is slightly above the ideal 3-15 range, but the broad AppGallery Connect domain justifies the count. Each tool covers a meaningful workflow area, and the generic agc_request tool prevents the surface from becoming bloated with dozens of endpoint-specific tools.
The specialized tools cover the core app publishing lifecycle: discovery, auth, package upload, compile status, submission, reviews, ratings, and reports. The generic agc_request tool plus search/get documentation tools ensures any remaining Connect API endpoint can be reached, so there are no obvious dead ends.
Maintenance
Related MCP Connectors
- app-managerOAuthapp.lance
App Store Connect operator for AI agents: icons, TestFlight builds, listings, IAP, rejection fixes.
AI-agent operations for App Store Connect and Google Play, with approval before live publishing.
AI-agent operations for App Store Connect and Google Play, with approval before live publishing.
AI agent tools for FreeAppStore: deploy status, SDK docs, app info, platform guide.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables AI assistants to manage Apple App Store Connect operations including app management, TestFlight, analytics, reviews, subscriptions, and more through 54 tools.6142 npm11MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to manage Apple App Store Connect through the official API, including apps, metadata, reviews, TestFlight, provisioning, users, and reports.MIT
- AlicenseNot gradedqualityFmaintenanceEnables AI agents to manage App Store Connect apps, including registering bundle IDs, uploading metadata and screenshots, setting age ratings, managing TestFlight groups and testers, and submitting apps for review.MIT
- AlicenseCqualityDmaintenanceEnables publishing Android apps to Samsung Galaxy Store and Huawei AppGallery directly from AI agents, with tools for uploading binaries, updating listings, submitting apps, and verifying Samsung IAP receipts.11MIT