A simple but significant schema change: the currency field in UCP Order objects moves from optional to required. This is a breaking change that affects all UCP implementations.
// Before (optional)
{
"order": {
"total": "99.99"
// currency could be inferred, missing, or ambiguous
}
}
// After (required)
{
"order": {
"total": "99.99",
"currency": "USD" // Always present
}
}
When an AI agent completes a purchase on behalf of a user, currency ambiguity is not acceptable. Consider these scenarios:
Before this change, an Order could rely on implicit currency inference from merchant location, user locale, or previous transactions. This worked for human-driven commerce where visual context provided currency cues, but fails in automated agent transactions where context is structured data, not web pages.
The change is minimal in schema terms:
// In order.schema.json
{
"properties": {
"currency": {
"type": "string",
"description": "ISO 4217 currency code",
"pattern": "^[A-Z]{3}$"
}
},
"required": ["currency", ...] // Added to required array
}
Implementations must now:
currency when creating Order objectsFor existing UCP implementations:
The PR is currently open and under review. Given this is a breaking change, expect discussion around:
This change aligns with UCP's broader direction of making agent transactions explicit and unambiguous. Combined with the recent identity linking redesign and totals contract formalization, UCP is systematically closing gaps that could cause agent commerce failures.
This PR builds on the earlier Order currency field addition from March 3, which made the field available. This PR completes the transition by making it mandatory.