47 MCP tools

47 tools for Claude.Two document chains and a ledger.

Claude Desktop and Claude Code start the server over stdio. The Docker image runs it over streamable HTTP on port 8793. Every tool works on the same SQLite file.

Built for agents, not forms.

  1. 01

    Typed calls

    Each tool has a schema, so an order arrives as lines with quantities and prices in cents, not as a paragraph.

  2. 02

    Readable refusals

    A broken rule comes back as JSON with the reason. A failed match also lists every discrepancy.

  3. 03

    Names, not ids

    Partners, items, warehouses and accounts resolve by id, code or name, so an agent can pass "Northwind Components" or "SKU-100".

The tools

Everything the two chains need.Nothing that edits a posting.

Procure-to-pay · 10

Order, receive, bill, pay.

Ten tools run the purchasing chain. Receiving puts stock in at the order's cost and credits GRNI. Billing runs the three-way match. Paying clears the bill from the bank.

  • create_purchase_order, confirm_purchase_order, receive_goods
  • match_vendor_bill, post_vendor_bill, pay_vendor_bill
  • get_purchase_order, search_purchase_orders, get_vendor_bill, search_vendor_bills

Order-to-cash · 9

Order, deliver, invoice, collect.

Nine tools run the sales chain. Delivery takes stock out at average cost and books cost of goods sold. Invoicing bills only what was delivered.

  • create_sales_order, confirm_sales_order, deliver_goods
  • post_customer_invoice, receive_customer_payment
  • get_sales_order, search_sales_orders, get_customer_invoice, search_customer_invoices

Inventory · 4

Stock on hand, its value, and every move.

Four tools read and correct stock. Every move carries its cost and the document behind it, and an adjustment posts its value change to the ledger.

  • get_stock_on_hand, get_stock_valuation
  • list_stock_moves
  • adjust_stock, with a reason

Ledger and reports · 14

The journal and the statements.

Eight tools cover the chart of accounts and the journal, including post_journal_entry for accruals and reverse_entry for corrections. Six produce the reports.

  • list_accounts, get_balance, get_account_ledger, create_account
  • get_journal_entry, search_journal, post_journal_entry, reverse_entry
  • get_trial_balance, get_profit_and_loss, get_balance_sheet, get_ar_aging, get_ap_aging, get_unbilled_receipts

Master data, audit and SQL · 10

Partners, items, and the record.

Eight tools manage customers, suppliers, items and warehouses. get_audit_log reads every change in order, and run_query answers anything else with a SELECT on a read-only connection.

  • list_partners, get_partner, create_partner, list_items, get_item, create_item, list_warehouses, create_warehouse
  • get_audit_log, filtered by action, actor or object
  • run_query accepts a single SELECT statement

What the 47 tools cover.

  • Master data · 8

    Customers, suppliers, items and warehouses: list, read and create.

  • Procure-to-pay · 10

    Purchase orders, receipts, the three-way match, vendor bills and payments.

  • Order-to-cash · 9

    Sales orders, deliveries, customer invoices and payments.

  • Inventory · 4

    Stock on hand, valuation at average cost, moves and adjustments.

  • Ledger and reports · 14

    Accounts, the journal, manual entries, reversals and six reports.

  • Audit and SQL · 2

    Every change in order, and read-only SQL for anything else.

Running in three steps.

  1. Clone and install

    Python 3.11 or later.

    git clone https://github.com/Attri-Inc/open-erp.git && cd open-erp && python3 -m venv .venv && source .venv/bin/activate && pip install -e ".[dev]"
  2. Seed a sample business

    Creates a small business mid-cycle and prints its trial balance, stock value and GRNI.

    python scripts/seed.py
  3. Connect Claude

    Run this from the open-erp folder.

    claude mcp add openerp -s user -- $PWD/.venv/bin/python $PWD/run_mcp.py

Every tool, by group.

Names as registered in the MCP server.

GroupToolsCount
Master datalist_partners, get_partner, create_partner, list_items, get_item, create_item, list_warehouses, create_warehouse8
Ledgerlist_accounts, get_balance, get_account_ledger, create_account, get_journal_entry, search_journal, post_journal_entry, reverse_entry8
Procure-to-paycreate_purchase_order, confirm_purchase_order, get_purchase_order, search_purchase_orders, receive_goods, match_vendor_bill, post_vendor_bill, get_vendor_bill, search_vendor_bills, pay_vendor_bill10
Order-to-cashcreate_sales_order, confirm_sales_order, get_sales_order, search_sales_orders, deliver_goods, post_customer_invoice, get_customer_invoice, search_customer_invoices, receive_customer_payment9
Inventoryget_stock_on_hand, get_stock_valuation, list_stock_moves, adjust_stock4
Reportsget_trial_balance, get_profit_and_loss, get_balance_sheet, get_ar_aging, get_ap_aging, get_unbilled_receipts6
Audit and queryget_audit_log, run_query2

Tool names and counts read from src/mcp_server.py in Attri-Inc/open-erp on October 5, 2026.

Questions.

Which MCP transports does it support?

stdio, which Claude Desktop and Claude Code use, plus SSE and streamable HTTP for containers. The Docker image runs streamable HTTP on port 8793, bound to localhost.

Is there a REST API?

Not yet. A REST version of every MCP tool is planned for v0.2.

Does it work with agents other than Claude?

Any MCP client that can start a stdio server or connect over HTTP can use it.

Which agent made a change?

Every MCP write is recorded with the actor mcp. API keys, with the audit actor taken from the key, are planned for v0.2.

Does it have authentication?

Not yet. The open-source server has no sign-in or access control, and Docker binds it to localhost. Keep it off shared networks. API keys with read, write and admin roles are planned for v0.2, and Attri adds access control in managed deployments.

Let your agents run purchasing and stock.Keep the rules on the server.

Run OpenERP on a sample business in minutes, or have Attri deploy it inside your environment with access control and approval rules.