MCP protocol and transport
Use revision 2026-07-28 with stateless discovery, explicit request headers and scoped pagination.
Factuarea supports protocol revision 2026-07-28 at https://mcp.factuarea.com. Requests use a JSON-RPC 2.0 envelope over HTTP, with the protocol context carried in every request. The server does not establish a session: start with server/discover; legacy initialize and ping are rejected. A client supporting an older MCP revision is not automatically compatible.
First request
curl https://mcp.factuarea.com \
-H "Authorization: Bearer $FACTUAREA_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "MCP-Protocol-Version: 2026-07-28" \
-H "Mcp-Method: server/discover" \
--data '{
"jsonrpc": "2.0",
"id": "discover-1",
"method": "server/discover",
"params": {
"_meta": {
"io.modelcontextprotocol/protocolVersion": "2026-07-28",
"io.modelcontextprotocol/clientCapabilities": {},
"io.modelcontextprotocol/clientInfo": {
"name": "erp-factuarea",
"version": "1.0.0"
}
}
}
}'Send MCP-Protocol-Version and Mcp-Method on every call, matching the envelope. For named operations such as tools/call and prompts/get, add Mcp-Name matching params.name; resource reads identify the resource URI. Keep the _meta protocol version, capabilities and client information in each request. Authenticate every call with an API key or OAuth access token.
Discover and call
After server/discover, use tools/list, resources/list and prompts/list. Tool discovery is filtered by credential scopes and channel policy: the complete catalog has 457 tools, of which 368 are OAuth-reachable. Always use the returned schema; a tool hidden from your credential is not made available by knowing its name.
Successful results use the revision’s resultType: complete shape. Inspect error envelopes and tool errors separately; a protocol lookup failure and a business rejection have different remedies. Irreversible operations enforce idempotency_key according to their policy even when the input schema marks it optional. Replayed calls can return com.factuarea/idempotentReplay metadata.
Pagination and caching
Follow opaque nextCursor values while retaining the same credential and request context. Cursors expire; restart discovery when one becomes invalid. The default cursor lifetime is 120 seconds, with a configured maximum of 300 seconds. Respect returned cache hints and their private scope; never reuse another company’s or credential’s tool list. Default discovery/resource cache hints are 60 seconds, but the response is authoritative.