Skip to main content
Skip to navigation Search UltraCart Get Started
Built by an agent. Live on a real storefront. Forty merchant requests, from a one-line headline to experiments, upsells, and a full product page, each taken end to end.
Real writes on a test storefront
  1. 01Add a headline to the page
  2. 02Edit the existing headline
  3. 03Add a button with a link
  4. 04Move a band in the template
  5. 05Revert a container to a prior version
  6. 06Second page on the same template
  7. 07Designed content bands
  8. 08Interactive sightings log
  9. 09Testimonial quote slider
  10. 10Item cards with pricing
  11. 11Timed promo modal
  12. 12Quick-view item modal
  13. 13Rework the page header
  14. 14Mega menu header
  15. 15Report form
  16. 16Status strip with Velocity
  17. 17Archive embed with CSS and script
  18. 18Catalog page with sort and wishlist
  19. 19Faceted subgroup page
  20. 20Subgroup case file
  21. 21Item page family
  22. 22Item page quotes
  23. 23Full item page redesign, buy path intact
  24. 24Create a landing page and give it a body
  25. 25A/B test a headline, then restore the page exactly
  26. 26Make variant B by duplicating a page
  27. 27Hand-picked and rule-picked products on a landing page
  28. 28Edit a running experiment safely
  29. 29Per-item title, description, and attributes
  30. 30Add a footer menu link, then restore the menu
  31. 31A content block for one product
  32. 32Clear stale widget measurements on a page
  33. 33Preview a page draft without publishing it
  34. 34Change a theme color, check it, restore it
  35. 35A switched-off upsell offer and path
  36. 36Restore an older page version, then undo it
  37. 37Find every page a template edit affects
  38. 38Check which template copy renders before editing
  39. 39Preview an upsell offer page while it is off
  40. 40Change a font and turn on checkout-only mode
Scenario 01Add a headline to the page
Northwind is a fictional store built for these examples.

What your agent can edit

  • Page sectionsHeaders, heroes, checkout, and My Account
  • PagesCreate, copy, and configure
  • Product contentAttributes, descriptions, images, and SEO
  • MenusYour store navigation
  • AssetsImages and files your pages use
  • ExperimentsA/B tests on live traffic
  • Email and flowsCampaigns, flows, segments, and postcards
  • Your dataWarehouse queries and shopper recordings
Private beta · Coming soon

Request beta access

The StoreFront Agent Toolchain is enabled one UltraCart account at a time. Tell us who you are and we will email you when your account is ready. There is nothing to install yet.

  • Status Private beta, coming soon
  • Access Approved UltraCart merchants, enabled by account
  • Have handy Your UltraCart Merchant ID. Not a merchant yet? Request anyway.
  • Works with Claude Code, Codex, Gemini CLI, Cursor, GitHub Copilot, and OpenCode

We use this only to reply about beta access. Never share a password, API key, or token in this form.

Using an AI agent?It will ask for your Merchant ID and prepare the request
Read https://www.ultracart.com/theme/assets/storefront-agent-toolchain.txt. The UltraCart StoreFront Agent Toolchain is in private beta and cannot be installed yet. Ask me for my UltraCart Merchant ID, then give me the link from that file with my details filled in so I can review it and request beta access myself. Do not install anything and do not submit the form for me.

Give it a design, not just a to-do list

The toolchain handles the plumbing. The look comes from your theme and what you hand the agent.

It reads your theme firstBefore it builds, the agent reads your theme's colors and fonts, looks at your live pages, and asks about your brand. It writes that down and builds to it.
Attach screenshots or a mockA Figma export, a page you admire, or a photo of a sketch. The agent reads the layout, type, and color and builds to match.
Pair it with a design skillInstall a design skill such as Impeccable alongside the toolchain. It runs a direction round, picks a composition, and reviews the result before the push.
Start from a proven promptThe starters below mirror scenarios the toolchain has already run. Copy one, swap in your store, and attach your reference.
Seasonal landing page
Using the attached lookbook mock, build a /fall landing page on my test theme: a promo bar, a hero with the lookbook CTA, and a four-item outerwear grid with prices, ratings, and add-to-cart. Reserve IDs, validate, render it for my review, and stop before pushing.
Product page refresh
Rebuild my item page container with flex structures so it reads like a modern product page. Keep every functional node: item form, gallery, variations, quantity, add-to-cart, express checkout, reviews. Show me the before and after functional node count before you write anything.
Header with a mega menu
Rework the site header: logo left, a department mega menu with the top three categories per department, cart and account on the right. Collapse to a drawer on mobile. Render it against /shop and wait for my approval before using --live.
Match my existing design
Attached are three screenshots of our current pages. Extract the fonts, colors, and spacing, then restyle the /about page containers to match. Do not touch checkout. Validate and render each container before pushing.

