AI business analyst for Odoo ERP — one-call reports with verdicts, over MCP
Project description
odoo-pulse
An AI business analyst for your Odoo ERP. Ask one question, get one answer — numbers, highlights, risks, and a verdict (on-track / at-risk / off-track) — over the Model Context Protocol. CRUD bridges to Odoo already exist; this is the analytics layer that sits on top.
The analyst tools
Each tool answers a whole management question in a single call, returning a structured report with a verdict — not a raw dump you have to interpret.
| Tool | Answers |
|---|---|
business_pulse ⭐ |
The morning briefing: yesterday's sales, new leads, overdue invoices, late tasks, who's off — with a company-wide verdict |
pipeline_review |
CRM funnel by stage, stalled deals, weighted revenue, recent win rate |
sales_snapshot |
Revenue this period vs last (Δ%), top customers/products, stale quotations |
receivables_health |
AR/AP aging buckets, % overdue, top debtors |
inventory_risk |
Shortages (negative forecast) and dead stock |
absence_overview |
Who's off this week, pending approvals, thin-coverage departments |
sprint_health · team_workload · project_status_report |
Project delivery: completion, overloaded members, at-risk projects |
Under the hood it's the standard Odoo XML-RPC external API — nothing to install inside Odoo, works on Odoo Online, Odoo.sh, and on-premise.
Try it in 5 minutes
No Odoo account? Boot a demo Odoo pre-seeded with a story to tell (a stalled deal, a 90-day-overdue invoice, a stock shortage, someone off today):
docker compose -f docker-compose.playground.yml up -d
Then point Claude at it and ask it to run business_pulse. Full
walkthrough: docs/playground.md.
Install & connect
Add it to Claude Code (no install step — uvx fetches it):
claude mcp add odoo-pulse \
--env ODOO_URL=https://acme.odoo.com \
--env ODOO_DB=acme \
--env ODOO_USERNAME=you@example.com \
--env ODOO_API_KEY=your-api-key \
--env ODOO_READ_ONLY=true \
-- uvx odoo-pulse
Generate the API key in Odoo under Settings → Users → (your user) → Account Security → New API Key. Config for Claude Desktop and Cursor, plus pip and Docker alternatives: docs/install.md.
Read-only by default, safe writes when you want them
The server is read-only out of the box. Writes require four independent controls
to line up (ODOO_READ_ONLY=false, a model allow-list, a delete flag, and a
per-call confirm=true after a dry-run preview); system models are never
writable. Details: docs/tools.md#write-operations.
More tools
Beyond the analyst reports, there are ~60 model-aware query tools spanning CRM,
Sales, Inventory, Accounting, HR, Project, Manufacturing, PoS, and Enterprise
apps — opt in via ODOO_TOOL_GROUPS. Full catalogue and configuration:
docs/tools.md.
Testing
The suite mocks the XML-RPC layer, so no real Odoo or network is needed:
pip install -e ".[dev]"
pytest
For a live check against a real Odoo (read-only), see docs/tools.md#live-smoke-test-against-a-real-odoo.
License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file odoo_pulse-1.0.1.tar.gz.
File metadata
- Download URL: odoo_pulse-1.0.1.tar.gz
- Upload date:
- Size: 126.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fdda1638f0fc964d07b0c7bf22ba9728ec50f5b0079e375536bb943858f347d1
|
|
| MD5 |
b738bc95e4f10e7a082bd0393d4ab531
|
|
| BLAKE2b-256 |
b392fbd51dd7d465fe5dbc24c0f585a5471302585bf4f722cd60fdd7cae658ef
|
Provenance
The following attestation bundles were made for odoo_pulse-1.0.1.tar.gz:
Publisher:
release.yml on minhhq-a1/odoo-pulse
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
odoo_pulse-1.0.1.tar.gz -
Subject digest:
fdda1638f0fc964d07b0c7bf22ba9728ec50f5b0079e375536bb943858f347d1 - Sigstore transparency entry: 2054173697
- Sigstore integration time:
-
Permalink:
minhhq-a1/odoo-pulse@330c6dce6c6afe10f6ae2ce4df84ab11dc4aa563 -
Branch / Tag:
refs/tags/v1.0.1 - Owner: https://github.com/minhhq-a1
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@330c6dce6c6afe10f6ae2ce4df84ab11dc4aa563 -
Trigger Event:
push
-
Statement type:
File details
Details for the file odoo_pulse-1.0.1-py3-none-any.whl.
File metadata
- Download URL: odoo_pulse-1.0.1-py3-none-any.whl
- Upload date:
- Size: 45.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5f87ecd15b4ab85af416e93ef07cb93b9db558eb2f475777814e263a562c6f74
|
|
| MD5 |
3d743ea8a0ca80a4402f2b32f0f339c8
|
|
| BLAKE2b-256 |
e75ccd046c84b06cdfb151a4b3f262ad180f1af3f1e63ebe8b2a4e2c87cd1753
|
Provenance
The following attestation bundles were made for odoo_pulse-1.0.1-py3-none-any.whl:
Publisher:
release.yml on minhhq-a1/odoo-pulse
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
odoo_pulse-1.0.1-py3-none-any.whl -
Subject digest:
5f87ecd15b4ab85af416e93ef07cb93b9db558eb2f475777814e263a562c6f74 - Sigstore transparency entry: 2054174026
- Sigstore integration time:
-
Permalink:
minhhq-a1/odoo-pulse@330c6dce6c6afe10f6ae2ce4df84ab11dc4aa563 -
Branch / Tag:
refs/tags/v1.0.1 - Owner: https://github.com/minhhq-a1
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@330c6dce6c6afe10f6ae2ce4df84ab11dc4aa563 -
Trigger Event:
push
-
Statement type: