# AIFA 杂志系统 · MCP 操作说明

给人：把这个地址发给你的 Agent，它读完就知道怎么替你在 AIFA 编辑和运营。给 Agent：本页是速览、典型任务、本地 CLI 与方法索引；细节按需跳说明全文。

本页地址：https://afa5.chaos.callai.online/mcp-guide ｜ 纯文本地址：https://afa5.chaos.callai.online/mcp-guide.md ｜ MCP 地址：https://afa5.chaos.callai.online/mcp

## 快速接入：一段话交给任何 Agent

把下面这段话粘贴给你的 Agent，它会自己选路，浏览器随即弹出 AIFA 授权页；档位在授权页上选。

```text
接入 AIFA 杂志，用我的账号（授权页由我本人点同意）。按你能做到的，选下面第一条走得通的路；做完我就会看到 AIFA 授权页。
1. 你的终端就在我这台电脑上（本机有 Node）：运行
   npx -y https://afa5.chaos.callai.online/cli/aifa.tgz login
   它会打印授权链接，能开浏览器时自动打开；打不开就把链接原样发给我。
   写稿、排版、上传图片与配音都用这个 aifa 命令（把 login 换成 --help 看用法）。
   你在云端电脑上跑命令的话不要 login（授权完成后要跳回 127.0.0.1，我的浏览器连不到你那台机器）：请我在 https://afa5.chaos.callai.online/account/agents 点「签发令牌」，由我把令牌设成你那台机器的环境变量 AIFA_TOKEN（在你的密钥或环境设置里，不要让我贴进对话），再运行 npx -y https://afa5.chaos.callai.online/cli/aifa.tgz status 确认已连上。
2. 你能添加自定义 MCP 连接器（在设置里加，或在对话里自己加都算）：添加 https://afa5.chaos.callai.online/mcp
   （传输选 Streamable HTTP，鉴权选 OAuth 登录，不填密钥），马上连接；连接后直接弹出授权页，弹不出就把登录链接发给我。
   阅读、收藏、订单与管理后台都经这一个地址。
3. 以上都做不到，照实说是哪一种：
   - 连接器要我在界面里手动加：把第 2 条的地址发给我，说出你确定的添加位置；不确定就说「在设置里找连接器、插件或 MCP，新建自定义，类型 HTTP，粘贴这个地址」，不要编造菜单名。
   - 你的连接器只能填固定令牌或请求头，走不了 OAuth 登录：请我在 https://afa5.chaos.callai.online/account/agents 点「签发令牌」，选好档位与有效期，由我把令牌填进你的连接器设置（地址用第 2 条的，请求头 Authorization: Bearer 加令牌）。不要让我把令牌贴进对话。
   - 你完全接不了外部工具：告诉我接不了。能上网的话，可以帮我读 AIFA 的公开单篇，但动不了我的账号。
按我要做的事选：写稿排版走 1，阅读与后台走 2，两样都要就都接（授权页各点一次）；我没说要做什么，就先走你能走的第一条。
授权后按连接时下发的说明（或 aifa --help）做事，不必先读别的文档。
```

手动安装（想自己动手时）：

