What
Add a bigcommerce.js adapter that turns BigCommerce storefront product pages into agent-callable WebMCP tools (get_product, get_price, check_stock, list_variants, add_to_cart).
Why it's valuable
BigCommerce powers several hundred thousand stores. Per ADAPTERS_WANTED.md (Easy column) it exposes a public /products/<slug>.js endpoint that behaves very much like Shopify's /products/<handle>.json. That makes it the lowest-risk way to add a second large e-commerce platform after Shopify, and it's an almost mechanical mirror of an adapter we already ship.
Where to start
- Copy the template:
cp -r adapters/_template adapters/bigcommerce then rename to adapters/bigcommerce.js and set ID = "bigcommerce" (see adapters/_template/adapter.js + adapters/CONTRACT.md).
- Use
adapters/shopify.js as the working reference — the structure (URL-regex detect(), JSON probe in extract(), buildTools(), live actions for price/stock/cart) maps almost 1:1. Keep the CHROME_UA header and credentials: "omit" from the contract's fetch-etiquette section.
detect() must be synchronous and side-effect-free (no fetch) per CONTRACT.md — match the BigCommerce product-URL shape and return { adapter: ID, ... }. Note BigCommerce stores often serve from custom domains, so disambiguate via URL pattern + let the .js fetch confirm (same approach as Shopify).
- Capture a fixture into
adapters/_fixtures/ per adapters/_fixtures/README.md (keep it under ~200KB, add the <!-- source: ... captured: ... --> comment) and add a detect() test (plus an extract() test mocking globalThis.fetch) to adapters/_test/run.mjs. Run node adapters/_test/run.mjs.
- Wire the import into the
ADAPTERS list in worker/src/index.ts (most-specific first), as CONTRIBUTING.md step 7 describes.
Acceptance criteria
What
Add a
bigcommerce.jsadapter that turns BigCommerce storefront product pages into agent-callable WebMCP tools (get_product,get_price,check_stock,list_variants,add_to_cart).Why it's valuable
BigCommerce powers several hundred thousand stores. Per
ADAPTERS_WANTED.md(Easy column) it exposes a public/products/<slug>.jsendpoint that behaves very much like Shopify's/products/<handle>.json. That makes it the lowest-risk way to add a second large e-commerce platform after Shopify, and it's an almost mechanical mirror of an adapter we already ship.Where to start
cp -r adapters/_template adapters/bigcommercethen rename toadapters/bigcommerce.jsand setID = "bigcommerce"(seeadapters/_template/adapter.js+adapters/CONTRACT.md).adapters/shopify.jsas the working reference — the structure (URL-regexdetect(), JSON probe inextract(),buildTools(), liveactionsfor price/stock/cart) maps almost 1:1. Keep theCHROME_UAheader andcredentials: "omit"from the contract's fetch-etiquette section.detect()must be synchronous and side-effect-free (nofetch) per CONTRACT.md — match the BigCommerce product-URL shape and return{ adapter: ID, ... }. Note BigCommerce stores often serve from custom domains, so disambiguate via URL pattern + let the.jsfetch confirm (same approach as Shopify).adapters/_fixtures/peradapters/_fixtures/README.md(keep it under ~200KB, add the<!-- source: ... captured: ... -->comment) and add adetect()test (plus anextract()test mockingglobalThis.fetch) toadapters/_test/run.mjs. Runnode adapters/_test/run.mjs.ADAPTERSlist inworker/src/index.ts(most-specific first), as CONTRIBUTING.md step 7 describes.Acceptance criteria
detect()returns a context for BigCommerce product URLs andnullfor unrelated URLs (no false positives — see CONTRACT.md "Detects sharply").extract()returns{ product, variants, tools }with at leastget_priceplus one actionable tool (add_to_cart)._fixtures/and at least one test in_test/run.mjsthat passes offline.worker/src/index.ts.