<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Otavio Rodolfo Piske</title>
    <description>The latest articles on DEV Community by Otavio Rodolfo Piske (@orpiske).</description>
    <link>https://dev.to/orpiske</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F522355%2F17888c6d-eff4-430f-b471-8f50ee6b8a36.jpeg</url>
      <title>DEV Community: Otavio Rodolfo Piske</title>
      <link>https://dev.to/orpiske</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/orpiske"/>
    <language>en</language>
    <item>
      <title>Building an MCP SQL Tool That Lets LLMs Query Live Databases with Wanaku</title>
      <dc:creator>Otavio Rodolfo Piske</dc:creator>
      <pubDate>Thu, 18 Jun 2026 05:04:19 +0000</pubDate>
      <link>https://dev.to/orpiske/building-an-mcp-sql-tool-that-lets-llms-query-live-databases-with-wanaku-4fm3</link>
      <guid>https://dev.to/orpiske/building-an-mcp-sql-tool-that-lets-llms-query-live-databases-with-wanaku-4fm3</guid>
      <description>&lt;p&gt;AI assistants are great at reasoning, but they have a fundamental blind spot: their answers come from training data that's frozen in time. Ask an AI "what laptops do you have under $1000?" and you'll get a plausible-sounding answer — just not one that reflects what's actually in your inventory &lt;em&gt;right now&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;What if the AI could just... check?&lt;/p&gt;

&lt;p&gt;That's the problem Wanaku's upcoming &lt;code&gt;sql-tool&lt;/code&gt; service template solves. Coming in version 0.2.0, it connects AI assistants to live relational databases through the Model Context Protocol (MCP), letting them query real data instead of guessing from stale knowledge.&lt;/p&gt;

&lt;h2&gt;
  
  
  Wait, What's Wanaku? What's MCP?
&lt;/h2&gt;

&lt;p&gt;Quick context if you're new here:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;MCP (Model Context Protocol)&lt;/strong&gt; is an open protocol that lets AI assistants use external tools, access resources, and interact with services in a standardized way. Think of it as a universal API layer for AI — instead of every AI client needing custom integrations, they can all speak MCP.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://wanaku.ai" rel="noopener noreferrer"&gt;&lt;strong&gt;Wanaku&lt;/strong&gt;&lt;/a&gt; is an open-source MCP router and capability management platform. It acts as the glue between AI clients (like Claude Desktop, Codex, or custom LLM apps) and backend services. You expose capabilities as MCP-compatible tools, and Wanaku handles routing, authentication, and service discovery.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The upcoming 0.2.0 release (&lt;a href="https://github.com/wanaku-ai/wanaku/pull/1358" rel="noopener noreferrer"&gt;PR #1358&lt;/a&gt; pending merge) introduces &lt;em&gt;service templates&lt;/em&gt; — pre-packaged capability patterns you can instantiate with just a CLI command. The &lt;code&gt;sql-tool&lt;/code&gt; template is the first of these, and it's designed to bridge the gap between AI assistants and relational databases.&lt;/p&gt;

&lt;h2&gt;
  
  
  Real-Time SQL Querying vs. Vector RAG
&lt;/h2&gt;

&lt;p&gt;Here's a scenario every enterprise developer has seen: you ask an AI assistant about operational data in your system, and it confidently spits out an outdated or completely fabricated metric. &lt;/p&gt;

&lt;p&gt;The classic workaround is &lt;strong&gt;RAG (Retrieval-Augmented Generation)&lt;/strong&gt; — you pre-index your data, convert it into vector embeddings, and store it in a vector database for the AI to search. That works beautifully for text documents, wikis, and static datasets. &lt;/p&gt;

&lt;blockquote&gt;
&lt;h3&gt;
  
  
  The RAG Limitation
&lt;/h3&gt;

&lt;p&gt;What about &lt;strong&gt;live operational data&lt;/strong&gt;? Your shifting inventory, current customer orders, or real-time application metrics change too fast for vector syncs. You don't want to pre-index that data — you want the LLM to &lt;strong&gt;query it on-demand via SQL&lt;/strong&gt;.## The Solution: Exposing SQL Queries as MCP Tools&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The &lt;code&gt;sql-tool&lt;/code&gt; template packages everything a developer needs to securely expose a live SQL database query as an executable MCP tool:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  An &lt;strong&gt;Apache Camel&lt;/strong&gt; route that executes safe queries against your target data store.&lt;/li&gt;
&lt;li&gt;  An &lt;strong&gt;MCP tool definition&lt;/strong&gt; that compatible AI clients can dynamically discover and call.&lt;/li&gt;
&lt;li&gt;  Pre-packaged runtime dependencies (including JDBC drivers, SQL components, and JSON marshalling).&lt;/li&gt;
&lt;li&gt;  Support for parameterizing AI inputs into dynamic SQL queries via Camel Simple expressions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You provide the database connection details and the baseline query syntax; the Wanaku gateway handles the rest.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step-by-Step Guide: Connecting an LLM to PostgreSQL
&lt;/h2&gt;

