Download the PHP package angeo/module-ucp without Composer

On this page you can find all versions of the php package angeo/module-ucp. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package module-ucp

Angeo UCP — /.well-known/ucp for Magento 2

CI Packagist Version Downloads Mage-OS Directory UCP spec

Publishes a Universal Commerce Protocol business profile at /.well-known/ucp so AI shopping agents (Google/Gemini, ChatGPT, etc.) can discover your store's commerce capabilities.

How the endpoint is served

/.well-known/ucp is delivered by a controller, not a static file, because the UCP spec requires Content-Type: application/json and CORS headers (Access-Control-Allow-Origin: *) — neither of which a static file without an extension can provide without editing the web server.

Component Role
Controller\Router Custom router matching the exact path /.well-known/ucp and dispatching the action. Registered in etc/di.xml via RouterList (sortOrder 22, before the CMS router). Returns null for any other path.
Controller\WellKnown\Ucp Builds and returns the profile as JSON with Content-Type: application/json, CORS, Cache-Control: public, max-age=300, and hardening headers. Answers OPTIONS preflight with 204 + CORS headers. Returns 404 when the module is disabled (the site simply does not advertise UCP). Public, no auth — as the spec requires.
Model\ProfileGenerator Builds the spec-2026-08-25 profile (services, capabilities, extensions, payment handlers, supported versions, public keys).
Model\Spec Single source of truth for every spec/schema URL the profile publishes.
Model\AuthorityBinding The spec's schema-URL authority-binding derivation algorithm.
Model\Keys\KeyGenerator / JwkFormatter Generates EC and Ed25519 keys, formats the public half as a JWK, and computes RFC 7638 thumbprints.

Why this reaches PHP without web-server changes

The stock Magento nginx config ends its main location with try_files $uri $uri/ /index.php$is_args$args. A request for /.well-known/ucp with no matching static file falls through to index.php, where the custom router dispatches it. The official Magento nginx sample has no location ~ /\. deny rule, so the dot-segment is not blocked.

If your host added a custom location ~ /\. { deny all; } rule it blocks all dot-paths, and the profile then needs a one-line nginx allow for ^~ /.well-known/. The stock config does not have this problem.

Do not leave a static file at pub/.well-known/ucp: nginx would serve it first (as application/octet-stream, no CORS) and the controller would never run.

Inbound signature verification (2.1.0)

The profile publishes keys. 2.1.0 adds the half that uses them: verification of RFC 9421 signatures on requests arriving at your UCP endpoints.

This direction is the one the spec puts a MUST on — a business rejects a request whose counterparty profile cannot be fetched or fails validation. Before 2.1.0, endpoints advertised by a signed profile answered anyone who sent a POST.

Stores → Configuration → Angeo UCP → Request Security:

Mode Signed & valid Signed & invalid Unsigned
disabled (default) served served served
optional served 401 served
required served 401 401

Start in optional. An invalid signature is refused there too — only a missing one is tolerated — so you get real enforcement while you find out, from the log, which agents actually sign. There is no way to know that in advance, which is why required is not the default.

Endpoint modules consume this through Api\SignatureVerifierInterface; angeo/module-ucp-catalog 2.1.0 already does.

Not yet implemented: signing our own responses. Tracked for a later release.

Upgrading from 1.x

1.4.0 is not broken — it publishes a valid 2026-04-08 profile, and the spec allows a business to keep serving an older version. This release adopts 2026-08-25, which is a package deal: the protocol version, the key field and the capability documentation URLs all move together.

1.x (2026-04-08) 2.0 (2026-08-25)
Signing keys signing_keys[] keys[] (RFC 7517 JWK Set)
Capability schema optional required
schema origin check string prefix on ucp.dev authority-binding algorithm
spec origin check must be ucp.dev https only, any host
Catalog docs URL /specification/catalog/… /specification/shopping/catalog/…
Key types P-256 only P-256, P-384, Ed25519
Key id random RFC 7638 thumbprint

Existing keys keep working and are simply republished under keys[]; no regeneration is needed unless you want Web Bot Auth interop. If a platform already integrates against your current profile, freeze a copy of it and declare it under Advanced → Supported Versions — this module serves only the version it advertises.

Install

Generate signing keys, then verify:

CLI

Command Purpose
angeo:ucp:keys:generate Generate a signing keypair. --type=es256\|es384\|ed25519, --add to publish alongside existing keys, --kid to override the thumbprint.
angeo:ucp:validate Validate the generated profile against the UCP spec, including authority binding.

Which key type?

Rotating without downtime

A key is not effectively revoked until it is absent from keys[] — which also means it is not published until it is present. So rotate in that order:

Configuration

Stores → Configuration → Angeo UCP — enable the module and declare which capabilities your store supports: catalog search/lookup, cart, checkout, order, identity linking, permalink, plus the fulfillment, discount and buyer consent extensions, payment handlers, and supported protocol versions.

Since 2.2.0, a toggle alone does not advertise cart, checkout, order, fulfillment, discount or buyer consent. They appear in the profile only when an installed module serves them:

Capability Served by
dev.ucp.shopping.catalog.search / .lookup angeo/module-ucp-catalog (not gated)
dev.ucp.shopping.checkout + .discount + .fulfillment angeo/module-ucp-checkout 1.0+ (MCP tools: angeo/module-ucp-checkout-mcp)
dev.ucp.shopping.order (Get Order + webhooks) angeo/module-ucp-checkout 1.1+
dev.ucp.shopping.permalink a stock Magento cart URL (not gated)
cart, buyer consent not available yet

bin/magento angeo:ucp:validate lists toggles that are on but have no effect. A module registers what it serves through the implementations argument of Angeo\Ucp\Model\Config in its di.xml.

REST endpoint. Leave Transport → REST Endpoint URL empty to advertise {baseUrl}/ucp/v1, where the catalog and checkout modules answer. Before 2.2.0 the default was {baseUrl}/rest/V1/ucp, which nothing served.

Security


All versions of module-ucp with dependencies

PHP Build Version
Package Version
Requires php Version ~8.1.0||~8.2.0||~8.3.0||~8.4.0||~8.5.0
ext-curl Version *
ext-json Version *
ext-openssl Version *
magento/framework Version >=103.0.6 <104
magento/module-backend Version >=102.0.6 <103
magento/module-config Version >=101.2.6 <102
magento/module-store Version >=101.1.6 <102
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package angeo/module-ucp contains the following files

Loading the files please wait ...