Skip to main content
Slaunt is a standard Streamable HTTP MCP server, so MCP SDKs handle this page for you. Read it if you’re writing a client by hand or debugging one. The parts that differ from a generic server are strict session binding and thread boundaries.

Sessions

Send initialize without an Mcp-Session-Id header. The response header carries the new session ID, which you send on every request after that.
Sessions are bound to the user and the client that created them, so a session ID can’t be shared between tools or tokens. Reuse one session per connection: each new session can show up as a separate agent in Quaero.

Notification stream

Open it if you cache tools/list: Slaunt sends notifications/tools/list_changed when the workspace’s provider tools change.

Thread boundaries

By default one session equals one runtime. If your client runs several chats over one connection, tag each request with a boundary so Slaunt keeps them as separate threads instead of merging them. Put it in params._meta or a header. Values are strings up to 1,024 characters and are stored only as hashes. Conflicting values on one request are rejected. Without a boundary, each new chat must call thread_begin. Codex has its own routing.

Limits

Every response carries X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset (Unix seconds).

Results

Each tools/call result has content[0].text, a readable summary meant for the model, and structuredContent, the full data meant for code. Failures come back as a JSON-RPC error, not as an isError result, so check for error first.