Skip to main content
Glama

get_doctypes

Retrieve all available document types from ERPNext to understand data structures and access options for system integration.

Instructions

Get a list of all available DocTypes

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • The handler for the 'get_doctypes' tool within the CallToolRequestSchema switch statement. It verifies authentication, calls erpnext.getAllDocTypes() to retrieve the list, and returns it as formatted JSON or an error message.
    case "get_doctypes": {
      if (!erpnext.isAuthenticated()) {
        return {
          content: [{
            type: "text",
            text: "Not authenticated with ERPNext. Please configure API key authentication."
          }],
          isError: true
        };
      }
      
      try {
        const doctypes = await erpnext.getAllDocTypes();
        return {
          content: [{
            type: "text",
            text: JSON.stringify(doctypes, null, 2)
          }]
        };
      } catch (error: any) {
        return {
          content: [{
            type: "text",
            text: `Failed to get DocTypes: ${error?.message || 'Unknown error'}`
          }],
          isError: true
        };
      }
    }
  • src/index.ts:325-332 (registration)
    Tool registration in the ListToolsRequestSchema handler, defining the tool name, description, and empty input schema (no parameters required).
    {
      name: "get_doctypes",
      description: "Get a list of all available DocTypes",
      inputSchema: {
        type: "object",
        properties: {}
      }
    },
  • Input schema for the get_doctypes tool: an empty object, indicating no input parameters are required.
    inputSchema: {
      type: "object",
      properties: {}
    }
  • ERPNextClient method implementing the core logic to fetch all available DocTypes from the ERPNext API, with fallback methods and a hardcoded list of common DocTypes.
      async getAllDocTypes(): Promise<string[]> {
        try {
          // Use the standard REST API to fetch DocTypes
          const response = await this.axiosInstance.get('/api/resource/DocType', {
            params: {
              fields: JSON.stringify(["name"]),
              limit_page_length: 500 // Get more doctypes at once
            }
          });
          
          if (response.data && response.data.data) {
            return response.data.data.map((item: any) => item.name);
          }
          
          return [];
        } catch (error: any) {
          console.error("Failed to get DocTypes:", error?.message || 'Unknown error');
          
          // Try an alternative approach if the first one fails
          try {
            // Try using the method API to get doctypes
            const altResponse = await this.axiosInstance.get('/api/method/frappe.desk.search.search_link', {
              params: {
                doctype: 'DocType',
                txt: '',
                limit: 500
              }
            });
            
            if (altResponse.data && altResponse.data.results) {
              return altResponse.data.results.map((item: any) => item.value);
            }
            
            return [];
          } catch (altError: any) {
            console.error("Alternative DocType fetch failed:", altError?.message || 'Unknown error');
            
            // Fallback: Return a list of common DocTypes
            return [
              "Customer", "Supplier", "Item", "Sales Order", "Purchase Order",
              "Sales Invoice", "Purchase Invoice", "Employee", "Lead", "Opportunity",
              "Quotation", "Payment Entry", "Journal Entry", "Stock Entry"
            ];
          }
        }
      }
    }

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