JiriOndrusek opened a new issue, #9302:
URL: https://github.com/apache/camel-quarkus/issues/9302

   ### Describe the feature here
   
   Camel Quarkus has shipped the `ai-tool` and `mcp-server` extensions since 
3.39, but no example shows them. The existing AI examples cover only data 
extraction (`data-extract-langchain4j`) and RAG (`langchain4j-ingest-rag`).
   
   Add an `ai-tool-support-desk` example to camel-quarkus-examples: an online 
shop's support desk where one set of `ai-tool` routes serves two AI audiences. 
Customers chat with a `langchain4j-agent` inside the app (`tags=customer`). 
Support staff use their own AI assistant (Claude Code, MCP Inspector) over MCP 
(`tags=support`). This mirrors a common production pattern: support agents 
calling order and refund tools, read-only tools first, and money moved only 
after a human approves 
([Klarna](https://www.klarna.com/international/press/klarna-ai-assistant-handles-two-thirds-of-customer-service-chats-in-its-first-month/),
 
[Airbnb](https://medium.com/airbnb-engineering/automation-platform-v2-improving-conversational-ai-at-airbnb-d86c9386e0cb),
 [Stripe MCP](https://docs.stripe.com/mcp)).
   
   Each tool wraps a business workflow:
   - `get_order` and `track_shipment` (read): PostgreSQL, and a carrier REST 
API behind a circuit breaker.
   - `request_return` and `escalate_to_human` (write, customer): a nested 
`argSchema`; returns up to €50 are approved automatically, larger ones wait for 
approval.
   - `list_pending_returns` and `decide_return` (support, over MCP): MCP hints 
such as `destructiveHint` and `idempotentHint`.
   - Refunds are not a tool. An approved return goes through Kafka to a refund 
route with an idempotent consumer, so the LLM never moves money.
   
   The example also shows:
   - the logged-in customer reaching the tools as an exchange property, so 
customers see only their own orders, with write tools guarded by an `ai-tool` 
`authorizationPolicy`
   - limits on the agent's tool loop (`maxToolCallingRoundTrips`, 
`compensateOnToolErrors`)
   - `/mcp` protected by a Quarkus role
   - an audit table recording every tool call, including denied ones
   - a kill switch that removes a tool by stopping its route
   - a per-customer `throttle` on the chat
   
   Ollama runs locally, and PostgreSQL and Kafka come from Dev Services. Tests 
run in JVM and native mode: they replay recorded Ollama traffic with WireMock 
(as `data-extract-langchain4j` does) and call the MCP tools with 
`quarkus-mcp-server-test`.
   
   The example needs Camel 4.23, so it waits until Camel Quarkus moves to Camel 
4.23.0. Until these are done, it leaves out structured tool output over MCP 
(#9299), `ai-resource` (#9300) and per-staff authorization over MCP 
(CAMEL-25406).
   
   _Claude Code on behalf of Jiří Ondrušek_


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to