Intern, für Kail
Stand 2026-09-01 · Anlass: Partner-Sondierung mit Martin Petz, IT-Assistent · alles selbst geprüft, nichts aus zweiter Hand
Martin Petz betreut als IT-Dienstleister in Oberösterreich rund ein Dutzend Kleinstunternehmen und stellt gerade selbst auf Odoo um. Ein Teil seiner Kunden nutzt Odoo ebenfalls. Er sagt, die offene Schnittstelle koste bei ihm über tausend Euro extra, deshalb habe er nie etwas gebaut.
Kommt man an Odoo heran, ohne dass der Kunde auf den teuren Plan wechseln muss? Wenn ja, ist das ein wiederholbares Produkt in seinem Kundenstamm.
Wörtlich aus Odoos eigener Dokumentation:
"Access to data via the external API is only available on Custom Odoo pricing plans. Access to the external API is not available on One App Free or Standard plans."
Das betrifft alles, was von draußen hineinschreibt:
odoo_connection.py von ivnvxd gelesen: durchgehend xmlrpc.client, mit Modul über /mcp/xmlrpc/*, ohne Modul über /xmlrpc/2/*. Dieselbe Tür, kein Umweg.odoo.com/documentation/18.0/developer/reference/external_api.html · github.com/ivnvxd/mcp-server-odoo
Das Modul mcp_server auf apps.odoo.com (much. Consulting, OPL-1, Odoo 16 bis 19) behauptet auf seiner Produktseite Kompatibilität mit Odoo Online. Odoos eigene Doku sagt das Gegenteil:
"Odoo Online is incompatible with custom modules or modules from the Odoo Apps Store."
Auf dieser Widersprüchlichkeit wären wir fast aufgelaufen. Das Modul ist damit nur auf Odoo.sh oder eigenem Server ein Thema, dort aber ein fertiger Weg zu vollem Claude-Zugriff inklusive Rechteverwaltung pro Modell.
Aufbau: Odoo 18 Community lokal auf macOS gegen PostgreSQL 16, ohne Demodaten, Regel auf res.partner, Aktion Webhook gegen einen eigenen Empfänger. Der Code liegt in odoo/addons/base/models/ir_actions.py, Methode _run_action_webhook, also im Basismodul. base_automation ist LGPL-3 und hängt nur an base, digest, resource, mail, sms.
POST, Content-Type: application/json
{
"_action": "Send Webhook Notification(#180)",
"_id": 7,
"_model": "res.partner",
"create_date": "2026-09-01 10:28:56.360583",
"email": "testkunde@example.org",
"name": "Testkunde Webhook",
"phone": "+43 1 234567"
}
_model, _id und _action kommen immer mit, jedes weitere Feld des Datensatzes ist frei wählbar.
Im Quellcode steht requests.post(..., timeout=1), ausdrücklich als "send and forget" kommentiert. Zeitüberschreitung und Fehlschlag landen als Warnung im Log, es gibt keine Wiederholung und keine Warteschlange. Die Gegenstelle muss sofort quittieren und danach arbeiten. Wenn nichts verloren gehen darf, braucht es zusätzlich einen nächtlichen Abgleich.
Jeweils eine einzige Handlung in Odoo, gemessen:
| Fall | Regel | Ergebnis |
|---|---|---|
| A | Kontakt anlegen, keine Trigger-Felder | 11 POSTs |
| B | Feld ändern, keine Trigger-Felder | 2 POSTs |
| C | Kontakt anlegen, Trigger-Feld name | 1 POST |
| D | anderes Feld ändern, Trigger-Feld name | 0 POSTs |
| E | Trigger-Feld name ändern | 1 POST |
Die elf Aufrufe kamen in 17 Millisekunden, alle mit derselben Datensatz-ID, weil Odoo beim Anlegen intern mehrfach schreibt. Trigger-Felder sind bei jedem Bau Pflicht, sonst vervielfacht sich alles Nachgelagerte inklusive der Kosten je KI-Aufruf.
Der Code ist da, die Oberfläche kann trotzdem gesperrt sein. Die Quellen widersprechen sich.
base_automation ist Community-Code, Zugriff über base.group_system, also die normale Administratorgruppe, nicht über eine Studio-Gruppe.Einstellungen, dann Technisch, dann Automatisierung, dann Automatisierungsregeln. Das Menü "Technisch" hängt an base.group_no_one, der Entwicklermodus muss also aktiv sein, sonst ist der Punkt unsichtbar. Das erklärt einen Teil der Verwirrung im Netz.
Ein Odoo-Testzugang läuft üblicherweise mit vollem Funktionsumfang. Wenn im Trial alles geht, ist das noch kein Beweis für den bezahlten Standard-Plan. Vor dem Ergebnis prüfen, welcher Plan in der Testdatenbank tatsächlich hinterlegt ist. Sonst geben wir Martin eine Aussage, die bei ihm nicht hält, und genau das darf am Anfang einer Partnerschaft nicht passieren.
| Kunde läuft auf | Odoo meldet nach außen | Von außen hineinschreiben | MCP für Claude |
|---|---|---|---|
| Odoo Online, Standard | vermutlich ja, siehe offen | nein | nein |
| Odoo Online, Custom | ja | ja | nein, Fremdmodul gesperrt |
| Odoo.sh oder eigener Server | ja | ja | ja, Modul vorhanden |
Preisunterschied laut Odoo-Preisseite, pro Nutzer und Monat: Standard 19,90 bzw. 24,90, Custom 29,90 bzw. 37,40. Für einen Ein-Personen-Zugang also rund hundertzwanzig Euro im Jahr, nicht der Tausender, den Martin im Kopf hat. Länderpreise können abweichen.
Testaufbau und Rohdaten lokal: ~/AI/learning/odoo-sandbox/ (ERGEBNIS.md, run-test.py, run-test2.py, webhook-log.jsonl, webhook-receiver.py)