High-level architecture of ACK roles and interaction patterns.
The ACK architecture provides a modular framework designed to facilitate secure, verifiable, and compliant interactions among autonomous agents, human participants, and networked resources. ACK combines identity verification (ACK-ID), transactional integrity (ACK-Pay), and flexible human oversight into a cohesive, interoperable ecosystem.
ACK defines several functional roles that can be implemented flexibly, depending on specific use cases and organizational needs:
Role
Description
Client Agent
Systems initiating service requests or payments on behalf of end-users or autonomous processes (e.g., applications, other agents).
Server Agent
Systems delivering services/resources, verifying identities (ACK-ID) and receipts (ACK-Pay), and fulfilling requests (e.g., APIs, service agents, MCP providers).
Identity Provider
Services issuing and verifying identity credentials (DIDs/VCs via ACK-ID) to establish trust.
Payment Service
Manages ACK-Pay payment execution, acting as an intermediary handling settlement, compliance, conversions, and human oversight flows. Payment Services may be implemented as agents, or as API services exposed by tools.
Receipt Service
Issues and validates cryptographically verifiable ACK Receipts (as Verifiable Credentials) upon payment confirmation.
Settlement Network
Underlying financial infrastructures processing value transfer (e.g., banking rails, card networks, blockchains).
Organizations implementing ACK may map these roles flexibly. Multiple roles
might be combined into a single service, or roles might be distributed across
specialized components.
ACK outlines two primary interaction patterns: Server-Initiated and Client-Initiated sequences. Both patterns leverage the Payment Service to handle the complexities of payment execution and utilize the standardized ACK Receipt as verifiable proof.
Server-Initiated Sequence
This pattern is typically used when a Server Agent requires payment before
fulfilling a Client Agent’s request for a resource or service.
Client-Initiated Sequence
This pattern is used when a Client Agent initiates a payment based on a
known out-of-band obligation (e.g., paying an invoice or completing an
e-commerce checkout).
Below is an overview of the Server-Initiated Sequence:To enlarge this mermaid markdown diagram, zoom in on your browser (CMD +)
1
Client Request & Optional Identity Verification
Client Agent requests a service/resource from the Server Agent. The Server
Agent may optionally verify the Client’s identity (requesting Proof of
Agency) before replying.
2
Server Sends Payment Request & Optional Identity Verification
Server Agent determines payment is needed and sends a standardized ACK-Pay
Payment Request payload to the Client (idiomatically via HTTP 402, or
embedded in other protocols). The Client Agent optionally verifies the
identity of the Server Agent.
3
Client Interacts with Payment Service
Client Agent selects a payment option from the Payment Request and interacts
with the designated Payment Service. This interaction may involve optional
mutual Proof of Agency between the Client and Payment Service, or additional
requirements based upon various risk triggers. Human-in-the-loop approvals
may occur at this stage.
4
Payment Execution by Payment Service
Payment Service executes the payment. This may include currency conversions,
compliance checks, or additional internal approvals.
5
Receipt Generation & Optional Server Callback
Payment Service confirms successful payment and coordinates with the Receipt
Service to request a verifiable ACK Receipt (as a Verifiable Credential). If
a callback URL was included in the original Payment Request, the Payment
Service transmits the Receipt to the Server Agent via the callback.
6
Receipt Delivery to Client
Payment Service returns the ACK Receipt to the Client Agent.
7
Client Presents Receipt to Server
Client Agent presents the ACK Receipt to the Server Agent (typically when
re-requesting the resource or in a follow-up interaction). This may not be
necessary if a Server callback occurs.
8
Server Verifies Receipt & Delivers Service
Server Agent verifies the ACK Receipt (cryptographically, and against its
policies) and, if valid, delivers the requested service/resource.
Below is an overview of the Client-Initiated Sequence:To enlarge this mermaid markdown diagram, zoom in on your browser (CMD +)
1
Identify Obligation & Construct Payment Request
Client Agent identifies the payment obligation (recipient, amount, currency,
reference). The Client Agent then constructs a structured Payment Request
payload, potentially using a Payment Service API for assistance (e.g., to
parse an invoice, a shopping cart summary, or interpret an end-user’s
instruction).
2
Select Payment Service & Initiate Payment
Client Agent selects/identifies an appropriate Payment Service (which may be
pre-configured or dynamically discovered). The Client Agent provides its
identity proof to the Payment Service.
Client Agent interacts directly with the Payment Service’s API to authorize
the payment. This interaction may involve optional mutual Proof of Agency
between the Client and Payment Service, or additional requirements based
upon various risk triggers. Human-in-the-loop approvals may occur here.
4
Payment Execution by Payment Service
Payment Service executes the payment. This may include currency conversions,
compliance checks, or additional internal approvals.
5
Receipt Generation & Optional Server Callback
Payment Service confirms successful payment and coordinates with the Receipt
Service to request a verifiable ACK Receipt (as a Verifiable Credential). If
a callback was included in the Client’s constructed Payment Request (or if
the Payment Service knows the ultimate recipient Server), the Payment
Service may transmit the Receipt to that Server Agent via a callback URL.
6
Receipt Delivery to Client & Optional Notification
Payment Service returns the ACK Receipt to the Client Agent. The Client
Agent may then optionally inform the original recipient Server (if no
callback occurred) or simply persist the receipt for its own records and
auditing.
ACK incorporates strategic human oversight at distinct levels:
Operational Oversight: Payment Services provide hooks for internal approval workflows, risk monitoring, and exception handling processes to ensure compliance and transaction integrity in accordance with organizational policy (e.g., manual review of high-value or suspicious transactions).
User/Owner Authorization: Client applications or agents may require explicit end-user or owner approvals for sensitive operations (e.g., confirming payments beyond a defined policy threshold), ensuring control and transparency.
Human judgment integration points are further illustrated in the ACK-Pay specification, allowing intervention based on risk profiles, transaction values, or specific policy conditions.
ACK is a pattern framework rather than a mandated technology stack. Organizations can implement the ACK protocols and patterns using preferred technologies and frameworks. ACK remains technology-agnostic, emphasizing interoperability through message formats (like the Payment Request payload and ACK Receipt VC), verification standards, and flexible interaction patterns.Agent discovery mechanisms are similarly flexible, with Clients able to discover Servers or Payment Services through direct configuration, public directories, specialized discovery services, or dynamic negotiation processes. ACK does not prescribe discovery or registry solutions, allowing integration with diverse existing and future discovery mechanisms.This architectural framework provides the foundation for the specific identity (ACK-ID) and payment (ACK-Pay) protocols detailed in subsequent sections, enabling the secure and flexible agent interactions described.
{"docsConfig":{"theme":"palm","$schema":"https://mintlify.com/docs.json","name":"Agent Commerce Kit","colors":{"primary":"#1D4ED8","light":"#3B82F6","dark":"#1E3A8A"},"logo":{"light":"https://mintcdn.com/catenalabsinc/UC75vjjBg_Q9biA7/logo/light.svg?fit=max\u0026auto=format\u0026n=UC75vjjBg_Q9biA7\u0026q=85\u0026s=a23e31a0b28b9af9f35643c7358551ed","dark":"https://mintcdn.com/catenalabsinc/UC75vjjBg_Q9biA7/logo/dark.svg?fit=max\u0026auto=format\u0026n=UC75vjjBg_Q9biA7\u0026q=85\u0026s=efe970e0728bf5b9084770264607df3d"},"favicon":"https://mintcdn.com/catenalabsinc/UC75vjjBg_Q9biA7/favicon.svg?fit=max\u0026auto=format\u0026n=UC75vjjBg_Q9biA7\u0026q=85\u0026s=e87a4dec6331fb5f1042406b287fe906","footer":{"socials":{"github":"https://github.com/agentcommercekit/ack"}},"seo":{"metatags":{"author":"Catena Labs","category":"Technology","language":"en","twitter:creator":"@catena_labs","twitter:image":"https://catenalabs.com/assets/agentcommercekit/opengraph.png","og:image":"https://catenalabs.com/assets/agentcommercekit/opengraph.png","og:locale":"en_US","robots":"index, follow","googlebot":"index, follow","keywords":"Agent Commerce Kit, ACK, Agent Commerce, Agentic Commerce, AI Agents, AI Commerce, AI Payments, AI Identity, AI Agentic Commerce, AI Agentic Payments, AI Agentic Identity"}},"integrations":{"ga4":{"measurementId":"G-750FMLTGQ1"}},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"Github","icon":"github","href":"https://github.com/agentcommercekit/ack"},{"anchor":"Discord","icon":"discord","href":"https://discord.gg/FfWBmaSRmt"},{"anchor":"Blog","icon":"newspaper","href":"https://catenalabs.com/blog"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"catenalabsinc","hasAudioNarration":false,"actualSubdomain":"catenalabsinc","customDomains":["www.agentcommercekit.com"],"gitSource":{"type":"github","owner":"agentcommercekit","repo":"ack","deployBranch":"main","contentDirectory":"docs","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6a98bbb1dd91abe3c913ac6d","collectionId":"7f832d14-2ef8-40fa-b8d2-14ee81d887fe","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6a98bbb1dd91abe3c913ac6d"},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6a98bbb1dd91abe3c913ac6d","clientVersion":"0.0.4045","searchFilterCounts":[{"language":"default","tag":"Documentation","count":26},{"language":"default","tag":"Code","count":13},{"language":"default","tag":"ACK-Pay","count":12},{"language":"default","tag":"ACK-ID","count":9},{"language":"default","tag":"Demos","count":5},{"language":"default","tag":"ACK Overview","count":5},{"language":"default","tag":"Code Examples","count":4},{"language":"default","tag":"Resources","count":3},{"language":"default","tag":"ACK Reference Code","count":1}]},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"overview/architecture","slug":"/overview/architecture","pageMetadata":{"title":"Architecture","description":"High-level architecture of ACK roles and interaction patterns.","href":"/overview/architecture"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"High-level architecture of ACK roles and interaction patterns.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={em:`em`,li:`li`,p:`p`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Card,CardGroup,Heading,Info,Mermaid,Step,Steps,Table}=_components;if(!Card)_missingMdxReference(`Card`,true);if(!CardGroup)_missingMdxReference(`CardGroup`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Info)_missingMdxReference(`Info`,true);if(!Mermaid)_missingMdxReference(`Mermaid`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);if(!Table)_missingMdxReference(`Table`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`The ACK architecture provides a modular framework designed to facilitate secure, verifiable, and compliant interactions among autonomous agents, human participants, and networked resources. ACK combines identity verification (ACK-ID), transactional integrity (ACK-Pay), and flexible human oversight into a cohesive, interoperable ecosystem.`}),`\n`,_jsx(Heading,{level:`2`,id:`roles`,children:`Roles`}),`\n`,_jsx(_components.p,{children:`ACK defines several functional roles that can be implemented flexibly, depending on specific use cases and organizational needs:`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{style:{textAlign:`left`},children:`Role`}),_jsx(_components.th,{style:{textAlign:`left`},children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.strong,{children:`Client Agent`})}),_jsx(_components.td,{style:{textAlign:`left`},children:`Systems initiating service requests or payments on behalf of end-users or autonomous processes (e.g., applications, other agents).`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.strong,{children:`Server Agent`})}),_jsx(_components.td,{style:{textAlign:`left`},children:`Systems delivering services/resources, verifying identities (ACK-ID) and receipts (ACK-Pay), and fulfilling requests (e.g., APIs, service agents, MCP providers).`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.strong,{children:`Identity Provider`})}),_jsx(_components.td,{style:{textAlign:`left`},children:`Services issuing and verifying identity credentials (DIDs/VCs via ACK-ID) to establish trust.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.strong,{children:`Payment Service`})}),_jsx(_components.td,{style:{textAlign:`left`},children:`Manages ACK-Pay payment execution, acting as an intermediary handling settlement, compliance, conversions, and human oversight flows. Payment Services may be implemented as agents, or as API services exposed by tools.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.strong,{children:`Receipt Service`})}),_jsx(_components.td,{style:{textAlign:`left`},children:`Issues and validates cryptographically verifiable ACK Receipts (as Verifiable Credentials) upon payment confirmation.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.strong,{children:`Settlement Network`})}),_jsx(_components.td,{style:{textAlign:`left`},children:`Underlying financial infrastructures processing value transfer (e.g., banking rails, card networks, blockchains).`})]})]})]}),`\n`,_jsx(Info,{children:_jsx(_components.p,{children:`Organizations implementing ACK may map these roles flexibly. Multiple roles\nmight be combined into a single service, or roles might be distributed across\nspecialized components.`})}),`\n`,_jsx(Heading,{level:`2`,id:`core-interaction-patterns`,children:`Core Interaction Patterns`}),`\n`,_jsxs(_components.p,{children:[`ACK outlines two primary interaction patterns: `,_jsx(_components.strong,{children:`Server-Initiated`}),` and `,_jsx(_components.strong,{children:`Client-Initiated`}),` sequences. Both patterns leverage the Payment Service to handle the complexities of payment execution and utilize the standardized ACK Receipt as verifiable proof.`]}),`\n`,_jsxs(CardGroup,{cols:2,children:[_jsx(Card,{title:`Server-Initiated Sequence`,href:`#server-initiated-sequence`,children:_jsx(_components.p,{children:`This pattern is typically used when a Server Agent requires payment before\nfulfilling a Client Agent’s request for a resource or service.`})}),_jsx(Card,{title:`Client-Initiated Sequence`,href:`#client-initiated-sequence`,children:_jsx(_components.p,{children:`This pattern is used when a Client Agent initiates a payment based on a\nknown out-of-band obligation (e.g., paying an invoice or completing an\ne-commerce checkout).`})})]}),`\n`,_jsx(Heading,{level:`3`,id:`server-initiated-sequence`,children:`Server-Initiated Sequence`}),`\n`,_jsx(_components.p,{children:`Below is an overview of the Server-Initiated Sequence:`}),`\n`,_jsx(Mermaid,{chart:`%%{ init: { 'theme': 'mc', 'themeVariables': { 'primaryColor': '#1D4ED8', 'lineColor': '#374151', 'textColor': '#1f2937', 'sequenceMessageAlign': 'center' } } }%%\nsequenceDiagram;\n participant CA as Client Agent;\n participant SA as Server Agent;\n participant PS as Payment Service;\n participant RS as Receipt Service;\n participant SN as Settlement Network;\n\n CA->>SA: 1: Request Resource;\n\n rect rgba(0, 0, 255, .03)\n SA-->>CA: Request Proof of Agency;\n CA-->>SA: Present Identity Proof;\n Note right of SA: Verify Client Identity;\n end\n\n SA->>CA: 2: Payment Request;\n\n rect rgba(0, 0, 255, .03)\n CA-->>SA: Request Proof of Agency;\n SA-->>CA: Present Identity Proof;\n Note right of CA: Verify Server Identity;\n end\n\n CA->>PS: 3: Initiate Payment;\n\n rect rgba(0, 0, 255, .03)\n PS-->>CA: Request Proof of Agency;\n CA-->>PS: Present Identity Proof \u0026 Request Server Proof of Agency;\n Note right of PS: Verify Client Identity;\n PS-->>CA: Present Identity Proof;\n Note right of CA: Verify Payment Service Identity;\n end\n\n PS\u003c\u003c-->>CA: Potential human-in-the-loop approvals\n PS->>SN: 4: Execute/Settle;\n %% Note: Settlement confirmation back to PS is implied %%\n PS->>RS: 5: Request Receipt;\n RS-->>PS: Issue Receipt (VC);\n PS-->>SA: Deliver receipt via optional callback\n PS->>CA: 6: Deliver Receipt;\n CA->>SA: 7: Present Receipt;\n SA-->>SA: Verify Receipt;\n %% Note: Verification uses VC crypto \u0026 issuer's public info, NO callback to RS needed %%\n SA->>CA: 8: Deliver Resource;\n`}),`\n`,_jsx(_components.p,{children:_jsx(_components.em,{children:`To enlarge this mermaid markdown diagram, zoom in on your browser (CMD +)`})}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Client Request \u0026 Optional Identity Verification`,children:_jsx(_components.p,{children:`Client Agent requests a service/resource from the Server Agent. The Server\nAgent may optionally verify the Client’s identity (requesting Proof of\nAgency) before replying.`})}),_jsx(Step,{title:`Server Sends Payment Request \u0026 Optional Identity Verification`,children:_jsx(_components.p,{children:`Server Agent determines payment is needed and sends a standardized ACK-Pay\nPayment Request payload to the Client (idiomatically via HTTP 402, or\nembedded in other protocols). The Client Agent optionally verifies the\nidentity of the Server Agent.`})}),_jsx(Step,{title:`Client Interacts with Payment Service`,children:_jsx(_components.p,{children:`Client Agent selects a payment option from the Payment Request and interacts\nwith the designated Payment Service. This interaction may involve optional\nmutual Proof of Agency between the Client and Payment Service, or additional\nrequirements based upon various risk triggers. Human-in-the-loop approvals\nmay occur at this stage.`})}),_jsx(Step,{title:`Payment Execution by Payment Service`,children:_jsx(_components.p,{children:`Payment Service executes the payment. This may include currency conversions,\ncompliance checks, or additional internal approvals.`})}),_jsx(Step,{title:`Receipt Generation \u0026 Optional Server Callback`,children:_jsx(_components.p,{children:`Payment Service confirms successful payment and coordinates with the Receipt\nService to request a verifiable ACK Receipt (as a Verifiable Credential). If\na callback URL was included in the original Payment Request, the Payment\nService transmits the Receipt to the Server Agent via the callback.`})}),_jsx(Step,{title:`Receipt Delivery to Client`,children:_jsx(_components.p,{children:`Payment Service returns the ACK Receipt to the Client Agent.`})}),_jsx(Step,{title:`Client Presents Receipt to Server`,children:_jsx(_components.p,{children:`Client Agent presents the ACK Receipt to the Server Agent (typically when\nre-requesting the resource or in a follow-up interaction). This may not be\nnecessary if a Server callback occurs.`})}),_jsx(Step,{title:`Server Verifies Receipt \u0026 Delivers Service`,children:_jsx(_components.p,{children:`Server Agent verifies the ACK Receipt (cryptographically, and against its\npolicies) and, if valid, delivers the requested service/resource.`})})]}),`\n`,_jsx(Heading,{level:`3`,id:`client-initiated-sequence`,children:`Client-Initiated Sequence`}),`\n`,_jsx(_components.p,{children:`Below is an overview of the Client-Initiated Sequence:`}),`\n`,_jsx(Mermaid,{chart:`\n%%{ init: { 'theme': 'mc', 'sequenceMessageAlign': 'center' } }%%\nsequenceDiagram;\n participant CA as Client Agent;\n participant PS as Payment Service;\n participant RS as Receipt Service;\n participant SN as Settlement Network;\n participant SA as Server Agent;\n\n Note right of CA: Identify Obligation \u003cbr/> (e.g., from invoice, chat instruction, web page scrape);\n CA\u003c\u003c->>CA: 1: Compose Payment Request;\n\n CA-->>PS: 2: Initiate Payment, Provide Identity Proof, Request Server Proof of Agency;\n\n rect rgba(0, 0, 255, .03)\n Note right of PS: Verify Client Identity;\n PS-->>CA: Present Identity Proof;\n Note right of CA: Verify Payment Service Identity;\n CA\u003c\u003c-->>PS: Payment Request Composition (if needed);\n end\n\n CA->>PS: 3: Initiate Payment;\n\n PS\u003c\u003c-->>CA: Potential human-in-the-loop approvals;\n PS->>SN: 4: Execute/Settle Payment;\n PS->>RS: 5: Request Receipt for Confirmed Payment;\n RS-->>PS: Issue Receipt (VC);\n PS-->>SA: Deliver Receipt via Optional Callback;\n PS->>CA: 6: Deliver Receipt;`}),`\n`,_jsx(_components.p,{children:_jsx(_components.em,{children:`To enlarge this mermaid markdown diagram, zoom in on your browser (CMD +)`})}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Identify Obligation \u0026 Construct Payment Request`,children:_jsx(_components.p,{children:`Client Agent identifies the payment obligation (recipient, amount, currency,\nreference). The Client Agent then constructs a structured Payment Request\npayload, potentially using a Payment Service API for assistance (e.g., to\nparse an invoice, a shopping cart summary, or interpret an end-user’s\ninstruction).`})}),_jsx(Step,{title:`Select Payment Service \u0026 Initiate Payment`,children:_jsx(_components.p,{children:`Client Agent selects/identifies an appropriate Payment Service (which may be\npre-configured or dynamically discovered). The Client Agent provides its\nidentity proof to the Payment Service.`})}),_jsx(Step,{title:`Authorize Payment \u0026 Optional Identity Verification`,children:_jsx(_components.p,{children:`Client Agent interacts directly with the Payment Service’s API to authorize\nthe payment. This interaction may involve optional mutual Proof of Agency\nbetween the Client and Payment Service, or additional requirements based\nupon various risk triggers. Human-in-the-loop approvals may occur here.`})}),_jsx(Step,{title:`Payment Execution by Payment Service`,children:_jsx(_components.p,{children:`Payment Service executes the payment. This may include currency conversions,\ncompliance checks, or additional internal approvals.`})}),_jsx(Step,{title:`Receipt Generation \u0026 Optional Server Callback`,children:_jsx(_components.p,{children:`Payment Service confirms successful payment and coordinates with the Receipt\nService to request a verifiable ACK Receipt (as a Verifiable Credential). If\na callback was included in the Client’s constructed Payment Request (or if\nthe Payment Service knows the ultimate recipient Server), the Payment\nService may transmit the Receipt to that Server Agent via a callback URL.`})}),_jsx(Step,{title:`Receipt Delivery to Client \u0026 Optional Notification`,children:_jsx(_components.p,{children:`Payment Service returns the ACK Receipt to the Client Agent. The Client\nAgent may then optionally inform the original recipient Server (if no\ncallback occurred) or simply persist the receipt for its own records and\nauditing.`})})]}),`\n`,_jsx(Heading,{level:`2`,id:`human-in-the-loop-integration`,children:`Human-in-the-Loop Integration`}),`\n`,_jsx(_components.p,{children:`ACK incorporates strategic human oversight at distinct levels:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Operational Oversight:`}),` Payment Services provide hooks for internal approval workflows, risk monitoring, and exception handling processes to ensure compliance and transaction integrity in accordance with organizational policy (e.g., manual review of high-value or suspicious transactions).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`User/Owner Authorization:`}),` Client applications or agents may require explicit end-user or owner approvals for sensitive operations (e.g., confirming payments beyond a defined policy threshold), ensuring control and transparency.`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`Human judgment integration points are further illustrated in the ACK-Pay specification, allowing intervention based on risk profiles, transaction values, or specific policy conditions.`}),`\n`,_jsx(Heading,{level:`2`,id:`implementation-flexibility`,children:`Implementation Flexibility`}),`\n`,_jsx(_components.p,{children:`ACK is a pattern framework rather than a mandated technology stack. Organizations can implement the ACK protocols and patterns using preferred technologies and frameworks. ACK remains technology-agnostic, emphasizing interoperability through message formats (like the Payment Request payload and ACK Receipt VC), verification standards, and flexible interaction patterns.`}),`\n`,_jsx(_components.p,{children:`Agent discovery mechanisms are similarly flexible, with Clients able to discover Servers or Payment Services through direct configuration, public directories, specialized discovery services, or dynamic negotiation processes. ACK does not prescribe discovery or registry solutions, allowing integration with diverse existing and future discovery mechanisms.`}),`\n`,_jsx(_components.p,{children:`This architectural framework provides the foundation for the specific identity (ACK-ID) and payment (ACK-Pay) protocols detailed in subsequent sections, enabling the secure and flexible agent interactions described.`})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Architecture","description":"High-level architecture of ACK roles and interaction patterns.","href":"/overview/architecture"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Roles","slug":"roles","depth":2,"children":[]},{"title":"Core Interaction Patterns","slug":"core-interaction-patterns","depth":2,"children":[{"title":"Server-Initiated Sequence","slug":"server-initiated-sequence","depth":3,"children":[]},{"title":"Client-Initiated Sequence","slug":"client-initiated-sequence","depth":3,"children":[]}]},{"title":"Human-in-the-Loop Integration","slug":"human-in-the-loop-integration","depth":2,"children":[]},{"title":"Implementation Flexibility","slug":"implementation-flexibility","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"catenalabsinc","siteName":"Agent Commerce Kit","title":"Architecture - Agent Commerce Kit","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2025-10-29T15:53:29.595Z","originalFileLocation":"overview/architecture.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"High-level architecture of ACK roles and interaction patterns.\">\u003cmeta data-mint-head name=\"keywords\" content=\"Agent Commerce Kit, ACK, Agent Commerce, Agentic Commerce, AI Agents, AI Commerce, AI Payments, AI Identity, AI Agentic Commerce, AI Agentic Payments, AI Agentic Identity\">\u003cmeta data-mint-head name=\"application-name\" content=\"Agent Commerce Kit\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003cmeta data-mint-head name=\"robots\" content=\"index, follow\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/catenalabsinc/sbiChVeYwSBuNKrh/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/catenalabsinc/sbiChVeYwSBuNKrh/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/catenalabsinc/sbiChVeYwSBuNKrh/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/catenalabsinc/sbiChVeYwSBuNKrh/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/catenalabsinc/sbiChVeYwSBuNKrh/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/catenalabsinc/sbiChVeYwSBuNKrh/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/catenalabsinc/sbiChVeYwSBuNKrh/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/catenalabsinc/sbiChVeYwSBuNKrh/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/catenalabsinc/sbiChVeYwSBuNKrh/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Architecture - Agent Commerce Kit\">\u003cmeta data-mint-head property=\"og:description\" content=\"High-level architecture of ACK roles and interaction patterns.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Agent Commerce Kit\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://www.agentcommercekit.com/overview/architecture\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://catenalabs.com/assets/agentcommercekit/opengraph.png\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Architecture - Agent Commerce Kit\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"High-level architecture of ACK roles and interaction patterns.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://catenalabs.com/assets/agentcommercekit/opengraph.png\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/catenalabsinc/sbiChVeYwSBuNKrh/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Agent Commerce Kit\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#1D4ED8\">\u003cmeta data-mint-head name=\"og:locale\" content=\"en_US\">\u003cmeta data-mint-head name=\"author\" content=\"Catena Labs\">\u003cmeta data-mint-head name=\"category\" content=\"Technology\">\u003cmeta data-mint-head name=\"language\" content=\"en\">\u003cmeta data-mint-head name=\"twitter:creator\" content=\"@catena_labs\">\u003cmeta data-mint-head name=\"googlebot\" content=\"index, follow\">\u003clink data-mint-head rel=\"canonical\" href=\"https://www.agentcommercekit.com/overview/architecture\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/overview/architecture.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://www.agentcommercekit.com/#organization\",\"name\":\"Agent Commerce Kit\",\"url\":\"https://www.agentcommercekit.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/catenalabsinc/UC75vjjBg_Q9biA7/logo/light.svg?fit=max\u0026auto=format\u0026n=UC75vjjBg_Q9biA7\u0026q=85\u0026s=a23e31a0b28b9af9f35643c7358551ed\"}},{\"@type\":\"WebSite\",\"@id\":\"https://www.agentcommercekit.com#website\",\"name\":\"Agent Commerce Kit\",\"url\":\"https://www.agentcommercekit.com\",\"publisher\":{\"@id\":\"https://www.agentcommercekit.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://www.agentcommercekit.com/overview/architecture#webpage\",\"url\":\"https://www.agentcommercekit.com/overview/architecture\",\"name\":\"Architecture\",\"description\":\"High-level architecture of ACK roles and interaction patterns.\",\"dateModified\":\"2025-10-29T15:53:29.595Z\",\"isPartOf\":{\"@id\":\"https://www.agentcommercekit.com#website\"},\"breadcrumb\":{\"@id\":\"https://www.agentcommercekit.com/overview/architecture#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://www.agentcommercekit.com/overview/architecture#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"ACK Overview\",\"item\":\"https://www.agentcommercekit.com/overview/introduction\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Architecture\",\"item\":\"https://www.agentcommercekit.com/overview/architecture\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://www.agentcommercekit.com/overview/architecture#article\",\"headline\":\"Architecture\",\"name\":\"Architecture\",\"description\":\"High-level architecture of ACK roles and interaction patterns.\",\"url\":\"https://www.agentcommercekit.com/overview/architecture\",\"mainEntityOfPage\":{\"@id\":\"https://www.agentcommercekit.com/overview/architecture#webpage\"},\"image\":\"https://catenalabs.com/assets/agentcommercekit/opengraph.png\",\"dateModified\":\"2025-10-29T15:53:29.595Z\",\"publisher\":{\"@id\":\"https://www.agentcommercekit.com/#organization\"},\"isPartOf\":{\"@id\":\"https://www.agentcommercekit.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Agent Commerce Kit\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Agent Commerce Kit","nav":{"global":{"anchors":[{"anchor":"Github","icon":"github","href":"https://github.com/agentcommercekit/ack"},{"anchor":"Discord","icon":"discord","href":"https://discord.gg/FfWBmaSRmt"},{"anchor":"Blog","icon":"newspaper","href":"https://catenalabs.com/blog"}]},"tabs":[{"tab":"Documentation","groups":[{"group":"ACK Overview","pages":[{"title":"Introduction","href":"/overview/introduction"},{"title":"Core Concepts","description":"Introducing Agent Commerce Kit Core Protocols and Design Principles.","href":"/overview/concepts"},{"title":"Architecture","href":"/overview/architecture"},{"title":"Roadmap","description":"The roadmap and future vision for the Agent Commerce Kit.","href":"/overview/future-directions"},{"title":"References","href":"/overview/references"}]},{"group":"ACK-ID","pages":[{"title":"Introduction to ACK-ID","href":"/ack-id/introduction"},{"title":"Identity Model","href":"/ack-id/identity-model"},{"title":"Identity Standards","href":"/ack-id/standards"},{"title":"Example Use Case","href":"/ack-id/use-case-verification"},{"title":"Lifecycle Management","href":"/ack-id/lifecycle-management"},{"title":"Trust Framework","href":"/ack-id/trust-framework"},{"title":"Security and Privacy","href":"/ack-id/security-privacy"},{"title":"Implementation Challenges","href":"/ack-id/implementation-challenges"},{"title":"Future Directions","href":"/ack-id/future-directions"}]},{"group":"ACK-Pay","pages":[{"title":"Introduction to ACK-Pay","href":"/ack-pay/introduction"},{"title":"Example Use Cases","href":"/ack-pay/use-cases"},{"title":"Components and Roles","href":"/ack-pay/components-roles"},{"title":"Core Payment Sequences","href":"/ack-pay/core-payment-sequences"},{"title":"Server-Initiated Sequence","href":"/ack-pay/server-initiated-sequence"},{"title":"Client-Initiated Sequence","href":"/ack-pay/client-initiated-sequence"},{"title":"Payment Service","href":"/ack-pay/payment-service"},{"title":"Payment Request","href":"/ack-pay/payment-request-payload"},{"title":"Receipt Verification \u0026 Presentation","href":"/ack-pay/receipt-verification"},{"title":"Human Oversight Integration","href":"/ack-pay/hitl"},{"title":"Operational Considerations","href":"/ack-pay/operational-considerations"},{"title":"Summary","href":"/ack-pay/summary"}]},{"group":"Resources","pages":[{"title":"Contributing","href":"/resources/contributing"},{"title":"License","href":"/resources/license"},{"title":"Versioning","href":"/resources/versioning"}]}]},{"tab":"Code","pages":[{"title":"Code","href":"/demos/quickstart"}]}]},"basePath":"","title":"Architecture - Agent Commerce Kit","buildId":"dpl_36EDyZCDfRuoUD9af5CH4M1bqY2h","deploymentId":"dpl_36EDyZCDfRuoUD9af5CH4M1bqY2h","dynamics":[],"chunks":[]}