Federico Mariani created CAMEL-24333:
----------------------------------------
Summary: camel-ai-tool - structured tool output (outputSchema /
structuredContent)
Key: CAMEL-24333
URL: https://issues.apache.org/jira/browse/CAMEL-24333
Project: Camel
Issue Type: Improvement
Components: camel-ai
Reporter: Federico Mariani
Follow-up from CAMEL-24308 (camel-mcp-server).
MCP tools can declare an {{outputSchema}} and return {{structuredContent}}
(typed JSON) in the {{CallToolResult}}, so clients can parse tool results
reliably instead of re-interpreting free text. This is distinct from the
"structured output" feature of the chat components (camel-langchain4j-agent
{{outputClass}}, spring-ai converters), which constrains the *LLM's answer* —
this issue is about the *tool's result*.
Today the whole stack is string-only: {{AiToolExecutor}} converts the exchange
body to {{String}}, {{AiToolResult.Success}} carries a plain string, and the
bridge's {{McpToolCallResult}} is {{(text, isError)}} — a route producing JSON
is delivered as an opaque text blob without a schema.
Proposed scope:
* Optional output-schema metadata on the ai-tool consumer endpoint (flat
{{outputParameter.NAME=type}} syntax and/or raw JSON Schema, consistent with
whatever CAMEL-24308's argSchema follow-up decides for inputs).
* A structured variant in {{AiToolResult}} (e.g. {{Success(String text, Object
structured)}}) populated from a JSON exchange body when an output schema is
declared.
* Extend {{McpToolCallResult}} / the {{McpServerTool}} SPI accordingly and map
to {{structuredContent}} in every engine — all three APIs already support it:
MCP Java SDK {{CallToolResult.structuredContent}} + {{Tool.outputSchema}},
quarkiverse {{ToolDefinition.setOutputSchema()/generateOutputSchema()}} +
{{ToolResponse}} structured variant, Spring AI {{@McpTool(generateOutputSchema
= ...)}}.
* The improvement also benefits the langchain4j-agent and spring-ai-chat
adapters (typed tool results for the LLM), not only MCP.
Note: this extends {{AiToolResult}} and the {{McpServerTool}} SPI ({{@since
4.22}}). Deciding the shape before Camel 4.22 ships avoids evolving a released
SPI.
----
_This issue was drafted by Claude Code on behalf of Federico Mariani._
--
This message was sent by Atlassian Jira
(v8.20.10#820010)