Skip to main content

HTTP contract

Send a single JSON-RPC message per POST to APOB_MCP_URL. The current server supports MCP versions 2025-03-26, 2025-06-18, and 2025-11-25; the examples use 2025-11-25. Use the version returned by initialization for later requests. The endpoint is stateless: it does not issue or require Mcp-Session-Id. GET and DELETE return 405; there is no standalone SSE subscription at /mcp. Successful request responses use JSON. Accepted notifications return 202 with an empty body. The Accept requirement follows the Streamable HTTP transport specification.

Initialize

Inspect result.protocolVersion, result.serverInfo, and result.capabilities. APOB advertises tools and resources; it does not advertise prompts, tool-list change notifications, or resource subscriptions. Then send the notification:

Discover tools and call one

Each tool supplies its name, description, inputSchema, and annotations. Generation schemas include account-specific defaults. Preserve schema conditions and explicit user choices; see the tool catalog. The tool name belongs in params.name, and its inputs in params.arguments:
Use a distinct JSON-RPC request ID to correlate each response. That ID does not make a creation or payment call idempotent.

Read the image prompt resource

resources/list exposes apob://docs/image-prompt-format/v1, a Markdown guide to the tagged prompt required by create_image. Read it before constructing a request; resource discovery alone does not insert its rules into a host’s prompt.
The response has result.contents entries with uri, mimeType, and text. Ordinary video and editing tools use their own prompt contracts rather than the create_image tags.

Results

Successful tool calls return result.structuredContent and the same JSON serialized into a text entry in result.content. Interpret the tool’s fields and isError before treating a call as successful. A generation receipt is an accepted submission; poll get_generation_result for finished media.

Errors

An authentication storage outage fails closed with a retryable HTTP 503. A lost response or a transport failure after a write can leave the outcome uncertain. Follow generation errors or billing reconciliation, and do not automatically repeat paid work.