/**
* UCP Profile Publisher
* Serves the /.well-known/ucp endpoint.
*/
import type { GatewayConfig, UCPProfile, UCPTransport, UCPCapability, UCPPaymentHandler } from '../types.js';
const UCP_VERSION = '2026-01-11';
const DEFAULT_CAPABILITIES: UCPCapability[] = [
{ name: 'dev.ucp.shopping.checkout', version: UCP_VERSION },
{ name: 'dev.ucp.shopping.catalog', version: UCP_VERSION },
{ name: 'dev.ucp.shopping.order', version: UCP_VERSION },
{ name: 'dev.ucp.shopping.fulfillment', version: UCP_VERSION },
];
const DEFAULT_PAYMENT_HANDLERS: UCPPaymentHandler[] = [
{ id: 'shopify_payments', type: 'processor_tokenizer' },
{ id: 'ap2_mandate', type: 'mandate' },
];
function buildTransports(baseUrl: string): UCPTransport[] {
return [
{ type: 'rest', endpoint: `${baseUrl}/api/v1` },
{ type: 'mcp', endpoint: `${baseUrl}/mcp` },
{ type: 'a2a', endpoint: `${baseUrl}/a2a` },
{ type: 'embedded', endpoint: `${baseUrl}/embedded` },
];
}
/**
* Generates a full UCP Profile for the /.well-known/ucp endpoint.
*/
export function generateProfile(config: GatewayConfig): UCPProfile {
const baseUrl = config.gateway.baseUrl;
return {
version: UCP_VERSION,
services: [
{
type: 'dev.ucp.shopping',
transports: buildTransports(baseUrl),
capabilities: DEFAULT_CAPABILITIES,
payment_handlers: DEFAULT_PAYMENT_HANDLERS,
signing_keys: {
jwk: `${baseUrl}/.well-known/jwks.json`,
},
},
],
};
}