Try PagePilot.ai 100% FREE! No credit card required.

Remote MCP server · 16 tools · Streamable HTTP

Shopify MCP Server: Build And Publish Product Pages From Claude Or ChatGPT

PagePilot runs a remote MCP server that turns a product URL into a finished landing page and publishes it to your Shopify store, driven by Claude, ChatGPT or any MCP client. This page documents the real endpoint, the auth, and every tool.

Creating and publishing needs a paid plan (Lite or higher). See pricing

Claude Code: .mcp.json
{
  "mcpServers": {
    "pagepilot": {
      "type": "http",
      "url": "https://app.pagepilot.ai/api/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_API_KEY"
      }
    }
  }
}

What Is The PagePilot Shopify MCP Server?

It is a remote Model Context Protocol server at https://app.pagepilot.ai/api/mcp. Connect Claude, ChatGPT or any MCP client with a PagePilot API key and the assistant can create a product page from an AliExpress, Amazon, Shopify, TikTok or Etsy product URL, wait for it to generate, edit it, and publish it to a connected Shopify store. It builds and publishes AI product pages. It is not an Admin API wrapper, so it has no tools for orders, customers or inventory.

Server URLhttps://app.pagepilot.ai/api/mcp
TransportMCP Streamable HTTP, stateless. POST only, JSON responses, no session and no SSE stream (GET returns 405).
AuthenticationA PagePilot API key (pp_live_...) as Authorization: Bearer, x-api-key, or the api_key query parameter. No OAuth.
Server identityName pagepilot, version 1.0.0. Tools only: no MCP resources or prompts.
Built-in guidanceThe server sends usage instructions on connect describing the create, poll, edit, publish flow, so assistants do not need prompting.
RequirementsA paid plan (Lite or higher) for the create, image and publish tools, and a Shopify store connected in your dashboard to publish. See pricing.

How The Tools Fit Together

The flow below is the one the server itself describes to a connecting assistant. Every tool works on a single page, identified by the page id that create_page returns, which the tools call template_id.

1

Start A Page From A Product URL

create_page

Send a product URL from AliExpress, Amazon, Shopify, TikTok or Etsy. The call returns the new page id straight away and generation runs in the background.

2

Poll Until It Completes

check_page_status

Poll with the page id every ten seconds or so. The status is processing until the page exists, then completed with a preview_url. The server tells assistants that generation usually takes one to three minutes.

3

Read Before You Write

get_page_texts, get_page_price, get_page_variants, get_page_images

Each getter returns the exact ids, keys and labels its update tool expects, so an assistant never has to invent them. Then the matching update_page_* tool writes the change.

4

Optionally Replace The Photos

generate_page_images

The page starts with the product’s own photos. Assistants are told to ask first, because every generated image counts against your plan’s AI image limit.

5

Publish To A Connected Store

list_shops, publish_to_shopify

list_shops returns the stores connected to your account and publish_to_shopify sends the page to one of them. Publishing the same page again updates the product it created.

Pages Stay Editable

A page an agent creates is an ordinary PagePilot page in your account, tagged as created by MCP. Open it in the drag and drop page builder to adjust it by hand, or list it again with list_pages.

Connect Claude, ChatGPT Or Any MCP Client

Get an API key first: open app.pagepilot.ai/dashboard/api after signing in and a key is created for you. The MCP setup page shows the same snippets with your key already filled in. Replace YOUR_API_KEY below.

Claude Code

Create .mcp.json in your project root and restart Claude Code, which asks you to approve the server. Or add it from the command line. Both send the key as a header, which is the safer option. See the Claude Code MCP docs for scopes.

.mcp.json
{
  "mcpServers": {
    "pagepilot": {
      "type": "http",
      "url": "https://app.pagepilot.ai/api/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_API_KEY"
      }
    }
  }
}
Or from the terminal
claude mcp add --transport http pagepilot https://app.pagepilot.ai/api/mcp \
  --header "Authorization: Bearer YOUR_API_KEY"

Claude On The Web And Desktop

Open Settings, then Connectors, then Add custom connector. The form takes a name and a URL, so the key goes in the URL as the api_key parameter.

