Skip to content

Repository files navigation

UCP Python SDK

Official Python library for the Universal Commerce Protocol (UCP).

PyPI versionPython versionsLicense

Overview

This repository contains the Python SDK for the Universal Commerce Protocol (UCP). It provides Pydantic models for UCP schemas, making it easy to build UCP-compliant applications in Python.

Installation

To use this SDK in your own project, install it from PyPI:

pip install ucp-sdk

Or, if you are managing your project with uv:

uv add ucp-sdk

Usage

The example below parses a UCP checkout response and reads typed fields:

fromucp_sdk.models.schemas.shopping.checkoutimportCheckout# Parse a UCP checkout responsecheckout=Checkout.model_validate(checkout_data)
# Access typed fieldsprint(checkout.status) # "incomplete" | "ready_for_complete" | ...print(checkout.currency) # ISO 4217 currency codeforitemincheckout.line_items:
print(f"{item.item.title}: {item.quantity}")

Available model packages

PackageDescription
ucp_sdk.models.schemas.shoppingCheckout, cart, catalog, order, payment models
ucp_sdk.models.schemas.shopping.typesLine items, totals, buyer, fulfillment, signals
ucp_sdk.models.schemas.transportsREST, MCP, and embedded protocol bindings
ucp_sdk.models.schemasService definitions, capabilities, payment handlers

Validation

All models support Pydantic validation and serialization:

frompydanticimportValidationErrorfromucp_sdk.models.schemas.shopping.checkoutimportCheckout# Validate data against UCP schemastry:
checkout=Checkout.model_validate(checkout_data)
# Serialize to JSON-compatible dictcheckout_dict=checkout.model_dump(exclude_none=True)
exceptValidationErrorase:
print(e.errors())

Development

Prerequisites

This project uses uv for dependency management.

Setup

# Clone the repository
git clone https://github.com/Universal-Commerce-Protocol/python-sdk.git
cd python-sdk
# Install dependencies
uv sync

Generating Pydantic Models

The models are automatically generated from the JSON schemas in the UCP Specification.

To regenerate the models:

uv sync
./generate_models.sh <version>

Where <version> is the version of the UCP specification to use (for example, "2026-04-08").

If no version is specified, the main branch of the UCP repo will be used.

The generated code is automatically formatted using ruff.

Contributing

We welcome community contributions. See our Contribution Guide for details.

License

UCP is an open-source project under the Apache License 2.0.

About

The official Python SDK for UCP

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages