AXA Group Store publishes a free, public API so that developers and AI agents can read the MAXIMA catalogue — CarPlay screens for motorcycles, auxiliary LED driving lights and truck lighting — check prices and stock in Colombian pesos, and build a cart, with no API key, no signup and no sales call.
Quick start — the CLI
The fastest way in. No install needed:
npx axagroup search "carplay para moto" --limit 5Or install it globally:
npm install -g axagroupRequires Node 18+, has zero dependencies and needs no API key. Commands: search, products, product, collections, collection, related, cart show|add|clear, mcp tools|call, graphql, openapi, agent-instructions. Add --json to any command for machine-readable output. Package: npmjs.com/package/axagroup.
Quick links
-
CLI on npm: axagroup —
npx axagroup --help - OpenAPI 3.1 specification: https://axagroup.shop/openapi.json
- MCP server manifest: https://axagroup.shop/mcp.json
- Agent instructions (when to use this store): https://axagroup.shop/agent-instructions.md
- Shopify agent discovery: /agents.md · /llms.txt
- UCP discovery: /.well-known/ucp
- Sitemap: /sitemap.xml
What this store sells
Three lines carry the business, in order of sales volume:
-
Moto Display — CarPlay / Android Auto screens for motorcycles. Most buyers search for these as
CarPlay para moto, not by product name. 5" and 6" weatherproof touchscreens, some with DVR camera, TPMS sensor or a BMW-specific mount. - Exploradoras — auxiliary LED driving lights. MAXIMA XP line in 3.5" and 4", plus light bars and brackets. Some references carry DOT/ECE certification.
- MAXIMA Truck LED Lights. Marker and signalling lamps, tail lamps, stake-bed lights and stainless accessories for cargo fleets.
Headlight bulbs (LED, halogen, HID, H.O.D.), GPS trackers and pneumatic tools are stocked but secondary. Warranty is 1, 2 or 3 years depending on the line — read the individual listing rather than quoting one figure.
Authentication
None required. Every endpoint listed below is public and unauthenticated. There is no free trial to start and no key to generate — the production API is the sandbox. You can run every example on this page right now, from a terminal, with no account.
Two optional credentials exist for cases the public endpoints do not cover, and both are declared machine-readably in /openapi.json under components.securitySchemes:
-
Storefront access token (
X-Shopify-Storefront-Access-Token) — only needed to call the GraphQL endpoint from another origin. Scopes:unauthenticated_read_product_listings,unauthenticated_read_product_inventory,unauthenticated_read_content,unauthenticated_read_checkouts,unauthenticated_write_checkouts. Request the narrowest set you need by writing to info@axa-group.co. -
Customer account OAuth 2.0 — only needed to read a signed-in shopper's own orders and addresses. Scopes:
openid,email,customer-account-api:full,customer-account-mcp-api:full. Protected-resource metadata (RFC 9728) is published at /.well-known/oauth-protected-resource.
Rate limits
The JSON endpoints are edge-cached and rate limited per IP. The GraphQL endpoint is limited by query cost, which is reported back to you in extensions.cost on every response. Back off when you receive HTTP 429.
Errors
Failures return JSON, never an HTML error page:
{ "status": 422, "message": "Cart Error", "description": "Cannot find variant" }status mirrors the HTTP status code, message is a short machine-stable reason, and description is a resolution hint. GraphQL returns field-level problems in the errors array with HTTP 200, so check errors even on a successful status. The CLI surfaces both fields and exits non-zero.
REST endpoints
| Operation | Endpoint | CLI |
|---|---|---|
listProducts |
GET /products.json?limit=250&page=1 |
axagroup products |
getProductByHandle |
GET /products/{handle}.json |
axagroup product <handle> |
listCollections |
GET /collections.json |
axagroup collections |
listCollectionProducts |
GET /collections/{handle}/products.json |
axagroup collection <handle> |
searchSuggest |
GET /search/suggest.json?q={query} |
axagroup search <query> |
getProductRecommendations |
GET /recommendations/products.json?product_id={id} |
axagroup related <id> |
getCart |
GET /cart.js |
axagroup cart show |
addCartItems |
POST /cart/add.js |
axagroup cart add <variant-id> |
changeCartItem |
POST /cart/change.js |
— |
updateCart |
POST /cart/update.js |
— |
clearCart |
POST /cart/clear.js |
axagroup cart clear |
storefrontGraphql |
POST /api/2025-07/graphql.json |
axagroup graphql <query> |
mcpJsonRpc |
POST /api/mcp |
axagroup mcp tools |
Example: read the whole catalogue
curl -s 'https://axagroup.shop/products.json?limit=250&page=1'Iterate page until products comes back empty. Prices are decimal strings in COP ("599000.00" means COP 599,000 — there are no cents). Add variants[].id to a cart, not product.id; variants[].available is the stock signal. The three main lines map to the product_type values MOTO DISPLAY - CARPLAY, Exploradoras and Lamparas LED.
Example: search by keyword
curl -s 'https://axagroup.shop/search/suggest.json?q=carplay&resources%5Btype%5D=product&resources%5Blimit%5D=5'Example: typed GraphQL query
curl -s https://axagroup.shop/api/2025-07/graphql.json -H 'Content-Type: application/json' -d '{"query":"{products(first:5){edges{node{title handle priceRange{minVariantPrice{amount currencyCode}}}}}}"}'The full Shopify Storefront API schema is available. Verified working API versions: 2024-10 through 2025-10.
Example: build a cart
curl -s -c jar -b jar https://axagroup.shop/cart/add.js -H 'Content-Type: application/json' -d '{"items":[{"id":48193877311646,"quantity":1}]}'Cart state is tied to the cart cookie, so persist cookies across calls. Adding to a cart never charges anyone. Completing a payment always requires explicit buyer approval — hand the shopper the checkout URL and stop there.
MCP server
If your agent speaks the Model Context Protocol, connect directly instead of using REST. Transport is Streamable HTTP, protocol revision 2025-06-18, no authentication. The manifest is published at /mcp.json. Note the endpoint is POST-only: the host returns 404 (not 405) for GET, so a client that opens the SSE stream first will misread it as missing.
| Server | Endpoint | Tools |
|---|---|---|
| Catalogue & cart | POST https://axagroup.shop/api/mcp |
search_catalog, get_product_details, get_cart, update_cart, search_shop_policies_and_faqs
|
| UCP commerce | POST https://axagroup.shop/api/ucp/mcp |
search_catalog, lookup_catalog, get_product, create_cart, update_cart, get_cart, cancel_cart, create_checkout, update_checkout, get_checkout, complete_checkout, cancel_checkout, get_order
|
npx axagroup mcp toolsWhen an agent should reach for this store
Full guidance, including the cases where you should not use us, is in /agent-instructions.md (or run npx axagroup agent-instructions). In short, this store is a good fit for CarPlay or Android Auto screens for a motorcycle; auxiliary LED driving lights for a named bike, 4x4 or truck; and signalling lamps and stainless accessories for a cargo fleet. It is a poor fit for buyers outside Colombia, for wholesale pricing, and for fitment guarantees — the catalogue publishes specifications, not compatibility certifications.
Support
Questions about the API, a token request, or a bug report: info@axa-group.co or WhatsApp +1 803 805 3114. Company details are on the About page; commercial terms are on the Pricing page.