1 2<!doctype html> 3<html lang="en" class="no-js"> 4 <head> 5 6 <meta charset="utf-8"> 7 <meta name="viewport" content="width=device-width,initial-scale=1"> 8 9 <meta name="description" content="The Universal Commerce Protocol (UCP) is a solution for enabling gen AI agents to make payments on behalf of users, safely, securely, and in a decentralized and privacy protecting manner. This protocol is a part of the broader ecosystem, which includes agentic protocols like A2A and MCP, and encompasses the global nature of payments. 10"> 11 12 13 14 <link rel="canonical" href="http://ucp.dev/documentation/core-concepts/"> 15 16 17 <link rel="prev" href="../.."> 18 19 20 <link rel="next" href="../ucp-and-ap2/"> 21 22 23 24 25 26 <link rel="icon" href="../../assets/favicon.png"> 27 <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.7.7"> 28 29 30 31 <title>Core Concepts - Universal Commerce Protocol (UCP)</title> 32 33 34 35 <link rel="stylesheet" href="../../assets/stylesheets/main.ec1eaa64.min.css"> 36 37 38 <link rel="stylesheet" href="../../assets/stylesheets/palette.ab4e12ef.min.css"> 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 <style>:root{--md-admonition-icon--note:url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%20448%20512%22%3E%3C%21--%21%20Font%20Awesome%20Free%207.1.0%20by%20%40fontawesome%20-%20https%3A//fontawesome.com%20License%20-%20https%3A//fontawesome.com/license/free%20%28Icons%3A%20CC%20BY%204.0%2C%20Fonts%3A%20SIL%20OFL%201.1%2C%20Code%3A%20MIT%20License%29%20Copyright%202025%20Fonticons%2C%20Inc.--%3E%3Cpath%20d%3D%22M64%20480c-35.3%200-64-28.7-64-64V96c0-35.3%2028.7-64%2064-64h320c35.3%200%2064%2028.7%2064%2064v213.5c0%2017-6.7%2033.3-18.7%2045.3L322.7%20461.3c-12%2012-28.3%2018.7-45.3%2018.7zm325.5-176H296c-13.3%200-24%2010.7-24%2024v93.5z%22/%3E%3C/svg%3E');--md-admonition-icon--abstract:url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%20448%20512%22%3E%3C%21--%21%20Font%20Awesome%20Free%207.1.0%20by%20%40fontawesome%20-%20https%3A//fontawesome.com%20License%20-%20https%3A//fontawesome.com/license/free%20%28Icons%3A%20CC%20BY%204.0%2C%20Fonts%3A%20SIL%20OFL%201.1%2C%20Code%3A%20MIT%20License%29%20Copyright%202025%20Fonticons%2C%20Inc.--%3E%3Cpath%20d%3D%22M384%20512H96c-53%200-96-43-96-96V96C0%2043%2043%200%2096%200h304c26.5%200%2048%2021.5%2048%2048v288c0%2020.9-13.4%2038.7-32%2045.3V448c17.7%200%2032%2014.3%2032%2032s-14.3%2032-32%2032zM96%20384c-17.7%200-32%2014.3-32%2032s14.3%2032%2032%2032h256v-64zm32-232c0%2013.3%2010.7%2024%2024%2024h176c13.3%200%2024-10.7%2024-24s-10.7-24-24-24H152c-13.3%200-24%2010.7-24%2024m24%2072c-13.3%200-24%2010.7-24%2024s10.7%2024%2024%2024h176c13.3%200%2024-10.7%2024-24s-10.7-24-24-24z%22/%3E%3C/svg%3E');--md-admonition-icon--info:url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%20512%20512%22%3E%3C%21--%21%20Font%20Awesome%20Free%207.1.0%20by%20%40fontawesome%20-%20https%3A//fontawesome.com%20License%20-%20https%3A//fontawesome.com/license/free%20%28Icons%3A%20CC%20BY%204.0%2C%20Fonts%3A%20SIL%20OFL%201.1%2C%20Code%3A%20MIT%20License%29%20Copyright%202025%20Fonticons%2C%20Inc.--%3E%3Cpath%20d%3D%22M256%20512a256%20256%200%201%200%200-512%20256%20256%200%201%200%200%20512m-32-352a32%2032%200%201%201%2064%200%2032%2032%200%201%201-64%200m-8%2064h48c13.3%200%2024%2010.7%2024%2024v88h8c13.3%200%2024%2010.7%2024%2024s-10.7%2024-24%2024h-80c-13.3%200-24-10.7-24-24s10.7-24%2024-24h24v-64h-24c-13.3%200-24-10.7-24-24s10.7-24%2024-24%22/%3E%3C/svg%3E');--md-admonition-icon--tip:url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%20512%20512%22%3E%3C%21--%21%20Font%20Awesome%20Free%2
10407.1.0%20by%20%40fontawesome%20-%20https%3A//fontawesome.com%20License%20-%20https%3A//fontawesome.com/license/free%20%28Icons%3A%20CC%20BY%204.0%2C%20Fonts%3A%20SIL%20OFL%201.1%2C%20Code%3A%20MIT%20License%29%20Copyright%202025%20Fonticons%2C%20Inc.--%3E%3Cpath%20d%3D%22M461.2%2018.9C472.7%2024%20480%2035.4%20480%2048v416c0%2012.6-7.3%2024-18.8%2029.1s-24.8%203.2-34.3-5.1l-46.6-40.7c-43.6-38.1-98.7-60.3-156.4-63V480c0%2017.7-14.3%2032-32%2032h-32c-17.7%200-32-14.3-32-32v-96C57.3%20384%200%20326.7%200%20256s57.3-128%20128-128h84.5c61.8-.2%20121.4-22.7%20167.9-63.3L427%2024c9.4-8.3%2022.9-10.2%2034.3-5.1zM224%20320v.2c70.3%202.7%20137.8%2028.5%20192%2073.4V118.3c-54.2%2044.9-121.7%2070.7-192%2073.4z%22/%3E%3C/svg%3E');--md-admonition-icon--success:url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%20448%20512%22%3E%3C%21--%21%20Font%20Awesome%20Free%207.1.0%20by%20%40fontawesome%20-%20https%3A//fontawesome.com%20License%20-%20https%3A//fontawesome.com/license/free%20%28Icons%3A%20CC%20BY%204.0%2C%20Fonts%3A%20SIL%20OFL%201.1%2C%20Code%3A%20MIT%20License%29%20Copyright%202025%20Fonticons%2C%20Inc.--%3E%3Cpath%20d%3D%22M434.8%2070.1c14.3%2010.4%2017.5%2030.4%207.1%2044.7l-256%20352c-5.5%207.6-14%2012.3-23.4%2013.1s-18.5-2.7-25.1-9.3l-128-128c-12.5-12.5-12.5-32.8%200-45.3s32.8-12.5%2045.3%200l101.5%20101.5%20234-321.7c10.4-14.3%2030.4-17.5%2044.7-7.1z%22/%3E%3C/svg%3E');--md-admonition-icon--question:url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%20512%20512%22%3E%3C%21--%21%20Font%20Awesome%20Free%207.1.0%20by%20%40fontawesome%20-%20https%3A//fontawesome.com%20License%20-%20https%3A//fontawesome.com/license/free%20%28Icons%3A%20CC%20BY%204.0%2C%20Fonts%3A%20SIL%20OFL%201.1%2C%20Code%3A%20MIT%20License%29%20Copyright%202025%20Fonticons%2C%20Inc.--%3E%3Cpath%20d%3D%22M256%20512a256%20256%200%201%200%200-512%20256%20256%200%201%200%200%20512m0-336c-17.7%200-32%2014.3-32%2032%200%2013.3-10.7%2024-24%2024s-24-10.7-24-24c0-44.2%2035.8-80%2080-80s80%2035.8%2080%2080c0%2047.2-36%2067.2-56%2074.5v3.8c0%2013.3-10.7%2024-24%2024s-24-10.7-24-24v-8.1c0-20.5%2014.8-35.2%2030.1-40.2%206.4-2.1%2013.2-5.5%2018.2-10.3%204.3-4.2%207.7-10%207.7-19.6%200-17.7-14.3-32-32-32zm-32%20192a32%2032%200%201%201%2064%200%2032%2032%200%201%201-64%200%22/%3E%3C/svg%3E');--md-admonition-icon--warning:url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%20512%20512%22%3E%3C%21--%21%20Font%20Awesome%20Free%207.1.0%20by%20%40fontawesome%20-%20https%3A//fontawesome.com%20License%20-%20https%3A//fontawesome.com/license/free%20%28Icons%3A%20CC%20BY%204.0%2C%20Fonts%3A%20SIL%20OFL%201.1%2C%20Code%3A%20MIT%20License%29%20Copyright%202025%20Fonticons%2C%20Inc.--%3E%3Cpath%20d%3D%22M256%200c14.7%200%2028.2%208.1%2035.2%2021l216%20400c6.7%2012.4%206.4%2027.4-.8%2039.5S486.1%20480%20472%20480H40c-14.1%200-27.2-7.4-34.4-19.5s-7.5-27.1-.8-39.5l216-400c7-12.9%2020.5-21%2035.2-21m0%20352a32%2032%200%201%200%200%2064%2032%2032%200%201%200%200-64m0-192c-18.2%200-32.7%2015.5-31.4%2033.7l7.4%20104c.9%2012.5%2011.4%2022.3%2023.9%2022.3%2012.6%200%2023-9.7%2023.9-22.3l7.4-104c1.3-18.2-13.1-33.7-31.4-33.7z%22/%3E%3C/svg%3E');--md-admonition-icon--failure:url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%20576%20512%22%3E%3C%21--%21%20Font%20Awesome%20Free%207.1.0%20by%20%40fontawesome%20-%20https%3A//fontawesome.com%20License%20-%20https%3A//fontawesome.com/license/free%20%28Icons%3A%20CC%20BY%204.0%2C%20Fonts%3A%20SIL%20OFL%201.1%2C%20Code%3A%20MIT%20License%29%20Copyright%202025%20Fonticons%2C%20Inc.--%3E%3Cpath%20d%3D%22M480-16c6.9%200%2013%204.4%2015.2%2010.9l13.5%2040.4%2040.4%2013.5C555.6%2051%20560%2057.1%20560%2064s-4.4%2013-10.9%2015.2l-40.4%2013.5-13.5%2040.4c-2.2%206.5-8.3%2010.9-15.2%2010.9s-13-4.4-15.2-10.9l-13.5-40.4-40.4-13.5C404.4%2077%20400%2070.9%20400%2064s4.4-13%2010.9-15.2l40.4-13.5%2013.5-40.4C467-11.6%20473.1-16%20480-16M321.4%2097.4c12.5-12.5%2032.8-12.5%2045.3%200l80%2080c12.5%2012.5%2012.5%2032.8%200%2045.3l-10.9%2010.9c7.9%2022%2012.2%2045.7%2012.2%2070.5%200%20114.9-93.1%20208-208%20208S32%20418.9%2032%20304%20125.
1041%2096%20240%2096c24.7%200%2048.5%204.3%2070.5%2012.3zM144%20304c0-53%2043-96%2096-96%2013.3%200%2024-10.7%2024-24s-10.7-24-24-24c-79.5%200-144%2064.5-144%20144%200%2013.3%2010.7%2024%2024%2024s24-10.7%2024-24%22/%3E%3C/svg%3E');--md-admonition-icon--danger:url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%20512%20512%22%3E%3C%21--%21%20Font%20Awesome%20Free%207.1.0%20by%20%40fontawesome%20-%20https%3A//fontawesome.com%20License%20-%20https%3A//fontawesome.com/license/free%20%28Icons%3A%20CC%20BY%204.0%2C%20Fonts%3A%20SIL%20OFL%201.1%2C%20Code%3A%20MIT%20License%29%20Copyright%202025%20Fonticons%2C%20Inc.--%3E%3Cpath%20d%3D%22M416%20427.4c58.5-44%2096-111.6%2096-187.4C512%20107.5%20397.4%200%20256%200S0%20107.5%200%20240c0%2075.8%2037.5%20143.4%2096%20187.4V464c0%2026.5%2021.5%2048%2048%2048h32v-40c0-13.3%2010.7-24%2024-24s24%2010.7%2024%2024v40h64v-40c0-13.3%2010.7-24%2024-24s24%2010.7%2024%2024v40h32c26.5%200%2048-21.5%2048-48zM96%20256a64%2064%200%201%201%20128%200%2064%2064%200%201%201-128%200m256-64a64%2064%200%201%201%200%20128%2064%2064%200%201%201%200-128%22/%3E%3C/svg%3E');--md-admonition-icon--bug:url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%20640%20512%22%3E%3C%21--%21%20Font%20Awesome%20Free%207.1.0%20by%20%40fontawesome%20-%20https%3A//fontawesome.com%20License%20-%20https%3A//fontawesome.com/license/free%20%28Icons%3A%20CC%20BY%204.0%2C%20Fonts%3A%20SIL%20OFL%201.1%2C%20Code%3A%20MIT%20License%29%20Copyright%202025%20Fonticons%2C%20Inc.--%3E%3Cpath%20d%3D%22M352%200c0-17.7-14.3-32-32-32s-32%2014.3-32%2032v64h-96c-53%200-96%2043-96%2096v224c0%2053%2043%2096%2096%2096h256c53%200%2096-43%2096-96V160c0-53-43-96-96-96h-96zM160%20368c0-13.3%2010.7-24%2024-24h32c13.3%200%2024%2010.7%2024%2024s-10.7%2024-24%2024h-32c-13.3%200-24-10.7-24-24m120%200c0-13.3%2010.7-24%2024-24h32c13.3%200%2024%2010.7%2024%2024s-10.7%2024-24%2024h-32c-13.3%200-24-10.7-24-24m120%200c0-13.3%2010.7-24%2024-24h32c13.3%200%2024%2010.7%2024%2024s-10.7%2024-24%2024h-32c-13.3%200-24-10.7-24-24M224%20176a48%2048%200%201%201%200%2096%2048%2048%200%201%201%200-96m144%2048a48%2048%200%201%201%2096%200%2048%2048%200%201%201-96%200m-304%200c0-17.7-14.3-32-32-32S0%20206.3%200%20224v96c0%2017.7%2014.3%2032%2032%2032s32-14.3%2032-32zm544-32c-17.7%200-32%2014.3-32%2032v96c0%2017.7%2014.3%2032%2032%2032s32-14.3%2032-32v-96c0-17.7-14.3-32-32-32%22/%3E%3C/svg%3E');--md-admonition-icon--example:url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%20448%20512%22%3E%3C%21--%21%20Font%20Awesome%20Free%207.1.0%20by%20%40fontawesome%20-%20https%3A//fontawesome.com%20License%20-%20https%3A//fontawesome.com/license/free%20%28Icons%3A%20CC%20BY%204.0%2C%20Fonts%3A%20SIL%20OFL%201.1%2C%20Code%3A%20MIT%20License%29%20Copyright%202025%20Fonticons%2C%20Inc.--%3E%3Cpath%20d%3D%22M288%200H128c-17.7%200-32%2014.3-32%2032s14.3%2032%2032%2032v151.5L7.5%20426.3C2.6%20435%200%20444.7%200%20454.7%200%20486.4%2025.6%20512%2057.3%20512h333.4c31.6%200%2057.3-25.6%2057.3-57.3%200-10-2.6-19.8-7.5-28.4L320%20215.5V64c17.7%200%2032-14.3%2032-32S337.7%200%20320%200zm-96%20215.5V64h64v151.5c0%2011.1%202.9%2022.1%208.4%2031.8L306%20320H142l41.6-72.7c5.5-9.7%208.4-2
1040.6%208.4-31.8%22/%3E%3C/svg%3E');--md-admonition-icon--quote:url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%20448%20512%22%3E%3C%21--%21%20Font%20Awesome%20Free%207.1.0%20by%20%40fontawesome%20-%20https%3A//fontawesome.com%20License%20-%20https%3A//fontawesome.com/license/free%20%28Icons%3A%20CC%20BY%204.0%2C%20Fonts%3A%20SIL%20OFL%201.1%2C%20Code%3A%20MIT%20License%29%20Copyright%202025%20Fonticons%2C%20Inc.--%3E%3Cpath%20d%3D%22M0%20216C0%20149.7%2053.7%2096%20120%2096h8c17.7%200%2032%2014.3%2032%2032s-14.3%2032-32%2032h-8c-30.9%200-56%2025.1-56%2056v8h64c35.3%200%2064%2028.7%2064%2064v64c0%2035.3-28.7%2064-64%2064H64c-35.3%200-64-28.7-64-64zm256%200c0-66.3%2053.7-120%20120-120h8c17.7%200%2032%2014.3%2032%2032s-14.3%2032-32%2032h-8c-30.9%200-56%2025.1-56%2056v8h64c35.3%200%2064%2028.7%2064%2064v64c0%2035.3-28.7%2064-64%2064h-64c-35.3%200-64-28.7-64-64z%22/%3E%3C/svg%3E');}</style> 105 106 107 108 109 110 111 112 113 114 115 116 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 117 <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Google+Sans:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"> 118 <style>:root{--md-text-font:"Google Sans";--md-code-font:"Roboto Mono"}</style> 119 120 121 122 <link rel="stylesheet" href="../../stylesheets/custom.css"> 123 124
124<script>__md_scope=new URL("/",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
124 125 126 127 128 129 130 131 132
133<script id="__analytics">function __md_analytics(){function e(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],e("js",new Date),e("config","G-ZEGTBCTMJ9"),document.addEventListener("DOMContentLoaded",(function(){document.forms.search&&document.forms.search.query.addEventListener("blur",(function(){this.value&&e("event","search",{search_term:this.value})}));document$.subscribe((function(){var t=document.forms.feedback;if(void 0!==t)for(var a of t.querySelectorAll("[type=submit]"))a.addEventListener("click",(function(a){a.preventDefault();var n=document.location.pathname,d=this.getAttribute("data-md-value");e("event","feedback",{page:n,data:d}),t.firstElementChild.disabled=!0;var r=t.querySelector(".md-feedback__note [data-md-value='"+d+"']");r&&(r.hidden=!1)})),t.hidden=!1})),location$.subscribe((function(t){e("config","G-ZEGTBCTMJ9",{page_path:t.pathname})}))}));var t=document.createElement("script");t.async=!0,t.src="https://www.googletagmanager.com/gtag/js?id=G-ZEGTBCTMJ9",document.getElementById("__analytics").insertAdjacentElement("afterEnd",t)}</script>
133 134 135
135<script>if("undefined"!=typeof __md_analytics){var consent=__md_get("__consent");consent&&consent.analytics&&__md_analytics()}</script>
135 136 137 138 139 140 141<meta property="og:type" content="website" /> 142<meta property="og:title" content="Core Concepts - Universal Commerce Protocol (UCP)" /> 143<meta property="og:description" content="The Universal Commerce Protocol (UCP) is a solution for enabling gen AI agents to make payments on behalf of users, safely, securely, and in a decentralized and privacy protecting manner. This protocol is a part of the broader ecosystem, which includes agentic protocols like A2A and MCP, and encompasses the global nature of payments. 144" /> 145<meta property="og:image" content="http://ucp.dev/assets/images/social/documentation/core-concepts.png" /> 146<meta property="og:image:type" content="image/png" /> 147<meta property="og:image:width" content="1200" /> 148<meta property="og:image:height" content="630" /> 149<meta property="og:url" content="http://ucp.dev/documentation/core-concepts/" /> 150<meta property="twitter:card" content="summary_large_image" /> 151<meta property="twitter:title" content="Core Concepts - Universal Commerce Protocol (UCP)" /> 152<meta property="twitter:description" content="The Universal Commerce Protocol (UCP) is a solution for enabling gen AI agents to make payments on behalf of users, safely, securely, and in a decentralized and privacy protecting manner. This protocol is a part of the broader ecosystem, which includes agentic protocols like A2A and MCP, and encompasses the global nature of payments. 153" /> 154<meta property="twitter:image" content="http://ucp.dev/assets/images/social/documentation/core-concepts.png" /> 155</head> 156 157 158 159 160 161 162 163 164 165 <body dir="ltr" data-md-color-scheme="default" data-md-color-primary="white" data-md-color-accent="indigo"> 166 167 168 <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> 169 <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> 170 <label class="md-overlay" for="__drawer"></label> 171 <div data-md-component="skip"> 172 173 174 <a href="#core-concepts" class="md-skip"> 175 Skip to content 176 </a> 177 178 </div> 179 <div data-md-component="announce"> 180 181 </div> 182 183 184 185 186 187 188<header class="md-header md-header--shadow md-header--lifted" data-md-component="header"> 189 <nav class="md-header__inner md-grid" aria-label="Header"> 190 <a href="/" title="Universal Commerce Protocol (UCP)" class="md-header__button md-logo" aria-label="Universal Commerce Protocol (UCP)" data-md-component="logo"> 191 192 <img src="../../assets/UCP-small.svg" alt="logo"> 193 194 </a> 195 <label class="md-header__button md-icon" for="__drawer"> 196 197 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> 198 </label> 199 <div class="md-header__title" data-md-component="header-title"> 200 <div class="md-header__ellipsis"> 201 <div class="md-header__topic"> 202 <span class="md-ellipsis"> 203 Universal Commerce Protocol (UCP) 204 </span> 205 </div> 206 <div class="md-header__topic" data-md-component="header-topic"> 207 <span class="md-ellipsis"> 208 209 Core Concepts 210 211 </span> 212 </div> 213 </div> 214 </div> 215 216 217 <form class="md-header__option" data-md-component="palette"> 218 219 220 221 222 <input class="md-option" data-md-color-media="" data-md-color-scheme="default" data-md-color-primary="white" data-md-color-accent="indigo" aria-hidden="true" type="radio" name="__palette" id="__palette_0"> 223 224 225 226 227 228 <input class="md-option" data-md-color-media="" data-md-color-scheme="slate" data-md-color-primary="black" data-md-color-accent="indigo" aria-hidden="true" type="radio" name="__palette" id="__palette_1"> 229 230 231</form> 232 233 234 235
235<script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
235 236 237 238 239 240 241 <label class="md-header__button md-icon" for="__search"> 242 243 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> 244 </label> 245 <div class="md-search" data-md-component="search" role="dialog"> 246 <label class="md-search__overlay" for="__search"></label> 247 <div class="md-search__inner" role="search"> 248 <form class="md-search__form" name="search"> 249 <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required> 250 <label class="md-search__icon md-icon" for="__search"> 251 252 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> 253 254 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> 255 </label> 256 <nav class="md-search__options" aria-label="Search"> 257 258 <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1"> 259 260 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> 261 </button> 262 </nav> 263 264 </form> 265 <div class="md-search__output"> 266 <div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix> 267 <div class="md-search-result" data-md-component="search-result"> 268 <div class="md-search-result__meta"> 269 Initializing search 270 </div> 271 <ol class="md-search-result__list" role="presentation"></ol> 272 </div> 273 </div> 274 </div> 275 </div> 276</div> 277 278 279 280 <div class="md-header__source"> 281 <a href="https://github.com/Universal-Commerce-Protocol/ucp" title="Go to repository" class="md-source" data-md-component="source"> 282 <div class="md-source__icon md-icon"> 283 284 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> 285 </div> 286 <div class="md-source__repository"> 287 UCP on GitHub 288 </div> 289</a> 290 </div> 291 292 </nav> 293 294 295 296<nav class="md-tabs" aria-label="Tabs" data-md-component="tabs"> 297 <div class="md-grid"> 298 <ul class="md-tabs__list"> 299 300 301 302 303 304 305 306 307 308 309 <li class="md-tabs__item md-tabs__item--active"> 310 <a href="../.." class="md-tabs__link"> 311 312 313 314 Overview 315 316 </a> 317 </li> 318 319 320 321 322 323 324 325 326 327 <li class="md-tabs__item"> 328 <a href="/latest/specification/overview/" class="md-tabs__link"> 329 330 331 332 333 334 Specification 335 336 </a> 337 </li> 338 339 340 341 </ul> 342 </div> 343</nav> 344 345 346</header> 347 348 <div class="md-container" data-md-component="container"> 349 350 351 352 353 <main class="md-main" data-md-component="main"> 354 <div class="md-main__inner md-grid"> 355 356 357 358 <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" > 359 <div class="md-sidebar__scrollwrap"> 360 <div class="md-sidebar__inner"> 361 362 363 364 365 366 367<nav class="md-nav md-nav--primary md-nav--lifted" aria-label="Navigation" data-md-level="0"> 368 <label class="md-nav__title" for="__drawer"> 369 <a href="/" title="Universal Commerce Protocol (UCP)" class="md-nav__button md-logo" aria-label="Universal Commerce Protocol (UCP)" data-md-component="logo"> 370 371 <img src="../../assets/UCP-small.svg" alt="logo"> 372 373 </a> 374 Universal Commerce Protocol (UCP) 375 </label> 376 377 <div class="md-nav__source"> 378 <a href="https://github.com/Universal-Commerce-Protocol/ucp" title="Go to repository" class="md-source" data-md-component="source"> 379 <div class="md-source__icon md-icon"> 380 381 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m
381-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> 382 </div> 383 <div class="md-source__repository"> 384 UCP on GitHub 385 </div> 386</a> 387 </div> 388 389 <ul class="md-nav__list" data-md-scrollfix> 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> 411 412 413 414 <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_1" checked> 415 416 417 <label class="md-nav__link" for="__nav_1" id="__nav_1_label" tabindex=""> 418 419 420 421 <span class="md-ellipsis"> 422 423 424 Overview 425 426 427 428 </span> 429 430 431 432 <span class="md-nav__icon md-icon"></span> 433 </label> 434 435 <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_1_label" aria-expanded="true"> 436 <label class="md-nav__title" for="__nav_1"> 437 <span class="md-nav__icon md-icon"></span> 438 439 440 Overview 441 442 443 </label> 444 <ul class="md-nav__list" data-md-scrollfix> 445 446 447 448 449 450 451 452 <li class="md-nav__item"> 453 <a href="../.." class="md-nav__link"> 454 455 456 457 <span class="md-ellipsis"> 458 459 460 Home 461 462 463 464 </span> 465 466 467 468 </a> 469 </li> 470 471 472 473 474 475 476 477 478 479 480 481 482 <li class="md-nav__item md-nav__item--active"> 483 484 <input class="md-nav__toggle md-toggle" type="checkbox" id="__toc"> 485 486 487 488 489 490 <label class="md-nav__link md-nav__link--active" for="__toc"> 491 492 493 494 <span class="md-ellipsis"> 495 496 497 Core Concepts 498 499 500 501 </span> 502 503 504 505 <span class="md-nav__icon md-icon"></span> 506 </label> 507 508 <a href="./" class="md-nav__link md-nav__link--active"> 509 510 511 512 <span class="md-ellipsis"> 513 514 515 Core Concepts 516 517 518 519 </span> 520 521 522 523 </a> 524 525 526 527<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> 528 529 530 531 532 533 534 <label class="md-nav__title" for="__toc"> 535 <span class="md-nav__icon md-icon"></span> 536 Table of contents 537 </label> 538 <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> 539 540 <li class="md-nav__item"> 541 <a href="#high-level-architecture" class="md-nav__link"> 542 <span class="md-ellipsis"> 543 544 High level architecture 545 546 </span> 547 </a> 548 549</li> 550 551 <li class="md-nav__item"> 552 <a href="#key-goals-of-ucp" class="md-nav__link"> 553 <span class="md-ellipsis"> 554 555 Key Goals of UCP 556 557 </span> 558 </a> 559 560</li> 561 562 <li class="md-nav__item"> 563 <a href="#roles-participants" class="md-nav__link"> 564 <span class="md-ellipsis"> 565 566 Roles & Participants 567 568 </span> 569 </a> 570 571 <nav class="md-nav" aria-label="Roles & Participants"> 572 <ul class="md-nav__list"> 573 574 <li class="md-nav__item"> 575 <a href="#platform-applicationagent" class="md-nav__link"> 576 <span class="md-ellipsis"> 577 578 Platform (Application/Agent) 579 580 </span> 581 </a> 582 583</li> 584 585 <li class="md-nav__item"> 586 <a href="#business" class="md-nav__link"> 587 <span class="md-ellipsis"> 588 589 Business 590 591 </span> 592 </a> 593 594</li> 595 596 <li class="md-nav__item"> 597 <a href="#credential-provider-cp" class="md-nav__link"> 598 <span class="md-ellipsis"> 599 600 Credential Provider (CP) 601 602 </span> 603 </a> 604 605</li> 606 607 <li class="md-nav__item"> 608 <a href="#payment-service-provider-psp" class="md-nav__link"> 609 <span class="md-ellipsis"> 610 611 Payment Service Provider (PSP) 612 613 </span> 614 </a> 615 616</li> 617 618 </ul> 619 </nav> 620 621</li> 622 623 <li class="md-nav__item"> 624 <a href="#core-concepts-summary" class="md-nav__link"> 625 <span class="md-ellipsis"> 626 627 Core Concepts Summary 628 629 </span> 630 </a> 631 632 <nav class="md-nav" aria-label="Core Concepts Summary"> 633 <ul class="md-nav__list"> 634 635 <li class="md-nav__item"> 636 <a href="#capabilities" class="md-nav__link"> 637 <span class="md-ellipsis"> 638 639 Capabilities 640 641 </span> 642 </a> 643 644</li> 645 646 <li class="md-nav__item"> 647 <a href="#extensions" class="md-nav__link"> 648 <span class="md-ellipsis"> 649 650 Extensions 651 652 </span> 653 </a> 654 655</li> 656 657 <li class="md-nav__item"> 658 <a href="#services" class="md-nav__link"> 659 <span class="md-ellipsis"> 660 661 Services 662 663 </span> 664 </a> 665 666</li> 667 668 </ul> 669 </nav> 670 671</li> 672 673 <li class="md-nav__item"> 674 <a href="#discovery-capability-negotiation" class="md-nav__link"> 675 <span class="md-ellipsis"> 676 677 Discovery & Capability Negotiation 678 679 </span> 680 </a> 681 682 <nav class="md-nav" aria-label="Discovery & Capability Negotiation"> 683 <ul class="md-nav__list"> 684 685 <li class="md-nav__item"> 686 <a href="#capability-intersection" class="md-nav__link"> 687 <span class="md-ellipsis"> 688 689 Capability Intersection 690 691 </span> 692 </a> 693 694</li> 695 696 <li class="md-nav__item"> 697 <a href="#profile-structure" class="md-nav__link"> 698 <span class="md-ellipsis"> 699 700 Profile Structure 701 702 </span> 703 </a> 704 705</li> 706 707 </ul> 708 </nav> 709 710</li> 711 712 <li class="md-nav__item"> 713 <a href="#namespace-governance" class="md-nav__link"> 714 <span class="md-ellipsis"> 715 716 Namespace Governance 717 718 </span> 719 </a> 720 721</li> 722 723 <li class="md-nav__item"> 724 <a href="#payment-architecture" class="md-nav__link"> 725 <span class="md-ellipsis"> 726 727 Payment Architecture 728 729 </span> 730 </a> 731 732 <nav class="md-nav" aria-label="Payment Architecture"> 733 <ul class="md-nav__list"> 734 735 <li class="md-nav__item">
736 <a href="#the-trust-triangle" class="md-nav__link"> 737 <span class="md-ellipsis"> 738 739 The Trust Triangle 740 741 </span> 742 </a> 743 744</li> 745 746 <li class="md-nav__item"> 747 <a href="#payment-handlers" class="md-nav__link"> 748 <span class="md-ellipsis"> 749 750 Payment Handlers 751 752 </span> 753 </a> 754 755</li> 756 757 </ul> 758 </nav> 759 760</li> 761 762 <li class="md-nav__item"> 763 <a href="#security-authentication" class="md-nav__link"> 764 <span class="md-ellipsis"> 765 766 Security & Authentication 767 768 </span> 769 </a> 770 771 <nav class="md-nav" aria-label="Security & Authentication"> 772 <ul class="md-nav__list"> 773 774 <li class="md-nav__item"> 775 <a href="#identity-key-discovery" class="md-nav__link"> 776 <span class="md-ellipsis"> 777 778 Identity & Key Discovery 779 780 </span> 781 </a> 782 783</li> 784 785 <li class="md-nav__item"> 786 <a href="#authentication-mechanisms" class="md-nav__link"> 787 <span class="md-ellipsis"> 788 789 Authentication Mechanisms 790 791 </span> 792 </a> 793 794</li> 795 796 <li class="md-nav__item"> 797 <a href="#identity-linking" class="md-nav__link"> 798 <span class="md-ellipsis"> 799 800 Identity Linking 801 802 </span> 803 </a> 804 805</li> 806 807 </ul> 808 </nav> 809 810</li> 811 812 <li class="md-nav__item"> 813 <a href="#versioning" class="md-nav__link"> 814 <span class="md-ellipsis"> 815 816 Versioning 817 818 </span> 819 </a> 820 821</li> 822 823 </ul> 824 825</nav> 826 827 </li> 828 829 830 831 832 833 834 835 836 837 838 <li class="md-nav__item"> 839 <a href="http://ucp.dev/latest/specification/overview/" class="md-nav__link"> 840 841 842 843 <span class="md-ellipsis"> 844 845 846 Specification 847 848 849 850 </span> 851 852 853 854 </a> 855 </li> 856 857 858 859 860 861 862 863 864 865 866 <li class="md-nav__item"> 867 <a href="../ucp-and-ap2/" class="md-nav__link"> 868 869 870 871 <span class="md-ellipsis"> 872 873 874 UCP and AP2 875 876 877 878 </span> 879 880 881 882 </a> 883 </li> 884 885 886 887 888 889 890 891 892 893 894 <li class="md-nav__item"> 895 <a href="../roadmap/" class="md-nav__link"> 896 897 898 899 <span class="md-ellipsis"> 900 901 902 Roadmap 903 904 905 906 </span> 907 908 909 910 </a> 911 </li> 912 913 914 915 916 917 918 919 920 921 922 <li class="md-nav__item"> 923 <a href="../schema-authoring/" class="md-nav__link"> 924 925 926 927 <span class="md-ellipsis"> 928 929 930 Schema Authoring 931 932 933 934 </span> 935 936 937 938 </a> 939 </li> 940 941 942 943 944 945 946 947 948 949 950 <li class="md-nav__item"> 951 <a href="../../versioning/" class="md-nav__link"> 952 953 954 955 <span class="md-ellipsis"> 956 957 958 Versioning 959 960 961 962 </span> 963 964 965 966 </a> 967 </li> 968 969 970 971 972 973 974 975 976 977 978 <li class="md-nav__item"> 979 <a href="../announcements/" class="md-nav__link"> 980 981 982 983 <span class="md-ellipsis"> 984 985 986 Announcements 987 988 989 990 </span> 991 992 993 994 </a> 995 </li> 996 997 998 999 1000 </ul> 1001 </nav> 1002 1003 </li> 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 <li class="md-nav__item"> 1014 <a href="/latest/specification/overview/" class="md-nav__link"> 1015 1016 1017 1018 <span class="md-ellipsis"> 1019 1020 1021 Specification 1022 1023 1024 1025 </span> 1026 1027 1028 1029 </a> 1030 </li> 1031 1032 1033 1034 </ul> 1035</nav> 1036 </div> 1037 </div> 1038 </div> 1039 1040 1041 1042 <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" > 1043 <div class="md-sidebar__scrollwrap"> 1044 <div class="md-sidebar__inner"> 1045 1046 1047<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> 1048 1049 1050 1051 1052 1053 1054 <label class="md-nav__title" for="__toc">
1055 <span class="md-nav__icon md-icon"></span> 1056 Table of contents 1057 </label> 1058 <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> 1059 1060 <li class="md-nav__item"> 1061 <a href="#high-level-architecture" class="md-nav__link"> 1062 <span class="md-ellipsis"> 1063 1064 High level architecture 1065 1066 </span> 1067 </a> 1068 1069</li> 1070 1071 <li class="md-nav__item"> 1072 <a href="#key-goals-of-ucp" class="md-nav__link"> 1073 <span class="md-ellipsis"> 1074 1075 Key Goals of UCP 1076 1077 </span> 1078 </a> 1079 1080</li> 1081 1082 <li class="md-nav__item"> 1083 <a href="#roles-participants" class="md-nav__link"> 1084 <span class="md-ellipsis"> 1085 1086 Roles & Participants 1087 1088 </span> 1089 </a> 1090 1091 <nav class="md-nav" aria-label="Roles & Participants"> 1092 <ul class="md-nav__list"> 1093 1094 <li class="md-nav__item"> 1095 <a href="#platform-applicationagent" class="md-nav__link"> 1096 <span class="md-ellipsis"> 1097 1098 Platform (Application/Agent) 1099 1100 </span> 1101 </a> 1102 1103</li> 1104 1105 <li class="md-nav__item"> 1106 <a href="#business" class="md-nav__link"> 1107 <span class="md-ellipsis"> 1108 1109 Business 1110 1111 </span> 1112 </a> 1113 1114</li> 1115 1116 <li class="md-nav__item"> 1117 <a href="#credential-provider-cp" class="md-nav__link"> 1118 <span class="md-ellipsis"> 1119 1120 Credential Provider (CP) 1121 1122 </span> 1123 </a> 1124 1125</li> 1126 1127 <li class="md-nav__item"> 1128 <a href="#payment-service-provider-psp" class="md-nav__link"> 1129 <span class="md-ellipsis"> 1130 1131 Payment Service Provider (PSP) 1132 1133 </span> 1134 </a> 1135 1136</li> 1137 1138 </ul> 1139 </nav> 1140 1141</li> 1142 1143 <li class="md-nav__item"> 1144 <a href="#core-concepts-summary" class="md-nav__link"> 1145 <span class="md-ellipsis"> 1146 1147 Core Concepts Summary 1148 1149 </span> 1150 </a> 1151 1152 <nav class="md-nav" aria-label="Core Concepts Summary"> 1153 <ul class="md-nav__list"> 1154 1155 <li class="md-nav__item"> 1156 <a href="#capabilities" class="md-nav__link"> 1157 <span class="md-ellipsis"> 1158 1159 Capabilities 1160 1161 </span> 1162 </a> 1163 1164</li> 1165 1166 <li class="md-nav__item"> 1167 <a href="#extensions" class="md-nav__link"> 1168 <span class="md-ellipsis"> 1169 1170 Extensions 1171 1172 </span> 1173 </a> 1174 1175</li> 1176 1177 <li class="md-nav__item"> 1178 <a href="#services" class="md-nav__link"> 1179 <span class="md-ellipsis"> 1180 1181 Services 1182 1183 </span> 1184 </a> 1185 1186</li> 1187 1188 </ul> 1189 </nav> 1190 1191</li> 1192 1193 <li class="md-nav__item"> 1194 <a href="#discovery-capability-negotiation" class="md-nav__link"> 1195 <span class="md-ellipsis"> 1196 1197 Discovery & Capability Negotiation 1198 1199 </span> 1200 </a> 1201 1202 <nav class="md-nav" aria-label="Discovery & Capability Negotiation"> 1203 <ul class="md-nav__list"> 1204 1205 <li class="md-nav__item"> 1206 <a href="#capability-intersection" class="md-nav__link"> 1207 <span class="md-ellipsis"> 1208 1209 Capability Intersection 1210 1211 </span> 1212 </a> 1213 1214</li> 1215 1216 <li class="md-nav__item"> 1217 <a href="#profile-structure" class="md-nav__link"> 1218 <span class="md-ellipsis"> 1219 1220 Profile Structure 1221 1222 </span> 1223 </a> 1224 1225</li> 1226 1227 </ul> 1228 </nav> 1229 1230</li> 1231 1232 <li class="md-nav__item"> 1233 <a href="#namespace-governance" class="md-nav__link"> 1234 <span class="md-ellipsis"> 1235 1236 Namespace Governance 1237 1238 </span> 1239 </a> 1240 1241</li> 1242 1243 <li class="md-nav__item"> 1244 <a href="#payment-architecture" class="md-nav__link"> 1245 <span class="md-ellipsis"> 1246 1247 Payment Architecture 1248 1249 </span> 1250 </a> 1251 1252 <nav class="md-nav" aria-label="Payment Architecture"> 1253 <ul class="md-nav__list"> 1254 1255 <li class="md-nav__item"> 1256 <a href="#the-trust-triangle" class="md-nav__link"> 1257 <span class="md-ellipsis"> 1258 1259 The Trust Triangle 1260 1261 </span> 1262 </a> 1263 1264</li> 1265 1266 <li class="md-nav__item"> 1267 <a href="#payment-handlers" class="md-nav__link"> 1268 <span class="md-ellipsis"> 1269 1270 Payment Handlers 1271 1272 </span> 1273 </a> 1274 1275</li> 1276 1277 </ul> 1278 </nav> 1279 1280</li> 1281 1282 <li class="md-nav__item"> 1283 <a href="#security-authentication" class="md-nav__link"> 1284 <span class="md-ellipsis"> 1285 1286 Security & Authentication 1287 1288 </span> 1289 </a> 1290 1291 <nav class="md-nav" aria-label="Security & Authentication"> 1292 <ul class="md-nav__list"> 1293 1294 <li class="md-nav__item"> 1295 <a href="#identity-key-discovery" class="md-nav__link"> 1296 <span class="md-ellipsis"> 1297 1298 Identity & Key Discovery 1299 1300 </span> 1301 </a> 1302 1303</li> 1304 1305 <li class="md-nav__item"> 1306 <a href="#authentication-mechanisms" class="md-nav__link"> 1307 <span class="md-ellipsis"> 1308 1309 Authentication Mechanisms 1310 1311 </span> 1312 </a> 1313 1314</li> 1315 1316 <li class="md-nav__item"> 1317 <a href="#identity-linking" class="md-nav__link"> 1318 <span class="md-ellipsis"> 1319 1320 Identity Linking 1321 1322 </span> 1323 </a> 1324 1325</li> 1326 1327 </ul> 1328 </nav> 1329 1330</li> 1331 1332 <li class="md-nav__item"> 1333 <a href="#versioning" class="md-nav__link"> 1334 <span class="md-ellipsis"> 1335 1336 Versioning 1337 1338 </span> 1339 </a> 1340 1341</li> 1342 1343 </ul> 1344 1345</nav> 1346 </div> 1347 </div> 1348 </div> 1349 1350 1351 1352 <div class="md-content" data-md-component="content"> 1353 1354 <article class="md-content__inner md-typeset"> 1355 1356 1357 1358 1359 1360
1361 1362 1363<!-- 1364 Copyright 2026 UCP Authors 1365 1366 Licensed under the Apache License, Version 2.0 (the "License"); 1367 you may not use this file except in compliance with the License. 1368 You may obtain a copy of the License at 1369 1370 http://www.apache.org/licenses/LICENSE-2.0 1371 1372 Unless required by applicable law or agreed to in writing, software 1373 distributed under the License is distributed on an "AS IS" BASIS, 1374 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1375 See the License for the specific language governing permissions and 1376 limitations under the License. 1377--> 1378 1379<h1 id="core-concepts">Core Concepts<a class="headerlink" href="#core-concepts" title="Permanent link">¶</a></h1> 1380<p>The Universal Commerce Protocol (UCP) is an open standard for interoperability 1381between commerce entities. It defines a common language and functional 1382primitives so that platforms and businesses can interoperate securely and 1383reliably across commercial verticals.</p> 1384<p>This document provides the detailed technical specification for UCP. 1385For a complete definition of all data models and schemas, see the 1386<a href="/latest/specification/reference/">Schema Reference</a>.</p> 1387<div class="admonition note"> 1388<p class="admonition-title">Terminology</p> 1389<p>Throughout this documentation, <strong>Platform</strong> refers to any entity that 1390<em>consumes</em> capabilities â an app, an AI agent, a procurement system, or 1391another business. <strong>Business</strong> refers to any entity that <em>exposes</em> 1392capabilities â a retailer, a supplier, a service provider, or any other 1393participant offering commerce functionality. These roles are defined by 1394direction of capability flow, not by industry vertical, making UCP equally 1395applicable to B2C, B2B, and agent-to-agent commerce.</p> 1396</div> 1397<p>Its primary goal is to enable:</p> 1398<ul> 1399<li><strong>Platforms:</strong> To dynamically discover and consume the capabilities a 1400 business exposes.</li> 1401<li><strong>Businesses:</strong> To declare what they offer and how they operate â once â 1402 and have any compatible platform discover and use it without bespoke 1403 integrations.</li> 1404<li><strong>Payment & Credential Providers:</strong> To expose their services â 1405 tokenization, vaulting, credential issuance â once, and power secure 1406 commerce for users across any compatible platform and business.</li> 1407</ul> 1408<h2 id="high-level-architecture">High level architecture<a class="headerlink" href="#high-level-architecture" title="Permanent link">¶</a></h2> 1409<!-- Responsive image: shows ucp-diagram-mobile.jpg on small screens (<=600px) 1410 and ucp-diagram.jpg on larger screens. --> 1411<p><picture> 1412 <source media="(max-width: 600px)" srcset="/assets/ucp-diagram-mobile.jpg"> 1413 <img alt="UCP Diagram" src="/assets/ucp-diagram.jpg"> 1414</picture></p> 1415<h2 id="key-goals-of-ucp">Key Goals of UCP<a class="headerlink" href="#key-goals-of-ucp" title="Permanent link">¶</a></h2> 1416<ul> 1417<li><strong>Interoperability:</strong> Bridge the gap between platforms, businesses, 1418 and payment ecosystems.</li> 1419<li><strong>Discovery:</strong> Allow platforms to dynamically discover what 1420 capabilities a business supports (e.g., "Do they support checkout?", 1421 "Do they support fulfillment options or identity linking?").</li> 1422<li><strong>Security:</strong> Facilitate secure, standards-based (OAuth 2.0, PCI-DSS 1423 compliant patterns) exchanges of sensitive user and payment data.</li> 1424<li><strong>Agentic Commerce:</strong> Enable AI agents to act on behalf of varied principals 1425 (an individual, organization, or another agent) and support different 1426 modalities (human-in-the-loop, fully autonomous).</li> 1427</ul> 1428<h2 id="roles-participants">Roles & Participants<a class="headerlink" href="#roles-participants" title="Permanent link">¶</a></h2> 1429<p>UCP defines the interactions between four distinct actors, each playing 1430a specific role in the interaction lifecycle.</p> 1431<h3 id="platform-applicationagent">Platform (Application/Agent)<a class="headerlink" href="#platform-applicationagent" title="Permanent link">¶</a></h3> 1432<p>
1432The platform is any entity that consumes capabilities exposed by a business â 1433an AI agent, a mobile app, a procurement system, or another business acting 1434as a capability consumer. It orchestrates the interaction by discovering what 1435the business supports and invoking the appropriate capabilities on behalf of 1436its principal (a user, an automated process, or another system).</p> 1437<ul> 1438<li><strong>Responsibilities:</strong> Discovering business capabilities via profiles, 1439 initiating and managing capability sessions, and acting on behalf of its 1440 principal within the bounds of negotiated capabilities.</li> 1441<li><strong>Examples:</strong> AI Shopping Assistants, Super Apps, Search Engines, 1442 B2B Procurement Systems.</li> 1443</ul> 1444<h3 id="business">Business<a class="headerlink" href="#business" title="Permanent link">¶</a></h3> 1445<p>The entity exposing capabilities. In transactional contexts, the business 1446typically acts as the <strong>Merchant of Record (MoR)</strong>, retaining financial 1447liability and ownership of the transaction â though UCP's capability model 1448is not limited to transactional use cases.</p> 1449<ul> 1450<li><strong>Responsibilities:</strong> Publishing a UCP profile, declaring supported 1451 services, capabilities and extensions, processing capability invocations 1452 which may be stateful or stateless.</li> 1453<li><strong>Examples:</strong> Retailers, Airlines, Hotel Chains, Service Providers, 1454 Suppliers, Distributors.</li> 1455</ul> 1456<h3 id="credential-provider-cp">Credential Provider (CP)<a class="headerlink" href="#credential-provider-cp" title="Permanent link">¶</a></h3> 1457<p>A trusted entity responsible for securely managing and sharing sensitive user 1458data, particularly payment instruments and shipping addresses.</p> 1459<ul> 1460<li><strong>Responsibilities:</strong> Authenticating the user, issuing payment tokens (to 1461 keep raw card data off the platform), and holding PII securely to minimize 1462 compliance scope for other parties.</li> 1463<li><strong>Examples:</strong> Digital Wallets (e.g., Google Wallet, Apple Pay), Identity 1464 Providers.</li> 1465</ul> 1466<h3 id="payment-service-provider-psp">Payment Service Provider (PSP)<a class="headerlink" href="#payment-service-provider-psp" title="Permanent link">¶</a></h3> 1467<p>The financial infrastructure provider that processes payments on behalf of 1468businesses.</p> 1469<ul> 1470<li><strong>Responsibilities:</strong> Authorizing and capturing transactions, handling 1471 settlements, and communicating with card networks. The PSP often interacts 1472 directly with tokens provided by the Credential Provider.</li> 1473<li><strong>Examples:</strong> Stripe, Adyen, PayPal, Braintree, Chase Paymentech.</li> 1474</ul> 1475<h2 id="core-concepts-summary">Core Concepts Summary<a class="headerlink" href="#core-concepts-summary" title="Permanent link">¶</a></h2> 1476<p>UCP revolves around three fundamental constructs that define how entities 1477interact.</p> 1478<h3 id="capabilities">Capabilities<a class="headerlink" href="#capabilities" title="Permanent link">¶</a></h3> 1479<p>Capabilities are discrete, versioned features that a Business declares it 1480supports. They are the "verbs" of the protocol â units of functionality that 1481Platforms can discover, negotiate, and invoke.</p> 1482<p>Each capability is identified by a reverse-domain name (e.g., 1483<code>dev.ucp.shopping.checkout</code>) and carries a date-based version. Capabilities 1484are declared in the Business's UCP profile at <code>/.well-known/ucp</code>, negotiated 1485by exact version, and confirmed in every response so that the Platform always 1486knows the active feature set for a given interaction. UCP-authored <code>dev.ucp.*</code> 1487capabilities and extensions are versioned in lockstep with the specification: 1488each declares the date <code>D</code> of the UCP release it ships in. Third-party 1489extensions publish versions on their own cadence.</p> 1490<p>The following are examples of capabilities defined in UCP â see the 1491<a href="/latest/specification/overview/">Specification</a> for the authoritative and 1492up-to-date list.</p> 1493<table> 1494<thead> 1495<tr> 1496<th style="text-align: left;">Capability</th> 1497<th style="text-align: left;">Description</th> 1498</tr> 1499</thead> 1500<tbody> 1501<tr> 1502<td style="text-align: left;"><code>dev.ucp.shopping.checkout</code></td> 1503<td style="text-align: left;">Initiates and completes purchase sessions</td> 1504</tr> 1505<tr> 1506<td style="text-align: left;"><code>dev.ucp.shopping.cart</code></td> 1507<td style="text-align: left;">Pre-checkout cart management</td> 1508</tr> 1509<tr> 1510<td style="text-align: left;"><code>dev.ucp.shopping.catalog.search</code></td> 1511<td style="text-align: left;">Search across a business catalog</td> 1512</tr> 1513<tr> 1514<td style="text-align: left;"><code>dev.ucp.shopping.catalog.lookup</code></td> 1515<td style="text-align: left;">Retrieve a specific product by ID</td> 1516</tr> 1517<tr> 1518<td style="text-align: left;"><code>dev.ucp.shopping.order</code></td> 1519<td style="text-align: left;">Order lifecycle events</td> 1520</tr> 1521<tr> 1522<td style="text-align: left;"><code>dev.ucp.shopping.permalink</code></td> 1523<td style="text-align: left;">Shareable links to pre-populated carts and products</td> 1524</tr> 1525<tr> 1526<td style="text-align: left;"><code>dev.ucp.common.identity_linking</code></td> 1527<td style="text-align: left;">OAuth-based account linking</td> 1528</tr> 1529<tr> 1530<td style="text-align: left;"><code>dev.ucp.common.location.search</code></td> 1531<td style="text-align: left;">Search for physical stores and pickup locations</td> 1532</tr> 1533<tr> 1534<td style="text-align: left;"><code>dev.ucp.common.location.lookup</code></td> 1535<td style="text-align: left;">Retrieve location details, operating hours, and amenities</td> 1536</tr> 1537<tr> 1538<td style="text-align: left;"><code>dev.ucp.lodging.booking</code></td> 1539<td style="text-align: left;">Initiates and completes booking session for hotels</td> 1540</tr> 1541</tbody> 1542</table> 1543<h3 id="extensions">Extensions<a class="headerlink" href="#extensions" title="Permanent link">¶</a></h3> 1544<p>Extensions optionally augment a base capability. They use the 1545<code>extends</code> field to declare their parent(s) and compose onto the base schema 1546using JSON Schema <code>allOf</code>. Extensions appear in <code>ucp.capabilities{}</code> alongside 1547core capabilities.</p> 1548<!-- ucp:example schema=profile def=business_schema target=$.ucp.capabilities --> 1549<div class="language-json highlight"><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="p">{</span> 1550</span><span id="__span-0-2"><a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a><span class="w"> </span><span class="nt">"dev.ucp.shopping.fulfillment"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span> 1551</span><span id="__span-0-3"><a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a><span class="w"> </span><span class="p">{</span> 1552</span><span id="__span-0-4"><a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a><span class="w"> </span><span class="nt">"version"</span><span class="p">:</span><span class="w"> </span><span class="s2">"draft"</span><span class="p">,</span> 1553</span><span id="__span-0-5"><a id="__codelineno-0-5" name="__codelineno-0-5" href="#__codelineno-0-5"></a><span class="w"> </span><span class="nt">"extends"</span><span class="p">:</span><span class="w"> </span><span class="s2">"dev.ucp.shopping.checkout"</span><span class="p">,</span> 1554</span><span id="__span-0-6"><a id="__codelineno-0-6" name="__codelineno-0-6" href="#__codelineno-0-6"></a><span class="w"> </span><span class="nt">"spec"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://ucp.dev/draft/specification/shopping/extensions/fulfillment"</span><span class="p">,</span> 1555</span><span id="__span-0-7"><a id="__codelineno-0-7" name="__codelineno-0-7" href="#__codelineno-0-7"></a><span class="w"> </span><span class="nt">"schema"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://ucp.dev/draft/schemas/shopping/fulfillment.json"</span> 1556</span><span id="__span-0-8"><a id="__codelineno-0-8" name="__codelineno-0-8" href="#__codelineno-0-8"></a><span class="w"> </span><span class="p">}</span> 1557</span><span id="__span-0-9"><a id="__codelineno-0-9" name="__codelineno-0-9" href="#__codelineno-0-9"></a><span class="w"> </span><span class="p">]</span> 1558</span><span id="__span-0-10"><a id="__codelineno-0-10" name="__codelineno-0-10" href="#__codelineno-0-10"></a><span class="p">}</span> 1559</span></code></pre></div> 1560<p>An extension that declares <code>extends</code> without its parent in the negotiated 1561intersection is automatically pruned. This ensures extension coherence â 1562you never activate a discount extension without the checkout it extends.</p> 1563<p>The following are examples of extensions defined in UCP â see the 1564<a href="/latest/specification/overview/">Specification</a> for the authoritative and 1565up-to-date list.</p> 1566<table> 1567<thead> 1568<tr> 1569<th style="text-align: left;">Extension</th> 1570<th style="text-align: left;">Extends</th> 1571<th style="text-align: left;">Description</th> 1572</tr> 1573</thead> 1574<tbody> 1575<tr> 1576<td style="text-align: left;"><code>dev.ucp.shopping.discount</code></td> 1577<td style="text-align: left;">checkout, cart</td> 1578<td style="text-align: left;">Discount codes and promotions</td> 1579</tr> 1580<tr> 1581<td style="text-align: left;"><code>dev.ucp.shopping.fulfillment</code></td> 1582<td style="text-align: left;">checkout</td> 1583<td style="text-align: left;">Shipping and delivery options</td> 1584</tr> 1585<tr> 1586<td style="text-align: left;"><code>
1586dev.ucp.shopping.buyer_consent</code></td> 1587<td style="text-align: left;">checkout, cart</td> 1588<td style="text-align: left;">Explicit consent capture</td> 1589</tr> 1590<tr> 1591<td style="text-align: left;"><code>dev.ucp.common.loyalty</code></td> 1592<td style="text-align: left;">checkout, cart, catalog</td> 1593<td style="text-align: left;">Member benefits, rewards, and points earning</td> 1594</tr> 1595<tr> 1596<td style="text-align: left;"><code>dev.ucp.common.payment.authentication</code></td> 1597<td style="text-align: left;">checkout</td> 1598<td style="text-align: left;">Browser-surface device data collection and 3DS challenges</td> 1599</tr> 1600<tr> 1601<td style="text-align: left;"><code>dev.ucp.common.payment.ap2_mandate</code></td> 1602<td style="text-align: left;">checkout</td> 1603<td style="text-align: left;">Non-repudiable authorization for autonomous commerce</td> 1604</tr> 1605<tr> 1606<td style="text-align: left;"><code>dev.ucp.common.payment.split_payments</code></td> 1607<td style="text-align: left;">checkout</td> 1608<td style="text-align: left;">Multi-instrument allocation and split settlements</td> 1609</tr> 1610<tr> 1611<td style="text-align: left;"><code>dev.ucp.common.payment.terms</code></td> 1612<td style="text-align: left;">checkout</td> 1613<td style="text-align: left;">Deposits, installments, and deferred payment schedules</td> 1614</tr> 1615</tbody> 1616</table> 1617<h3 id="services">Services<a class="headerlink" href="#services" title="Permanent link">¶</a></h3> 1618<p><strong>Services</strong> group the operations and events for a vertical or common domain under a 1619reverse-domain registry key (e.g., <code>dev.ucp.shopping</code>, <code>dev.ucp.common</code>). The key identifies the 1620service: a service declares <em>what</em> functionality exists for that vertical or domain, and 1621each entry in its array declares <em>how</em> it is accessed over a transport binding.</p> 1622<p>A single service can be accessed via multiple transport bindings:</p> 1623<table> 1624<thead> 1625<tr> 1626<th style="text-align: left;">Transport</th> 1627<th style="text-align: left;">Format</th> 1628<th style="text-align: left;">Best For</th> 1629</tr> 1630</thead> 1631<tbody> 1632<tr> 1633<td style="text-align: left;"><strong>REST</strong></td> 1634<td style="text-align: left;">OpenAPI 3.1.0</td> 1635<td style="text-align: left;">Standard server-to-server integrations</td> 1636</tr> 1637<tr> 1638<td style="text-align: left;"><strong>MCP</strong></td> 1639<td style="text-align: left;">OpenRPC</td> 1640<td style="text-align: left;">AI agents via Model Context Protocol</td> 1641</tr> 1642<tr> 1643<td style="text-align: left;"><strong>A2A</strong></td> 1644<td style="text-align: left;">Agent Card</td> 1645<td style="text-align: left;">Agent-to-Agent protocol integrations</td> 1646</tr> 1647<tr> 1648<td style="text-align: left;"><strong>Embedded</strong></td> 1649<td style="text-align: left;">OpenRPC</td> 1650<td style="text-align: left;">Embedded integrations</td> 1651</tr> 1652</tbody> 1653</table> 1654<p>A Business declares which transport bindings it supports within each service; 1655Platforms pick whichever fits their context â an AI agent may prefer MCP, a 1656traditional web app may use REST. Every UCP-defined service declares an explicit 1657<code>version</code> equal to the selected <code>ucp.version</code>, repeated on every entry since they 1658differ only by transport binding. Transport bindings have no separate version.</p> 1659<p>Service namespaces are also UCP's extensibility mechanism for new verticals. 1660Businesses opt in by declaring which services they support.</p> 1661<h2 id="discovery-capability-negotiation">Discovery & Capability Negotiation<a class="headerlink" href="#discovery-capability-negotiation" title="Permanent link">¶</a></h2> 1662<p>UCP uses a profile-based discovery model. Every business publishes a 1663machine-readable profile at <code>/.well-known/ucp</code> that declares which services, 1664capabilities, and payment handlers they support. Platforms advertise their 1665own profile URL on each request via the <code>UCP-Agent</code> header.</p> 1666<div class="language-text highlight"><pre><span></span><code><span id="__span-1-1"><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a>POST /checkout-sessions HTTP/1.1 1667</span><span id="__span-1-2"><a id="__codelineno-1-2" name="__codelineno-1-2" href="#__codelineno-1-2"></a>UCP-Agent: profile="
1667https://agent.example/profiles/shopping-agent.json" 1668</span></code></pre></div> 1669<p>This design enables <strong>permissionless onboarding</strong> â any platform with a 1670discoverable profile can interact with any business without prior registration. 1671Businesses may additionally establish trust with known platforms through 1672out-of-band onboarding & verification mechanisms (API keys, OAuth 1673credentials, mTLS certificates).</p> 1674<h3 id="capability-intersection">Capability Intersection<a class="headerlink" href="#capability-intersection" title="Permanent link">¶</a></h3> 1675<p>Capability negotiation follows a <strong>server-selects</strong> architecture. The business 1676determines the active capabilities by computing the intersection of its own 1677declared capabilities with those in the platform's profile:</p> 1678<ol> 1679<li><strong>Intersect by name</strong> â Only capabilities both parties declare are 1680 candidates.</li> 1681<li><strong>Select version</strong> â For each matched capability, compute the set of 1682 versions present in both the business and platform arrays. Select the 1683 highest (latest date). If no mutual version exists, exclude the capability.</li> 1684<li><strong>Prune orphaned extensions</strong> â Extensions are removed if <strong>none</strong> of their 1685 parent capabilities are in the intersection. Pruning repeats until stable 1686 (handles chains).</li> 1687</ol> 1688<p>The result is a minimal, mutually compatible capability set. Businesses 1689include the active capabilities in every response so platforms always know 1690which features apply to a given interaction.</p> 1691<h3 id="profile-structure">Profile Structure<a class="headerlink" href="#profile-structure" title="Permanent link">¶</a></h3> 1692<p>Both business and platform profiles share a common base structure â a <code>ucp</code> 1693object declaring protocol version, services, capabilities, and payment handlers, 1694alongside a <code>keys</code> array of JWK public keys (a valid 1695<a href="https://datatracker.ietf.org/doc/html/rfc7517">RFC 7517</a> JWK Set, 1696reusable as a Web Bot Auth key source). The <code>ucp</code> object differs 1697between the two: the business profile uses a business-specific schema 1698(hosted at 1699<code>/.well-known/ucp</code>), while the platform profile uses a platform-specific schema 1700(hosted at a URI the platform advertises per-request). This dual-purpose profile 1701â capabilities <em>and</em> keys in a single document â means discovery and 1702authentication are resolved together.</p> 1703<!-- ucp:example schema=profile def=business_schema --> 1704<div class="language-json highlight"><pre><span></span><code><span id="__span-2-1"><a id="__codelineno-2-1" name="__codelineno-2-1" href="#__codelineno-2-1"></a><span class="p">{</span> 1705</span><span id="__span-2-2"><a id="__codelineno-2-2" name="__codelineno-2-2" href="#__codelineno-2-2"></a><span class="w"> </span><span class="nt">"ucp"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span> 1706</span><span id="__span-2-3"><a id="__codelineno-2-3" name="__codelineno-2-3" href="#__codelineno-2-3"></a><span class="w"> </span><span class="nt">"version"</span><span class="p">:</span><span class="w"> </span><span class="s2">"draft"</span><span class="p">,</span> 1707</span><span id="__span-2-4"><a id="__codelineno-2-4" name="__codelineno-2-4" href="#__codelineno-2-4"></a><span class="w"> </span><span class="nt">"services"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span> 1708</span><span id="__span-2-5"><a id="__codelineno-2-5" name="__codelineno-2-5" href="#__codelineno-2-5"></a><span class="w"> </span><span class="nt">"dev.ucp.shopping"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span> 1709</span><span id="__span-2-6"><a id="__codelineno-2-6" name="__codelineno-2-6" href="#__codelineno-2-6"></a><span class="w"> </span><span class="p">{</span> 1710</span><span id="__span-2-7"><a id="__codelineno-2-7" name="__codelineno-2-7" href="#__codelineno-2-7"></a><span class="w"> </span><span class="nt">"version"</span><span class="p">:</span><span class="w"> </span><span class="s2">"draft"</span><span class="p">,</span> 1711</span><span id="__span-2-8"><a id="__codelineno-2-8" name="__codelineno-2-8" href="#__codelineno-2-8"></a><span class="w"> </span><span class="nt">"spec"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://ucp.dev/draft/specification/overview/"</span><span class="p">,</span> 1712</span><span id="__span-2-9"><a id="__codelineno-2-9" name="__codelineno-2-9" href="#__codelineno-2-9"></a><span class="w"> </span><span class="nt">"transport"</span><span class="p">:</span><span class="w"> </span><span class="s2">"rest"</span><span class="p">,</span> 1713</span><span id="__span-2-10"><a id="__codelineno-2-10" name="__codelineno-2-10" href="#__codelineno-2-10"></a><span class="w"> </span><span class="nt">"schema"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://ucp.dev/draft/services/shopping/rest.openapi.json"</span><span class="p">,</span> 1714</span><span id="__span-2-11"><a id="__codelineno-2-11" name="__codelineno-2-11" href="#__codelineno-2-11"></a><span class="w"> </span><span class="nt">"endpoint"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://business.example.com/ucp/v1"</span> 1715</span><span id="__span-2-12"><a id="__codelineno-2-12" name="__codelineno-2-12" href="#__codelineno-2-12"></a><span class="w"> </span><span class="p">}</span> 1716</span><span id="__span-2-13"><a id="__codelineno-2-13" name="__codelineno-2-13" href="#__codelineno-2-13"></a><span class="w"> </span><span class="p">]</span> 1717</span><span id="__span-2-14"><a id="__codelineno-2-14" name="__codelineno-2-14" href="#__codelineno-2-14"></a><span class="w"> </span><span class="p">},</span> 1718</span><span id="__span-2-15"><a id="__codelineno-2-15" name="__codelineno-2-15" href="#__codelineno-2-15"></a><span class="w"> </span><span class="nt">"capabilities"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span> 1719</span><span id="__span-2-16"><a id="__codelineno-2-16" name="__codelineno-2-16" href="#__codelineno-2-16"></a><span class="w"> </span><span class="nt">"dev.ucp.shopping.checkout"</span><span class="p">:</span><span class="w"> </span><span class="p">
1719[{</span> 1720</span><span id="__span-2-17"><a id="__codelineno-2-17" name="__codelineno-2-17" href="#__codelineno-2-17"></a><span class="w"> </span><span class="nt">"version"</span><span class="p">:</span><span class="w"> </span><span class="s2">"draft"</span><span class="p">,</span> 1721</span><span id="__span-2-18"><a id="__codelineno-2-18" name="__codelineno-2-18" href="#__codelineno-2-18"></a><span class="w"> </span><span class="nt">"spec"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://ucp.dev/draft/specification/shopping/checkout"</span><span class="p">,</span> 1722</span><span id="__span-2-19"><a id="__codelineno-2-19" name="__codelineno-2-19" href="#__codelineno-2-19"></a><span class="w"> </span><span class="nt">"schema"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://ucp.dev/draft/schemas/shopping/checkout.json"</span> 1723</span><span id="__span-2-20"><a id="__codelineno-2-20" name="__codelineno-2-20" href="#__codelineno-2-20"></a><span class="w"> </span><span class="p">}],</span> 1724</span><span id="__span-2-21"><a id="__codelineno-2-21" name="__codelineno-2-21" href="#__codelineno-2-21"></a><span class="w"> </span><span class="nt">"dev.ucp.shopping.fulfillment"</span><span class="p">:</span><span class="w"> </span><span class="p">[{</span> 1725</span><span id="__span-2-22"><a id="__codelineno-2-22" name="__codelineno-2-22" href="#__codelineno-2-22"></a><span class="w"> </span><span class="nt">"version"</span><span class="p">:</span><span class="w"> </span><span class="s2">"draft"</span><span class="p">,</span> 1726</span><span id="__span-2-23"><a id="__codelineno-2-23" name="__codelineno-2-23" href="#__codelineno-2-23"></a><span class="w"> </span><span class="nt">"spec"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://ucp.dev/draft/specification/shopping/extensions/fulfillment"</span><span class="p">,</span> 1727</span><span id="__span-2-24"><a id="__codelineno-2-24" name="__codelineno-2-24" href="#__codelineno-2-24"></a><span class="w"> </span><span class="nt">"schema"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://ucp.dev/draft/schemas/shopping/fulfillment.json"</span><span class="p">,</span> 1728</span><span id="__span-2-25"><a id="__codelineno-2-25" name="__codelineno-2-25" href="#__codelineno-2-25"></a><span class="w"> </span><span class="nt">"extends"</span><span class="p">:</span><span class="w"> </span><span class="s2">"dev.ucp.shopping.checkout"</span> 1729</span><span id="__span-2-26"><a id="__codelineno-2-26" name="__codelineno-2-26" href="#__codelineno-2-26"></a><span class="w"> </span><span class="p">}]</span> 1730</span><span id="__span-2-27"><a id="__codelineno-2-27" name="__codelineno-2-27" href="#__codelineno-2-27"></a><span class="w"> </span><span class="p">},</span> 1731</span><span id="__span-2-28"><a id="__codelineno-2-28" name="__codelineno-2-28" href="#__codelineno-2-28"></a><span class="w"> </span><span class="nt">"payment_handlers"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span> 1732</span><span id="__span-2-29"><a id="__codelineno-2-29" name="__codelineno-2-29" href="#__codelineno-2-29"></a><span class="w"> </span><span class="nt">"com.example.processor_tokenizer"</span><span class="p">:</span><span class="w"> </span><span class="p">[{</span> 1733</span><span id="__span-2-30"><a id="__codelineno-2-30" name="__codelineno-2-30" href="#__codelineno-2-30"></a><span class="w"> </span><span class="nt">"id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"processor_tokenizer"</span><span class="p">,</span> 1734</span><span id="__span-2-31"><a id="__codelineno-2-31" name="__codelineno-2-31" href="#__codelineno-2-31"></a><span class="w"> </span><span class="nt">"version"</span><span class="p">:</span><span class="w"> </span><span class="s2">"draft"</span><span class="p">,</span> 1735</span><span id="__span-2-32"><a id="__codelineno-2-32" name="__codelineno-2-32" href="#__codelineno-2-32"></a><span class="w"> </span><span class="nt">"spec"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://example.com/specs/payments/processor_tokenizer"</span><span class="p">,</span> 1736</span><span id="__span-2-33"><a id="__codelineno-2-33" name="__codelineno-2-33" href="#__codelineno-2-33"></a><span class="w"> </span><span class="nt">"schema"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://example.com/specs/payments/merchant_tokenizer.json"</span> 1737</span><span id="__span-2-34"><a id="__codelineno-2-34" name="__codelineno-2-34" href="#__codelineno-2-34"></a><span class="w"> </span><span class="p">}]</span> 1738</span><span id="__span-2-35"><a id="__codelineno-2-35" name="__codelineno-2-35" href="#__codelineno-2-35"></a><span class="w"> </span><span class="p">}</span> 1739</span><span id="__span-2-36"><a id="__codelineno-2-36" name="__codelineno-2-36" href="#__codelineno-2-36"></a><span class="w"> </span><span class="p">},</span> 1740</span><span id="__span-2-37"><a id="__codelineno-2-37" name="__codelineno-2-37" href="#__codelineno-2-37"></a><span class="w"> </span><span class="nt">"keys"</span><span class="p">:</span><span class="w"> </span><span class="p">
1740[{</span><span class="w"> </span><span class="nt">"kid"</span><span class="p">:</span><span class="w"> </span><span class="s2">"key_2026"</span><span class="p">,</span><span class="w"> </span><span class="nt">"kty"</span><span class="p">:</span><span class="w"> </span><span class="s2">"EC"</span><span class="p">,</span><span class="w"> </span><span class="nt">"crv"</span><span class="p">:</span><span class="w"> </span><span class="s2">"P-256"</span><span class="p">,</span><span class="w"> </span><span class="nt">"x"</span><span class="p">:</span><span class="w"> </span><span class="s2">"WbbXwVYGdJoP4Xm3qCkGvBRcRvKtEfXDbWvPzpPS8LA"</span><span class="p">,</span><span class="w"> </span><span class="nt">"y"</span><span class="p">:</span><span class="w"> </span><span class="s2">"sP4jHHxYqC89HBo8TjrtVOAGHfJDflYxw7MFMxuFMPY"</span><span class="p">,</span><span class="w"> </span><span class="nt">"alg"</span><span class="p">:</span><span class="w"> </span><span class="s2">"ES256"</span><span class="w"> </span><span class="p">}]</span> 1741</span><span id="__span-2-38"><a id="__codelineno-2-38" name="__codelineno-2-38" href="#__codelineno-2-38"></a><span class="p">}</span> 1742</span></code></pre></div> 1743<h2 id="namespace-governance">Namespace Governance<a class="headerlink" href="#namespace-governance" title="Permanent link">¶</a></h2> 1744<p>UCP uses reverse-domain naming to embed governance authority directly into its 1745reverse-domain identifiers. This eliminates the need for a central registry â 1746domain owners control their own namespace.</p> 1747<div class="language-text highlight"><pre><span></span><code><span id="__span-3-1"><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a>{reverse-domain}.{service}.{capability} 1748</span></code></pre></div> 1749<table> 1750<thead> 1751<tr> 1752<th style="text-align: left;">Name</th> 1753<th style="text-align: left;">Authority</th> 1754<th style="text-align: left;">Who governs</th> 1755</tr> 1756</thead> 1757<tbody> 1758<tr> 1759<td style="text-align: left;"><code>dev.ucp.shopping.checkout</code></td> 1760<td style="text-align: left;">ucp.dev</td> 1761<td style="text-align: left;">UCP governing body</td> 1762</tr> 1763<tr> 1764<td style="text-align: left;"><code>dev.shopify.catalog</code></td> 1765<td style="text-align: left;">shopify.dev</td> 1766<td style="text-align: left;">Shopify</td> 1767</tr> 1768<tr> 1769<td style="text-align: left;"><code>com.example.payments.installments</code></td> 1770<td style="text-align: left;">example.com</td> 1771<td style="text-align: left;">example.com</td> 1772</tr> 1773</tbody> 1774</table> 1775<p>Reverse-domain names are used both as collision-safe <strong>identifiers</strong> (keys and 1776references) and by <strong>entities</strong> â capabilities, services, and payment 1777handlers â that declare a <code>schema</code> URL. An entity's <code>schema</code> URL must 1778originate from its namespace authority domain. This guarantees 1779<strong>provenance</strong> â that the reverse-domain name is controlled by the domain 1780owner â not that the entity is trustworthy; whether to trust or support it 1781remains the client's decision.</p> 1782<p>Platforms <strong>MUST</strong> validate this binding for declared <code>schema</code> URLs and <strong>MUST</strong> 1783reject entities that fail it. Identifiers carry no fetched URL, and the <code>spec</code> 1784(documentation) URL is not authority-bound (any <code>https</code> origin). See 1785<a href="/latest/specification/overview/#authority-binding">Authority Binding</a> for the 1786normative algorithm.</p> 1787<p>The <code>dev.ucp.*</code> namespace is reserved exclusively for capabilities governed by 1788the UCP Tech Council responsible for the capability's domain. Any vendor can 1789define and publish capabilities under their own domain â <code>org.acme.*</code> â without 1790UCP maintainer approval. Vendor capabilities follow the same extension model, 1791meaning they can extend UCP base capabilities (e.g., <code>org.acme.loyalty</code> 1792extending <code>dev.ucp.shopping.checkout</code>) or define entirely new ones. Because 1793negotiation is always opt-in, vendor capabilities only activate when both parties 1794declare them, keeping the protocol decentralized by design.</p> 1795<h2 id="payment-architecture">Payment Architecture<a class="headerlink" href="#payment-architecture" title="Permanent link">¶</a></h2> 1796<p>UCP decouples payment instrument acceptance from payment processing to solve 1797the N-to-N complexity problem between platforms, businesses, and payment 1798processors.</p>
1799<h3 id="the-trust-triangle">The Trust Triangle<a class="headerlink" href="#the-trust-triangle" title="Permanent link">¶</a></h3> 1800<p>In this section, "Payment Credential Provider" refers to the CP and/or PSP 1801roles defined above; depending on the payment handler, they may be the same 1802entity or distinct.</p> 1803<p>The payment model is built on three bilateral trust relationships:</p> 1804<ol> 1805<li><strong>Business â Payment Credential Provider</strong> â A pre-existing legal and 1806 technical relationship; the business holds API keys and a contract with 1807 the payment credential provider.</li> 1808<li><strong>Platform â Payment Credential Provider</strong> â The platform interacts with 1809 the payment credential provider's interface (e.g., an iframe or API) to 1810 tokenize data, but is not the "owner" of the funds.</li> 1811<li><strong>Platform â Business</strong> â The platform passes the result (a token or 1812 mandate) to the business to finalize the order.</li> 1813</ol> 1814<p>Credentials flow <strong>platform â business</strong> only; businesses <strong>MUST NOT</strong> echo 1815credentials back in responses.</p> 1816<h3 id="payment-handlers">Payment Handlers<a class="headerlink" href="#payment-handlers" title="Permanent link">¶</a></h3> 1817<p>Payment Handlers are <strong>specifications</strong>, not entities. They define how a 1818particular payment instrument is acquired and processed. The distinction:</p> 1819<ul> 1820<li><strong>Credential Provider (CP) / PSP</strong> â The participant(s) that issue tokens 1821 and process payments. Depending on the handler, these may be the same 1822 entity or separate ones (e.g., Google Pay tokenizes; the business's PSP 1823 processes).</li> 1824<li><strong>Payment Handler</strong> â The specification that defines the protocol 1825 (e.g., <code>com.google.pay</code>, <code>dev.shopify.shop_pay</code>)</li> 1826</ul> 1827<p>The 3-step payment lifecycle:</p> 1828<ol> 1829<li><strong>Negotiation</strong> â The business advertises available payment handlers in its 1830 profile and checkout response based on contents and negotiated 1831 properties of the checkout.</li> 1832<li><strong>Acquisition</strong> â The platform executes the handler's logic to acquire a 1833 payment instrument (token or encrypted payload) directly from the CP.</li> 1834<li><strong>Completion</strong> â The platform submits the instrument to the business, which 1835 charges funds via its PSP integration.</li> 1836</ol> 1837<h2 id="security-authentication">Security & Authentication<a class="headerlink" href="#security-authentication" title="Permanent link">¶</a></h2> 1838<h3 id="identity-key-discovery">Identity & Key Discovery<a class="headerlink" href="#identity-key-discovery" title="Permanent link">¶</a></h3> 1839<p>UCP profiles serve a dual purpose: declaring capabilities <strong>and</strong> publishing 1840signing keys. Both parties resolve keys from the same profile document used for 1841capability negotiation, eliminating a separate key management step.</p> 1842<p>Key lookup:</p> 1843<ol> 1844<li>Obtain the signer's profile URL (from <code>UCP-Agent</code> header or 1845 <code>/.well-known/ucp</code>).</li> 1846<li>Fetch and cache the profile.</li> 1847<li>Match the <code>keyid</code> from <code>Signature-Input</code> to a <code>kid</code> in <code>keys[]</code>.</li> 1848<li>Verify the signature using the corresponding public key.</li> 1849</ol> 1850<h3 id="authentication-mechanisms">Authentication Mechanisms<a class="headerlink" href="#authentication-mechanisms" title="Permanent link">¶</a></h3> 1851<p>UCP supports multiple authentication models:</p> 1852<table> 1853<thead> 1854<tr> 1855<th style="text-align: left;">Mechanism</th> 1856<th style="text-align: left;">Onboarding</th> 1857<th style="text-align: left;">Notes</th> 1858</tr> 1859</thead> 1860<tbody> 1861<tr> 1862<td style="text-align: left;"><strong>HTTP Message Signatures</strong> (<a href="https://www.rfc-editor.org/rfc/rfc9421">RFC 9421</a>)</td> 1863<td style="text-align: left;">Permissionless</td> 1864<td style="text-align: left;">Keys discovered from profile; no prior exchange needed</td> 1865</tr> 1866<tr> 1867<td style="text-align: left;"><strong>OAuth 2.0</strong></td> 1868<td style="text-align: left;">Pre-established</td> 1869<td style="text-align: left;">Client credentials or authorization code</td> 1870</tr> 1871<tr> 1872<td style="text-align: left;"><strong>API Keys</strong></td> 1873<td style="text-align: left;">Pre-established</td> 1874<td style="text-align: left;">Pre-shared secrets exchanged out-of-band</td> 1875</tr> 1876<tr> 1877<td style="text-align: left;"><strong>mTLS</strong></td> 1878<td style="text-align: left;">Pre-established</td> 1879<td style="text-align: left;">Mutual TLS with client certificates</td> 1880</tr> 1881</tbody> 1882</table> 1883<p>HTTP Message Signatures are the only mechanism that enables permissionless 1884interaction â public keys are discovered from each party's profile, with no 1885prior credential exchange.</p> 1886<p>When a business emits updates via webhook, its identity is asserted the same 1887way: the request carries a <code>UCP-Agent</code> header pointing to the business's 1888profile, and the platform verifies the signature against the signing keys 1889published there.</p> 1890<h3 id="identity-linking">Identity Linking<a class="headerlink" href="#identity-linking" title="Permanent link">¶</a></h3> 1891<p>The <code>dev.ucp.common.identity_linking</code> capability enables a platform to obtain 1892OAuth 2.0 authorization to act on behalf of a user at a business â unlocking 1893loyalty benefits, personalized offers, wishlists, and authenticated checkouts. 1894Businesses publish their OAuth 2.0 server metadata at 1895<code>/.well-known/oauth-authorization-server</code>.</p> 1896<h2 id="versioning">Versioning<a class="headerlink" href="#versioning" title="Permanent link">¶</a></h2> 1897<p>UCP uses date-based version identifiers (<code>YYYY-MM-DD</code>). A UCP release <code>D</code> is a 1898snapshot of the core protocol â its services and transport bindings, 1899capabilities, extensions, and shared schemas â published together as one 1900internally compatible set. A profile's <code>ucp.version</code> selects that snapshot, and 1901the match is exact: an older date is available only when the Business 1902advertises it in <code>supported_versions</code>. A published snapshot can gain approved 1903backwards-compatible additions over time; copies fetched earlier remain valid.</p> 1904<p>Every UCP-defined service, capability, and extension in release <code>D</code> declares 1905version <code>D</code>. Third-party extensions and payment handlers are versioned by their 1906authors, independently of UCP releases.</p> 1907<p>See <a href="/latest/specification/overview/#protocol-version">Protocol Version</a> for version 1908discovery, <a href="/latest/specification/overview/#component-versioning-and-release-snapshots">Component Versioning and Release Snapshots</a> 1909for the normative release contract, and <a href="../../versioning/">Versioning</a> for the 1910release-branch and backport process.</p> 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 </article> 1927 </div> 1928 1929 1930
1930<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
1930 1931
1932<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
1932 1933 </div> 1934 1935 <button type="button" class="md-top md-icon" data-md-component="top" hidden> 1936 1937 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> 1938 Back to top 1939</button> 1940 1941 </main> 1942 1943 <footer class="md-footer"> 1944 1945 1946 1947 <nav class="md-footer__inner md-grid" aria-label="Footer" > 1948 1949 1950 <a href="../.." class="md-footer__link md-footer__link--prev" aria-label="Previous: Home"> 1951 <div class="md-footer__button md-icon"> 1952 1953 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> 1954 </div> 1955 <div class="md-footer__title"> 1956 <span class="md-footer__direction"> 1957 Previous 1958 </span> 1959 <div class="md-ellipsis"> 1960 Home 1961 </div> 1962 </div> 1963 </a> 1964 1965 1966 1967 <a href="../ucp-and-ap2/" class="md-footer__link md-footer__link--next" aria-label="Next: UCP and AP2"> 1968 <div class="md-footer__title"> 1969 <span class="md-footer__direction"> 1970 Next 1971 </span> 1972 <div class="md-ellipsis"> 1973 UCP and AP2 1974 </div> 1975 </div> 1976 <div class="md-footer__button md-icon"> 1977 1978 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11z"/></svg> 1979 </div> 1980 </a> 1981 1982 </nav> 1983 1984 1985 <div class="md-footer-meta md-typeset"> 1986 <div class="md-footer-meta__inner md-grid"> 1987 <div class="md-copyright"> 1988 1989 <div class="md-copyright__highlight"> 1990 Copyright 2026 UCP Authors. Licensed under the <a href="https://github.com/Universal-Commerce-Protocol/ucp/blob/main/LICENSE" >Apache License, Version 2.0</a>. 1991 </div> 1992 1993 1994 Made with 1995 <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener"> 1996 Material for MkDocs 1997 </a> 1998 1999</div> 2000 2001 </div> 2002 </div> 2003</footer> 2004 2005 </div> 2006 <div class="md-dialog" data-md-component="dialog"> 2007 <div class="md-dialog__inner md-typeset"></div> 2008 </div> 2009 2010 2011 <div class="md-consent" data-md-component="consent" id="__consent" hidden> 2012 <div class="md-consent__overlay"></div> 2013 <aside class="md-consent__inner"> 2014 <form class="md-consent__form md-grid md-typeset" name="consent"> 2015 2016 2017 2018 2019 2020 2021<h4>Cookie consent</h4> 2022<p>We use cookies to recognize your repeated visits and preferences, as well as to measure the effectiveness of our documentation and whether users find what they're searching for. With your consent, you're helping us to make our documentation better.</p> 2023<input class="md-toggle" type="checkbox" id="__settings" > 2024<div class="md-consent__settings"> 2025 <ul class="task-list"> 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 <li class="task-list-item"> 2036 <label class="task-list-control"> 2037 <input type="checkbox" name="analytics" checked> 2038 <span class="task-list-indicator"></span> 2039 Google Analytics 2040 </label> 2041 </li> 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 <li class="task-list-item"> 2054 <label class="task-list-control"> 2055 <input type="checkbox" name="github" checked> 2056 <span class="task-list-indicator"></span> 2057 GitHub 2058 </label> 2059 </li> 2060 2061 2062 2063 2064 </ul> 2065</div> 2066<div class="md-consent__controls"> 2067 2068 2069 <button class="md-button md-button--primary">Accept</button> 2070 2071 2072 2073 2074 2075 2076 2077 <label class="md-button" for="__settings">Manage settings</label> 2078 2079 2080</div> 2081 </form> 2082 </aside> 2083 </div> 2084
2084<script>var consent=__md_get("__consent");if(consent)for(var input of document.forms.consent.elements)input.name&&(input.checked=consent[input.name]||!1);else"file:"!==location.protocol&&setTimeout((function(){document.querySelector("[data-md-component=consent]").hidden=!1}),250);var form=document.forms.consent;for(var action of["submit","reset"])form.addEventListener(action,(function(e){if(e.preventDefault(),"reset"===e.type)for(var n of document.forms.consent.elements)n.name&&(n.checked=!1);__md_set("__consent",Object.fromEntries(Array.from(new FormData(form).keys()).map((function(e){return[e,!0]})))),location.hash="",location.reload()}))</script>
2084 2085 2086 2087 2088 2089
2089<script id="__config" type="application/json">{"annotate": null, "base": "../..", "features": ["announce.dismiss", "content.code.annotate", "content.code.copy", "content.code.select", "content.tabs.link", "content.tooltips", "navigation.footer", "navigation.top", "navigation.tracking", "navigation.tabs", "navigation.tabs.sticky", "toc.follow"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script>
2089 2090 2091 2092
2092<script src="../../assets/javascripts/bundle.d7400e89.min.js"></script>
2092 2093 2094 2095 </body> 2096</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.