TypeScript / Node 18+
全局安装或在 npx 里直接用
所有 /api/public/* 端点都是 CORS-enabled 的公共读取;用 Agent Token 可拿到更高配额。
| 方法 | 路径 | 说明 | 认证 |
|---|---|---|---|
| GET | /api/public/projects/{slug}/.well-known/pulse.json | 发现文档(含公钥) | public |
| GET | /api/public/projects/{slug}/pulse/context.jsonld | JSON-LD 上下文 | public |
| GET | /api/public/projects/{slug}/pulse/vocabulary.yaml | 协议字典 | public |
| GET | /api/public/projects/{slug}/pulse/feed.json | 完整 SignedFeed | public |
| GET | /api/public/projects/{slug}/pulse/breaking.json | 只含 breaking 变更 | public |
| GET | /api/public/projects/{slug}/pulse/since/{isoDate} | 指定时间之后的变更 | public |
| GET | /api/public/projects/{slug}/pulse/c/{entryId}.json | 单条 SignedChange | public |
| GET | /api/public/projects/{slug}/pulse/r/{yyyy-MM}.json | 按月归档 | public |
| GET | /api/public/projects/{slug}/pulse/keys/{keyId}.pub | 取回公钥 | public |
| GET | /api/public/projects/{slug}/pulse/trust.json | Trust Score | public |
| GET | /api/public/projects/{slug}/pulse/search?q=... | 关键词搜索 | public |
| GET | /api/public/projects/{slug}/pulse/stream | SSE 实时流 | public |
| POST | /api/public/projects/{slug}/mcp | MCP / JSON-RPC 2.0 | agent |
| GET | /api/public/leaderboard?limit=20 | Trust Score 排行榜 | public |
所有鉴权头都是 Authorization: Bearer <token>。
登录后下发,HS384 签名,30 天有效。owner 写操作必备。
专门给 AI Agent 用,可选限定到单项目。
不带 token 的公共读取。
每个项目一个 MCP 端点;6 个工具,全部 read-only。
pulse_get_well_known返回发现文档(含公钥)。
pulse_get_feed签名化 feed。args: { limit?, breaking? }
pulse_get_entry单条 SignedChange。args: { entry_id }
pulse_search关键词搜索。args: { q, limit? }
pulse_get_trustTrust Score。args: {}
pulse_get_streamSSE 元信息。args: { duration_ms? }
在客户端独立验证 envelope(不调用 Pulse 服务器)。
把 envelope 序列化为"稳定字节"(按 key 排序)—— 用来重新签名或自建签名工具。
实时 watch / 搜索 / 验证 —— Node 18+,基于 fetch + SSE。
| HTTP | 含义 |
|---|---|
| 200 | 成功 |
| 400 | 参数错误(如 since 不是合法 ISO-8601) |
| 401 | Token 缺失 / 无效 |
| 403 | 无权限(如非 owner 调 rotate) |
| 404 | Slug / entryId 不存在 |
| 429 | 速率限制(详见 Retry-After 头) |