Skip to main content
Glama
Kai-Oesterling

ERPNext MCP Server

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 name

  • get_documents - List documents with filtering, field selection, and pagination

  • create_document - Create new documents

  • update_document - Update existing documents

  • delete_document - Delete documents

  • submit_document - Submit submittable documents (Draft → Submitted)

  • cancel_document - Cancel submitted documents

DocType Management

  • get_doctypes - List all available DocTypes

  • get_doctype_fields - Get field definitions for a DocType

  • get_doctype_meta - Get complete DocType metadata

  • create_doctype - Create new custom DocTypes

  • add_doctype_field - Add fields to existing DocTypes

  • create_custom_field - Create custom fields (survives updates)

  • create_property_setter - Override DocType/field properties

Workflow Management

  • get_workflow - Get active workflow for a DocType

  • create_workflow - Create new workflows with states and transitions

  • update_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-server

Or clone and build:

git clone https://github.com/Kai-Oesterling/erpnext-mcp-server.git
cd erpnext-mcp-server
npm install
npm run build

Configuration

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=true

Creating API Keys in ERPNext

  1. Go to User settings in ERPNext

  2. Navigate to "API Access" section

  3. Generate new API Key and Secret

  4. 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.js

Standalone

npm start

Development

# Watch mode
npm run watch

# Run with tsx (no build needed)
npm run dev

# Build
npm run build

Error Handling

This server includes detailed error extraction from ERPNext responses:

  • Parses _server_messages for validation errors

  • Extracts 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 DocTypes

  • erpnext://{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 tools
add_doctype_fieldAdd DocType FieldC

Add a custom field to an existing DocType

ParametersJSON Schema
NameRequiredDescriptionDefault
reqdNoRequired (0 or 1)
labelYesField label
doctypeYesTarget DocType
optionsNoOptions (for Link: DocType name, for Select: newline-separated values)
fieldnameYesField name (snake_case)
fieldtypeYesField type (Data, Link, Select, etc.)
descriptionNoHelp text
insert_afterNoInsert after this field

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
passwordYesERPNext password
usernameYesERPNext username

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesDocument name/ID
doctypeYesERPNext DocType

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
labelYesField label
doctypeYesTarget DocType
optionsNoOptions
fieldnameYesField name
fieldtypeYesField type
insert_afterNoInsert after field

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesDocType name
fieldsYesField definitions
moduleYesModule to place the DocType in
autonameNoAutoname pattern
permissionsNoPermission rules
title_fieldNoField to use as title
is_child_tableNoWhether this is a child table
is_submittableNoWhether documents can be submitted

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesDocument data
doctypeYesERPNext DocType (e.g., Customer, Item)

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
valueYesNew value
doctypeYesTarget DocType
propertyYesProperty to override
fieldnameNoTarget field (omit for DocType-level property)

TDQS

C2.8/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
statesYesWorkflow states
is_activeNoWhether workflow is active
transitionsYesWorkflow transitions
document_typeYesDocType this workflow applies to
workflow_nameYesWorkflow name

TDQS

B3.4/5.0
Behavior1/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesDocument name/ID
doctypeYesERPNext DocType

TDQS

C2.7/5.0
Behavior1/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
doctypeYesERPNext DocType

TDQS

A3.5/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
doctypeYesERPNext DocType

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesDocument name/ID
doctypeYesERPNext DocType (e.g., Customer, Item)

TDQS

A3.7/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of documents to return
fieldsNoFields to include
doctypeYesERPNext DocType (e.g., Customer, Item)
filtersNoFilter conditions as {field: value}

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
doctypeYesDocType to get workflow for

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
filtersNoReport filters
report_nameYesName of the report

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesDocument name/ID
doctypeYesERPNext DocType

TDQS

A3.9/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesFields to update
nameYesDocument name/ID
doctypeYesERPNext DocType

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesWorkflow name
updatesYesProperties to update

TDQS

C2.8/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

  1. 19 tool updatesv2.0.0
    • First observedadd_doctype_field
    • First observedauthenticate_erpnext
    • First observedcancel_document
    • First observedcreate_custom_field
    • First observedcreate_doctype
    • First observedcreate_document
    • First observedcreate_property_setter
    • First observedcreate_workflow
    • First observeddelete_document
    • First observedget_doctype_fields
    • First observedget_doctype_meta
    • First observedget_doctypes
    • First observedget_document
    • First observedget_documents
    • First observedget_workflow
    • First observedrun_report
    • First observedsubmit_document
    • First observedupdate_document
    • First observedupdate_workflow

TDQS

B3.2/5.0

Scored across 19 tools

Disambiguation3/5

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.

Naming Consistency4/5

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).

Tool Count4/5

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.

Completeness4/5

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

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    MCP 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.
    308
    AGPL 3.0
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables ERPNext management, file operations, read-only database access, and ERPNext API integration through a standardized MCP server.
    4
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    A 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