- Claude Code：`claude mcp add --transport http aifa-magazine https://afa5.chaos.callai.online/mcp && claude mcp login aifa-magazine`
- VS Code：vscode:mcp/install?%7B%22name%22%3A%22aifa-magazine%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fafa5.chaos.callai.online%2Fmcp%22%7D
- Cursor：cursor://anysphere.cursor-deeplink/mcp/install?name=aifa-magazine&config=eyJ1cmwiOiJodHRwczovL2FmYTUuY2hhb3MuY2FsbGFpLm9ubGluZS9tY3AifQ%3D%3D
- 网页版 Claude、ChatGPT：设置里的「连接器」→ 添加自定义连接器，粘贴 `https://afa5.chaos.callai.online/mcp`
- 只收固定令牌的连接器：[签发令牌](https://afa5.chaos.callai.online/account/agents#issue-token)，由你本人填进连接器设置

## 速览

AIFA 是一本中英双语杂志，也是它自己的内容系统，经 MCP 开放给你。你替某个 AIFA 账号做事，本页把它叫绑定账号：它做得到的你都做得到，你的每一处改动都记在它名下。

### 一、开工自查两条

1. 调 `permissions.retrieve`：核对 `principal` 是用户要你代表的那个账号；能不能做一件事只看 `capabilities`。
2. `tools/list` 列出令牌够得着的工具（作者档能调 233 个方法，全部档另含后台）；按一句话找方法用 `aifa_find`，完整入参与示例用 `aifa_describe`。仍调不动才是档位或角色不够：请用户在网站「我的 → Agent」重新授权。

### 二、通用规矩（各工具的说明不再重复）

1. 先读后写，带版本号。写回时把读到的版本号作 `expectedVersion` 传（入参里没有这一项的工具不传，严格入参会拒）；返回 409 就重新读、保留对方的改动再写，不要只换版本号原样重发。
2. 读工具分段取。`offset` 从 0 起，`limit` 不传就按约 100KB 的返回上限自己收；`page.hasMore` 为真就拿 `nextOffset` 接着取，`page.cappedBy` 是 `"bytes"` 表示被上限截短、不是到头；回 `nextCursor` 的工具把它传回 `cursor`。
3. 需确认的动作不由你完成。这类工具只发起请求、不改动线上，返回体第一项是 `confirmUrl`（带 `needsConfirm: true`）：把链接交给有权限的人，不要自己打开，不向任何人索要验证码；他确认后才执行，结果用 `aifa_confirm_read` 取。哪些工具在这一档，见索引的「需确认」一列。
4. 入参以工具清单发来的 schema 为准，对象入参也接受 JSON 字符串；字段规则匿名读 `https://afa5.chaos.callai.online/mcp-guide/schema`；块写成 class + variant，五类 26 个变体的写法见块技能 `aifa-block-<变体>`。
5. 返回里单篇、合集、块、账号另带短编号 `articleNo`、`collectionNo`、`blockNo`（容器号-序号）、`userNo`；`canonicalUrl` 是正式链接（站内路径，如 `/u12/a34`）。
6. 读者可见短字段有长度上限（中/英；中文按字宽、拉丁字母与数字算半字，英文按字符）：合集名 12/32、合集副题 20/60、封面导语 40/120、单篇标题 18/46、作者名 6/20、作者头衔 12/24、作者简介 45/110。超长照收，回执 `lengthHints` 提醒；发布检查只拦合集副题与封面导语。

### 三、再往下读什么

| 要什么 | 去哪里 |
| --- | --- |
| 按任务找方法 | 本页的[方法索引](https://afa5.chaos.callai.online/mcp-guide#tools)，共 293 个 |
| 怎么写一篇 AIFA 的单篇、版面怎么排 | 有可用技能：`aifa_skill` 列出，写稿先读必读 `aifa-author/SKILL.md`，不自动送达 |
| 连接细节、报错、保留范围项、要人确认的事、汇报 | [说明全文](https://afa5.chaos.callai.online/mcp-guide/details)：整页很长，查问题时按节取，写一篇不必读 |
| 让另一个全新的 Agent 接入 | [入口技能文件](https://afa5.chaos.callai.online/mcp-guide/skills/SKILL.md)，一页讲完连接与该取哪个技能包 |

说明页的地址后面加 `.md` 就是纯文本版，都不需要登录。与工具自己的说明不一致时，以工具的为准。

## 典型任务（最短流程）

1. 读一篇：`articles.search` 按标题找（自己的稿用 `articles.list`）→ `articles.text` 给 `articleId`，按页分段回纯文本。要页文件与版本号用 `aifa_pull`。
2. 写一篇并发布：`aifa_skill` 取必读 `aifa-author/SKILL.md` → `articles.create` 建稿 → `uploads.create` 传素材 → `aifa_push` 一批写入，照回执改到不超行 → `articles.pages.render` 桌面与手机各看一张，`articles.check` 阻断项改到零 → `articles.preview_links.create` 给用户预览 → `articles.publish`，看 `display`：`live` 已上线，`pending` 进了运营审核；读者直链是回执的 `readerUrl`。
3. 改已上线的一篇（含补英文）：`aifa_pull` 取索引与要改那一页的页文件 → 只改那一块 → `aifa_push` 带读到的 `expectedVersion` 写回 → `articles.check` → `articles.publish`。改的是修改稿，一律进运营审核（`live_pending`），通过前线上还是旧版；退回就改后重提，或 `articles.discard_revision` 放弃。
4. 审待审的单篇、把一篇下线（全部档，运营角色）：`review_items.retrieve` / `moderation_items.list`（facet=queue）取队列 → `review_items.update` 通过、退回或下线，items 一次可放多篇。不生成确认链接，你可以独立完成。

处置留言：`comments.list` → `comments.update`。编合集从 `collections.create` 起。别的按方法索引找。

### 还没连上：连接三步

1. 把 MCP 端点 `https://afa5.chaos.callai.online/mcp` 加进客户端，传输方式 Streamable HTTP，不填任何密钥。Claude Code：`claude mcp add --transport http aifa-magazine https://afa5.chaos.callai.online/mcp`。这是唯一的入口，读者、作者与后台都连它，授权一次即可。你无权改客户端配置时，把端点交给用户在 MCP 或「连接器」设置里添加。
2. 客户端连上即给出授权链接（Claude Code 用 `claude mcp login` 或 `/mcp` 点 Authenticate）。请用户本人登录、选档位（读者档 `reader` 只替读者办事，作者档 `author` 只含创作面，全部档 `full`，含管理后台，要绑定账号本身是运营（含客服工单）或管理员（另含计费、账号与授权））、点同意。这一步你替不了：同意页只认网页登录会话；改邮箱、付款、授权管理、绑定验证器要用户勾过对应范围项，缺了回 403 `reserved_scope_missing`。
3. 拿到令牌后每次调用带 `Authorization: Bearer <访问令牌>`，刷新由客户端管。要自己实现 OAuth 2.1 授权码 + PKCE，读[说明全文的「三、连接与身份」](https://afa5.chaos.callai.online/mcp-guide/details#connect)。

## 本地 CLI

有命令行、本机有 Node 22+ 的 Agent 可以用本地构建工具 `aifa`：在本机写稿，用与网站同一套排版引擎校验、预览、出图，再一次批量写回。写回的与 `aifa_push` 是同一批文件。它只处理登录账号自己的稿，别人的稿用 MCP 或网站；只能聊天或在远端沙箱里的 Agent 照常走 MCP。安装包：[https://afa5.chaos.callai.online/cli/aifa.tgz](https://afa5.chaos.callai.online/cli/aifa.tgz)。

```bash
npm i -g https://afa5.chaos.callai.online/cli/aifa.tgz   # 安装；不装也行：npx --yes https://afa5.chaos.callai.online/cli/aifa.tgz <命令>
aifa login --site https://afa5.chaos.callai.online   # 用户登录后点同意一次；--no-open 只打印授权地址
aifa pull <单篇 id>   # 或 aifa new <标题> [--source en]，再 cd 进单篇包目录
aifa check && aifa preview && aifa push && aifa articles publish <单篇 id>
```

### 一级命令（文件三步、发布六动作、本机能力）

```bash
aifa map [--json]
    # 打印能力地图（同 MCP aifa_map）：先教文件四步 pull → 改 → check → push，再列资源与方法数
aifa find <一句话> [--limit <1-10>] [--json]
    # 按意图找规格方法（中英皆可，同 MCP aifa_find）：回最相关的几个方法 ID、说明与 CLI 写法；接着 aifa describe <方法> 看入参
aifa pull <单篇 id> [--dir <目录>] [--stdout] [--live|--reader] | pull --reader --collection <合集 id> [--dir <目录>] [--stdout] | pull <单篇 id> --original <rs_…|st_…>
    # 取回整篇（同 MCP aifa_pull）：落成本机单篇包，在单篇包里不带 id 跑即拉取合并；--stdout 不落目录，印出文本包（改完 check --stdin、push --stdin）；--live 取线上版、--reader 取读者那一份（别人的已发布稿也行，付费未解锁的块只有封面），两者只读；--reader --collection 取一本已发布合集整本；--original 印出某次提交交上来的原稿
aifa check [--remote] [--json] [--publish] | check --stdin <单篇 id>
    # 只校验不落盘：本地先按写入同一套规则校验并测量；--remote 把 push 会交的那一批交 aifa_check（网站走真写同一条路、不落盘），与本地结论逐块比；--publish 按发布结论退出（有发布拦截项退出 1，每条拦截带改法）；--stdin 收 pull --stdout 的文本包交 aifa_check、印网站回执
aifa push [--json] | push --stdin <单篇 id>
    # 一次提交（同 MCP aifa_push）：素材一批直传、作品包逐个上传，新稿先建稿，整批文件经 aifa_push 全成全败、产生一步，打印网站回执、与本地回执的逐块差异、预览链接；--stdin 收 pull --stdout 的文本包一次提交、印网站回执
aifa submit [<单篇 id>] [--skip-capacity-check] [--expected-version <n>] [--json]
    # 把工作稿交运营审核（未认证作者的首次发布与修改稿走这条）
aifa publish [<单篇 id>] [--skip-capacity-check] [--expected-version <n>] [--json]
    # 发布网站上的工作稿：已认证作者直接上线，未认证进运营审核，修改稿一律进审；块高没量成时被拒，持全部范围写权限的账号可带 --skip-capacity-check
aifa unpublish [<单篇 id>] [--note <原因>] [--expected-version <n>] [--json]
    # 下线自己已发布的单篇（再 publish 即重新上线）
aifa request-revision [<单篇 id>] [--expected-version <n>] [--json]
    # 已发布单篇申请修改：开一份修改稿，线上继续是旧版，改完 publish 进审
aifa discard-revision [<单篇 id>] [--expected-version <n>] [--json]
    # 放弃修改：修改稿整篇回到线上那一版，线上不动
aifa withdraw [<单篇 id>] [--expected-version <n>] [--json]
    # 撤回审核中的候选，回到工作稿
aifa new <标题> [--source <语种>] [--title.<语种> <标题>…] [--dir <目录>]
    # 在本地建一个空单篇包（正文一个对页 new-a、new-b）；<标题> 写进原文那一格，--source 声明原文语种（zh、en），其他语种的标题用 --title.<语种> 各给一格；第一次 push 时建稿
aifa preview [--port <端口>] [--no-open]
    # 本地预览页：PC 对页 / 手机、夜览、中英，改文件自动刷新
aifa render <页…> [--device mobile] [--lang zh|en] [--dark] [--screen 1440x900] [--blocks] [--out <目录>] [--json] | render --canvas <画面.html> [--width full|half] [--rows <行>] [--label] [--sources]
    # 本地出 PNG（p1 是封面；不带 --lang 出原文语种那一份）；--canvas 把一个画面文件放进真实版面试排
aifa upload <文件或作品包目录…> [--target asset|drive] [--rightsNote.<语种> …] [--aiGenerated] [--tags a,b] [--json]
    # 上传本机图片、视频、音频或作品包目录（打成 zip），打印资源 id：素材库的文件一批直传，网盘文件与作品包走上传凭证再入库；在单篇包里记下，push 不重传
aifa voice <音频文件> [--lang zh|en] [--timeline <时间轴.json>] [--duration <秒>] [--json]
    # 上传本机配音并登记进音频库，音频与逐段时间轴（该语言那条轨）直接写进网站上这篇的单篇设置；时间轴点名的块要在本地 article.<语种>.md 里；新稿先 aifa push 再跑
aifa snapshot [--dir <目录>] [--include published,own,meta] [--since [<时刻>]] [--languages zh,en] | snapshot --dir <目录> --query <SQL> [--json]
    # 按身份导出只读快照落本机（缺省 ./aifa-snapshot/）：published/ 读得到的已发布稿（付费未解锁的块只有封面）、own/ 自己的稿、index.json 与 index.sqlite（articles、blocks、collections 三表加 blocks_fts 全文检索）；--since 增量；--query 在本机索引库上跑只读 SQL；快照只读，里面不能 push
aifa skills sync [--dir <目录>] [--json]
    # 按技能包发布版本把本站分发的技能落到本机目录（缺省 ./aifa-skills），只写变了的文件，列出本次新增、变更、删除的文件；status、check、push 发现本机副本落后站点时提醒一行
aifa guide night-palette --colors '{"--名字":"#色值"}' | --file <画面.html> [--write] | --source <源码> | --input <文件|-> [--json]
    # 本机算自定义配色的夜览版本（与夜览配色契约同一个函数，不连站点）：--file 读画面源码，加 --write 把夜览那一段写回文件（重跑只换那一段）
aifa inbox [--types article.published,message.created] [--since <游标>] [--limit <n>] [--json] | inbox --listen [--exec "<命令>"] [--types …] [--since <游标>] [--json]
    # 拉一次本账号的事件（events.list）；--listen 常驻：挂本机专用的拉取目的地长等，每来一批先标 working（作者看到「Agent 正在处理」）再执行一次 --exec 命令（批 JSON 从标准输入给，instructions 单列作者的话），退出码 0 才确认（作者侧标已处理），非 0 退避后从这批开头重给；不给 --exec 打到标准输出
aifa channel
    # Claude Code 渠道插件（stdio MCP 服务端，声明 claude/channel）：作者在「我的 Agent」会话说的话以 notifications/claude/channel 推进正在运行的会话，Agent 用 reply 工具回话，回了哪条才标哪条已处理；回话前退出的再起时重推。登记：claude mcp add aifa -- aifa channel
```

### 账号与资源命令

```bash
aifa login [--site <地址>] [--scope author|full|reader] [--no-open] [--device [--login-hint <邮箱或主页短名>] [--name <Agent 名>]]
    # 打印授权地址并打开浏览器，人类登录后点同意一次（缺省作者档，15 天免登录）；一张令牌连单一入口 /mcp。没有浏览器回跳的机器用 --device：打印核对码，本人在官方 APP 或网页消息页批准（带 --login-hint 时接入卡直接推到本人「待处理」），批准后自动存令牌。云端电脑用环境变量 AIFA_TOKEN（用户在账号页签发的个人访问令牌），不用 login
aifa logout
    # 删本机令牌；网站上的授权在账号页吊销
aifa status
    # 当前站点登没登录、版本号、/mcp 开场说明的摘要；设了 AIFA_TOKEN 时报令牌的档位；在单篇包里另报改过哪些文件
aifa instructions [--json]
    # 打印 /mcp 连接时下发的开场说明全文（MCP instructions）
aifa version [--json]
    # CLI 版本、规格契约号与规格指纹、排版引擎版本
aifa tools [资源|关键词] [--json]
    # 每个规格方法一行：CLI 写法、读/写、是否需确认
aifa describe <方法 ID>
    # 一个方法的说明、入参、权限、错误与 CLI 写法（同 MCP aifa_describe）
aifa <资源…> <动词> [<路径参数…>] [--参数 值…] [--input 文件|-] [--json]
    # 如 aifa articles list --segment articles、aifa collections items create col_1 --article-id art_2
aifa call <方法 ID> [--input 文件|-] [--参数 值…] [--json]
    # 原始形式：按方法 ID 调，入参名与规格逐字相同
```

- 本机预览与出图用读者端同一套外框：电脑上封面封底固定 1:√2 独立一屏，手机封面铺满一屏，对页分左右页眉页脚。第一次出图会自动装一个无头浏览器（一百多 MB），只开预览页不需要。
- `aifa check --json`（或 `.aifa/receipt.json`）的 `elements` 按块、按遍（`pc636`、`phone` 与中英）给浏览器读数，与 `articles.pages.render` 同一个采集：`box` 是块在页上的 [x, y, 宽, 高]；`scroll` 装不下时带 `lastVisibleLine`、`lastVisibleText`（读者在框里读到第几行、最后几个字）；`images` 看 `loaded` 与 `bareEdge`（露底）；`fonts.fallbackGlyphs` 为真是中文落到回落字形；画面块的 `errors` 是画面里的脚本错误、console.error 与加载失败的资源，已归到出错的那一块。`aifa render` 画面判不过（与排版规则 R19 同一判据被裁，或首帧空白）退出码 1。
- `aifa push` 先核对排版引擎版本，与网站不一致就当场停下、什么都不传，照提示重装一次安装包即可，本地单篇包不用动。推送成功后本地记录的版本号同步更新，不必再拉。
- 拉别人的稿会报「本地构建工具只处理登录账号自己的稿」；单篇 id 用 `aifa articles list` 查。发布、下线与修改稿是资源命令 `aifa articles publish <单篇 id>` 等。全部命令与参数见 `aifa --help`。

## 方法索引（293）

### 开场工具（11）

连上 `/mcp` 后 `tools/list` 只给这几个工具：写稿改稿走文件三步 `aifa_pull` → `aifa_check` → `aifa_push`；其余能力先 `aifa_find` 按一句话找方法 ID，再 `aifa_describe` 看入参，最后 `aifa_call_read` 或 `aifa_call_write` 调用。下面各表列的就是这些方法 ID。

| 工具 | 用途 | 读/写 |
| --- | --- | --- |
| `aifa_map` | Start here: the file workflow and what else AIFA can do. | 读 |
| `aifa_pull` | Get a whole article as an editable text pack. | 读 |
| `aifa_check` | Validate an edited text pack without saving; returns measurements. | 读 |
| `aifa_push` | Save an edited text pack in one batch; returns receipt. | 写 |
| `aifa_find` | Find other API methods by intent; returns method IDs. | 读 |
| `aifa_describe` | Get a method's params, permissions, flags, errors and CLI form. | 读 |
| `aifa_call_read` | Call any read-only API method by ID. | 读 |
| `aifa_call_write` | Call any write API method by ID; returns receipt. | 写 |
| `aifa_confirm_read` | Check a pending confirmation and its human approval link. | 读 |
| `aifa_skill` | Read a skill's metadata or a file from it. | 读 |
| `aifa_events` | Pull new events for your destination since a cursor. | 读 |

先按域缩到一张表，再按「用途」挑一行。规格方法全集 293 个，全部经单一入口 `/mcp` 调用；你的令牌调得动的按档位与能力收窄，`aifa_find` 只回你调得动的。

「档位」是调用它至少需要哪一档授权（读者档 < 作者档 < 全部档，全部档另要绑定账号有后台角色）。每个方法的入参、返回体、权限与报错用 `aifa_describe` 当场取，本索引不重复。「需确认」是要人打开确认链接才执行的动作（见速览第四条规矩），「按入参」表示只有某些入参落进这一档。「读」指调用它不改任何数据，用 `aifa_call_read`；「写」指会改数据，用 `aifa_call_write`；「写·花 Token」指调用要跑模型、消耗 Token 或余额；四个保留范围项见第八节。逐域的说明与常见流程见[说明全文](https://afa5.chaos.callai.online/mcp-guide/details)。

### 运维探活与版本（7）

| 方法 | 用途 | 档位 | 需确认 | 读/写 |
| --- | --- | --- | --- | --- |
| `system.retrieve` | Retrieve system (read-only) | 读者档起 | — | 读 |
| `jobs.list` | List jobs (read-only) | 全部档 | — | 读 |
| `jobs.create` | Create jobs | 全部档 | — | 写 |
| `jobs.update` | Update jobs | 全部档 | — | 写 |
| `jobs.events.list` | List jobs events (read-only) | 全部档 | — | 读 |
| `api_docs.retrieve` | Retrieve api docs (read-only) | 不登录也可 | — | 读 |
| `operation_settings.update` | Update operation settings | 全部档 | — | 写 |

### Agent 授权与 OAuth（21）

| 方法 | 用途 | 档位 | 需确认 | 读/写 |
| --- | --- | --- | --- | --- |
| `agent_quickstart.retrieve` | Retrieve agent quickstart (read-only) | 不登录也可 | — | 读 |
| `oauth_clients.list` | List oauth clients (read-only) | 不登录也可 | — | 读 |
| `oauth_clients.retrieve` | Retrieve oauth clients (read-only) | 不登录也可 | — | 读 |
| `oauth_clients.create` | Create oauth clients | 读者档起 | — | 写 |
| `oauth_clients.delete` | Delete oauth clients | 全部档 | — | 写 |
| `devices.list` | List devices (read-only) | 读者档起 | — | 读 |
| `devices.retrieve` | Retrieve devices (read-only) | 读者档起 | — | 读 |
| `devices.create` | Create devices | 读者档起 | — | 写 |
| `devices.delete` | Delete devices | 读者档起 | — | 写 |
| `agent_authorizations.list` | List agent authorizations (read-only) | 读者档起 | — | 读 |
| `agent_authorizations.check` | Check agent authorizations (read-only) | 读者档起 | — | 读 |
| `agent_authorizations.retrieve` | Retrieve agent authorizations (read-only) | 读者档起 | — | 读 |
| `agent_authorizations.create` | Create agent authorizations | 读者档起 | — | 写 |
| `agent_authorizations.update` | Update agent authorizations | 作者档起 | — | 写 |
| `agent_authorizations.delete` | Delete agent authorizations | 读者档起 | — | 写 |
| `sessions.create` | Create sessions | 读者档起 | — | 写 |
| `device_authorizations.retrieve` | Retrieve device authorizations (read-only) | 读者档起 | — | 读 |
| `device_authorizations.approve` | Approve device authorizations | 读者档起 | — | 写 |
| `device_authorizations.deny` | Deny device authorizations | 读者档起 | — | 写 |
| `sessions.list` | List sessions (read-only) | 读者档起 | — | 读 |
| `accounts.revoke_sessions` | Revoke sessions accounts | 全部档 | — | 写 |

### Agent 通道（MCP、CLI、版本、事件）（19）

| 方法 | 用途 | 档位 | 需确认 | 读/写 |
| --- | --- | --- | --- | --- |
| `events.list` | List events (read-only) | 读者档起 | — | 读 |
| `events.retrieve` | Retrieve events (read-only) | 读者档起 | — | 读 |
| `event_destinations.list` | List event destinations (read-only) | 读者档起 | — | 读 |
| `event_destinations.create` | Create event destinations | 读者档起 | — | 写 |
| `event_destinations.update` | Update event destinations | 读者档起 | — | 写 |
| `event_destinations.delete` | Delete event destinations | 读者档起 | — | 写 |
| `event_destinations.events.list` | List event destinations events (read-only) | 读者档起 | — | 读 |
| `layout_specs.list` | List layout specs (read-only) | 不登录也可 | — | 读 |
| `layout_specs.retrieve` | Retrieve layout specs (read-only) | 不登录也可 | — | 读 |
| `layout_specs.create` | Create layout specs | 读者档起 | — | 写 |
| `layout_specs.update` | Update layout specs | 读者档起 | — | 写 |
| `layout_specs.delete` | Delete layout specs | 读者档起 | — | 写 |
| `reader_capabilities.list` | List reader capabilities (read-only) | 不登录也可 | — | 读 |
| `reader_capabilities.retrieve` | Retrieve reader capabilities (read-only) | 不登录也可 | — | 读 |
| `reader_capabilities.create` | Create reader capabilities | 读者档起 | — | 写 |
| `reader_capabilities.update` | Update reader capabilities | 读者档起 | — | 写 |
| `reader_capabilities.delete` | Delete reader capabilities | 读者档起 | — | 写 |
| `event_destinations.test` | Test event destinations | 读者档起 | — | 写 |
| `event_destinations.ack` | Ack event destinations | 读者档起 | — | 写 |

### 需确认动作（4）

| 方法 | 用途 | 档位 | 需确认 | 读/写 |
| --- | --- | --- | --- | --- |
| `confirmations.list` | List confirmations (read-only) | 读者档起 | — | 读 |
| `confirmations.retrieve` | Retrieve confirmations (read-only) | 读者档起 | — | 读 |
| `confirmations.cancel` | Cancel confirmations | 读者档起 | — | 写 |
| `confirmations.approve` | Approve confirmations | 读者档起 | — | 写 |

### 统计（2）

| 方法 | 用途 | 档位 | 需确认 | 读/写 |
| --- | --- | --- | --- | --- |
| `analytics_reports.retrieve` | Retrieve analytics reports (read-only) | 全部档 | — | 读 |
| `analytics_events.create` | Create analytics events | 不登录也可 | — | 写 |

### 外链登记（5）

| 方法 | 用途 | 档位 | 需确认 | 读/写 |
| --- | --- | --- | --- | --- |
| `exit_links.list` | List exit links (read-only) | 读者档起 | — | 读 |
| `exit_links.update` | Update exit links | 全部档 | — | 写 |
| `exit_links.own_hosts` | Own hosts exit links (read-only) | 不登录也可 | — | 读 |
| `exit_links.record_click` | Record click exit links | 不登录也可 | — | 写 |
| `exit_links.refetch` | Refetch exit links | 作者档起 | — | 写 |

### 杂志设置与审核队列（6）

| 方法 | 用途 | 档位 | 需确认 | 读/写 |
| --- | --- | --- | --- | --- |
| `review_settings.retrieve` | Retrieve review settings (read-only) | 作者档起 | — | 读 |
| `review_settings.update` | Update review settings | 全部档 | 按入参 | 写 |
| `review_items.list` | List review items (read-only) | 全部档 | — | 读 |
| `review_items.retrieve` | Retrieve review items (read-only) | 全部档 | — | 读 |
| `review_items.update` | Update review items | 全部档 | — | 写 |
| `review_items.batch_decide` | Batch decide review items | 全部档 | — | 写 |

### 内容审核（屏蔽与删除）（3）

| 方法 | 用途 | 档位 | 需确认 | 读/写 |
| --- | --- | --- | --- | --- |
| `moderation_items.list` | List moderation items (read-only) | 全部档 | — | 读 |
| `moderation_items.moderate` | Moderate moderation items | 全部档 | — | 写 |
| `moderation_items.delist` | Delist moderation items | 全部档 | — | 写 |

### 技能包与作品包（13）

| 方法 | 用途 | 档位 | 需确认 | 读/写 |
| --- | --- | --- | --- | --- |
| `skills.list` | List skills (read-only) | 不登录也可 | — | 读 |
| `skills.retrieve` | Retrieve skills (read-only) | 不登录也可 | — | 读 |
| `skills.files.retrieve` | Retrieve skills files (read-only) | 不登录也可 | — | 读 |
| `skills.archive` | Archive skills (read-only) | 不登录也可 | — | 读 |
| `skills.create` | Create skills | 全部档 | — | 写 |
| `skills.update` | Update skills | 全部档 | 按入参 | 写 |
| `skills.files.update` | Update skills files | 全部档 | — | 写 |
| `skills.enable` | Enable skills | 全部档 | 按入参 | 写 |
| `skills.delete` | Delete skills | 全部档 | — | 写 |
| `skills.compare_constraint` | Compare constraint skills | 全部档 | — | 写 |
| `bundles.create` | Create bundles | 作者档起 | — | 写 |
| `bundles.retrieve` | Retrieve bundles (read-only) | 作者档起 | — | 读 |
| `bundles.launch` | Launch bundles | 不登录也可 | — | 写 |

### 收藏与块引用（4）

| 方法 | 用途 | 档位 | 需确认 | 读/写 |
| --- | --- | --- | --- | --- |
| `library_items.list` | List library items (read-only) | 读者档起 | — | 读 |
| `library_items.create` | Create library items | 读者档起 | — | 写 |
| `library_items.delete` | Delete library items | 读者档起 | — | 写 |
| `citations.list` | List citations (read-only) | 作者档起 | — | 读 |

### 留言（9）

| 方法 | 用途 | 档位 | 需确认 | 读/写 |
| --- | --- | --- | --- | --- |
| `comments.list` | List comments (read-only) | 不登录也可 | — | 读 |
| `comments.create` | Create comments | 读者档起 | — | 写 |
| `comment_trusts.list` | List comment trusts (read-only) | 作者档起 | — | 读 |
| `comment_trusts.create` | Create comment trusts | 作者档起 | — | 写 |
| `comment_trusts.delete` | Delete comment trusts | 作者档起 | — | 写 |
| `comments.delete` | Delete comments | 读者档起 | — | 写 |
| `comments.update` | Update comments | 作者档起 | — | 写 |
| `comments.batch_moderate` | Batch moderate comments | 作者档起 | — | 写 |
| `comments.translate` | Translate comments | 读者档起 | — | 写·花 Token |

### 账号资料与作者主页（41）

| 方法 | 用途 | 档位 | 需确认 | 读/写 |
| --- | --- | --- | --- | --- |
| `accounts.list` | List accounts (read-only) | 全部档 | — | 读 |
| `accounts.retrieve` | Retrieve accounts (read-only) | 读者档起 | — | 读 |
| `accounts.update` | Update accounts | 读者档起 | — | 写 |
| `accounts.avatar.update` | Update accounts avatar | 读者档起 | — | 写 |
| `handle_protections.list` | List handle protections (read-only) | 全部档 | — | 读 |
| `handle_protections.create` | Create handle protections | 全部档 | — | 写 |
| `handle_protections.update` | Update handle protections | 全部档 | — | 写 |
| `handle_protections.delete` | Delete handle protections | 全部档 | — | 写 |
| `profiles.list` | List profiles (read-only) | 不登录也可 | — | 读 |
| `profiles.retrieve` | Retrieve profiles (read-only) | 不登录也可 | — | 读 |
| `profiles.update` | Update profiles | 读者档起 | — | 写 |
| `follows.list` | List follows (read-only) | 读者档起 | — | 读 |
| `follows.create` | Create follows | 读者档起 | — | 写 |
| `follows.delete` | Delete follows | 读者档起 | — | 写 |
| `follow_suggestions.list` | List follow suggestions (read-only) | 读者档起 | — | 读 |
| `permissions.retrieve` | Retrieve permissions (read-only) | 读者档起 | — | 读 |
| `permissions.update` | Update permissions | 全部档 | — | 写 |
| `account_deletions.retrieve` | Retrieve account deletions (read-only) | 读者档起 | — | 读 |
| `account_deletions.create` | Create account deletions | 读者档起 | — | 写 |
| `account_deletions.delete` | Delete account deletions | 读者档起 | — | 写 |
| `verifications.list` | List verifications (read-only) | 全部档 | — | 读 |
| `verifications.retrieve` | Retrieve verifications (read-only) | 全部档 | — | 读 |
| `verifications.create` | Create verifications | 读者档起 | — | 写 |
| `verifications.update` | Update verifications | 全部档 | — | 写 |
| `verifications.delete` | Delete verifications | 读者档起 | — | 写 |
| `verification_config.retrieve` | Retrieve verification config (read-only) | 读者档起 | — | 读 |
| `verification_config.update` | Update verification config | 全部档 | — | 写 |
| `sanctions.list` | List sanctions (read-only) | 全部档 | — | 读 |
| `sanctions.create` | Create sanctions | 全部档 | — | 写 |
| `sanctions.delete` | Delete sanctions | 全部档 | — | 写 |
| `abuse_policies.retrieve` | Retrieve abuse policies (read-only) | 全部档 | — | 读 |
| `abuse_policies.update` | Update abuse policies | 全部档 | — | 写 |
| `abuse_policies.steps.list` | List abuse policies steps (read-only) | 全部档 | — | 读 |
| `abuse_stats.retrieve` | Retrieve abuse stats (read-only) | 全部档 | — | 读 |
| `accounts.retrieve_me` | Retrieve me accounts (read-only) | 读者档起 | — | 读 |
| `handle_protections.check` | Check handle protections (read-only) | 读者档起 | — | 读 |
| `verifications.retrieve_me` | Retrieve me verifications (read-only) | 读者档起 | — | 读 |
| `reports.list` | List reports (read-only) | 全部档 | — | 读 |
| `reports.retrieve` | Retrieve reports (read-only) | 全部档 | — | 读 |
| `reports.create` | Create reports | 读者档起 | — | 写 |
| `reports.update` | Update reports | 全部档 | — | 写 |

### 消息 im（独立服务）（26）

| 方法 | 用途 | 档位 | 需确认 | 读/写 |
| --- | --- | --- | --- | --- |
| `conversations.list` | List conversations (read-only) | 读者档起 | — | 读 |
| `conversations.retrieve` | Retrieve conversations (read-only) | 读者档起 | — | 读 |
| `conversations.create` | Create conversations | 读者档起 | — | 写 |
| `conversations.update` | Update conversations | 读者档起 | — | 写 |
| `conversations.agent_status.retrieve` | Retrieve conversations agent status (read-only) | 读者档起 | — | 读 |
| `conversations.agent_status.update` | Update conversations agent status | 读者档起 | — | 写 |
| `conversations.messages.list` | List conversations messages (read-only) | 读者档起 | — | 读 |
| `conversations.messages.create` | Create conversations messages | 读者档起 | — | 写 |
| `conversations.participants.list` | List conversations participants (read-only) | 读者档起 | — | 读 |
| `conversations.read_cursor.update` | Update conversations read cursor | 读者档起 | — | 写 |
| `message_settings.retrieve` | Retrieve message settings (read-only) | 读者档起 | — | 读 |
| `message_settings.update` | Update message settings | 读者档起 | — | 写 |
| `notification_cards.retrieve` | Retrieve notification cards (read-only) | 读者档起 | — | 读 |
| `contact_blocks.list` | List contact blocks (read-only) | 读者档起 | — | 读 |
| `contact_blocks.create` | Create contact blocks | 读者档起 | — | 写 |
| `contact_blocks.delete` | Delete contact blocks | 读者档起 | — | 写 |
| `notification_settings.retrieve` | Retrieve notification settings (read-only) | 读者档起 | — | 读 |
| `push_subscriptions.list` | List push subscriptions (read-only) | 读者档起 | — | 读 |
| `push_subscriptions.create` | Create push subscriptions | 读者档起 | — | 写 |
| `push_subscriptions.delete` | Delete push subscriptions | 读者档起 | — | 写 |
| `platform_rules.retrieve` | Retrieve platform rules (read-only) | 读者档起 | — | 读 |
| `platform_rules.update` | Update platform rules | 全部档 | — | 写 |
| `seats.conversations.list` | List seats conversations (read-only) | 全部档 | — | 读 |
| `conversations.to_ticket` | To ticket conversations | 全部档 | — | 写 |
| `message_settings.check` | Check message settings (read-only) | 读者档起 | — | 读 |
| `conversations.stream` | Stream conversations (read-only) | 读者档起 | — | 读 |

### 信息流 feed（独立服务）（6）

| 方法 | 用途 | 档位 | 需确认 | 读/写 |
| --- | --- | --- | --- | --- |
| `feed_items.list` | List feed items (read-only) | 读者档起 | — | 读 |
| `reposts.list` | List reposts (read-only) | 不登录也可 | — | 读 |
| `reposts.create` | Create reposts | 读者档起 | — | 写 |
| `reposts.delete` | Delete reposts | 读者档起 | — | 写 |
| `feed_events.list` | List feed events (read-only) | 读者档起 | — | 读 |
| `feed_events.create` | Create feed events | 读者档起 | — | 写 |

### 素材与媒体（7）

| 方法 | 用途 | 档位 | 需确认 | 读/写 |
| --- | --- | --- | --- | --- |
| `media.list` | List media (read-only) | 作者档起 | — | 读 |
| `media.retrieve` | Retrieve media (read-only) | 不登录也可 | — | 读 |
| `media.create` | Create media | 读者档起 | — | 写 |
| `uploads.create` | Create uploads | 读者档起 | — | 写 |
| `media.fetch` | Fetch media | 作者档起 | — | 写 |
| `media.update` | Update media | 作者档起 | — | 写 |
| `media.delete` | Delete media | 作者档起 | — | 写 |

### 页与块（6）

| 方法 | 用途 | 档位 | 需确认 | 读/写 |
| --- | --- | --- | --- | --- |
| `block_uploads.list` | List block uploads (read-only) | 读者档起 | — | 读 |
| `block_uploads.create` | Create block uploads | 作者档起 | — | 写 |
| `block_uploads.delete` | Delete block uploads | 读者档起 | — | 写 |
| `articles.pages.render` | Render articles pages (read-only) | 作者档起 | — | 写 |
| `articles.blocks.act` | Act articles blocks | 读者档起 | — | 写 |
| `blocks.retrieve` | Retrieve blocks (read-only) | 不登录也可 | — | 读 |

### 单篇与工作流（33）

| 方法 | 用途 | 档位 | 需确认 | 读/写 |
| --- | --- | --- | --- | --- |
| `articles.list` | List articles (read-only) | 作者档起 | — | 读 |
| `articles.search` | Search articles (read-only) | 读者档起 | — | 读 |
| `articles.retrieve` | Retrieve articles (read-only) | 作者档起 | — | 读 |
| `articles.create` | Create articles | 作者档起 | — | 写 |
| `articles.update` | Update articles | 作者档起 | — | 写 |
| `articles.delete` | Delete articles | 作者档起 | — | 写 |
| `articles.files.retrieve` | Retrieve articles files (read-only) | 作者档起 | — | 读 |
| `articles.files.update` | Update articles files | 作者档起 | — | 写 |
| `articles.check` | Check articles (read-only) | 作者档起 | — | 写 |
| `articles.diff` | Diff articles (read-only) | 作者档起 | — | 读 |
| `articles.byline_candidates.list` | List articles byline candidates (read-only) | 作者档起 | — | 读 |
| `articles.submit` | Submit articles | 作者档起 | — | 写 |
| `articles.publish` | Publish articles | 作者档起 | — | 写 |
| `articles.unpublish` | Unpublish articles | 作者档起 | — | 写 |
| `articles.request_revision` | Request revision articles | 作者档起 | — | 写 |
| `articles.discard_revision` | Discard revision articles | 作者档起 | — | 写 |
| `articles.withdraw` | Withdraw articles | 作者档起 | — | 写 |
| `articles.transfer` | Transfer articles | 全部档 | 按入参 | 写 |
| `articles.releases.list` | List articles releases (read-only) | 作者档起 | — | 读 |
| `articles.releases.retrieve` | Retrieve articles releases (read-only) | 作者档起 | — | 读 |
| `articles.restore_release` | Restore release articles | 作者档起 | — | 写 |
| `articles.originals.list` | List articles originals (read-only) | 作者档起 | — | 读 |
| `articles.originals.retrieve` | Retrieve articles originals (read-only) | 作者档起 | — | 读 |
| `steps.list` | List steps (read-only) | 作者档起 | — | 读 |
| `steps.retrieve` | Retrieve steps (read-only) | 作者档起 | — | 读 |
| `steps.revert` | Revert steps | 作者档起 | — | 写 |
| `articles.translate` | Translate articles | 作者档起 | — | 写·花 Token |
| `articles.run_ai` | Run ai articles | 作者档起 | — | 写·花 Token |
| `articles.preview_links.list` | List articles preview links (read-only) | 作者档起 | — | 读 |
| `articles.preview_links.create` | Create articles preview links | 作者档起 | — | 写 |
| `articles.preview_links.delete` | Delete articles preview links | 作者档起 | — | 写 |
| `articles.preview` | Preview articles (read-only) | 作者档起 | — | 读 |
| `preview_links.retrieve` | Retrieve preview links (read-only) | 不登录也可 | — | 读 |

### 合集（24）

| 方法 | 用途 | 档位 | 需确认 | 读/写 |
| --- | --- | --- | --- | --- |
| `collections.list` | List collections (read-only) | 作者档起 | — | 读 |
| `collections.retrieve` | Retrieve collections (read-only) | 作者档起 | — | 读 |
| `collections.create` | Create collections | 作者档起 | — | 写 |
| `collections.update` | Update collections | 作者档起 | — | 写 |
| `collections.cover.update` | Update collections cover | 作者档起 | — | 写 |
| `collections.cover_bitmap` | Cover bitmap collections (read-only) | 不登录也可 | — | 读 |
| `collections.pages.render` | Render collections pages (read-only) | 作者档起 | — | 写 |
| `collections.delete` | Delete collections | 作者档起 | — | 写 |
| `collections.check_name` | Check name collections (read-only) | 作者档起 | — | 读 |
| `collections.local_review` | Local review collections (read-only) | 不登录也可 | — | 读 |
| `collections.check` | Check collections (read-only) | 作者档起 | — | 写 |
| `collections.publish` | Publish collections | 作者档起 | — | 写 |
| `collections.unpublish` | Unpublish collections | 作者档起 | — | 写 |
| `collections.transfer` | Transfer collections | 全部档 | 按入参 | 写 |
| `collections.items.list` | List collections items (read-only) | 作者档起 | — | 读 |
| `collections.items.batch_add` | Batch add collections items | 作者档起 | — | 写 |
| `collections.items.batch_remove` | Batch remove collections items | 作者档起 | — | 写 |
| `collections.items.reorder` | Reorder collections items | 作者档起 | — | 写 |
| `collections.files.retrieve` | Retrieve collections files (read-only) | 作者档起 | — | 读 |
| `collections.files.update` | Update collections files | 作者档起 | — | 写 |
| `inclusion_refusals.list` | List inclusion refusals (read-only) | 作者档起 | — | 读 |
| `inclusion_refusals.create` | Create inclusion refusals | 作者档起 | — | 写 |
| `inclusion_refusals.delete` | Delete inclusion refusals | 作者档起 | — | 写 |
| `collections.preview_links.create` | Create collections preview links | 作者档起 | — | 写 |

### 阅读与读者（18）

| 方法 | 用途 | 档位 | 需确认 | 读/写 |
| --- | --- | --- | --- | --- |
| `reading_states.retrieve` | Retrieve reading states (read-only) | 读者档起 | — | 读 |
| `reading_states.update` | Update reading states | 读者档起 | — | 写 |
| `reader_documents.retrieve` | Retrieve reader documents (read-only) | 不登录也可 | — | 读 |
| `catalog.list` | List catalog (read-only) | 不登录也可 | — | 读 |
| `reader_documents.locate` | Locate reader documents (read-only) | 不登录也可 | — | 读 |
| `snapshots.export` | Export snapshots (read-only) | 读者档起 | — | 写 |
| `snapshots.retrieve` | Retrieve snapshots (read-only) | 读者档起 | — | 读 |
| `articles.text` | Text articles (read-only) | 不登录也可 | — | 读 |
| `articles.translation.retrieve` | Retrieve articles translation (read-only) | 不登录也可 | — | 读 |
| `articles.translation.create` | Create articles translation | 读者档起 | — | 写·花 Token |
| `articles.cover_bitmap` | Cover bitmap articles (read-only) | 不登录也可 | — | 读 |
| `render_documents.retrieve` | Retrieve render documents (read-only) | 不登录也可 | — | 读 |
| `reader_documents.resolve_link` | Resolve link reader documents (read-only) | 不登录也可 | — | 读 |
| `reader_documents.probe` | Probe reader documents (read-only) | 不登录也可 | — | 读 |
| `articles.record_read` | Record read articles | 不登录也可 | — | 写 |
| `share_cards.create` | Create share cards | 读者档起 | — | 写 |
| `live_sessions.create` | Create live sessions | 读者档起 | — | 写 |
| `live_sessions.list` | List live sessions (read-only) | 不登录也可 | — | 读 |

### 外壳与书架（2）

| 方法 | 用途 | 档位 | 需确认 | 读/写 |
| --- | --- | --- | --- | --- |
| `site_shell.retrieve` | Retrieve site shell (read-only) | 不登录也可 | — | 读 |
| `bookshelf.retrieve` | Retrieve bookshelf (read-only) | 不登录也可 | — | 读 |

### 模型调用与额度（15）

| 方法 | 用途 | 档位 | 需确认 | 读/写 |
| --- | --- | --- | --- | --- |
| `model_runs.create` | Create model runs | 读者档起 | — | 写·花 Token |
| `ai_settings.retrieve` | Retrieve ai settings (read-only) | 全部档 | — | 读 |
| `ai_settings.update` | Update ai settings | 全部档 | — | 写 |
| `ai_accounts.retrieve` | Retrieve ai accounts (read-only) | 读者档起 | — | 读 |
| `ai_accounts.update` | Update ai accounts | 读者档起 | — | 写 |
| `ai_ledger_entries.list` | List ai ledger entries (read-only) | 读者档起 | — | 读 |
| `ai_settings.set_provider_key` | Set provider key ai settings | 全部档 | 是 | 写 |
| `ai_settings.clear_provider_key` | Clear provider key ai settings | 全部档 | 是 | 写 |
| `ai_accounts.adjust_balance` | Adjust balance ai accounts | 全部档 | 是 | 写 |
| `reading_assistants.retrieve` | Retrieve reading assistants (read-only) | 作者档起 | — | 读 |
| `reading_assistants.update` | Update reading assistants | 作者档起 | — | 写 |
| `reading_assistants.glossary.create` | Create reading assistants glossary | 作者档起 | — | 写·花 Token |
| `narrations.retrieve` | Retrieve narrations (read-only) | 不登录也可 | — | 读 |
| `narrations.update` | Update narrations | 作者档起 | — | 写 |
| `narrations.generate` | Generate narrations | 作者档起 | — | 写 |

模型调用 `model_runs.create`（编辑台写稿派生同一条规则）：事实约束是硬的：引语候选必须是正文原句；导语与卡片不得出现正文没有的数字或专名（数字、拉丁专名、书名号标题逐个回查正文，中文专名机器判不了，只靠提示词约束与人工复核）；校验不过的项整项丢弃、回退为确定性派生；数字块的数字一律不由模型生成。

### 计费与权益（22）

| 方法 | 用途 | 档位 | 需确认 | 读/写 |
| --- | --- | --- | --- | --- |
| `orders.list` | List orders (read-only) | 读者档起 | — | 读 |
| `orders.retrieve` | Retrieve orders (read-only) | 读者档起 | — | 读 |
| `orders.create` | Create orders | 读者档起 | — | 写 |
| `orders.update` | Update orders | 读者档起 | — | 写 |
| `refunds.create` | Create refunds | 读者档起 | — | 写 |
| `prices.list` | List prices (read-only) | 不登录也可 | — | 读 |
| `prices.update` | Update prices | 作者档起 | — | 写 |
| `plans.list` | List plans (read-only) | 不登录也可 | — | 读 |
| `plans.update` | Update plans | 全部档 | 是 | 写 |
| `billing_settings.retrieve` | Retrieve billing settings (read-only) | 全部档 | — | 读 |
| `subscriptions.list` | List subscriptions (read-only) | 读者档起 | — | 读 |
| `subscriptions.update` | Update subscriptions | 读者档起 | — | 写 |
| `entitlements.list` | List entitlements (read-only) | 读者档起 | — | 读 |
| `checkouts.retrieve` | Retrieve checkouts (read-only) | 读者档起 | — | 读 |
| `wallets.retrieve` | Retrieve wallets (read-only) | 读者档起 | — | 读 |
| `charges.list` | List charges (read-only) | 作者档起 | — | 读 |
| `orders.reconcile` | Reconcile orders | 全部档 | 是 | 写 |
| `orders.refund` | Refund orders | 全部档 | 是 | 写 |
| `prices.suspend` | Suspend prices | 全部档 | — | 写 |
| `billing_settings.set_paid_switch` | Set paid switch billing settings | 全部档 | — | 写 |
| `billing_settings.set_platform_fee` | Set platform fee billing settings | 全部档 | 是 | 写 |
| `charge_items.list` | List charge items (read-only) | 作者档起 | — | 读 |