&lt;p&gt;Here is a preview of how to instantiate the SQL template once 0.2.0 ships. In this example, we have a PostgreSQL database containing a live product catalog, and we want our AI assistant to accurately answer: &lt;em&gt;"What laptops do you have under $800?"&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Deploy the PostgreSQL Database Container
&lt;/h3&gt;

&lt;p&gt;Spin up a local PostgreSQL instance using Podman (Docker commands work identically here):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;podman run &lt;span class="nt"&gt;--rm&lt;/span&gt; &lt;span class="nt"&gt;--name&lt;/span&gt; wanaku-postgres &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-p&lt;/span&gt; 5432:5432 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="nv"&gt;POSTGRES_PASSWORD&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;wanaku &lt;span class="se"&gt;\&lt;/span&gt;
  postgres
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Load your schema and data:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;podman &lt;span class="nb"&gt;exec&lt;/span&gt; &lt;span class="nt"&gt;-i&lt;/span&gt; wanaku-postgres psql &lt;span class="nt"&gt;-U&lt;/span&gt; postgres &lt;span class="nt"&gt;-d&lt;/span&gt; postgres &amp;lt; sql-tool-demo.sql
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can download the demo SQL script from the &lt;a href="https://wanaku.ai/blog/sql-tool-demo.sql" rel="noopener noreferrer"&gt;Wanaku website&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Instantiate the Wanaku SQL Tool Template
&lt;/h3&gt;

&lt;p&gt;Now, expose your live database to the MCP network by mapping the AI's input to a dynamic SQL query:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;wanaku service template instantiate &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--name&lt;/span&gt; sql-tool &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--property&lt;/span&gt; forage.jdbc.username&lt;span class="o"&gt;=&lt;/span&gt;postgres &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--property&lt;/span&gt; forage.jdbc.password&lt;span class="o"&gt;=&lt;/span&gt;wanaku &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--property&lt;/span&gt; sql.query&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'SELECT name, price FROM products WHERE price &amp;lt; ${body} ORDER BY price'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--service-name&lt;/span&gt; product-catalog &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--service-system&lt;/span&gt; product-catalog
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Notice the &lt;code&gt;${body}&lt;/code&gt; placeholder in the query? That's a Camel Simple expression. At runtime, it gets replaced with whatever input the AI sends. So when a user asks "what laptops are under $800?", the AI calls the tool with &lt;code&gt;800&lt;/code&gt; as input, and the query becomes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;price&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;products&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;price&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;800&lt;/span&gt; &lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;price&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is the key insight: &lt;strong&gt;the SQL template doesn't run static queries — it accepts dynamic input from the AI&lt;/strong&gt;, making it a true interactive tool.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Verify the Catalog Deployment
&lt;/h3&gt;

&lt;p&gt;Ensure your new service is correctly registered in the local capability catalog:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;wanaku service catalog list
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can also confirm your live data store connectivity entries using:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;wanaku data-store list &lt;span class="nt"&gt;--plain&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 4: Querying Live Data via Your AI Client
&lt;/h3&gt;

&lt;p&gt;Point any MCP-compatible AI client (such as Claude Desktop or Continue.dev) at your local Wanaku router gateway. The LLM will automatically discover the product-catalog schema tool capability and query the database directly.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/.%2Fsql-tool-result.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/.%2Fsql-tool-result.png" alt="Output showing the results from the SQL tool" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;No hallucinations. No stale data lakes. Just direct, deterministic SQL results parsed instantly by the LLM.&lt;/p&gt;

&lt;h2&gt;
  
  
  How It Works Under the Hood
&lt;/h2&gt;

&lt;p&gt;When an AI assistant invokes the generated database tool, the orchestration pipeline executes across these layers:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Tool Invocation: The AI client sends an MCP payload containing the user's filtered variables.&lt;/li&gt;
&lt;li&gt;Routing: Wanaku maps the request to the underlying Apache Camel SQL endpoint.&lt;/li&gt;
&lt;li&gt;Parameter Injection: The ${body} runtime expression safely binds the AI's variables to the SQL execution context.&lt;/li&gt;
&lt;li&gt;Execution: The statement runs natively against your PostgreSQL deployment.&lt;/li&gt;
&lt;li&gt;Serialization: The rows are marshalled into a structured JSON string payload.&lt;/li&gt;
&lt;li&gt;Response Generation: The LLM receives the raw JSON and translates it into a natural language response for the user.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The template wires all of this automatically — you just provide the query and connection details.&lt;/p&gt;

