Odoo Pulse

An AI business analyst for your Odoo ERP

Documentation

odoo-pulse

CI PyPI License: MIT

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.

business_pulse — a one-call company briefing

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.

ToolAnswers
business_pulseThe morning briefing: yesterday's sales, new leads, overdue invoices, late tasks, who's off — with a company-wide verdict
pipeline_reviewCRM funnel by stage, stalled deals, weighted revenue, recent win rate
sales_snapshotRevenue this period vs last (Δ%), top customers/products, stale quotations
receivables_healthAR/AP aging buckets, % overdue, top debtors
inventory_riskShortages (negative forecast) and dead stock
absence_overviewWho's off this week, pending approvals, thin-coverage departments
procurement_watchPurchasing: late receipts, stale RFQs, open spend per vendor
production_healthManufacturing: orders behind their planned start, stuck WIP
sprint_health · team_workload · project_status_reportProject delivery: completion, overloaded members, at-risk projects

Every money-reporting tool takes an optional company= filter and flags mixed-currency totals instead of silently summing them; verdict cut-offs (stalled %, overdue %, growth %) are parameters, so you can calibrate them to your business.

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 [email protected] \
  --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

MIT