VEYNDO
Handbook
docs/agentic-commerce.mdView source ↗

English source · 6 min

AI channels and inward shop imports

Veyndo accepts a shopping agent’s cart and brings existing shop catalogues into its own native commerce workflow. The merchant retains the checkout, prices, stock, order, permissions and publication decision. There is no automatic export into Shopify and no purchase at a supplier’s checkout.

See current status and the 18 October public acceptance for actual cart-transfer, embedded checkout, private import and simulation results.

Merchant entry

Open Sales channels → AI channels & imports. Select the sales channel to inspect native Cart Transfer and buyer-consent support, configured payment modes and links to the external onboarding instructions. Technical support is not Google approval; the screen explicitly reports external approval as unverified. Readiness needs catalog.read. Product import also needs current catalog.write and the existing private environment grants. Changing channels never grants rights.

Choose an import source:

Source What happens Boundary
Shopify export Upload the product CSV; priced variant rows become editable Veyndo drafts, with parent title, description and image inheritance Up to 50 variants per review. Variants become separate native products. CSV prices are interpreted in the selected Veyndo base currency; verify them explicitly. No invented exchange rate, supplier stock or continuous sync
Supplier catalogue Search the public Shop MCP catalogue, optionally limit by shop domain Read-only search_catalog; up to 10 selected featured variants. Supplier currency must match Veyndo’s base currency. No supplier login, cart, wallet or purchase calls
Generic CSV Upload the native name/description/price/product-number/image format Existing deterministic import, no model required
Shop URL / product description Use the existing bounded AI preparation Requires configured inference and assistant.use; external text is untrusted

Review and edit each draft, select a private sandbox, then approve creation. The existing native save owner records revision/history/events and an idempotency digest. Imported products start with zero stock. Explicitly check your right to use the supplier’s text/images and sell the products, configure inventory and fulfilment, then publish selected changes. Provenance identifies the source; it is neither an authenticity certificate nor permission to resell. There is no background supplier stock, order or price synchronisation in this importer.

Provider-specific parsers and network code live in extensions/apps/catalog-import/. They use the existing shared egress admission and pinned public HTTPS client. Private DNS, credentials in URLs, redirects, oversize responses, unsupported currency and unsuccessful responses fail before a draft is accepted. No per-app or per-shop database table is created.

UCP Cart Transfer

POST /ucp/v1/carts accepts native product IDs in line_items[].item.id, positive integer quantities and an optional supported currency/buyer. It recalculates through the native channel, catalogue, stock, tax and price owners. Caller-supplied prices or return origins have no authority.

The response contains native totals, an expiry and a canonical continue_url. The browser continuation uses the existing ten-minute, single-use handoff in a URL fragment, not a query-string bearer. The native consume endpoint rotates the cart capability; foreign-tenant consumption and replay fail. The continuation pins the cart’s content language, so native names and shipping/payment labels survive the handoff. The browser finishes in Veyndo’s existing checkout and payment lifecycle. Repeated order submission retains the native idempotency contract.

Discovery is /.well-known/ucp. A UCP-Agent public HTTPS profile must intersect the requested base capability: cart-only platforms need not claim checkout. Profiles never grant merchant or customer authority. The existing separately versioned Veyndo B2B negotiation extension remains optional and independently gated.

Google’s merchant enrolment and regional availability still apply. Shipping this endpoint does not mean Veyndo has been admitted to Google surfaces. See the Google Cart overview and Merchant Center guidance.

The optional negotiated dev.ucp.shopping.buyer_consent extension accepts four registered purposes: analytics, preferences, marketing and sale/sharing. Requests supply explicit source: "platform" boolean decisions, with the registered email and SMS marketing segments. Descriptions and policy metadata belong to the server; unknown purposes/segments and asserted business grants are rejected. Sale/sharing is always disabled because Veyndo has no corresponding processing purpose.

Omitting consent preserves it; replacing an explicit purpose replaces its segment choices. A PUT without a buyer replaces earlier buyer contact fields while retaining explicit consent choices; required missing contacts block completion. An unrelated update cannot revive a withdrawn or expired native grant. Clearing the buyer revokes native optional processing. Consent and cart mutation commit atomically through the native cart/privacy owners. Native merchant policy can withhold a purpose even when a platform requests it. Required marketing contact information must be present before completion. Completed orders retain an immutable policy/consent snapshot; later revocation governs future processing without rewriting historical orders. Consent is disabled unless a compatible platform profile selects it. Native clients can explicitly pre-negotiate with x-veyndo-ucp-consent-version: 2026-08-25; the legacy B2B version header alone never enables consent. An unnegotiated caller receives no consent extension and cannot submit choices under it. No implicit tracking grant is created.

See the UCP buyer-consent schema and Veyndo’s legal/privacy owner.

Browser agents share the actual cart commands

The standard storefront’s buttons and supported WebMCP tools share the same native cart commands and serialized current revisions. Supported browsers can discover:

  • veyndo_search_catalog: bounded public product search in the current shop/channel.
  • veyndo_get_cart: product IDs/names, quantities and totals; no bearer or buyer details.
  • veyndo_add_product: add a selected product, creating a cart when necessary and preserving existing items. Concurrent additions share the native revision queue; cancellation stops subsequent writes.
  • veyndo_update_cart: replace items, using native validation and recalculation.
  • veyndo_review_checkout: open checkout for the buyer to review and decide.

There is no automatic order, charge or refund tool. Registration uses document.modelContext only when available and is removed on teardown; old shop contexts cannot save into a newly selected shop. Unsupported experimental APIs leave ordinary shopping available. These tools are not exposed to other origins. See Chrome’s current imperative API.

The registered add action validates IDs and quantities before creating a cart. Search and cart results mark merchant content as untrusted. Twelve targeted command and hook tests cover registration, empty and completed carts, concurrent changes, cancellation, shop switching, private previews and ordinary shopping without the experimental API. All five tools were also discovered and called in the in-app browser against a local native Rust/PostgreSQL shop: search, add, quantity change, cart read and checkout review. Negative quantities and unknown products were rejected. See the actual browser evidence. Public deployment remains tracked in the connected-commerce checklist.

Agent proposals and app diagnostics

Shop design still uses the app-owned, versioned page model and actual storefront renderer. Each agent proposal now shows added/removed/repositioned blocks, changed theme fields and form/app counts, with desktop/mobile preview entry points. These are structural differences, not a claim that visual quality, accessibility or app behavior was automatically accepted. Test forms, links and app components in the sandbox before selected publication.

App Studio → Versions & releases shows declared placements, required installed settings, models, explicitly enabled agent tools and business-example counts. Each opens its existing editor. The shared assistant can prepare concrete success, denial, retry and rollback tests. Counts do not claim that a test ran or a required secret was entered; installed secrets retain their existing live-only encrypted owner.

Current agent-commerce connection workspace

Verification and external gates

Local acceptance and scope.

The registered agentic_commerce, checkout_handoff, b2b_ucp, catalog_management and legal_privacy suites exercise real Rust/HTTP/PostgreSQL paths. Frontend tests cover channel rights, deterministic imports, current-revision commands, stale-shop rejection, WebMCP lifecycle and real preview/editor handoffs. The private Shopware Payments adapter can run with a local synthetic PSP: UCP transfer → native checkout → private provider → confirmed capture → partial refund and restart replay. This is simulated money, never proof of real PSP settlement or live wallet acceptance.

Muse/Link partnerships, Google account admission, real PSP settlement, native WebMCP availability in a specific browser and continuous authenticated supplier synchronisation remain separate external capabilities. Do not label them connected from a successful local import, protocol discovery or fixture.