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.