mcpField
A
AgentLater

AgentLater

远程服务
agentlater.io开发工具01 天前更新

关于 AgentLater

AgentLater 是面向 Agent 的托管 MCP 服务,可安排 HTTP 请求、跟踪投递并在后续会话中读取结果。它记录执行结果,但不运行 Agent。

主要功能

  1. 01安排或排队发送 HTTP 请求
  2. 02重复请求并轮询任务
  3. 03接收 Webhook 并存入收件箱
  4. 04查看、取消或重试任务
  5. 05保存凭据并触发唤醒

适用场景

  1. 01延迟调用 Webhook
  2. 02轮询端点直至任务完成
  3. 03在后续会话查看投递结果

MCP 相关

它通过支持 OAuth 的 Streamable HTTP 向远程 MCP 客户端提供 HTTP 调度、任务管理、Webhook 收件箱、凭据和唤醒工具。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://gateway.agentlater.io/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

详细介绍

AgentLater

让 AI Agent 稍后发起 HTTP 请求,并检查请求是否已执行。

AgentLater 是一个托管的 模型上下文协议(MCP) 服务,面向需要安排 HTTP 任务、等待任务完成或在后续会话中获取结果的 Agent。 它会发送请求并记录投递结果;它本身不会运行 Agent。

Agent 可以做什么

需求工具
稍后或在后台发送请求schedule_http、queue_http(可选择在命名队列中串行处理相关请求)
重复请求或轮询,直到任务完成create_cron、watch_http
接收 Webhook,并在后续会话中读取结果create_hook、read_inbox、ack_inbox
检查、停止或重试任务get_task、list_tasks、cancel_task、redrive_task
使用凭据,或在结果到达时触发 Agent 工作流set_secret、set_wake

参数、限制和投递语义请参阅完整工具参考。 唤醒 URL 必须指向能够启动 Agent 运行的目标;仅有收件箱事件不会恢复聊天。

连接 MCP 客户端

请使用支持远程 Streamable HTTP 和 MCP OAuth 的客户端。添加一个名为 agentlater 的远程服务或自定义连接器,并使用以下 URL:

https://gateway.agentlater.io/mcp

对于使用 HTTP 传输和 mcpServers JSON 配置的客户端,配置如下:

{
  "mcpServers": {
    "agentlater": {
      "type": "http",
      "url": "https://gateway.agentlater.io/mcp"
    }
  }
}

不同客户端的配置格式有所不同;如果客户端不接受此格式,请使用其远程服务设置。 端点和传输方式也已在 server.json 中声明。

**身份验证:**完成客户端打开的 OAuth 流程,并在 AgentLater 授权页面上点击 Connect。无需创建账户,也无需将 API 密钥粘贴到配置中;客户端会管理 OAuth 令牌。每个获批的连接都拥有独立的项目和试用额度。连接后调用一次 create_project(再次调用会返回同一个项目):试用额度包含 7 天内的 1,000 次投递尝试。使用 get_project 查看余额,需要更多尝试次数时使用 get_payment_link。

对于 Claude Code,也可以安装插件,其中包含托管服务配置和使用这些工具的技能:

/plugin marketplace add thachp/agentlater
/plugin install agentlater@agentlater

安装和迁移详情请参阅插件 README。 自主集成也可以在网关使用 Agent Auth; 该身份及其项目独立于托管 MCP 连接。

A2A

使用 Agent2Agent 协议(版本 1.0、JSON-RPC)的 Agent,可以使用 Agent Auth 登录,无需人工登录即可安排一次性投递,并读取、列出和取消投递。请从 Agent Card 开始:https://gateway.agentlater.io/.well-known/agent-card.json。

# in a checkout, after npm ci
node apps/gateway/examples/a2a-client.mjs https://gateway-staging.agentlater.io

a2a-client.mjs 是一个完整的单文件客户端:它读取 Agent Card、注册、创建项目、安排投递并轮询直至结束。在代码库之外使用时,请复制该文件并运行 npm install @a2a-js/[email protected] @auth/[email protected]。密钥保存在 ~/.agentlater/ 中(模式为 0600)。身份验证流程、负载架构、任务状态、错误,以及 A2A 不支持的功能(定时任务、监视、钩子、密钥、付款、流式传输、推送通知、回调、通道)详见 A2A 文档和 PRODUCT.md。

示例:通过 webhook 触发后台作业

一种常见用法是在延迟一段时间后调用应用的作业端点,例如,在 15 分钟后生成导出文件,而无需让 Agent 会话保持打开状态。

连接后,请向你的 Agent 提出以下请求:

创建我的 AgentLater 项目,然后在 15 分钟后向我的导出 webhook 发送 POST 请求,并附上 {"report": "daily-sales", "format": "csv"}。使用我存储的 webhook 令牌,记录响应, 并将投递结果放入我的收件箱。

Agent 会使用 {} 调用 create_project。如果端点需要 bearer 令牌,请先使用以下参数调用 set_secret,将占位符替换为端点的实际令牌,并将主机替换为你自己的主机:

{
  "name": "WEBHOOK_TOKEN",
  "value": "<your-webhook-token>",
  "allowed_hosts": ["api.example.com"]
}

然后使用以下参数调用 schedule_http。将示例 URL 替换为你自己的公开 HTTPS 作业端点。body 是经过 JSON 编码的字符串,而不是对象。

{
  "url": "https://api.example.com/jobs/export",
  "method": "POST",
  "headers": {
    "Content-Type": "application/json",
    "Authorization": "Bearer {{secret:WEBHOOK_TOKEN}}"
  },
  "body": "{\"report\":\"daily-sales\",\"format\":\"csv\"}",
  "delay": "15m",
  "idempotency_key": "daily-sales-export-001",
  "capture": true,
  "callback_url": "inbox"
}

每个计划作业都应使用新的 idempotency_key;如果重复使用相同的键和请求,系统会返回原始任务。你的端点还应使用 RunLater-Task-Id 对投递进行去重,因为投递重试可能会多次到达该端点。对于无需身份验证的端点,请省略密钥设置和 Authorization 标头。

保存返回的 task_id,并使用 get_task({"task_id": "<returned task_id>"}) 查看它。 在之后的会话中,使用 {} 调用 get_project,如果 inbox_unread 大于零,再使用 {} 调用 read_inbox。处理完事件后,调用 ack_inbox({"up_to": 1}),并将 1 替换为你已处理事件的最后一个 seq。这些是 MCP 工具名称和参数对象,不是 shell 命令。无需公共回调 URL 即可在收件箱中接收投递报告。如果端点返回 202 Accepted,表示它已接受该作业;如果还需要等待导出完成,请对其状态 URL 使用 watch_http。

投递采用至少一次语义;succeeded 表示目标返回了 HTTP 2xx。目标必须是公开的 HTTPS URL,不能是 localhost 或私有 IP 地址。对于需要身份验证的请求,请使用 set_secret 存储凭据,并在标头中使用 {{secret:NAME}},而不是将凭据直接粘贴到请求中。

限制与故障排查

  • 最多可提前 7 天安排任务。Cron 表达式使用 UTC,运行频率最高为每小时一次;监视器的轮询间隔为 5 分钟至 24 小时。任务完成后的 7 天内,捕获的响应会保留正文的前 16 KiB。
  • project_not_found:请先在当前连接上调用 create_project,然后再安排任务。
  • budget_exhausted 或 trial_expired:检查 get_project,并使用 get_payment_link 获取更多尝试次数。每次投递尝试、轮询和 URL 回调尝试都会消耗额度;收件箱投递免费。
  • 连接或登录失败:确认 URL 以 /mcp 结尾,并且客户端同时支持 Streamable HTTP 和 OAuth。仅支持本地 stdio 服务的客户端需要使用受支持的桥接;请参阅 Agent Auth 桥接配置。
  • 尚无结果:使用返回的 task_id 检查 get_task,查看其状态和尝试历史记录。请使用安排任务时的同一连接读取收件箱;新连接会有单独的项目。

文档与兼容性

AgentLater 以前名为 RunLater。现有的 runlater 插件连接会保留各自的项目;安装 agentlater 插件会创建单独的连接,而不会迁移现有工作。 部分内部软件包名称和投递标头(例如 RunLater-Task-Id)为保持兼容性,仍沿用旧名称。

规格文档包括 PRODUCT.md(功能说明)、ARCHITECTURE.md (构建方式)和 DESIGN.md(面向 Agent 和用户的体验设计)。重建前的实现已在切换时移除;可在此次变更之前的 git 历史中找到。

项目结构

路径说明技术栈
apps/api私有任务 API:账本、调度、交付Rust · workers-rs
apps/gateway面向 Agent 的公共入口:Agent 身份验证、功能、MCP、A2ATypeScript Worker
apps/webagentlater.io 落地页、文档和支付页面Next.js · OpenNext
apps/receiver仅用于暂存环境的接收端,接收端到端流程和 A2A 运行结果TypeScript Worker
crates/core任务领域逻辑,不依赖 CloudflareRust
crates/egress目标策略和请求签名Rust
packages/contracts功能定义,以及 gateway 与 API 之间的 OpenAPI 契约TypeScript · OpenAPI 3.1
packages/tsconfig共享的 TypeScript 配置
plugins/agentlaterClaude Code 插件:托管的 MCP 服务和 agentlater 技能Markdown · JSON
plugins/runlater旧版插件,已弃用并冻结,以确保现有安装仍可正常工作Markdown · JSON

所有内容都部署到 Cloudflare Workers;每个应用的 wrangler.jsonc 中都有 staging 和 production 环境(apps/receiver 仅有 staging);请参阅 docs/DEPLOY.md。

开发

需要安装 Rust(版本固定在 rust-toolchain.toml 中)、Node 22+,以及运行 cargo install worker-build --version 0.8.7 --locked。

npm install
cargo test && npm run typecheck && npm test

一条命令即可运行 CI 执行的所有检查(-- --fast 会跳过端到端测试套件):

npm run verify

代码遵循的规则及其对应的检查规则见 CODING_STANDARDS.md。

npm run dev -w @runlater/gateway
npm run dev -w @runlater/web

许可证

代码采用 MIT 许可证。使用 agentlater.io 托管服务须遵守其服务条款和隐私政策。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。