agc-analytics-mcp
Provides tools for retrieving and analyzing Huawei AppGallery Connect (AGC) operational data, including report trends, crash and app freeze metrics, ratings, reviews, and daily/weekly report generation.
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-analytics-mcp我的鸿蒙应用最近30天新增用户趋势如何?有异常日吗?"
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-analytics-mcp
华为 AppGallery Connect 数据分析 MCP 服务器
报表趋势解析 · Crash/AppFreeze 指标 · 评论与评分聚合 · 日报周报生成
简体中文 | English
把华为 AppGallery Connect(AGC)的运营数据接进任何支持 MCP 的 AI 客户端——Claude Code、Cursor、VS Code、Codex CLI、Gemini CLI、Trae、DevEco Studio CodeGenie、Cherry Studio 等。装上之后,你可以直接问:
“我的鸿蒙应用最近 30 天新增用户趋势怎么样?有没有异常日?” “上周崩溃数比前一周涨了多少?集中在哪个版本?” “把最近一周的差评关键词聚一下类。” “出一份昨天的日报。”
服务器会自己去 AGC 拉数据、解析 CSV、做趋势与环比计算,再把结论交给模型。
本项目只读:不发布、不上传、不回复评论、不改任何 AGC 配置。
为什么用它
能力 | 说明 |
报表趋势解析 | 16 种 AGC 运营报表(HarmonyOS 与 Android 双平台),自动下载 CSV、解析(含 GBK)、按日聚合,给出周环比、7 日均线方向、z-score 异常日、峰值谷值与迷你趋势线 |
Crash 指标分析 | APM 崩溃率 / 应用冻屏指标查询与汇总:总量、周环比、最严重日期、受影响版本 Top 5 |
评论与评分聚合 | 星级直方图、平均分、差评关键词聚类(中文二元组 + 英文分词,零依赖)、版本热点 |
日报 / 周报生成 | 一条调用产出 Markdown 报告,分节独立降级(某个数据源失败不会毁掉整份报告),可落盘为 |
零依赖 · 零构建 |
|
只读白名单 | 13 个工具全部只读;通用透传工具只放行只读路径前缀,写操作在设计上就不可达 |
凭据不出本机 | 凭据只从环境变量/文件读入内存,永不落盘、永不进日志;带鉴权请求只允许发往华为四个 AGC 站点域名 |
Related MCP server: mcp-appstore-connect
快速开始
0. 完全不想折腾?一条命令
git clone https://github.com/D-sp-wq/agc-analytics-mcp.git
cd agc-analytics-mcp
node scripts/setup.mjs向导会:检查 Node 版本 → 问你有哪种凭据(API 客户端 / Service Account 文件)→ 用不回显的方式录入并保存到 ~/.agc(权限仅你可读)→ 本地校验 → 问你要不要做一次真实只读验证 → 最后打印一段可直接粘贴进 AI 客户端的配置(路径已按你的机器填好),并额外给出"不用文件、直接把两个值写进配置"的替代写法。
随时可非交互使用:
node scripts/setup.mjs --client-id <id> --client-secret <secret>
node scripts/setup.mjs --sa "C:\Users\你\Downloads\xxx-private.json"
node scripts/setup.mjs --print-config-only # 只看配置,不写任何文件1. 拿到 AGC 凭据
找不到「API 密钥」入口? 大概率是打开成了 HarmonyOS 开发者中心(hdc-console)—— Connect API 凭据只在 AppGallery Connect(service/josp/agc/index.html)里。对照表与逐条排查见 docs/WHERE-IS-API-KEY.md。
没有凭据、或不确定该建哪一种?照着 docs/GETTING-CREDENTIALS.md 做一遍即可(含控制台路径、两个 JSON 文件长什么样、权限与常见错误对照表)。
打开 AppGallery Connect →「用户与访问 → API 密钥 → Connect API」,创建凭据。两种凭据可以同时配置:
凭据 | 创建方式 | 环境变量 | 适用 |
API 客户端 | 「API 密钥」页签 → 创建 API 客户端(项目选 N/A),然后 |
| 全部工具,评论/评分接口必须用它 |
Service Account | 「Service Account」页签 → 创建,类型选开发者级,会下载 |
| 除评论/评分外的全部工具 |
站点用 AGC_SITE 选择:cn(默认)/ de / sg / ru。
其它可选环境变量:
变量 | 默认 | 说明 |
|
| 单次请求超时(毫秒) |
| 按站点推导 | 自定义 API 入口,用于企业网关或本地 mock 联调。必须 https;只有回环地址( |
凭据文件请放在仓库之外,不要提交进 Git。
.gitignore已忽略.env*与*.local.json。
2. 安装方式(三选一)
方式 | 命令 | 适用 |
A. 克隆即用(最稳,推荐) |
| 任何环境。零依赖、零安装,只需要 Node ≥ 20 |
B. npx 直连 GitHub |
| 允许 npm 拉取 git 依赖的环境(见下方提示) |
C. npm 包 | 由你自行 | 想给团队内分发时 |
⚠️ npm 12 起默认禁用 git 依赖:直接
npx -y github:...会报EALLOWGIT: Fetching packages of type "git" have been disabled。 两种解法:加--allow-git=all(如上),或者改用方式 A —— 克隆后用node启动,完全不经过 npm。 npm 11 及更早版本没有该限制。
3. 配置客户端(同一套「命令 + 环境变量」)
方式 A(克隆)的配置 —— command 指向克隆下来的 index.js:
{
"mcpServers": {
"agc": {
"command": "node",
"args": ["C:/tools/agc-analytics-mcp/index.js"],
"env": {
"AGC_CLIENT_FILE": "/absolute/path/to/api-client.json",
"AGC_SERVICE_ACCOUNT_FILE": "/absolute/path/to/service-account.json",
"AGC_SITE": "cn"
}
}
}
}方式 B(npx)的配置 —— 把 command/args 换成:
"command": "npx",
"args": ["--allow-git=all", "-y", "github:D-sp-wq/agc-analytics-mcp"],各客户端的配置文件位置:
客户端 | 位置 |
Claude Code |
|
Claude Desktop | Windows |
Cursor | 全局 |
VS Code (Copilot Agent) |
|
Codex CLI |
|
Gemini CLI |
|
Trae / DevEco Studio / Cherry Studio | 各自的 MCP 设置面板粘贴上面的 JSON |
Windows 提示:少数客户端无法直接启动
npx,把"command"改成"cmd","args"改为["/c","npx", ...];路径用正斜杠C:/tools/...最省事。
4. 从源码跑测试
git clone https://github.com/D-sp-wq/agc-analytics-mcp.git
cd agc-analytics-mcp
npm test # 55 项测试,无需网络与凭据
node index.js # 直接以 stdio 方式启动工具一览
全部 13 个工具均为只读(readOnlyHint: true)。
工具 | 作用 |
| 检查凭据与站点配置(不联网),返回已加载的凭据类型与修复建议 |
| 列出项目与项目下的应用(appId / 包名 / 设备类型) |
| 包名 → appId(逗号分隔,最多 50 个) |
| 导出 16 种报表之一,下载并解析为结构化行(默认返回前 500 行,可 |
| 对指定指标做趋势分析:周环比、7 日均线方向、异常日、峰值谷值、28 天趋势线; |
| Crash / AppFreeze 指标原始查询,归一化为 |
| Crash 汇总:总量、周环比、最严重日期、受影响版本 Top 5(beta:该接口为社区实测,字段以官方文档为准) |
| 评分查询(时间跨度 ≤ 6 个月,需 API 客户端凭据) |
| 评论列表,支持评分/版本/答复状态/关键词/排序过滤与分页 |
| 评论洞察:星级直方图、平均分、关键词聚类(带例句)、版本热点 |
| 单日 Markdown 日报(默认昨天):下载安装、Crash、评分快照 |
| 周报 + 上周自动对比,可落盘 |
| 只读白名单透传,覆盖没有专用工具的只读接口 |
可用报表(report 参数)
HarmonyOS 5+ | Android / HarmonyOS 4- |
|
|
|
|
|
|
|
|
|
|
| |
|
报表时间跨度上限 180 天;评论接口上限 6 个月——两个限制都会在调用前本地校验并给出可执行的修正建议。
使用示例
# 先确认凭据
agc_auth_status
# 找到 appId
agc_list_apps
# 最近 30 天新增用户趋势 + 异常日
agc_report_trend { appId, report: "harmony-user-analysis", metric: "" }
# 下载安装量周环比
agc_report_trend { appId, report: "harmony-download", metric: "下载量" }
# 上周崩溃总量与版本分布
agc_crash_summary { appId, startDate: "2026-06-01", endDate: "2026-06-07" }
# 差评关键词
agc_review_insights { appId, platform: "harmonyos", onlyNegative: true, pages: 3 }
# 一份周报
agc_weekly_report { appId, endDate: "2026-06-07", outPath: "D:/reports/agc-week.md" }agc_report_export 的 outPath 默认不覆盖已存在文件,需要覆盖时显式传 overwrite: true。
真实输出长什么样
仓库里带了一份可复现的样例输出(node scripts/generate-examples.mjs 用本地 mock 上游重新生成,不需要凭据):
文件 | 内容 |
30 天报表:各指标周环比、趋势方向、峰值/谷值、异常日(发布日激增 z=46.55) | |
日报:7 日下载趋势 + 崩馈日均/最差日/版本分布 + 评分与差评关键词 | |
周报:下载量 ↑+6.4%、崩溃数 ↑+134.6%(自动对比上一周) | |
评论洞察:星级直方图、平均分、「闪退」等关键词簇带例句 |
日报片段(节选自 docs/examples/daily-report.md):
## Download & install trend (harmony-download, 7 days to 20260530)
- 下载量: 2332 over the last 7 days (daily average 333.1)
- range 2026-05-24 → 2026-05-30 (7 day(s)); latest 310
- direction down (-3.8%/day); peak 360 on 2026-05-25, trough 264 on 2026-05-29
- trend: ███▇▆▁▄
## Crash metrics (crash, 7 days to 20260530)
- crash events: 448 over 7 day(s) (64.0/day)
- worst day: 2026-05-27 with 146
- top versions: 2.3.0 (406), 2.2.1 (42)安全与隐私
完整威胁模型见 SECURITY.md。核心保证:
出网白名单:所有带鉴权的请求只能发往
connect-api.cloud.huawei.com/-dre/-dra/-drru四个主机且必须 HTTPS;其它主机在连接前即被拒绝。报表下载地址会剥离鉴权头并限制大小。凭据只进内存:从环境变量或凭据文件读取,不写盘、不缓存到文件、不进入任何日志或错误消息(统一脱敏
client_secret/access_token/Bearer/private_key)。只读设计:没有发布、上传、删除、回复评论的能力;
agc_request只放行只读路径前缀,且评论与 app-info 路径强制 GET。零依赖:
package.json无dependencies/devDependencies,没有供应链风险、没有安装脚本、没有postinstall。本地数据:分析全部在本机完成,不上传任何数据到第三方;唯一的外部访问是华为 AGC 官方接口。
限制与已知问题
Crash 接口标记 beta:
/api/apm/api/v1/hap/query/{crash|app-freeze}/metric的请求体字段来自社区实测。若上游拒绝,工具会原样返回响应并提示改用agc_request调整字段。评论接口只支持 API 客户端凭据:只用 Service Account 时评论类工具会失败并提示原因,其余工具不受影响。
报表下载地址有效期约 5 分钟:工具在同一次调用内立即下载,无需人工干预。
CSV 编码:优先按严格 UTF-8 解析,失败时回退 GBK;两者都不可用时按 UTF-8 宽松解析。
GBK 需要 Node 的完整 ICU:官方发行版默认包含;若运行时不支持,中文报表可能出现替换字符。
本项目为社区项目,与华为公司无关,未获其背书。AppGallery Connect、HarmonyOS 为华为技术有限公司的商标。
开发
npm test # 单元 + 协议 e2e + mock 全链路,55 项
node scripts/check-secrets.mjs # 提交前密钥扫描
node scripts/handshake-check.mjs # 真机 stdio 握手自检(CI 同款)
node scripts/live-smoke.mjs # 真实凭据冒烟(需 AGC_* 环境变量,不属于 CI)第一次用真实凭据验证(推荐顺序)
# 1) 离线预检:不联网,只检查凭据文件是否存在、格式对不对、有没有把
# Service Account 的 JSON 错填给 AGC_CLIENT_FILE(反之亦然)
AGC_CLIENT_FILE=/绝对路径/api-client.json node scripts/live-smoke.mjs --check-only
# 2) 真实冒烟:默认取最近 7 天,逐段报告成功/失败(只读调用)
AGC_CLIENT_FILE=/绝对路径/api-client.json node scripts/live-smoke.mjs
AGC_SERVICE_ACCOUNT_FILE=/绝对路径/private.json node scripts/live-smoke.mjs 110012345 --days=14退出码:0 核心链路可用 / 1 核心步骤失败 / 2 凭据缺失或不可用 / 3 命令行参数有误。
输出里 ! 是警告(该凭据或站点不支持的段落,核心链路仍然可用),✘ 才是失败。
--json 可输出机器可读结果,便于接入你自己的巡检。
目录结构:
index.js # bin 入口(仅作为进程入口时启动)
src/mcp-server.js # stdio JSON-RPC 循环(手写 MCP 协议子集,零依赖)
src/client.js # HTTP 客户端:域名守卫、业务码、401 重试、下载
src/auth.js # client_credentials 令牌 + Service Account PS256 JWT
src/tools/*.js # 13 个工具
src/analytics/*.js # 趋势 / 文本聚类 / Crash 归一化 / 报告组装(纯函数)
test/*.test.js # 55 项测试提交 PR 前请确保 node --test、node scripts/check-secrets.mjs 与 node scripts/handshake-check.mjs 均通过;CI 会在 Windows 与 Linux、Node 20 与 22 上跑同一套测试。
许可
Available Tools
13 toolsagc_auth_statusCheck AGC credential configurationARead-only
Report the AGC credential configuration: which credential kinds are loaded (API client / Service Account), the active site, timeout, and any configuration problems. No network request is made. Call this first when requests start failing with auth errors. Secrets are never included.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this readOnly, non-destructive, and non-open-world, but the description adds meaningful behavior: diagnostics only, no network request made, and secrets are never returned. These are the exact assurances an agent needs before dumping output to a user, and they go beyond the structured hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with what is reported, then the no-network/no-secrets guarantees, then the trigger condition. Every sentence carries information and none repeats the title or 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?
With no output schema present, the description correctly compensates by enumerating the returned fields (credential kinds loaded, active site, timeout, configuration problems). Combined with the safety notes, an agent has everything needed to call and interpret this zero-arg diagnostic.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is no per-parameter semantics to document; the baseline of 4 applies. The empty schema is consistent with the description's framing of a no-argument status probe.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Report) plus the exact resource (AGC credential configuration) and enumerates the reported fields: credential kinds, active site, timeout, and configuration problems. This cleanly separates it from the data-fetching siblings like agc_list_apps and agc_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?
Gives an explicit trigger: 'Call this first when requests start failing with auth errors.' That is clear context for invocation, though it stops short of naming when not to use it or pointing to which sibling to try next after a clean result.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agc_crash_metricQuery crash / app-freeze metricsARead-only
Query AGC APM crash or app-freeze metrics (POST /api/apm/api/v1/hap/query/{kind}/metric) and return normalised rows {day, version, count, users, rate}. If the gateway rejects the body shape, the raw response is returned with a note; use agc_request to adjust fields. This endpoint is community-verified; schema drift is possible.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Metric kind (default crash) | |
| site | No | AGC site: cn / de / sg / ru (default from AGC_SITE, otherwise cn) | |
| appId | Yes | AGC appId | |
| endDate | No | YYYY-MM-DD or YYYYMMDD (UTC) | |
| version | No | Filter to one app version | |
| dimension | No | Group the metric by day or by app version | |
| startDate | No | YYYY-MM-DD or YYYYMMDD (UTC) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/openWorldHint/destructiveHint=false, so the safety profile is covered. The description adds genuinely useful context beyond that: the normalised row shape, the degraded fallback response behavior when the gateway rejects the body, and the community-verified/schema-drift warning.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with purpose then fallback behavior then reliability caveat. Dense but every sentence carries information; no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by naming the return fields {day, version, count, users, rate}, and it flags the unreliable-response path. An agent has enough to call it correctly, though the sibling-selection gap and absence of pagination/date-range default semantics leave a small hole.
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 schema already documents all 7 parameters including enums and date formats. The description adds little parameter-level meaning beyond noting the dimension-driven row shape, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Query) and resource (AGC APM crash/app-freeze metrics) and names the exact endpoint, plus the shape of returned rows. An agent can distinguish this metric-query tool from siblings like agc_crash_summary without opening either schema.
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?
Provides one real routing hint: if the gateway rejects the body shape, fall back to agc_request to adjust fields. However, it never states when to choose this tool versus agc_crash_summary or agc_report_trend, which is the primary selection ambiguity for an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agc_crash_summarySummarise crash / app-freeze metricsARead-only
Query crash or app-freeze metrics and summarise: total, last-7 vs previous-7 (WoW), worst days, top affected versions, daily series.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Metric kind (default crash) | |
| site | No | AGC site: cn / de / sg / ru (default from AGC_SITE, otherwise cn) | |
| appId | Yes | AGC appId | |
| endDate | No | YYYY-MM-DD or YYYYMMDD (UTC) | |
| version | No | Filter to one app version | |
| dimension | No | Group the metric by day or by app version | |
| startDate | No | YYYY-MM-DD or YYYYMMDD (UTC) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered; the description adds real behavioral value by disclosing that results are pre-aggregated into total, week-over-week comparison, worst days, top versions and a daily series. It omits any note about authentication requirements or query cost/limits, which would be the remaining useful disclosures.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the action first and the output list after; no filler or repetition. The colon-separated enumeration is dense but readable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema present, the description carries the burden of describing returns and does so explicitly (total, WoW, worst days, versions, daily series). Parameters are fully covered by the schema, but default date behavior and auth expectations are left unstated for a 7-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter including enums (kind, site, dimension) is already documented, and the baseline is 3. The description adds only a faint hint about a 7-day comparison window (implying date defaults), but does not explain the interaction between startDate/endDate and the WoW framing.
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?
Names a specific verb+resource ('Query crash or app-freeze metrics and summarise') and enumerates the exact outputs (total, WoW, worst days, top versions, daily series), which is far more informative than the title alone. It doesn't explicitly differentiate itself from close siblings like agc_crash_metric or agc_report_trend, so an agent must infer the boundary from the word 'summarise'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to prefer this over agc_crash_metric, agc_report_trend, or agc_daily_report, and no prerequisites or exclusions. The only usage-adjacent hints are the schema defaults ('default crash', default site), which the description doesn't restate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agc_daily_reportBuild a one-day AGC report (Markdown)ARead-only
Build a daily operations digest for one day (default: yesterday): the 7-day download/install trend ending that day, crash/app-freeze totals, and a review snapshot. Each section degrades independently into a marked paragraph; the Markdown is returned and optionally written to outPath.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | YYYY-MM-DD or YYYYMMDD (UTC). Default: yesterday | |
| site | No | AGC site: cn / de / sg / ru (default from AGC_SITE, otherwise cn) | |
| appId | Yes | ||
| report | No | Report kind driving the download/install section (default harmony-download) | |
| outPath | No | Optional .md path to save the report | |
| platform | No | Review platform (default harmonyos) | |
| countries | No | Country codes for reviews (default CN) | |
| crashKind | No | Default crash | |
| overwrite | No | Allow overwriting outPath |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=true), so the bar is lower, yet the description still adds real behavior: each section degrades independently into a marked paragraph, and output is Markdown returned inline plus optionally persisted to outPath. One subtlety remains unaddressed — a file write side effect sits in slight tension with readOnlyHint, mitigated only by the optional outPath/overwrite parameters.
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 zero filler, front-loading what the report contains, then the degradation and output behavior. 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?
With 9 parameters, no output schema and rich annotations, the description is nearly sufficient: content, defaults, failure behavior and output destination are all covered. Auth/prerequisite context and the overwrite semantics are left to the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 89%, so the baseline is 3, but the description adds genuine meaning beyond the schema: it explains that the 'report' enum drives the download/install section and ties platform/countries to the 'review snapshot', which is helpful given the opaque enum values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Build a daily operations digest for one day') and enumerates exactly what the digest contains (7-day download/install trend, crash/app-freeze totals, review snapshot). This clearly separates it from agc_weekly_report by time window, though it never names the sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description establishes context (a single-day consolidated digest, default yesterday) and that outPath writing is optional, giving implied usage. But it never states when to prefer this composite report over the granular siblings (agc_report_trend, agc_crash_summary, agc_reviews_list) or any exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agc_get_app_idResolve package name to appIdBRead-only
Resolve AGC appId(s) from package name(s), comma-separated, up to 50.
| Name | Required | Description | Default |
|---|---|---|---|
| site | No | AGC site: cn / de / sg / ru (default from AGC_SITE, otherwise cn) | |
| packageNames | Yes | Package names, comma separated, e.g. com.example.app |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so safety is covered structurally. The description usefully adds the batch behavior (comma-separated input, up to 50 names, potentially multiple appIds returned). It does not disclose what happens when a package name is unknown or unmatched, which for an open-world lookup is a meaningful gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. The batch constraint sits right where an agent needs it, and nothing is restated wastefully.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only resolver with no output schema, the description covers the input shape and cap but says nothing about the response shape or behavior on unmatched packages. Since no output schema exists to carry that burden, a brief note on the returned mapping would have made it 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 description coverage is 100%, so both parameters are already documented, including the site enum and its AGC_SITE default. The description only reinforces the comma-separated format and the 50-item limit for packageNames, adding marginal value over 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?
States a specific verb and resource: 'Resolve AGC appId(s) from package name(s)'. This clearly distinguishes it from siblings like agc_list_apps or agc_get_app_id-style lookups, since the transformation from package name to appId is explicit. It stops short of naming a sibling alternative, but the purpose is 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?
No when-to-use guidance, no prerequisites, and no mention of alternatives such as agc_list_apps for enumerating apps. The only contextual hint is the 50-item batch cap, which is a constraint rather than a usage rule. An agent must infer when this tool is preferable to its siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agc_list_appsList AGC projects and appsARead-only
List all AGC projects visible to the credential and the apps inside each (appId, name, package name, device types). Use this to discover the appId every other tool requires.
| Name | Required | Description | Default |
|---|---|---|---|
| site | No | AGC site: cn / de / sg / ru (default from AGC_SITE, otherwise cn) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, destructiveHint=false, so the safety profile is covered. The description adds useful scope information (results span all projects visible to the credential), but says nothing about credential requirements beyond visibility, rate limits, or result volume. Modest value on top of 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 tight sentences: the first declares what is listed and the fields returned, the second states the tool's role. No filler, and the core scope is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and a single optional parameter, the description usefully compensates by enumerating the returned fields and by explaining the credential-relative scope. The only gap is that the `site` selector's effect on results is left entirely to the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is one optional `site` parameter with 100% schema description coverage including the enum values and the AGC_SITE default, so the schema fully documents it. The description adds no semantics about the site parameter, which is the expected baseline when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (list AGC projects and the apps inside each) and even enumerates the per-app fields returned (appId, name, package name, device types). It doesn't explicitly differentiate itself from the overlapping sibling `agc_get_app_id`, which also surfaces an appId, so it falls short of a top score.
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?
"Use this to discover the appId every other tool requires" gives a clear usage context and effectively positions it as the entry-point tool. It stops short of naming alternatives or stating when-not-to-use (e.g. when you already know the appId and only need `agc_get_app_id`).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agc_ratings_summarySummarise app ratingsARead-only
Fetch ratings for an app (average, star histogram) over a time window (max 6 months). Requires the API-client credential.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | End date YYYY-MM-DD (UTC). Default: now | |
| site | No | AGC site: cn / de / sg / ru (default from AGC_SITE, otherwise cn) | |
| appId | Yes | AGC appId | |
| begin | No | Begin date YYYY-MM-DD (UTC). Default: 30 days ago | |
| platform | Yes | harmonyos = HarmonyOS 5+ (v3 API); android = Android & HarmonyOS 4- | |
| countries | No | Country codes, comma separated (default CN) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this a safe read (readOnlyHint=true, destructiveHint=false), so the safety bar is met. The description adds two non-obvious behaviors the annotations do not cover: the 6-month maximum window and the API-client credential prerequisite. Rate limits and result volume remain unstated.
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 tight sentences, no filler, with the returned data shape and the window constraint front-loaded. Every clause carries information an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by naming the returned metrics (average, star histogram). Combined with the credential prerequisite and window cap, an agent has enough to call it correctly, though nothing explains pagination or aggregation granularity.
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 begin/end, site, platform, countries and appId are all documented in the schema; baseline is 3. The description's 'max 6 months' loosely constrains the begin/end pair but adds no format or default detail beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Fetch ratings for an app') and enumerates the shape of the result (average, star histogram), which separates it from review-oriented siblings like agc_reviews_list. It does not name an alternative sibling explicitly, so it stops short of the top band.
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?
Gives the operative constraints (time window capped at 6 months, requires the API-client credential), which tells the agent when the tool is callable. It never says when to prefer this over agc_reviews_list, agc_review_insights, or agc_report_trend, so routing is 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_report_exportExport an AGC report as parsed rowsARead-only
Export an AGC operations report and return parsed rows. Reports: harmony-download (harmonyos: HarmonyOS app downloads & installs); harmony-install-failed (harmonyos: HarmonyOS install failures); harmony-user-analysis (harmonyos: HarmonyOS user analysis (new/active/retention)); harmony-atomic-distribute (harmonyos: HarmonyOS atomic service distribution); download (android: Downloads & installs (Android)); install-failed (android: Install failures (Android)); new-and-retention (android: New users & retention (Android)); iap (android: In-app purchases (Android)); paid-download (android: Paid downloads (Android)); paid-download-detail (android: Paid download details (Android)); game-reservation (android: Game reservations (Android)); activity-award (android: User-group award campaigns (Android)); coupon (android: Coupon campaigns (Android)); atomic-distribute (android: Atomic service distribution (legacy, Android)); atomic-user (android: Atomic service users (legacy, Android)); atomic-widget (android: Atomic service widgets (legacy, Android)). Window at most 180 days ending today. Rows are capped in the response (allRows=false); set outPath to also save the raw CSV on disk.
| Name | Required | Description | Default |
|---|---|---|---|
| site | No | AGC site: cn / de / sg / ru (default from AGC_SITE, otherwise cn) | |
| appId | Yes | AGC appId (see agc_list_apps / agc_get_app_id) | |
| report | Yes | Report kind | |
| allRows | No | Return every row instead of the first 500 | |
| endDate | No | YYYY-MM-DD or YYYYMMDD (UTC). Default: yesterday | |
| filters | No | Filter map, e.g. {"countryId":"CN","appVersion":"1.0.0"} | |
| groupBy | No | date (default) / countryId / appVersion / deviceName / province / city — depends on report | |
| outPath | No | Optional file path to save the raw CSV (must not exist unless overwrite=true) | |
| language | No | Header language (default zh-CN) | |
| overwrite | No | Allow overwriting outPath | |
| startDate | No | YYYY-MM-DD or YYYYMMDD (UTC). Default: 30 days ago | |
| extraQuery | No | Report-specific extra query params |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=true, openWorld=true, destructive=false, so the safety profile is covered. The description adds meaningful behavioral detail beyond that: the 180-day window cap, the row cap with allRows=false default, and that outPath writes a raw CSV alongside the parsed rows.
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?
Purpose and output are front-loaded in the first sentence; the long report enumeration earns its space by disambiguating the report parameter, and the trailing constraints (window, cap, outPath) are compact and information-dense.
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 12-param tool with no output schema, the description covers the return shape (parsed rows plus optional CSV), the window limit, and the row cap. It does not elaborate on filters/groupBy interaction or report-specific extraQuery, though the schema carries descriptions for those.
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 baseline is 3, but the description adds real value beyond the schema by defining what each report enum member actually contains (e.g. harmony-download vs install-failed) and clarifying the window/cap semantics for allRows and outPath.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (export) and resource (AGC operations report) with the output form (parsed rows). The 16-item report enumeration makes the tool's scope unambiguous, though it never explicitly distinguishes itself from sibling report tools like agc_daily_report or agc_report_trend.
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 report list and the 180-day window note imply when this tool applies, but there is no explicit when-to-use vs alternatives guidance against the many sibling report tools (agc_daily_report, agc_weekly_report, agc_report_trend). Usage must be inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agc_report_trendTrend analysis over an AGC reportBRead-only
Export a report and analyse the trend of one metric: week-over-week change, 7-day moving-average direction, z-score anomaly days, peak/trough and a 28-day sparkline. Use metric="" to get a compact overview of all numeric columns.
| Name | Required | Description | Default |
|---|---|---|---|
| site | No | AGC site: cn / de / sg / ru (default from AGC_SITE, otherwise cn) | |
| appId | Yes | ||
| metric | No | Column name to analyse (substring match ok); empty for overview of all columns | |
| report | Yes | ||
| endDate | No | YYYY-MM-DD or YYYYMMDD (UTC). Default: yesterday | |
| filters | No | ||
| groupBy | No | usually keep the default (date) | |
| language | No | ||
| startDate | No | YYYY-MM-DD or YYYYMMDD (UTC). Default: 30 days ago |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds the analytical outputs the agent will receive, which is helpful, but it never clarifies whether 'export' writes a file, what the date window actually covers, or any rate/permission constraints.
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 tight sentences, front-loaded with the core action and followed by the overview tip. Every clause carries information; no filler or restated name/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 9-parameter tool with an undocumented nested 'filters' object and no output schema, the description does partially compensate by describing the returned trend components. However, it leaves the filters structure, groupBy behavior, and site/language effects unexplained, so it is adequate rather than 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 56%, and the description only elaborates on 'metric' (substring match, empty for overview) — semantics already present in the schema. The undocumented 'filters' nested object, 'groupBy', 'site', and date defaults get no additional explanation in the 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?
States specific verbs (export + analyse) and resource (an AGC report metric), and enumerates exactly what is computed: WoW change, 7-day moving average direction, z-score anomaly days, peak/trough, 28-day sparkline. It does not explicitly name the sibling it differs from (agc_report_export, agc_daily_report, agc_weekly_report), so an agent must infer the boundary.
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?
Gives one useful invocation tip — use metric="" for a compact overview of all numeric columns — which is genuinely actionable. But it offers no when-to-use guidance relative to agc_report_export or the daily/weekly report tools, nor any prerequisites or date-range considerations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agc_requestCall a whitelisted read-only AGC endpointARead-only
Generic GET/POST passthrough for AGC Connect API read endpoints without a dedicated tool. Allowed path prefixes: /api/report/, /api/apm/, /api/project-service/v1/projects, /api/publish/v2/appid-list, /api/publish/v2/app-info, /api/marketing-api/v2/reviews/manage/dev/ratings, /api/marketing-api/v2/reviews/manage/dev/reviews, /api/reviews/v1/manage/dev/ratings, /api/reviews/v1/manage/dev/reviews. Review/app-info paths accept GET only. Write operations (publish, upload, reply, delete) are not callable through this tool by design.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | JSON body for POST | |
| path | Yes | API path beginning with /api/ | |
| site | No | AGC site: cn / de / sg / ru (default from AGC_SITE, otherwise cn) | |
| query | No | Query parameters as a string→string map | |
| method | No | HTTP method (default GET) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=true), yet the description adds genuinely new behavior: the exact allowlisted path prefixes, the fact that review/app-info paths are GET-only, and that publish/upload/reply/delete are structurally blocked. It omits auth requirements, rate limits, and error behavior, so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the tool's role before the path list, and every sentence carries a constraint an agent needs. The long comma-separated allowlist is verbose but functional rather than filler, so no sentence is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, a brief note on response shape or error signaling would help, and auth prerequisites are unstated. However, for a passthrough whose returns are endpoint-dependent, the description covers the critical call-correctness constraints (allowed paths, method restrictions, blocked writes) adequately.
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 baseline is 3. The description goes beyond the schema by coupling the method parameter to specific path families ('review/app-info paths accept GET only'), which is real semantic value the schema's plain GET/POST enum does not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Generic GET/POST passthrough for AGC Connect API read endpoints') and immediately scopes it as the fallback for endpoints 'without a dedicated tool', which cleanly separates it from the twelve dedicated agc_* siblings. An agent can tell what it is and when it is the right choice without opening the schema.
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 phrase 'without a dedicated tool' gives clear selection context relative to siblings, and the enumerated path prefixes define the usable scope. It never names a specific sibling tool to prefer instead, and gives no exclusion beyond the write-operation note, so it stops short of fully explicit routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agc_review_insightsCluster review keywords & star distributionARead-only
Fetch reviews (up to 10 pages of 100) and analyse them: star histogram, average rating, top complaint/praise keywords (CJK bigrams + Latin words), per-version negative hotspots. Set onlyNegative=true to focus on stars ≤ minRating (default 3). Requires the API-client credential.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | End date YYYY-MM-DD (UTC). Default: now | |
| site | No | AGC site: cn / de / sg / ru (default from AGC_SITE, otherwise cn) | |
| topN | No | Number of keyword clusters (default 10) | |
| appId | Yes | AGC appId | |
| begin | No | Begin date YYYY-MM-DD (UTC). Default: 30 days ago | |
| pages | No | How many pages of 100 reviews to pull (default 3) | |
| platform | Yes | harmonyos = HarmonyOS 5+ (v3 API); android = Android & HarmonyOS 4- | |
| countries | No | Country codes, comma separated (default CN) | |
| minRating | No | Rating ceiling for negative mode (default 3) | |
| onlyNegative | No | Cluster only negative reviews |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnly, non-destructive, open-world). The description adds operationally relevant detail beyond that: the fetch ceiling (up to 10 pages of 100 reviews), the credential requirement, and the linkage between onlyNegative and minRating's default ceiling of 3.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action, then the outputs, then the key parameter switch and prerequisite. Three compact sentences with essentially no filler; only the parenthetical keyword-method note is arguably extra.
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 10-parameter aggregation tool with full schema coverage and no output schema, the description names what is produced and covers the auth prerequisite and the main filtering toggle. Minor gap: no mention of how results scale with pages/topN or any rate/limit behavior beyond the page cap.
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 already 100%, so the baseline is 3, but the description adds real meaning the schema omits: it explains that onlyNegative filters to stars ≤ minRating with a default ceiling of 3, and that 'pages' means pages of 100 reviews. The interaction between onlyNegative and minRating is not spelled out in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Fetch reviews') plus a concrete analysis outcome list: star histogram, average rating, CJK/Latin keyword clusters, and per-version negative hotspots. This clearly separates it from the raw-listing sibling agc_reviews_list and the aggregate agc_ratings_summary.
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?
Gives conditional guidance for one parameter ('Set onlyNegative=true to focus on stars ≤ minRating') and a prerequisite ('Requires the API-client credential'), but never states when to choose this over the sibling agc_reviews_list or agc_ratings_summary. Usage is implied by the analysis framing rather than declared.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agc_reviews_listList app reviewsARead-only
Fetch the review list with filters (rating, version, reply state, keyword, sort) — window max 6 months, page size max 100. Requires the API-client credential.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | End date YYYY-MM-DD (UTC). Default: now | |
| page | No | 1-based page | |
| site | No | AGC site: cn / de / sg / ru (default from AGC_SITE, otherwise cn) | |
| sort | No | 0 by time / 1 stars desc / 2 stars asc | |
| appId | Yes | AGC appId | |
| begin | No | Begin date YYYY-MM-DD (UTC). Default: 30 days ago | |
| limit | No | Page size, max 100 (default 20) | |
| content | No | Keyword filter inside review text | |
| ratings | No | Star filter, e.g. "1,2" | |
| platform | Yes | harmonyos = HarmonyOS 5+ (v3 API); android = Android & HarmonyOS 4- | |
| versions | No | App version filter, comma separated | |
| countries | No | Country codes, comma separated (default CN) | |
| devReplyStates | No | 0 unreplied / 1 replied / 6 user follow-up / 3 reply-replied |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so safety is covered. The description adds real behavioral context beyond that: a 6-month maximum window, a 100-item page cap, and the requirement for an API-client credential. It omits any pagination-walkthrough or rate-limit detail, keeping it out of the 5 range.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence that front-loads the core action and pushes constraints to the clause after the dash. Nothing is redundant, though the filter parenthetical partially duplicates what the schema already lists.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with no output schema, the description covers the essentials: scope, filter surface, credential prerequisite and two hard limits. It does not describe return shape or how to page through results, but with readOnly annotations carrying the safety profile and a fully documented schema, the remaining gap is minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every one of the 13 parameters is already documented in the schema, including enum meanings for sort, site and platform. The description only recaps the filter categories and restates the two numeric caps, adding little syntax or format information beyond the schema baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Fetch the review list') and enumerates the filter dimensions, which cleanly separates it from siblings like agc_ratings_summary and agc_review_insights. It stops short of explicitly naming those siblings, so it does not reach the top of the scale.
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 hard constraints (6-month window, page size max 100, API-client credential) that shape how the call must be made, but never says when to prefer this tool over agc_review_insights or agc_ratings_summary. Usage is implied by the tool's nature rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agc_weekly_reportBuild a weekly AGC report with WoW comparison (Markdown)ARead-only
Build a weekly digest for the 7 days ending on endDate (default: yesterday): download/install totals with week-over-week comparison, crash totals with week-over-week, and the week's review keywords. The previous week is fetched automatically. Markdown is returned and optionally written to outPath.
| Name | Required | Description | Default |
|---|---|---|---|
| site | No | AGC site: cn / de / sg / ru (default from AGC_SITE, otherwise cn) | |
| appId | Yes | ||
| report | No | Report kind driving the download/install section (default harmony-download) | |
| endDate | No | Week ends on this day, YYYY-MM-DD or YYYYMMDD (UTC). Default: yesterday | |
| outPath | No | ||
| platform | No | Review platform (default harmonyos) | |
| countries | No | ||
| crashKind | No | ||
| overwrite | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so safety is covered. The description adds two genuinely useful facts beyond that: the previous week is fetched automatically (an extra round trip the caller should expect) and Markdown is optionally written to outPath, a local side effect worth flagging. It says nothing about auth requirements, latency from the multi-report aggregation, or failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with the purpose and time window front-loaded, followed by output content and the optional write. No filler; the only slight inefficiency is that defaults already documented in the schema are restated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With nine parameters, 44% coverage, and no output schema, the description does meaningful work: it names the three returned sections, states the returned format (Markdown), explains the automatic prior-week fetch, and covers the outPath side effect. Remaining gaps are crashKind, countries, and overwrite, which an agent must infer from the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 44%, so the description must compensate, and it partially does: it explains the date window semantics of endDate and the optional write behavior of outPath, and its section list hints at the report/crashKind/platform roles. But site, countries, overwrite, and the wide report enum are left for the schema alone, leaving a real 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?
States a specific verb and resource ('Build a weekly digest') plus exact scope: the 7 days ending on endDate, with three named sections (download/install totals, crash totals, review keywords). 'Weekly' implicitly distinguishes it from the sibling agc_daily_report, but no sibling is named explicitly, so it falls short of full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear operating context: the 7-day window ends on endDate (default yesterday) and the previous week is fetched automatically for the WoW comparison. However it never states when to prefer this over agc_daily_report, agc_report_trend, or agc_report_export, so the routing guidance is only implied rather than explicit.
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.
13 tool updates
v0.1.0- First observed
agc_auth_status - First observed
agc_crash_metric - First observed
agc_crash_summary - First observed
agc_daily_report - First observed
agc_get_app_id - First observed
agc_list_apps - First observed
agc_ratings_summary - First observed
agc_report_export - First observed
agc_report_trend - First observed
agc_request - First observed
agc_review_insights - First observed
agc_reviews_list - First observed
agc_weekly_report
TDQS
Scored across 13 tools
Each tool targets a reasonably distinct output, and descriptions explicitly steer choices (e.g. raw vs summary crash, list vs insights for reviews). However, there is genuine layering overlap: agc_crash_metric/agc_crash_summary query the same endpoint, agc_reviews_list/agc_review_insights/agc_ratings_summary fetch overlapping review data, and the digest tools re-aggregate the same sources, so an agent could occasionally misselect.
Every tool shares the agc_ prefix and snake_case, which is highly predictable. The internal verb/noun ordering is slightly loose (agc_list_apps vs agc_report_export vs agc_crash_metric), but the convention is clear and readable throughout.
13 tools sit squarely in the well-scoped 3-15 band, and each occupies a distinct role (auth, discovery, export, trend, crash, reviews, digests, passthrough). No tool feels redundant or bloated for the analytics scope.
Coverage of the read-only AGC analytics domain is strong: apps, downloads, installs, failures, users/retention, IAP/coupons, crashes, ratings and reviews, plus daily/weekly rollups and a generic passthrough fallback. Write operations (reply, publish, upload) are deliberately excluded, which is a defensible but real boundary.
Maintenance
Related MCP Connectors
Read and edit GA4, Search Console and Google Tag Manager from any MCP client. 29 tools.
100+ MCP tools for AI agents: content metadata, trade intelligence, business-expertise analysis.
The OpenRouter for tools. One MCP connection gives any AI agent 254 hosted tools, pay per call.
Package intelligence MCP for AI agents — 22 tools, 19 ecosystems, AGPL SDK, free.
Related MCP Servers
- AlicenseBqualityBmaintenanceA Model Context Protocol (MCP) server for managing app publishing on Huawei AppGallery Connect. Integrates directly with Claude Desktop or any MCP-compatible client.1731 PyPI4MIT
- AlicenseAqualityDmaintenanceEnables AI assistants to manage Apple App Store Connect operations including app management, TestFlight, analytics, reviews, subscriptions, and more through 54 tools.6153 npm11MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI clients to query and analyze Huawei Health data, including training records, sleep, heart rate, and athletic performance, through 14 MCP tools without third-party servers.3MIT
- AlicenseNot gradedqualityCmaintenanceExposes the full App Store Connect API (1,263 operations) to AI agents via four token-efficient MCP tools, enabling app metadata, TestFlight, subscriptions, and reporting management through natural language.MIT