ERPNext MCP Server
Provides full CRUD operations, workflow management, custom fields, and DocType management for ERPNext, enabling AI agents to interact with and manage ERPNext documents, workflows, and metadata.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ERPNext MCP ServerCreate a new sales invoice for Customer A"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ERPNext MCP Server
MCP (Model Context Protocol) Server for ERPNext with full CRUD operations, workflow management, custom fields, and DocType management.
Built with MCP SDK 1.25.1 - the latest stable version.
Features
Document Operations
get_document- Get a single document by DocType and nameget_documents- List documents with filtering, field selection, and paginationcreate_document- Create new documentsupdate_document- Update existing documentsdelete_document- Delete documentssubmit_document- Submit submittable documents (Draft → Submitted)cancel_document- Cancel submitted documents
DocType Management
get_doctypes- List all available DocTypesget_doctype_fields- Get field definitions for a DocTypeget_doctype_meta- Get complete DocType metadatacreate_doctype- Create new custom DocTypesadd_doctype_field- Add fields to existing DocTypescreate_custom_field- Create custom fields (survives updates)create_property_setter- Override DocType/field properties
Workflow Management
get_workflow- Get active workflow for a DocTypecreate_workflow- Create new workflows with states and transitionsupdate_workflow- Update existing workflows
Reports
run_report- Execute ERPNext reports with filters
Authentication
authenticate_erpnext- Authenticate with username/password (alternative to API key)
Related MCP server: Frappe Assistant Core
Installation
npm install @kai-oesterling/erpnext-mcp-serverOr clone and build:
git clone https://github.com/Kai-Oesterling/erpnext-mcp-server.git
cd erpnext-mcp-server
npm install
npm run buildConfiguration
Set environment variables:
export ERPNEXT_URL=https://erp.example.com
export ERPNEXT_API_KEY=your_api_key
export ERPNEXT_API_SECRET=your_api_secret
# Optional: Enable debug logging
export ERPNEXT_DEBUG=trueCreating API Keys in ERPNext
Go to User settings in ERPNext
Navigate to "API Access" section
Generate new API Key and Secret
Use these credentials in environment variables
Usage
With Claude Desktop
Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
"mcpServers": {
"erpnext": {
"command": "node",
"args": ["/path/to/erpnext-mcp-server/build/index.js"],
"env": {
"ERPNEXT_URL": "https://erp.example.com",
"ERPNEXT_API_KEY": "your_api_key",
"ERPNEXT_API_SECRET": "your_api_secret"
}
}
}
}With MCP Inspector
npx @modelcontextprotocol/inspector node build/index.jsStandalone
npm startDevelopment
# Watch mode
npm run watch
# Run with tsx (no build needed)
npm run dev
# Build
npm run buildError Handling
This server includes detailed error extraction from ERPNext responses:
Parses
_server_messagesfor validation errorsExtracts exception details from ERPNext responses
Provides meaningful HTTP status messages
Includes debug logging when
ERPNEXT_DEBUG=true
Resources
The server also exposes MCP resources:
erpnext://DocTypes- List all available DocTypeserpnext://{doctype}/{name}- Access individual documents
License
MIT
Author
Kai Oesterling kai@oesterling.org
Credits
Based on the original erpnext-mcp-server by Rakesh Gangwar. Extended with workflows, custom fields, DocType creation, and improved error handling.
Available Tools
19 toolsadd_doctype_fieldAdd DocType FieldC
Add a custom field to an existing DocType
| Name | Required | Description | Default |
|---|---|---|---|
| reqd | No | Required (0 or 1) | |
| label | Yes | Field label | |
| doctype | Yes | Target DocType | |
| options | No | Options (for Link: DocType name, for Select: newline-separated values) | |
| fieldname | Yes | Field name (snake_case) | |
| fieldtype | Yes | Field type (Data, Link, Select, etc.) | |
| description | No | Help text | |
| insert_after | No | Insert after this field |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states that a field is added, with no mention of side effects, permissions, reversibility, success/failure behavior, or whether it modifies the DocType schema directly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that communicates the core purpose without redundancy or unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with 8 parameters, no annotations, and no output schema, a single sentence is insufficient. It does not explain return values, prerequisite conditions, error cases, or behavioral outcomes, though the schema covers parameter semantics adequately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% parameter coverage with descriptions for all 8 parameters, so the baseline is 3. The description itself adds no parameter-level details beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (Add), the resource (custom field), and the target (existing DocType). It is specific, but it does not explicitly differentiate from the sibling tool 'create_custom_field', which appears to serve the same purpose, preventing a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives like create_custom_field or create_document. It does not mention prerequisites, exclusions, or scenarios where another tool would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
authenticate_erpnextAuthenticate with ERPNextB
Authenticate with ERPNext using username and password (alternative to API key)
| Name | Required | Description | Default |
|---|---|---|---|
| password | Yes | ERPNext password | |
| username | Yes | ERPNext username |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral outcomes. It only mentions the authentication method, but does not explain what happens after successful authentication (e.g., returns a token/session), whether it is a prerequisite for other calls, or any side effects. This is a significant gap for an authentication tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no fluff, front-loading the action. Every word contributes to the core purpose, making it appropriately concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an authentication tool with no annotations and no output schema, the description is incomplete. It does not mention the authentication response, session handling, or the necessity to authenticate before using sibling tools, leaving critical context missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides clear descriptions for both parameters (username and password), and schema coverage is 100%. The description adds no additional meaning beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Authenticate with ERPNext using username and password'. It specifies a verb, resource, and method, and distinguishes itself from sibling tools (document/workflow operations) by focusing on authentication.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'alternative to API key' gives slight guidance on usage contexts, but it does not explicitly state when to use this tool (e.g., before other ERPNext operations) or when not to use it. No clear exclusions or alternative tool references are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_documentCancel DocumentB
Cancel a submitted document
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Document name/ID | |
| doctype | Yes | ERPNext DocType |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the action without describing effects (e.g., document state change, reversibility, permissions, or side effects), leaving the agent with insufficient behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that immediately states the action and target, with no filler or redundant information. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the tool's conceptual simplicity, the description lacks essential context about the cancellation workflow, such as what happens to the document after cancellation, any state constraints beyond 'submitted', or error conditions. With no annotations and no output schema, the description is under-specified for reliable agent invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides descriptions for both parameters (name and doctype), yielding 100% schema coverage. The description adds the qualifier 'submitted' but does not elaborate on parameter semantics beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Cancel' and identifies the resource as 'a submitted document', clearly distinguishing it from sibling tools like delete_document, submit_document, and update_document. The qualifier 'submitted' adds essential scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'submitted document' implies the tool is intended for cancelling documents that have already been submitted, giving some contextual guidance. However, it does not explicitly state when to use cancellation over deletion or other operations, nor does it mention alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_custom_fieldCreate Custom FieldB
Create a custom field that survives ERPNext updates
| Name | Required | Description | Default |
|---|---|---|---|
| label | Yes | Field label | |
| doctype | Yes | Target DocType | |
| options | No | Options | |
| fieldname | Yes | Field name | |
| fieldtype | Yes | Field type | |
| insert_after | No | Insert after field |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It does disclose one meaningful behavior—that the custom field persists across ERPNext updates—which is useful context. However, it does not mention potential side effects, whether the field is idempotent, error conditions, or required permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that is front-loaded with the verb 'Create'. It contains no wasted words and is appropriately minimal for the information it conveys.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with six parameters, no output schema, and no annotations, the description is too sparse. It does not explain what 'survives ERPNext updates' implies for usage, how the parameters interact, or what the result of a successful creation looks like.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema fully documents all six parameters. The description itself adds no additional parameter-level information, so the score aligns with the baseline for full schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: creating a custom field. It adds the value proposition 'survives ERPNext updates', which is specific and useful. However, it does not explicitly distinguish from the sibling tool 'add_doctype_field', which also appears to involve adding fields.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives like 'add_doctype_field' or 'create_property_setter'. The description only states what it does, not in which scenarios it should be preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_doctypeCreate DocTypeB
Create a new custom DocType in ERPNext
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | DocType name | |
| fields | Yes | Field definitions | |
| module | Yes | Module to place the DocType in | |
| autoname | No | Autoname pattern | |
| permissions | No | Permission rules | |
| title_field | No | Field to use as title | |
| is_child_table | No | Whether this is a child table | |
| is_submittable | No | Whether documents can be submitted |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only states that the tool creates a DocType; it does not mention permission requirements, whether the operation is irreversible, potential side effects like schema migrations, or the return format. This is a significant gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that immediately states the core purpose. It is front-loaded with the verb and resource, and contains no unnecessary words or filler. The length is appropriate for the simplicity of the core message, though it could be expanded with additional context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 8 parameters, no output schema, and no annotations, the description is incomplete for an agent to understand the full context. It does not explain what happens after creation, whether overrides are allowed, or the expected return value. The minimal description leaves too much unspecified for a tool that creates a structural entity like a DocType.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides descriptions for all 8 parameters (100% coverage), including fields, module, autoname, and permissions. The description adds no further semantic detail about the parameters themselves. Since schema coverage is complete, the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Create') and a clear resource ('new custom DocType in ERPNext'), which clearly distinguishes this tool from siblings like create_document (creates a document of an existing DocType) and create_custom_field (adds a field to an existing DocType). It is more than a tautology because it names both the action and the object.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention when it is appropriate to create a custom DocType, nor does it contrast with tools like create_custom_field or create_document. There is no explicit context or exclusions, leaving the agent to infer usage solely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_documentCreate DocumentB
Create a new document in ERPNext
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Document data | |
| doctype | Yes | ERPNext DocType (e.g., Customer, Item) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden of behavioral disclosure. It only states 'create', which implies a write operation, but gives no details on permissions, idempotency, return values, or error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one short sentence with no unnecessary words, adhering to the principle that every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and no output schema, the description is incomplete. It does not explain the return value, validation expectations, or how the create operation relates to other workflow steps (e.g., submit). The schema is minimal, leaving data as a free-form object.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Both parameters (doctype and data) have descriptions in the schema, giving 100% coverage. The tool description adds no extra parameter semantics, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'create' with the resource 'document' in the context of ERPNext. It distinguishes itself from sibling tools like update_document, delete_document, and get_document by specifying the create action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like update_document or submit_document. It only implies usage for creating a new document, but does not explicitly state conditions or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_property_setterCreate Property SetterC
Override a DocType or field property
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | New value | |
| doctype | Yes | Target DocType | |
| property | Yes | Property to override | |
| fieldname | No | Target field (omit for DocType-level property) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. 'Override' is vague—it doesn't explain that this creates a Property Setter record, whether changes are global/persistent, require permissions, or affect existing data. No side effects or prerequisites are mentioned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-formed sentence with no wasted words. However, it is so terse that it borders on under-specification, providing only the bare definition without helpful context. It is not as egregious as a tautology, but it lacks the substance expected of a genuinely helpful description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description is inadequate. It doesn't explain what 'override' entails, how the required parameters interact, what values are valid, or what the response or side effects are. The schema covers parameter descriptions, but broader context is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides 100% coverage with descriptions for all four parameters. The description adds minimal semantic value beyond the schema, only noting that 'property' and 'fieldname' relate to DocType-level or field-level targets. This is consistent with the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Override a DocType or field property' is a specific verb+resource statement that clearly indicates the tool's function. It distinguishes itself from document manipulation tools like update_document, but doesn't explicitly contrast with related property/customization tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. It doesn't mention scenarios such as needing to change a DocType's custom properties, nor does it exclude cases better handled by create_custom_field or update_document.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_workflowCreate WorkflowB
Create a new workflow for a DocType
| Name | Required | Description | Default |
|---|---|---|---|
| states | Yes | Workflow states | |
| is_active | No | Whether workflow is active | |
| transitions | Yes | Workflow transitions | |
| document_type | Yes | DocType this workflow applies to | |
| workflow_name | Yes | Workflow name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must convey behavioral traits. It only states the action with no mention of side effects, permissions, validation, duplication behavior, or return value. For a write operation, this is a critical gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence with no fluff. It conveys the core purpose without any wasted words, making it front-loaded and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the complexity of the tool (nested states/transitions arrays, required fields), the description gives only a minimal overview. It does not explain the relationship between states and transitions or what constitutes a valid workflow, leaving the agent to rely entirely on the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters and their meanings. The description adds no additional parameter-level insights, meeting the baseline expected when the schema handles the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('Create a new workflow') on a specific resource ('a DocType'), distinguishing it from sibling tools like get_workflow and update_workflow. The verb and resource are precise and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The verb 'Create' clearly implies this tool is for new workflows, and the presence of siblings get_workflow and update_workflow indicates alternatives. However, the description does not explicitly mention when not to use it or name the alternatives directly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_documentDelete DocumentC
Delete a document from ERPNext
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Document name/ID | |
| doctype | Yes | ERPNext DocType |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only says 'delete a document' without mentioning permanence, permission requirements, or effects on related records, which is a significant gap for a destructive action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no redundant information. It is front-loaded and efficiently communicates the action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the destructive nature and the presence of sibling tools like cancel_document, the description lacks important context about when deletion is permitted and what the consequences are. Without annotations or an output schema, this is incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides descriptions for both parameters (doctype and name), so the description adds nothing beyond the schema. High schema coverage justifies a baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool deletes a document from ERPNext, using a specific verb and resource. It does not explicitly distinguish from cancel_document, but the verb 'delete' is distinct enough to convey the core purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No usage guidance is provided. It does not mention when to use delete versus cancel_document, or any conditions for deleting a document, leaving the agent to infer the appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_doctype_fieldsGet DocType FieldsA
Get field definitions for a specific DocType
| Name | Required | Description | Default |
|---|---|---|---|
| doctype | Yes | ERPNext DocType |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It only restates the core action and adds a generic scoping phrase, providing no deeper behavioral detail (e.g., whether hidden fields are included, return format, authentication needs). This is barely beyond a tautology and offers minimal transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no redundant words. It is appropriately concise for a simple, single-purpose tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with one parameter and no output schema, but the description leaves ambiguity about what 'field definitions' includes (e.g., field names only vs. full metadata with types, mandatory flags) and how it overlaps with get_doctype_meta. Additional details about the return payload would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema fully describes the only parameter ('doctype' as 'ERPNext DocType'), giving 100% coverage. The description adds no extra meaning beyond echoing the scoping, so it meets the baseline without enriching parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Get' with a clear resource ('field definitions') and scoping ('for a specific DocType'). It distinguishes the tool from siblings like get_doctypes (list of doctypes) and get_doctype_meta (metadata for a doctype), making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The usage is implied: the agent can infer this tool is for retrieving field definitions for a given DocType. However, there is no explicit when-to-use guidance or mention of alternatives, such as how this differs from get_doctype_meta or when to prefer it over other field-related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_doctype_metaGet DocType MetadataC
Get complete metadata for a DocType including all configuration
| Name | Required | Description | Default |
|---|---|---|---|
| doctype | Yes | ERPNext DocType |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden for behavioral disclosure. However, it only says 'Get complete metadata' without mentioning read-only nature, return format, scope of configuration (e.g., fields, permissions, customizations), or any side effects. It adds no behavioral context beyond the name, leaving the agent uninformed about what to expect.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, front-loaded with the key verb 'Get'. It is appropriately sized for a simple tool and contains no unnecessary words or repetition. Every word earns its place, even if the content is somewhat vague.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description must carry the burden of explaining what the tool returns and when to use it. 'Complete metadata including all configuration' is ambiguous—it doesn't specify whether fields are included, how the data is structured, or any authentication requirements. This leaves significant gaps for a tool that likely returns a complex object.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has one parameter, 'doctype', with a description 'ERPNext DocType' (100% schema coverage). The tool description does not add parameter-specific details, but since the schema already explains the parameter, the baseline score of 3 is appropriate. The description's mention of 'metadata' implicitly ties to the doctype parameter but adds no further semantic value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (get) and the resource (metadata for a DocType), with a hint that it covers 'all configuration'. It distinguishes itself from the sibling get_doctype_fields by implying a broader scope, though it does not explicitly name alternatives. The verb and object are specific enough to avoid confusion with unrelated tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like get_doctype_fields or get_doctypes. It does not state any exclusions, prerequisites, or context such as 'use this when you need full DocType settings beyond just fields'. The implied usage is minimal and not supported by explicit direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_doctypesGet DocTypesB
Get a list of all available DocTypes in ERPNext
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It fails to mention authentication requirements (notable given the sibling authenticate_erpnext), return format, pagination, or potential side effects. The description is purely a high-level statement of functionality.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, directly states the purpose, and contains no filler. It is appropriately sized for a tool with no parameters and straightforward behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is minimal and does not explain the response structure (e.g., array of doctype names) or mention authentication prerequisites, which are relevant given the ERPNext context and the presence of an authenticate_erpnext sibling. Without an output schema, the description should offer more detail about what to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. The description does not need to explain parameter semantics, and the empty schema is fully covered.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves a list of all available DocTypes in ERPNext, using a specific verb and resource. It distinguishes itself from sibling tools like get_doctype_fields and get_doctype_meta by explicitly covering the full list of doctypes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description does not mention any context, prerequisites, or exclusions, leaving the agent to infer usage solely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_documentGet DocumentA
Get a single document by DocType and name
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Document name/ID | |
| doctype | Yes | ERPNext DocType (e.g., Customer, Item) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only says 'Get a single document by DocType and name' and does not disclose error behavior (e.g., not found), permissions, or that it is a read-only operation. This is minimal and leaves significant behavioral traits undisclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the action and resource. There is zero wasted wording, and the structure is highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple and the parameters are clearly documented, but there is no output schema and no annotations. The description does not mention what is returned (the document object) or error handling, leaving some gaps. It is adequate but not fully complete for a retrieval tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides complete descriptions for both parameters (name, doctype) with 100% coverage. The description merely references 'DocType and name' without adding examples, format details, or constraints, so it adds no value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets a single document by DocType and name, using a specific verb and resource. The singular 'single document' distinguishes it from sibling get_documents, which implies multiple documents.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'single document' provides clear context for when to use this tool (retrieving one specific document), but it does not explicitly mention alternatives or exclusions. It does not name get_documents as the alternative for multiple documents, so it lacks explicit when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_documentsGet DocumentsB
Get a list of documents for a specific DocType with optional filtering
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of documents to return | |
| fields | No | Fields to include | |
| doctype | Yes | ERPNext DocType (e.g., Customer, Item) | |
| filters | No | Filter conditions as {field: value} |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It communicates a read operation via 'Get', but does not explicitly state that it is read-only, nor does it disclose any caveats such as authentication requirements, pagination behavior, or side effects. This is minimal for a tool with no annotation support.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that is front-loaded with the action and resource. It contains no filler and every word adds meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema and no annotations, yet the description does not clarify return format, pagination, or how it differs from get_document. Given the sibling list, some guidance on when to use this vs. get_document would be necessary for full contextual completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains all four parameters. The description adds only 'specific DocType' and 'optional filtering', which are already present in the schema, so no significant additional meaning is provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and resource ('list of documents') and clearly scopes to 'a specific DocType with optional filtering'. This distinguishes it from the sibling get_document (singular) tool, which presumably retrieves a single document.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this is for retrieving multiple documents filtered by DocType, but it does not explicitly say when to use this versus get_document, create_document, or run_report. There is no mention of alternatives or exclusions, so guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_workflowGet WorkflowB
Get the active workflow for a DocType
| Name | Required | Description | Default |
|---|---|---|---|
| doctype | Yes | DocType to get workflow for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full behavioral burden. It states 'active' which adds a qualifier, but it does not disclose return format, error behavior (e.g., what if no active workflow exists), or permissions. The tool appears to be a read operation, but this is not explicitly stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is concise and to the point. There is no fluff or redundant content; it delivers the essential purpose efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although the tool is simple with one parameter, there is no output schema and no explanation of what the tool returns (e.g., a workflow object, a name, or a list). The description also fails to address edge cases like no active workflow or multiple workflows. This is a significant gap for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 100% of the parameter and already describes 'doctype' as 'DocType to get workflow for'. The tool description merely repeats the same context ('for a DocType') without adding extra meaning, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the specific resource 'active workflow for a DocType'. It distinguishes itself from siblings like create_workflow, update_workflow, and get_document by focusing specifically on retrieving the active workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool (to fetch a specific workflow definition) but does not explicitly mention any alternatives or when not to use it. It doesn't say 'use this instead of get_document' or 'if you need the full document list, use get_documents', leaving usage guidance implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_reportRun ReportC
Execute an ERPNext report and get results
| Name | Required | Description | Default |
|---|---|---|---|
| filters | No | Report filters | |
| report_name | Yes | Name of the report |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It does not mention whether report execution is read-only, has side effects, requires specific permissions, or how results are returned. The minimal wording omits important details for an execution tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded and to the point. Every word contributes to the core purpose, though 'get results' is somewhat vague and would benefit from additional specificity without compromising conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema and minimal annotations, yet the description does not compensate by explaining return formats, filter usage, or report name conventions. For an execution tool with this complexity, the description is incomplete and leaves significant gaps for the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents both parameters (report_name and filters) with full coverage, so the description adds no new semantic meaning. The schema describes filters only as an object, and the description does not clarify filter keys or structure, but the baseline for high schema coverage is met.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('execute') with a clear resource ('ERPNext report') and outcome ('get results'). It distinguishes itself from sibling tools, which all focus on document/doctype operations rather than report execution, though it does not specify types of reports or any unique scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given for when to use this tool versus alternatives or any prerequisites. The tool is unique among siblings (no other report tool), which implies its use for report execution, but the description does not explicitly state usage context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_documentSubmit DocumentA
Submit a document (Draft → Submitted). Only works for submittable DocTypes.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Document name/ID | |
| doctype | Yes | ERPNext DocType |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It does disclose the core behavior: a state transition from Draft to Submitted, and the submittable DocType constraint. However, it omits other relevant behavioral traits such as what happens on failure, return values, or whether the action is reversible, which is significant for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the action and includes a critical constraint. Every word is necessary, with no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has only two simple parameters and no output schema. The description covers the purpose and a key constraint, but it does not explain what the tool returns or error scenarios. An agent might need to know how to confirm success, making the description adequate but incomplete in some aspects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides 100% coverage for both parameters (name and doctype) with descriptions. The tool description adds no extra parameter-level meaning, so it does not improve upon the schema. The baseline of 3 applies given high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Submit a document' and specifies the exact state transition 'Draft → Submitted'. It also notes the constraint 'Only works for submittable DocTypes,' which distinguishes it from siblings like create_document, update_document, and cancel_document. This makes the tool's purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: to submit a document, moving it from Draft to Submitted. It also provides a clear constraint (only submittable DocTypes). However, it does not explicitly name alternatives or state when not to use it, though the purpose is specific enough to guide selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_documentUpdate DocumentC
Update an existing document in ERPNext
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Fields to update | |
| name | Yes | Document name/ID | |
| doctype | Yes | ERPNext DocType |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for disclosing behavior. It adds minimal information beyond the name, not explaining partial vs full updates, required permissions, error handling, or side effects. This is insufficient for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no fluff. It is appropriately brief, though it could be more informative without sacrificing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema or annotations, this description is incomplete. It does not mention return values, errors, or operational semantics, making it inadequate for an agent to fully anticipate the tool's behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter clearly described ('Fields to update', 'Document name/ID', 'ERPNext DocType'). The description adds no extra parameter meaning, so baseline 3 applies since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool updates an existing document in ERPNext, with a specific verb and resource. It distinguishes from create_document and delete_document by implying mutation of an existing record, though it does not explicitly compare against submit_document or cancel_document.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as create_document or submit_document. The description simply says 'update an existing document' without contextual cues or exclusions, leaving the agent to infer suitability.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_workflowUpdate WorkflowC
Update an existing workflow
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Workflow name | |
| updates | Yes | Properties to update |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full burden of disclosing behavior. It only states that it updates an existing workflow, implying mutation but not disclosing whether updates are additive or destructive, whether validation occurs, what happens to existing workflow properties, or if authentication is required. This is a significant gap for a tool that modifies state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence and is front-loaded, but it essentially restates the title. It is concise but not informationally dense. While it avoids wasted words, it also avoids providing any additional value, making it minimally acceptable rather than well-crafted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The context is incomplete for a mutation tool. There is no output schema, and the description does not explain return values, errors, or side effects. The 'updates' parameter is open-ended, and the description offers no example or clarification. With no annotations and minimal schema detail, the description fails to provide sufficient context for safe and correct usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each parameter has a description. The 'updates' object is described as 'Properties to update' but with additionalProperties allowed, the actual valid keys are not documented. The tool description adds no extra meaning beyond the schema, and the schema itself is vague about possible update properties. Baseline 3 is appropriate since the schema covers parameter descriptions, but neither the schema nor the description clarifies permissible update keys.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Update') and the resource ('an existing workflow'). It distinguishes itself from siblings like create_workflow (by specifying 'existing') and get_workflow (by being a mutation verb). However, it doesn't detail what 'updates' means or what aspects of the workflow can be modified.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives (e.g., update_document, create_workflow). There is no mention of prerequisites, exclusions, or typical use cases. The description is purely a statement of action without context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
19 tool updates
v2.0.0- First observed
add_doctype_field - First observed
authenticate_erpnext - First observed
cancel_document - First observed
create_custom_field - First observed
create_doctype - First observed
create_document - First observed
create_property_setter - First observed
create_workflow - First observed
delete_document - First observed
get_doctype_fields - First observed
get_doctype_meta - First observed
get_doctypes - First observed
get_document - First observed
get_documents - First observed
get_workflow - First observed
run_report - First observed
submit_document - First observed
update_document - First observed
update_workflow
TDQS
Scored across 19 tools
Most tools are distinct, but get_doctype_fields and get_doctype_meta overlap in scope, and add_doctype_field vs create_custom_field can confuse agents about which to use. Descriptions help but boundaries are not always clear.
Tool names generally follow a verb_noun pattern (get_document, create_document, submit_document), but there are minor inconsistencies such as singular vs plural (get_document vs get_documents) and mixed resource naming (create_custom_field vs add_doctype_field).
At 19 tools, the count is slightly above the ideal 3-15 range but still reasonable for an ERP system covering documents, Doctypes, workflows, and reports. The breadth justifies the number without feeling bloated.
The toolset covers document CRUD, lifecycle actions (submit/cancel), DocType management, customization, workflows, and report execution. Minor gaps exist such as no delete workflow or update custom field, but core workflows are well supported.
Maintenance
Related MCP Connectors
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
MCP server for Appcircle mobile CI/CD platform.
Hosted MCP server for AI-driven data ops. Create apps, manage schemas, and CRUD structured data.
MCP server for managing FormDesigner forms, fields, logic rules, themes, and entries
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceThis MCP server connects ChatGPT to ERPNext, enabling AI-powered business analytics, report generation, and document management.MIT
- AlicenseNot gradedqualityAmaintenanceMCP server that enables LLMs to interact with ERPNext/Frappe sites for document CRUD, search, reports, workflows, and analytics, respecting user permissions and logging all actions.308AGPL 3.0
- AlicenseNot gradedqualityBmaintenanceEnables ERPNext management, file operations, read-only database access, and ERPNext API integration through a standardized MCP server.4MIT
- AlicenseNot gradedqualityCmaintenanceA comprehensive MCP server for ERPNext providing generic, doctype-agnostic access to any ERPNext document type with robust permission controls, audit logging, and enterprise-grade security.MIT