Skip to main content

MCP Server

Let Claude, Cursor, or any Model Context Protocol client manage your tasks, schedules, monitors, endpoints and queues. Hosted at https://runlater.eu/mcp, EU-hosted like everything else.

What it is

The Model Context Protocol is how AI assistants call external tools. Runlater exposes its API as a remote MCP server, so an assistant can say "schedule this webhook every weekday at 9" or "why did my nightly job fail?" and act on your account. Every tool maps one-to-one to the REST API, uses the same API keys, and shows up in the audit log.

Connect

Create an API key under Settings → API Keys, then add the server to your client. The key is sent as a Bearer token on every request; there are no sessions to manage.

Claude Code

claude mcp add --transport http runlater https://runlater.eu/mcp \
  --header "Authorization: Bearer pk_live_xxx.sk_live_yyy"

Cursor, VS Code, Windsurf and others

Most clients accept a JSON config entry. Use the HTTP transport with an Authorization header:

{
  "mcpServers": {
    "runlater": {
      "url": "https://runlater.eu/mcp",
      "headers": {
        "Authorization": "Bearer pk_live_xxx.sk_live_yyy"
      }
    }
  }
}

claude.ai web connectors currently require OAuth rather than a static token, so they cannot connect yet. Claude Code, Claude Desktop (via mcp-remote), Cursor, VS Code and ChatGPT developer mode all work.

Tools

Tool names are prefixed runlater_ and follow the API. Read-only tools are annotated as such, so clients can run them without confirmation.

area tools
Tasks list_tasks, get_task, create_task, update_task, cancel_task, cancel_lane_tasks, trigger_task, list_task_executions
Schedules list_schedules, get_schedule, create_schedule, update_schedule, delete_schedule, trigger_schedule, list_schedule_executions
Executions list_executions, get_execution
Monitors list_monitors, get_monitor, create_monitor, update_monitor, delete_monitor, list_monitor_pings
Endpoints list_endpoints, get_endpoint, create_endpoint, update_endpoint, delete_endpoint, list_endpoint_events, replay_endpoint_event, pause_endpoint, resume_endpoint
Lanes list_lanes, pause_lane, resume_lane
Queues list_queues, get_queue, create_queue, update_queue, delete_queue, queue_stats, enqueue_message, list_queue_messages, get_queue_message, retry_queue_message, dead_letter_queue_message, delete_queue_message, purge_completed_queue_messages, pause_queue, resume_queue

The server also exposes one resource, runlater://docs/llms.txt, with concepts, limits and examples, so the assistant can look up how cron expressions or lanes work before acting.

Example prompts

  • "Schedule a POST to https://api.example.com/reports every weekday at 07:00 UTC."
  • "List my schedules and show the last three executions of the one that is failing."
  • "What failed in the last 24 hours, and why?"
  • "Pause the billing lane, then cancel every task still pending in it."
  • "Create a heartbeat monitor for the nightly backup that expects a ping daily with a 30 minute grace period."
  • "How many messages are dead-lettered in the order-events queue? Retry them."

How it works

The server speaks stateless JSON-RPC 2.0 over the Streamable HTTP transport: POST /mcp with one request per call, plain JSON back. There are no sessions and no server-initiated streams. Rate limits, tier limits, validation and audit logging are the same as for the REST API, because every tool call runs the same code path.

curl -s https://runlater.eu/mcp \
  -H "Authorization: Bearer pk_live_xxx.sk_live_yyy" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
       "params":{"name":"runlater_list_schedules","arguments":{}}}'

Prefer code over an assistant? Use the REST API or the Node.js SDK.