&lt;h2&gt;
  
  
  Parameterizing AI Prompts with Dynamic SQL
&lt;/h2&gt;

&lt;p&gt;Since the &lt;code&gt;sql-tool&lt;/code&gt; template is built on the &lt;a href="https://camel.apache.org/components/next/sql-component.html" rel="noopener noreferrer"&gt;Apache Camel SQL component&lt;/a&gt;, you can use any expression the component supports.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Simple value substitution:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;products&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;category_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="n"&gt;body&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Named parameters with headers:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;products&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;price&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="n"&gt;maxPrice&lt;/span&gt; &lt;span class="k"&gt;AND&lt;/span&gt; &lt;span class="n"&gt;category_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="n"&gt;category&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For more advanced patterns, refer to the &lt;a href="https://camel.apache.org/components/next/sql-component.html" rel="noopener noreferrer"&gt;Camel SQL documentation&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Matters
&lt;/h2&gt;

&lt;p&gt;This demo is small — three tables, ten products — but the pattern scales to real-world use cases:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Customer support bots&lt;/strong&gt;: query order history, account status, or ticket details in real time&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Internal tools&lt;/strong&gt;: let AI assistants search employee directories, project databases, or asset inventories&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Analytics and reporting&lt;/strong&gt;: expose reporting queries as MCP tools so AI can pull fresh metrics on demand&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Developer productivity&lt;/strong&gt;: connect AI code assistants to your test databases for context-aware suggestions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The point isn't the query. It's that &lt;strong&gt;the AI is no longer guessing — it's checking&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  When Can You Try It?
&lt;/h2&gt;

&lt;p&gt;The &lt;code&gt;sql-tool&lt;/code&gt; template is part of the upcoming Wanaku 0.2.0 release, currently pending the merge of &lt;a href="https://github.com/wanaku-ai/wanaku/pull/1358" rel="noopener noreferrer"&gt;PR #1358&lt;/a&gt;. Once it ships:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://wanaku.ai/docs/demos/wanaku-demos-current/" rel="noopener noreferrer"&gt;Install Wanaku&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Follow the setup steps above to instantiate the template&lt;/li&gt;
&lt;li&gt;Connect your MCP-compatible AI client to the Wanaku router&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you want to try it &lt;em&gt;before&lt;/em&gt; the official release, you can build Wanaku from the PR branch or use one of the early-builds.&lt;/p&gt;

&lt;h2&gt;
  
  
  Get Involved
&lt;/h2&gt;

&lt;p&gt;Wanaku is open source, and we'd love your input:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;⭐ &lt;a href="https://github.com/wanaku-ai/wanaku" rel="noopener noreferrer"&gt;Star the project on GitHub&lt;/a&gt; to help others discover it&lt;/li&gt;
&lt;li&gt;💡 Have a template idea? Check the &lt;a href="https://github.com/wanaku-ai/wanaku/blob/main/docs/contributing.md" rel="noopener noreferrer"&gt;contributing guide&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🐛 Found a bug or have feedback? Open an issue on &lt;a href="https://github.com/wanaku-ai/wanaku/issues" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The &lt;code&gt;sql-tool&lt;/code&gt; template is just the beginning — we're building a library of reusable capability patterns that make it trivial to connect AI assistants to real systems. If you're excited about that vision, come build with us.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>postgres</category>
      <category>sql</category>
      <category>mcp</category>
    </item>
    <item>
      <title>Wanaku 0.1.1: Bringing Apache Camel Integration Capabilities to AI Agents via MCP</title>
      <dc:creator>Otavio Rodolfo Piske</dc:creator>
      <pubDate>Thu, 11 Jun 2026 20:45:53 +0000</pubDate>
      <link>https://dev.to/orpiske/wanaku-011-bringing-apache-camel-integration-capabilities-to-ai-agents-via-mcp-1od5</link>
      <guid>https://dev.to/orpiske/wanaku-011-bringing-apache-camel-integration-capabilities-to-ai-agents-via-mcp-1od5</guid>
      <description>&lt;p&gt;We're excited to announce &lt;a href="http://wanaku.ai" rel="noopener noreferrer"&gt;Wanaku&lt;/a&gt; 0.1.1, a significant milestone that showcases how Apache Camel's powerful integration capabilities can be seamlessly exposed to AI agents through the Model Context Protocol (MCP). This release introduces &lt;strong&gt;Service Catalogs&lt;/strong&gt; and &lt;strong&gt;Service Templates&lt;/strong&gt; — features that leverage Apache Camel as the integration runtime to bridge the gap between AI and enterprise systems.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Wanaku?
