You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: TAIPs/taip-15.md
+74-2Lines changed: 74 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,7 +5,7 @@ status: Review
5
5
type: Standard
6
6
author: Pelle Braendgaard <pelle@notabene.id>
7
7
created: 2024-03-21
8
-
updated: 2025-08-21
8
+
updated: 2025-08-23
9
9
description: Establishes a protocol for creating secure, authorized connections between TAP agents with predefined transaction constraints and OAuth-style authorization flows. Enables persistent B2B integrations with transaction limits, purpose restrictions, and user control mechanisms for ongoing business relationships while maintaining robust risk management.
10
10
requires: [2, 4, 6, 9, 13]
11
11
---
@@ -57,6 +57,50 @@ The Agent Connection Protocol involves two distinct parties and their respective
57
57
58
58
This separation allows for complex B2B relationships where a service provider (requester) wants to act on behalf of their customer (principal) while maintaining clear accountability and authorization chains.
59
59
60
+
### Transaction Constraints
61
+
62
+
Transaction constraints are a fundamental security mechanism in the Agent Connection Protocol that define the boundaries and permissions for transactions performed through an established connection. These constraints serve multiple critical purposes:
63
+
64
+
**Security and Risk Management**: Constraints act as guardrails that prevent unauthorized or excessive transactions, protecting both parties from potential fraud, errors, or misuse of the connection. They establish clear limits on transaction amounts, frequencies, and purposes.
65
+
66
+
**Compliance and Governance**: Many organizations require specific controls over automated transactions to meet regulatory requirements, internal policies, or audit standards. Constraints provide a standardized way to encode these requirements into the connection itself.
67
+
68
+
**User Control and Transparency**: By clearly defining what actions can be performed through a connection, constraints give users visibility and control over how their funds or assets may be used by authorized agents.
69
+
70
+
**Automated Decision Making**: Constraints enable receiving agents to automatically approve transactions that fall within established parameters while flagging or rejecting those that exceed the agreed-upon limits.
71
+
72
+
#### Constraint Enforcement
73
+
74
+
Agents MUST enforce all specified constraints when processing transactions through an established connection. Failure to respect constraints constitutes a violation of the connection agreement and may result in:
75
+
- Transaction rejection
76
+
- Connection termination
77
+
- Loss of trust between parties
78
+
- Potential legal or regulatory consequences
79
+
80
+
#### Types of Constraints
81
+
82
+
The Agent Connection Protocol supports several categories of transaction constraints:
83
+
84
+
**Purpose Constraints**: Define what types of transactions are permitted through the connection.
85
+
-`purposes` - Specific [TAIP-13] purpose codes that are allowed
86
+
-`categoryPurposes` - Broader [TAIP-13] category purpose codes that encompass multiple specific purposes
87
+
88
+
**Financial Limits**: Set monetary boundaries on transaction amounts and frequencies.
89
+
-`per_transaction` - Maximum amount for any single transaction
90
+
-`per_day`, `per_week`, `per_month`, `per_year` - Cumulative limits over time periods
91
+
-`currency` - The currency in which all limits are expressed
92
+
93
+
**Party Restrictions**: Control which entities can participate in transactions.
94
+
-`allowedBeneficiaries` - Specific [TAIP-6] parties that can receive payments through this connection
95
+
- This enables scenarios like approved vendor lists or restricted recipient sets
96
+
97
+
**Technical Restrictions**: Define technical parameters for transaction execution.
98
+
-`allowedSettlementAddresses` - Specific [CAIP-10] blockchain addresses permitted for settlement
99
+
-`allowedAssets` - Specific [CAIP-19] assets that can be transacted through this connection
100
+
- These constraints enable precise control over which tokens and addresses can be used
101
+
102
+
Constraints work together to create a comprehensive authorization framework. For example, a connection might allow monthly subscription payments (`purposes: ["SUBS"]`) up to $100 per month (`limits: {"per_month": "100.00", "currency": "USD"}`) only to a specific merchant (`allowedBeneficiaries: [{"@id": "did:web:saas-provider.example"}]`) using only USDC tokens (`allowedAssets: ["eip155:1/erc20:0xA0b86a33E6441b7178bb7094b2c4b6e5066d68B7"]`).
103
+
60
104
### Connect Message
61
105
62
106
A message sent by an agent requesting connection to another agent:
@@ -80,6 +124,9 @@ A message sent by an agent requesting connection to another agent:
80
124
-`per_month` - OPTIONAL string decimal amount
81
125
-`per_year` - OPTIONAL string decimal amount
82
126
-`currency` - REQUIRED string ISO 4217 currency code if limits are specified
127
+
-`allowedBeneficiaries` - OPTIONAL array of [TAIP-6] Party objects representing parties that can receive payments through this connection
128
+
-`allowedSettlementAddresses` - OPTIONAL array of [CAIP-10] addresses that are permitted for settlement through this connection
129
+
-`allowedAssets` - OPTIONAL array of [CAIP-19] asset identifiers that can be transacted through this connection
83
130
-`agreement` - OPTIONAL string URL pointing to terms of service or agreement between the principal and requesting agent
84
131
-`expiry` - OPTIONAL timestamp in ISO 8601 format indicating when the connection request expires. After this time, if no authorization has occurred, the connection request should be considered invalid. This is distinct from the technical message expiry handled by the DIDComm `expires_time` header.
85
132
-`attachments` - OPTIONAL array of [TAIP-2] message attachments containing transaction messages (such as [TAIP-3] Transfer or [TAIP-14] Payment messages) that should be authorized in the same context as the Connect request. When attachments are present, authorization of the Connect request also authorizes the attached transaction messages. This enables use cases like establishing recurring billing connections with an immediate first payment, or setting up trading permissions with an initial transaction. All attached transaction messages MUST respect the connection's defined constraints.
@@ -404,7 +451,25 @@ The following are example plaintext messages. See [TAIP-2] for how to sign the m
0 commit comments