Watch a prompt land on a real page

Pick an example and watch each prompt travel from your agent, through UltraCart, onto a live storefront page. Account pages, checkout, product pages, and your homepage all use the same guarded loop, so every change is checked before it lands.

Example 01 · Customer account

Turn My Account into a reason to come back

The agent adds a sticky sidebar, a loyalty stat strip, and photo order rows to the My Account overview, restyles it in the store's serif, and each change is validated and saved through UltraCart before the page updates.

Put points, store credit, and recent orders where returning customers see them first. Your agent restyles all eleven account containers to match your store, and the login form stays exactly as it is.

  • 11 containers by name
  • 65 account elements
  • Login gate untouched
Starter prompt
Give the My Account area a sticky sidebar linking Orders, Subscriptions, Profile, Rewards, and Reviews. Add a stat strip to the overview with loyalty points, store credit, and member-since date. Match the storefront's type and colors. Work on a non-active theme and show me a render of the overview before pushing.

Email and postcards, not just pages

Your agent can build and edit the campaigns and flows that run in UltraCart’s built-in email platform, under the same guardrails it uses on your storefront.

Campaigns and flows

Create, copy, and archive campaigns and flows, then turn a flow on or off. Turning one on needs an explicit live flag, because it changes who gets emails.

sf comms flows activate --live

Build the sequence

Add email, wait, and postcard steps, move or remove one, and draw the whole flow as a chart for you to review.

sf comms sequences add-email · get --mermaid

Segments

Save a customer segment from a rule, then point a campaign or flow at it. Changing a rule that a live campaign uses needs your approval.

sf comms segments create

Previewed, not sent

Change subject lines and preview text, see an email as a mail client shows it, and request a content review. Nothing is sent.

sf comms emails render --png

Postcard proofs

See a postcard as it will print, front and back, from the print vendor’s proof. Nothing is mailed.

sf comms postcards proof

Start from the library

Begin an email from an item in your code library, with its subject, preview text, and images carried over.

sf comms library emails

Sending a campaign, and starting one, stay with you in the UltraCart admin.

You approve anything risky, in your own admin

When a change is destructive or touches live customers, your agent has to stop and ask. You approve it in UltraCart with your authenticator. There is no API for approving, so an agent can’t approve for you.

  1. 1

    The agent asks

    The CLI requests approval for that exact change, such as removing a step from a live flow.

  2. 2

    You get a link and a code

    Both appear in the terminal. Check that the code matches the one in your admin.

  3. 3

    You decide

    Open the link in UltraCart and approve with your authenticator, or decline.

  4. 4

    The agent repeats the command

    It sends the approval along with the same change. The server checks it and spends it once.

What needs your approval

  • Deleting content, such as a blog post
  • Moving or removing a step in a live campaign or flow
  • Changing a segment rule that a live campaign uses
  • Changing an item’s price
  • Turning on a postcard step, because it mails real cards
  • Removing a Twilio connection or a sending domain
sf approvals list · wait

Credentials stay out of the chat

When a command needs a secret, your agent asks you to enter it in the UltraCart admin and gets back a handle. It never sees the value, only a fingerprint to confirm it arrived.

sf secrets request · wait

Ask your data. Watch your shoppers.

Your agent can read what is happening on your store, then act on it, without leaving the terminal.

Your warehouse

Your agent writes SQL against your own BigQuery warehouse, with your own credentials. Each query is dry-run first and held under a cost ceiling, and an audit log records the SQL, never the rows.

warehouse query --max-bytes 20GiB

Screen recordings

Read a visitor’s session, spot rage clicks and script errors, and replay chosen page views on your machine.

