Request
Response shape
content is an array of MCP content blocks. Today the server returns only text blocks. Image returns are planned but blocked on Open WebUI’s client-side MCP renderer (see known bug #5).
Streaming
Tool calls stream progress as SSE events on the same response. Clients that want partial output must setAccept: application/json, text/event-stream and parse data: lines. The mcp Python SDK and Open WebUI both do this automatically.
Heartbeats are emitted every 15 seconds for long-running commands so proxies don’t close the connection.
Common examples
Create a document with the docx skill
Read a file with line numbers
Delegate to Claude Code
X-MCP-Servers: github,jira on the HTTP request — see Sub-agents.
Errors
isError: true cause | What it means |
|---|---|
| Command non-zero exit | The command failed; stderr is in content[0].text |
| Timeout | Exceeded COMMAND_TIMEOUT (or per-call timeout) |
| Path outside sandbox | view / create_file rejected a path outside the allowed roots |
old_str not unique | str_replace found zero or multiple matches |
401, 400, 500) come back as HTTP error responses, not JSON-RPC errors.
Related
- tools/list — tool signatures
- resources/list — browse uploaded files
