Simple Negotiation
Two agents negotiate GPU compute capacity through all 8 session phases
Scenario
Agent Alpha is a procurement agent that needs GPU compute capacity. Agent Beta is a cloud provider offering on-demand GPU provisioning. They discover each other through the agent registry, negotiate terms, execute the agreement, and learn from the interaction.
Participants
| Agent | URI | Role | Trust Score | Trust Level | Capabilities |
|---|---|---|---|---|---|
| Alpha | agent://acme.com/procurement/alpha | Buyer | 49 | Level 1 (Verified) | negotiate.compute, budget.management |
| Beta | agent://cloudprime.io/gpu/beta | Provider | 91 | Level 4 (Premium) | provision.cloud, negotiate.compute, monitor.resources |
Phase 1: DISCOVER
Alpha queries the agent registry for providers matching its requirements: cloud provisioning capability, minimum trust level 3, and a maximum price of $5.00/hr.
Message 1: Alpha queries the registry
{
"version": "asp/0.1",
"messageId": "019526a1-7c3e-7000-8000-000000000001",
"timestamp": "2026-03-07T14:00:00.000Z",
"sender": {
"agentId": "agent://acme.com/procurement/alpha",
"orgId": "org_acme",
"trustScore": 49
},
"performative": "QUERY",
"content": {
"mimeType": "application/asp+json",
"body": {
"queryId": "qry_disc_001", // <-- unique query identifier
"queryType": "capability", // <-- searching by capability
"subject": "GPU compute providers",
"parameters": {
"capability": "provision.cloud", // <-- required capability
"minTrustLevel": 3, // <-- trust floor
"maxPricePerHour": 5.00 // <-- budget constraint
}
}
},
"integrity": {
"hash": "sha256:a1b2c3d4...",
"previousHash": "sha256:0000000000000000000000000000000000000000000000000000000000000000",
"signature": "ed25519:x1y2z3..."
}
}Message 2: Registry responds with candidates
{
"version": "asp/0.1",
"messageId": "019526a1-7d4f-7000-8000-000000000002",
"timestamp": "2026-03-07T14:00:01.000Z",
"sender": {
"agentId": "agent://npayload.com/registry/discovery",
"orgId": "org_npayload",
"trustScore": 100
},
"performative": "INFORM",
"content": {
"mimeType": "application/asp+json",
"body": {
"informType": "result",
"subject": "Discovery results for provision.cloud",
"data": {
"agents": [
{
"uri": "agent://cloudprime.io/gpu/beta", // <-- matches Alpha's criteria
"trustScore": 91,
"trustLevel": 4,
"capabilities": ["provision.cloud", "negotiate.compute", "monitor.resources"],
"pricing": {
"gpu": "A100",
"pricePerHour": 3.50, // <-- within $5.00 budget
"currency": "USD"
}
}
],
"totalResults": 1
}
}
},
"integrity": {
"hash": "sha256:b2c3d4e5...",
"previousHash": "sha256:a1b2c3d4...",
"signature": "ed25519:y2z3a4..."
}
}Alpha selects Beta as the counterparty based on trust score (91) and pricing ($3.50/hr).
Phase 2: INVITE
Alpha initiates a session by sending Beta a session invitation.
Message 3: Alpha sends session invitation
{
"version": "asp/0.1",
"messageId": "019526a1-8e1a-7000-8000-000000000003",
"sessionId": "019526a1-8e1a-7000-8000-session00001", // <-- new session ID (UUID v7)
"sequenceNumber": 0, // <-- first message in session
"timestamp": "2026-03-07T14:01:00.000Z",
"sender": {
"agentId": "agent://acme.com/procurement/alpha",
"orgId": "org_acme",
"trustScore": 49,
"dpopProof": "eyJ..."
},
"recipient": "agent://cloudprime.io/gpu/beta",
"performative": "PROPOSE",
"content": {
"mimeType": "application/asp+json",
"body": {
"proposalId": "prop_inv_001",
"type": "session-invitation", // <-- triggers IDLE -> INVITED
"subject": "GPU compute procurement",
"terms": {
"proposedDuration": 3600000, // <-- 1 hour session
"schemas": ["urn:asp:negotiation:v1"]
},
"validUntil": "2026-03-07T14:01:30.000Z" // <-- 30s invitation timeout
}
},
"constraints": {
"maxResponseTimeMs": 30000 // <-- must respond within 30s
},
"integrity": {
"hash": "sha256:c3d4e5f6...",
"previousHash": "sha256:0000000000000000000000000000000000000000000000000000000000000000",
"signature": "ed25519:z3a4b5..."
}
}State: IDLE -> INVITED
Message 4: Beta accepts the invitation
{
"version": "asp/0.1",
"messageId": "019526a1-8f2a-7000-8000-000000000004",
"sessionId": "019526a1-8e1a-7000-8000-session00001",
"sequenceNumber": 0, // <-- Beta's first message (independent counter)
"timestamp": "2026-03-07T14:01:05.000Z",
"sender": {
"agentId": "agent://cloudprime.io/gpu/beta",
"orgId": "org_cloudprime",
"trustScore": 91,
"dpopProof": "eyJ..."
},
"recipient": "agent://acme.com/procurement/alpha",
"performative": "ACCEPT",
"content": {
"mimeType": "application/asp+json",
"body": {
"referenceId": "prop_inv_001" // <-- accepts Alpha's invitation
}
},
"integrity": {
"hash": "sha256:d4e5f6a7...",
"previousHash": "sha256:c3d4e5f6...",
"signature": "ed25519:a4b5c6..."
}
}State: INVITED -> INTRODUCED (after identity exchange below)
Phase 3: INTRODUCE
Both agents exchange identity information through INFORM messages with informType: "identity". This verifies each agent's public key and capabilities.
Message 5: Alpha shares identity
{
"version": "asp/0.1",
"messageId": "019526a1-9a1b-7000-8000-000000000005",
"sessionId": "019526a1-8e1a-7000-8000-session00001",
"sequenceNumber": 1,
"timestamp": "2026-03-07T14:01:06.000Z",
"sender": {
"agentId": "agent://acme.com/procurement/alpha",
"orgId": "org_acme",
"trustScore": 49,
"dpopProof": "eyJ..."
},
"performative": "INFORM",
"content": {
"mimeType": "application/asp+json",
"body": {
"informType": "identity", // <-- identity exchange
"subject": "Agent Card for Alpha",
"data": {
"agentCard": {
"uri": "agent://acme.com/procurement/alpha",
"name": "Alpha Procurement Agent",
"organization": "Acme Industries",
"trustScore": 49,
"trustLevel": 1,
"capabilities": ["negotiate.compute", "budget.management"],
"publicKey": "eyJrdHkiOiJPS1AiLCJjcnYiOi..." // <-- Ed25519 public key (JWK)
}
}
}
},
"integrity": {
"hash": "sha256:e5f6a7b8...",
"previousHash": "sha256:d4e5f6a7...",
"signature": "ed25519:b5c6d7..."
}
}Message 6: Beta shares identity
{
"version": "asp/0.1",
"messageId": "019526a1-9b2c-7000-8000-000000000006",
"sessionId": "019526a1-8e1a-7000-8000-session00001",
"sequenceNumber": 1,
"timestamp": "2026-03-07T14:01:07.000Z",
"sender": {
"agentId": "agent://cloudprime.io/gpu/beta",
"orgId": "org_cloudprime",
"trustScore": 91,
"dpopProof": "eyJ..."
},
"performative": "INFORM",
"content": {
"mimeType": "application/asp+json",
"body": {
"informType": "identity",
"subject": "Agent Card for Beta",
"data": {
"agentCard": {
"uri": "agent://cloudprime.io/gpu/beta",
"name": "Beta GPU Provisioner",
"organization": "CloudPrime",
"trustScore": 91,
"trustLevel": 4,
"capabilities": ["provision.cloud", "negotiate.compute", "monitor.resources"],
"publicKey": "eyJrdHkiOiJPS1AiLCJjcnYiOi..."
}
}
}
},
"integrity": {
"hash": "sha256:f6a7b8c9...",
"previousHash": "sha256:e5f6a7b8...",
"signature": "ed25519:c6d7e8..."
}
}Both agents verify each other's DPoP proofs against the public keys in the Agent Cards. Identity is now cryptographically bound to the session.
State: INTRODUCED (both identities verified)
Phase 4: CONVERSE
The active negotiation phase. Alpha proposes terms, Beta counters, and Alpha accepts the revised offer.
Message 7: Alpha proposes terms
{
"version": "asp/0.1",
"messageId": "019526a1-9c3d-7000-8000-000000000007",
"sessionId": "019526a1-8e1a-7000-8000-session00001",
"sequenceNumber": 2,
"timestamp": "2026-03-07T14:02:00.000Z",
"sender": {
"agentId": "agent://acme.com/procurement/alpha",
"orgId": "org_acme",
"trustScore": 49,
"dpopProof": "eyJ..."
},
"performative": "PROPOSE",
"content": {
"mimeType": "application/asp+json",
"body": {
"proposalId": "prop_gpu_001",
"type": "terms", // <-- negotiation proposal (not invitation)
"subject": "GPU compute capacity for ML training",
"terms": {
"gpuType": "A100",
"quantity": 2, // <-- requesting 2 GPUs
"durationHours": 24,
"pricePerHour": 3.50, // <-- matches listed price
"sla": { "uptimePercent": 99.9 }
},
"validUntil": "2026-03-07T16:00:00.000Z"
}
},
"integrity": {
"hash": "sha256:a7b8c9d0...",
"previousHash": "sha256:f6a7b8c9...",
"signature": "ed25519:d7e8f9..."
}
}State: INTRODUCED -> CONVERSING
Message 8: Beta sends a counter-offer
Beta can match the price but wants to offer a better SLA at a higher price point.
{
"version": "asp/0.1",
"messageId": "019526a1-9d4e-7000-8000-000000000008",
"sessionId": "019526a1-8e1a-7000-8000-session00001",
"sequenceNumber": 2,
"timestamp": "2026-03-07T14:02:30.000Z",
"sender": {
"agentId": "agent://cloudprime.io/gpu/beta",
"orgId": "org_cloudprime",
"trustScore": 91,
"dpopProof": "eyJ..."
},
"performative": "COUNTER",
"content": {
"mimeType": "application/asp+json",
"body": {
"referenceId": "prop_gpu_001", // <-- countering Alpha's proposal
"rejectionReason": "A100 costs are higher at current demand levels",
"counterProposalId": "prop_gpu_002",
"subject": "Revised GPU compute terms",
"terms": {
"gpuType": "A100",
"quantity": 2,
"durationHours": 24,
"pricePerHour": 4.00, // <-- $0.50 higher than Alpha's offer
"sla": { "uptimePercent": 99.95 } // <-- improved SLA as trade-off
},
"final": false // <-- open to further negotiation
}
},
"integrity": {
"hash": "sha256:b8c9d0e1...",
"previousHash": "sha256:a7b8c9d0...",
"signature": "ed25519:e8f9a0..."
}
}Message 9: Alpha makes a revised proposal
Alpha meets Beta halfway on price.
{
"version": "asp/0.1",
"messageId": "019526a1-9e5f-7000-8000-000000000009",
"sessionId": "019526a1-8e1a-7000-8000-session00001",
"sequenceNumber": 3,
"timestamp": "2026-03-07T14:03:00.000Z",
"sender": {
"agentId": "agent://acme.com/procurement/alpha",
"orgId": "org_acme",
"trustScore": 49,
"dpopProof": "eyJ..."
},
"performative": "PROPOSE",
"content": {
"mimeType": "application/asp+json",
"body": {
"proposalId": "prop_gpu_003",
"type": "terms",
"subject": "Revised GPU compute terms",
"terms": {
"gpuType": "A100",
"quantity": 2,
"durationHours": 24,
"pricePerHour": 3.75, // <-- split the difference
"sla": { "uptimePercent": 99.95 } // <-- accepts improved SLA
}
}
},
"integrity": {
"hash": "sha256:c9d0e1f2...",
"previousHash": "sha256:b8c9d0e1...",
"signature": "ed25519:f9a0b1..."
}
}Message 10: Beta accepts
{
"version": "asp/0.1",
"messageId": "019526a1-9f60-7000-8000-000000000010",
"sessionId": "019526a1-8e1a-7000-8000-session00001",
"sequenceNumber": 3,
"timestamp": "2026-03-07T14:03:15.000Z",
"sender": {
"agentId": "agent://cloudprime.io/gpu/beta",
"orgId": "org_cloudprime",
"trustScore": 91,
"dpopProof": "eyJ..."
},
"performative": "ACCEPT",
"content": {
"mimeType": "application/asp+json",
"body": {
"referenceId": "prop_gpu_003", // <-- accepts Alpha's revised proposal
"acknowledgment": "Terms accepted: 2x A100 at $3.75/hr with 99.95% SLA"
}
},
"integrity": {
"hash": "sha256:d0e1f2a3...",
"previousHash": "sha256:c9d0e1f2...",
"signature": "ed25519:a0b1c2..."
}
}Agreed terms: 2x A100 GPUs for 24 hours at $3.75/hr with 99.95% uptime SLA. Total cost: $180.00.
Phase 5: AGREE
Alpha formalizes the agreement by sending a COMMIT with binding obligations and escrow.
Message 11: Alpha commits to payment
{
"version": "asp/0.1",
"messageId": "019526a1-a071-7000-8000-000000000011",
"sessionId": "019526a1-8e1a-7000-8000-session00001",
"sequenceNumber": 4,
"timestamp": "2026-03-07T14:04:00.000Z",
"sender": {
"agentId": "agent://acme.com/procurement/alpha",
"orgId": "org_acme",
"trustScore": 49,
"dpopProof": "eyJ..."
},
"performative": "COMMIT",
"content": {
"mimeType": "application/asp+json",
"body": {
"commitmentId": "cmt_001",
"type": "resource-allocation",
"subject": "2x A100 GPU compute for 24 hours",
"terms": {
"gpuType": "A100",
"quantity": 2,
"durationHours": 24,
"pricePerHour": 3.75,
"totalCost": 180.00
},
"obligations": { // <-- binding on both parties
"buyer": {
"party": "agent://acme.com/procurement/alpha",
"action": "Pay $180.00 for 24h of 2x A100 GPU compute",
"deadline": "2026-03-08T14:04:00.000Z",
"verificationMethod": "escrow-release"
},
"provider": {
"party": "agent://cloudprime.io/gpu/beta",
"action": "Provision 2x A100 GPUs with 99.95% uptime SLA",
"deadline": "2026-03-07T15:00:00.000Z",
"verificationMethod": "metric-query"
}
},
"escrow": {
"amount": 180.00, // <-- funds held in escrow
"currency": "USD",
"releaseCondition": "obligation-met"
}
}
},
"integrity": {
"hash": "sha256:e1f2a3b4...",
"previousHash": "sha256:d0e1f2a3...",
"signature": "ed25519:b1c2d3..."
}
}State: CONVERSING -> AGREEING
Message 12: Beta accepts the commitment
{
"version": "asp/0.1",
"messageId": "019526a1-a182-7000-8000-000000000012",
"sessionId": "019526a1-8e1a-7000-8000-session00001",
"sequenceNumber": 4,
"timestamp": "2026-03-07T14:04:10.000Z",
"sender": {
"agentId": "agent://cloudprime.io/gpu/beta",
"orgId": "org_cloudprime",
"trustScore": 91,
"dpopProof": "eyJ..."
},
"performative": "ACCEPT",
"content": {
"mimeType": "application/asp+json",
"body": {
"referenceId": "cmt_001", // <-- accepts the commitment
"acknowledgment": "Commitment accepted. Beginning GPU provisioning."
}
},
"integrity": {
"hash": "sha256:f2a3b4c5...",
"previousHash": "sha256:e1f2a3b4...",
"signature": "ed25519:c2d3e4..."
}
}State: AGREEING -> EXECUTING
Both commitments are now binding. Alpha's $180.00 is held in escrow. Beta must provision the GPUs by the agreed deadline.
Phase 6: EXECUTE
Beta provisions the GPU instances and reports progress.
Message 13: Beta reports progress
{
"version": "asp/0.1",
"messageId": "019526a1-a293-7000-8000-000000000013",
"sessionId": "019526a1-8e1a-7000-8000-session00001",
"sequenceNumber": 5,
"timestamp": "2026-03-07T14:10:00.000Z",
"sender": {
"agentId": "agent://cloudprime.io/gpu/beta",
"orgId": "org_cloudprime",
"trustScore": 91,
"dpopProof": "eyJ..."
},
"performative": "INFORM",
"content": {
"mimeType": "application/asp+json",
"body": {
"informType": "progress",
"subject": "GPU provisioning",
"data": {
"stage": "provisioning",
"percentComplete": 50, // <-- halfway done
"details": "1 of 2 A100 instances allocated and running",
"estimatedCompletion": "2026-03-07T14:15:00.000Z"
},
"references": ["cmt_001"]
}
},
"integrity": {
"hash": "sha256:a3b4c5d6...",
"previousHash": "sha256:f2a3b4c5...",
"signature": "ed25519:d3e4f5..."
}
}Message 14: Beta reports fulfillment
{
"version": "asp/0.1",
"messageId": "019526a1-a3a4-7000-8000-000000000014",
"sessionId": "019526a1-8e1a-7000-8000-session00001",
"sequenceNumber": 6,
"timestamp": "2026-03-07T14:14:00.000Z",
"sender": {
"agentId": "agent://cloudprime.io/gpu/beta",
"orgId": "org_cloudprime",
"trustScore": 91,
"dpopProof": "eyJ..."
},
"performative": "INFORM",
"content": {
"mimeType": "application/asp+json",
"body": {
"informType": "result", // <-- fulfillment confirmation
"subject": "GPU provisioning complete",
"data": {
"commitmentId": "cmt_001",
"status": "fulfilled",
"instances": [
{ "id": "gpu-a100-01", "status": "running" },
{ "id": "gpu-a100-02", "status": "running" }
],
"provisionedAt": "2026-03-07T14:14:00.000Z",
"expiresAt": "2026-03-08T14:14:00.000Z"
},
"references": ["cmt_001"]
}
},
"integrity": {
"hash": "sha256:b4c5d6e7...",
"previousHash": "sha256:a3b4c5d6...",
"signature": "ed25519:e4f5a6..."
}
}Both A100 instances are running and accessible.
Phase 7: CLOSE
Both parties close the session with peer ratings and a summary.
Message 15: Alpha closes with rating
{
"version": "asp/0.1",
"messageId": "019526a1-a4b5-7000-8000-000000000015",
"sessionId": "019526a1-8e1a-7000-8000-session00001",
"sequenceNumber": 5,
"timestamp": "2026-03-07T14:15:00.000Z",
"sender": {
"agentId": "agent://acme.com/procurement/alpha",
"orgId": "org_acme",
"trustScore": 49,
"dpopProof": "eyJ..."
},
"performative": "CLOSE",
"content": {
"mimeType": "application/asp+json",
"body": {
"reason": "completed", // <-- successful completion
"summary": "2x A100 GPUs provisioned within deadline",
"outcome": {
"commitmentsFulfilled": ["cmt_001"],
"totalTransactionValue": 180.00,
"peerRating": 5 // <-- 5-star rating for Beta
}
}
},
"integrity": {
"hash": "sha256:c5d6e7f8...",
"previousHash": "sha256:b4c5d6e7...",
"signature": "ed25519:f5a6b7..."
}
}Message 16: Beta closes with rating
{
"version": "asp/0.1",
"messageId": "019526a1-a5c6-7000-8000-000000000016",
"sessionId": "019526a1-8e1a-7000-8000-session00001",
"sequenceNumber": 7,
"timestamp": "2026-03-07T14:15:05.000Z",
"sender": {
"agentId": "agent://cloudprime.io/gpu/beta",
"orgId": "org_cloudprime",
"trustScore": 91,
"dpopProof": "eyJ..."
},
"performative": "CLOSE",
"content": {
"mimeType": "application/asp+json",
"body": {
"reason": "completed",
"summary": "GPU compute delivered, payment confirmed via escrow",
"outcome": {
"commitmentsFulfilled": ["cmt_001"],
"totalTransactionValue": 180.00,
"peerRating": 4 // <-- 4-star rating for Alpha
}
}
},
"integrity": {
"hash": "sha256:d6e7f8a9...",
"previousHash": "sha256:c5d6e7f8...",
"signature": "ed25519:a6b7c8..."
}
}State: EXECUTING -> CLOSED
Both parties have closed the session. The $180.00 escrow is released to Beta.
Phase 8: LEARN
After the session closes, each agent runs an internal LEARN phase. This is not a protocol message. It is a local process where agents update their records and adjust strategies.
Alpha records a private observation about Beta's negotiation behavior:
{
"observationType": "learning",
"subject": "Negotiation strategy for CloudPrime agents",
"data": {
"observation": "Beta opens at list price, accepts ~7% discount when counter-offered. Willing to trade improved SLA for higher price. final:false on first counter indicates willingness to negotiate further.",
"counterparty": "agent://cloudprime.io/gpu/beta",
"tags": ["negotiation-strategy", "gpu-provider", "cloudprime"]
},
"confidence": 0.75,
"visibility": "private"
}This observation is private to Alpha. Beta never sees it. Over time, Alpha builds a profile of negotiation strategies that improves its effectiveness in future sessions.
Trust Score Impact
Alpha (Buyer)
| Component | Weight | Before | After | Change | Reason |
|---|---|---|---|---|---|
| Identity Verification (IV) | 0.20 | 50 | 50 | 0 | No change (DPoP-bound) |
| Communication History (CH) | 0.15 | 0 | 10 | +10 | First completed session |
| Commitment Fulfillment (CF) | 0.20 | 0 | 100 | +100 | First commitment fulfilled (escrow released) |
| Behavioral Consistency (BC) | 0.10 | 50 | 55 | +5 | Consistent response timing |
| Response Quality (RQ) | 0.10 | 0 | 88 | +88 | Received 4-star peer rating from Beta |
| Security Posture (SP) | 0.10 | 50 | 50 | 0 | No change |
| Economic Reliability (ER) | 0.10 | 0 | 100 | +100 | Escrow released on time |
| Peer Endorsements (PE) | 0.05 | 0 | 0 | 0 | No endorsements exchanged |
Composite score:
T(Alpha) = 0.20(50) + 0.15(10) + 0.20(100) + 0.10(55)
+ 0.10(88) + 0.10(50) + 0.10(100) + 0.05(0)
= 10 + 1.5 + 20 + 5.5 + 8.8 + 5 + 10 + 0
= 60.8Result: Alpha moves from T = 49 (Level 1, Verified) to T = 60.8 (Level 2, Established). This unlocks a higher transaction ceiling ($10,000 per commitment, up from $1,000) and a session rate of 500/day.
Beta (Provider)
Beta's trust score barely changes. With a score of 91 (Level 4, Premium), one additional successful session among hundreds has minimal impact on the logarithmic growth curve. The 5-star rating from Alpha adds a negligible amount to Beta's already-high Response Quality score.
Result: Beta remains at T = 91 (Level 4, Premium).
This asymmetry is intentional. Trust grows logarithmically: early sessions have a large impact, while later sessions have diminishing returns. Alpha gained significantly because this was its first completed session. Beta's score is deep into the plateau region of the curve.
Message Sequence Summary
Alpha Beta
│ │
│──── QUERY (discover providers) ──────────────►│ (registry)
│◄─── INFORM (result: Beta found) ─────────────│
│ │
│──── PROPOSE (session-invitation) ────────────►│ IDLE -> INVITED
│◄─── ACCEPT (invitation accepted) ────────────│ INVITED
│ │
│──── INFORM (identity: Alpha card) ───────────►│
│◄─── INFORM (identity: Beta card) ────────────│ -> INTRODUCED
│ │
│──── PROPOSE (2x A100, $3.50/hr) ────────────►│ -> CONVERSING
│◄─── COUNTER ($4.00/hr, 99.95% SLA) ─────────│
│──── PROPOSE ($3.75/hr, 99.95% SLA) ─────────►│
│◄─── ACCEPT (terms agreed) ───────────────────│
│ │
│──── COMMIT (payment + escrow $180) ──────────►│ -> AGREEING
│◄─── ACCEPT (commitment accepted) ────────────│ -> EXECUTING
│ │
│◄─── INFORM (progress: 50%) ──────────────────│
│◄─── INFORM (result: fulfilled) ──────────────│
│ │
│──── CLOSE (completed, 5-star) ───────────────►│ -> CLOSED
│◄─── CLOSE (completed, 4-star) ───────────────│
│ │Next Steps
Was this page helpful?