sf recordings show · render

Experiments

Start an A/B test on a page or between pages, watch the numbers, and read an assessment of whether to act.

sf experiments start-page · get

Logs and test orders

Read the server’s render logs to find a broken template, and render order pages against test orders. Real customer orders are never listed.

sf logs list · sf orders test-orders

The rest of the store, too

Pages are the start. These are the other parts of your storefront your agent can read and change, each through a guarded command.

  • ItemsAttributes, descriptions, images, SEO, and prices. Price changes need your approval.
  • UpsellsUpsell paths and offers: who sees what, and where in checkout.
  • Redirects301 redirects for moved or removed URLs, checked with a dry run first.
  • Blog postsWrite, edit, and illustrate posts. Deleting one needs your approval.
  • LanguagesTurn a language on, read the built-in messages, and keep a glossary. Machine translation is billed.
  • MenusRead and replace your store navigation.
  • Theme settingsThe colors, fonts, and settings applied to a theme.
  • Files and assetsUpload images, video, fonts, and PDFs, write CSS and JSON files, and restore earlier versions.
  • Element librarySave, share, and install reusable page fragments.
  • PreviewsStage changes and open a private preview link. A preview session expires after 8 hours.
  • PagesCreate, copy, and configure pages. Deleting, moving, and renaming stay in the admin.
  • Store-wide valuesThe shared settings your pages display, read and updated in one place.

Built so an agent can’t break your store

Every safeguard below runs on every change, whichever agent is driving. Open any card for the details.

Raw APIs make agents guess

Seven raw calls and three ways to go wrong become two guarded commands.

agent · raw REST
Raw API 7 calls, 3 ways to be wrong
POST /files/search {modified_min}
POST /widget_ids?count=4
sfvb_prepare.py · strip linkage
POST /cjson/validate
PUT /files/content?create_if_missing
GET template.vm → edit → PUT
POST /themes/24680/render
uc-storefront 2 commands, guarded
sf push shop.cjson --live
sf template wire … --after content-page
Same result. IDs reserved, baseline hashed, Velocity validated, bytes read back.

Raw APIs make agents guess, and guesses go live

Point an agent at raw REST endpoints and it has to invent widget IDs, overwrite whatever is on the server, and edit Velocity blind. The toolchain wraps the same endpoints in commands that cannot make those mistakes.

  • No invented IDs. Real widget IDs are reserved from the server first.
  • No last-write-wins. Every push carries the hash from the pull.
  • No blind Velocity edits. Validated before writing, read back after.

Nobody gets overwritten

If a teammate saves first, the agent’s older edit is refused, then redone on top of theirs.

  1. 1Your agent reads the page at v7.
  2. 2Sam saves a new headline in the Visual Builder. Now it’s v8.
  3. 3The agent’s edit was based on v7, so it’s refused. Sam’s work is safe.
  4. 4The agent reads v8, adds its button again, and saves v9.

Nobody gets overwritten, not even by the agent

Every push is checked against the exact version the agent read. If a teammate saved the page in the Visual Builder in between, the push is refused and nothing changes.

  • Stale writes are refused. Every push carries the hash of the version the agent read, sent as If-Match. If the page changed, the server answers 412 and nothing is written.
  • No silent retries. An uncertain write is read back and reported to you, never retried blindly.
  • Live is opt-in. Your active theme is only touched with an explicit flag and publish permission.

Reads only what it needs

Your agent looks at the part it’s editing, not the whole page, so it’s faster, cheaper, and less likely to make things up.

Whole page184 KB
What your agent reads
Headline
Layers for the first cold morning
Button
Shop the lookbook
Layout
Text left, photo right

Skipped: product grid, reviews, footer. Available if it asks.

  • Faster answers
  • Lower token cost
  • Fewer made-up settings

The agent reads only what it needs

A single storefront page can be 180 KB of JSON. Dump that at a model and you pay for every byte and invite invented fields. The toolchain returns a 12 KB summary that says exactly what it left out.

  • Faster and cheaper. Smaller context means quicker answers and lower token bills.
  • Fewer mistakes. Less noise means fewer hallucinated config keys.
  • Nothing hidden. --full returns the whole tree on request.

