shopify-collection-ensure
POST
/api/v1/shopify-collection-ensure
1 credits/call
shopify
catalog
Ensure a vendor has a published brand smart collection and a Main Menu link to it. Idempotent on the vendor name.
Sign in + create an API key on the keys page to authenticate calls.
curl -X POST https://api.fulcrumgo.com/api/v1/shopify-collection-ensure \
-H "Authorization: Bearer mcpsk_<your_api_key>" \
-H "Content-Type: application/json" \
-d '{
"vendor": "",
"publish": true,
"add_to_menu": true
}'
Add this server to Claude Desktop's claude_desktop_config.json. The endpoint becomes a callable tool inside Claude. See the MCP setup guide for the full walk-through.
{
"mcpServers": {
"this-api": {
"url": "https://api.fulcrumgo.com/mcp",
"transport": "http",
"auth": {
"type": "bearer",
"token": "mcpsk_<your_api_key>"
}
}
}
}
Inside Claude this endpoint surfaces as the tool shopify-collection-ensure.
Standard requests — no custom SDK needed. pip install requests first.
import requests
r = requests.post(
"https://api.fulcrumgo.com/api/v1/shopify-collection-ensure",
headers={"Authorization": "Bearer mcpsk_<your_api_key>"},
json={
"vendor": "",
"publish": true,
"add_to_menu": true
},
)
r.raise_for_status()
print(r.json())
Plain fetch. Works in Node 18+, Deno, Bun, and any modern browser.
const r = await fetch("https://api.fulcrumgo.com/api/v1/shopify-collection-ensure", {
method: "POST",
headers: {
"Authorization": "Bearer mcpsk_<your_api_key>",
"Content-Type": "application/json",
},
body: JSON.stringify({
"vendor": "",
"publish": true,
"add_to_menu": true
}),
});
if (!r.ok) throw new Error(`HTTP ${r.status}`);
console.log(await r.json());
Input
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
| vendor | string | required | — |
Vendor name exactly as it is spelled on the products. This is the collection title and the menu entry, so a typo here is visible on the storefront.
maxLength=255
|
| publish | boolean | optional | True | Publish the collection to every sales channel. |
| add_to_menu | boolean | optional | True | Add a link under Main Menu > Brands > the matching letter range. Turn off to create the collection without touching navigation. |
Output
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
| collection_id | string | required | — | |
| handle | string | required | — | |
| admin_url | string | required | — | |
| created | boolean | required | — | False when the collection already existed. |
| published | boolean | required | — | |
| published_to | array<string> | optional | — | |
| menu_status | string | required | — | added = a new link is live. already_present = it was there. skipped = add_to_menu was false. no_bucket = the vendor's first letter matched no range, place it by hand. no_brands_menu / refused = the menu was not what we expected and was NOT written. |
| storefront_url | string | optional | Where the collection will appear once it has stock. | |
| warnings | array<string> | optional | — | Non-fatal problems. A collection can land unpublished or unlinked; never report the brand as browsable when this is non-empty. |
Try it
Fires a real POST /api/v1/shopify-collection-ensure from your browser. Charges 1 credit per call against your account.