AgentLater

io.agentlaterPublished by agentlater.ioOfficial publisherv1.0.0Updated Nov 7, 2026

Agents make HTTP requests later, then get results, webhooks and wake-ups in a later session.

Overview

AI-generated overview

Hosted MCP server that lets an agent schedule HTTP requests, poll jobs, and collect webhook results in a later session.

What you can do
  • Schedule or queue HTTP requests to run later or in the background, optionally serialized in a named queue
  • Repeat requests on a cron schedule or poll a status URL until a job finishes
  • Create webhook hooks, then read and acknowledge inbox events in a later session
  • Inspect, list, cancel and retry tasks, and check project balance
  • Store credentials for outbound requests and set a wake URL to trigger an agent run when results arrive
When to use it
Useful when an agent must trigger a job after a delay or on a schedule without keeping the session open, wait for a long-running job, or pick up delivery results and webhook events in a later session.
Requirements
Remote Streamable HTTP endpoint with MCP OAuth; the client must support both. No API key to paste; the client manages OAuth tokens. Call create_project once after connecting to get a project and trial. Destinations must be public HTTPS URLs.
Before you install
Outbound requests carry stored credentials created with set_secret, so scope them with allowed_hosts. Delivery is at least once, so destinations may receive duplicates and should deduplicate. Each delivery attempt, poll and callback consumes budget; the trial is limited and more attempts require a payment link. Tasks, secrets and inbox state are written and changed, and a new connection gets a separate project.

Installation

In SourceWeft

  1. Open AgentLater in the dashboard and add it to a workspace.
  2. Connect the required credentials. They are stored privately and never shown on public pages.
  3. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.agentlater%2Fagentlater/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config. The client completes OAuth sign-in on first connect.

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

README

AgentLater

Let an AI agent make an HTTP request later, and check whether it happened.

AgentLater is a hosted Model Context Protocol (MCP) server for agents that need to schedule HTTP work, wait for a job, or retrieve results in a later session. It sends requests and records delivery outcomes; it does not run the agent itself.

What agents can do

NeedTools
Send a request later or in the backgroundschedule_http, queue_http (optionally serialize related requests in a named queue)
Repeat a request or poll until a job finishescreate_cron, watch_http
Receive webhooks and read results in a later sessioncreate_hook, read_inbox, ack_inbox
Inspect, stop or retry workget_task, list_tasks, cancel_task, redrive_task
Use credentials or trigger an agent workflow when results arriveset_secret, set_wake

See the full tool reference for arguments, limits and delivery semantics. A wake URL must belong to something that can start an agent run; inbox events alone do not resume a chat.

Connect an MCP client

Use a client that supports remote Streamable HTTP and MCP OAuth. Add a remote server or custom connector named agentlater with this URL:

text
https://gateway.agentlater.io/mcp

For clients using an mcpServers JSON configuration with HTTP transport, the configuration is:

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

Configuration formats vary by client; use its remote-server settings if it does not accept this shape. The endpoint and transport are also declared in server.json.

Authentication: complete the OAuth flow opened by your client and click Connect on the AgentLater consent page. There is no account to create or API key to paste into the configuration; the client manages OAuth tokens. Each approved connection owns a separate project and trial. Call create_project once after connecting (calling it again returns the same project): the trial includes 1,000 delivery attempts for 7 days. Use get_project to inspect the balance and get_payment_link when more attempts are needed.

For Claude Code, you can instead install the plugin, which includes the hosted server configuration and a skill for using the tools:

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

See the plugin README for installation and migration details. Autonomous integrations can also use Agent Auth at the gateway; that identity and its project are separate from a hosted MCP connection.

Example: trigger a background job through a webhook

A common use is calling your application's job endpoint after a delay—for example, generating an export in 15 minutes without keeping the agent session open.

After connecting, ask your agent:

Create my AgentLater project, then POST to my export webhook in 15 minutes with {"report": "daily-sales", "format": "csv"}. Use my stored webhook token, capture the response, and put the delivery result in my inbox.

The agent calls create_project with {}. If the endpoint requires a bearer token, first call set_secret with these arguments, replacing the placeholder with your endpoint's actual token and the host with your own:

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

Then call schedule_http with the following arguments. Replace the example URL with your own public HTTPS job endpoint. body is a JSON-encoded string, not an object.

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"}

Use a new idempotency_key for each intended job; reusing the same key and request returns the original task. Your endpoint should also deduplicate deliveries using RunLater-Task-Id because delivery retries can reach it more than once. For an endpoint without authentication, omit the secret setup and the Authorization header.

Save the returned task_id and inspect it with get_task({"task_id": "<returned task_id>"}). In a later session, call get_project with {}, then read_inbox with {} if inbox_unread is above zero. After handling the events, call ack_inbox({"up_to": 1}), replacing 1 with the last seq you handled. These are MCP tool names and argument objects, not shell commands. No public callback URL is needed to receive the delivery report in the inbox. If the endpoint returns 202 Accepted, that confirms it accepted the job; use watch_http on its status URL when you also need to wait for the export to finish.

Delivery is at least once; succeeded means the destination returned HTTP 2xx. Destinations must be public HTTPS URLs, not localhost or private IP addresses. For authenticated requests, store the credential with set_secret and use {{secret:NAME}} in a header instead of pasting it into a request.

Limits and troubleshooting

  • Schedule at most 7 days ahead. Cron expressions use UTC and run at most hourly; watches poll every 5 minutes to 24 hours. Captured responses keep the first 16 KiB of the body for 7 days after the task finishes.
  • project_not_found: call create_project on the current connection before scheduling.
  • budget_exhausted or trial_expired: inspect get_project and use get_payment_link for more attempts. Each delivery attempt, poll and URL callback attempt consumes budget; inbox delivery is free.
  • Connection or sign-in fails: confirm the URL ends in /mcp and the client supports both Streamable HTTP and OAuth. A client limited to local stdio servers needs a supported bridge; see the Agent Auth bridge configuration.
  • No result yet: inspect get_task with the returned task_id for its status and attempt history. Read the inbox using the same connection that scheduled the task; a new connection has a separate project.

Documentation and compatibility

AgentLater was formerly RunLater. Existing runlater plugin connections retain their own projects; installing the agentlater plugin creates a separate connection rather than moving existing work. Some internal package names and delivery headers (such as RunLater-Task-Id) retain the old name for compatibility.

The specs are PRODUCT.md (what it does), ARCHITECTURE.md (how it's built) and DESIGN.md (how it should feel, to agents and to people). The pre-rebuild implementation was removed at cutover; it is in git history before this change.

Layout

PathWhatStack
apps/apiPrivate task API: ledger, scheduling, deliveryRust · workers-rs
apps/gatewayPublic entry for agents: Agent Auth, capabilities, MCPTypeScript Worker
apps/webagentlater.io landing, docs and payment pageNext.js · OpenNext
apps/receiverStaging-only fixture the journey delivers toTypeScript Worker
crates/coreTask domain, no Cloudflare depsRust
crates/egressDestination policy and request signingRust
packages/contractsCapability definitions, and the OpenAPI contract between gateway and APITypeScript · OpenAPI 3.1
packages/tsconfigShared TypeScript config
plugins/agentlaterClaude Code plugin: the hosted MCP server and an agentlater skillMarkdown · JSON
plugins/runlaterThe old plugin, deprecated and frozen so existing installs keep workingMarkdown · JSON

Everything deploys to Cloudflare Workers, with staging and production environments in each app's wrangler.jsonc (apps/receiver has staging only); see docs/DEPLOY.md.

Develop

Requires Rust (pinned in rust-toolchain.toml), Node 22+, and cargo install worker-build --version 0.8.7 --locked.

bash
npm install
bash
cargo test && npm run typecheck && npm test
bash
npm run dev -w @runlater/gateway
bash
npm run dev -w @runlater/web

License

The code is MIT. Using the hosted service at agentlater.io is covered by its Terms of Service and Privacy Policy.

Source: README.md at commit 3d7efc7

Tools

0
This server asks you to sign in, so SourceWeft could not read its tools without an account and has not indexed them. What a connected account sees can depend on that account and its permissions.

Version history

1
  1. v1.0.0LatestNov 7, 2026

Score

85% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts