Skip to main content
Glama

get_documents

Retrieve filtered lists of ERPNext documents by doctype, with options to specify fields, apply filters, and set limits for targeted data access.

Instructions

Get a list of documents for a specific doctype

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
doctypeYesERPNext DocType (e.g., Customer, Item)
fieldsNoFields to include (optional)
filtersNoFilters in the format {field: value} (optional)
limitNoMaximum number of documents to return (optional)

Implementation Reference

  • Tool handler for 'get_documents': validates authentication and parameters, calls erpnext.getDocList to fetch documents, and returns JSON stringified result or error.
    case "get_documents": {
      if (!erpnext.isAuthenticated()) {
        return {
          content: [{
            type: "text",
            text: "Not authenticated with ERPNext. Please configure API key authentication."
          }],
          isError: true
        };
      }
      
      const doctype = String(request.params.arguments?.doctype);
      const fields = request.params.arguments?.fields as string[] | undefined;
      const filters = request.params.arguments?.filters as Record<string, any> | undefined;
      const limit = request.params.arguments?.limit as number | undefined;
      
      if (!doctype) {
        throw new McpError(
          ErrorCode.InvalidParams,
          "Doctype is required"
        );
      }
      
      try {
        const documents = await erpnext.getDocList(doctype, filters, fields, limit);
        return {
          content: [{
            type: "text",
            text: JSON.stringify(documents, null, 2)
          }]
        };
      } catch (error: any) {
        return {
          content: [{
            type: "text",
            text: `Failed to get ${doctype} documents: ${error?.message || 'Unknown error'}`
          }],
          isError: true
        };
      }
    }
  • Input schema definition for the 'get_documents' tool, specifying required 'doctype' and optional fields, filters, limit.
      name: "get_documents",
      description: "Get a list of documents for a specific doctype",
      inputSchema: {
        type: "object",
        properties: {
          doctype: {
            type: "string",
            description: "ERPNext DocType (e.g., Customer, Item)"
          },
          fields: {
            type: "array",
            items: {
              type: "string"
            },
            description: "Fields to include (optional)"
          },
          filters: {
            type: "object",
            additionalProperties: true,
            description: "Filters in the format {field: value} (optional)"
          },
          limit: {
            type: "number",
            description: "Maximum number of documents to return (optional)"
          }
        },
        required: ["doctype"]
      }
    },
  • src/index.ts:324-439 (registration)
    Registration of 'get_documents' tool in the list of available tools returned by ListToolsRequestSchema handler.
      tools: [
        {
          name: "get_doctypes",
          description: "Get a list of all available DocTypes",
          inputSchema: {
            type: "object",
            properties: {}
          }
        },
        {
          name: "get_doctype_fields",
          description: "Get fields list for a specific DocType",
          inputSchema: {
            type: "object",
            properties: {
              doctype: {
                type: "string",
                description: "ERPNext DocType (e.g., Customer, Item)"
              }
            },
              required: ["doctype"]
          }
        },
        {
          name: "get_documents",
          description: "Get a list of documents for a specific doctype",
          inputSchema: {
            type: "object",
            properties: {
              doctype: {
                type: "string",
                description: "ERPNext DocType (e.g., Customer, Item)"
              },
              fields: {
                type: "array",
                items: {
                  type: "string"
                },
                description: "Fields to include (optional)"
              },
              filters: {
                type: "object",
                additionalProperties: true,
                description: "Filters in the format {field: value} (optional)"
              },
              limit: {
                type: "number",
                description: "Maximum number of documents to return (optional)"
              }
            },
            required: ["doctype"]
          }
        },
        {
          name: "create_document",
          description: "Create a new document in ERPNext",
          inputSchema: {
            type: "object",
            properties: {
              doctype: {
                type: "string",
                description: "ERPNext DocType (e.g., Customer, Item)"
              },
              data: {
                type: "object",
                additionalProperties: true,
                description: "Document data"
              }
            },
            required: ["doctype", "data"]
          }
        },
        {
          name: "update_document",
          description: "Update an existing document in ERPNext",
          inputSchema: {
            type: "object",
            properties: {
              doctype: {
                type: "string",
                description: "ERPNext DocType (e.g., Customer, Item)"
              },
              name: {
                type: "string",
                description: "Document name/ID"
              },
              data: {
                type: "object",
                additionalProperties: true,
                description: "Document data to update"
              }
            },
            required: ["doctype", "name", "data"]
          }
        },
        {
          name: "run_report",
          description: "Run an ERPNext report",
          inputSchema: {
            type: "object",
            properties: {
              report_name: {
                type: "string",
                description: "Name of the report"
              },
              filters: {
                type: "object",
                additionalProperties: true,
                description: "Report filters (optional)"
              }
            },
            required: ["report_name"]
          }
        }
      ]
    };
  • ERPNextClient.getDocList method: performs the actual API request to fetch document list for a doctype with optional filters, fields, and limit.
    async getDocList(doctype: string, filters?: Record<string, any>, fields?: string[], limit?: number): Promise<any[]> {
      try {
        let params: Record<string, any> = {};
        
        if (fields && fields.length) {
          params['fields'] = JSON.stringify(fields);
        }
        
        if (filters) {
          params['filters'] = JSON.stringify(filters);
        }
        
        if (limit) {
          params['limit_page_length'] = limit;
        }
        
        const response = await this.axiosInstance.get(`/api/resource/${doctype}`, { params });
        return response.data.data;
      } catch (error: any) {
        throw new Error(`Failed to get ${doctype} list: ${error?.message || 'Unknown error'}`);
      }
    }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/rakeshgangwar/erpnext-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server