protogrid

Search / llc.facet/ucp-shopping

Facet UCP Shopping

R0· no sign-in

The independent agent-commerce protocol for AI-agent checkout on any online store.

v1.0.0 · active · website · descriptor JSON · versions

An agent can connect right now, no human step.Remote endpoint, no authentication, reachable on the last probe.
Quality88good
Trust76of 100
Uptime, 30 days100%
Latency p50566 ms

Connect

8 clients · secrets stay placeholders
{
  "mcpServers": {
    "ucp-shopping": {
      "type": "http",
      "url": "https://api.facet.llc/ucp/mcp",
      "headers": {
        "Authorization": "Bearer ${UCP_SHOPPING_TOKEN}"
      }
    }
  }
}
claude mcp add --transport http ucp-shopping https://api.facet.llc/ucp/mcp --header "Authorization: Bearer ${UCP_SHOPPING_TOKEN}"
[mcp_servers.ucp-shopping]
url = "https://api.facet.llc/ucp/mcp"
bearer_token_env_var = "UCP_SHOPPING_TOKEN"
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "ucp-shopping": {
      "type": "remote",
      "url": "https://api.facet.llc/ucp/mcp",
      "enabled": true,
      "headers": {
        "Authorization": "Bearer {env:UCP_SHOPPING_TOKEN}"
      }
    }
  }
}
{
  "mcpServers": {
    "ucp-shopping": {
      "type": "http",
      "url": "https://api.facet.llc/ucp/mcp",
      "headers": {
        "Authorization": "Bearer ${UCP_SHOPPING_TOKEN}"
      }
    }
  },
  "deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=ucp-shopping&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vYXBpLmZhY2V0LmxsYy91Y3AvbWNwIiwiaGVhZGVycyI6eyJBdXRob3JpemF0aW9uIjoiQmVhcmVyICR7VUNQX1NIT1BQSU5HX1RPS0VOfSJ9fQ%3D%3D"
}
{
  "servers": {
    "ucp-shopping": {
      "type": "http",
      "url": "https://api.facet.llc/ucp/mcp",
      "headers": {
        "Authorization": "Bearer ${UCP_SHOPPING_TOKEN}"
      }
    }
  }
}
{
  "mcpServers": {
    "ucp-shopping": {
      "httpUrl": "https://api.facet.llc/ucp/mcp",
      "headers": {
        "Authorization": "Bearer ${UCP_SHOPPING_TOKEN}"
      }
    }
  }
}
extensions:
  "ucp-shopping":
    enabled: true
    name: "ucp-shopping"
    type: streamable_http
    uri: "https://api.facet.llc/ucp/mcp"
    headers:
      "Authorization": "Bearer ${UCP_SHOPPING_TOKEN}"
    timeout: 300

Placeholders to fill from your own secret store: ${UCP_SHOPPING_TOKEN}. The registry never accepts secret values.

Quality 88 / 100good

protocol100 · weight 25
  • pass
    protocol.modernsupports 2026-07-28 (server/discover)
  • pass
    protocol.statelessanswers without a session
  • pass
    protocol.transportstreamable HTTP
  • pass
    protocol.list_ttltool list is cacheable (ttlMs 300000)
authorizationn/a · weight 15
  • n/a
    auth.prm, auth.as_metadata, auth.cimdno remote uses OAuth
  • n/a
    auth.secret_in_urlno templated URL
tool hygiene71 · weight 30
  • pass
    tools.descriptionsevery tool has a description
  • pass
    tools.description_lengthdescriptions are concise
  • pass
    tools.schemasevery tool has an object input schema
  • fail
    tools.annotationsno tool declares readOnlyHint or destructiveHint, so clients cannot tell safe calls from risky ones
  • fail
    tools.directory_hintsno tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: discover_products (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); get_payment_capabilities (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); get_payment_requirements (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); …
  • pass
    tools.token_costabout 4,045 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
stability100 · weight 15
  • pass
    stability.changesno tool changes in 30 days
  • pass
    stability.rug_pullno tool changed its meaning under the same name
dependenciesn/a · weight 15
  • n/a
    deps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI package

23 tools, about 4,045 tokens to load them all · tool set 6b3b535dc6ba · checked 2026-10-19 16:20 UTC

Tool changes

No tool definition changes recorded. A server's first observation is its baseline; later probes record what changes.

Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.

Trust 76 / 100

