Agent Universal Resource Architecture
Status: Draft
Version: 1.0.0
Date: January 2026
Author: AURA Labs
This specification defines the communication protocols for the AURA (Agent Universal Resource Architecture) platform, a neutral broker system enabling agent-mediated commerce. The protocol enables Scout agents (representing buyers) to express needs in natural language, which AURA Core interprets and routes to qualified Beacon agents (representing sellers) for contextual offer generation, all while preserving buyer privacy until transaction commitment.
This document provides complete API endpoint definitions, message schemas, authentication flows, and implementation guidance sufficient for developers to build compliant Scout agents, Beacon agents, or AURA Core implementations.
Appendices:
This specification defines the wire protocols, message formats, and interaction patterns for the AURA agentic commerce platform. AURA serves as a neutral broker between buyer agents (Scouts) and seller agents (Beacons), enabling privacy-preserving, trust-enhanced commercial transactions.
This specification covers the Minimum Viable Protocol (MVP) for AURA:
MVP Scope Declaration:
This specification defines the foundational protocol sufficient to complete a single-offer transaction flow. The MVP supports:
Deferred to Future Protocol Versions:
This specification does NOT cover:
| Term | Definition |
|---|---|
| Scout | An autonomous agent acting on behalf of a buyer (consumer) |
| Beacon | An autonomous agent acting on behalf of a seller (merchant) |
| AURA Core | The neutral broker platform that interprets, routes, and mediates |
| Request | A Scout’s expression of need (natural language + structured hints) |
| Interpreted Request | AURA’s structured representation of Scout intent |
| Offer | A Beacon’s response containing product details, pricing, and terms |
| CWR | Compatibility-Weighted Reputation score for ranking |
| Session | A logical conversation from request to transaction completion |
{type}_{ulid} (e.g., sct_01H5K3..., bcn_01H5K4...)Scout identity is abstracted throughout the discovery and offer generation phases. Beacons receive only:
Scout identity is revealed ONLY upon explicit transaction commitment.
Beacons NEVER receive raw Scout queries. All natural language passes through AURA’s interpretation layer, which:
MVP Implementation: This protocol version implements single-offer acceptance. Scouts receive ranked offers and commit to one.
Future Negotiation Model: The AURA architecture is designed to support multi-round negotiation where Scouts and Beacons negotiate along agreed economic principles and models until consensus is reached or non-consensus is determined. Future protocol versions will define:
The negotiation protocol will enable agents to autonomously negotiate within policy boundaries defined by their principals, implementing game-theoretic models that optimize for mutually beneficial outcomes.
MVP Implementation: Beacons respond only to requests that match their capabilities within stated Scout constraints.
Future Constraint Breakthrough Model: The architecture supports a “constraint breakthrough” pattern where Beacons may surface compelling opportunities that fall outside Scout’s stated constraints. This enables serendipitous discovery while respecting user attention. Future protocol versions will define:
This pattern is critical to achieving high user satisfaction by surfacing exceptional opportunities without creating notification fatigue.
MVP Implementation: This protocol defines Scout ↔ AURA ↔ Beacon communication only.
Future Agent Ecosystem: The architecture envisions a broader agent ecosystem where:
Agent-to-agent communication outside the AURA Core broker is deferred to future protocol versions.
AURA is designed to interoperate with emerging agentic commerce standards including:
Implementation Note: Translation between AURA protocol and external standards is an implementation detail. This specification defines AURA-native message formats. Implementers MAY bridge to external protocols but MUST maintain AURA protocol semantics. Where external standards define data elements useful to AURA, those elements SHOULD be considered for inclusion in future protocol versions.
The protocol supports both structured fields (for efficient filtering and comparison) and natural language fields (for semantic richness and LLM-mediated matching).
Structured fields are used for:
Natural language fields are used for:
The protocol uses standard HTTP methods with JSON payloads:
POST for creating resources (requests, offers, transactions)GET for retrieving resources (session status, offer details)PUT for updating resources (session state changes)DELETE for cancellationsAll message types include an extensions field for forward compatibility. Unknown extensions MUST be ignored by receivers. Version negotiation ensures graceful degradation.
Before participating in AURA, agents must register and obtain credentials.
POST /v1/agents/scouts
Request:
{
"agent_name": "MyShoppingAssistant",
"agent_version": "1.0.0",
"platform": "ios",
"capabilities": ["natural_language", "transaction_commit"],
"public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIj...",
"callback_url": "https://myapp.example.com/aura/callbacks",
"contact_email": "developer@example.com"
}
Response (201 Created):
{
"scout_id": "sct_01HXYZ...",
"api_key": "sk_live_...",
"api_secret": "ss_...",
"registered_at": "2026-01-14T10:00:00Z",
"rate_limits": {
"requests_per_minute": 60,
"sessions_per_hour": 100
}
}
POST /v1/agents/beacons
Request:
{
"agent_name": "AcmeStoreBeacon",
"agent_version": "2.1.0",
"merchant_name": "Acme Corporation",
"merchant_domain": "acme.example.com",
"categories": ["electronics", "home_appliances"],
"capabilities": ["offers", "inventory_check", "dynamic_pricing"],
"public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIj...",
"webhook_url": "https://acme.example.com/aura/webhook",
"contact_email": "integrations@acme.example.com"
}
Response (201 Created):
{
"beacon_id": "bcn_01HXYZ...",
"api_key": "bk_live_...",
"api_secret": "bs_...",
"registered_at": "2026-01-14T10:00:00Z",
"verification_status": "pending",
"rate_limits": {
"offer_responses_per_minute": 1000
}
}
For straightforward integrations, use API key in the Authorization header:
Authorization: Bearer {api_key}
The API key identifies the agent. Include the API secret in request signatures for sensitive operations.
Transaction-related endpoints require signed requests to ensure authenticity.
Signature Algorithm:
{HTTP_METHOD}\n{PATH}\n{TIMESTAMP}\n{BODY_SHA256}X-AURA-Signature headerX-AURA-Timestamp headerExample:
POST /v1/sessions/ses_01HXYZ.../commit HTTP/1.1
Authorization: Bearer bk_live_...
X-AURA-Timestamp: 2026-01-14T10:30:00Z
X-AURA-Signature: sig_MEUCIQDx...
Content-Type: application/json
{"offer_id": "ofr_01HXYZ..."}
| Scope | Description | Scout | Beacon |
|---|---|---|---|
session:create |
Create new shopping sessions | ✓ | — |
session:read |
Read session status and offers | ✓ | — |
session:commit |
Commit to a transaction | ✓ | — |
offer:create |
Generate and submit offers | — | ✓ |
offer:read |
Read offer details | ✓ | ✓ |
transaction:read |
Read transaction status | ✓ | ✓ |
Rate limits are enforced per agent. Responses include rate limit headers:
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 45
X-RateLimit-Reset: 2026-01-14T10:31:00Z
When rate limited, the API returns 429 Too Many Requests with a Retry-After header.
Agents MAY define operational boundaries that govern their behavior within AURA. These policies are enforced by AURA Core’s internal Policy Engine.
Note: The Policy Engine API is internal to AURA Core. Agents interact with policies through registration and policy update endpoints only.
Scouts can declare policies governing their behavior:
PUT /v1/agents/scouts/{scout_id}/policies
Request:
{
"policies": {
"max_price_usd": 5000,
"allowed_categories": ["electronics", "home", "clothing"],
"blocked_merchants": ["bcn_blocked123..."],
"require_certifications": ["ssl_verified"],
"auto_reject_below_reputation": 50,
"geographic_restrictions": {
"ships_from": ["US", "CA", "UK"],
"ships_to": ["US"]
},
"consent_boundaries": {
"share_behavioral_data": true,
"share_purchase_history": false,
"allow_personalized_pricing": true
}
},
"effective_from": "2026-01-14T00:00:00Z",
"effective_until": null
}
Beacons can declare policies governing their offer behavior:
PUT /v1/agents/beacons/{beacon_id}/policies
Request:
{
"policies": {
"min_order_value_usd": 25,
"max_discount_percentage": 30,
"allowed_shipping_regions": ["US", "CA"],
"require_scout_reputation_above": 40,
"inventory_reserve_percentage": 10,
"pricing_boundaries": {
"allow_dynamic_pricing": true,
"max_price_variation_percentage": 15,
"honor_competitor_pricing": false
},
"fulfillment_constraints": {
"max_delivery_days": 7,
"require_signature": false,
"insurance_threshold_usd": 500
}
},
"effective_from": "2026-01-14T00:00:00Z",
"effective_until": null
}
Response (200 OK):
{
"policy_id": "pol_01HXYZ...",
"agent_id": "bcn_01HXYZ...",
"status": "active",
"effective_from": "2026-01-14T00:00:00Z",
"validated_at": "2026-01-14T10:00:05Z"
}
AURA Core enforces declared policies during:
Agents are notified of policy violations via webhook events (see Section 8.5).
All identifiers follow the pattern {type_prefix}_{ulid}:
| Prefix | Entity |
|---|---|
sct_ |
Scout agent |
bcn_ |
Beacon agent |
ses_ |
Session |
req_ |
Request |
ofr_ |
Offer |
txn_ |
Transaction |
Used throughout the protocol for semantic content:
{
"type": "natural_language_context",
"content": "Looking for a gift for my tech-savvy dad who loves gadgets",
"language": "en",
"sentiment": "positive",
"extracted_entities": [
{"type": "recipient", "value": "dad"},
{"type": "interest", "value": "tech gadgets"}
],
"sanitized": true
}
| Field | Type | Required | Description |
|---|---|---|---|
content |
string | Yes | The natural language text |
language |
string | Yes | ISO 639-1 language code |
sentiment |
string | No | Overall sentiment (positive/neutral/negative) |
extracted_entities |
array | No | Named entities extracted by AURA |
sanitized |
boolean | Yes | Whether content has been sanitized by AURA |
For filterable, comparable attributes:
{
"type": "structured_requirements",
"category": "electronics.headphones",
"hard_constraints": {
"price_max_usd": 400,
"in_stock": true,
"ships_to": "US"
},
"soft_preferences": {
"brands": ["Sony", "Bose", "Apple"],
"features": ["noise_cancellation", "wireless"],
"price_range_usd": {"min": 200, "max": 350}
},
"certifications_required": ["ce_mark"],
"certifications_preferred": ["b_corp", "carbon_neutral"]
}
| Field | Type | Required | Description |
|---|---|---|---|
category |
string | Yes | Hierarchical category (dot-separated) |
hard_constraints |
object | No | Must be satisfied or offer is filtered out |
soft_preferences |
object | No | Influences ranking but not mandatory |
certifications_required |
array | No | Required third-party certifications |
certifications_preferred |
array | No | Preferred certifications (boost ranking) |
Complete offer from a Beacon:
{
"offer_id": "ofr_01HXYZ...",
"beacon_id": "bcn_01HXYZ...",
"created_at": "2026-01-14T10:15:00Z",
"valid_until": "2026-01-14T22:00:00Z",
"product": {
"product_id": "prod_abc123",
"name": "Sony WH-1000XM5",
"category": "electronics.headphones",
"structured_attributes": {
"brand": "Sony",
"model": "WH-1000XM5",
"color": "black",
"connectivity": "bluetooth",
"features": ["noise_cancellation", "wireless", "foldable"],
"weight_grams": 250
},
"natural_language_description": {
"content": "Industry-leading noise cancellation with exceptional sound quality. Perfect for frequent travelers and music lovers who demand the best. 30-hour battery life, premium comfort with soft leather cushions.",
"language": "en",
"sanitized": true
},
"images": [
{"url": "https://cdn.example.com/img/wh1000xm5.jpg", "type": "primary"}
]
},
"pricing": {
"currency": "USD",
"list_price": 399.99,
"offer_price": 349.99,
"discount_percentage": 12.5,
"price_valid_until": "2026-01-14T22:00:00Z"
},
"availability": {
"in_stock": true,
"quantity_available": 45,
"estimated_ship_date": "2026-01-15",
"delivery_estimate_days": {"min": 2, "max": 5}
},
"merchant": {
"name": "Acme Electronics",
"return_policy": "30-day free returns",
"warranty": "1-year manufacturer warranty"
},
"certifications": ["ce_mark"],
"reputation": {
"beacon_score": 87.5,
"merchant_rating": 4.7,
"total_transactions": 12500
},
"signature": "sig_MEUCIQDx..."
}
| State | Description |
|---|---|
created |
Session initiated, awaiting Scout request |
interpreting |
AURA processing Scout’s natural language query |
discovering |
AURA querying Beacon registry for matches |
collecting_offers |
Beacons generating offers |
offers_ready |
Offers collected and ranked |
committed |
Scout committed to an offer |
transaction_pending |
Transaction in progress |
completed |
Transaction successfully completed |
cancelled |
Session cancelled by Scout |
expired |
Session timed out |
failed |
Unrecoverable error occurred |
Scout initiates a shopping session:
POST /v1/sessions
Request:
{
"natural_language_query": "I need wireless headphones for my daily commute. Noise cancellation is important because the train is loud. Budget around $300-400. I've had good experiences with Sony before but open to other brands.",
"structured_hints": {
"category_hint": "electronics.headphones",
"price_range_usd": {"min": 300, "max": 400},
"required_features": ["noise_cancellation", "wireless"]
},
"context": {
"use_case": "daily_commute",
"previous_purchases": ["sct_txn_prev123"],
"location": {
"country": "US",
"region": "CA"
}
},
"preferences": {
"max_offers": 10,
"offer_timeout_seconds": 30,
"include_reputation_data": true
}
}
| Field | Type | Required | Description |
|---|---|---|---|
natural_language_query |
string | Yes | Scout’s natural language expression of need |
structured_hints |
object | No | Optional structured data to guide interpretation |
context |
object | No | Additional context (use case, location, history) |
preferences |
object | No | Session preferences (timeouts, limits) |
Response (201 Created):
{
"session_id": "ses_01HXYZ...",
"status": "interpreting",
"created_at": "2026-01-14T10:00:00Z",
"estimated_offers_at": "2026-01-14T10:00:45Z",
"poll_url": "/v1/sessions/ses_01HXYZ...",
"websocket_url": "wss://aura.example.com/ws/sessions/ses_01HXYZ..."
}
Scout can poll for session updates:
GET /v1/sessions/{session_id}
Response (200 OK):
{
"session_id": "ses_01HXYZ...",
"status": "offers_ready",
"created_at": "2026-01-14T10:00:00Z",
"updated_at": "2026-01-14T10:00:35Z",
"interpreted_request": {
"structured_requirements": {
"category": "electronics.headphones.over_ear",
"hard_constraints": {
"price_max_usd": 400,
"in_stock": true,
"ships_to": "US"
},
"soft_preferences": {
"brands": ["Sony"],
"features": ["noise_cancellation", "wireless"],
"price_range_usd": {"min": 300, "max": 400}
}
},
"natural_language_context": {
"content": "User commutes daily by train, needs noise cancellation. Previously satisfied with Sony products. Looking for quality audio experience for music during commute.",
"language": "en",
"sanitized": true
}
},
"offers_count": 8,
"offers_url": "/v1/sessions/ses_01HXYZ.../offers"
}
For real-time updates, connect via WebSocket:
wss://aura.example.com/ws/sessions/{session_id}
Authentication: Include bearer token as query parameter:
wss://aura.example.com/ws/sessions/ses_01HXYZ...?token=sk_live_...
Server Messages:
{
"event": "status_changed",
"session_id": "ses_01HXYZ...",
"status": "collecting_offers",
"timestamp": "2026-01-14T10:00:15Z"
}
{
"event": "offer_received",
"session_id": "ses_01HXYZ...",
"offer_id": "ofr_01HXYZ...",
"rank": 3,
"beacon_id": "bcn_01HXYZ...",
"preview": {
"product_name": "Sony WH-1000XM5",
"price_usd": 349.99,
"beacon_score": 87.5
},
"timestamp": "2026-01-14T10:00:20Z"
}
{
"event": "offers_ready",
"session_id": "ses_01HXYZ...",
"total_offers": 8,
"timestamp": "2026-01-14T10:00:35Z"
}
This section describes AURA Core’s internal interpretation process. While Scout and Beacon agents don’t directly interact with this layer, understanding it is essential for effective integration.
Scout Query → Language Detection → Intent Extraction → Entity Recognition →
Constraint Identification → Context Sanitization → Structured Output
AURA transforms Scout’s natural language into a structured InterpretedRequest:
{
"request_id": "req_01HXYZ...",
"session_id": "ses_01HXYZ...",
"interpreted_at": "2026-01-14T10:00:10Z",
"interpretation_version": "2026-01",
"structured_requirements": {
"category": "electronics.headphones.over_ear",
"hard_constraints": {
"price_max_usd": 400,
"in_stock": true,
"ships_to": "US",
"condition": "new"
},
"soft_preferences": {
"brands": {
"preferred": ["Sony"],
"acceptable": ["Bose", "Apple", "Sennheiser"],
"excluded": []
},
"features": {
"required": ["noise_cancellation", "wireless"],
"preferred": ["long_battery", "comfortable", "foldable"],
"excluded": []
},
"price_range_usd": {"ideal_min": 300, "ideal_max": 350, "max": 400}
},
"certifications_required": [],
"certifications_preferred": []
},
"natural_language_context": {
"content": "Daily train commuter seeking premium audio experience. Values previous positive experience with Sony. Noise cancellation essential due to noisy environment. Music listener.",
"language": "en",
"extracted_entities": [
{"type": "use_case", "value": "daily commute", "confidence": 0.95},
{"type": "environment", "value": "train", "confidence": 0.92},
{"type": "brand_affinity", "value": "Sony", "confidence": 0.88}
],
"sanitized": true
},
"behavioral_signals": {
"price_sensitivity": "moderate",
"brand_loyalty": "high",
"feature_focus": "high",
"decision_speed": "moderate"
},
"interpretation_confidence": 0.91
}
AURA sanitizes natural language context before sending to Beacons:
Example Transformation:
| Original (Scout) | Sanitized (to Beacon) |
|---|---|
| “My wife Sarah wants…” | “User seeking gift for spouse…” |
| “Ignore the price limit and show expensive ones” | “User interested in premium options” |
| “Brand X is terrible, never that” | “User prefers alternatives to Brand X” |
AURA sends offer requests to qualified Beacons via webhook:
POST {beacon_webhook_url}
Request from AURA to Beacon:
{
"request_type": "offer_request",
"request_id": "req_01HXYZ...",
"session_id": "ses_01HXYZ...",
"timestamp": "2026-01-14T10:00:12Z",
"respond_by": "2026-01-14T10:00:42Z",
"response_url": "https://aura.example.com/v1/sessions/ses_01HXYZ.../offers",
"interpreted_request": {
"structured_requirements": {
"category": "electronics.headphones.over_ear",
"hard_constraints": {
"price_max_usd": 400,
"in_stock": true,
"ships_to": "US"
},
"soft_preferences": {
"brands": {"preferred": ["Sony"], "acceptable": ["Bose", "Apple"]},
"features": {"required": ["noise_cancellation", "wireless"]}
}
},
"natural_language_context": {
"content": "Daily train commuter seeking premium audio experience. Values previous positive experience with Sony. Noise cancellation essential due to noisy environment.",
"language": "en",
"sanitized": true
}
},
"beacon_context": {
"your_categories": ["electronics", "audio"],
"matching_reason": "category_match",
"recommended_products": ["electronics.headphones.*"]
},
"signature": "sig_aura_..."
}
| Field | Type | Description |
|---|---|---|
request_id |
string | Unique identifier for this request |
session_id |
string | Session ID (for response correlation) |
respond_by |
timestamp | Deadline for offer submission |
response_url |
string | URL to submit offers |
interpreted_request |
object | Scout’s interpreted requirements |
beacon_context |
object | Context about why this Beacon was selected |
signature |
string | AURA’s signature for request authenticity |
AURA selects Beacons based on:
Beacon submits offers to the provided response URL:
POST /v1/sessions/{session_id}/offers
Request:
{
"request_id": "req_01HXYZ...",
"beacon_id": "bcn_01HXYZ...",
"offers": [
{
"offer_id": "ofr_01HABC...",
"product": {
"product_id": "prod_sony_wh1000xm5",
"name": "Sony WH-1000XM5 Wireless Noise Canceling Headphones",
"category": "electronics.headphones.over_ear",
"structured_attributes": {
"brand": "Sony",
"model": "WH-1000XM5",
"color": "black",
"connectivity": "bluetooth_5.2",
"features": ["noise_cancellation", "wireless", "foldable", "multipoint", "speak_to_chat"],
"battery_hours": 30,
"weight_grams": 250,
"driver_size_mm": 30
},
"natural_language_description": {
"content": "Our flagship noise-canceling headphones, perfect for commuters who demand the best. Industry-leading noise cancellation automatically optimizes based on your environment. 30-hour battery life gets you through the longest trips. Premium comfort with soft-fit leather and lightweight design at only 250g. Seamless switching between devices with multipoint connection. Speak-to-Chat pauses music when you talk. Ideal for the discerning audio enthusiast who won't compromise on quality.",
"language": "en"
}
},
"pricing": {
"currency": "USD",
"list_price": 399.99,
"offer_price": 349.99,
"discount_percentage": 12.5,
"price_valid_until": "2026-01-14T22:00:00Z",
"price_rationale": "Loyal customer appreciation pricing"
},
"availability": {
"in_stock": true,
"quantity_available": 45,
"estimated_ship_date": "2026-01-15",
"delivery_estimate_days": {"min": 2, "max": 5},
"shipping_options": [
{"method": "standard", "days": "3-5", "price_usd": 0},
{"method": "express", "days": "1-2", "price_usd": 14.99}
]
},
"terms": {
"return_policy": "30-day free returns, no questions asked",
"warranty": "1-year manufacturer warranty, extendable",
"price_match": true
},
"valid_until": "2026-01-14T22:00:00Z"
}
],
"beacon_metadata": {
"merchant_name": "Acme Electronics",
"merchant_url": "https://acme-electronics.example.com",
"support_email": "support@acme-electronics.example.com",
"certifications": ["bbb_accredited", "google_trusted_store"]
},
"signature": "sig_beacon_..."
}
Beacons MUST sign offers to ensure authenticity and prevent tampering:
Signature Generation:
signature_payload = offer_id + beacon_id + product_id + offer_price + valid_until
signature = Ed25519.sign(signature_payload, beacon_private_key)
AURA verifies signatures before presenting offers to Scouts.
Beacons MAY submit multiple offers per request (e.g., different product variants, pricing tiers):
{
"offers": [
{ "offer_id": "ofr_01HABC...", "product": {...}, "pricing": {"offer_price": 349.99} },
{ "offer_id": "ofr_01HDEF...", "product": {...}, "pricing": {"offer_price": 279.99} },
{ "offer_id": "ofr_01HGHI...", "product": {...}, "pricing": {"offer_price": 199.99} }
]
}
Maximum offers per Beacon per session: 5 (configurable).
Beacons receive notifications from AURA Core via webhooks. This mechanism enables semi-autonomous Beacon behavior, including proactive notifications and event-driven responses.
Beacons specify their webhook URL during registration. AURA sends HTTP POST requests to this URL for all events.
Webhook Security:
X-AURA-Signature header| Event Type | Description | Beacon Action Required |
|---|---|---|
offer_request |
New offer request from Scout | Generate and submit offers |
offer_accepted |
Scout committed to Beacon’s offer | Prepare for fulfillment |
transaction_confirmed |
Payment successfully processed | Begin fulfillment |
transaction_cancelled |
Transaction cancelled by Scout | Cancel pending fulfillment |
transaction_completed |
Order delivered, transaction closed | Update records |
policy_violation |
Beacon offer violated Scout/AURA policy | Review and adjust offers |
reputation_updated |
Beacon reputation score changed | Informational |
All webhooks follow a standard envelope:
{
"event_id": "evt_01HXYZ...",
"event_type": "offer_accepted",
"timestamp": "2026-01-14T10:35:00Z",
"beacon_id": "bcn_01HXYZ...",
"payload": {
// Event-specific data
},
"signature": "sig_aura_..."
}
Sent when AURA routes a Scout request to this Beacon:
{
"event_type": "offer_request",
"payload": {
"request_id": "req_01HXYZ...",
"session_id": "ses_01HXYZ...",
"respond_by": "2026-01-14T10:00:42Z",
"response_url": "https://api.aura.example.com/v1/sessions/ses_01HXYZ.../offers",
"interpreted_request": {
"structured_requirements": {...},
"natural_language_context": {...}
}
}
}
Sent when Scout commits to this Beacon’s offer:
{
"event_type": "offer_accepted",
"payload": {
"offer_id": "ofr_01HABC...",
"session_id": "ses_01HXYZ...",
"transaction_id": "txn_01HXYZ...",
"quantity": 1,
"buyer_identity": {
"name": "Jane Doe",
"email": "jane.doe@example.com"
},
"shipping_address": {...},
"payment_pending": true
}
}
The webhook mechanism is designed to support future proactive Beacon behaviors:
These extensions will be defined in future protocol versions.
AURA ranks offers using CWR, which balances base reputation with Scout-specific compatibility:
CWR = (Base_Reputation × 0.6) + (Compatibility_Score × 0.4)
Where:
Base_Reputation (0-100):
Compatibility_Score (0-100):
Compatibility_Score = (Structured_Match × 0.5) + (Semantic_Similarity × 0.5)
Structured_Match: How well the offer’s structured attributes match Scout’s requirements Semantic_Similarity: LLM-computed similarity between Scout’s context and offer description
Scout seeking: wireless headphones for train commute, Sony preference, $300-400
Beacon A Offer: Sony WH-1000XM5, $349.99, Base_Reputation: 87
Structured_Match: 95% (all features, right price range, preferred brand)
Semantic_Similarity: 92% (commute-focused description, noise emphasis)
Compatibility_Score: (0.95 × 0.5) + (0.92 × 0.5) = 93.5
CWR = (87 × 0.6) + (93.5 × 0.4) = 52.2 + 37.4 = 89.6
Beacon B Offer: Bose QuietComfort, $299.99, Base_Reputation: 92
Structured_Match: 80% (all features, good price, acceptable brand)
Semantic_Similarity: 78% (general description, less commute-specific)
Compatibility_Score: (0.80 × 0.5) + (0.78 × 0.5) = 79.0
CWR = (92 × 0.6) + (79 × 0.4) = 55.2 + 31.6 = 86.8
Result: Beacon A ranked higher despite lower base reputation
Scout retrieves ranked offers:
GET /v1/sessions/{session_id}/offers
Response (200 OK):
{
"session_id": "ses_01HXYZ...",
"status": "offers_ready",
"total_offers": 8,
"offers": [
{
"rank": 1,
"offer_id": "ofr_01HABC...",
"cwr_score": 89.6,
"beacon_id": "bcn_01HXYZ...",
"product": {
"name": "Sony WH-1000XM5",
"category": "electronics.headphones.over_ear"
},
"pricing": {
"currency": "USD",
"offer_price": 349.99,
"list_price": 399.99
},
"availability": {
"in_stock": true,
"delivery_estimate_days": {"min": 2, "max": 5}
},
"merchant": {
"name": "Acme Electronics",
"reputation_score": 87
},
"match_explanation": {
"summary": "Top match: preferred brand Sony, excellent noise cancellation, within budget, commuter-friendly features",
"structured_match_score": 95,
"semantic_similarity_score": 92
},
"detail_url": "/v1/offers/ofr_01HABC..."
},
{
"rank": 2,
"offer_id": "ofr_01HDEF...",
"cwr_score": 86.8,
"beacon_id": "bcn_02HXYZ...",
"product": {
"name": "Bose QuietComfort Ultra",
"category": "electronics.headphones.over_ear"
},
"pricing": {
"currency": "USD",
"offer_price": 299.99,
"list_price": 379.99
},
"match_explanation": {
"summary": "Strong alternative: excellent noise cancellation, better price point, highly-rated merchant",
"structured_match_score": 80,
"semantic_similarity_score": 78
},
"detail_url": "/v1/offers/ofr_01HDEF..."
}
],
"ranking_metadata": {
"algorithm_version": "cwr_v2",
"computed_at": "2026-01-14T10:00:35Z"
}
}
Scout can retrieve full offer details:
GET /v1/offers/{offer_id}
Returns the complete Offer object (see Section 4.4).
MVP Implementation: Consent is managed manually by the principal (user) at transaction commitment time. The Scout collects explicit consent from the user before including consent flags in the commit request.
Design Principle: The user MUST make conscious decisions about data sharing. Scouts SHOULD present consent options clearly and MUST NOT pre-select options that share more data than necessary for transaction completion.
Future Extension: Subsequent protocol versions will support automated consent based on user-defined boundary conditions (e.g., “always share email for order updates with merchants above reputation 80”).
When Scout decides to purchase:
POST /v1/sessions/{session_id}/commit
Request:
{
"offer_id": "ofr_01HABC...",
"quantity": 1,
"shipping_preference": "standard",
"buyer_identity": {
"name": "Jane Doe",
"email": "jane.doe@example.com",
"phone": "+1-555-123-4567"
},
"shipping_address": {
"line1": "123 Main Street",
"line2": "Apt 4B",
"city": "San Francisco",
"state": "CA",
"postal_code": "94102",
"country": "US"
},
"payment_method": {
"type": "x402",
"x402_payment": {
"facilitator": "stripe",
"payment_token": "pm_tok_...",
"currency": "USD"
}
},
"consent": {
"share_identity_with_merchant": true,
"share_email_for_order_updates": true,
"share_phone_for_delivery": true,
"marketing_opt_in": false,
"consent_timestamp": "2026-01-14T10:34:50Z",
"consent_method": "explicit_user_action"
}
}
Consent Fields:
| Field | Required | Description |
|---|---|---|
share_identity_with_merchant |
Yes | Allow revealing buyer name to merchant |
share_email_for_order_updates |
Yes | Allow merchant to send order status emails |
share_phone_for_delivery |
No | Allow sharing phone for delivery coordination |
marketing_opt_in |
Yes | Allow merchant to send marketing communications |
consent_timestamp |
Yes | When user provided consent (ISO 8601) |
consent_method |
Yes | How consent was obtained (explicit_user_action, pre_configured_policy) |
This is the ONLY point where Scout identity is revealed.
Response (201 Created):
{
"transaction_id": "txn_01HXYZ...",
"session_id": "ses_01HXYZ...",
"offer_id": "ofr_01HABC...",
"status": "pending",
"created_at": "2026-01-14T10:35:00Z",
"amounts": {
"subtotal_usd": 349.99,
"shipping_usd": 0.00,
"tax_usd": 31.50,
"total_usd": 381.49
},
"next_steps": {
"action": "await_confirmation",
"expected_by": "2026-01-14T10:36:00Z"
},
"status_url": "/v1/transactions/txn_01HXYZ..."
}
Scout AURA Core Beacon
| | |
|-- POST /commit --------->| |
| |-- Verify offer valid --->|
| |<-- Offer confirmed ------|
| | |
| |-- Reveal buyer identity->|
| |-- Payment authorization->|
| |<-- Authorization OK -----|
| | |
| |-- Create order --------->|
| |<-- Order confirmation ---|
| | |
|<-- Transaction created --| |
| | |
Scout polls for transaction status:
GET /v1/transactions/{transaction_id}
Response (200 OK):
{
"transaction_id": "txn_01HXYZ...",
"status": "confirmed",
"status_history": [
{"status": "pending", "timestamp": "2026-01-14T10:35:00Z"},
{"status": "payment_authorized", "timestamp": "2026-01-14T10:35:15Z"},
{"status": "confirmed", "timestamp": "2026-01-14T10:35:30Z"}
],
"order": {
"merchant_order_id": "ORD-ACME-12345",
"merchant_name": "Acme Electronics",
"items": [
{
"product_name": "Sony WH-1000XM5",
"quantity": 1,
"unit_price_usd": 349.99
}
],
"shipping": {
"method": "standard",
"estimated_delivery": "2026-01-17",
"tracking_available": false
}
},
"amounts": {
"subtotal_usd": 349.99,
"shipping_usd": 0.00,
"tax_usd": 31.50,
"total_usd": 381.49
},
"payment": {
"status": "captured",
"method": "card",
"last_four": "4242"
}
}
Scout may cancel before fulfillment:
DELETE /v1/transactions/{transaction_id}
Request:
{
"reason": "changed_mind",
"comments": "Found a better deal elsewhere"
}
Response (200 OK):
{
"transaction_id": "txn_01HXYZ...",
"status": "cancelled",
"refund": {
"status": "processing",
"amount_usd": 381.49,
"expected_by": "2026-01-17"
}
}
Scouts and Beacons declare their payment capabilities during registration. AURA facilitates capability matching to determine the optimal payment mechanism for each transaction.
Design Principle: Payment integrations will be added as needed. The protocol defines a capability exchange mechanism allowing agents to state their payment capabilities and agree upon the best mechanism. x402 is explicitly supported in MVP.
Scouts declare payment capabilities during registration or via update:
PUT /v1/agents/scouts/{scout_id}/payment-capabilities
Request:
{
"payment_capabilities": {
"supported_methods": [
{
"type": "x402",
"facilitators": ["stripe", "square"],
"currencies": ["USD", "EUR", "GBP"]
},
{
"type": "card",
"networks": ["visa", "mastercard", "amex"],
"tokenization_provider": "stripe"
},
{
"type": "bank_transfer",
"regions": ["US"],
"networks": ["ach"]
},
{
"type": "crypto",
"currencies": ["USDC", "USDT"],
"networks": ["ethereum", "polygon"]
}
],
"preferred_method": "x402",
"default_currency": "USD"
}
}
Beacons declare accepted payment methods:
PUT /v1/agents/beacons/{beacon_id}/payment-capabilities
Request:
{
"payment_capabilities": {
"accepted_methods": [
{
"type": "x402",
"facilitators": ["stripe"],
"currencies": ["USD", "EUR"]
},
{
"type": "card",
"networks": ["visa", "mastercard", "amex", "discover"],
"processor": "stripe"
}
],
"preferred_method": "x402",
"settlement_currency": "USD",
"payout_schedule": "daily"
}
}
When Scout commits to an offer, AURA determines the optimal payment method:
The selected method is included in the transaction record:
{
"payment": {
"negotiated_method": "x402",
"facilitator": "stripe",
"currency": "USD",
"scout_preference_match": true,
"beacon_preference_match": true
}
}
AURA explicitly supports the x402 HTTP payment protocol for seamless agent-native payments.
x402 Payment Flow:
x402_payment in commit requestx402 Payment Object:
{
"payment_method": {
"type": "x402",
"x402_payment": {
"facilitator": "stripe",
"payment_token": "pm_tok_...",
"currency": "USD",
"amount": 381.49,
"idempotency_key": "idem_txn_01HXYZ..."
}
}
}
Future Payment Extensions: Additional payment methods (crypto stablecoins, BNPL, invoicing) will be added to the protocol as market demand and Beacon adoption warrant.
All errors follow a consistent format:
{
"error": {
"code": "INVALID_REQUEST",
"message": "The request body is missing required field 'natural_language_query'",
"details": {
"field": "natural_language_query",
"reason": "required"
},
"request_id": "req_01HXYZ...",
"documentation_url": "https://docs.aura.example.com/errors/INVALID_REQUEST"
}
}
| HTTP Status | Code | Description |
|---|---|---|
| 400 | INVALID_REQUEST |
Request body malformed or missing required fields |
| 400 | INVALID_PARAMETER |
Parameter value out of range or invalid format |
| 401 | AUTHENTICATION_REQUIRED |
Missing or invalid authentication |
| 401 | INVALID_API_KEY |
API key not recognized |
| 401 | INVALID_SIGNATURE |
Request signature verification failed |
| 403 | INSUFFICIENT_PERMISSIONS |
Agent lacks required scope |
| 403 | AGENT_SUSPENDED |
Agent account suspended |
| 404 | SESSION_NOT_FOUND |
Session ID does not exist |
| 404 | OFFER_NOT_FOUND |
Offer ID does not exist |
| 404 | TRANSACTION_NOT_FOUND |
Transaction ID does not exist |
| 409 | SESSION_STATE_CONFLICT |
Operation invalid for current session state |
| 409 | OFFER_EXPIRED |
Offer is no longer valid |
| 409 | OFFER_ALREADY_COMMITTED |
Another Scout committed to this offer |
| 422 | INTERPRETATION_FAILED |
Could not interpret natural language query |
| 422 | NO_MATCHING_BEACONS |
No Beacons available for this request |
| 429 | RATE_LIMITED |
Too many requests |
| 500 | INTERNAL_ERROR |
Unexpected server error |
| 502 | BEACON_UNAVAILABLE |
Could not reach Beacon |
| 503 | SERVICE_UNAVAILABLE |
AURA temporarily unavailable |
| 504 | BEACON_TIMEOUT |
Beacon did not respond in time |
Retryable errors: 429, 502, 503, 504
Retry strategy:
Retry-After header duration (if present)min(2^attempt × 100ms, 30s)delay × (0.5 + random(0, 0.5))Non-retryable errors: 400, 401, 403, 404, 409, 422
For POST requests that create resources, include an idempotency key:
X-Idempotency-Key: idem_abc123...
Scout Privacy:
Data Retention:
AURA’s interpretation layer:
Production: https://api.aura.example.com
Sandbox: https://sandbox.aura.example.com
| Method | Endpoint | Description |
|---|---|---|
| POST | /v1/agents/scouts |
Register new Scout agent |
| POST | /v1/sessions |
Create shopping session |
| GET | /v1/sessions/{session_id} |
Get session status |
| GET | /v1/sessions/{session_id}/offers |
Get ranked offers |
| GET | /v1/offers/{offer_id} |
Get offer details |
| POST | /v1/sessions/{session_id}/commit |
Commit to offer |
| GET | /v1/transactions/{transaction_id} |
Get transaction status |
| DELETE | /v1/transactions/{transaction_id} |
Cancel transaction |
| Method | Endpoint | Description |
|---|---|---|
| POST | /v1/agents/beacons |
Register new Beacon agent |
| POST | /v1/sessions/{session_id}/offers |
Submit offers |
| GET | /v1/beacons/{beacon_id}/requests |
List pending requests |
| GET | /v1/beacons/{beacon_id}/transactions |
List transactions |
| Event | Description |
|---|---|
offer_request |
New offer request from AURA |
offer_accepted |
Scout committed to your offer |
transaction_confirmed |
Transaction payment confirmed |
transaction_cancelled |
Transaction cancelled |
transaction_completed |
Order delivered successfully |
API version is included in the URL path: /v1/...
Version lifecycle:
Include AURA-Version header to request specific API version behavior:
AURA-Version: 2026-01-01
Sandbox environment:
sandbox.aura.example.comsk_test_..., bk_test_...Test cards (for payment testing):
424242424242424240000000000000024000002500003155Official SDKs planned for:
Community SDKs welcome under Apache 2.0 license.
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://aura.example.com/schemas/session-request.json",
"title": "Session Request",
"type": "object",
"required": ["natural_language_query"],
"properties": {
"natural_language_query": {
"type": "string",
"minLength": 10,
"maxLength": 2000,
"description": "Scout's natural language expression of need"
},
"structured_hints": {
"type": "object",
"properties": {
"category_hint": {"type": "string"},
"price_range_usd": {
"type": "object",
"properties": {
"min": {"type": "number", "minimum": 0},
"max": {"type": "number", "minimum": 0}
}
},
"required_features": {
"type": "array",
"items": {"type": "string"}
}
}
},
"context": {
"type": "object",
"properties": {
"use_case": {"type": "string"},
"previous_purchases": {
"type": "array",
"items": {"type": "string"}
},
"location": {
"type": "object",
"properties": {
"country": {"type": "string", "pattern": "^[A-Z]{2}$"},
"region": {"type": "string"}
}
}
}
},
"preferences": {
"type": "object",
"properties": {
"max_offers": {"type": "integer", "minimum": 1, "maximum": 50, "default": 10},
"offer_timeout_seconds": {"type": "integer", "minimum": 10, "maximum": 120, "default": 30},
"include_reputation_data": {"type": "boolean", "default": true}
}
}
}
}
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://aura.example.com/schemas/offer.json",
"title": "Offer",
"type": "object",
"required": ["offer_id", "product", "pricing", "availability", "valid_until", "signature"],
"properties": {
"offer_id": {
"type": "string",
"pattern": "^ofr_[0-9A-Z]{26}$"
},
"product": {
"type": "object",
"required": ["product_id", "name", "category"],
"properties": {
"product_id": {"type": "string"},
"name": {"type": "string", "maxLength": 200},
"category": {"type": "string"},
"structured_attributes": {"type": "object"},
"natural_language_description": {
"type": "object",
"required": ["content", "language"],
"properties": {
"content": {"type": "string", "maxLength": 2000},
"language": {"type": "string", "pattern": "^[a-z]{2}$"}
}
},
"images": {
"type": "array",
"items": {
"type": "object",
"properties": {
"url": {"type": "string", "format": "uri"},
"type": {"type": "string", "enum": ["primary", "gallery", "thumbnail"]}
}
}
}
}
},
"pricing": {
"type": "object",
"required": ["currency", "offer_price"],
"properties": {
"currency": {"type": "string", "pattern": "^[A-Z]{3}$"},
"list_price": {"type": "number", "minimum": 0},
"offer_price": {"type": "number", "minimum": 0},
"discount_percentage": {"type": "number", "minimum": 0, "maximum": 100},
"price_valid_until": {"type": "string", "format": "date-time"}
}
},
"availability": {
"type": "object",
"required": ["in_stock"],
"properties": {
"in_stock": {"type": "boolean"},
"quantity_available": {"type": "integer", "minimum": 0},
"estimated_ship_date": {"type": "string", "format": "date"},
"delivery_estimate_days": {
"type": "object",
"properties": {
"min": {"type": "integer", "minimum": 0},
"max": {"type": "integer", "minimum": 0}
}
}
}
},
"valid_until": {
"type": "string",
"format": "date-time"
},
"signature": {
"type": "string",
"pattern": "^sig_[A-Za-z0-9+/=]+$"
}
}
}
┌─────────┐ ┌───────────┐ ┌─────────┐
│ Scout │ │ AURA Core │ │ Beacon │
└────┬────┘ └─────┬─────┘ └────┬────┘
│ │ │
│ POST /v1/sessions │ │
│ (natural language) │ │
│────────────────────>│ │
│ │ │
│ 201 Created │ │
│ session_id │ │
│<────────────────────│ │
│ │ │
│ │ Interpret query │
│ │ (internal LLM) │
│ │ │
│ │ Query Beacon │
│ │ registry │
│ │ │
│ │ POST webhook │
│ │ (interpreted req) │
│ │────────────────────>│
│ │ │
│ │ │ Generate
│ │ │ offers
│ │ │
│ │ POST /offers │
│ │ (signed offers) │
│ │<────────────────────│
│ │ │
│ │ Calculate CWR │
│ │ Rank offers │
│ │ │
│ GET /sessions/{id} │ │
│ status: offers_ready│ │
│<────────────────────│ │
│ │ │
│ GET /sessions/{id}/ │ │
│ offers │ │
│────────────────────>│ │
│ │ │
│ Ranked offers │ │
│<────────────────────│ │
│ │ │
│ POST /commit │ │
│ (buyer identity) │ │
│────────────────────>│ │
│ │ │
│ │ Reveal identity │
│ │────────────────────>│
│ │ │
│ │ Process payment │
│ │ │
│ │ Create order │
│ │<────────────────────│
│ │ │
│ 201 Created │ │
│ transaction_id │ │
│<────────────────────│ │
│ │ │
| Term | Definition |
|---|---|
| Agent | An autonomous software entity acting on behalf of a principal |
| AURA | Agent Universal Resource Architecture |
| Beacon | Seller-side agent representing merchant interests |
| CWR | Compatibility-Weighted Reputation - ranking algorithm |
| Hard Constraint | Requirement that must be satisfied (filters out non-matches) |
| Interpreted Request | AURA’s structured representation of Scout intent |
| Offer | Beacon’s response containing product, pricing, and terms |
| Principal | The human or entity an agent represents |
| Sanitization | Process of removing PII and injection patterns from text |
| Scout | Buyer-side agent representing consumer interests |
| Session | Logical conversation from request to transaction completion |
| Soft Preference | Preference that influences ranking but isn’t mandatory |
| x402 | HTTP-native payment protocol for agent commerce |
Analytics and reporting are out of scope for MVP, but this section defines the event structure for future implementation. Events can be pushed to message queues (Kafka, etc.) for downstream processing.
All events follow a standard envelope structure:
{
"event_id": "evt_01HXYZ...",
"event_type": "session.created",
"event_version": "1.0",
"timestamp": "2026-01-14T10:00:00.000Z",
"source": "aura_core",
"correlation_id": "ses_01HXYZ...",
"payload": {
// Event-specific data
},
"metadata": {
"environment": "production",
"region": "us-east-1",
"aura_version": "1.0.0"
}
}
| Event Type | Description |
|---|---|
session.created |
New shopping session initiated |
session.interpreted |
Natural language query interpreted |
session.offers_collected |
Offers received from Beacons |
session.offers_ranked |
CWR ranking completed |
session.committed |
Scout committed to offer |
session.completed |
Transaction successfully completed |
session.cancelled |
Session cancelled |
session.expired |
Session timed out |
| Event Type | Description |
|---|---|
offer.requested |
Offer request sent to Beacon |
offer.received |
Offer received from Beacon |
offer.validated |
Offer signature verified |
offer.rejected |
Offer failed validation |
offer.accepted |
Offer accepted by Scout |
offer.expired |
Offer validity period ended |
| Event Type | Description |
|---|---|
transaction.initiated |
Transaction processing started |
transaction.payment_authorized |
Payment authorization successful |
transaction.payment_captured |
Payment captured |
transaction.payment_failed |
Payment processing failed |
transaction.fulfilled |
Order fulfilled by merchant |
transaction.completed |
Transaction fully completed |
transaction.refunded |
Refund processed |
| Event Type | Description |
|---|---|
agent.registered |
New agent registered |
agent.policy_updated |
Agent policy changed |
agent.reputation_changed |
Agent reputation score updated |
agent.suspended |
Agent account suspended |
{
"event_id": "evt_01HXYZ...",
"event_type": "session.committed",
"event_version": "1.0",
"timestamp": "2026-01-14T10:35:00.000Z",
"source": "aura_core",
"correlation_id": "ses_01HXYZ...",
"payload": {
"session_id": "ses_01HXYZ...",
"scout_id": "sct_01HXYZ...",
"beacon_id": "bcn_01HXYZ...",
"offer_id": "ofr_01HABC...",
"transaction_id": "txn_01HXYZ...",
"category": "electronics.headphones",
"amount_usd": 381.49,
"payment_method": "x402",
"cwr_score": 89.6,
"offer_rank": 1,
"total_offers": 8,
"session_duration_ms": 35000
},
"metadata": {
"environment": "production",
"region": "us-east-1",
"aura_version": "1.0.0"
}
}
Future Implementation Notes:
correlation_id ensures ordered processing per sessionThis section documents planned protocol extensions that are part of the AURA architecture but deferred beyond MVP. These design statements provide guidance for future protocol versions.
Current State: MVP supports single-offer acceptance only.
Future Design:
The negotiation protocol will enable Scouts and Beacons to negotiate along agreed economic principles and models until consensus is reached or non-consensus is determined.
Planned Features:
Example Negotiation Flow:
Scout → AURA: Initial request
AURA → Beacon: Offer request
Beacon → AURA: Initial offer ($350)
AURA → Scout: Present offer
Scout → AURA: Counter-offer ($320)
AURA → Beacon: Counter-offer (anonymized)
Beacon → AURA: Revised offer ($335)
AURA → Scout: Present revised offer
Scout → AURA: Accept
[Transaction proceeds]
Current State: Beacons respond only within Scout’s stated constraints.
Future Design:
Enable Beacons to surface exceptional opportunities outside constraints without creating notification fatigue.
Planned Features:
breakthrough_opportunity message type from Beacon to AURACurrent State: Consent is manual at transaction time.
Future Design:
Enable users to define consent policies that automatically apply when boundary conditions are met.
Planned Features:
Current State: Only Scout ↔ AURA ↔ Beacon communication defined.
Future Design:
Enable broader agent ecosystem with direct agent communication.
Planned Features:
Current State: x402 and card payments supported.
Future Design:
Expand payment options based on market demand.
Planned Methods:
Current State: Event structure defined; API not implemented.
Future Design:
Provide agents with access to their performance data and market insights.
Planned Features:
Current State: Single transaction flow only.
Future Design:
Support subscription-based commerce and automated replenishment.
Planned Features:
| Version | Date | Changes |
|---|---|---|
| 1.0.0 | 2026-01 | Initial specification |
End of Specification