Agent & MCP API
Connect AI agents and MCP-compatible clients (Claude Desktop, Cursor, Windsurf) to manage websites programmatically.
Get your API keyMCP Endpoint
EscalateFlow implements a Model Context Protocol server over HTTP. Any MCP-compatible client can discover and call tools via a single JSON-RPC 2.0 endpoint.
https://escalateflow.com/api/v1/mcp/
Headers
| Header | Value |
|---|---|
Authorization | Bearer ef_live_xxxxxxxxxxxxxxxxxxxx |
Content-Type | application/json |
All requests use JSON-RPC 2.0 format: {"jsonrpc": "2.0", "method": "...", "params": {...}, "id": 1}
MCP Methods
initialize
Handshake. Returns server info and capabilities. Call this first.
Request
{
"jsonrpc": "2.0",
"method": "initialize",
"params": {},
"id": 1
}
Response
{
"jsonrpc": "2.0",
"result": {
"protocolVersion": "2024-11-05",
"serverInfo": {"name": "escalateflow", "version": "1.0.0"},
"capabilities": {"tools": {}, "resources": {}}
},
"id": 1
}
tools/list
Discover available tools with their names, descriptions, and input schemas.
{
"jsonrpc": "2.0",
"method": "tools/list",
"params": {},
"id": 2
}
{
"jsonrpc": "2.0",
"result": {
"tools": [
{
"name": "escalateflow_pages_list",
"description": "[pages] List all pages for a website",
"inputSchema": {
"type": "object",
"properties": {
"project_id": {"type": "string", "description": "Website/project UUID"}
},
"required": ["project_id"]
}
}
]
},
"id": 2
}
tools/call
Execute a tool. Tool names follow the pattern escalateflow_{tool}_{action}.
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "escalateflow_pages_list",
"arguments": {
"project_id": "uuid-here"
}
},
"id": 3
}
{
"jsonrpc": "2.0",
"result": {
"content": [{"type": "text", "text": "[{\"slug\": \"home\", ...}]"}],
"isError": false
},
"id": 3
}
resources/list
List your websites as MCP resources.
{
"jsonrpc": "2.0",
"method": "resources/list",
"params": {},
"id": 4
}
{
"jsonrpc": "2.0",
"result": {
"resources": [
{
"uri": "escalateflow://projects/uuid-here",
"name": "My Website",
"mimeType": "application/json"
}
]
},
"id": 4
}
Tool catalog
EscalateFlow runs no AI of its own: your agent (Claude Code, Cursor, Claude Desktop...) plans the work and calls these tools through MCP or the REST API.
/api/v1/agent/tools/
List all available agent tools and their schemas.
Batch Operations
Execute multiple API operations in a single request. Useful for reducing round-trips when building or updating a site.
/api/v1/projects/{project_id}/batch/
{
"operations": [
{"method": "POST", "path": "/pages/", "body": {"title": "About", "slug": "about", "html": "..."}},
{"method": "POST", "path": "/pages/", "body": {"title": "Contact", "slug": "contact", "html": "..."}},
{"method": "PUT", "path": "/settings/", "body": {"name": "Updated Site Name"}}
]
}
Each operation uses a path relative to /api/v1/projects/{project_id}/. Max 20 operations per batch.
Skills
Skills are predefined instruction sets that agents can use as context. They provide domain knowledge about EscalateFlow's API patterns.
/api/v1/agent/skills/
List available skill files.
/api/v1/agent/skills/{skill_name}/
Get skill content by name. Feed this to your AI agent as system context.
Shared PDFs
Agents can put a PDF online at https://<site>/public/docs/<slug>/ (viewer + optional email form) and read per-page statistics: views, downloads, time on each page, where readers stop.
MCP: escalateflow_documents_upload (url or file_base64), _list, _get, _update, _replace, _delete. REST: /api/v1/projects/{id}/documents/. Reference: DOCUMENTS_API.
Client Configuration
Example configurations for popular MCP clients.
claude.ai (web, desktop and mobile apps): custom connector
No API key to paste: the server supports the MCP authorization flow (OAuth 2.1 with PKCE and dynamic client registration).
- Settings → Connectors → Add custom connector.
- Name
EscalateFlow, remote MCP server URLhttps://escalateflow.com/api/v1/mcp/. - Connect, sign in to EscalateFlow, choose all websites or one, and Allow.
The connection is an API key named “Claude (connector)”; revoke it in Dashboard → API keys & MCP. Any MCP client that implements the authorization spec connects the same way (discovery at /.well-known/oauth-protected-resource).
Claude Desktop / Cursor
Add to your MCP client config (e.g. claude_desktop_config.json):
{
"mcpServers": {
"escalateflow": {
"url": "https://escalateflow.com/api/v1/mcp/",
"headers": {
"Authorization": "Bearer ef_live_xxxxxxxxxxxxxxxxxxxx"
}
}
}
}
Get your API key: Go to Dashboard → Settings → API Keys or call POST /api/v1/keys/ to create one programmatically.
cURL Example
curl -X POST https://escalateflow.com/api/v1/mcp/ \
-H "Authorization: Bearer ef_live_xxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"initialize","params":{},"id":1}'