&lt;/h2&gt;

&lt;p&gt;Wanaku is an open-source MCP router and capability management platform that acts as a smart intermediary between AI agents and integration capabilities. Think of it as a gateway that allows AI systems to discover and invoke enterprise integrations as if they were native tools, all through a unified MCP interface.&lt;/p&gt;

&lt;p&gt;While Wanaku is runtime-agnostic in design, &lt;strong&gt;Apache Camel is the native and first-class integration runtime&lt;/strong&gt;, providing the robust, battle-tested foundation for connecting AI agents to hundreds of enterprise systems, protocols, and data formats.&lt;/p&gt;

&lt;p&gt;Getting started is a single command. After &lt;a href="https://github.com/wanaku-ai/wanaku/releases/tag/wanaku-0.1.3" rel="noopener noreferrer"&gt;downloading the CLI&lt;/a&gt;, just run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;wanaku start &lt;span class="nb"&gt;local&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This launches the Wanaku router and admin UI on your machine — no containers, no cloud accounts, no configuration files. You're ready to create and deploy Service Catalogs in seconds.&lt;/p&gt;

&lt;h2&gt;
  
  
  Service Catalogs: Packaging Camel Routes as AI Tools
&lt;/h2&gt;

&lt;p&gt;At the heart of Wanaku 0.1.1 is the &lt;strong&gt;Service Catalog&lt;/strong&gt; concept — a way to bundle Apache Camel routes, MCP tool definitions, and dependencies into a single deployable package. This brings several Apache Camel strengths directly to AI agents:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Camel routes&lt;/strong&gt; define integration logic using YAML-based route definitions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Wanaku rules&lt;/strong&gt; map route IDs to MCP tool definitions, adding the metadata AI agents need to discover and invoke each route&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Maven dependencies&lt;/strong&gt; declare required Camel components and libraries&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here's what a Service Catalog looks like, using a book search example that calls the free Open Library API:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;demo-catalog/
├── index.properties              # Catalog manifest
└── books/
    ├── books.camel.yaml           # Camel routes
    ├── books.wanaku-rules.yaml    # MCP tool definitions
    └── books.dependencies.txt     # Camel component dependencies
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  The Apache Camel Foundation
&lt;/h3&gt;

&lt;p&gt;The &lt;code&gt;books.camel.yaml&lt;/code&gt; file contains standard Apache Camel route definitions:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;route&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;get-book-by-isbn&lt;/span&gt;
    &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Retrieve book information by ISBN&lt;/span&gt;
    &lt;span class="na"&gt;from&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;uri&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;direct:get-by-isbn&lt;/span&gt;
      &lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;setHeader&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;CamelHttpMethod&lt;/span&gt;
            &lt;span class="na"&gt;constant&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;GET&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;log&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="na"&gt;message&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Fetching&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;book&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;with&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;ISBN:&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;${body}"&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;toD&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="na"&gt;uri&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://openlibrary.org/api/books?bibkeys=ISBN:${body}&amp;amp;format=json&amp;amp;jscmd=data"&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;convertBodyTo&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;String&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;log&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="na"&gt;message&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Book&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;data&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;received:&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;${body}"&lt;/span&gt;

&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;route&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;search-books&lt;/span&gt;
    &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Search for books by title&lt;/span&gt;
    &lt;span class="na"&gt;from&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;uri&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;direct:search-books&lt;/span&gt;
      &lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;setHeader&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;CamelHttpMethod&lt;/span&gt;
            &lt;span class="na"&gt;constant&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;GET&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;log&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="na"&gt;message&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Searching&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;for&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;books&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;with&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;query:&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;${body}"&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;toD&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="na"&gt;uri&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://openlibrary.org/search.json?q=${body}&amp;amp;limit=5"&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;convertBodyTo&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;String&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;log&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="na"&gt;message&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Search&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;results&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;received:&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;${body}"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is pure Camel — nothing AI-specific here. The routes leverage Camel's &lt;code&gt;direct&lt;/code&gt; component for triggering and the &lt;code&gt;http&lt;/code&gt; component for external API calls. The beauty is that &lt;strong&gt;most Camel routes can become AI tools&lt;/strong&gt; with minimal modification — typically just exposing a &lt;code&gt;direct:&lt;/code&gt; endpoint and adding a wanaku-rules mapping.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Tip:&lt;/strong&gt; You can use a visual editor such as &lt;a href="https://kaoto.io" rel="noopener noreferrer"&gt;Kaoto&lt;/a&gt; or &lt;a href="https://github.com/apache/camel-karavan" rel="noopener noreferrer"&gt;Camel Karavan&lt;/a&gt; to design and edit Camel routes, rather than hand-editing YAML.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  From Route ID to AI Tool
