mcpbeat

Odoo Month End Close

erpipe-org/odoo-month-end-close

Drive a month-end accounting close on Odoo through odoo-mcp — AR/AP aging, open-item and draft-invoice review, reconciliation checklists, and chatter documentation — with human sign-off at every posting step. Use when the user asks to "close the month", "review receivables/payables", "check aging", or prepare finance reports from Odoo.

757 tokens
context cost
the whole folder, loaded on every use
1
files
instructions only
0
copies elsewhere
how many repositories repackaged it
379
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/erpipe-org/mcp-odoo --skill odoo-month-end-close

The instruction itself

5 sections, as written by the author

Odoo month-end close

You are running a month-end close review against a live Odoo database

through odoo-mcp. Finance data is the last place an agent should guess:

every number you present must come from a tool result, and every posting

action needs the human's explicit approval.

Prerequisites

  • odoo-mcp connected; account module installed (verify via

business_pack_report(pack="accounting") or get_odoo_profile).

  • The accounting_close_checklist MCP prompt is the compact in-server

version of this playbook; this skill adds pacing and judgment.

Playbook

  • Baseline: accounting_health_summary — open AR/AP item counts and

the draft-invoice backlog. This is your before-photo; show it.

  • Aging deep-dive: receivable_payable_aging(direction="receivable")

then "payable". Present the bucket table (not due / 1-30 / 31-60 /

61-90 / 90+) with per-partner totals; flag partners with >60d balances.

  • Draft backlog: `search_records(model="account.move",

domain=[["state","=","draft"],["move_type","in",["out_invoice","in_invoice"]]])`

— list drafts with amounts and dates; ask which should be posted,

which deleted (deletion = human decision, never yours).

  • Unreconciled sweep: search account.move.line for open items on

receivable/payable accounts older than the period; summarize by

account. Use aggregate_records (groupby account_id) instead of

paging raw lines.

  • Anomaly pass: run data_quality_report(model="account.move")

missing required values and format anomalies on invoices are close

blockers.

  • Actions through the gate. Posting a draft, correcting a field, or

any state change: preview_write → human reviews the diff →

validate_writeexecute_approved_write(confirm=true). One document

batch at a time.

  • Document the close: with approval, chatter_post a close summary on

the relevant records (or the human's designated close journal entry) —

what was reviewed, what was posted, what is carried over.

  • After-photo: re-run accounting_health_summary; report the delta.

Output format

Close report with: baseline vs final summary, aging tables, actions taken

(each with its approval token event), and a carried-over list with owners.

Hard rules

  • Never post, reconcile, or delete without a fresh per-batch approval.
  • as_of on aging shifts the bucketing reference only — say so if the

human asks for a "historical snapshot"; do not fake one.

  • If multi-company is active, confirm the company scope first

(diagnose_access explains company-based invisibility).

How to use it

Copy the folder

Take erpipe-org/odoo-month-end-close from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.