SuperAPI AI 工具集

make-endpoints-cli

部署与运维

查看项目

更新于 10-29 02:03

技能介绍

make-endpoints-cli 是一个命令行工具,用于在 shell 中调用 Make Endpoints。Make Endpoints 是围绕应用操作(如 google-docs get-document、slack send-message 等)的单次调用封装。每次调用都在一个团队中运行,并且对于大多数端点,通过该团队的一个连接执行。整个流程固定为:查找团队、查看该团队可运行的端点、检查端点、选择连接、执行调用。

主要能力与使用方式:

认证:凭证按顺序解析:--api-key 和 --zone 标志,然后是 MAKE_API_KEY 和 MAKE_ZONE 环境变量,最后是 make-cli login 保存的配置。API 密钥需要以下权限:步骤1需要 organizations:read,步骤2需要 apps:read,步骤4需要 connections:read,步骤5需要 endpoints:run。如果错误信息显示 [401]: Required scope: ...,则说明缺少对应权限,需要更换密钥。

步骤1:whoami 命令用于确认身份和团队。make-endpoints-cli whoami 输出名称、邮箱和区域;make-endpoints-cli whoami --environment 额外输出组织和团队信息,私人空间也视为团队。从 organizations[].teams[].id 获取团队 ID。如果任务未指定团队,优先使用用户的私人空间(type: personal),仅当步骤4在该团队找不到连接时,才转向该组织的其他团队。不要遍历所有团队;超过三个后应询问用户。

步骤2:list --team-id <id> 查看团队可运行的端点。make-endpoints-cli list --team-id <id> 列出团队当前可用的应用;make-endpoints-cli list <app> --team-id <id> 列出该应用的端点及其可用的连接;不带 --team-id 的 list 命令提供静态回退,列出构建中捆绑的所有应用或端点。如果用户已指定应用和端点,可跳过此步骤,因为 describe 和调用本身不需要 apps:read 权限。list <app> --team-id 的每一行都带有 connections,即已覆盖端点所需权限的连接,并且仅当构建捆绑了该端点时才显示 name。此时可用 <app> <name> 调用,否则使用 endpoints execute。endpoints list-usable --team-id <id> 打印原始 API 负载。如果出现 Error [400]: Endpoints execution is not enabled,表示组织未加入 beta,应停止并告知用户。

步骤3:describe 检查端点。make-endpoints-cli describe <app> <endpoint> 查看最新版本;make-endpoints-cli describe <app> v<N> <endpoint> 查看指定版本;添加 --output-schema 仅在需要输出结构时使用(输出较大)。inputSchema.properties.input 列出字段及必填项;accounts 列出端点接受的连接类型及其所需权限;context 是给用户的指导信息,应遵循。

步骤4:connections list 选择连接。make-endpoints-cli connections list --team-id <id> --app <app> --endpoint <endpoint>。usableFor 列出接受该连接类型的端点,requiredScopes 列出该端点在该类型上所需的权限。选择顺序:优先选择 "scoped": true 的行,其次选择名称包含步骤1中用户名称的行,最后选择其他行。scoped 是 Make 自身的权限检查,false 或 null 表示无法确认权限,并不代表调用会失败。连接属于列出它的团队,步骤5必须传递相同的 --team-id。一次调用最多尝试两个连接;如果都失败,应停止并告知用户尝试了哪些连接。如果没有行,则用户需要在 Make 中创建连接;CLI 目前无法创建连接。

步骤5:调用。基本格式:make-endpoints-cli <app> <endpoint> --team-id <id> --connection-id <id> --<field> <value>,或使用 --input '{"field":"value"}' 传递完整输入 JSON,单独标志会覆盖其中的键。每个输入字段对应一个标志(例如 documentId 变为 --document-id)。与全局标志冲突的字段(如 output、zone 等)只能通过 --input 传递。endpoints execute 子命令可用于自定义应用(app#name)和构建未捆绑的端点。添加 --confidential 可防止数据保留在 Make 的端点执行日志中(运行仍会列出,但不含输入、输出或错误)。添加 --idempotency-key <key>(1-255 个字符,允许字母、数字、_、.、:、-)可在调用可能重复时使用:每个预期调用使用一个唯一键,在超时或错误不明确后的所有重试中使用相同键,Make 不会重复运行端点,而是返回第一次运行的结果。使用键时 JSON 为 { "output": ..., "execution": { "id": ..., "replayed": true } }(replayed 仅在重放时出现,confidential 仅在机密运行时出现);不使用键时输出为端点的结果,未包装。

错误处理:

  • 步骤2出现 Error [401]: Required scope: apps:read:仅实时列表需要此权限,可继续步骤3。
  • 其他位置出现 Error [401]: Required scope: ...:密钥缺少该权限,需向用户请求具有该权限的密钥。
  • Error [424] 提到 invalid_grant 或令牌过期:该连接的授权已过期,尝试步骤4的另一行,然后询问用户。
  • Error [400]: Endpoints execution is not enabled:端点未为该组织启用,停止并告知用户。
  • 调用时出现 Error [422] 或其他 Error [424]:团队、连接类型或输入错误,重新运行步骤4和 describe。
  • 使用 --idempotency-key 时出现 Error [409]、[422]、[424] 或 [503]:409 表示第一次运行仍在进行,稍后用相同键重试;422 表示键已用于不同请求或机密运行,切勿重试;424 表示第一次运行失败且失败被重放;503 表示键无法检查且未运行任何内容,可重试。
  • Error: Missing required input fields: ...(退出码1):通过标志或 --input 传递字段。
  • required option '--team-id <value>' not specified(退出码1):每次调用都需要 --team-id,大多数还需要 --connection-id。
  • Unknown app 或 Unknown endpoint:名称是 CLI 的 kebab-case 形式,运行 list <app> 查找正确名称。

不涵盖的内容:构建、运行或调试 Make 场景(使用 Make MCP 服务器);从 TypeScript 调用端点(参见 @makehq/endpoints-sdk README);创建或授权连接以及编写应用(均在 Make 中进行)。