MCP
Page Deltas speaks the Model Context Protocol, so AI agents can create monitors, read detected changes, and manage alert channels with the same organisation-scoped access as the REST API.
Endpoint
Production: https://api.pagedeltas.com/mcp. Streamable HTTP, JSON responses, no session affinity required. CORS is enabled for browser-based clients.
Authentication
The same API keys as the REST API. Create one from Settings → API keys (editor or admin). Send it on every request:
Authorization: Bearer pdt_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Keys are scoped to the organisation that created them and act with admin-level access within that organisation. Cookie sessions are not accepted on this endpoint — agents must use a Bearer key.
Connect a client
Point any MCP client that supports remote Streamable HTTP at the endpoint, and pass the Bearer header. Examples:
Claude Code — ~/.claude.json (or project .mcp.json):
{
"mcpServers": {
"pagedeltas": {
"type": "http",
"url": "https://api.pagedeltas.com/mcp",
"headers": {
"Authorization": "Bearer pdt_xxxxxxxx"
}
}
}
}Cursor — ~/.cursor/mcp.json:
{
"mcpServers": {
"pagedeltas": {
"url": "https://api.pagedeltas.com/mcp",
"headers": {
"Authorization": "Bearer pdt_xxxxxxxx"
}
}
}
}VS Code Copilot — .vscode/mcp.json:
{
"servers": {
"pagedeltas": {
"url": "https://api.pagedeltas.com/mcp",
"headers": {
"Authorization": "Bearer ${input:pagedeltas-api-key}"
}
}
}
}Claude Desktop still prefers a local stdio process. Bridge with mcp-remote:
{
"mcpServers": {
"pagedeltas": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://api.pagedeltas.com/mcp",
"--header",
"Authorization: Bearer ${PAGEDELTAS_API_KEY}"
]
}
}
}Tools
Tools wrap the REST API. Destructive tools (deletes) are marked as such. Check-now and channel tests are rate-limited the same way as the HTTP endpoints.
| Tool | Description |
|---|---|
list_monitors | List page monitors. |
get_monitor | Get one page monitor. |
create_monitor | Create a page monitor (url required; set nl_description so the LLM filter knows what matters). |
update_monitor | Patch URL, descriptions, selectors, or status. |
delete_monitor | Delete a page monitor and its history. |
check_monitor_now | Enqueue an immediate check (1/minute/monitor). |
list_monitor_changes | List detected changes (optional limit, max 100). |
list_monitor_alert_channels / set_monitor_alert_channels | Read or replace a monitor's channel overrides. |
bulk_pause_monitors, bulk_resume_monitors, bulk_delete_monitors | Pause, resume, or delete many page monitors. |
list_sitemap_monitors, create_sitemap_monitor, … | List, create, get, update, delete, and check sitemap monitors. |
list_sitemap_discoveries | List newly discovered URLs for a sitemap monitor. |
list_sitemap_alert_channels / set_sitemap_alert_channels | Read or replace a sitemap's channel overrides. |
bulk_pause_sitemap_monitors, bulk_resume_sitemap_monitors, bulk_delete_sitemap_monitors | Pause, resume, or delete many sitemap monitors. |
list_alert_channels | List notification channels. |
create_alert_channel | Create a channel (type, name, config). |
update_alert_channel / delete_alert_channel | Update or delete a channel. |
test_alert_channel | Send a test payload. |
get_plan | Current plan, URL limit, retention, and priority. |
Resources
JSON resources the client can read without picking a tool:
pagedeltas://plan— current plan and limits.pagedeltas://monitors— all page monitors.- docsMcp.resources.monitor
- docsMcp.resources.changes
Prompts
Optional starter prompts the client can offer:
create_monitor— draft a monitor from a URL and a goal.review_changes— summarise recent changes for a monitor.
Errors
Auth failures are HTTP 401 with a WWW-Authenticate: Bearer header — they never become JSON-RPC. Tool-level failures (unknown id, plan limit, rate limit) come back as a tool result with isError: true and the same message the REST API would have returned, prefixed with the HTTP status.
What is not exposed
CSV import, API-key management, team invites, and Stripe checkout/portal stay on the REST API and the dashboard. Those flows need a browser or a multipart upload, which agents should not drive.