&lt;/h3&gt;

&lt;p&gt;Wanaku's CLI generates MCP tool definitions from route IDs:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;wanaku service expose &lt;span class="nt"&gt;--path&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;demo-catalog
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This scans each Camel route file and generates a corresponding &lt;code&gt;wanaku-rules.yaml&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Auto-generated Wanaku rules for books&lt;/span&gt;
&lt;span class="c1"&gt;# Generated by 'wanaku service expose'&lt;/span&gt;
&lt;span class="na"&gt;mcp&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;tools&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;get-book-by-isbn&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;route&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;get-book-by-isbn"&lt;/span&gt;
        &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Invoke&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;route&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;get-book-by-isbn&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;in&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;books"&lt;/span&gt;
        &lt;span class="na"&gt;properties&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;wanaku_body&lt;/span&gt;
            &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;string&lt;/span&gt;
            &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;The greeting message to send&lt;/span&gt;
            &lt;span class="na"&gt;required&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;search-books&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;route&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;search-books"&lt;/span&gt;
        &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Invoke&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;route&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;search-books&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;in&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;books"&lt;/span&gt;
        &lt;span class="na"&gt;properties&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;wanaku_body&lt;/span&gt;
            &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;string&lt;/span&gt;
            &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;The greeting message to send&lt;/span&gt;
            &lt;span class="na"&gt;required&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Notice the &lt;code&gt;wanaku_body&lt;/code&gt; property in each tool definition — this is a special argument that tells Wanaku to place the AI agent's input directly into the body of the Camel data exchange, rather than passing it as a parameter or header. This is what allows the routes above to reference &lt;code&gt;${body}&lt;/code&gt; in their &lt;code&gt;toD&lt;/code&gt; URIs and log messages.&lt;/p&gt;

&lt;p&gt;AI agents can now discover &lt;code&gt;get-book-by-isbn&lt;/code&gt; and &lt;code&gt;search-books&lt;/code&gt; as available tools and invoke them through the MCP protocol. Under the hood, Wanaku routes each request to the corresponding Camel &lt;code&gt;direct:&lt;/code&gt; endpoint, executes the route, and returns the result.&lt;/p&gt;

&lt;h3&gt;
  
  
  Leveraging Camel's Component Ecosystem
&lt;/h3&gt;

&lt;p&gt;One of Apache Camel's greatest strengths is its &lt;strong&gt;400+ components&lt;/strong&gt; covering everything from HTTP and databases to messaging systems, cloud services, and IoT protocols. Service Catalogs make this entire ecosystem available to AI agents.&lt;/p&gt;

&lt;p&gt;For example, the book search catalog declares its dependencies in &lt;code&gt;books.dependencies.txt&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;org.apache.camel:camel-http:4.18.2
org.apache.camel:camel-jackson:4.18.2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This declarative approach means that as soon as you deploy the catalog, Wanaku ensures the necessary Camel components are available at runtime. AI agents get instant access to HTTP clients, JSON transformations, and more — all powered by Camel.&lt;/p&gt;

&lt;h2&gt;
  
  
  Service Templates: Parameterized Camel Integrations
&lt;/h2&gt;

&lt;p&gt;Building on Service Catalogs, &lt;strong&gt;Service Templates&lt;/strong&gt; introduce parameterization using &lt;strong&gt;Camel Property Placeholders&lt;/strong&gt;. This allows you to create reusable integration blueprints that users can customize without touching YAML or Java code.&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works: Camel Property Placeholders
&lt;/h3&gt;

&lt;p&gt;Service Templates use Camel's native &lt;code&gt;{{property}}&lt;/code&gt; syntax to mark configurable values. For example, here's a Kafka template that sets up request/reply messaging:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;kafka/service.properties:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight properties"&gt;&lt;code&gt;&lt;span class="py"&gt;kafka.brokers&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;{{kafka.brokers}}&lt;/span&gt;
&lt;span class="py"&gt;kafka.request.topic&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;{{kafka.request.topic}}&lt;/span&gt;
&lt;span class="py"&gt;kafka.response.topic&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;{{kafka.response.topic}}&lt;/span&gt;
&lt;span class="py"&gt;kafka.reply.timeout-ms&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;{{kafka.reply.timeout-ms}}&lt;/span&gt;
&lt;span class="py"&gt;kafka.response.group-id&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;{{kafka.response.group-id}}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;kafka/kafka.camel.yaml:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;route&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;kafka-request-reply&lt;/span&gt;
    &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Send a Kafka request and wait for the correlated reply&lt;/span&gt;
    &lt;span class="na"&gt;from&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;uri&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;direct:wanaku&lt;/span&gt;
      &lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;to&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="na"&gt;uri&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;kafka:{{kafka.request.topic}}&lt;/span&gt;
            &lt;span class="na"&gt;parameters&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
              &lt;span class="na"&gt;brokers&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;{{kafka.brokers}}"&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;pollEnrich&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="na"&gt;timeout&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;{{kafka.reply.timeout-ms}}"&lt;/span&gt;
            &lt;span class="na"&gt;expression&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
              &lt;span class="na"&gt;simple&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
                &lt;span class="na"&gt;expression&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;seda:kafka-replies"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When a user instantiates this template, Wanaku generates a ready-to-deploy Service Catalog and works with Apache Camel to substitutes those placeholders. The resulting Camel routes are fully functional — no manual editing required. Users can browse and instantiate templates via the Service Catalog page in the Wanaku Admin UI.&lt;/p&gt;