Add custom connector
Name:                  PagePilot Agent
Remote MCP server URL: https://app.pagepilot.ai/api/mcp?api_key=YOUR_API_KEY

ChatGPT

Custom connectors need Developer mode, which you enable under Settings, then Security and login. Create a new connector with these fields. Authentication is No Auth because the key is already in the URL.

Create connector
Name:            PagePilot Agent
Description:     PagePilot Agent
Connection URL:  https://app.pagepilot.ai/api/mcp?api_key=YOUR_API_KEY
Authentication:  No Auth

Any Other MCP Client

Any client that supports remote Streamable HTTP servers can connect. Point it at the URL and send the key as Authorization: Bearer or x-api-key. Use the query parameter only when the client cannot set headers. Check the connection yourself with two calls:

List the tools
curl -s https://app.pagepilot.ai/api/mcp \
  -H "Authorization: Bearer $PAGEPILOT_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
Call a tool
curl -s https://app.pagepilot.ai/api/mcp \
  -H "Authorization: Bearer $PAGEPILOT_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"list_shops","arguments":{}}}'

Your First Prompt

This is the starter prompt PagePilot's own dashboard uses. Swap in a real product URL.

Prompt
Use the pagepilot MCP server to create a product page for https://www.aliexpress.com/item/<product-id>.html in English, wait until it finishes, then publish it to my Shopify store.

All 16 Tools

Read tools are annotated read-only. Write tools are annotated as changing state, so clients that honor MCP annotations can ask before running them.

Create and track

ToolAccessWhat it doesArguments
list_pagesReadLists the pages in your account, newest first, 20 per page. Defaults to type product.type (product, page, advertorial), created_via (api, mcp, ui, dashboard), page
create_pageWriteStarts generating a product page from a product URL and returns its id. Language is a name such as English or German (33 supported). With no template given it reuses the template preset of your latest product page.product_url (required), language, template_id, template_name, gender (woman, man, unisex), angle
check_page_statusReadReturns processing or completed. Completed responses include preview_url, name, type and created_at.template_id

Read and edit a page

ToolAccessWhat it doesArguments
get_page_textsReadEvery editable text as a flat list: id, key, the verbatim text (HTML included) and context such as block name and section.template_id
update_page_textsWriteWrites texts back by id and key. HTML is kept but sanitized. Unknown ids come back in not_found.template_id, data[{ id, key, text }]
get_page_priceReadPrice and compare-at price of every variant combination, with its key, label and sku.template_id
update_page_priceWriteSets price and compare-at price by combination label, by key, or with "*" for all. null clears a value. Unmatched items come back in not_found.template_id, data[{ match, price, compare_at_price }]
get_page_variantsReadThe page’s options and combinations, or null when it has none.template_id
update_page_variantsWriteReplaces the option structure declaratively by name (max 3 options, 15 values each). Anything you leave out is removed. Combinations patch price, compare-at price and sku by label.template_id, options[{ name, values }], combinations[{ match, price, compare_at_price, sku }]
get_page_imagesReadEvery replaceable image in page order with its id, key, current url and section context, plus your remaining AI image allowance.template_id
generate_page_imagesWriteGenerates AI scenes and replaces images, either one prompt per slot or an automatic batch by count. Prompts describe the scene only, and no text is rendered into images. Max 4 per call, counted against your AI image limit.template_id, images[{ id, key, prompt, avatar, ratio }] or count

Publish

ToolAccessWhat it doesArguments
list_shopsReadLists the Shopify stores connected to your PagePilot account.none
publish_to_shopifyWritePublishes a page to a connected store. Re-publishing updates the product it created before.template_id, shopify_domain (required), shopify_product_id, create_new, replace_title, replace_description, replace_handle

Research (paid plan)

ToolAccessWhat it doesArguments
get_winning_productsReadPagePilot’s current ranked winning-product picks with cost, suggested price, margin and an AliExpress URL you can pass straight to create_page.none
get_winning_storesReadTop-revenue Shopify stores with traffic split and bestsellers, optionally filtered by country.country (ISO-2, optional)
get_winning_adsReadToday’s hot Facebook ad products with ad spend, revenue and store URLs.none

What publish_to_shopify Writes To Your Store

Publishing is the one tool that changes your store, so here is exactly what it does. Try it on a development store first, because it edits the live theme.

A New Product

  • Checks the shop is connected to your account and that its Shopify access token is valid. shopify_domain must look like your-store.myshopify.com.
  • On the store's main theme, adds or updates a PagePilot block in layout/theme.liquid and uploads PagePilot's theme files.
  • Writes the page as a product template, templates/product.pagepilot.<page id>.json.
  • Creates a product with status ACTIVE that uses that template, with the page's title, SEO description, images and variants.
  • Returns shopify_url, such as https://your-store.myshopify.com/products/handle.

Updating Instead Of Duplicating

  • Publishing the same page to the same store again updates the product it created. You never pass a Shopify product id for that.
  • Pass create_new to force a brand new product, or shopify_product_id (numeric or gid) to apply the page to a different existing product or page.
  • When applying to an existing product, PagePilot backs it up first, swaps in the template, and updates variants and media. Title and description are only replaced when you set replace_title or replace_description. replace_handle is accepted, but the current export code does not act on it.
  • Pages of type page publish as Shopify pages under /pages/ instead of products.
  • shopify_access_token is only accepted for billable API keys. Standard keys publish to stores connected in the dashboard.

Limits And Error Responses

Each tool is a thin layer over the PagePilot REST API under /api/v2, called with your same key, so the same plan limits apply to an agent and to a script. Page creation through MCP also has its own cooldown. Here is what you will see when a request is refused.

SituationWhat you get
No key sentHTTP 401 with JSON-RPC error -32001 and a WWW-Authenticate: Bearer header.
Key not recognisedA tool result with isError set: "Authentication failed (401)", pointing at the dashboard to create a new key.
Free plan calling create_page, generate_page_images or publish_to_shopifyThe API answers 403 with code UPGRADE_REQUIRED. The MCP server prefixes every 403 with "Authentication failed (403)", so read the JSON detail at the end of the message.
Plan limit reached403 "Plan limit exceeded" for page creation and publishing, or PLAN_LIMIT_EXCEEDED with your remaining quota for images.
create_page called too soon429 "The page generation queue is busy right now. Please retry in N seconds." The cooldown starts at 60 seconds and grows with your monthly MCP volume.
publish_to_shopify called too soon429 "Rate limited: 1 export per 60 seconds".
Unsupported product URL400 listing the supported sources: AliExpress, Amazon, Shopify, TikTok and Etsy. SHEIN links are not accepted.
Store not connected to your account404 "Shop domain not found in your account". Connect it in the PagePilot dashboard first.
Shopify plan cannot edit themes422 with code THEME_LIMITED_PLAN.
Research tools without a subscriptionA tool result saying the feature is paid, with a link to the plans.
Missing Accept header, or a GET request406 without Accept: application/json, text/event-stream. GET returns 405 with Allow: POST because the server offers no SSE stream.

How It Differs From Other Shopify MCP Servers

Search for a Shopify MCP server and you will find three different kinds of tool. They solve different problems and can run side by side in one client.

Shopify’s Own Tools

Shopify’s AI Toolkit and Dev MCP server give assistants Shopify developer docs, API schemas and code validation, aimed at people building on Shopify.

Admin API Wrappers

Many community servers wrap the Shopify Admin or Storefront API so an assistant can read and edit store data such as products, orders and customers.

PagePilot

A builder. Give it a product URL and it generates a designed product page, lets the assistant edit it, and publishes it to your store. It has no tools for orders, customers or inventory.

This is also not agentic commerce in the checkout sense. The server helps a merchant build and publish pages. It does not let a shopper's agent buy anything. New to the protocol? The Model Context Protocol site explains how clients and servers talk.

Keep Going

See what each plan includes on the pricing page, learn what the generated pages look like in AI product pages, or tweak one by hand in the drag and drop page builder.

Shopify MCP Server FAQs

What Is The PagePilot Shopify MCP Server?

It is a remote Model Context Protocol (MCP) server at https://app.pagepilot.ai/api/mcp. Connect Claude, ChatGPT, or any MCP client to it with a PagePilot API key and the assistant gets 16 tools: create a product page from a product URL, wait for it to generate, edit its texts, prices, variants and images, and publish it to a Shopify store connected to your PagePilot account.

What Is The Server URL And How Does Authentication Work?

The URL is https://app.pagepilot.ai/api/mcp. It uses the MCP Streamable HTTP transport in stateless mode, so requests are POST only and the server returns plain JSON. Authenticate with a PagePilot API key from app.pagepilot.ai/dashboard/api. Send it as an Authorization: Bearer header or an x-api-key header. Connector forms that only take a name and a URL, like the ones PagePilot's setup uses for Claude and ChatGPT, can pass it as an api_key query parameter instead. There is no OAuth flow.

How Do I Connect Claude To Shopify With PagePilot?

In Claude Code, add the server to .mcp.json with type http, the server URL, and an Authorization header, or run: claude mcp add --transport http pagepilot https://app.pagepilot.ai/api/mcp --header "Authorization: Bearer YOUR_API_KEY". In Claude on the web or desktop, open Settings, then Connectors, choose Add custom connector, and paste https://app.pagepilot.ai/api/mcp?api_key=YOUR_API_KEY as the remote MCP server URL. Then ask Claude to create a page from a product URL and publish it to your store.

Can I Use The Shopify MCP Server With ChatGPT?

Yes, through ChatGPT's custom connector support. Turn on Developer mode under Settings, then Security and login. Create a new connector with https://app.pagepilot.ai/api/mcp?api_key=YOUR_API_KEY as the connection URL and set Authentication to No Auth, because the key travels in the URL. PagePilot's own dashboard walks through the same steps at app.pagepilot.ai/dashboard/api/mcp.

What Can The Server Do, And What Can It Not Do?

It can list your pages, create a page from a product URL, check generation status, read and update page texts, prices, variants and images, generate AI images, list your connected Shopify stores, publish a page to a store, and fetch PagePilot's winning products, top stores and hot ad products. It cannot read or change orders, customers, inventory, or other Shopify Admin data, it cannot complete a checkout for a shopper, and it exposes tools only, with no MCP resources or prompts.

What Does publish_to_shopify Change In My Store?

It works on the store's main theme. It adds or updates a PagePilot block in layout/theme.liquid, uploads PagePilot's theme files, writes a product template named product.pagepilot.<page id>.json, and creates a product with status ACTIVE that uses that template. Publishing the same page to the same store again updates that product instead of creating a duplicate, unless you pass create_new. Because it edits the live theme, try it on a development store first.

Do I Need A Paid Plan To Use The Shopify MCP Server?

Yes, for the tools that create and publish. create_page, generate_page_images and publish_to_shopify require an active paid PagePilot plan (Lite or higher), and usage counts against your plan limits such as product pages and AI images. A free account gets a 403 with the code UPGRADE_REQUIRED. Standard API keys are also rate limited: page creation has a cooldown that starts at 60 seconds and grows with monthly MCP volume, and publishing is limited to one export per 60 seconds.

Is This The Same As Agentic Commerce Or Shopify's Own MCP Tools?

No. Agentic commerce usually means AI agents shopping and checking out on a buyer's behalf, and PagePilot's server does not do that. Shopify's own AI Toolkit and Dev MCP server give assistants Shopify documentation, API schemas and code validation for developers. PagePilot's server sits on the merchant side: it builds and publishes product pages. You can run it next to other MCP servers in the same client.

Is It Safe To Put My API Key In A Connector URL?

Treat that URL as a secret. PagePilot's Claude and ChatGPT setups use a URL-only connector form, so the key rides in the query string, and keys in URLs can end up in logs. A key acts as your account for these tools, including publishing to your stores. Create a separate key for each client at app.pagepilot.ai/dashboard/api (up to five) and delete a key there if it leaks. Where a client lets you set headers, such as Claude Code, use the Authorization header instead.

Give Your AI Assistant A Page Builder

Create an account, pick a plan, copy your API key, and ask your assistant for a product page.

Create A PagePilot Account