# RunLater

> Schedule HTTP requests from an agent: once at an exact time or on cron, with retries and run logs.

- name: app.runlater/runlater
- version: 1.1.0
- connection class: R0 (autonomous)
- trust: 83/100 flags: no-repository
- quality: 89/100 (new)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/app.runlater%2Frunlater
- tools: https://api.protogrid.dev/v1/servers/app.runlater%2Frunlater/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "runlater": {
      "type": "http",
      "url": "https://runlater.app/api/mcp",
      "headers": {
        "Authorization": "Bearer ${RUNLATER_TOKEN}"
      }
    }
  }
}
```

Placeholders to fill: `${RUNLATER_TOKEN}`.

## Trust

- hygiene: 80
- liveness: 100
- freshness: 100
- provenance: 55
- drivers: +dns-namespace +website +reachable +uptime-100% +updated-1d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 89/100 (new)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 100 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 9 of 9 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 1,984 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: n/a (weight 15)

- n/a `stability.changes`, `stability.rug_pull`: tool history recorded for 1 of the 7 days needed

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 9, about 1,984 tokens to load them all
- tool set hash: 436fee196392af080745c521c186c72c
- tools last changed: 2026-11-06T16:39:42.226Z
- badge: [![protogrid quality](https://protogrid.dev/badge/app.runlater/runlater.svg)](https://protogrid.dev/servers/app.runlater/runlater)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-11-06 `account_status` changed (description) **meaning changed**
  - before: Show this workspace's plan, trial end date, limits and usage this month. With no plan yet, it includes the link where the 14-day trial starts.
  - after: Show this workspace's limits and usage this month. If it doesn't have access yet, the result says where to go next.
- 2026-11-06 `schedule_request` removed
  - Schedule an HTTP request to a public URL: once at an exact time (run_at) or repeatedly (cron). Pass exactly one of run_at or cron. RunLater sends it, retries failures and logs every run. Returns the schedule with its id and next run time.
- 2026-11-06 `account_status` changed (annotations)
- 2026-11-06 `delete_schedule` changed (description, inputSchema, annotations)
  - before: Delete a scheduled request for good. It stops running and cannot be restored. To stop it for a while, use pause_schedule.
  - after: Delete a scheduled request for good. It stops running and cannot be restored.
- 2026-11-06 `run_now` changed (inputSchema, annotations)
- 2026-11-06 `resume_schedule` changed (inputSchema, annotations)
- 2026-11-06 `pause_schedule` changed (inputSchema, annotations)
- 2026-11-06 `get_schedule` changed (inputSchema, annotations)
- 2026-11-06 `list_schedules` changed (annotations)
- 2026-11-06 `schedule_send_request` added
  - Create one schedule that sends a POST, PUT, PATCH or DELETE to a public URL later, with an optional body: once at an exact time (run_at) or repeatedly (cron). Pass exactly one of run_at or cron. Nothing is sent now. The URL is one the person supplies; RunLater does not limit it to a particular API. At the scheduled time RunLater sends it, which can change data at that URL, retries failures and logs every run. Returns the schedule with its id and next run time. Docs: https://runlater.app/docs/mcp

Full history: https://api.protogrid.dev/v1/servers/app.runlater%2Frunlater/changes

## Remotes

- https://runlater.app/api/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (9)

- `account_status`: Show this workspace's limits and usage this month. If it doesn't have access yet, the result says where to go next.
- `delete_schedule`: Delete a scheduled request for good. It stops running and cannot be restored.
- `get_schedule`: Get one scheduled request with its recent runs: status code, duration, error and a preview of each response. Use this to check whether a request worked.
- `list_schedules`: List scheduled requests in this workspace, newest first, with status (scheduled, paused or finished) and next run time.
- `pause_schedule`: Pause a scheduled request so it stops running until resumed.
- `resume_schedule`: Resume a paused request. A recurring one continues at its next cron time. A one-time one needs its run time to still be in the future.
- `run_now`: Send a scheduled request once, right now, without retries, and return the status code and response. A successful run counts toward the monthly limit. A one-time request is finished after this.
- `schedule_get_request`: Create one schedule that sends a GET to a public URL later: once at an exact time (run_at) or repeatedly (cron). Pass exactly one of run_at or cron. The URL is one the person supplies; RunLater does not limit it to a particular API. Nothing is sent now. RunLater sends it at the scheduled time, retries failures and logs every run. Returns the schedule with its id and next run time. Docs: https://runlater.app/docs/mcp
- `schedule_send_request`: Create one schedule that sends a POST, PUT, PATCH or DELETE to a public URL later, with an optional body: once at an exact time (run_at) or repeatedly (cron). Pass exactly one of run_at or cron. Nothing is sent now. The URL is one the person supplies; RunLater does not limit it to a particular API. At the scheduled time RunLater sends it, which can change data at that URL, retries failures and logs every run. Returns the schedule with its id and next run time. Docs: https://runlater.app/docs/mcp
