Shopify UCP needs an agent profile per call: where a Sume clip fits
Shopify's UCP storefront MCP needs an agent profile on every request. A product clip belongs after get_product, as an async Sume job the agent collects later.

In a Shopify Universal Commerce Protocol (UCP) agent flow, a product video belongs after the product lookup and outside the checkout path: call get_product, then submit a Sume video job, and give the shopper the clip when the job finishes. Shopify requires an agent profile on every request to its MCP endpoint, and Sume is a separate server with its own authentication, so the two never share credentials.
I found no Shopify integration in the Sume docs, so the agent or your own service is the thing that connects the two.
What the Shopify page documents
| Item | Value |
|---|---|
| Endpoint | https://{shop}/api/ucp/mcp (Universal Commerce Protocol) |
| Tools | search_catalog, lookup_catalog, get_product, create_cart, get_cart, update_cart, cancel_cart |
| Agent profile | Required on every request |
| Checkout | Authenticated or signed |
What Sume provides
| Surface | How you start a clip |
|---|---|
| Developer API | POST https://api.sume.com/v1/videos with model and prompt; 202 with id and polling_url |
| Hosted MCP | generate_video, then jobs_wait and jobs_result; paid calls need an idempotency_key |
| Spend gates | dry_run, optional max_spend_usd, generation_admission_preview |
| Video models | GET /v1/videos/models lists supported durations, resolutions and pricing_skus |
Where in the conversation the clip goes
- After get_product: you have the title, description and image URLs. Use them to build the prompt and any frame_images or input_references.
- Before create_cart: the clip should not block the cart. Submit it and keep shopping.
- Not inside a single tool call: video jobs usually outlast Sume's 30 second sync wait, and MCP jobs_wait is capped at 55 seconds a call, so re-issue the wait rather than hold longer.
- After completion: fetch the result from jobs_result (or GET /v1/videos/{id}/content) and show it.
Cost control
Generation is billed to the Sume workspace, not to the shop. Use dry_run to preview a paid call, set max_spend_usd, and always send an idempotency_key so a retried call does not bill twice. With OAuth the session needs the mcp:write toggle for paid tools, and there is no mcp:paid scope; an API key sees the full tool set. See the tools and gates docs for Sume hosted MCP.
Sources
Related posts
More in Integrations
- Slack image block with a Sume URL: PNG or JPEG, alt text required
Slack's image block takes a public image_url up to 3000 characters and lists png, jpg, jpeg and gif. Generate a png with Sume, then post it with alt_text.
- Slack connector stopped working after an hour? Reconnect in Sume
When Slack returns no token expiry, Sume assumes one hour. After that an admin must connect again, because v1 has no automatic token renewal for integrations.
- Slack MCP has no dynamic registration: how Sume connects anyway
Slack's MCP server needs a registered Slack app with a client secret and does not support Dynamic Client Registration, so Sume uses its own Slack app.
- Slack consent worked but MCP rejects the app: enable Slack MCP
If Slack OAuth consent succeeds but MCP initialization is rejected, the Slack app has not enabled the Slack MCP server. It is a separate switch from Agents.
Written by Sume