Skip to main content
Glama

Bulk Update Case Status

bulkUpdateCaseStatus

Update the status of multiple cases to pending, completed, failed, or canceled. Interrupts any active runs and releases their case ownership, but never cancels their human-in-the-loop state — pending requests and open approval batches stay answerable/resolvable from the run view. Settling a case archives the pending requests on every run attached to it, both the runs this call interrupted and any that were already terminal, so they leave the activity inbox instead of outliving the case there. Resetting to pending archives nothing and re-dispatches cases to the queue's trigger consumer.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
searchNoFree-text search selecting the cases when all_matching is true.
statusYesTarget status for each case. `completed`, `failed`, and `canceled` are terminal — `canceled` records a deliberate human stop, distinct from a system `failed`. `pending` resets the case (the queue's trigger consumer, if any, will re-claim it). `success` is not settable: it means an evaluation passed.
filtersNoFilters selecting the cases when all_matching is true.
case_idsNoExplicit case IDs to act on (1-100). Provide this or set all_matching.
queue_idYesThe queue's unique identifier
all_matchingNoWhen true, act on every case matching the provided filters/search instead of an explicit id list.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / filters / properties / awaiting_my_approval
      Added value: +{
      +  "type": "boolean"
      +}
  2. Changed3 schema fields changed
    • addedInput schema / properties / filters / properties / created_at_to
      Added value: +{
      +  "type": "string"
      +}
    • addedInput schema / properties / filters / properties / json_data
      Added value: +{
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "operator": {
      +        "enum": [
      +          "equals",
      +          "notEquals",
      +          "in",
      +          "notIn",
      +          "gt",
      +          "gte",
      +          "lt",
      +          "lte",
      +          "contains",
      +          "isSet",
      +          "isNotSet"
      +        ],
      +        "type": "string"
      +      },
      +      "path": {
      +        "pattern": "^\\$(\\.[A-Za-z_][A-Za-z0-9_]{0,63})+$",
      +        "type": "string"
      +      },
      +      "value": {
      +        "anyOf": [
      +          {
      +            "anyOf": [
      +              {
      +                "type": "string"
      +              },
      +              {
      +                "type": "number"
      +              },
      +              {
      +                "type": "boolean"
      +              }
      +            ]
      +          },
      +          {
      +            "items": {
      +              "anyOf": [
      +                {
      +                  "type": "string"
      +                },
      +                {
      +                  "type": "number"
      +                },
      +                {
      +                  "type": "boolean"
      +                }
      +              ]
      +            },
      +            "maxItems": 100,
      +            "minItems": 1,
      +            "type": "array"
      +          }
      +        ]
      +      }
      +    },
      +    "required": [
      +      "path",
      +      "operator"
      +    ],
      +    "type": "object"
      +  },
      +  "maxItems": 12,
      +  "type": "array"
      +}
    • addedInput schema / properties / filters / properties / updated_at_to
      Added value: +{
      +  "type": "string"
      +}
  3. Changed2 schema fields changed
    • changedInput schema / properties / status / description
      Previous value: -"Target status for each case. `completed` and `failed` are terminal; `pending` resets the case (the queue's trigger consumer, if any, will re-claim it)."New value: +"Target status for each case. `completed`, `failed`, and `canceled` are terminal — `canceled` records a deliberate human stop, distinct from a system `failed`. `pending` resets the case (the queue's trigger consumer, if any, will re-claim it). `success` is not settable: it means an evaluation passed."
    • changedInput schema / properties / status / enum
      Previous value: -[
      -  "pending",
      -  "completed",
      -  "failed"
      -]New value: +[
      +  "pending",
      +  "completed",
      +  "failed",
      +  "canceled"
      +]
  4. Changed1 schema field changed
    • addedInput schema / properties / filters / properties / issue_severity
      Added value: +{
      +  "items": {
      +    "enum": [
      +      "critical",
      +      "medium"
      +    ],
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
  5. First observed

TDQS

A4.5/5.0
Behavior5/5

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

The description discloses a rich side-effect surface well beyond the annotations (readOnlyHint=false, destructiveHint=false): it interrupts active runs, releases case ownership, preserves human-in-the-loop state, archives pending requests on both interrupted and already-terminal runs, and distinguishes terminal-status settling from pending resets. It even states what is NOT affected (approval batches stay resolvable), which is precisely the nuance structured hints cannot convey.

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?

Three sentences with the core action front-loaded; the two follow-up sentences carry dense but essential side-effect information an agent must weigh before invoking a bulk mutation. No repetition of the title, no restating of annotation values, and no filler — every sentence earns its place.

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

Completeness5/5

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

For a complex bulk-mutation tool with six parameters, a nested filters object, and no output schema, the description comprehensively covers the operation's reach: runs, ownership, HITL state, pending-request archiving, and activity-inbox effects. Combined with the 100% schema coverage for selection semantics, an agent has everything needed to invoke it safely and predict its consequences.

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 description coverage is 100%: every parameter (queue_id, status, case_ids, all_matching, search, filters) already carries a descriptive schema comment, including the status enum semantics ('success is not settable'), the case_ids/all_matching exclusivity, and the filters role. The prose description adds behavioral context but no parameter-level detail, so the coverage baseline 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 first sentence states a specific verb, resource, and scope: 'Update the status of multiple cases to pending, completed, failed, or canceled.' Enumerating the four supported target statuses removes ambiguity, and the bulk scope clearly separates it from single-case updateCase and from sibling mutations targeting different resources (bulkUpdateCasePriority, bulkReprocessCases).

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

Usage Guidelines4/5

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

The description gives clear operational context for choosing among statuses: settling (terminal statuses) interrupts active runs, releases ownership, and archives pending requests, while resetting to pending re-dispatches cases to the trigger consumer. It stops short of explicitly naming sibling alternatives or stating when-not-to-use, so it earns a 4 rather than a 5.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources