# Store Builder [Health: Active]

**Category:** 🛒 E-Commerce  
**Repository:** https://github.com/vuluu2k/sbuilder-mcp  
**GitHub Stars:** 0  
**npm Downloads (last month):** 9633  
**Views:** 1  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/store-builder

## Description
Design, fill with real store data, render and publish Store Builder pages from an AI agent.

## Tools
Capabilities this server exposes over MCP:

- **sb_connect** — Log in and list the sites this account can operate. Call this first. Reads SB_EMAIL and SB_PASSWORD from the environment unless you pass them.
- **sb_site_list** — List the sites this account can operate.
- **sb_api_find** — Find API operations by intent (query), or get a call sheet (id): parameters, credential, body fields and handler caveats. Reaches all 892 operations.
- **sb_api_call** — Call an operation from sb_api_find (id), or a route the catalog lacks (method+path); dry run by default. pick selects fields, max_items caps lists, item_offset skips items. Lists over 60 KB say so.
- **sb_page_open** — Open a page for editing and return its outline. Call before any sb_add / sb_set / sb_move / sb_remove. Find page ids with sb_api_find "list pages". Or form_id: edit that form's field document (fields, specials.formRules on its root).
- **sb_page_repair** — Rename a page root that is not "ROOT" (sppro_1, rt_<hex> — left by older seeds) to ROOT, for one page or, without page_id, every page on the site. Draft only; a published page is listed for re-publishing. dry_run (default true) lists what would change.
- **sb_outline** — The open page as a compressed tree — id, type, name, child count, band, and whether a node is a shared global or a site overlay. Never the raw document: a real page is hundreds of KB of JSON.
- **sb_node_read** — One node in full — style, config, specials, per-breakpoint overrides, bindings.
- **sb_catalog_search** — Find an element type by what it does — or OMIT query to browse every type, the only way to meet one you would not have searched for. detail:true adds the AI hints, as does sb_traits_for. query "icon:<word>" lists icon names.
- **sb_traits_for** — This element's INSPECTOR, as a person sees it: tabs, groups, and every control name — with what each DECLARED control writes, and the AI hints for using the element. Read this before styling an element; pass control to read one control in full.
- **sb_add** — Add an element — or a whole NESTED subtree — under a parent. One call builds a complete section: pass children rather than calling this once per node.
- **sb_set** — Write style, config or specials keys on one node, or on many through edits (one save, one live frame). Per BREAKPOINT by default; base:true writes the fallback layer, right for a value that should not vary.
- **sb_move** — Move a node to another parent at an index.
- **sb_remove** — Remove a node and its whole subtree.
- **sb_review** — What a VISITOR would meet on the open page (blank band, placeholder, dead binding) AND what stands between this store and a paid order (checkout page, gateway, delivery, a way back to the cart). Run it before calling a page finished.
- **sb_duplicate** — Copy a node and everything under it, under fresh ids, right after the original. The move a designer makes constantly — build one card, duplicate it twice. to_page_id (and to_site_id) pastes the copy onto another page instead, as the editor's copy/paste does: a cross-site copy has its images copied into the target library and references that cannot travel blanked and listed; the open page becomes the target.
- **sb_templates** — The store's saved section templates — designed sections a person starts from rather than assembling one. Use sb_template_use to drop one into the open page.
- **sb_template_use** — Add a section template to a page, above the footer — a sb_templates row (another site's is copied in first) or one of the BUILT-IN layouts sb_templates lists, which are composed against this page's own tokens rather than copied.
- **sb_page_list** — Every page on the site, with its slug and whether it is live.
- **sb_page_create** — A store type (product, category, search, blog, post, complete) arrives with the document the editor gives a merchant — product carries the whole bound buy box; seed:false for blank. Any other type is empty and sb_page_open seeds its ROOT. TYPE is the route: /checkout and /products/{slug} need a PUBLISHED page of that type or they 404.
- **sb_publish** — Compile the draft into the live page, and report which revision went live (id, publishedAt, fromVersionId). PUBLISH CASCADES: a page sharing a global section with others republishes them too, because a header edited once must not go live on one page and stay stale on the rest. verify:true then fetches the live page and says whether the origin is serving that revision yet — the storefront caches for 60s, so a reload showing the old page is that, not a failed publish.
- **sb_page_state** — Which of this page's three copies is which: the DRAFT the editor canvas shows, the PUBLISHED row the storefront serves, and what this session holds. Says whether the editor will render the canvas BLANK (its hydrate gate discards a document whose root is missing and shows an empty ROOT, silently — the Go renderer has no such gate, which is how "the live page has data but the canvas is empty" happens), whether the draft has changes the live page does not, and where the recovery points are.
- **sb_page_update** — Edit a page's name, slug, home flag, order, SEO (merged key by key) or members_only. Reads the page first and merges `settings`, so keys it does not name survive. On a template page (product, category, post, blog, course, brand): default_template makes it the type's default, render_for/render_default move entities onto it or back to the default.
- **sb_page_version** — A page's platform recovery points, everyone's edits included (sb_undo covers this process only). action:"list" — named versions and autosave history; "save" {label} — snapshot the current draft; "restore" {version_id | history_id} — put the draft back. Writes are dry runs by default.
- **sb_code** — The site's custom code files — tracking pixels, analytics, chat widgets, site-wide CSS — injected at head, body_start or body_end of every page (no page_id) or one page. action:"list" | "set" (no id creates; with id merges the named fields over the stored row) | "remove". Not the custom-code element.
- **sb_live_join** — Join the site's live-edit room as a visible peer: every write then appears in any open editor as it happens, with the agent shown by the API key's own name rather than a person's. Always yields, so it is safe beside a human. Works with SB_TOKEN or with SB_EMAIL / SB_PASSWORD.
- **sb_look** — Save, render through the platform's own renderer, and return screenshots at desktop, tablet and mobile widths, measured boxes for the bands and their children, and any layout defect measured on the render (overflow, overlap, unreadable text). node_id frames one element. Judge your work from these, not from memory.
- **sb_media_list** — The site's media library. Reuse an image before adding another; search by name, filter by type, page with limit/offset.
- **sb_media_upload** — Put an image into the media library and get its URL back, ready for sb_set. Takes a local path, a URL, or a SEARCH — `query` returns real photographs with their own descriptions, and `pick` uploads the one you chose, or several at once to stock a site you just built. The only way to add an image.
- **sb_event** — Give a node a click action — open the cart, go to a page, open a pop-up. A purchase is not one: use sb_bind action.
- **sb_bind** — Bind a node to real store data so the page shows actual products, not placeholder text. action makes a button a purchase control.
- **sb_store** — Run a store flow that must happen in a fixed order. action:"checkout" makes the order form, configures it, saves its fields with this store's real payment and delivery options, then creates and PUBLISHES the checkout page — /checkout 404s without all four. action:"checkout_sync" re-reads the store's payment and delivery methods into every existing order form and republishes the checkout page — run it after adding a shipping method or switching on a gateway, since the form keeps the options it was saved with. action:"form" seeds any of the platform's other form templates (login, contact, booking, stay and more — settings merge into the record) with its own field document, which is the part that cannot be guessed. action:"chrome" gives every page ONE shared header (footer:true — footer) built on a real site menu of page/category/product references: a desktop menu, a mobile drawer, cart and account icons — the gap sb_review reports as siteChrome. action:"menu" binds a menu node on the open page to the site's menu and resolves its links, the way the editor does. action:"overlay_attach" puts a pop-up on the open page (kind:"popup") or points a list-dataset at a quick-view panel (kind:"quickview", list_id), creating either from the platform's own seed when overlay_id is omitted, and re-reads the page afterwards as the editor must. action:"cart" creates the site's cart drawer from the editor's seed when it has none — without it every open_cart control opens nothing. action:"app" installs one of the platform's built-in apps (app_key) and creates the pages it needs that installing it does not — today only "courses" has any, from the platform's own scaffold; every other key installs with nothing further to build. action:"global_attach" puts an EXISTING shared section (global_id) on the open page and action:"global_detach" takes it off, writing the reference the platform reads and placing it in the band ROOT's child order demands — the answer for a page that is missing the site's header, where action:"chrome" would wrongly build a second one. action:"global_promote" turns a section on the open page (node_id) into a NEW shared section (global_kind header|footer|custom, default custom) and leaves the page referencing it; action:"template_save" saves one as a section template (name). Dry run returns the plan.
- **sb_theme** — The site's palette and type scale — the layer every element's style preset resolves from, so one token repaints every page at once. Call it with nothing to read what the site actually has. `colors` and `text_styles` PATCH the saved document: what you do not name is kept. `locale` sets the site's language (settings.locale, what <html lang> is served from) — site-wide, every other setting kept.
- **sb_translate** — Multilingual, as the editor does it. status | locales (add/remove) | page (rows: missing, done, outdated) | write (node id+field+value; registry fields only) | auto (machine-fill missing) | review (approve).
- **sb_import** — Read a page from any public URL and add its structure and content to the OPEN page as real elements, styled with this page's own tokens. Not a clone: the source's layout and CSS are not copied. Dry run returns what was found.
- **sb_import_site** — Read a WHOLE site from one URL — its sitemap, or the links on that page — and give each page found its own DRAFT page here, built from this site's tokens. Not a clone. Dry run returns the page list before anything is created.
- **sb_undo** — Put back what a write replaced — a page or form edit made here (sb_add, sb_set, sb_duplicate …), or a PUT through sb_api_call. An undo records what IT replaced, so the newest entry right after one is its redo. A page is refused if anyone else saved it since. IN THIS PROCESS ONLY, capped; the platform's own page history (GET .../pages/{pageId}/history) survives a restart. No argument lists what is undoable.

## Claude Desktop Quick Installation
Install path detected from listing signals. Uses `npx` (confidence: high):

```json
"mcpServers": {
  "store-builder": {
    "command": "npx",
    "args": ["-y","sbuilder-mcp"],
    "env": {
      "SB_TOKEN": ""
    }
  }
}
```

**Requires environment variables:** `SB_TOKEN` — the values above are empty placeholders; fill in real credentials before running (see the repository for what each one is for).

## Documentation

## What Store Builder does

Store Builder gives an MCP-compatible AI agent access to the Store Builder site builder and its store APIs. It can list accessible sites, inspect the platform's API catalog, create and manage pages, edit nested page elements, connect content to store data, and publish completed drafts.

The editing model is document-oriented. Agents open a page, inspect its compressed outline or individual nodes, then add, configure, move, duplicate, or remove elements. Pages can include shared global sections and site-specific overlays. The server also supports saved section templates, built-in layouts, media-library operations, custom code, SEO settings, page versions, and live-edit collaboration.

## How it works

The server runs as an MCP stdio process. Each request uses the Store Builder API and is limited by the key's scopes, the creating member's role, and the site assigned to that key. A configured `SB_SITE` makes subsequent tools default to one store; otherwise, the agent can discover site identifiers through account-level operations.

A typical editing sequence starts with `sb_connect` or a site selection, followed by `sb_page_open`. The agent can then inspect the outline, read node configuration, search the element catalog, and retrieve inspector controls before making changes. `sb_add` accepts nested children, allowing a complete section to be created in one operation. `sb_set` writes style, configuration, and special fields per breakpoint unless a base-layer update is requested.

Most API calls and recovery operations support dry-run behavior. `sb_look` saves and renders a page at desktop, tablet, and mobile widths, returning screenshots, measured boxes, and detected layout problems. `sb_review` checks visitor-facing defects and identifies missing pieces in the path to a paid order. `sb_publish` compiles the draft, reports the live revision, and can verify whether the origin is serving it.

## Setup and configuration

Create an AI-agent key from the store's Apps → AI agent screen, then configure the server with an MCP client. The installer can write configuration for supported clients and preserve existing server entries by creating a backup of the modified file. It accepts a site ID and optional site label, and supports a dry-run mode.

A manual configuration uses the `npx -y sbuilder-mcp` command with `SB_API`, `SB_TOKEN`, and optionally `SB_SITE` in the environment. `SB_API` defaults to `http://localhost:8080`. Account email and password can be supplied for account-level actions such as listing sites; the API key remains the normal credential for site operations.

The optional `PEXELS_API_KEYS` setting belongs on the server and enables photograph search for `sb_media_upload`. Without it, an agent can still upload a local image or provide a URL for the platform to fetch.

## Tools and capabilities

- Discover sites and API operations with `sb_connect`, `sb_site_list`, `sb_api_find`, and `sb_api_call`.
- Create, inspect, edit, duplicate, move, remove, repair, version, and publish pages.
- Search element types, inspect their controls, build nested sections, and apply responsive settings.
- Bind nodes to store data and configure cart, navigation, popup, and page actions.
- Manage templates, media assets, themes, translations, custom code, and live editing.
- Render pages for visual inspection and review checkout, delivery, cart, and other order-flow gaps.

## Limitations and notes

`sb_page_open` must precede node edits such as add, set, move, or remove. Large page documents are intentionally represented through outlines and targeted node reads rather than raw dumps. Publishing a page that shares global sections can republish those sections across other pages, and the storefront may continue serving a cached revision for up to 60 seconds.

The page type controls routes such as checkout and product URLs; those routes require a published page of the corresponding type. `sb_event` configures navigation and interface actions, but a purchase action uses data binding instead. Media search depends on server-side Pexels keys, while URL-based image fetching remains available without them.

_Full upstream README: https://allmcps.com/mcp/store-builder/readme_

