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