No description
  • Python 90.2%
  • JavaScript 7.6%
  • CSS 1.8%
  • HTML 0.3%
Find a file
github-actions[bot] b9a7d6adf2 chore(release): v2.5.0
# [2.5.0](https://github.com/quentinreytinas/frappe_assistant_core/compare/v2.4.0...v2.5.0) (2026-04-26)

### Bug Fixes

* align version constants with 2.4.0 ([a6aa871](a6aa87141f))
* drop unused visualization libs from run_python_code sandbox ([#146](https://github.com/quentinreytinas/frappe_assistant_core/issues/146)) ([6a002da](6a002da619))
* enforce parent document permission check in extract_file_content ([bd88d75](bd88d75302)), closes [#126](https://github.com/quentinreytinas/frappe_assistant_core/issues/126)
* ignore two historical squash-merge commits in commitlint ([#148](https://github.com/quentinreytinas/frappe_assistant_core/issues/148)) ([b89ac49](b89ac4986b)), closes [#143](https://github.com/quentinreytinas/frappe_assistant_core/issues/143) [#145](https://github.com/quentinreytinas/frappe_assistant_core/issues/145)
* isolate code execution in subprocess to prevent worker crashes ([#142](https://github.com/quentinreytinas/frappe_assistant_core/issues/142)) ([5d0e956](5d0e9569e7))
* prevent OAuth Basic auth monkey-patch from persisting across worker requests ([#131](https://github.com/quentinreytinas/frappe_assistant_core/issues/131)) ([5c22232](5c22232721)), closes [#129](https://github.com/quentinreytinas/frappe_assistant_core/issues/129)
* remove dead create_visualization tool with SQL injection vulnerability ([#132](https://github.com/quentinreytinas/frappe_assistant_core/issues/132)) ([1074878](1074878718))
* remove unprotected whitelist decorators from duplicate config endpoints ([#133](https://github.com/quentinreytinas/frappe_assistant_core/issues/133)) ([a46d463](a46d4630ea))
* repair HRMS Skill link corruption from v2.4.0 rename patch ([4f043ac](4f043ac707))
* repair HRMS Skill link corruption from v2.4.0 rename patch ([#153](https://github.com/quentinreytinas/frappe_assistant_core/issues/153)) ([973c2e7](973c2e783f))
* restrict usage statistics to assistant admins ([#140](https://github.com/quentinreytinas/frappe_assistant_core/issues/140)) ([56315ed](56315ed1af))
* skip signal-based timeout in worker threads ([#122](https://github.com/quentinreytinas/frappe_assistant_core/issues/122)) ([a2fbe72](a2fbe727e1)), closes [#118](https://github.com/quentinreytinas/frappe_assistant_core/issues/118) [#121](https://github.com/quentinreytinas/frappe_assistant_core/issues/121) [#118](https://github.com/quentinreytinas/frappe_assistant_core/issues/118)
* use GITHUB_TOKEN instead of missing RELEASE_PAT secret ([5a6fd8c](5a6fd8c489))

### Features

* add get_pending_approvals tool for workflow action discovery ([#127](https://github.com/quentinreytinas/frappe_assistant_core/issues/127)) ([de14958](de14958fc7))
* add support for image data in tool responses ([#123](https://github.com/quentinreytinas/frappe_assistant_core/issues/123)) ([e73e929](e73e929158))
* Skills subsystem — FAC Skill DocType, admin tabs, external app registration ([#145](https://github.com/quentinreytinas/frappe_assistant_core/issues/145)) ([720d560](720d560343)), closes [#118](https://github.com/quentinreytinas/frappe_assistant_core/issues/118) [#121](https://github.com/quentinreytinas/frappe_assistant_core/issues/121) [#118](https://github.com/quentinreytinas/frappe_assistant_core/issues/118)
2026-04-26 16:17:25 +00:00
.github fix: use GITHUB_TOKEN instead of missing RELEASE_PAT secret 2026-04-26 18:17:01 +02:00
client_packages Fix audit log false-success and enrich captured fields (#143) 2026-04-15 16:44:30 +05:30
docs fix: drop unused visualization libs from run_python_code sandbox (#146) 2026-04-17 17:48:48 +05:30
frappe_assistant_core chore(release): v2.5.0 2026-04-26 16:17:25 +00:00
screenshots Contains OAuth and Stremable HTTP support (#50) 2025-10-14 12:42:03 +05:30
scripts Fix audit log false-success and enrich captured fields (#143) 2026-04-15 16:44:30 +05:30
.editorconfig feat: complete Frappe MCP Server - AI-ERP integration platform 2025-06-26 16:05:41 +05:30
.eslintrc feat: complete Frappe MCP Server - AI-ERP integration platform 2025-06-26 16:05:41 +05:30
.gitignore feat: Skills subsystem — FAC Skill DocType, admin tabs, external app registration (#145) 2026-04-17 16:42:28 +05:30
.pre-commit-config.yaml Fix audit log false-success and enrich captured fields (#143) 2026-04-15 16:44:30 +05:30
.releaserc ci: add semantic-release and commitlint automation 2026-03-19 11:00:48 +05:30
.semgrepignore Develop (#116) 2026-03-18 17:26:35 +05:30
__init__.py fix: align version constants with 2.4.0 2026-04-25 19:04:32 +02:00
COMMERCIAL.md docs: add GitHub Sponsors button and delegate professional services to Promantia (#144) 2026-04-16 15:21:18 +05:30
commitlint.config.js fix: ignore two historical squash-merge commits in commitlint (#148) 2026-04-17 18:24:41 +05:30
Contributing.md docs: add GitHub Sponsors button and delegate professional services to Promantia (#144) 2026-04-16 15:21:18 +05:30
hooks.py Add Reytinas compatibility patches 2026-04-02 12:21:25 +02:00
LICENSE Updated the license to AGPL-v3 2025-07-22 15:51:22 +05:30
modules.txt Add Reytinas compatibility patches 2026-04-02 12:21:25 +02:00
pyproject.toml chore(release): v2.5.0 2026-04-26 16:17:25 +00:00
README.md docs: rewrite README for v2.4.0 (#149) 2026-04-17 19:38:30 +05:30

Frappe Assistant Core

Talk to your ERPNext site. FAC lets Claude, ChatGPT, and other MCP-ready LLMs work directly with your invoices, customers, stock, workflows, and custom apps — inside your ERPNext permissions, with every call logged.

Version Python License MCP Tools

CI Frappe Cloud Stars Forks Sponsors


What you get

Once FAC is installed, your team can ask an LLM for things they'd normally do by hand:

"Show me overdue invoices from our top five customers."

"Update this lead's status to Qualified and set next action date to Monday."

"Run the monthly revenue report and summarise the top movers."

"How much stock of SKU-1234 do we have across all warehouses?"

Behind that simple interaction, FAC exposes 24 built-in tools for the things your team does every day — document CRUD, search, reports, workflows, analytics, file extraction, and dashboards. Admins can publish Skills (reusable instructions that teach the LLM how to handle a specific job) and Prompt Templates (saved starting points users can pick from the admin UI) so answers stay consistent and use the right reports. The LLM authenticates over OAuth 2.0 as a real ERPNext user, so it only sees data that user can already see in the desk. Every call is recorded in the Assistant Audit Log.

It's a Frappe app, so developers can extend the toolset from their own Frappe apps through a hook — your data model, your business logic, scoped per your app.

Your data stays in your site. You control which LLM connects.


Quick start

Two install paths depending on how you run Frappe.

  1. Go to your site's Apps tab in the Frappe Cloud dashboard.
  2. Find Frappe Assistant Core in the marketplace and click Install.
  3. Frappe Cloud installs and migrates the app for you.

Marketplace: https://cloud.frappe.io/marketplace/apps/frappe_assistant_core

On self-hosted bench

cd frappe-bench
bench get-app https://github.com/buildswithpaul/Frappe_Assistant_Core
bench --site <your-site> install-app frappe_assistant_core

Connect your LLM

Once installed, the same four steps work for any MCP-compatible client. Example shown for Claude Desktop:

  1. Go to Desk → FAC Admin and copy the MCP Endpoint URL.
  2. In Claude Desktop → Settings → Connectors → Add Custom Connector, paste the URL and click Add.
  3. Click Connect, log in with your ERPNext account, and authorize.
  4. Ask Claude something — for example, "List all customers created this month."

For ChatGPT, Claude Web, and MCP Inspector walkthroughs, see the Getting Started guide.


Skills and Prompt Templates

FAC gives you two ways to shape what the LLM does with your data.

Skills are reusable instructions you give the LLM — stored as FAC Skill documents inside your site. Each skill has a skill_id, a description, and markdown content describing how to handle a specific task using the available tools. The LLM lists skills on connect and pulls them on demand, so every time someone asks about, say, the monthly sales close, the answer is consistent and uses the right reports.

Prompt Templates are saved starting points for the user's side of the conversation — Jinja-templated prompts with typed arguments (dropdowns, dates, booleans). Authors publish them from the admin page; users pick one, fill in the arguments, and the rendered prompt is sent to the LLM. Use them for frequently-asked analyses like "Sales Analysis", "Manufacturing Analysis", or your own industry-specific workflows.

Both live in Frappe, so they're version-controlled with your site, shareable across users, and can be shipped by external Frappe apps through the assistant_skills hook.


Tools at a glance

FAC ships 24 tools across four plugins: Core (Frappe operations), Data Science (Python execution, analytics, file extraction), Visualization (dashboards and charts), and Custom Tools (the registry for tools contributed by external apps).

Category Tools
Documents get_document, list_documents, create_document, update_document, delete_document, submit_document
Search search, search_documents, search_doctype, search_link, fetch
Reports report_list, report_requirements, generate_report
Approvals get_pending_approvals, run_workflow
Schema get_doctype_info
Analytics run_python_code, run_database_query, analyze_business_data
Files extract_file_content
Dashboards create_dashboard, create_dashboard_chart, list_user_dashboards

Full specification for each tool is in the Tool Reference.


Extend with your own tools

If you have a Frappe app and want the LLM to reach into it, use the assistant_tools hook in your app's hooks.py. This is the recommended path — tools travel with the app, survive upgrades, and stay scoped to your data model. The same pattern works for Skills via the assistant_skills hook.

If you need to modify core FAC behaviour instead, write an internal plugin.

See the External App Development guide for the hook contract, and the Plugin Development guide for internal plugins.


Authentication & security

FAC uses OAuth 2.0 with PKCE for LLM connections — the LLM never sees the user's Frappe password. Every tool call is scoped to the calling user's Frappe and ERPNext roles and permissions: if the user cannot read a DocType in the desk, they cannot read it through the LLM either. Every call is logged to Assistant Audit Log with caller, tool, arguments, and result status, so admins always have a full record of what the LLM did.

For setup and advanced configuration:


Documentation


Sponsor and professional services

Frappe Assistant Core is built and maintained in the open. If it saves your team time, please consider sponsoring ongoing maintenance and new features on GitHub Sponsors — recurring or one-time contributions.

Professional implementation, customization, training, and enterprise support are delivered by our official services partner Promantia. Reach them at ai-support@promantia.com, or register your project at https://erp.promantia.in/fac-registration/new. Full details in COMMERCIAL.md.

The software itself remains completely free and open source under AGPL-3.0. Professional services are optional.


License

AGPL-3.0 — see LICENSE.

For dual-licensing, new partnerships, or sponsorship inquiries, contact jypaulclinton@gmail.com.

Contributing

Contributions welcome. See Contributing.md for the pull-request workflow and coding standards.