4
0
Source

Advanced Odoo financial intelligence tool for automated accounting audits, VAT reports, cash flow analysis, and natural language financial queries.

Install

mkdir -p .claude/skills/odoo && curl -L -o skill.zip "https://mcp.directory/api/skills/download/9017" && unzip -o skill.zip -d .claude/skills/odoo && rm skill.zip

Installs to .claude/skills/odoo

About this skill

Odoo Financial Intelligence

Read-only, Evidence-First, Ledger-Based Reports

Quick Reference: Common Odoo Models

ModelWhat It ContainsUse For
res.usersUsers/SalespeopleFind salesperson by name, get user_id
sale.orderSales OrdersRevenue by salesperson, order counts, status
account.moveInvoices/Journal EntriesInvoice tracking, payments, P&L data
res.partnerContacts/CustomersCustomer info, top customers by revenue
product.productProductsProduct sales, inventory
account.accountChart of AccountsFinancial reporting, balance sheet
account.move.lineJournal LinesDetailed ledger entries

Security & Credentials

Required Environment Variables

This skill requires Odoo connection credentials stored in assets/autonomous-cfo/.env:

VariableDescriptionSecret
ODOO_URLOdoo instance URL (e.g., https://your-odoo.com)No
ODOO_DBOdoo database nameNo
ODOO_USEROdoo username/emailNo
ODOO_PASSWORDOdoo password or API keyYes

Setup:

cd skills/odoo/assets/autonomous-cfo
cp .env.example .env
# Edit .env with your actual credentials
nano .env

Model Invocation Policy

Model invocation is DISABLED per skill.json policy. This skill handles sensitive financial data and external Odoo connections — it must be explicitly invoked by the user.

Data Handling: All queries are read-only. No data is modified or exfiltrated.

Data Handling

  • Read-only: All mutating methods (create, write, unlink, etc.) are blocked at the client level
  • No exfiltration: Reports are generated locally in assets/autonomous-cfo/output/
  • Network endpoints: Only connects to the Odoo URL specified in .env
  • Output formats: PDF, Excel, and WhatsApp image cards (local files only)

Installation

The skill requires a Python virtual environment with specific packages:

cd skills/odoo/assets/autonomous-cfo
./install.sh

Or manually:

cd skills/odoo/assets/autonomous-cfo
python3 -m venv venv
./venv/bin/pip install -r requirements.txt

Dependencies: requests, matplotlib, pillow, fpdf2, openpyxl

Critical Rules

  1. NEVER assume - Always ask clarifying questions before generating reports
  2. Multi-company check - If multiple companies exist, ASK which one to use
  3. Ledger-based - Use Chart of Accounts and journal entries (account.move.line), not just invoice summaries
  4. Verify periods - Confirm date ranges with user before running
  5. No silent defaults - Every assumption must be confirmed

Before Any Report, Ask:

  1. "Which company should I use?" (if multiple exist)
  2. "What period? (from/to dates)"
  3. "Which accounts or account types to include?"
  4. "Any specific breakdown needed?" (by account, by partner, by journal, etc.)
  5. "Output format preference?" (PDF, WhatsApp cards, or both)

Entrypoint

Uses the venv with fpdf2, matplotlib, pillow for proper PDF/chart generation:

./skills/odoo/assets/autonomous-cfo/venv/bin/python ./skills/odoo/assets/autonomous-cfo/src/tools/cfo_cli.py <command>

Or from the skill directory:

cd skills/odoo/assets/autonomous-cfo && ./venv/bin/python src/tools/cfo_cli.py <command>

Chart of Accounts Based Reporting

Reports should be built from:

  • account.account - Chart of Accounts structure (code, name, type, internal_group)
  • account.move.line - Journal entry lines (debit, credit, account_id, date)
  • account.journal - Source journals (type: sale, purchase, cash, bank, general)

Account Internal Groups

  • ASSET - Assets (current, non-current, cash, receivables)
  • LIABILITY - Liabilities (payables, taxes, accrued)
  • EQUITY - Owner's equity
  • INCOME - Revenue accounts
  • EXPENSE - Cost and expense accounts
  • OFF_BALANCE - Off-balance sheet accounts

Common Account Types

  • asset_cash - Bank and cash accounts
  • asset_receivable - Accounts receivable
  • asset_current - Current assets
  • liability_payable - Accounts payable
  • income - Revenue
  • expense - Expenses

Special Equity Types (Odoo-Specific)

  • equity - Standard equity accounts (share capital, retained earnings)
  • equity_unaffected - Suspense account for undistributed profits/losses (e.g., 999999)

CRITICAL for Balance Sheet: Odoo's equity_unaffected is a SUSPENSE account. Do NOT use its ledger balance directly.

Correct Equity Calculation:

  1. Equity Proper (type: equity) - Use ledger balance (credit - debit)
  2. Retained Earnings (prior years) - Ledger balance from equity_unaffected
  3. Current Year Earnings - Compute real-time: Income - Expenses
Total Equity = Equity Proper + Retained Earnings + Current Year Earnings

Where Current Year Earnings = Σ(income credit-debit) - Σ(expense debit-credit)

Why this matters: Odoo computes Current Year Earnings in real-time on the Balance Sheet. Using only the equity_unaffected ledger balance will cause the balance sheet to NOT balance.

Automatic Reporting Standard Detection

The skill automatically detects the company's accounting standard based on country/jurisdiction and formats reports accordingly.

Supported Standards:

StandardJurisdictionNotes
IFRSInternationalDefault for most countries
US GAAPUnited StatesSEC registrants
Ind-ASIndiaIndian GAAP converged with IFRS
UK GAAPUnited KingdomFRS 102
SOCPASaudi ArabiaIFRS adopted
EU IFRSEuropean UnionIAS Regulation
CASChinaChinese Accounting Standards
JGAAPJapanJapanese GAAP
ASPECanadaPrivate enterprises
AASBAustraliaAustralian standards

Detection Logic:

  1. Query company's country from res.company
  2. Map country code to reporting standard
  3. Apply standard-specific formatting:
    • Number format (1,234.56 vs 1.234,56)
    • Negative display ((123) vs -123)
    • Date format (DD/MM/YYYY vs MM/DD/YYYY)
    • Statement titles (Balance Sheet vs Statement of Financial Position)
    • Cash flow method (indirect vs direct)

Override:

# Force a specific standard
reporter.generate(..., standard="US_GAAP")

Commands

Sales & CRM Queries

# Salesperson performance - use direct RPC for flexibility
./venv/bin/python -c "
from src.visualizers.whatsapp_cards import WhatsAppCardGenerator
# Query sale.order by user_id, aggregate by month/status
# Generate cards with generate_kpi_card() and generate_comparison_card()
"

# Example RPC query for salesperson:
# - sale.order (user_id, amount_total, state, date_order)
# - account.move (invoice_user_id, amount_total, payment_state)
# - res.users (salesperson info)
# - res.partner (customer info)

Pre-built Reports

# Financial Health - cash flow, liquidity, burn rate, runway
cfo_cli.py health --from YYYY-MM-DD --to YYYY-MM-DD --company-id ID

# Revenue Analytics - MoM trends, top customers
cfo_cli.py revenue --from YYYY-MM-DD --to YYYY-MM-DD --company-id ID

# AR/AP Aging - overdue buckets
cfo_cli.py aging --as-of YYYY-MM-DD --company-id ID

# Expense Breakdown - by vendor/category
cfo_cli.py expenses --from YYYY-MM-DD --to YYYY-MM-DD --company-id ID

# Executive Summary - one-page CFO snapshot
cfo_cli.py executive --from YYYY-MM-DD --to YYYY-MM-DD --company-id ID

Direct RPC Queries (Advanced)

For sales/CRM data not covered by pre-built commands, use direct RPC:

# Query sales orders by salesperson
orders = jsonrpc('sale.order', 'search_read',
    [[('user_id', '=', SALESPERSON_ID)]],
    {'fields': ['name', 'partner_id', 'amount_total', 'state', 'date_order']})

# Query invoices by salesperson
invoices = jsonrpc('account.move', 'search_read',
    [[('invoice_user_id', '=', SALESPERSON_ID), ('move_type', '=', 'out_invoice')]],
    {'fields': ['name', 'partner_id', 'amount_total', 'payment_state']})

# Find salesperson by name
users = jsonrpc('res.users', 'search_read',
    [[('name', 'ilike', 'name_here')]],
    {'fields': ['id', 'name', 'login']})

Ad-hoc Reports

# Custom comparison
cfo_cli.py adhoc --from YYYY-MM-DD --to YYYY-MM-DD --metric-a "revenue" --metric-b "expenses"

# Examples:
cfo_cli.py adhoc --metric-a "cash in" --metric-b "cash out"
cfo_cli.py adhoc --metric-a "direct expenses" --metric-b "indirect expenses"

Output Formats

--output whatsapp   # Dark theme 1080x1080 PNG cards
--output pdf        # Light theme A4 PDF
--output excel      # Excel workbook (.xlsx)
--output both       # PDF + WhatsApp cards
--output all        # PDF + Excel + WhatsApp cards

Automatic Visualizations

Reports always include appropriate visualizations by default:

ReportAuto-Included Charts
Financial HealthCash position, burn rate trend, runway
RevenueMoM trend, top customers, growth KPI
AR/AP AgingAging buckets pie, overdue highlights
ExpensesCategory breakdown, trend, top vendors
ExecutiveAll KPI cards, summary charts
Balance SheetAsset/liability composition
P&LRevenue vs expense, margin trend
Cash FlowOperating breakdown, cash trend

Rule: If visualization makes the report clearer, include it automatically. Never ask "do you want charts?" — just add them.

Interactive Param Collection

If required params are missing, the skill will ask:

  1. Company: "Which company?" (list available options)
  2. Period: "What period? (e.g., 'last month', 'Q4 2024', custom dates)"
  3. Accounts: "Which accounts or groups?" (e.g., 'all income', 'bank accounts only')
  4. Breakdown: "Group by? (Month, Customer, Category, Account)"
  5. Output: "Output format? (WhatsApp cards, PDF, Both)"

How to Use in Chat

Just ask naturally:

**S


Content truncated.

You might also like

flutter-development

aj-geddes

Build beautiful cross-platform mobile apps with Flutter and Dart. Covers widgets, state management with Provider/BLoC, navigation, API integration, and material design.

1,4071,302

drawio-diagrams-enhanced

jgtolentino

Create professional draw.io (diagrams.net) diagrams in XML format (.drawio files) with integrated PMP/PMBOK methodologies, extensive visual asset libraries, and industry-standard professional templates. Use this skill when users ask to create flowcharts, swimlane diagrams, cross-functional flowcharts, org charts, network diagrams, UML diagrams, BPMN, project management diagrams (WBS, Gantt, PERT, RACI), risk matrices, stakeholder maps, or any other visual diagram in draw.io format. This skill includes access to custom shape libraries for icons, clipart, and professional symbols.

1,2201,024

ui-ux-pro-max

nextlevelbuilder

"UI/UX design intelligence. 50 styles, 21 palettes, 50 font pairings, 20 charts, 8 stacks (React, Next.js, Vue, Svelte, SwiftUI, React Native, Flutter, Tailwind). Actions: plan, build, create, design, implement, review, fix, improve, optimize, enhance, refactor, check UI/UX code. Projects: website, landing page, dashboard, admin panel, e-commerce, SaaS, portfolio, blog, mobile app, .html, .tsx, .vue, .svelte. Elements: button, modal, navbar, sidebar, card, table, form, chart. Styles: glassmorphism, claymorphism, minimalism, brutalism, neumorphism, bento grid, dark mode, responsive, skeuomorphism, flat design. Topics: color palette, accessibility, animation, layout, typography, font pairing, spacing, hover, shadow, gradient."

9001,013

godot

bfollington

This skill should be used when working on Godot Engine projects. It provides specialized knowledge of Godot's file formats (.gd, .tscn, .tres), architecture patterns (component-based, signal-driven, resource-based), common pitfalls, validation tools, code templates, and CLI workflows. The `godot` command is available for running the game, validating scripts, importing resources, and exporting builds. Use this skill for tasks involving Godot game development, debugging scene/resource files, implementing game systems, or creating new Godot components.

958658

nano-banana-pro

garg-aayush

Generate and edit images using Google's Nano Banana Pro (Gemini 3 Pro Image) API. Use when the user asks to generate, create, edit, modify, change, alter, or update images. Also use when user references an existing image file and asks to modify it in any way (e.g., "modify this image", "change the background", "replace X with Y"). Supports both text-to-image generation and image-to-image editing with configurable resolution (1K default, 2K, or 4K for high resolution). DO NOT read the image file first - use this skill directly with the --input-image parameter.

970608

pdf-to-markdown

aliceisjustplaying

Convert entire PDF documents to clean, structured Markdown for full context loading. Use this skill when the user wants to extract ALL text from a PDF into context (not grep/search), when discussing or analyzing PDF content in full, when the user mentions "load the whole PDF", "bring the PDF into context", "read the entire PDF", or when partial extraction/grepping would miss important context. This is the preferred method for PDF text extraction over page-by-page or grep approaches.

1,033496

Stay ahead of the MCP ecosystem

Get weekly updates on new skills and servers.