&lt;h3&gt;
  
  
  Built-in Templates for Common Integrations
&lt;/h3&gt;

&lt;p&gt;Wanaku 0.1.1 ships with several built-in Service Templates that showcase Apache Camel's versatility:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;kafka-tool&lt;/strong&gt; — Request/reply messaging with manual correlation using &lt;code&gt;camel-kafka&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;jms-tool&lt;/strong&gt; — ActiveMQ Artemis messaging with &lt;code&gt;camel-jms&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;github-pullrequest-source-tool&lt;/strong&gt; — Fetch GitHub PR data using &lt;code&gt;camel-http&lt;/code&gt; and REST APIs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;jira-add-comment-tool, jira-add-issue-tool, jira-update-issue-tool&lt;/strong&gt; — Jira integration using &lt;code&gt;camel-jira&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;mail-sink-tool&lt;/strong&gt; — Send emails via SMTP using &lt;code&gt;camel-mail&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;rabbitmq-tool&lt;/strong&gt; — RabbitMQ messaging with &lt;code&gt;camel-rabbitmq&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;telegram-sink-tool&lt;/strong&gt; — Send Telegram messages using &lt;code&gt;camel-telegram&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ftp-resource, sftp-resource&lt;/strong&gt; — File transfer with &lt;code&gt;camel-ftp&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;aws-s3-resource, azure-files-resource&lt;/strong&gt; — Cloud storage access with &lt;code&gt;camel-aws-s3&lt;/code&gt; and &lt;code&gt;camel-azure-files&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each template demonstrates how Camel components handle the heavy lifting — protocol handling, connection management, error recovery — while Wanaku exposes the result as a clean, AI-friendly tool.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Camel Integration Capability
&lt;/h2&gt;

&lt;p&gt;Service Catalogs and Templates provide a declarative way to package Camel routes, but something needs to actually &lt;em&gt;run&lt;/em&gt; them. That's the &lt;strong&gt;Camel Integration Capability&lt;/strong&gt; — a standalone runtime service that dynamically loads and executes Camel routes on behalf of AI agents.&lt;/p&gt;

&lt;p&gt;This capability:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Accepts Camel route YAML files deployed via the Wanaku CLI, REST API, or Kubernetes operator&lt;/li&gt;
&lt;li&gt;Loads the routes into a Camel context&lt;/li&gt;
&lt;li&gt;Exposes route IDs as MCP tools&lt;/li&gt;
&lt;li&gt;Handles route lifecycle (start, stop, update)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The Camel Integration Capability is a plain Java application built using:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Apache Camel Main&lt;/strong&gt; — for lightweight, standalone Camel route execution&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Wanaku Capabilities Java SDK&lt;/strong&gt; — for MCP protocol integration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After deploying a Service Catalog, you start the capability service separately:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;java &lt;span class="nt"&gt;-jar&lt;/span&gt; camel-integration-capability-main-0.1.1-jar-with-dependencies.jar &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--registration-url&lt;/span&gt; http://localhost:8080 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--registration-announce-address&lt;/span&gt; localhost &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--grpc-port&lt;/span&gt; 9190 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--name&lt;/span&gt; books &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--client-id&lt;/span&gt; wanaku-service &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--service-catalog&lt;/span&gt; demo-catalog &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--service-catalog-system&lt;/span&gt; books &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--fail-fast&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The capability service registers with the Wanaku router and the tools become available to AI agents within seconds. Download the JAR from the &lt;a href="https://github.com/wanaku-ai/camel-integration-capability/releases/tag/v0.1.1" rel="noopener noreferrer"&gt;Camel Integration Capability releases page&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  CLI Workflow: From Init to Deploy
&lt;/h2&gt;

&lt;p&gt;With Wanaku running locally, the workflow for building a Service Catalog is straightforward:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Step 1: Initialize a new service catalog&lt;/span&gt;
wanaku service init &lt;span class="nt"&gt;--name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;demo-catalog &lt;span class="nt"&gt;--services&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;books

