Skip to main content
Glama

Stride — AI software delivery platform

Bulk update stories

stride.bulk_update_stories
DestructiveIdempotent

Update up to 50 stories in one call. Supports status, priority, assigneeId, sprintId, epicId, storyPoints, dueDate (all single-value), and labels with { mode: "add"|"remove"|"replace", labels: string[] }. status accepts a category (TODO/IN_PROGRESS/IN_REVIEW/DONE — works across projects) OR a board column name from stride.list_workflow_stages (column names are project-specific, so a name requires the batch to target ONE project). Conflict-checked per row; human-edited rows are skipped and recorded in SyncConflict — pass force:true (only with the human's explicit approval) to overwrite them instead. storyIds may be ticket keys (e.g. "ORB-526") or UUIDs. Returns applied / skipped / notFound arrays — but a ticket key that resolves to nothing rejects the WHOLE call before any write (soft error), and so does any target project the key cannot reach; only ids that parse but match no live story land in notFound. Verify keys with stride.get_story first when unsure.

Input Schema

NameRequiredDescriptionDefault
forceNoOverride HUMAN_EDIT_AFTER_AGENT_SYNC conflicts, overwriting human-edited rows instead of skipping them. Set true ONLY when the human has explicitly approved overwriting their changes — each override is audit-logged.
updatesYes
storyIdsYesUp to 50 stories — ticket keys like "ORB-526" or Stride UUIDs (mixed is fine).

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.9/5.0
Behavior5/5

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

Beyond the destructive/idempotent annotations, it discloses the conflict model (per-row conflict check, human-edited rows skipped and recorded in SyncConflict), the audit-logged override path, and the crucial failure semantics: an unresolvable ticket key rejects the whole call before any write, only parseable-but-dead ids land in notFound. This is exactly the behavioral context annotations 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.

Conciseness4/5

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

Front-loaded with the core action and scoped fields before the edge cases. The later sentences are dense, run-on, and dash-laden (the notFound/soft-error sentence especially), which slightly impedes scanning, but nothing is filler.

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 destructive, nested-parameter batch mutation with no output schema, the description covers input formats, conflict handling, force semantics, partial-success vs. rejection behavior, and return arrays. An agent has everything needed to call it correctly and interpret the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 67%, and the description closes the remaining gaps rather than repeating it: labels {mode, labels[]} semantics, the project-specificity constraint on status column names, the mixed ticket-key/UUID allowance for storyIds, and the all-or-nothing behavior tied to key resolution. It adds real meaning beyond the schema's per-field text.

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?

Opens with a specific verb+resource+scope: 'Update up to 50 stories in one call', which immediately separates it from stride.update_story (single) and stride.update_story_status. It then enumerates exactly which fields are batch-updatable, so the agent knows the tool's surface without opening the schema.

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

Usage Guidelines5/5

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

Gives explicit conditions rather than vague context: status may be a category or a column name from stride.list_workflow_stages, and a column name requires a single-project batch. It also states when to pass force (only with explicit human approval) and advises verifying keys with stride.get_story first when unsure — genuine routing guidance, not just a restatement.

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.