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 slash command for music: 3 s ack, 5 replies in 30 min
A Slack command must be acknowledged in 3 s; response_url then allows 5 replies in 30 min. Start the Sume music job in webhook mode and reply when it lands.
- Slack Workflow webhook trigger: flatten a Sume result, no nested JSON
Slack's webhook-started workflows take up to 20 flat variables and 1 request per second. Flatten Sume's nested artifacts into plain text values before you post.
- Snapchat monetization advice: closed captions, 30 s, and Sume
Snapchat's monetization page says videos need 30 seconds for revenue and recommends closed captions. Burn captions with Sume video captions at $0.20 per job.
Written by Sume