托管凭证、统一 tool-calling 接口、一个 URL 接入任何 MCP 客户端。 Action 目录不是自动生成的——每一条都从真实调用里验证过,连带记下了官方文档没写清楚的坑。
Agent 不用再自己写 HTTP 客户端代码——凭证托管、重试、错误归一化、审计留痕都在网关这一层做掉。
信封加密存储,密文从不回显明文;网关代你处理 token 换取、刷新、header 格式这些容易踩坑的细节。
不同平台的错误形状被归一化成同一种结果——不用再单独学"这个平台信不信 HTTP 状态码"这种细节。
Claude Code、Cursor、Claude Desktop 等任何支持自定义 MCP server 的客户端,配一个 URL 就能用。
每个 action 的行为都对着真实 API 调用验证过,下面是几个已经在网关这一层挡掉、或者明确记录下来的例子。
tool_choice 只接受 "auto",其它值平台会静默降级——网关在请求发出前就拦下来,返回明确的校验错误,而不是让 Agent 自己在事后发现模型没按预期强制调用工具。
多维表格的日期字段要求毫秒级时间戳,传人类可读格式会被当成不合规数据——网关接受 date_fields 参数,替调用方做单位转换,不用在业务代码里手写这段容易出错的换算。
发消息接口的 receive_id_type 没有默认值,漏传直接失败——MCP 工具 schema 把它标成必填枚举字段,模型在决定怎么调用之前就会被提醒。
规模不是这个项目要追的指标——每一条都经过真实调用验证,比自动生成的大而全目录更值得信任。
| 平台 | 凭证模型 | Action |
|---|---|---|
| bigmodel-cn(智谱 GLM) | 静态 API Key | bigmodel_chat_completion |
| 飞书 | app 级 token,网关自动续期 | feishu_send_message、feishu_bitable_batch_create_records |
| Firecrawl | 静态 API Key | firecrawl_scrape |
邮箱密码或 Auth0 登录,自动开一个属于你的账号空间。
在控制台挂上第三方平台的凭证——加密存储,密文从不回显。
REST API、MCP、或者命令行 CLI,选一种顺手的方式接入 Agent。
每次调用的参数、结果、耗时都留痕,出问题不用靠猜。
上面"怎么用"那四步是给人看的。如果你是一个 Agent,不需要先等人给你开账号——自己调一个接口就能拿到能用的凭证,
机器可读版本在 /llms.txt。
GET /v1/auth/pow-challenge 拿一个 challenge,算出一个 solution 让 sha256(challenge + ":" + solution) 前面有足够多的 0 比特——默认难度在普通机器上一般 2 秒以内能解出来。这一步和按 IP 限流(每小时 5 次)是两道独立的防刷关卡,同时生效,换 IP 绕不过工作量证明。完整算法和代码示例见 /llms.txt。
POST /v1/auth/agent-register,附上上一步的 challenge 和 solution,不用邮箱密码。返回一个 tenant_id 和一次性显示的 api_key,立刻就能拿去调 /v1/tools、/mcp。
这样开出来的 tenant 处于"未认领"状态——没有邮箱找回,丢了这把 key 就找不回来了。这个项目对外报的 tenant/调用数字只统计已认领的,不靠未认领账号刷量。
想长期用的话,用这把 api_key 当 Bearer token 调 POST /v1/auth/claim,附上邮箱密码,转成正式账号——这一步通常该由人来做,而不是 Agent 替自己做主创建密码。
curl https://skillify.carbonleft.com/v1/auth/pow-challenge
# -> {"challenge": "...", "difficulty_bits": 20, "expires_at": ...}
# ...solve it (see /llms.txt for the algorithm + a worked example)...
curl -X POST https://skillify.carbonleft.com/v1/auth/agent-register \
-H "Content-Type: application/json" \
-d '{"name": "your-agent-name", "description": "what you do", "challenge": "...", "solution": "..."}'
# -> {"tenant_id": "...", "api_key": "sk_live_...", "claimed": false}
在支持自定义 MCP server 的客户端里配置,把 <your api key> 换成控制台里生成的 API Key: