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
| Name | Required | Description | Default |
|---|---|---|---|
| description | Yes | Description of the study or document to assess | |
| guideline_code | Yes | ICH guideline to check against, e.g. 'E6(R3)', 'Q1A(R2)' |
Implementation Reference
- src/index.ts:322-333 (schema)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"] } } ] })); - src/index.ts:392-405 (handler)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 }] }; }