Errors only where certain

It stops what would break your page, flags what might, and never throws away what it doesn’t recognize.

StopsFixed before saving

A block points to the wrong parent. That would break the page, so it’s fixed before anything saves.

parent_link_mismatch
Flags

A slider inside a row hasn’t been proven on a live store yet. Your call.

placement_unconfirmed
Keeps

A note field it doesn’t know. Left exactly as it was.

x-merchant-note
Saved · 0 errors · 1 note for you

Errors only where the contract is certain

Confirmed contracts block. Placement rules advise. Unknown fields are kept byte for byte, never rewritten to satisfy a snapshot.

  • Errors block the write. Only for contracts confirmed on a live storefront, like parent linkage.
  • Warnings advise. Documented but unconfirmed placements are flagged, not refused.
  • Unknown is preserved. Fields the schema does not know about survive untouched.

Field notes from a live store

Say it your way. Your agent already knows which building block you mean, from real builds.

You

Field notes from a live storefront

More than 500 element cards and a set of whole-page pattern cards, each earned on a live storefront. Merchant phrasing maps to a proven pattern before the first command runs, so “show this only during sale week” becomes a date and time condition set to that window.

The same seven steps on every change

Reserve, pull, plan, validate, render, push, wire. Click a step to see its output.

  1. 1sf idsReserve real widget IDs
  2. 2sf pullRead, save a baseline
  3. 3apply --planAuthor locally, atomically
  4. 4validateErrors block, warnings advise
  5. 5sf renderServer-render one node
  6. 6sf pushGuarded write with If-Match
  7. 7template wireOnly for a new container

The same seven steps on every change

Whether the request is a one-line headline or a full product page, the agent runs the same loop. Each step either succeeds or stops the change before anything is written.

  • sf ids. Reserve real widget IDs from the server.
  • sf pull. Read the page and save a hashed baseline.
  • apply --plan. Author locally and atomically. A malformed op leaves the file unchanged.
  • validate. Errors block, warnings advise.
  • sf render. Server-render one node against the real theme.
  • sf push. Guarded write with If-Match, then read back.
  • template wire. Only when introducing a new container, dry run first.

Security and permissions

The controls you’d want before letting an agent near your store, built in from the first command.

Preview before it’s live

Your agent stages the change and sends you a private link to see it on your real storefront. Nothing is written until you approve.

sf preview open --session

Undo any change

Your agent keeps a copy of everything it reads, UltraCart versions every save, and product content logs who changed what and when.

sf containers versions · revert

Live is opt-in

Your active theme and store menus change only with an explicit live flag and publish permission on the account the agent signs in with.

--live · publish permission

Your login, your keychain

Sign in through your UltraCart account with a device code, not a pasted API key. Credentials stay in your OS keychain, and one command revokes them.

auth login · auth logout

The agent brief

Written for your agent, not for you. It tells an agent where the beta stands and how to help you request access. Read the agent brief as plain text.

Not yet:

  • Theme activation or publishing
  • Velocity template bodies
  • Faceted search configuration
UltraCart StoreFront Agent Toolchain: agent brief

STATUS: PRIVATE BETA. COMING SOON. NOT INSTALLABLE YET.
Last updated: 2026-11-03

This brief is for AI agents, and for the people who ask them to look. If a user
asked you to install, set up, or try the UltraCart StoreFront Agent Toolchain,
this is the situation to relay to them.

WHAT IT IS
The uc-storefront command line tool, a packaged catalog of StoreFront elements,
and a project agent skill. It lets an AI coding agent build and edit a
merchant's UltraCart StoreFront through guarded commands: real widget IDs,
validated writes, previews before anything goes live, and no overwritten work.
It is a CLI, a catalog, and a skill. It is not an MCP server.

WHERE IT STANDS
- It is in a private beta, limited to approved UltraCart merchants.
- It is not publicly installable. There is no public package and no public
  install steps. Please don't try to install it from a package registry, and
  don't clone a repository to run it from source. Access is enabled on the
  merchant's UltraCart account first.
- A merchant who has not been enabled gets a "beta access required" refusal
  from the server. That is expected. Please don't work around it.

