Error codes from UCP spec version 2026-04-08. Some error codes are defined in the spec; others are common implementation errors. Cross-reference with the official spec.

UCP Error Reference

Every error code you might encounter when implementing or consuming UCP, with causes and fixes.

version_unsupported

Severity: Unrecoverable

The agent's protocol version does not match the merchant's declared version or any version in supported_versions.

Cause

Error Response

{
  "ucp": { "version": "2026-01-11", "status": "error" },
  "messages": [{
    "type": "error",
    "code": "version_unsupported",
    "content": "Version 2026-01-12 is not supported. This business implements version 2026-01-11.",
    "severity": "unrecoverable"
  }],
  "continue_url": "https://merchant.com/"
}

Fix

capability_not_supported

Cause

Fix

requires_escalation

Severity: Recoverable

The checkout needs human input. Not an error per se - it is a normal part of the checkout lifecycle.

Cause

Response

{
  "status": "requires_escalation",
  "continue_url": "https://merchant.com/checkout/chk_xyz/verify"
}

Fix

invalid_profile

Cause

Fix

# Validate your profile structure
curl -s https://your-store.com/.well-known/ucp | jq .

# Check required fields exist
curl -s https://your-store.com/.well-known/ucp | \
  jq '{version: .ucp.version, services: (.ucp.services | keys), capabilities: (.ucp.capabilities | keys)}'

# Verify spec URLs match namespace
curl -s https://your-store.com/.well-known/ucp | \
  jq '.ucp.capabilities["dev.ucp.shopping.checkout"][0].spec'
# Must start with https://ucp.dev/

schema_resolution_failed

Cause

Fix

payment_handler_error

Cause

Fix

checkout_expired

Cause

Fix

namespace_mismatch

Platform-rejected

Platforms SHOULD reject capabilities where the spec origin does not match the namespace authority.

Cause

Fix

Ensure spec and schema URLs match their namespace authority:

NamespaceRequired Origin
dev.ucp.*https://ucp.dev/...
com.example.*https://example.com/...
org.myorg.*https://myorg.org/...

CORS / Cross-Origin Errors

Symptom

Agent gets a CORS error when fetching /.well-known/ucp or making API calls. Browser console shows "Access-Control-Allow-Origin" errors.

Cause

Fix

# nginx: add CORS headers to UCP endpoints
location = /.well-known/ucp {
    default_type application/json;
    add_header Access-Control-Allow-Origin *;
    add_header Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS";
    add_header Access-Control-Allow-Headers "Content-Type, UCP-Agent";
}

location /api/ucp/ {
    add_header Access-Control-Allow-Origin *;
    add_header Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS";
    add_header Access-Control-Allow-Headers "Content-Type, UCP-Agent";
    
    if ($request_method = OPTIONS) {
        return 204;
    }
}

Need More Help?

Troubleshooting Guides

Step-by-step diagnosis for common symptoms.

Browse guides →

FAQ

Answers to the most common UCP questions.

Read FAQ →

Official GitHub

File issues and check discussions on the UCP repo.

Visit GitHub →