Skip to content

au.com.vividads/vivid-ads-commerce

by vividads.com.au · remote · no sign-in to list tools · v1.0.0 · published by au.com.vividads

Live signage pricing, formal quotes and draft orders from Vivid Ads Australia. Open pre-sales MCP.

Changes · 18

27 tools: 18 change things and 9 only read.

Scanned Oct 21, 2026

1 check matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http vivid-ads-commerce https://agent.vividads.com.au/api/ucp/public/mcp

Findings

Matches of fixed checks, with the text they matched.

1 warn
  • The server marks "vivid_fulfilment_shipping" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The description's first verb is "star": a word for a change.

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

27 tools

Changes things 18Claude Code: ask
  • vivid_artworkAttach a customer-provided artwork file or link to a signage order (a successful attach does NOT mean it is print-ready — the team still checks it).No findings

    Why it is in this group

    • The description's first verb is "attach": a word for a change.
    Description, as the server wrote it
    Attach a customer-provided artwork file or link to a signage order (a successful attach does NOT mean it is print-ready — the team still checks it). EASIEST: pass a shareable link to the file (sourceUrl) — Google Drive, Dropbox, WeTransfer, etc. — and use the returned fileUrl in vivid_place_order's artwork {mode:'upload_file', fileUrl}. For a large file with no link yet, set requestUpload:true to get a direct-upload URL (the file uploads straight to storage — handles 50–200MB+), then call again with the returned fileId to get the share link.

    Annotations the server declares

    • title: Attach artwork to an order
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • vivid_check_artworkCheck whether a customer's artwork PDF is print-ready BEFORE they order — powered by Vivid's own production preflight engine.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Check whether a customer's artwork PDF is print-ready BEFORE they order — powered by Vivid's own production preflight engine. Reports size vs the ordered size, bleed, RGB-vs-CMYK colour, font embedding and effective resolution, each with a plain-English fix. ADVISORY ONLY: it never blocks anything. If the customer is happy to proceed with the file as-is, that is always accepted — say so explicitly. Every order also gets a free digital proof before printing.

    Annotations the server declares

    • title: Check artwork is print-ready
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • vivid_contact_teamOpen a support case with the Vivid Ads team (emails the team and saves a record) for anything the other tools cannot do: a problem with an order (damaged, faulty, missing, wrong it…No findings

    Why it is in this group

    • The description's first verb is "open": a word for a change.
    Description, as the server wrote it
    Open a support case with the Vivid Ads team (emails the team and saves a record) for anything the other tools cannot do: a problem with an order (damaged, faulty, missing, wrong item or colour — reprint/refund claims), an order change (address, cancel, hold, split into one line per design), proof help (resend, changes), a human design service request, a sample/swatch request, a trade/reseller or payment-terms account, a price-match request, a tight deadline, or simply 'I want to talk to a person'. Call it ONCE per issue, after collecting a clear summary and the customer's email or phone. It never returns order details: an order number is passed to the team as the customer's own reference (marked unverified unless an identity token from vivid_identity_verify is supplied). For B2B AI-automation enquiries use reason 'ai_automation'. Never use this to take payment or approve a proof.

    Annotations the server declares

    • title: Contact the Vivid team (opens a support case)
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • vivid_cross_sellSuggest relevant, NON-pushy add-on products to round out a customer's order — 1–2 genuinely useful companions with a reason.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Suggest relevant, NON-pushy add-on products to round out a customer's order — 1–2 genuinely useful companions with a reason. PREFERS real frequently-bought-together data from Vivid Ads' order history (pass `product` = the product handle the customer chose); falls back to curated use-case bundles (pass `use_case`). Omit both to get guidance. Pass already_have to avoid re-suggesting what they've chosen. Never pressure — helpful suggestions only.

    Annotations the server declares

    • title: Suggest add-ons
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • vivid_delivery_estimateEstimate WHEN an order would arrive at an Australian postcode — the question behind 'can I get it by Friday?'.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Estimate WHEN an order would arrive at an Australian postcode — the question behind 'can I get it by Friday?'. Works the timeline through honestly: production starts only after the customer approves their digital proof (3pm AEST cutoff), then production time for that product, then transit for their postcode (metro/regional/remote bands). Returns an arrival WINDOW plus the assumptions it made. This is an ESTIMATE, never a guarantee — always relay the caveat, and for a hard deadline tell them to call 1300 721 614. Free pickup from Derrimut VIC is usually the fastest option.

    Annotations the server declares

    • title: Estimate delivery timing
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • vivid_delivery_quoteEXACT delivery/freight cost to an Australian postcode for a product configuration — the SAME live rates the vividads.com.au checkout shows (carrier + shipping-rules apps; incl.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    EXACT delivery/freight cost to an Australian postcode for a product configuration — the SAME live rates the vividads.com.au checkout shows (carrier + shipping-rules apps; incl. GST). Use whenever the customer asks what shipping/delivery costs. Resolve the product + size/options + quantity first (vivid_product / vivid_price), then call with the postcode (suburb improves accuracy). Never estimate freight yourself. Always also mention free pickup from Derrimut VIC 3026.

    Annotations the server declares

    • title: Get delivery cost
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • vivid_fulfilment_production_stageWhere each line item is in production, per item plus a rollup.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Where each line item is in production, per item plus a rollup. Stages (in order): received, in preflight, awaiting proof, proof approved, imposing, queued for print, sent to Caldera, printing, printed, at Zund cutter, cut, dispatched. Needs-action states: missing file, preflight failed, with design team, on hold (unpaid), proof rejected, duplicate. Each item also returns the press and the print timestamp.

    Annotations the server declares

    • title: production stage
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • vivid_fulfilment_shippingStarShipit shipping: carrier, tracking number, tracking URL, ETA and delivered flag.1 finding

    Why it is in this group

    • The description's first verb is "star": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "vivid_fulfilment_shipping" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The description's first verb is "star": a word for a change.

      What this check looks for
    Description, as the server wrote it
    StarShipit shipping: carrier, tracking number, tracking URL, ETA and delivered flag. shipping_state: not_dispatched, shipped, in_transit, out_for_delivery, delivered, exception.

    Annotations the server declares

    • title: shipping
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • vivid_identity_startStart email verification before showing a customer's private data (past orders, reorder, saved address, email order-status).No findings

    Why it is in this group

    • The name "vivid_identity_start" says "start": a word for a change.
    Description, as the server wrote it
    Start email verification before showing a customer's private data (past orders, reorder, saved address, email order-status). Sends a 6-digit code to the email. Returns a verificationId. Then ask the customer for the code and call vivid_identity_verify. Use this whenever a customer asks to see 'my orders', 'reorder', or 'status by email' and you don't already have a valid identity token.

    Annotations the server declares

    • title: Start email verification
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • vivid_identity_verifyComplete email verification: pass the verificationId from vivid_identity_start and the 6-digit code the customer received.No findings

    Why it is in this group

    • The input takes a statement or command to run (input.code), which can change anything it can reach.
    Description, as the server wrote it
    Complete email verification: pass the verificationId from vivid_identity_start and the 6-digit code the customer received. On success returns a short-lived identity token — pass that token to vivid_reorder / vivid_order_status to unlock the customer's private data. Codes expire in 10 minutes; attempts are limited.

    Annotations the server declares

    • title: Complete email verification
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • vivid_place_orderCreate a Shopify DRAFT order for Vivid Ads team review — NOT a final/placed order, and NEVER charges a card.No findings

    Why it is in this group

    • The description's first verb is "create": a word for a change.
    Description, as the server wrote it
    Create a Shopify DRAFT order for Vivid Ads team review — NOT a final/placed order, and NEVER charges a card. Before calling, summarise the exact product, quantity, configuration, verified price (if available), customer details, and delivery/pickup, then get the customer's explicit confirmation. Call WITHOUT confirm to get a Review summary; confirm:true only AFTER they confirm. Do NOT auto-retry after a timeout without first checking whether a draft was already created. Payment is a secure invoice/pay-link from the team; production waits on proof approval. Artwork is OPTIONAL here: an order can be placed with no file at all — the customer uploads later via the upload link emailed when the order is placed, or any time from My Account on the customer portal (portal.vividads.com.au), so never hold up an order waiting for artwork.

    Annotations the server declares

    • title: Place an order (creates a draft for team review)
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • vivid_priceCalculate the current price for an EXACT product configuration.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Calculate the current price for an EXACT product configuration. Pass `options` with the full selected configuration (use vivid_product first), or just `size` for simple products. Some products take several seconds or need manual confirmation. Before calling, briefly tell the customer you're checking the live price. Never estimate or reuse another configuration's price. When presenting, repeat the exact product title, quantity, dimensions, and price-affecting options.

    Annotations the server declares

    • title: Get a live price
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • vivid_price_breaksVivid's REAL published volume price breaks for a product + size (e.g.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Vivid's REAL published volume price breaks for a product + size (e.g. 1 → $135 ea, 2 → $132.30, 5 → $128.25, 10 → $121.50 — save 10%). Use for bulk/trade pricing questions, or right after a price when a slightly larger quantity would save the customer money. Prices are AUD incl. GST and come from the same source as the live price, so they can never contradict a quote. If the product has no breaks it says so — never invent a discount.

    Annotations the server declares

    • title: Show volume price breaks
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • vivid_recommendRecommend Vivid Ads signage for a goal + business type (real Australian signage: pull-up banners, A-frames, corflute, fabric banners, flags, media walls).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Recommend Vivid Ads signage for a goal + business type (real Australian signage: pull-up banners, A-frames, corflute, fabric banners, flags, media walls). Call with goal and business; omit either to get the next question to ask the customer.

    Annotations the server declares

    • title: Recommend signage
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • vivid_reorderReorder a customer's previous signage job — fast.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Reorder a customer's previous signage job — fast. Requires identity verification (emailed one-time code), not just an order number. action:'list' shows their past orders; action:'reorder' repeats one. ARTWORK: it reuses only the customer's previously APPROVED artwork (the print file), never a pre-approval upload; if it can't be confirmed automatically the team confirms it. A fresh proof is ALWAYS re-issued to confirm the artwork before printing. The customer may also supply new artwork or change the quantity. Re-prices with CURRENT pricing (never the old price). Creates a proof-gated draft order; never charges a card. CODE REQUIRED: needs the customer's email AND a verified identity token. Without a token this tool emails the customer a 6-digit code and returns status need_verification with a verificationId — ask the customer for the code, call vivid_identity_verify, then call this tool again with the token. It shows nothing before that.

    Annotations the server declares

    • title: Reorder a past job (creates a draft)
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • vivid_request_quoteEmail the customer a formal QUOTATION.No findings

    Why it is in this group

    • The name "vivid_request_quote" says "request": a word for a change.
    Description, as the server wrote it
    Email the customer a formal QUOTATION. If the exact configuration can be priced and an email is given, this INSTANTLY emails a branded PDF-style quotation (line items, GST, total, quote number, 14-day validity, accept-online link) — status 'quoted'. For custom/unpriceable products it logs the request for the team to prepare and send (status 'received'). Never takes payment. Confirm product, quantity, size/options, name, and email before submitting.

    Annotations the server declares

    • title: Create & email a quote (draft)
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • vivid_support_answerAnswer a customer's support / FAQ question in Vivid Ads' voice, grounded in the team's real support history + verified policy.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Answer a customer's support / FAQ question in Vivid Ads' voice, grounded in the team's real support history + verified policy. Covers turnaround & production time, digital proofs & approval, artwork specs & file setup, products & options, quotes & pricing, delivery & pickup, changing/cancelling orders, reorders, and the print guarantee. Returns the best-matching answer(s) and topic; if nothing matches it returns escalate:true so you can hand off to the team. Use for questions like 'how long does it take?', 'what file format do you need?', 'can I change my order?', 'where do I pick up?'.

    Annotations the server declares

    • title: Answer a support question
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • vivid_upload_artworkUpload a customer's artwork FILE through the agent (no website file picker needed).No findings

    Why it is in this group

    • The name "vivid_upload_artwork" says "upload": a word for a change.
    Description, as the server wrote it
    Upload a customer's artwork FILE through the agent (no website file picker needed). Accepts the file as base64, stores it in Vivid's Google Drive, and returns a stable shareable link plus metadata. Accepts PDF / AI / EPS / JPG / PNG. Does NOT verify print-readiness — the team checks that. Uploading needs no verification, but ATTACHING the file to an existing order does: pass the identity token from vivid_identity_verify, otherwise the file is held unattached and the reply says so. Use when a customer wants to send their print file via chat.

    Annotations the server declares

    • title: Upload artwork
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
Only reads 9Claude Code: allow
  • vivid_accept_quoteReturn the secure payment link for a formal quote Vivid already emailed (e.g.No findings

    Why it is in this group

    • The description's first verb is "return": a word for reading.
    Description, as the server wrote it
    Return the secure payment link for a formal quote Vivid already emailed (e.g. #D786069) so the customer can complete the order without leaving the conversation. Requires the quote number AND the email it was sent to (identity). Read-only — nothing is charged; it returns the customer's existing Shopify checkout link. If the quote has already become an order, it says so instead of issuing another link. CODE REQUIRED: needs the customer's email AND a verified identity token. Without a token this tool emails the customer a 6-digit code and returns status need_verification with a verificationId — ask the customer for the code, call vivid_identity_verify, then call this tool again with the token. It shows nothing before that.

    Annotations the server declares

    • title: Get a quote's payment link
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • vivid_artwork_templateGet the official print-ready artwork TEMPLATE download links (PDF/AI, per size) for a product, straight from its vividads.com.au product page — for the customer or their designer t…No findings

    Why it is in this group

    • The description's first verb is "get": a word for reading.
    Description, as the server wrote it
    Get the official print-ready artwork TEMPLATE download links (PDF/AI, per size) for a product, straight from its vividads.com.au product page — for the customer or their designer to set up artwork correctly (bleed, safe area, size). Public, read-only; nothing is emailed. Give the links exactly as returned.

    Annotations the server declares

    • title: Get artwork templates
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • vivid_fulfilment_order_statusAuthoritative order state with a per-line-item breakdown and an order-level rollup.No findings

    Why it is in this group

    • The name "vivid_fulfilment_order_status" says "status": a word for reading.
    Description, as the server wrote it
    Authoritative order state with a per-line-item breakdown and an order-level rollup. States: received, in_production, partially_ready, ready_for_pickup, dispatched, in_transit, out_for_delivery, delivered, completed, on_hold, cancelled. Includes the StarShipit shipping summary where available.

    Annotations the server declares

    • title: order status
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • vivid_fulfilment_pickup_statusWhether an order (or specific line items) is ready for pickup at Derrimut VIC — ready once printed and cut, before dispatch.No findings

    Why it is in this group

    • The name "vivid_fulfilment_pickup_status" says "status": a word for reading.
    Description, as the server wrote it
    Whether an order (or specific line items) is ready for pickup at Derrimut VIC — ready once printed and cut, before dispatch.

    Annotations the server declares

    • title: pickup status
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • vivid_order_artworkShow a VERIFIED customer the PRINT-READY artwork files produced for one of their past orders (the actual files that went to print), so they can confirm them before reordering.No findings

    Why it is in this group

    • The description's first verb is "show": a word for reading.
    Description, as the server wrote it
    Show a VERIFIED customer the PRINT-READY artwork files produced for one of their past orders (the actual files that went to print), so they can confirm them before reordering. Requires the order number and a valid identity token bound to the customer's email; only returns artwork for orders that belong to that customer. Returns view links to each print layout. Use when a customer asks 'what artwork did I print', 'show me my last print file', or before confirming a reorder. CODE REQUIRED: needs the customer's email AND a verified identity token. Without a token this tool emails the customer a 6-digit code and returns status need_verification with a verificationId — ask the customer for the code, call vivid_identity_verify, then call this tool again with the token. It shows nothing before that.

    Annotations the server declares

    • title: Show a past order's artwork
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • vivid_order_statusCheck the LIVE status of an order — real production stage (from the Enfocus Switch print workflow), ready-for-pickup, or shipped with carrier + tracking (from StarShipit, authorita…No findings

    Why it is in this group

    • The name "vivid_order_status" says "status": a word for reading.
    Description, as the server wrote it
    Check the LIVE status of an order — real production stage (from the Enfocus Switch print workflow), ready-for-pickup, or shipped with carrier + tracking (from StarShipit, authoritative). Look up a real order by number (e.g. #119581) or a quote/draft by number (e.g. #D776755). Requires the customer's email, which must match the order. Use for 'where is my order', 'track order 12345', 'is my order ready'. Shipped/delivered from StarShipit is final; otherwise the live Switch stage is returned. CODE REQUIRED: needs the customer's email AND a verified identity token. Without a token this tool emails the customer a 6-digit code and returns status need_verification with a verificationId — ask the customer for the code, call vivid_identity_verify, then call this tool again with the token. It shows nothing before that.

    Annotations the server declares

    • title: Check order status
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • vivid_productGet a product's FULL real option schema (all dimensions, not just size) so you can configure it correctly before pricing/ordering.No findings

    Why it is in this group

    • The description's first verb is "get": a word for reading.
    Description, as the server wrote it
    Get a product's FULL real option schema (all dimensions, not just size) so you can configure it correctly before pricing/ordering. Returns each option's key, label, allowed values, default, whether it's required, whether it affects price, and display order — plus `turnaround` (the live production/lead time from the product page, e.g. 24 hours if artwork is approved by 3 pm AEST on a business day). Flags have Size/Printed Sides/Flag Base; corflute has Size (or custom W×H)/Eyelets/Cutting; table throws have Style/Size/Backside.

    Annotations the server declares

    • title: Get product options
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • vivid_proof_statusCheck a customer's DIGITAL PROOF status: has the proof been emailed, is it awaiting their approval, being revised after rejection, or already approved (production underway).No findings

    Why it is in this group

    • The name "vivid_proof_status" says "status": a word for reading.
    Description, as the server wrote it
    Check a customer's DIGITAL PROOF status: has the proof been emailed, is it awaiting their approval, being revised after rejection, or already approved (production underway). Use for 'where's my proof', 'did you send my proof', 'when do I approve'. Requires the order number AND the email on the order (identity — details only return when they match). Relay the returned agent_hint concisely; production starts only after the customer approves the emailed proof. CODE REQUIRED: needs the customer's email AND a verified identity token. Without a token this tool emails the customer a 6-digit code and returns status need_verification with a verificationId — ask the customer for the code, call vivid_identity_verify, then call this tool again with the token. It shows nothing before that.

    Annotations the server declares

    • title: Check digital-proof status
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.0.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http vivid-ads-commerce https://agent.vividads.com.au/api/ucp/public/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__vivid-ads-commerce__vivid_search",
      "mcp__vivid-ads-commerce__vivid_product",
      "mcp__vivid-ads-commerce__vivid_order_status",
      "mcp__vivid-ads-commerce__vivid_accept_quote",
      "mcp__vivid-ads-commerce__vivid_proof_status",
      "mcp__vivid-ads-commerce__vivid_order_artwork",
      "mcp__vivid-ads-commerce__vivid_artwork_template",
      "mcp__vivid-ads-commerce__vivid_fulfilment_order_status",
      "mcp__vivid-ads-commerce__vivid_fulfilment_pickup_status"
    ],
    "ask": [
      "mcp__vivid-ads-commerce__vivid_recommend",
      "mcp__vivid-ads-commerce__vivid_cross_sell",
      "mcp__vivid-ads-commerce__vivid_support_answer",
      "mcp__vivid-ads-commerce__vivid_price",
      "mcp__vivid-ads-commerce__vivid_delivery_quote",
      "mcp__vivid-ads-commerce__vivid_request_quote",
      "mcp__vivid-ads-commerce__vivid_place_order",
      "mcp__vivid-ads-commerce__vivid_artwork",
      "mcp__vivid-ads-commerce__vivid_price_breaks",
      "mcp__vivid-ads-commerce__vivid_delivery_estimate",
      "mcp__vivid-ads-commerce__vivid_check_artwork",
      "mcp__vivid-ads-commerce__vivid_reorder",
      "mcp__vivid-ads-commerce__vivid_identity_start",
      "mcp__vivid-ads-commerce__vivid_identity_verify",
      "mcp__vivid-ads-commerce__vivid_upload_artwork",
      "mcp__vivid-ads-commerce__vivid_contact_team",
      "mcp__vivid-ads-commerce__vivid_fulfilment_production_stage",
      "mcp__vivid-ads-commerce__vivid_fulfilment_shipping"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as vivid-ads-commerce. Review it before you use it.