Skip to main content
Glama
rollbar

Rollbar MCP Server

Official
by rollbar

update-item

Modify Rollbar error tracking items by updating status, severity level, title, assignment, or resolution details to manage and resolve issues.

Instructions

Update an item in Rollbar (status, level, title, assignment, etc.)

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
itemIdYesThe ID of the item to update
statusNoThe new status for the item
levelNoThe new level for the item
titleNoThe new title for the item
assignedUserIdNoThe ID of the user to assign the item to
resolvedInVersionNoThe version in which the item was resolved
snoozedNoWhether the item should be snoozed (paid accounts only)
teamIdNoThe ID of the team to assign as owner (Advanced/Enterprise accounts only)
projectNoProject name (optional when only one project is configured)

Implementation Reference

  • The `registerUpdateItemTool` function defines and implements the "update-item" tool, including Zod-based input validation and the execution logic that calls the Rollbar API.
    export function registerUpdateItemTool(server: McpServer) {
      server.tool(
        "update-item",
        "Update an item in Rollbar (status, level, title, assignment, etc.)",
        {
          itemId: z.number().int().describe("The ID of the item to update"),
          status: z
            .enum(["active", "resolved", "muted", "archived"])
            .optional()
            .describe("The new status for the item"),
          level: z
            .enum(["debug", "info", "warning", "error", "critical"])
            .optional()
            .describe("The new level for the item"),
          title: z.string().optional().describe("The new title for the item"),
          assignedUserId: z
            .number()
            .int()
            .optional()
            .describe("The ID of the user to assign the item to"),
          resolvedInVersion: z
            .string()
            .optional()
            .describe("The version in which the item was resolved"),
          snoozed: z
            .boolean()
            .optional()
            .describe("Whether the item should be snoozed (paid accounts only)"),
          teamId: z
            .number()
            .int()
            .optional()
            .describe(
              "The ID of the team to assign as owner (Advanced/Enterprise accounts only)",
            ),
          project: buildProjectParam(),
        },
        async ({
          itemId,
          status,
          level,
          title,
          assignedUserId,
          resolvedInVersion,
          snoozed,
          teamId,
          project,
        }) => {
          const { token, apiBase } = resolveProject(project);
          const updateData: Record<string, unknown> = {};
    
          if (status !== undefined) updateData.status = status;
          if (level !== undefined) updateData.level = level;
          if (title !== undefined) updateData.title = title;
          if (assignedUserId !== undefined)
            updateData.assigned_user_id = assignedUserId;
          if (resolvedInVersion !== undefined)
            updateData.resolved_in_version = resolvedInVersion;
          if (snoozed !== undefined) updateData.snoozed = snoozed;
          if (teamId !== undefined) updateData.team_id = teamId;
    
          if (Object.keys(updateData).length === 0) {
            throw new Error("At least one field must be provided to update");
          }
    
          const url = `${apiBase}/item/${itemId}`;
          const response = await makeRollbarRequest<RollbarApiResponse<unknown>>(
            url,
            "update-item",
            token,
            {
              method: "PATCH",
              headers: {
                "Content-Type": "application/json",
              },
              body: JSON.stringify(updateData),
            },
          );
    
          if (response.err !== 0) {
            const errorMessage =
              response.message || `Unknown error (code: ${response.err})`;
            throw new Error(`Rollbar API returned error: ${errorMessage}`);
          }
    
          return {
            content: [
              {
                type: "text",
                text: JSON.stringify(response.result),
              },
            ],
          };
        },
      );
    }
Behavior2/5

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

No annotations provided, yet description fails to disclose mutation safety, idempotency, or return values. Critically omits account-tier restrictions visible in schema (paid/Enterprise-only features for 'snoozed' and 'teamId').

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

Conciseness4/5

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

Single sentence, front-loaded with action. Efficient though 'etc.' is vague given specific account restrictions exist in schema. Appropriate length for overview but misses opportunity to highlight critical constraints.

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?

Inadequate for a 9-parameter mutation tool with no output schema. Fails to address success/failure behavior, required permissions, or the fact that some parameters require paid/Enterprise accounts despite these being documented in the schema parameters.

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?

With 100% schema description coverage, baseline is 3. Description provides high-level categorization ('assignment' covering both user and team assignment) but adds no semantic depth beyond schema (e.g., explaining status lifecycle or snooze behavior).

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

Purpose4/5

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

Clear verb ('Update') and resource ('item in Rollbar') with parenthetical examples of updatable fields. Distinguishes from sibling get/list tools by operation type, though could clarify distinction from get-item-details.

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

Usage Guidelines2/5

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

Lists mutable attributes (status, level, title, assignment) but provides no guidance on when to use versus read-only alternatives or prerequisites like item existence. No mention of partial vs full update semantics.

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

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/rollbar/rollbar-mcp-server'

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