Skip to main content
Glama

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
NameRequiredDescriptionDefault
trackerIdYesNumeric tracker ID of the RM Harms List tracker
nameYesHarm name / summary
descriptionNoHarm description (plain text or wiki markup)
imdrfCodeNoIMDRF code for this harm (e.g. 'E0001')
severityNoSeverity level (integer 1–5)
parentIdNoParent item ID to nest this harm inside (e.g. a folder)

Implementation Reference

  • 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) }] };
      },
    );

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/3KniGHtcZ/codebeamer-mcp'

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