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",
    }
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Tool has no description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness1/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Tool has no description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool has no description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Tool has no description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tool has no description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Tool has no description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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