HTTP / JSON-RPC
The Estaite server speaks Streamable HTTP MCP (2025-03-26) — the
JSON-RPC 2.0 envelope that every MCP client uses under the hood. You can
call it directly from any HTTP client (curl, fetch, requests, Postman)
without an MCP SDK.
Endpoint
| URL | https://mcp.estaite.com |
| Method | POST |
| Content-Type | application/json |
| Accept | application/json, text/event-stream |
| Auth | x-api-key header (preferred). See Authentication. |
Initialize the session
Every MCP session begins with an initialize call:
curl -sS -X POST https://mcp.estaite.com \ -H "Content-Type: application/json" \ -H "Accept: application/json, text/event-stream" \ -H "x-api-key: YOUR_API_KEY" \ -d '{ "jsonrpc": "2.0", "id": 1, "method": "initialize", "params": { "protocolVersion": "2025-03-26", "capabilities": {}, "clientInfo": { "name": "curl", "version": "0.0.1" } } }'The response includes a mcp-session-id header. Echo it on every subsequent
request as mcp-session-id: <value>.
List tools
curl -sS -X POST https://mcp.estaite.com \ -H "Content-Type: application/json" \ -H "Accept: application/json, text/event-stream" \ -H "x-api-key: YOUR_API_KEY" \ -H "mcp-session-id: $SESSION" \ -d '{ "jsonrpc": "2.0", "id": 2, "method": "tools/list" }'You’ll get back the 13 tools with their JSON schemas. See Common patterns for shared input conventions.
Call a tool
curl -sS -X POST https://mcp.estaite.com \ -H "Content-Type: application/json" \ -H "Accept: application/json, text/event-stream" \ -H "x-api-key: YOUR_API_KEY" \ -H "mcp-session-id: $SESSION" \ -d '{ "jsonrpc": "2.0", "id": 3, "method": "tools/call", "params": { "name": "search_estaite_submarkets", "arguments": { "query": "Carmel Valley" } } }'The result lives at result.content[0].text and is itself a JSON string —
parse it to get the structured payload documented under
API Reference.
Quick fetch example
async function callEstaite(name, args) { const res = await fetch('https://mcp.estaite.com', { method: 'POST', headers: { 'Content-Type': 'application/json', Accept: 'application/json, text/event-stream', 'x-api-key': process.env.ESTAITE_API_KEY, }, body: JSON.stringify({ jsonrpc: '2.0', id: Date.now(), method: 'tools/call', params: { name, arguments: args }, }), });
const env = await res.json(); if (env.error) throw new Error(env.error.message); return JSON.parse(env.result.content[0].text);}
const matches = await callEstaite('search_estaite_submarkets', { query: 'Carmel Valley',});When to skip MCP entirely
If you don’t care about the MCP handshake and just want REST-style data, contact support@estaite.com about the upcoming direct REST endpoints. The MCP server itself is the canonical interface for all 13 tools today.