Core Concepts

Core Concepts

Overview

UCP addresses commercial interoperability through a three-layer abstraction model:

  1. Service: Defines API surface and transport bindings
  2. Capability: Declares supported functional features
  3. Extension: Optional capability enhancement modules

This design keeps UCP’s core concise while supporting vertical domain extensions.

Participant Roles

UCP defines four main participant types, each with clear responsibilities:

RoleResponsibilityExamples
PlatformDiscover business capabilities, initiate checkout sessions, present UI to usersAI shopping assistants, super apps, search engines
BusinessExpose commerce capabilities, fulfill orders, process paymentsRetailers, airlines, hotel groups
Credential ProviderSecurely manage user sensitive data, issue payment tokensGoogle Wallet, Apple Pay
Payment Service ProviderHandle payment authorization, clearing, settlementStripe, Adyen, PayPal

Key Design Principles

  • Business as Merchant of Record: Businesses retain financial responsibility and order ownership
  • Platforms don’t touch raw payment data: Minimize PCI-DSS compliance scope through tokenization
  • One-way credential flow: Payment credentials flow only from platform to business, never back

Service Layer

Service defines the API surface for a vertical domain (like shopping, common), including:

FieldDescriptionExample
versionService version (YYYY-MM-DD format)2026-01-11
specService documentation URLhttps://ucp.dev/specification/overview
restREST transport binding (optional)OpenAPI 3.x spec
mcpMCP transport binding (optional)OpenRPC spec
a2aA2A transport binding (optional)Agent Card URL
embeddedEmbedded transport binding (optional)OpenRPC spec

Transport Binding Example

{
  "rest": {
    "schema": "https://ucp.dev/services/shopping/rest.openapi.json",
    "endpoint": "https://business.example.com/api/v2"
  }
}

Naming Convention

All Service and Capability names use reverse domain format:

{reverse-domain}.{service}.{capability}

Examples:

NameAuthorityServiceCapability
dev.ucp.shopping.checkoutucp.devshoppingcheckout
dev.ucp.common.identity_linkingucp.devcommonidentity_linking
com.example.payments.installmentsexample.compaymentsinstallments

Capability Layer

Capability is an independent functional feature within a Service.

Capability Definition

FieldRequiredDescription
nameYesCapability name (reverse domain format)
versionYesCapability version (YYYY-MM-DD format)
specYesSpecification document URL
schemaYesJSON Schema URL
extendsNoParent capability name (for extensions)

Standard Capabilities

UCP defines the following core capabilities:

CapabilityDescription
CheckoutCheckout session management, including cart and tax calculation
Identity LinkingOAuth 2.0-based identity linking
OrderOrder lifecycle event notifications

Extension Layer

Extension is an optional capability enhancement module, declaring a parent capability via the extends field.

Extension Example

{
  "name": "dev.ucp.shopping.fulfillment",
  "version": "2026-01-11",
  "spec": "https://ucp.dev/specification/fulfillment",
  "schema": "https://ucp.dev/schemas/shopping/fulfillment.json",
  "extends": "dev.ucp.shopping.checkout"
}

Extension Types

ExtensionDescriptionExtends
FulfillmentDelivery fulfillmentCheckout
DiscountDiscount offersCheckout
AP2 MandatesAP2 encrypted payment instructionsCheckout

Profile: Configuration File

Profile is a JSON document published by participants at /.well-known/ucp, declaring identity, supported capabilities, and endpoints.

Business Profile Example

{
  "ucp": {
    "version": "2026-01-11",
    "services": {
      "dev.ucp.shopping": {
        "version": "2026-01-11",
        "spec": "https://ucp.dev/specification/overview",
        "rest": {
          "schema": "https://ucp.dev/services/shopping/rest.openapi.json",
          "endpoint": "https://business.example.com/ucp/v1"
        }
      }
    },
    "capabilities": [
      {
        "name": "dev.ucp.shopping.checkout",
        "version": "2026-01-11",
        "spec": "https://ucp.dev/specification/checkout",
        "schema": "https://ucp.dev/schemas/shopping/checkout.json"
      }
    ]
  },
  "payment": {
    "handlers": [...]
  },
  "signing_keys": [...]
}

Capability Negotiation

UCP uses a “server-selection” architecture for capability negotiation:

  1. Platform declaration: Declare Profile URI via UCP-Agent header or request body
  2. Capability intersection: Business calculates intersection of platform and business capabilities
  3. Prune orphaned extensions: Remove extensions whose parent capability is not in the intersection
  4. Response declaration: Business includes active capability list in response

Negotiation Flow

Platform Profile → Business Profile → Intersection Calculation → Active Capabilities
     [A, B]           [A, C]              [A]              [A]

Transport Protocols

UCP is transport-agnostic, supporting multiple protocols:

TransportUse CaseSpec Format
RESTStandard application integrationOpenAPI 3.x
MCPDirect LLM agent invocationOpenRPC
A2AAgent-to-agent collaborationAgent Card
EmbeddedEmbedded business UIOpenRPC

Next Steps