Description
Extend octave.mcp.types.ToolContent beyond kind="text" to cover image, audio, and resource-link content blocks returned by tools/call. Non-text blocks are currently skipped silently in McpClient.call_tool.
Why
Servers like filesystem and vision-oriented MCP servers return images/audio/resources; skipping them drops data callers may need (e.g. tool-produced charts, fetched files). Deferred deliberately in the client-core design until a caller needs it.
Scope
References
Description
Extend
octave.mcp.types.ToolContentbeyondkind="text"to cover image, audio, and resource-link content blocks returned bytools/call. Non-text blocks are currently skipped silently inMcpClient.call_tool.Why
Servers like filesystem and vision-oriented MCP servers return images/audio/resources; skipping them drops data callers may need (e.g. tool-produced charts, fetched files). Deferred deliberately in the client-core design until a caller needs it.
Scope
ToolContentvariants (image: base64 + mimeType; audio; resource link/resource contents) as a discriminated unionMcpClient.call_tool(keep SDK types quarantined toclient.py)References
.agents/specs/2026-09-10-mcp-client-core-design.mdMcpClient.call_tooldocstring, PR feat(mcp): implement MCP client core (JSON-RPC 2.0) #81