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
}
Agent Orchestrator
Send natural-language instructions and let the server decompose them into tool calls automatically.
/api/v1/projects/{project_id}/agent/
Execute an agent instruction against a project.
{
"instruction": "Create an about page with our company story and team photos"
}
/api/v1/projects/{project_id}/agent/{request_id}/
Check status of an agent request.
/api/v1/projects/{project_id}/agent/history/
List recent agent requests for a project.
/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.
Client Configuration
Example configurations for popular MCP clients.
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}'