MCP integration
Scheduleit speaks the Model Context Protocol, so an AI agent can schedule and manage events by calling tools — using the same project API key and the same operations as the REST API. The tool catalog is derived from the API surface, so there is no MCP-only feature set to learn and nothing that can drift from REST.
There are two ways to connect, and they expose identical tools:
- Hosted HTTPS endpoint —
POST https://getscheduleit.app/mcp, for clients that speak MCP over HTTP. - Local stdio proxy — the
scheduleit-mcpbinary, for desktop clients (Claude Desktop, Cursor, …) that spawn an MCP server as a subprocess. It forwards stdio MCP to the hosted endpoint over HTTPS.
Authentication
Identical to REST: Authorization: Bearer <api-key>. Mint a key from a
project in the operator console — see the Quickstart.
The key scopes every tool call to its project.
Tools
Every REST operation is exposed as a tool with the same name and input
schema. Call tools/list to enumerate them with full JSON schemas; the
main ones:
| Tool | What it does |
|---|---|
events.create | Schedule an event (webhook or email) |
events.list / events.get | Inspect scheduled and past events |
events.edit / events.cancel | Reschedule or cancel a pending event |
emails.request / emails.list / emails.revoke | Verify and manage sender/recipient email addresses |
deliveries.listForEvent | Read an event's delivery attempts |
deadLetter.list / deadLetter.replay | Inspect and replay dead-lettered deliveries |
A tool's arguments are exactly the REST request body for the same
operation — so the Scheduling,
Webhook, and Email pages describe the
MCP payloads too.
Option A — hosted HTTPS endpoint
POST /mcp with JSON-RPC 2.0. Three methods matter for a tools-only
server: initialize, tools/list, and tools/call.
curl -sX POST https://getscheduleit.app/mcp \
-H "Authorization: Bearer sk_..." \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
tools/call runs an operation. The result is returned as MCP text
content — the JSON the REST endpoint would return:
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "events.create",
"arguments": {
"schedule": { "kind": "oneshot", "fireAt": "2026-01-01T09:00:00Z" },
"target": { "channel": "webhook", "url": "https://example.com/hook" }
}
}
}
Tool-execution failures come back as an isError: true result (not a
JSON-RPC error), so the agent sees the message and can recover.
Protocol-level problems (bad method, malformed JSON) use JSON-RPC
error. The advertised protocol version is 2025-06-18.
Option B — local stdio binary (Claude Desktop, Cursor)
Download scheduleit-mcp from Downloads and point
your client at it. For Claude Desktop, edit
~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"scheduleit": {
"command": "/usr/local/bin/scheduleit-mcp",
"env": {
"SCHEDULEIT_API_KEY": "sk_...",
"SCHEDULEIT_BASE_URL": "https://getscheduleit.app"
}
}
}
}
The binary is a pure transport proxy — whatever the API advertises in
tools/list is what your agent sees, with no catalog baked in. Other
MCP clients use the same shape: set the executable path and those two
environment variables.