vivid-ads-commerce
What this MCP does
Supports Australian signage product discovery, configuration, pricing, quotes, artwork handling, draft orders, proofs, delivery, pickup, and fulfillment tracking.
Tools
Input schema
{'type': 'object', 'required': ['quote_number', 'email'], 'properties': {'email': {'type': 'string', 'description': 'the email the quote was sent to (required)'}, 'quote_number': {'type': 'string', 'description': "quote/draft number, e.g. '#D786069'"}}}
Input schema
{'type': 'object', 'properties': {'fileId': {'type': 'string', 'description': 'after a direct upload completes, pass the returned file id here to finalise and get the share link'}, 'filename': {'type': 'string', 'description': "filename (required with requestUpload), e.g. 'flyer.pdf'"}, 'sourceUrl': {'type': 'string', 'description': 'a shareable https link to the print-ready artwork (PDF/PNG/JPG/AI/EPS) â\x80\x94 the easiest path'}, 'contentType': {'type': 'string'}, 'requestUpload': {'type': 'boolean', 'description': 'set true to get a direct-upload URL for a large file (client uploads straight to storage)'}}}
Input schema
{'type': 'object', 'required': ['file_url'], 'properties': {'file_url': {'type': 'string', 'description': 'downloadable URL of the artwork PDF (e.g. the fileUrl from vivid_upload_artwork)'}, 'width_mm': {'type': 'number', 'description': 'ordered width in mm, if known â\x80\x94 enables the size check'}, 'height_mm': {'type': 'number', 'description': 'ordered height in mm, if known'}}}
Input schema
{'type': 'object', 'properties': {'product': {'type': 'string', 'description': "the product handle the customer chose, e.g. 'pull-up-banners' â\x80\x94 returns items frequently bought with it from real order history"}, 'use_case': {'type': 'string', 'description': "curated fallback: 'trade-show', 'school-open-day', 'construction-fence', 'retail-promotion', 'real-estate', or 'corporate-conference'"}, 'already_have': {'type': 'array', 'items': {'type': 'string'}, 'description': 'product keys/handles the customer already chose (optional) â\x80\x94 excluded from suggestions'}}}
Input schema
{'type': 'object', 'required': ['postcode'], 'properties': {'product': {'type': 'string', 'description': 'product name â\x80\x94 used to read its real production time'}, 'postcode': {'type': 'string', 'description': '4-digit Australian delivery postcode'}, 'artwork_ready': {'type': 'boolean', 'description': 'true if artwork is print-ready and the proof will be approved immediately'}}}
Input schema
{'type': 'object', 'required': ['product', 'postcode'], 'properties': {'size': {'type': 'string', 'description': "(simple products) size, e.g. '850x2050'"}, 'state': {'type': 'string', 'description': 'VIC/NSW/QLD/SA/WA/TAS/NT/ACT (derived from postcode if omitted)'}, 'suburb': {'type': 'string'}, 'options': {'type': 'object', 'description': 'FULL selected options for option-rich/custom products (same shape as vivid_price.options)'}, 'product': {'type': 'string', 'description': "product name, e.g. 'pull up banner'"}, 'postcode': {'type': 'string', 'description': '4-digit Australian postcode'}, 'quantity': {'type': 'number'}}}
Input schema
{'type': 'object', 'anyOf': [{'required': ['order_id']}, {'required': ['order_name']}], 'required': ['customer_email'], 'properties': {'order_id': {'type': 'string', 'description': 'Shopify order GID, e.g. gid://shopify/Order/123.'}, 'order_name': {'type': 'string', 'description': 'Human order name, e.g. "#12345" (alias for order_id).'}, 'line_item_id': {'type': 'string', 'description': 'Optional Shopify line item GID to scope to one item.'}, 'customer_email': {'type': 'string', 'description': 'The email address on the order. REQUIRED for identity â\x80\x94 order details are only returned when this email matches the order. The customer must give their email AND one of their order numbers.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'anyOf': [{'required': ['order_id']}, {'required': ['order_name']}], 'required': ['customer_email'], 'properties': {'order_id': {'type': 'string', 'description': 'Shopify order GID, e.g. gid://shopify/Order/123.'}, 'order_name': {'type': 'string', 'description': 'Human order name, e.g. "#12345" (alias for order_id).'}, 'line_item_id': {'type': 'string', 'description': 'Optional Shopify line item GID to scope to one item.'}, 'customer_email': {'type': 'string', 'description': 'The email address on the order. REQUIRED for identity â\x80\x94 order details are only returned when this email matches the order. The customer must give their email AND one of their order numbers.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'anyOf': [{'required': ['order_id']}, {'required': ['order_name']}], 'required': ['customer_email'], 'properties': {'order_id': {'type': 'string', 'description': 'Shopify order GID, e.g. gid://shopify/Order/123.'}, 'order_name': {'type': 'string', 'description': 'Human order name, e.g. "#12345" (alias for order_id).'}, 'line_item_id': {'type': 'string', 'description': 'Optional Shopify line item GID to scope to one item.'}, 'customer_email': {'type': 'string', 'description': 'The email address on the order. REQUIRED for identity â\x80\x94 order details are only returned when this email matches the order. The customer must give their email AND one of their order numbers.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'anyOf': [{'required': ['order_id']}, {'required': ['order_name']}], 'required': ['customer_email'], 'properties': {'order_id': {'type': 'string', 'description': 'Shopify order GID, e.g. gid://shopify/Order/123.'}, 'order_name': {'type': 'string', 'description': 'Human order name, e.g. "#12345" (alias for order_id).'}, 'line_item_id': {'type': 'string', 'description': 'Optional Shopify line item GID to scope to one item.'}, 'customer_email': {'type': 'string', 'description': 'The email address on the order. REQUIRED for identity â\x80\x94 order details are only returned when this email matches the order. The customer must give their email AND one of their order numbers.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['email'], 'properties': {'email': {'type': 'string', 'description': "the customer's email to verify"}, 'purpose': {'type': 'string', 'description': 'reorder | order_status | saved_details (optional)'}}}
Input schema
{'type': 'object', 'required': ['verificationId', 'code'], 'properties': {'code': {'type': 'string', 'description': 'the 6-digit code the customer received by email'}, 'verificationId': {'type': 'string', 'description': 'from vivid_identity_start'}}}
Input schema
{'type': 'object', 'required': ['order', 'email'], 'properties': {'email': {'type': 'string', 'description': "the customer's email (must match the identity token)"}, 'order': {'type': 'string', 'description': "the order number to show artwork for, e.g. '117478'"}, 'token': {'type': 'string', 'description': 'the identity token from vivid_identity_verify (required â\x80\x94 proves the customer owns this email/order)'}}}
Input schema
{'type': 'object', 'properties': {'email': {'type': 'string', 'description': "alternatively, the customer's email to list recent orders (requires verified identity)"}, 'reference': {'type': 'string', 'description': "order # or quote/draft # (e.g. '#119581' or '#D776755')"}}}
Input schema
{'type': 'object', 'required': ['email'], 'properties': {'name': {'type': 'string'}, 'size': {'type': 'string'}, 'email': {'type': 'string'}, 'items': {'type': 'array', 'items': {'type': 'object', 'properties': {'size': {'type': 'string'}, 'artwork': {'type': 'object', 'description': "THIS line's artwork { mode:'ai_design'|'upload_file'|'design_brief', ... } (same shape as top-level artwork)."}, 'options': {'type': 'object'}, 'product': {'type': 'string'}, 'quantity': {'type': 'number'}}}, 'description': 'For a MULTI-LINE order (e.g. two banners with DIFFERENT designs): one entry per line, each { product, size?, options?, quantity?, artwork? }. Different designs must be SEPARATE entries (quantity 1 each) with their OWN artwork. If provided, this replaces the single top-level product; contact/delivery/PO stay at the top level.'}, 'phone': {'type': 'string'}, 'artwork': {'type': 'object', 'description': "{ mode:'ai_design'|'upload_file'|'design_brief', designId?, imageUrl?, printPdfUrl?, fileUrl?, brief? }"}, 'company': {'type': 'string'}, 'confirm': {'type': 'boolean', 'description': 'set true ONLY after the customer reviews and confirms'}, 'options': {'type': 'object', 'description': 'FULL selected options (same shape as vivid_price.options). Use vivid_product to see them. Prefer this over `size` for option-rich products.'}, 'product': {'type': 'string'}, 'delivery': {'type': 'object', 'description': "pickup or delivery details. PICKUP: { method:'pickup', name, email, phone, pickupLocation?, notes? }. DELIVERY: { method:'delivery', name, email, phone, company?, address1, address2?, suburb, state, postcode, country, notes? }. Contact (name/email/phone) can live here or at the top level. Omit entirely to keep the old behaviour."}, 'poNumber': {'type': 'string'}, 'quantity': {'type': 'number'}, 'customerType': {'type': 'string', 'description': 'retail|corporate|school|government|account â\x80\x94 sets payment terms'}}}
Input schema
{'type': 'object', 'required': ['product'], 'properties': {'size': {'type': 'string', 'description': "(simple products) size, e.g. '850x2000', or a named size like 'medium'"}, 'options': {'type': 'object', 'description': "FULL selected options keyed by the schema keys from vivid_product, e.g. { size:'Medium', sides:'Double-sided', base:'Heavy Duty Metal Plate (5kg)' } or { size:'Custom', widthMm:700, heightMm:1000, eyelets:'4 x eyelets (all corners)', cutting:'Square or Rectangle' }"}, 'product': {'type': 'string', 'description': "product name, e.g. 'pull up banner', 'corflute', 'a-frame', 'feather flag'"}, 'quantity': {'type': 'number', 'description': 'how many'}}}
Input schema
{'type': 'object', 'required': ['product'], 'properties': {'size': {'type': 'string', 'description': 'size â\x80\x94 breaks are per size/variant'}, 'product': {'type': 'string', 'description': "product name, e.g. 'premium pull up banner'"}, 'quantity': {'type': 'number', 'description': "the customer's current quantity, to highlight the next worthwhile break"}}}
Input schema
{'type': 'object', 'required': ['product'], 'properties': {'product': {'type': 'string', 'description': "product name, e.g. 'feather flag', 'corflute', 'table throw'"}}}
Input schema
{'type': 'object', 'required': ['order_number', 'email'], 'properties': {'email': {'type': 'string', 'description': 'the email address the order was placed under (required)'}, 'order_number': {'type': 'string', 'description': "order number, e.g. '#121978'"}}}
Input schema
{'type': 'object', 'properties': {'goal': {'type': 'string', 'description': 'e.g. foot-traffic, promote-sale, stand-out-expo, advertise-outside, opening-store, brand-presence'}, 'business': {'type': 'string', 'description': 'e.g. cafe-hospitality, retail, real-estate, events-expo, corporate, school, gym-fitness'}}}
Input schema
{'type': 'object', 'required': ['email'], 'properties': {'name': {'type': 'string'}, 'email': {'type': 'string', 'description': 'the email the customer ordered under (required to find past orders)'}, 'order': {'type': 'string', 'description': "order name to reorder from, e.g. '#D12345' (optional)"}, 'token': {'type': 'string', 'description': 'the identity token from vivid_identity_verify (required â\x80\x94 proves the customer owns this email)'}, 'action': {'type': 'string', 'description': "'list' (show past orders) or 'reorder' (repeat one)"}, 'artwork': {'type': 'string', 'description': 'new print-ready artwork file URL (optional; default = reuse previous)'}, 'confirm': {'type': 'boolean', 'description': 'set true to place the reorder (draft, proof-gated, never charges)'}, 'product': {'type': 'string', 'description': "which product to reorder, e.g. 'corflute' (optional; default = most recent eligible)"}, 'quantity': {'type': 'number', 'description': 'override quantity (optional; default = same as last time)'}}}
Input schema
{'type': 'object', 'required': ['email'], 'properties': {'name': {'type': 'string'}, 'size': {'type': 'string'}, 'email': {'type': 'string'}, 'phone': {'type': 'string', 'description': 'customer phone (optional)'}, 'design': {'type': 'string', 'description': "design preference: 'ai_design' | 'upload_own' | 'design_later'"}, 'company': {'type': 'string'}, 'message': {'type': 'string', 'description': "the customer's full request in their own words (multi-item OK)"}, 'options': {'type': 'object', 'description': 'FULL selected options (same shape as vivid_price.options) so the quotation is priced exactly â\x80\x94 include size + any dropdowns/add-ons.'}, 'product': {'type': 'string'}, 'quantity': {'type': 'number'}, 'artworkUrl': {'type': 'string', 'description': "link to the customer's uploaded artwork (e.g. the fileUrl returned by vivid_upload_artwork), if any"}, 'discountCode': {'type': 'string', 'description': 'any reseller/trade or discount code the customer mentioned (recorded, NOT applied here)'}}}
Input schema
{'type': 'object', 'required': ['query'], 'properties': {'query': {'type': 'string', 'description': "what the customer is looking for (a product name, a category, or a use-case like 'expo' or 'shopfront')"}}}
Input schema
{'type': 'object', 'required': ['question'], 'properties': {'question': {'type': 'string', 'description': "the customer's support question, in their own words"}}}
Input schema
{'type': 'object', 'required': ['filename', 'contentBase64'], 'properties': {'email': {'type': 'string', 'description': 'customer email (optional). Only recorded once verified â\x80\x94 see token.'}, 'token': {'type': 'string', 'description': 'identity token from vivid_identity_verify. Required to attach this upload to an order or to record the email; without it the file is still stored, just not claimed by anyone.'}, 'orderId': {'type': 'string', 'description': "attach to an existing order (optional). Ignored unless a valid token is supplied â\x80\x94 an unverified caller must not be able to put a file on somebody else's order."}, 'quoteId': {'type': 'string', 'description': 'associate with a quote request (optional)'}, 'filename': {'type': 'string', 'description': "original filename incl. extension, e.g. 'banner-artwork.pdf'"}, 'mimeType': {'type': 'string', 'description': "MIME type, e.g. 'application/pdf'"}, 'sessionId': {'type': 'string', 'description': 'associate with a design session (optional)'}, 'contentBase64': {'type': 'string', 'description': 'the file contents, base64-encoded (data URI prefix OK). Small files only; for very large files share a download link instead.'}}}
Recent tool changes
Similar MCP servers
Ask AI
Answers questions about connected e-commerce data from Shopify, Klaviyo, GA4, Triple Whale, and other sources, covering sales, ma…
Neonjelly
Analyzes Shopify stores, products, apps, traffic, competitors, catalog changes, market cohorts and outreach contacts across a lar…
Resonance Reward Agent
Finds cashback deals and rewards, compares brands and offers, and provides analytics and management tools for reward programs.
Real Real Genuine
Enables browsing fashion brands and listings, submitting designs, purchasing digital or physical products, referrals, vouchers, l…
Postscript
Retrieves Shopify Postscript SMS marketing subscribers, opt-in keywords, and subscriber or keyword details.
AgentIQ
Operates an agent-oriented advertising network for campaigns, placements, creative and coupon delivery, attribution, affiliate li…
Jungle Scout
Provides Amazon product searches, sales estimates, keyword metrics, pricing, rankings, and marketplace research.
Finewisdom 社媒与电商数据接口
Retrieves social media content and engagement data and searches products, shops, reviews, and sellers across Chinese and internat…