erpnext-mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited erpnext-mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
fields parameter is ignored by the API. To get financial values or other fields, use get_generic_document on individual records after listing.["between", ["YYYY-MM-DD", "YYYY-MM-DD"]] or [">=", "YYYY-MM-DD"] syntax."fiscal_year": "2025-2026" on GL Entry for year-scoped queries.| Tool | Use For |
|---|---|
test_connection | Verify MCP ↔ ERPNext connectivity |
get_system_info | ERPNext version and system info |
list_doctypes | See configured doctypes and permissions |
get_doctype_permissions | Check permissions for a specific doctype |
get_doctype_schema | Get field metadata for any doctype |
list_generic_documents | List documents (returns names only) |
get_generic_document | Get full document with all fields |
create_generic_document | Create a new document |
update_generic_document | Update an existing document |
list_customer_documents | List customers |
get_customer_document | Get customer by name |
search_customer_documents | Search customers by text |
create_customer_document | Create a customer |
update_customer_document | Update a customer |
get_generic_document(doctype="Sales Invoice", name="ACC-SINV-2025-06622")Use this for: Sales Invoice, Purchase Invoice, GL Entry, Client Script, Customer, Item, etc.
list_generic_documents(
doctype="Client Script",
filters={},
fields=["name"],
limit=100
)Then call get_generic_document on specific names to retrieve full details.
Since list returns names only, query GL Entries by account type:
Income entries:
list_generic_documents(
doctype="GL Entry",
filters={"account": ["like", "%Income%"], "is_cancelled": 0, "fiscal_year": "2025-2026"},
fields=["name"],
limit=100
)COGS entries:
list_generic_documents(
doctype="GL Entry",
filters={"account": ["like", "%Cost of Goods%"], "is_cancelled": 0, "fiscal_year": "2025-2026"},
fields=["name"],
limit=100
)Then fetch individual GL entries to get credit, debit, account, voucher_no, posting_date.
For a full P&L, advise the user to run ERPNext's built-in Profit and Loss Statement report (Accounts > Financial Statements > Profit and Loss Statement).
create_generic_document(
doctype="Sales Invoice",
data={
"customer": "Walk-In",
"posting_date": "2025-08-29",
"is_pos": 1,
"items": [
{
"item_code": "ITEM-001",
"qty": 2,
"rate": 500
}
]
}
)Required fields: customer, posting_date, items (with item_code, qty, rate). Optional: pos_profile, cost_center, currency, selling_price_list.
create_generic_document(
doctype="Purchase Invoice",
data={
"supplier": "NB Danyour Factory",
"posting_date": "2025-08-29",
"items": [
{
"item_code": "ITEM-001",
"qty": 10,
"rate": 100
}
]
}
)# Step 1: list
list_generic_documents(doctype="Client Script", filters={}, fields=["name"], limit=100)
# Step 2: get details of a specific one
get_generic_document(doctype="Client Script", name="Sales Invoice")Use docstatus: 1 for submitted, 0 for draft, 2 for cancelled:
list_generic_documents(
doctype="Sales Invoice",
filters={"docstatus": 1, "posting_date": ["between", ["2025-08-01", "2025-08-31"]]},
fields=["name"],
limit=100
)POS Main Branch Income - NBCost of Goods Sold - NBMain - NBMain Warehouse - NBSee references/api_reference.md for field reference for key doctypes.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.