# Facet UCP Shopping MCP server

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

## Links
- Registry page: https://www.getdrio.com/mcp/llc-facet-ucp-shopping
- Website: https://facet.llc

## Install
- Endpoint: https://api.facet.llc/ucp/mcp
- Auth: Auth required by registry metadata

## Setup notes
- Remote header: Authorization (secret)
- The upstream registry signals required auth or secrets.
- Remote endpoint: https://api.facet.llc/ucp/mcp
- Header: Authorization

## Tools
- search_catalog - Search the merchant catalog for products matching a free-text query. Endpoint: https://api.facet.llc/ucp/mcp
- lookup_catalog - Look up one or more products or variants by identifier (batch). Endpoint: https://api.facet.llc/ucp/mcp
- get_product - Get full product detail by product or variant identifier. Endpoint: https://api.facet.llc/ucp/mcp
- discover_businesses - Find 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. Endpoint: https://api.facet.llc/ucp/mcp
- get_quote - Get 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). Endpoint: https://api.facet.llc/ucp/mcp
- get_payment_capabilities - Which 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. Endpoint: https://api.facet.llc/ucp/mcp
- get_payment_requirements - Turn 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. Endpoint: https://api.facet.llc/ucp/mcp
- get_order - Read 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>`. Endpoint: https://api.facet.llc/ucp/mcp
- list_orders - List 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>`. Endpoint: https://api.facet.llc/ucp/mcp

## Resources
Not captured

## Prompts
Not captured

## Metadata
- Owner: llc.facet
- Version: 1.0.0
- Runtime: Streamable Http
- Transports: HTTP
- License: Not captured
- Language: Not captured
- Stars: Not captured
- Updated: Jul 18, 2026
- Source: https://registry.modelcontextprotocol.io