no-repository
provenance55
liveness100
freshness65
hygiene80

+dns-namespace +website +reachable +uptime-100% ~updated-94d-ago -no-repository

Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://api.facet.llc/ucp/mcp streamable-httpnoneyes100%566 ms2026-07-28, 2025-06-182026-10-19

Tools (23)

cancel_cartCancel a cart. Idempotent, owner-scoped, and moves no money. REQUIRES IDENTITY plus an Idempotency-Key on a signature-required Terminal.
cancel_checkoutCancel a checkout session before completion, releasing its inventory hold. Idempotent, owner-scoped, and moves no money (distinct from an escrow refund). REQUIRES IDENTITY plus an Idempotency-Key on a signature-required Terminal.
complete_checkoutComplete a checkout you created and place the order by submitting the buyer-signed payment credential. This is the MONEY-MOVING leg: funds capture on-chain to the merchant's pay_to (x402) or into escrow (Boson). The amount is re-derived server-side from the reservation, never your request, and the buyer's signature is verified before any capture. A per-buyer refusal (FORBIDDEN, cap-exceeded, FULFILLMENT_REQUIRED) returns as an error result; a missing or invalid identity is a real 401. REQUIRES IDENTITY plus a signed Idempotency-Key on a signature-required Terminal.
create_cartCreate a pre-checkout cart from catalog line items. A cart is a mutable scratchpad: it moves no money and holds no inventory, so it carries estimated (server-derived) totals and NO payment_handlers. Assemble it, then create_checkout(cart_id) to convert. REQUIRES IDENTITY on a signature-required Terminal.
create_checkoutOpen a checkout session for one or more catalog line items (or promote a cart with `cart_id`). Returns the session plus server-resolved `payment_handlers` (rail, pay_to, exact amount) to satisfy: the price and pay_to are the MERCHANT's, sealed here, never read from your request. Physical goods REQUIRE a `fulfillment` ship-to (else FULFILLMENT_REQUIRED), sealed at create. REQUIRES IDENTITY on a signature-required Terminal: a Facet KYA as `Authorization: Bearer <kya>`.
discover_businessesFind businesses in the Facet Universal Business Index that an agent can transact with. Returns `featured` (claimed merchants with a live `terminal_url` — point your catalog and checkout calls there) and `results` (the wider directory). Use this first when you do not already know which merchant to talk to. REQUIRES IDENTITY: send a Facet KYA as `Authorization: Bearer <kya>` on the MCP request. A KYA is an ES256 JWT from Facet's default issuer https://issuer.facet.llc (or another issuer this Terminal trusts — see KYA-Issuers in its /.well-known/agents.txt). Calling without one returns 401 with a signup link.
discover_productsSearch products ACROSS every merchant in the Facet network that has opted into cross-merchant discovery. Returns matches each carrying the selling merchant's `terminal_url` (point your catalog and checkout calls there). Filter by free-text `query` (product name + description), exact `category`, and/or `tags` (all must be present); at least one filter is required. Use this when you know WHAT you want but not WHICH merchant sells it. REQUIRES IDENTITY: send a Facet KYA as `Authorization: Bearer <kya>` on the MCP request. A KYA is an ES256 JWT from Facet's default issuer https://issuer.facet.llc (or another issuer this Terminal trusts; see KYA-Issuers in its /.well-known/agents.txt). Calling without one returns 401 with a signup link.
get_cartRead back one of YOUR carts by id: line items and estimated totals. Owner-scoped, so another agent's id returns not_found. REQUIRES IDENTITY on a signature-required Terminal.
get_checkoutRead back one of YOUR checkout sessions by id: status, totals, line items, payment_handlers. Owner-scoped, so another agent's id returns not_found. REQUIRES IDENTITY on a signature-required Terminal.
get_orderRead back one of YOUR orders on this merchant: status, amount, settlement state. Use the order_id returned when you paid. You can only read orders your own agent identity placed — another agent's order returns FORBIDDEN. REQUIRES IDENTITY: Facet KYA as `Authorization: Bearer <kya>`.
get_payment_capabilitiesWhich settlement rails this merchant actually accepts (e.g. coin/boson-escrow for escrowed funds that release on fulfilment, coin/usdc-base for direct). Call before get_payment_requirements so you pass a rail_id this merchant registers, rather than guessing. No identity required — this is discovery data.
get_payment_requirementsTurn a `quote_token` from get_quote into a seller-signed payment offer to authorize. Returns `requirements` (escrow address, asset, exact atomic amount, network) — sign it LOCALLY with your own wallet (e.g. @bosonprotocol/x402-client handle402 for `coin/boson-escrow`, producing an X-PAYMENT string). Facet never holds your key and cannot sign for you, which is why paying is two steps and not one. The offer binds to the quote_token's sealed landed total and ship-to, so the amount is the merchant's, not one you name. REQUIRES IDENTITY: same Facet KYA as get_quote, and the SAME `aid` — the offer path rejects a quote_token issued to a different agent than the caller.
get_productGet full product detail by product or variant identifier.
get_quoteGet the real landed cost of a product from this merchant: goods + shipping + tax for a specific destination, plus a signed `quote_token` the payment path binds to. Call this before paying — the token is what makes the price the MERCHANT's, not one you name. Physical products REQUIRE a `fulfillment` ship-to; without one you get FULFILLMENT_REQUIRED. An unserviceable destination returns UNDELIVERABLE (the merchant's own shipping zones, which Facet cannot waive). REQUIRES IDENTITY: send a Facet KYA as `Authorization: Bearer <kya>` (ES256 JWT from https://issuer.facet.llc, or another issuer in this Terminal's agents.txt KYA-Issuers).
list_ordersList YOUR order history on this merchant, newest first. Scoped to your own agent identity — you never see another agent's orders. REQUIRES IDENTITY: Facet KYA as `Authorization: Bearer <kya>`.
lookup_catalogLook up one or more products or variants by identifier (batch).
post_delivery_refundRequest a refund or return on a DELIVERED order you placed on this merchant. Opens a merchant-approved refund ticket (status `requested`); it moves NO money on its own. The merchant reviews and approves it, and only then does the send-back sign from the merchant's OWN wallet (non-custodial). Amount and recipient are NOT inputs: the refund amount is derived and capped server-side, and the recipient is the order's stamped payer, never one you name. Pass `refund_line_items` to refund only part of the order; omit for the whole order. Owner-scoped: another agent's order returns FORBIDDEN. REQUIRES IDENTITY: a Facet KYA as `Authorization: Bearer <kya>` (an ES256 JWT from https://issuer.facet.llc, or another issuer in this Terminal's agents.txt KYA-Issuers). A wallet-bound KYA also authorizes a platform-originated order by its stamped payer.
search_catalogSearch the merchant catalog for products matching a free-text query.
update_cartReplace a cart's line items (full replacement), re-priced server-side. Owner-scoped. REQUIRES IDENTITY on a signature-required Terminal.
update_checkoutReturn a checkout's CURRENT sealed snapshot. Facet seals price and items at create, so this is a no-op that reports the session plus a note: to change line items, update the cart and start a new checkout with create_checkout(cart_id). Owner-scoped.
wishlist_addSave a product to YOUR wishlist on this merchant for later. Idempotent: saving the same product again updates its note and keeps the original save time. Scoped to your own agent identity. REQUIRES IDENTITY: Facet KYA as `Authorization: Bearer <kya>`.
wishlist_listList YOUR saved items (wishlist) on this merchant, newest first. Scoped to your own agent identity, so you never see another agent's list. REQUIRES IDENTITY: Facet KYA as `Authorization: Bearer <kya>`.
wishlist_removeRemove a product from YOUR wishlist on this merchant. Idempotent: removing something not on your list succeeds with removed:false. Scoped to your own agent identity. REQUIRES IDENTITY: Facet KYA as `Authorization: Bearer <kya>`.

Schemas: list_tools.

Similar MCP servers

Official server.json
{
  "name": "llc.facet/ucp-shopping",
  "title": "Facet UCP Shopping",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "remotes": [
    {
      "url": "https://api.facet.llc/ucp/mcp",
      "type": "streamable-http",
      "headers": [
        {
          "name": "Authorization",
          "isSecret": true,
          "description": "Optional Facet KYA bearer, an ES256 JWT from the default issuer https://issuer.facet.llc (or another issuer advertised at /.well-known/agents.txt KYA-Issuers). Not required for tools/list or catalog discovery; required for gated tools/call, per the endpoint's agents.txt (MCP-Auth: kya-bearer)."
        }
      ]
    }
  ],
  "version": "1.0.0",
  "websiteUrl": "https://facet.llc",
  "description": "The independent agent-commerce protocol for AI-agent checkout on any online store."
}