Skip to main content
Glama

shopify_bulk_poll

Read-onlyIdempotent

Check a Shopify bulk operation's status by ID to retrieve results: on completion, get a pre-signed JSONL download URL; on failure, access partial data and error details.

Instructions

Poll a bulk operation's status by ID.

Statuses: CREATED, RUNNING, COMPLETED, CANCELED, EXPIRED, FAILED. On COMPLETED, the url field is a pre-signed JSONL download (valid 7 days). On FAILED, partialDataUrl may hold partial results; errorCode explains why.

Args: operation_id: Global ID of the bulk operation (format: gid://shopify/BulkOperation/<numeric-id>). shop: Store alias or domain the bulk op was launched on. Required when multiple stores are configured. api_version: Override API version (default "2026-04").

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
shopNo
api_versionNo
operation_idYes

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.1.0

TDQS

A4.7/5.0
Behavior5/5

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

The description goes well beyond the annotations (readOnlyHint, idempotentHint) by explaining the concrete outcomes: statuses (CREATED, RUNNING, COMPLETED, CANCELED, EXPIRED, FAILED), the pre-signed JSONL URL valid for 7 days on COMPLETED, and partialDataUrl/errorCode on FAILED. This adds valuable behavioral context that annotations do not capture, and it does not contradict the annotations.

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?

The description is appropriately concise and well-organized: a one-line purpose, a status list with outcome behavior, and then a clearly labeled Args section. Every sentence adds value—no fluff. It could be slightly more compact (e.g., merging statuses and outcomes), but it is efficient and easy to scan.

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 polling tool with an output schema, the description covers all necessary operational details: the ID format, shop requirement, API version default, and what happens on completion and failure. The output schema handles specific return fields, so the description need not enumerate them. Combined with the annotations (read-only, idempotent), an agent has everything needed to call this tool correctly.

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 description coverage is 0%, so the description must (and does) fully explain each parameter. It details the operation_id format (gid://shopify/BulkOperation/<numeric-id>), the shop parameter including when it is required (multiple stores configured), and the api_version override with the default value. This is far more informative than the schema's bare titles and types.

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 description opens with a specific verb and resource: 'Poll a bulk operation's status by ID.' It clearly distinguishes this from siblings like shopify_bulk_query (which presumably creates a bulk operation) and shopify_graphql_query by focusing on status polling. The purpose is unambiguous and leaves no room for misidentification.

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?

It clearly states the tool's function and provides context on how to use it (e.g., passing an operation_id in the proper format). It doesn't explicitly say 'use this after starting a bulk operation' or 'when not to use it,' but the description of the operation_id and the existence of shopify_bulk_query as a sibling make the intended workflow clear. No exclusions are stated, but the context is strong enough for an agent to infer the appropriate use case.

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