Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, email [email protected] and we’ll put it right.

VIA Network: Agentic Commerce

REMOTE · APP.GETVIA.XYZ · SCANNED AUG 3

Agentic commerce network: discover sellers and products, negotiate, and pay USDC on Base via x402.

Available components

+5 this week 66 Trust /100
Trust breakdown (6 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score →

Endpoint Security63
Transport & Reachability100
Schema Quality & AI Usability64
  • AI-judged instruction clarity (good).Pass
  • Context-footprint check failed: tool/resource definitions use about 4764 tokens (~170/item across 28 items; 28 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management19
  • Stability check failed: schema churn in the 7 days we've observed: 1 tool removals, 0 breaking changes, 0 auth/transport breaks, 0 additions. See how to fix → Fail
Tool Coverage99
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 96% of tool parameters carry a description.Partial
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Install

Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.

remote · app.getvia.xyz

# add to Claude Code
claude mcp add --transport http xyz-getvia-app-via-network https://app.getvia.xyz/mcp
# ~/.codex/config.toml
[mcp_servers.xyz-getvia-app-via-network]
url = "https://app.getvia.xyz/mcp"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "xyz-getvia-app-via-network": {
      "type": "remote",
      "url": "https://app.getvia.xyz/mcp",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add xyz-getvia-app-via-network --url https://app.getvia.xyz/mcp --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  xyz-getvia-app-via-network:
    url: "https://app.getvia.xyz/mcp"
// mcp.json
{
  "mcpServers": {
    "xyz-getvia-app-via-network": {
      "type": "http",
      "url": "https://app.getvia.xyz/mcp"
    }
  }
}

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 3 Aug 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 16 to 19.

  • 1 Aug 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 9 to 13.

  • 31 Jul 26 +1
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 30 Jul 26 +1
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 29 Jul 26 +1
    • Tool “find_buyers” rewrote its description, which is the text the model reads security
  • 28 Jul 26 0
    • Stability: unverified → fail security
    • A breaking change shipped without a version bump: still 1.0.0 security
    • Tool “add_live_poll_question” was removed security
  • 27 Jul 26 61

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 3 Aug 2026 · Probed https://app.getvia.xyz/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=app.getvia.xyz CN=YR1,O=Let's Encrypt,C=US 29 Jul 2026 27 Oct 2026 RSA 2048 SHA256-RSA 590e845328f4ad30e558359b6d5ae03bc65
SANs: app.getvia.xyz
CN=YR1,O=Let's Encrypt,C=US (CA) CN=Root YR,O=ISRG,C=US 3 Sept 2025 2 Sept 2028 RSA 2048 SHA256-RSA a20253f15f2691c05dc1ce13b9bcca4e
CN=Root YR,O=ISRG,C=US (CA) CN=ISRG Root X1,O=Internet Security Research Group,C=US 13 May 2026 2 Sept 2032 RSA 4096 SHA256-RSA f24b6d17f9d9ad7cb1c9fea78782699f
DNSSEC insecure

Validation of app.getvia.xyz. Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
xyz. present 3599, 18130 8, 8 Verified
getvia.xyz. absent Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication No authorisation required

The endpoint answered without asking for a token. Anyone who knows the URL can reach it.

Result No authorisation required
HTTP status 200
Header Value
strict-transport-security max-age=63072000
content-security-policy frame-ancestors 'self'
x-content-type-options nosniff
x-frame-options SAMEORIGIN
referrer-policy strict-origin-when-cross-origin
permissions-policy camera=(), geolocation=()
Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://app.getvia.xyz/mcp Verified 200
http (plaintext) http://app.getvia.xyz/mcp HTTPS enforced 308 https://app.getvia.xyz/mcp
MCP tools — 28 exposed · ~4,764 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.

Tool Tokens
accept_offer ~124

Ask a buyer's Buying Agent to accept a negotiated offer, forwarded to their buyer MCP. The agent auto-accepts only within the buyer's delegation caps, otherwise it queues the offer for the buyer's approval.

NameTypeReqDescription
amount_usdnumberTotal order amount in USD, for the caps check.
buyer_mcp_urlstringyesThe buyer's mcp_url from a find_buyers result.
categorystringProduct category, checked against the buyer's lists.
offer_idstringyesYour reference id for the offer being accepted.

No output schema declared.

No examples provided.

ask_sales_agent ~133

Ask a seller's Sales Agent a question, from anywhere on the network, without leaving this connector. It answers in the seller's voice using their locked-in memories (events, promotions, policies, stock). Pass the seller_mcp_url from a discovery result and an optional contact so the seller can reach back.

NameTypeReqDescription
contactstringOptional reach-back identifier (email, handle, or the buyer agent MCP url).
questionstringyesFree-form buyer question.
seller_mcp_urlstringyesmcp_ref.seller_mcp_url from a find_seller / get_seller_products result.

No output schema declared.

No examples provided.

buy_product ~389

Buy a listing from anywhere on the network, settled in USDC on Base, without leaving this connector. Pass the seller_mcp_url and product_id from the listing (mcp_ref). For physical products include the full delivery block; for event passes include the attendee block; the call rejects with the missing fields listed if any are blank. Free passes are not bought here: use claim_pass. Returns an x402 payment requirement and an order_ref, then settle at the absolute /api/x402/purchase endpoint it returns (sign an EIP-2612 USDC permit and POST { order_ref, x_payment }, OR send a raw USDC transfer to payTo and POST { order_ref, payment_tx_hash }). Call get_shipping_quote first and pass buyer_country to include shipping.

NameTypeReqDescription
attendeeobjectRequired for event passes.
buyer_agent_idstringERC-8004 agent id of the Buying Agent acting on the buyer's behalf.
buyer_countrystringISO 3166-1 alpha-2 destination country. Required when the seller ships; folds the shipping quote into the total.
buyer_walletstringyesThe buyer wallet that will settle in USDC on Base.
deliveryobjectRequired for physical products. Omit for digital / service.
product_idstringyesThe listing id from discovery (mcp_ref.product_id).
qtyinteger
selected_colorstringVariant colour, for network-member products that have a colour axis. Ignored by VIA-native listings.
selected_sizestringVariant size, for network-member products that have a size axis (e.g. S, M, L). Ignored by VIA-native listings.
seller_mcp_urlstringyesmcp_ref.seller_mcp_url from a find_seller / get_seller_products result.

No output schema declared.

No examples provided.

claim_pass ~251

Claim a FREE entry pass to an event on the VIA network, directly from discovery. FREE guest-list tiers only (price 0, the kind find_seller / get_seller_products surface at $0). No payment, no wallet, no x402: provide the attendee name and email, and VIA records the place, emails a confirmation, and notifies the organiser. One pass per email / per account. Paid products are NOT claimable here: connect to the seller's per-seller MCP and use buy_product (USDC via x402). Pass the product_id from a find_seller result (mcp_ref.product_id) or get_seller_products.

NameTypeReqDescription
buyer_agent_idstringOptional ERC-8004 agent id of the agent claiming on the buyer's behalf.
buyer_walletstringOptional Base wallet, if the claimer has a VIA buyer identity.
emailstringyesEmail to confirm the place to and for the organiser to admit by.
namestringyesName of the person attending, for the guest list.
product_idstringyesUUID of the free pass tier, from a find_seller / get_seller_products result.

No output schema declared.

No examples provided.

confirm_purchase ~273

Settle a network-MEMBER (e.g. RRG) purchase after you have sent the USDC that buy_product asked for. This is the member two-step: buy_product returns a pay-to address and amount, you transfer USDC on Base, then call this with the tx hash to mint, pay out, and get your download. For physical products include the shipping block and buyer_email. VIA-native purchases do NOT use this: they settle at the /api/x402/purchase endpoint that buy_product returns.

NameTypeReqDescription
buyer_agent_idintegerYour ERC-8004 agent id, for an on-chain trust signal.
buyer_emailstringFor order confirmation and file delivery. Required for physical products.
buyer_walletstringyesThe wallet that sent the USDC.
product_idstringyesThe member listing/token id (mcp_ref.token_id).
selected_colorstringThe colour you chose at buy_product (must match).
selected_sizestringThe size you chose at buy_product (must match).
seller_mcp_urlstringyesThe member seller_mcp_url you called buy_product on.
shippingobjectRequired for physical member products.
tx_hashstringyesThe USDC transfer transaction hash on Base.

No output schema declared.

No examples provided.

counter_quote ~126

Counter an existing quote, forwarded to the owning seller. Pass the quote_ref and a target price, revised selections, or both. Appends a round to the negotiation; stays non-binding until the seller approves.

NameTypeReqDescription
counter_total_usdcnumberYour proposed price for the configuration.
notestringFree-form message to the seller.
quote_refstringyes
selectionsobjectRevised configuration, if you are changing what you want.
seller_mcp_urlstringyesmcp_ref.seller_mcp_url from a discovery result.

No output schema declared.

No examples provided.

find_buyers ~255

Discover live DEMAND: buyers who are actively looking for what you sell. Search by what you have ('raw selvedge denim', 'first pressing acid jazz vinyl', 'cold brew coffee') and get back buyers whose open briefs match. Each brief comes back as a TEASER: category, product type, one attribute, a door_url, and four facets where the buyer stated them , size, location, timing, and any brands they named. Use the facets to rule a brief in or out cheaply: do you stock that size, can you ship there, can you make that date. That is deliberately not enough to pitch well. The full brief (hard requirements, preferences, budget) is the paid tier: GET the door_url and pay the x402 micro-fee to unlock it, then POST your offer to the same door. Ranking already reads the full brief, so a teaser that matches is a real match. Omit query to browse recent open demand.

NameTypeReqDescription
limitintegerMax buyers to return (default 10).
querystringWhat you have to offer, e.g. 'raw selvedge denim' or 'acid jazz vinyl'. Omit to browse recent demand.

No output schema declared.

No examples provided.

find_seller ~352

Search the VIA network (VIA app + RRG + integrated platforms) for PRODUCTS and the sellers that offer them. Matches the published product catalogue (titles, descriptions, authors, categories) AND seller profiles, so 'books', an author, a title, or a category surfaces the actual product even when the seller's name does not contain the word. WHEN INTENT IS DEFINED: returns `results`, ONE relevance-ranked list blending every source. Each result carries a working `page_url` (the direct product page you give the user), plus `seller`, `price_usdc`, `image_url` (or null when the listing has no picture), and `mcp_ref` to transact. If more than one matches, PRESENT THEM side by side with prices and the key differences; do not silently pick one. WHEN INTENT IS LOOSE OR THERE IS NO MATCH: the response is `status: 'need_more_info'` with `suggested_dimensions`. DO NOT reply 'nothing is available'. Ask the user ONE clarifying question to sharpen intent (budget, brand/author, category, use), or retry this tool with a broader term, a synonym, the category, or the brand/author name. Only after a genuinely broadened retry also returns nothing should you say you could not find a match, and even then frame it as 'not found yet', not 'does not exist'.

NameTypeReqDescription
limitintegerMax product results to return (default 10).
querystringyesWhat the user wants. Searches product catalogues AND seller profiles, e.g. 'raw denim jeans', 'Arnaud Frade', 'sourdough', or 'custom embroidered polo'.

No output schema declared.

No examples provided.

get_buyer_briefs ~93

See a buyer's OPEN demand as free teasers, forwarded to their buyer MCP. Each teaser carries a paid door_url: the FULL brief and the ability to offer are paid at that x402 door, not here. Use a teaser to decide if your stock fits, then go to the door.

NameTypeReqDescription
buyer_mcp_urlstringyesA buyer's mcp_url from a find_buyers result.

No output schema declared.

No examples provided.

get_buyer_preferences ~78

Read a buyer's public buying preferences, forwarded to their buyer MCP. Pass the buyer_mcp_url from a find_buyers result. Delegation caps and private notes are never exposed.

NameTypeReqDescription
buyer_mcp_urlstringyesA buyer's mcp_url from a find_buyers result (…/buyers/{handle}/mcp).

No output schema declared.

No examples provided.

get_download_challenge ~94

Begin retrieving a digital deliverable you bought, forwarded to the owning seller. Returns a message to SIGN with the paying wallet plus a challenge token; then call get_download_links.

NameTypeReqDescription
buyer_walletstringyesThe wallet that settled the purchase.
product_idstringyesThe purchased digital product id.
seller_mcp_urlstringyesmcp_ref.seller_mcp_url from a discovery result.

No output schema declared.

No examples provided.

get_download_links ~135

Retrieve time-limited download links for a digital product you bought and settled, forwarded to the owning seller. Call get_download_challenge first, sign the message with the paying wallet, then call this with the challenge and signature.

NameTypeReqDescription
buyer_walletstringyesThe wallet that settled the purchase.
challengestringyesThe challenge token from get_download_challenge.
product_idstringyesThe purchased digital product id.
seller_mcp_urlstringyesmcp_ref.seller_mcp_url from a discovery result.
signaturestringyesSignature of the challenge message, signed by buyer_wallet.

No output schema declared.

No examples provided.

get_offering_schema ~96

Fetch the configurable option space for a per-order (configurable) product before requesting a quote, forwarded to the owning seller. Returns option groups, choices, quantity rules and surcharges. Fixed-price products have no schema; buy those with buy_product.

NameTypeReqDescription
product_idstringyesThe configurable product id from discovery.
seller_mcp_urlstringyesmcp_ref.seller_mcp_url from a discovery result.

No output schema declared.

No examples provided.

get_product ~156

Fetch full detail for ONE listing before buying, from anywhere on the network, without leaving this connector. Pass the seller_mcp_url and product_id exactly as they appear in a find_seller / get_seller_products result (mcp_ref.seller_mcp_url and mcp_ref.product_id). Returns the listing with price, stock, and what the purchase requires. This forwards to the owning seller; the same buy loop (get_product -> get_shipping_quote -> buy_product) then settles here.

NameTypeReqDescription
product_idstringyesThe listing id from discovery (mcp_ref.product_id).
seller_mcp_urlstringyesmcp_ref.seller_mcp_url from a find_seller / get_seller_products result.

No output schema declared.

No examples provided.

get_quote ~91

Check a quote's status by quote_ref, forwarded to the owning seller. Returns the current status, the binding total once approved, and the negotiation thread.

NameTypeReqDescription
quote_refstringyesThe quote_ref from request_quote, e.g. "QUO-2605-7K3PQM".
seller_mcp_urlstringyesmcp_ref.seller_mcp_url from a discovery result.

No output schema declared.

No examples provided.

get_seller_products ~232

Drill into ONE seller's catalogue to answer 'is X available at seller Y'. Pass the seller_mcp_url from a find_seller / list_sellers result (a VIA-app seller or an RRG brand). Returns that seller's products matching your query (or its whole catalogue if query is omitted), each with price, in-stock sizes where known, and a direct web_url to the product page. Use this right after find_seller whenever the user names a specific seller or brand, e.g. 'raw denim jeans in size 36 at Standard & Strange'.

NameTypeReqDescription
limitintegerMax products to return (default 15).
querystringWhat to look for in that seller's catalogue, e.g. 'raw denim jean'. Omit to list the whole catalogue.
seller_mcp_urlstringyesThe mcp_url from a find_seller / list_sellers result, e.g. https://realrealgenuine.com/brand/standard-and-strange/mcp or https://app.getvia.xyz/sellers/the-sentient-startup/mcp

No output schema declared.

No examples provided.

get_shipping_quote ~144

Resolve a seller's shipping cost to a destination country before buying, without leaving this connector. Pass the seller_mcp_url from the listing's mcp_ref and the ISO 3166-1 alpha-2 country. Returns the flat rate, a per-order-quote signal, or a rejection. Call this before buy_product and pass buyer_country there to fold shipping into the total.

NameTypeReqDescription
buyer_countrystringyesISO 3166-1 alpha-2 destination country code (e.g. GB, US, JP).
seller_mcp_urlstringyesmcp_ref.seller_mcp_url from a find_seller / get_seller_products result.

No output schema declared.

No examples provided.

get_store_card ~102

Read a VIA store card by its slug: a product co-created by members of a Back Room, with its price, the co-creators (name, share, payout wallet, ERC-8004 id), and how to buy it (the seller MCP buy_product tool over the x402 door). Returns not_found for unknown slugs.

NameTypeReqDescription
slugstringyesThe store slug from a shared link, e.g. app.getvia.xyz/store/<slug>.

No output schema declared.

No examples provided.

get_store_status ~67

Check the review status of a store you registered with register_store. Returns pending, approved, or rejected (with the reason). Once approved it also returns the ERC-8004 agent id and the per-seller MCP url.

NameTypeReqDescription
slugstringyesThe slug returned by register_store.

No output schema declared.

No examples provided.

get_taste_card ~98

Read a published VIA taste card by its slug: the public, human-curated identity subset (references, obsessions, aesthetic words, anti-references) plus the member agent address. Cards are shared by their owners; there is no directory or search. Returns not_published for unknown or unpublished slugs.

NameTypeReqDescription
slugstringyesThe card slug from a shared link, e.g. app.getvia.xyz/taste/<slug>.

No output schema declared.

No examples provided.

get_via_overview ~39

Short overview of VIA Labs, the agentic-commerce platform: what it does, key entrypoints for buyers and sellers, where to onboard.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

import_preference_appraisal ~172

Import a buyer's shopping-preference appraisal (derived by a Mind from the owner's email) onto their VIA buying agent. Requires a link_token the owner minted in their VIA dashboard; it scopes the write to exactly one buyer. Pass the structured appraisal (categories, brands, sizes, cadence, budget signal). VIA never receives raw email. Taste signals shape matching and negotiation immediately; the budget signal becomes a PROPOSED spending cap that the owner must approve in the dashboard before it gates any autonomous spend.

NameTypeReqDescription
appraisalobjectyesThe structured shopping-preference appraisal. Use evidence_summary for prose only; never include raw quoted email.
link_tokenstringyesThe link token the buyer owner minted in their VIA dashboard (POST /api/buyer/[buyerId]/appraisal action=mint_link).

No output schema declared.

No examples provided.

list_sellers ~105

List active sellers across the VIA network (VIA app + RRG + integrated platforms). Each result is tagged with its platform and includes the per-seller MCP URL to connect to for deeper interaction (list_products, ask_sales_agent, buy_product).

NameTypeReqDescription
categorystringOptional kind filter (applies to VIA-app sellers only).
limitintegerOptional cap on results. Omit to enumerate the ENTIRE network (no limit), which is the default.

No output schema declared.

No examples provided.

negotiate ~155

Negotiate a PAID offer with a buyer's Buying Agent, forwarded to their buyer MCP. This is the post-door step: submit a paid offer at the brief door first (POST /api/via/brief/[brief_id]/offer), then pass that brief_id and the offer's payment_tx_hash here. There is no free pre-door pitch.

NameTypeReqDescription
brief_idstringyesThe brief you made a paid offer against.
buyer_mcp_urlstringyesThe buyer's mcp_url from a find_buyers result.
offer_textstringyesYour full pitch: what you are offering, terms, and price.
payment_tx_hashstringyesThe on-chain payment tx from your door offer.

No output schema declared.

No examples provided.

register_store ~311

Register your own store on the VIA network (no thirdweb, no human wizard). You only need ONE wallet: your payout_wallet (USDC lands here, you keep 97.5%). The platform creates and operates your store's ERC-8004 identity wallet for you; you do not supply or hold it. The flat 2.5% network fee is unchanged. Your store is created PENDING and stays invisible until a human reviews it for quality (nothing illegal, immoral, or offensive) within 24 hours. On approval the store goes live and its ERC-8004 identity is minted. Poll get_store_status with the returned slug to track the decision.

NameTypeReqDescription
descriptionstringWhat the store sells, for buyers and for review.
emailstringyesContact email. Becomes the dashboard login once approved; keep it.
headlinestringShort one-line tagline.
kindstringyesWhat you sell.
passwordstringyesDashboard password (8+ chars). Keep it: this is how the store is managed after approval.
payout_walletstringyesYour USDC payout EOA on Base. Sale proceeds (97.5%) settle here. This is the only wallet you need.
slugstringOptional URL slug. Derived from store_name if omitted.
store_namestringyesPublic store / brand name, e.g. "Arc Lights".
website_urlstringExisting website, if any.

No output schema declared.

No examples provided.

request_quote ~131

Request an advisory price for a configurable product, forwarded to the owning seller. Pass the selections from get_offering_schema. Returns a quote_ref and a NON-BINDING proposed_total the seller reviews. Poll get_quote for the decision.

NameTypeReqDescription
contactstringReach-back identifier so the seller can follow up.
product_idstringyes
selectionsobjectyes
seller_mcp_urlstringyesmcp_ref.seller_mcp_url from a discovery result.
specobjectFree-form brief: deadline, artwork notes. Not priced, surfaced to the seller.

No output schema declared.

No examples provided.

seller_mcp_url ~48

Return the per-seller MCP endpoint URL for a given seller slug, verified against the active seller index.

NameTypeReqDescription
slugstringyesSeller slug (e.g. 'arc-lights').

No output schema declared.

No examples provided.

submit_intent ~514

Submit a buyer's INTENT in their own words. Two things happen: (1) you get back the products across the VIA network that genuinely match it, from the full agentic matcher (it reads each product's data and reasons, it is not keyword search); and (2) the intent is BROADCAST live onto the network as an anonymised teaser (category + product type + one attribute only, never the raw text or any identity), so it appears on The Wire (app.getvia.xyz/wire) and sellers can respond. Use this when you are buying ON BEHALF of someone and want defined matches plus live broadcast. State the brief naturally, including any hard requirements ("raw selvedge denim, 32 waist", "first pressing on the Stiff label", "a gift of coffee"). Hard requirements are enforced (a product that fails one is excluded); broad briefs return on-category options. Returns matches with seller, price, a direct page_url, and the mcp_url to transact, plus broadcast:true and a door_url when the intent went live. For matching AND broadcast tied to a specific VIA buyer's saved taste and budget (and seller pitch-back), call submit_intent on that buyer's MCP (/buyers/{handle}/mcp) instead.

NameTypeReqDescription
briefstringyesWhat the buyer wants, in plain words, e.g. 'made in japan raw selvedge denim around 32 waist' or 'a gift of coffee for a family member'.
budget_usdnumberCeiling in USD, if there is one.
categorystringCategory if you know it, e.g. 'apparel/denim', 'music/vinyl', 'food/coffee'.
preferencesarraySoft preferences. Used for ranking, never to exclude.
reply_tostringWhere a seller can reach you about this brief: your own MCP url, or an email. STRONGLY RECOMMENDED. Without it a seller who pays to unlock your brief has no way to come back to you, so your brief is…
requirementsarrayHARD requirements. A product failing any one of these is excluded. Be strict: put anything negotiable in preferences instead.
type_termsarrayThe product type in plain nouns, e.g. ['jean','denim trouser'].

No output schema declared.

No examples provided.