Skip to main content
Glama
unctad-ai

eRegulations MCP Server

by unctad-ai

getProcedureDetails

Retrieve detailed information on specific administrative procedures using the procedure ID, enabling structured access to eRegulations data for AI-driven insights.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
procedureIdYesID of the procedure to retrieve

Implementation Reference

  • The main handler implementation for the getProcedureDetails tool. It creates a ToolHandler object with the tool's metadata and the async execution logic that retrieves procedure details via the ERegulationsApi and formats the response.
    export function createGetProcedureDetailsHandler(
      api: ERegulationsApi
    ): ToolHandler {
      return {
        name: ToolName.GET_PROCEDURE_DETAILS,
        description: `Get detailed information about a specific procedure by ID.`,
        inputSchema: zodToJsonSchema(GetProcedureDetailsSchema),
        inputSchemaDefinition: GetProcedureDetailsSchema,
        handler: async (args: any) => {
          try {
            // Use the inferred type for args
            const { procedureId } = args as GetProcedureDetailsArgs;
    
            logger.log(
              `Handling GET_PROCEDURE_DETAILS request for ID ${procedureId}`
            );
    
            const procedure = await api.getProcedureById(procedureId);
    
            // Use the formatter - Get result (data part will be ignored)
            const formattedResult = formatters.procedure.format(procedure);
    
            logger.log(
              `GET_PROCEDURE_DETAILS returning details for ${procedure.name}`
            );
    
            // Always return only text content
            return {
              content: [
                {
                  type: "text",
                  text: formattedResult.text, // Data part of formattedResult is ignored
                },
              ],
            };
          } catch (error: any) {
            const errorMessage = error.message || String(error);
            logger.error(
              `Error in GET_PROCEDURE_DETAILS handler for ID ${args?.procedureId}:`,
              errorMessage
            );
    
            return {
              content: [
                {
                  type: "text",
                  text: `Error retrieving procedure details: ${errorMessage}\n\nValid procedure IDs can be found by using the listProcedures tool first.`,
                },
              ],
            };
          }
        },
      };
    }
  • Zod schema definition for the input parameters of the getProcedureDetails tool, requiring a positive integer procedureId.
    export const GetProcedureDetailsSchema = z.object({
      procedureId: z
        .number()
        .int()
        .positive()
        .describe("ID of the procedure to retrieve"),
    });
  • Registration of all tools, including getProcedureDetails, with the MCP server using server.tool() in a loop over the handlers array.
    handlers.forEach((handler) => {
      const schemaDef = handler.inputSchemaDefinition;
      // Check if it's an instance of ZodObject
      if (schemaDef instanceof z.ZodObject) {
        // Now TypeScript knows schemaDef is a ZodObject and has .shape
        // Cast handler to 'any' to bypass strict type checking
        server.tool(handler.name, schemaDef.shape, handler.handler as any);
        logger.info(`Registered tool '${handler.name}' with McpServer`);
      } else {
        // Handle non-object schemas or log warning
        logger.warn(
          `Could not register tool '${handler.name}': Schema is not a ZodObject.`
        );
      }
    });
  • The createHandlers function that includes the getProcedureDetails handler in the array of all tool handlers, called from mcp-server.ts.
    export function createHandlers(api: ERegulationsApi): ToolHandler[] {
      return [
        createListProceduresHandler(api),
        createGetProcedureDetailsHandler(api),
        createGetProcedureStepHandler(api),
        createSearchProceduresHandler(api),
      ];
    }
  • Enum defining the tool names, including GET_PROCEDURE_DETAILS used as the tool name string.
    export enum ToolName {
      LIST_PROCEDURES = "listProcedures",
      GET_PROCEDURE_DETAILS = "getProcedureDetails",
      GET_PROCEDURE_STEP = "getProcedureStep",
      SEARCH_PROCEDURES = "searchProcedures",
    }
Install Server

Other Tools

Related Tools

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/unctad-ai/eregulations-mcp-server'

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