create_harm
Add new risk management harm entries to Codebeamer with IMDRF codes and severity levels. Use to document potential issues in medical device or regulated product development.
Instructions
Create a new item in a Codebeamer RM Harms List tracker. Supports setting the IMDRF code (text) and Severity (integer 1–5). Use list_trackers to find the Harms List tracker ID for your project.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| trackerId | Yes | Numeric tracker ID of the RM Harms List tracker | |
| name | Yes | Harm name / summary | |
| description | No | Harm description (plain text or wiki markup) | |
| imdrfCode | No | IMDRF code for this harm (e.g. 'E0001') | |
| severity | No | Severity level (integer 1–5) | |
| parentId | No | Parent item ID to nest this harm inside (e.g. a folder) |
Implementation Reference
- src/tools/risk-write.ts:10-67 (registration)The "create_harm" tool is registered here, including its input schema and the handler implementation.
server.registerTool( "create_harm", { title: "Create Harm", description: "Create a new item in a Codebeamer RM Harms List tracker. " + "Supports setting the IMDRF code (text) and Severity (integer 1–5). " + "Use list_trackers to find the Harms List tracker ID for your project.", inputSchema: { trackerId: z .number() .int() .positive() .describe("Numeric tracker ID of the RM Harms List tracker"), name: z.string().min(1).describe("Harm name / summary"), description: z .string() .optional() .describe("Harm description (plain text or wiki markup)"), imdrfCode: z .string() .optional() .describe("IMDRF code for this harm (e.g. 'E0001')"), severity: z .number() .int() .min(1) .max(5) .optional() .describe("Severity level (integer 1–5)"), parentId: z .number() .int() .positive() .optional() .describe("Parent item ID to nest this harm inside (e.g. a folder)"), }, }, async ({ trackerId, name, description, imdrfCode, severity, parentId }) => { const customFields: Array<{ fieldId: number; type: string; value: unknown }> = []; if (imdrfCode !== undefined) { customFields.push({ fieldId: 10000, type: "TextFieldValue", value: imdrfCode }); } if (severity !== undefined) { customFields.push({ fieldId: 10001, type: "IntegerFieldValue", value: severity }); } const data = { name, ...(description !== undefined ? { description } : {}), ...(customFields.length > 0 ? { customFields } : {}), }; const item = await client.createItem(trackerId, data, parentId); return { content: [{ type: "text", text: formatItem(item) }] }; }, );