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]
