blog: 3 Ways to Integrate Odoo and Hermes Agent (corrected — n8n pipeline is method 3)
This commit is contained in:
+1
-1
@@ -6,7 +6,7 @@
|
|||||||
"area": "guide",
|
"area": "guide",
|
||||||
"agent": "hermes",
|
"agent": "hermes",
|
||||||
"headline": "3 Ways to Integrate Odoo and Hermes Agent",
|
"headline": "3 Ways to Integrate Odoo and Hermes Agent",
|
||||||
"teaser": "Direct XML-RPC, MCP server, or custom Hermes skill \u2014 three proven approaches to connect Odoo with Hermes Agent. Setup time, trade-offs, and when to use each.",
|
"teaser": "Direct XML-RPC API, Odoo MCP CLI client, or Hermes-to-n8n-to-Odoo pipeline \u2014 three proven approaches to connect Odoo with Hermes Agent. Trade-offs and when to use each.",
|
||||||
"link": "blog/posts/three-ways-integrate-odoo-hermes.html"
|
"link": "blog/posts/three-ways-integrate-odoo-hermes.html"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -6,11 +6,11 @@
|
|||||||
<meta name="robots" content="index, follow" />
|
<meta name="robots" content="index, follow" />
|
||||||
<link rel="canonical" href="https://derez.ai/blog/posts/three-ways-integrate-odoo-hermes.html" />
|
<link rel="canonical" href="https://derez.ai/blog/posts/three-ways-integrate-odoo-hermes.html" />
|
||||||
<title>3 Ways to Integrate Odoo and Hermes Agent — derez.ai Blog</title>
|
<title>3 Ways to Integrate Odoo and Hermes Agent — derez.ai Blog</title>
|
||||||
<meta name="description" content="Direct XML-RPC, MCP server, or custom Hermes skill — three proven approaches to connect Odoo with Hermes Agent. Setup time, trade-offs, and when to use each." />
|
<meta name="description" content="Direct XML-RPC API, Odoo MCP CLI client, or Hermes-to-n8n-to-Odoo pipeline — three proven approaches to connect Odoo with Hermes Agent. Trade-offs and when to use each." />
|
||||||
<meta property="og:type" content="article" />
|
<meta property="og:type" content="article" />
|
||||||
<meta property="og:url" content="https://derez.ai/blog/posts/three-ways-integrate-odoo-hermes.html" />
|
<meta property="og:url" content="https://derez.ai/blog/posts/three-ways-integrate-odoo-hermes.html" />
|
||||||
<meta property="og:title" content="3 Ways to Integrate Odoo and Hermes Agent" />
|
<meta property="og:title" content="3 Ways to Integrate Odoo and Hermes Agent" />
|
||||||
<meta property="og:description" content="Direct XML-RPC, MCP server, or custom Hermes skill — three proven approaches to connect Odoo with Hermes Agent. Setup time, trade-offs, and when to use each." />
|
<meta property="og:description" content="Direct XML-RPC API, Odoo MCP CLI client, or Hermes-to-n8n-to-Odoo pipeline — three proven approaches to connect Odoo with Hermes Agent. Trade-offs and when to use each." />
|
||||||
<meta name="twitter:card" content="summary_large_image" />
|
<meta name="twitter:card" content="summary_large_image" />
|
||||||
<meta name="twitter:title" content="3 Ways to Integrate Odoo and Hermes Agent" />
|
<meta name="twitter:title" content="3 Ways to Integrate Odoo and Hermes Agent" />
|
||||||
<script defer data-domain="derez.ai" src="https://plausible.odoo4projects.com/js/script.file-downloads.outbound-links.tagged-events.js"></script>
|
<script defer data-domain="derez.ai" src="https://plausible.odoo4projects.com/js/script.file-downloads.outbound-links.tagged-events.js"></script>
|
||||||
@@ -45,8 +45,8 @@
|
|||||||
.method-card h3 { margin-top: 0; }
|
.method-card h3 { margin-top: 0; }
|
||||||
.method-badge { display: inline-block; font-size: 0.7rem; font-weight: 700; padding: 2px 8px; border-radius: 4px; text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 8px; }
|
.method-badge { display: inline-block; font-size: 0.7rem; font-weight: 700; padding: 2px 8px; border-radius: 4px; text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 8px; }
|
||||||
.badge-fast { background: #00ff88; color: #000; }
|
.badge-fast { background: #00ff88; color: #000; }
|
||||||
.badge-standard { background: #f472b6; color: #000; }
|
.badge-mcp { background: #f472b6; color: #000; }
|
||||||
.badge-flexible { background: #ffaa00; color: #000; }
|
.badge-n8n { background: #ffaa00; color: #000; }
|
||||||
.method-stats { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin: 12px 0; }
|
.method-stats { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin: 12px 0; }
|
||||||
.method-stat { font-size: 0.85rem; color: #999; }
|
.method-stat { font-size: 0.85rem; color: #999; }
|
||||||
.method-stat span { color: #e0e0f0; font-weight: 600; }
|
.method-stat span { color: #e0e0f0; font-weight: 600; }
|
||||||
@@ -72,72 +72,65 @@
|
|||||||
<span class="area-tag">guide</span>
|
<span class="area-tag">guide</span>
|
||||||
<span class="chip-tag">odoo</span>
|
<span class="chip-tag">odoo</span>
|
||||||
<span class="chip-tag">hermes</span>
|
<span class="chip-tag">hermes</span>
|
||||||
|
<span class="chip-tag">n8n</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
Odoo is the most popular open-source ERP in the world — CRM, sales, inventory, accounting, all in one system.
|
Odoo is the most popular open-source ERP — CRM, sales, inventory, accounting, all in one system.
|
||||||
Hermes Agent is an open-source AI agent framework. Put them together and your agent can query customer records,
|
Hermes Agent is an open-source AI agent framework. Put them together and your agent can query customer records,
|
||||||
check inventory levels, create leads, generate invoices, and pull sales reports — all through natural language.
|
check inventory levels, create leads, generate invoices, and pull sales reports — all through natural language.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
There are <strong>three proven ways</strong> to connect the two. Each has different trade-offs in setup speed,
|
There are <strong>three proven ways</strong> to connect the two. Each offers a different balance of speed,
|
||||||
flexibility, and ongoing maintenance. This guide walks through all three so you can pick the right one.
|
determinism, and architectural flexibility.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div class="pro-tip">
|
|
||||||
<p><strong>Already know which approach you want?</strong> The detailed speed runs are here:
|
|
||||||
<a href="https://derez.ai/blog/posts/speed-run-odoo-community-agent.html">Direct API</a>,
|
|
||||||
<a href="https://derez.ai/blog/posts/speed-run-odoo-mcp.html">MCP server</a>, and
|
|
||||||
<a href="https://derez.ai/blog/posts/direct-odoo-api-vs-mcp.html">Direct vs MCP comparison</a>.</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<h2>At a Glance</h2>
|
<h2>At a Glance</h2>
|
||||||
|
|
||||||
<table class="data-table">
|
<table class="data-table">
|
||||||
<tr>
|
<tr>
|
||||||
<th>Approach</th>
|
<th>Approach</th>
|
||||||
<th>Setup Time</th>
|
<th>Setup</th>
|
||||||
<th>Best For</th>
|
<th>Best For</th>
|
||||||
<th>Components</th>
|
<th>Determinism</th>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><strong>1. Direct API</strong></td>
|
<td><strong>1. Direct XML-RPC API</strong></td>
|
||||||
<td>~3 minutes</td>
|
<td>~3 min</td>
|
||||||
<td>Single-ERP setups, production</td>
|
<td>Simple queries, quick demos</td>
|
||||||
<td>Hermes + Odoo only</td>
|
<td>Low — LLM decides the call</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><strong>2. MCP Server</strong></td>
|
<td><strong>2. Odoo MCP CLI Client</strong></td>
|
||||||
<td>~5 minutes</td>
|
<td>~5 min</td>
|
||||||
<td>Multi-tool agents, standardization</td>
|
<td>Multi-tool agents, MCP stacks</td>
|
||||||
<td>Hermes + mcp-server-odoo + Odoo</td>
|
<td>Medium — tool-bound</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><strong>3. Custom Skill</strong></td>
|
<td><strong>3. Hermes → n8n → Odoo</strong></td>
|
||||||
<td>~15 minutes</td>
|
<td>~10 min</td>
|
||||||
<td>Complex workflows, custom logic</td>
|
<td>Deterministic business processes</td>
|
||||||
<td>Hermes + custom SKILL.md + Odoo</td>
|
<td><strong>High — step-by-step workflows</strong></td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<!-- METHOD 1 -->
|
<!-- METHOD 1 -->
|
||||||
<div class="method-card">
|
<div class="method-card">
|
||||||
<div class="method-badge badge-fast">⚡ Fastest — 3 min</div>
|
<div class="method-badge badge-fast">⚡ Fastest — 3 min</div>
|
||||||
<h3>Method 1: Direct API Integration (XML-RPC)</h3>
|
<h3>Method 1: Direct XML-RPC API</h3>
|
||||||
<div class="method-stats">
|
<div class="method-stats">
|
||||||
<div class="method-stat">Setup: <span>~3 minutes</span></div>
|
<div class="method-stat">Setup: <span>~3 minutes</span></div>
|
||||||
<div class="method-stat">Latency: <span>1 hop (agent → Odoo)</span></div>
|
<div class="method-stat">Latency: <span>1 hop</span></div>
|
||||||
<div class="method-stat">Security: <span>Dedicated Odoo user</span></div>
|
<div class="method-stat">Determinism: <span>Low — LLM-driven</span></div>
|
||||||
<div class="method-stat">Maintenance: <span>None</span></div>
|
<div class="method-stat">Best for: <span>Simple queries, demos</span></div>
|
||||||
</div>
|
</div>
|
||||||
<p>The simplest approach. You create a dedicated Odoo user with restricted permissions, paste the connection details into Hermes, and your agent calls the Odoo XML-RPC API directly.</p>
|
<p>The simplest approach. You create a dedicated Odoo user with restricted permissions, paste the connection details into Hermes, and your agent calls the Odoo XML-RPC API directly. Hermes has built-in Odoo tool support — once configured, the agent can search, read, create, and update records on any Odoo model.</p>
|
||||||
<p><strong>How it works:</strong> Hermes Agent has built-in Odoo tool support. When you configure the connection once, the agent can <code>search</code>, <code>read</code>, <code>create</code>, <code>write</code>, and <code>unlink</code> records on any Odoo model — CRM leads, partners, products, sales orders, invoices, and more.</p>
|
|
||||||
|
|
||||||
<h4>Setup</h4>
|
<h4>Setup</h4>
|
||||||
<ol>
|
<ol>
|
||||||
<li><strong>Create an Odoo API key</strong> — in your Odoo instance, generate a new API key under Settings → Users → Technical</li>
|
<li>Generate an Odoo API key (Settings → Users → Technical)</li>
|
||||||
<li><strong>Set the Hermes Odoo config</strong> — Add your Odoo URL, database, username, and API key to Hermes' <code>config.yaml</code></li>
|
<li>Add the connection to Hermes' <code>config.yaml</code></li>
|
||||||
<li><strong>Start Hermes</strong> — The Odoo tools are automatically available in every session</li>
|
<li>Start Hermes — Odoo tools are available automatically</li>
|
||||||
</ol>
|
</ol>
|
||||||
<pre><code># Hermes config.yaml snippet
|
<pre><code># Hermes config.yaml snippet
|
||||||
odoo:
|
odoo:
|
||||||
@@ -147,125 +140,111 @@ odoo:
|
|||||||
api_key: "your-api-key"
|
api_key: "your-api-key"
|
||||||
readonly: true</code></pre>
|
readonly: true</code></pre>
|
||||||
|
|
||||||
<h4>When to use this</h4>
|
<p><strong>When to use:</strong> Quick queries, one-off lookups, demos, and prototyping. The LLM decides which API calls to make, so it's fast but the agent may chain calls in unexpected ways.</p>
|
||||||
<ul>
|
|
||||||
<li>Hermes Agent is your only tool and Odoo is your only backend</li>
|
|
||||||
<li>You want the fastest possible setup</li>
|
|
||||||
<li>Lowest latency — the agent talks directly to Odoo</li>
|
|
||||||
<li>Full model access — the agent can work with any Odoo model your user has permissions for</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<p><strong>Deep dive:</strong> <a href="https://derez.ai/blog/posts/speed-run-odoo-community-agent.html">Speed Run: Create an Odoo Community Agent from Zero</a></p>
|
<p><strong>Deep dive:</strong> <a href="https://derez.ai/blog/posts/speed-run-odoo-community-agent.html">Speed Run: Create an Odoo Community Agent from Zero</a></p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- METHOD 2 -->
|
<!-- METHOD 2 -->
|
||||||
<div class="method-card">
|
<div class="method-card">
|
||||||
<div class="method-badge badge-standard">🚀 Standard — 5 min</div>
|
<div class="method-badge badge-mcp">🚀 MCP — 5 min</div>
|
||||||
<h3>Method 2: MCP Server (Model Context Protocol)</h3>
|
<h3>Method 2: Odoo MCP CLI Client</h3>
|
||||||
<div class="method-stats">
|
<div class="method-stats">
|
||||||
<div class="method-stat">Setup: <span>~5 minutes</span></div>
|
<div class="method-stat">Setup: <span>~5 minutes</span></div>
|
||||||
<div class="method-stat">Latency: <span>2 hops (agent → MCP → Odoo)</span></div>
|
<div class="method-stat">Latency: <span>2 hops</span></div>
|
||||||
<div class="method-stat">Security: <span>MCP transport layer</span></div>
|
<div class="method-stat">Determinism: <span>Medium — tool-bound</span></div>
|
||||||
<div class="method-stat">Maintenance: <span>Server process</span></div>
|
<div class="method-stat">Best for: <span>Multi-tool setups</span></div>
|
||||||
</div>
|
</div>
|
||||||
<p>The MCP approach inserts a translation layer between Hermes and Odoo. The <a href="https://github.com/ivnvxd/mcp-server-odoo">mcp-server-odoo</a> project (315+ GitHub stars, actively maintained) exposes Odoo models as MCP tools that Hermes can discover and call.</p>
|
<p>The <a href="https://github.com/ivnvxd/mcp-server-odoo">mcp-server-odoo</a> project (315+ GitHub stars) exposes Odoo as a Model Context Protocol server. You run it as a CLI process, register it with Hermes via <code>hermes mcp add</code>, and the agent discovers Odoo tools automatically — <code>search_records</code>, <code>create_record</code>, <code>read_record</code>, and more.</p>
|
||||||
<p><strong>How it works:</strong> You run the MCP server locally on the same machine as Hermes. It listens on an HTTP port and translates MCP tool calls into Odoo XML-RPC requests. Hermes discovers the available tools automatically when you register the server.</p>
|
|
||||||
|
|
||||||
<h4>Setup</h4>
|
<h4>Setup</h4>
|
||||||
<ol>
|
<ol>
|
||||||
<li><strong>Clone the server</strong> — <code>git clone https://github.com/ivnvxd/mcp-server-odoo.git</code></li>
|
<li>Clone the server: <code>git clone https://github.com/ivnvxd/mcp-server-odoo.git</code></li>
|
||||||
<li><strong>Set environment variables</strong> — URL, database, username, API key</li>
|
<li>Set environment variables (URL, db, user, API key)</li>
|
||||||
<li><strong>Start the server</strong> — <code>uvx mcp-server-odoo</code> (port 8000, streamable-http transport)</li>
|
<li>Start: <code>uvx mcp-server-odoo</code></li>
|
||||||
<li><strong>Register with Hermes</strong> — <code>hermes mcp add odoo --url http://localhost:8000/mcp</code></li>
|
<li>Register: <code>hermes mcp add odoo --url http://localhost:8000/mcp</code></li>
|
||||||
<li><strong>Start Hermes</strong> — Odoo tools appear automatically</li>
|
<li>Start Hermes — tools appear automatically</li>
|
||||||
</ol>
|
</ol>
|
||||||
<pre><code>#!/usr/bin/env bash
|
<pre><code>#!/usr/bin/env bash
|
||||||
export ODOO_URL="https://your-instance.odoo4projects.com"
|
export ODOO_URL="https://your-instance.odoo4projects.com"
|
||||||
export ODOO_DB="your-database"
|
export ODOO_DB="your-database"
|
||||||
export ODOO_USER="agent@company.com"
|
export ODOO_USER="agent@company.com"
|
||||||
export ODOO_API_KEY="your-api-key"
|
export ODOO_API_KEY="your...port ODOO_READONLY=1
|
||||||
export ODOO_READONLY=1
|
|
||||||
export ODOO_MCP_TRANSPORT=streamable-http
|
export ODOO_MCP_TRANSPORT=streamable-http
|
||||||
export ODOO_MCP_PORT=8000
|
export ODOO_MCP_PORT=8000
|
||||||
export ODOO_YOLO=read
|
export ODOO_YOLO=read
|
||||||
|
|
||||||
uvx mcp-server-odoo</code></pre>
|
uvx mcp-server-odoo</code></pre>
|
||||||
|
|
||||||
<h4>When to use this</h4>
|
<p><strong>When to use:</strong> You want a standardized MCP protocol for all tool connections. If Hermes already talks to GitHub, Slack, or Notion via MCP, Odoo fits right into the same stack.</p>
|
||||||
<ul>
|
|
||||||
<li>Your agent connects to multiple tools (Odoo + GitHub + Slack + Notion)</li>
|
|
||||||
<li>You want a standardized protocol for all tool connections</li>
|
|
||||||
<li>You're already using MCP with other tools and want consistency</li>
|
|
||||||
<li>You need to connect Hermes to Odoo without modifying Hermes configuration</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<p><strong>Deep dive:</strong> <a href="https://derez.ai/blog/posts/speed-run-odoo-mcp.html">Speed Run: Connect Hermes Agent to Odoo via MCP</a></p>
|
<p><strong>Deep dive:</strong> <a href="https://derez.ai/blog/posts/speed-run-odoo-mcp.html">Speed Run: Connect Hermes Agent to Odoo via MCP</a></p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- METHOD 3 -->
|
<!-- METHOD 3 -->
|
||||||
<div class="method-card">
|
<div class="method-card">
|
||||||
<div class="method-badge badge-flexible">🔧 Flexible — 15 min</div>
|
<div class="method-badge badge-n8n">⚙️ Deterministic — 10 min</div>
|
||||||
<h3>Method 3: Custom Hermes Skill</h3>
|
<h3>Method 3: Hermes → n8n → Odoo (The Favorite)</h3>
|
||||||
<div class="method-stats">
|
<div class="method-stats">
|
||||||
<div class="method-stat">Setup: <span>~15 minutes</span></div>
|
<div class="method-stat">Setup: <span>~10 minutes</span></div>
|
||||||
<div class="method-stat">Latency: <span>1 hop (skill → Odoo)</span></div>
|
<div class="method-stat">Latency: <span>3 hops</span></div>
|
||||||
<div class="method-stat">Security: <span>Full control</span></div>
|
<div class="method-stat">Determinism: <span><strong>High — step-by-step</strong></span></div>
|
||||||
<div class="method-stat">Maintenance: <span>As needed</span></div>
|
<div class="method-stat">Best for: <span>Business processes</span></div>
|
||||||
</div>
|
</div>
|
||||||
<p>The most flexible approach. You write a custom Hermes skill — a <code>SKILL.md</code> file — that defines exactly how the agent communicates with Odoo. This gives you full control over the tools, prompts, and error handling.</p>
|
<p>This is the most powerful approach — and the personal favorite of the derez.ai founder. Instead of the agent calling Odoo directly, Hermes delegates Odoo operations to <strong>n8n workflows</strong> that execute deterministic, step-by-step business logic.</p>
|
||||||
<p><strong>How it works:</strong> Hermes skills are markdown files with YAML frontmatter and a structured body. Your Odoo skill defines tools like <code>search_leads</code>, <code>create_invoice</code>, or <code>check_inventory</code>. Each tool uses <code>terminal()</code> to make curl calls to the Odoo XML-RPC endpoint, and the agent calls these tools by name during the conversation.</p>
|
|
||||||
|
<p><strong>Why this matters:</strong> An LLM calling the Odoo API directly might chain calls in unexpected ways. It could create an invoice without checking if the customer exists, or skip a product validation step. With n8n as the middle layer, every business process is a <strong>deterministic workflow</strong> — the same inputs always produce the same outputs, in the same order.</p>
|
||||||
|
|
||||||
|
<p>Here's how it works:</p>
|
||||||
|
|
||||||
|
<ol>
|
||||||
|
<li>Hermes Agent connects to n8n (via the <a href="https://derez.ai/blog/posts/speed-run-n8n-skill.html">official n8n skill</a>)</li>
|
||||||
|
<li>n8n hosts pre-built Odoo workflows — each one a complete business process</li>
|
||||||
|
<li>Hermes calls an n8n webhook, which triggers the workflow</li>
|
||||||
|
<li>The workflow executes deterministic steps against the Odoo API</li>
|
||||||
|
<li>n8n returns the result to Hermes</li>
|
||||||
|
</ol>
|
||||||
|
|
||||||
|
<h4>Example: Create an Invoice</h4>
|
||||||
|
<p>A typical n8n workflow for invoice creation might look like this:</p>
|
||||||
|
<pre><code>Step 1: Receive webhook from Hermes (customer name, product SKU)
|
||||||
|
Step 2: Search Odoo for the customer by name
|
||||||
|
Step 3: If customer not found → return error to Hermes
|
||||||
|
Step 4: Search Odoo for the product by SKU
|
||||||
|
Step 5: If product not found → return error to Hermes
|
||||||
|
Step 6: Create invoice header with customer ID
|
||||||
|
Step 7: Add invoice line with product ID, quantity, price
|
||||||
|
Step 8: Confirm invoice creation
|
||||||
|
Step 9: Return invoice number and status to Hermes</code></pre>
|
||||||
|
<p>Every step is deterministic — the workflow always checks for the customer first, then the product, then creates the invoice. No LLM hallucination in the middle of a billing process.</p>
|
||||||
|
|
||||||
<h4>Setup</h4>
|
<h4>Setup</h4>
|
||||||
<ol>
|
<ol>
|
||||||
<li><strong>Create <code>SKILL.md</code></strong> — in <code>~/.hermes/skills/odoo/SKILL.md</code></li>
|
<li><strong>Install the n8n skill in Hermes</strong> — loads the n8n toolset: <code>hermes skills install n8n</code></li>
|
||||||
<li><strong>Define tools</strong> — Each tool has a name, description, parameter schema, and command template</li>
|
<li><strong>Build n8n workflows</strong> — create webhook-triggered workflows for each Odoo operation (create invoice, update lead, check inventory, generate report)</li>
|
||||||
<li><strong>Load the skill</strong> — Add it to your Hermes profile or load it in a session</li>
|
<li><strong>Configure webhooks</strong> — each workflow exposes a unique webhook URL that Hermes can call</li>
|
||||||
|
<li><strong>Start Hermes</strong> — tell your agent "create an invoice for [customer] with [product]" and it delegates to n8n</li>
|
||||||
</ol>
|
</ol>
|
||||||
<pre><code># Odoo Hermes Skill
|
|
||||||
|
|
||||||
## Tools
|
|
||||||
|
|
||||||
### search_leads
|
|
||||||
Search CRM leads with filters.
|
|
||||||
Parameters: domain (list), limit (int, optional)
|
|
||||||
Command: `curl -s "$ODOO_URL" -d '{"params": {"model": "crm.lead", "method": "search_read", "args": [{{domain}}], "kwargs": {"limit": {{limit|5}}}}}'`
|
|
||||||
|
|
||||||
### create_lead
|
|
||||||
Create a new CRM lead.
|
|
||||||
Parameters: name (string), email (string, optional), phone (string, optional)
|
|
||||||
Command: `curl -s "$ODOO_URL" -d '{"params": {"model": "crm.lead", "method": "create", "args": [{"name": "{{name}}", "email_from": "{{email}}", "phone": "{{phone}}"}]}}'`</code></pre>
|
|
||||||
|
|
||||||
<h4>When to use this</h4>
|
|
||||||
<ul>
|
|
||||||
<li>You need custom validation or business logic before/after Odoo calls</li>
|
|
||||||
<li>You want specific tool names and descriptions tailored to your workflow</li>
|
|
||||||
<li>You're building a specialized agent (e.g., "Odoo sales assistant")</li>
|
|
||||||
<li>You want to combine Odoo calls with processing steps (e.g., search → analyze → summarize)</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<div class="pro-tip">
|
<div class="pro-tip">
|
||||||
<p><strong>Pro Tip:</strong> The skill approach gives you the most control but also the most responsibility. You handle authentication, error handling, rate limiting, and API versioning yourself. For simpler setups, start with Method 1 or 2.</p>
|
<p><strong>Pro Tip:</strong> This is the derez.ai founder's recommended approach for production. The n8n layer gives you audit trails, error handling, retries, and human-in-the-loop approval for critical operations — none of which an LLM calling the API directly can guarantee.</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<p><strong>Deep dive:</strong> <a href="https://derez.ai/blog/posts/speed-run-n8n-skill.html">Speed Run: Connect Hermes Agent to n8n in 10 Minutes</a></p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<h2>Decision Guide</h2>
|
<h2>Decision Guide</h2>
|
||||||
<p>Not sure which to pick? Here's a quick flowchart:</p>
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><strong>New to Hermes + Odoo?</strong> → Start with <strong>Direct API</strong>. It's the fastest, simplest path.</li>
|
<li><strong>Quick lookup or demo?</strong> → <strong>Direct API</strong>. Configure once, ask anything.</li>
|
||||||
<li><strong>Already using MCP for other tools?</strong> → Use the <strong>MCP Server</strong>. One protocol, one mental model.</li>
|
<li><strong>Multi-tool agent on MCP?</strong> → <strong>Odoo MCP CLI</strong>. One protocol for everything.</li>
|
||||||
<li><strong>Need custom business logic?</strong> → Write a <strong>Custom Skill</strong>. Full control, no compromises.</li>
|
<li><strong>Production business process?</strong> → <strong>Hermes → n8n → Odoo</strong>. Deterministic workflows for invoices, orders, and data entry where every step must be predictable.</li>
|
||||||
<li><strong>Running in production?</strong> → <strong>Direct API</strong> with a dedicated read-only Odoo user. Fewest moving parts, best reliability.</li>
|
|
||||||
<li><strong>Building a demo or PoC?</strong> → <strong>Direct API</strong>. Three minutes from start to first query.</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<h2>Security Best Practices</h2>
|
<h2>Security Best Practices</h2>
|
||||||
<p>Whichever approach you choose, these rules apply:</p>
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><strong>Create a dedicated Odoo user</strong> for the agent — never use an admin or shared account</li>
|
<li><strong>Create a dedicated Odoo user</strong> for the agent — never use an admin account</li>
|
||||||
<li><strong>Use read-only access</strong> unless the agent needs to create or modify records</li>
|
<li><strong>Use read-only access</strong> unless the agent needs to create or modify records</li>
|
||||||
<li><strong>Restrict model access</strong> to only the Odoo models the agent needs (e.g., <code>crm.lead</code>, <code>res.partner</code>)</li>
|
<li><strong>Restrict model access</strong> to only the Odoo models the agent needs</li>
|
||||||
<li><strong>Rotate API keys</strong> periodically and revoke them if they leak</li>
|
<li><strong>For n8n, use Odoo node credentials</strong> with the most restrictive user possible</li>
|
||||||
<li><strong>Run the MCP server locally</strong> — never expose it to the public internet</li>
|
<li><strong>Rotate API keys</strong> periodically and revoke them immediately if they leak</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<h2>Comparison Table</h2>
|
<h2>Comparison Table</h2>
|
||||||
@@ -274,56 +253,47 @@ Command: `curl -s "$ODOO_URL" -d '{"params": {"model": "crm.lead", "method": "cr
|
|||||||
<tr>
|
<tr>
|
||||||
<th>Feature</th>
|
<th>Feature</th>
|
||||||
<th>Direct API</th>
|
<th>Direct API</th>
|
||||||
<th>MCP Server</th>
|
<th>MCP CLI</th>
|
||||||
<th>Custom Skill</th>
|
<th>n8n Pipeline</th>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>Setup time</td>
|
<td>Setup time</td>
|
||||||
<td>~3 min</td>
|
<td>~3 min</td>
|
||||||
<td>~5 min</td>
|
<td>~5 min</td>
|
||||||
<td>~15 min</td>
|
<td>~10 min</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>Extra processes</td>
|
<td>Components</td>
|
||||||
|
<td>Hermes + Odoo</td>
|
||||||
|
<td>Hermes + MCP server + Odoo</td>
|
||||||
|
<td>Hermes + n8n + Odoo</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Determinism</td>
|
||||||
|
<td>Low (LLM-driven)</td>
|
||||||
|
<td>Medium (tool-bound)</td>
|
||||||
|
<td><strong>High (step-by-step)</strong></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Audit trail</td>
|
||||||
<td>None</td>
|
<td>None</td>
|
||||||
<td>MCP server daemon</td>
|
|
||||||
<td>None</td>
|
<td>None</td>
|
||||||
|
<td><strong>Full (n8n executions)</strong></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>Tool discovery</td>
|
<td>Error handling</td>
|
||||||
<td>Built-in</td>
|
<td>LLM-dependent</td>
|
||||||
<td>Automatic (MCP list)</td>
|
<td>LLM-dependent</td>
|
||||||
<td>Defined in SKILL.md</td>
|
<td><strong>Built-in (retry, stop)</strong></td>
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>Custom workflows</td>
|
|
||||||
<td>Limited</td>
|
|
||||||
<td>Limited</td>
|
|
||||||
<td>Full control</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>Multi-tool agent</td>
|
|
||||||
<td>Requires per-tool setup</td>
|
|
||||||
<td>One protocol for all</td>
|
|
||||||
<td>Per-skill setup</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>Security model</td>
|
|
||||||
<td>Odoo user permissions</td>
|
|
||||||
<td>MCP transport + Odoo perms</td>
|
|
||||||
<td>Odoo user + skill code</td>
|
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>Best for</td>
|
<td>Best for</td>
|
||||||
<td>Production single-ERP</td>
|
<td>Simple queries, demos</td>
|
||||||
<td>Multi-tool MCP stacks</td>
|
<td>Multi-tool MCP stacks</td>
|
||||||
<td>Custom agent products</td>
|
<td>Invoice, order, data entry</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<h2>Can You Run Multiple Methods?</h2>
|
|
||||||
<p>Yes. Hermes Agent supports mixed setups — you can use the direct API for Odoo while connecting GitHub and Slack through MCP, <em>and</em> load a custom skill for Odoo-specific workflows on top of that. The methods are not mutually exclusive. Choose the right connection for each backend.</p>
|
|
||||||
|
|
||||||
<div class="cta-box">
|
<div class="cta-box">
|
||||||
<h3>Try It Yourself — First Month Free</h3>
|
<h3>Try It Yourself — First Month Free</h3>
|
||||||
<p>Deploy a Hermes Agent with any of these Odoo integrations. Use coupon code <strong>blog950</strong> for your first month free.</p>
|
<p>Deploy a Hermes Agent with any of these Odoo integrations. Use coupon code <strong>blog950</strong> for your first month free.</p>
|
||||||
@@ -332,9 +302,9 @@ Command: `curl -s "$ODOO_URL" -d '{"params": {"model": "crm.lead", "method": "cr
|
|||||||
|
|
||||||
<p style="margin-top:48px;padding-top:24px;border-top:1px solid #1a1a2e;font-size:0.85rem;color:#666;">
|
<p style="margin-top:48px;padding-top:24px;border-top:1px solid #1a1a2e;font-size:0.85rem;color:#666;">
|
||||||
<a href="https://derez.ai" style="color:#00f5ff">derez.ai</a> — Deploy your AI agent in 5 minutes. ·
|
<a href="https://derez.ai" style="color:#00f5ff">derez.ai</a> — Deploy your AI agent in 5 minutes. ·
|
||||||
<a href="https://derez.ai/blog/posts/speed-run-odoo-community-agent.html">Direct Odoo Speed Run</a> ·
|
<a href="https://derez.ai/blog/posts/speed-run-odoo-community-agent.html">Direct API Speed Run</a> ·
|
||||||
<a href="https://derez.ai/blog/posts/speed-run-odoo-mcp.html">MCP Speed Run</a> ·
|
<a href="https://derez.ai/blog/posts/speed-run-odoo-mcp.html">MCP Speed Run</a> ·
|
||||||
<a href="https://derez.ai/blog/posts/direct-odoo-api-vs-mcp.html">Direct vs MCP</a>
|
<a href="https://derez.ai/blog/posts/speed-run-n8n-skill.html">n8n Speed Run</a>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
|
|||||||
Reference in New Issue
Block a user