&lt;span class="c"&gt;# Step 2: Edit the Camel routes (books/books.camel.yaml)&lt;/span&gt;
&lt;span class="c"&gt;# Define your integration logic using Camel YAML DSL&lt;/span&gt;

&lt;span class="c"&gt;# Step 3: Add dependencies (books/books.dependencies.txt)&lt;/span&gt;
&lt;span class="c"&gt;# List the Camel components your routes need&lt;/span&gt;

&lt;span class="c"&gt;# Step 4: Generate MCP tool definitions from route IDs&lt;/span&gt;
wanaku service expose &lt;span class="nt"&gt;--path&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;demo-catalog

&lt;span class="c"&gt;# Step 5: Deploy to the Wanaku router&lt;/span&gt;
wanaku service deploy &lt;span class="nt"&gt;--path&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;demo-catalog &lt;span class="nt"&gt;--host&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;http://localhost:8080

&lt;span class="c"&gt;# Step 6: Start the Camel Integration Capability to run the routes&lt;/span&gt;
&lt;span class="c"&gt;# (see section above for the full command)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For Service Templates, you can also package and deploy reusable blueprints:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Package a template into a ZIP archive&lt;/span&gt;
wanaku service package &lt;span class="nt"&gt;--path&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;weather-template &lt;span class="nt"&gt;-o&lt;/span&gt; weather-template.zip

&lt;span class="c"&gt;# Deploy the template to the router&lt;/span&gt;
wanaku service template deploy &lt;span class="nt"&gt;--file&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;weather-template.zip &lt;span class="nt"&gt;--host&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;http://localhost:8080
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This workflow mirrors the familiar Camel development experience — define routes, package, deploy — but with MCP tooling baked in.&lt;/p&gt;

&lt;h3&gt;
  
  
  Testing Your Tools
&lt;/h3&gt;

&lt;p&gt;Once deployed, you can verify your tools are registered:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;wanaku tools list
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should see output like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;name             namespace type  uri                      labels
get-book-by-isbn default   books books://get-book-by-isbn {}
search-books     default   books books://search-books     {}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use the &lt;a href="https://github.com/modelcontextprotocol/inspector" rel="noopener noreferrer"&gt;MCP Inspector&lt;/a&gt; to test your tools interactively:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx @modelcontextprotocol/inspector
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Kubernetes-Native Deployment
&lt;/h2&gt;

&lt;p&gt;Service Catalogs are environment-agnostic: deploy locally via &lt;code&gt;wanaku service deploy&lt;/code&gt; or to Kubernetes via the operator and CRDs.&lt;/p&gt;

&lt;p&gt;For production use, Wanaku includes a &lt;strong&gt;Kubernetes Operator&lt;/strong&gt;  that manages Service Catalogs declaratively:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;apiVersion&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;wanaku.ai/v1alpha1"&lt;/span&gt;
&lt;span class="na"&gt;kind&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;WanakuServiceCatalog&lt;/span&gt;
&lt;span class="na"&gt;metadata&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;my-service-catalogs&lt;/span&gt;
&lt;span class="na"&gt;spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;routerRef&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;wanaku-dev&lt;/span&gt;
  &lt;span class="na"&gt;catalogs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;demo-catalog&lt;/span&gt;
      &lt;span class="na"&gt;configMapRef&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;demo-catalog-data&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The operator reads the ConfigMap containing the packaged Service Catalog and deploys it to the router automatically. This approach aligns with GitOps practices and integrates seamlessly with existing Kubernetes workflows.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Service Catalogs and Templates Matter
&lt;/h2&gt;

&lt;p&gt;Before Wanaku 0.1.1, exposing a Camel route to an AI agent required custom REST API wrappers, manual MCP tool definitions, dependency management, and container orchestration. Service Catalogs collapse this into a single &lt;code&gt;wanaku service init&lt;/code&gt; + &lt;code&gt;wanaku service deploy&lt;/code&gt; workflow. Service Templates go further — turning a Kafka integration that would take hundreds of lines of boilerplate into a five-property form.&lt;/p&gt;