WHAT TO TELL THE USER
1. The toolchain is coming soon and is in private beta.
2. You can help them request beta access. UltraCart enables merchants one
   account at a time and replies by email.
3. A request needs their UltraCart Merchant ID (MID), the short ID of their
   UltraCart account. Ask them for it. If they are not an UltraCart merchant
   yet, they can say so and still request access.
   Also helpful, if they are happy to share it: their name, work email,
   company, and which AI agent they use.
4. A request never needs a password, API key, token, card number, or anything
   secret. Please don't ask for those.
5. Give them this link, with their answers filled in, to open themselves:

   https://www.ultracart.com/resources/storefront-agent-toolchain#sat-request&mid=<MERCHANT_ID>&agent=<YOUR_AGENT_NAME>

   Replace <MERCHANT_ID> with their MID. Replace <YOUR_AGENT_NAME> with your
   own name, for example claude-code, codex, gemini-cli, cursor, copilot, or
   opencode. The request form on that page opens with those two fields
   filled in. The user reviews it and presses Send themselves. Please don't
   submit it for them.
6. Tell them an UltraCart team member will reply by email.

WHILE THEY WAIT
The UltraCart documentation covers StoreFronts and Themes:
  https://docs.ultracart.com
An index written for agents is at:
  https://docs.ultracart.com/llms.txt

WHAT THE BETA WILL COVER
- Storefront pages, containers, checkout and My Account, with previews before
  anything goes live.
- Item content and prices, menus, theme colors and fonts, files and assets,
  redirects, upsells, blog posts, languages, and experiments.
- Campaigns, flows, segments, emails and postcards in the built-in email
  platform. Emails and postcard proofs can be previewed without sending or
  mailing anything.
- Reading screen recordings, server render logs, and the merchant's own
  BigQuery warehouse.
- Human approval, in the UltraCart admin, for destructive changes and changes
  that touch live customers. An agent cannot approve for itself.
Details are on the page:
  https://www.ultracart.com/resources/storefront-agent-toolchain

Toolchain FAQ.

Can I install it today?

Not yet. The toolchain is in private beta and is enabled one UltraCart account at a time. Request access above and we will email you when your account is ready.

How do I get access?

Use the request form on this page with your UltraCart Merchant ID. If you use an AI agent, paste the prompt above and it will ask for your Merchant ID and prepare the request for you to review and send.

Is this an MCP server?

No. It is a CLI, a catalog, and a skill. Your agent runs commands and reads JSON.

Which agents does it work with?

Any agent that can run a shell. The skill installs natively for Claude Code, Codex, and Gemini CLI; other agents read it from the workspace.

Can it break my live store?

It can write to a live theme if you tell it to with --live. Use a test storefront or a non-active theme. Pushes are guarded by If-Match and are never retried automatically. Risky changes, such as deleting content or editing a live flow, also need your approval in the UltraCart admin.

Does it need an API key?

No. It uses the OAuth 2.0 device flow with a single sfvb_cli scope. Tokens live in your OS keychain.

Can it create new pages?

Yes. It can list, create, copy, and configure pages, then build their containers. A new page is live as soon as it exists, so start on a test storefront.

Can it edit the checkout and My Account pages?

Yes. Both are theme containers, so they go through the same pull, validate, render, push loop. The checkout pattern keeps every checkout element and ID in place and lists the states to test before a change counts as done.

Can it send emails or run campaigns?

It can build and edit campaigns and flows, change email subject lines, and show you an email or postcard proof without sending or mailing anything. Sending a campaign, and starting one, stay with you in the UltraCart admin.

Can it read my sales data?

Yes, through your own BigQuery warehouse. Every query is dry-run first and held under a cost ceiling, and it runs with your own credentials.

Who approves risky changes?

You do. Destructive changes and changes that touch live customers need your approval in the UltraCart admin, with your authenticator. An agent can’t approve for itself.

What does it cost?

Requesting beta access costs nothing. It needs an UltraCart account, and a developer sandbox account works for testing.

Where does the element knowledge come from?

A packaged catalog of more than 550 elements, with field notes for more than 500 of them and pattern cards for whole pages, each earned on a live storefront.

Is it production ready?

Not yet. It is a private beta, so once you have access, start on a test storefront or a developer sandbox.