Skip to main content
Glama

check_ich_compliance

Validate study descriptions against ICH guidelines such as E6(R3) or Q1A(R2) and receive a detailed compliance assessment.

Instructions

Check a description of a study or document against ICH guideline requirements and return a compliance assessment.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
descriptionYesDescription of the study or document to assess
guideline_codeYesICH guideline to check against, e.g. 'E6(R3)', 'Q1A(R2)'

Implementation Reference

  • Tool schema definition for 'check_ich_compliance': defines name, description, and inputSchema with parameters 'description' and 'guideline_code'.
    {
              name: "check_ich_compliance",
              description: "Check a description of a study or document against ICH guideline requirements and return a compliance assessment.",
              inputSchema: {
                          type: "object",
                          properties: {
                                        description: { type: "string", description: "Description of the study or document to assess" },
                                        guideline_code: { type: "string", description: "ICH guideline to check against, e.g. 'E6(R3)', 'Q1A(R2)'" }
                          },
                          required: ["description", "guideline_code"]
              }
    }
  • src/index.ts:260-335 (registration)
    The tool is registered as part of the ListToolsRequestHandler which returns the tools array containing all tool definitions.
    server.setRequestHandler(ListToolsRequestSchema, async () => ({
          tools: [
            {
                      name: "lookup_ich_guideline",
                      description: "Look up an ICH guideline by code (e.g. E6(R3), M4, Q1A). Returns scope, key requirements, and official URL.",
                      inputSchema: {
                                  type: "object",
                                  properties: {
                                                guideline_code: { type: "string", description: "ICH guideline code, e.g. 'E6(R3)', 'M4(R4)', 'Q3D(R2)', 'M7(R2)'" }
                                  },
                                  required: ["guideline_code"]
                      }
            },
            {
                      name: "map_ctd_section",
                      description: "Map a document type or data package to the correct CTD/eCTD module and section. Returns the full section hierarchy.",
                      inputSchema: {
                                  type: "object",
                                  properties: {
                                                module: { type: "string", description: "CTD module number: '1', '2', '3', '4', or '5'" },
                                                submission_type: { type: "string", description: "Submission type: 'NDA', 'BLA', 'MAA', or 'JNDA'" }
                                  },
                                  required: ["module"]
                      }
            },
            {
                      name: "check_ctd_completeness",
                      description: "Check a list of provided CTD sections against required sections and identify gaps.",
                      inputSchema: {
                                  type: "object",
                                  properties: {
                                                provided_sections: { type: "array", items: { type: "string" }, description: "List of CTD sections already prepared" },
                                                submission_type: { type: "string", description: "Target submission type: 'NDA', 'BLA', or 'MAA'" },
                                                module: { type: "string", description: "Which module to check: '3', '4', or '5'" }
                                  },
                                  required: ["provided_sections", "submission_type", "module"]
                      }
            },
            {
                      name: "get_agency_deficiency_guidance",
                      description: "Retrieve common deficiency areas for FDA or EMA submissions by domain (CMC, Clinical, Labelling, Pharmacovigilance).",
                      inputSchema: {
                                  type: "object",
                                  properties: {
                                                agency: { type: "string", description: "Regulatory agency: 'FDA' or 'EMA'" },
                                                domain: { type: "string", description: "Area: 'CMC', 'Clinical', 'Labelling', or 'Pharmacovigilance'" }
                                  },
                                  required: ["agency", "domain"]
                      }
            },
            {
                      name: "generate_submission_checklist",
                      description: "Generate a submission readiness checklist for a given submission type and agency.",
                      inputSchema: {
                                  type: "object",
                                  properties: {
                                                submission_type: { type: "string", description: "Type: 'NDA', 'BLA', 'MAA', 'IND', 'CTA', 'IMPD'" },
                                                agency: { type: "string", description: "Target agency: 'FDA', 'EMA', 'PMDA', 'Health Canada'" }
                                  },
                                  required: ["submission_type", "agency"]
                      }
            },
            {
                      name: "check_ich_compliance",
                      description: "Check a description of a study or document against ICH guideline requirements and return a compliance assessment.",
                      inputSchema: {
                                  type: "object",
                                  properties: {
                                                description: { type: "string", description: "Description of the study or document to assess" },
                                                guideline_code: { type: "string", description: "ICH guideline to check against, e.g. 'E6(R3)', 'Q1A(R2)'" }
                                  },
                                  required: ["description", "guideline_code"]
                      }
            }
                ]
    }));
  • The handler implementation for 'check_ich_compliance' under CallToolRequestHandler. Parses args (description, guideline_code), looks up the ICH guideline, checks key requirements against the description via keyword matching, and returns a compliance assessment with score.
    if (name === "check_ich_compliance") {
            const { description, guideline_code } = z.object({ description: z.string(), guideline_code: z.string() }).parse(args);
            const code = guideline_code.toUpperCase().trim();
            const guideline = ICH_GUIDELINES[code];
            if (!guideline) return { content: [{ type: "text", text: "Guideline " + code + " not in database. Available: " + Object.keys(ICH_GUIDELINES).join(", ") }] };
            const descLower = description.toLowerCase();
            const assessments = guideline.keyRequirements.map(req => {
                      const keywords = req.toLowerCase().split(" ").filter(w => w.length > 5).slice(0, 3);
                      const mentioned = keywords.some(kw => descLower.includes(kw));
                      return { requirement: req, status: mentioned ? "Addressed" : "Not clearly addressed — review needed" };
            });
            const passed = assessments.filter(a => a.status === "Addressed").length;
            return { content: [{ type: "text", text: "# ICH " + code + " Compliance Assessment\n**Guideline:** " + guideline.title + "\n**Score:** " + passed + "/" + assessments.length + " requirements addressed\n\n" + assessments.map(a => "**" + (a.status === "Addressed" ? "✅" : "⚠️") + " " + a.status + "**\n_Requirement:_ " + a.requirement).join("\n\n") + "\n\n> Full compliance requires expert review. Official guidance: " + guideline.url }] };
    }
Behavior2/5

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

No annotations are provided, so the description carries full burden. It only states that it checks and returns a compliance assessment, but does not disclose any behavioral traits such as whether it performs semantic analysis, requires network access, or any limitations. This is insufficient for a tool that may have complex behavior.

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

Conciseness5/5

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

The description is a single, efficient sentence of 18 words. It is front-loaded with the core action and includes all necessary elements (verb, resource, target, outcome) without extraneous information.

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

Completeness2/5

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

The tool has 2 parameters and no output schema or annotations. The description does not explain the format or structure of the 'compliance assessment' return value, leaving the agent with insufficient context to interpret results. For a compliance tool, this is a significant gap.

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

Parameters3/5

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

Schema coverage is 100% with both parameters described in the input schema. The description does not add additional meaning beyond the schema, which already defines 'description' and 'guideline_code'. Baseline score of 3 applies.

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

Purpose5/5

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

The description clearly states the verb 'Check', the resource 'description of a study or document', and the target 'ICH guideline requirements', with the outcome 'return a compliance assessment'. It effectively differentiates from siblings like 'lookup_ich_guideline' which is for reference, not compliance checking.

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

Usage Guidelines3/5

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

The description implies usage for compliance assessment but does not explicitly state when to use this tool versus alternatives like 'check_ctd_completeness' or 'lookup_ich_guideline'. No guidance on prerequisites or exclusions is provided.

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

Other 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/pubspro/regsub-mcp'

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