&lt;p&gt;This unlocks the full power of Apache Camel for AI agents:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Camel's Integration Patterns&lt;/strong&gt; — Enterprise Integration Patterns (EIPs), content-based routing, data transformation, error handling — all become accessible to AI agents without custom API wrappers.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Protocol Diversity&lt;/strong&gt; — AI agents can interact with systems that don't expose modern REST APIs. Need to query an AS/400 via JT400? Poll an FTP server? Consume from a legacy JMS queue? Camel handles it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Data Format Flexibility&lt;/strong&gt; — Camel's type converters and data formats (Jackson, JAXB, CSV, Avro) mean AI agents can consume and produce data in the formats enterprise systems expect.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Error Handling &amp;amp; Resilience&lt;/strong&gt; — Camel's error handlers, retry policies, and dead letter channels ensure robust integrations even when AI agents interact with flaky external systems.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Observability&lt;/strong&gt; — Camel's built-in metrics, logging, and tracing integrate with standard observability stacks (Prometheus, Grafana, Jaeger), making it easy to monitor AI-driven integrations.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;p&gt;Try Wanaku 0.1.1 today:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Download the CLI:&lt;/strong&gt; &lt;a href="https://github.com/wanaku-ai/wanaku/releases/" rel="noopener noreferrer"&gt;https://github.com/wanaku-ai/wanaku/releases/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Learn Wanaku from the ground up:&lt;/strong&gt; &lt;a href="https://wanaku.ai/docs/demos/" rel="noopener noreferrer"&gt;https://wanaku.ai/docs/demos/&lt;/a&gt; — step-by-step guides that take you from local experimentation all the way to production deployment on the cloud

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://wanaku.ai/docs/demos/wanaku-demos-current/2.02-service-catalogs/README.html" rel="noopener noreferrer"&gt;Demo 2.02 — Service Catalogs&lt;/a&gt;: Build and deploy a book search catalog step by step&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://wanaku.ai/docs/demos/wanaku-demos-current/2.03-service-templates/README.html" rel="noopener noreferrer"&gt;Demo 2.03 — Service Templates&lt;/a&gt;: Create and instantiate reusable integration blueprints&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Read the Service Catalogs Guide:&lt;/strong&gt; &lt;a href="https://wanaku.ai/docs/version/wanaku-current/docs/service-catalogs.html" rel="noopener noreferrer"&gt;Service Catalogs Documentation&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Read the Service Templates Guide:&lt;/strong&gt; &lt;a href="https://wanaku.ai/docs/version/wanaku-current/docs/service-templates.html" rel="noopener noreferrer"&gt;Service Templates Documentation&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What's Next?
&lt;/h2&gt;

&lt;p&gt;We're just getting started. Future releases will bring:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Simplified Camel Integration&lt;/strong&gt; — a &lt;code&gt;WanakuCamelRoute&lt;/code&gt; CRD that lets you deploy Camel routes directly on Kubernetes without manually packaging Service Catalogs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hosted Agent Builder&lt;/strong&gt; — a built-in UI and API for assembling AI agents from registered tools, selecting LLM providers, and deploying them — all from the Wanaku Admin UI&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Embedded Kaoto designer&lt;/strong&gt; — visual Camel route editing directly in the admin UI, so you can design integration routes without leaving the browser&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Code Execution Engine on Kubernetes&lt;/strong&gt; — operator support for deploying the Camel Code Execution Engine alongside the router&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;More Service Templates&lt;/strong&gt; — pre-built templates for SQL databases, AWS SQS, vector search (Qdrant, Pinecone), LangChain4j AI services, and more&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Join the Community
&lt;/h2&gt;

&lt;p&gt;Wanaku is open source (Apache License 2.0) and built for the Apache Camel community. We'd love your feedback, contributions, and use cases:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/wanaku-ai/wanaku" rel="noopener noreferrer"&gt;https://github.com/wanaku-ai/wanaku&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Issues:&lt;/strong&gt; &lt;a href="https://github.com/wanaku-ai/wanaku/issues" rel="noopener noreferrer"&gt;https://github.com/wanaku-ai/wanaku/issues&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By bringing Apache Camel's 20+ years of integration expertise to the AI agent ecosystem, we're making it easier than ever to connect AI to the real world — the messy, heterogeneous, protocol-diverse world that enterprises actually operate in.&lt;/p&gt;

&lt;p&gt;Happy integrating!&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>mcp</category>
      <category>camel</category>
    </item>
    <item>
      <title>Ebook: Camel Passo a Passo</title>
      <dc:creator>Otavio Rodolfo Piske</dc:creator>
      <pubDate>Sat, 28 Nov 2020 16:02:49 +0000</pubDate>
      <link>https://dev.to/orpiske/ebook-camel-passo-a-passo-1gh1</link>
      <guid>https://dev.to/orpiske/ebook-camel-passo-a-passo-1gh1</guid>
      <description>&lt;p&gt;Começando meu primeiro post no dev.to para compartilhar o link de um ebook, em português, sobre &lt;a href="https://www.angusyoung.org/2020/11/28/ebook-gratis-camel-passo-a-passo/"&gt;integração de sistemas com Apache Camel&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>java</category>
      <category>portugues</category>
      <category>camel</category>
      <category>cloud</category>
    </item>
  </channel>
</rss>
