Naming Conventions
The alc: prefix, the legalContext JSON key, and raw byte conventions for protocol integration.
This section is advisory.
The agentic commerce protocols are structurally different, so a single wire format cannot apply everywhere. The ALC standard defines three conventions depending on the field type.
String Fields: The alc: Prefix
For string fields (e.g., MPP opaque, ACP metadata values), use the alc: prefix with a type indicator:
alc:{type}:{value}Self-identifying — any parser checks startsWith("alc:"), then reads the type to know how to resolve the value.
Parsing rule: Split on the first colon to get alc (the namespace). Split on the second colon to get the type. Everything after the second colon is the value (which may itself contain colons, e.g., in URLs).
Structured JSON: The legalContext Key
For structured JSON fields (e.g., ACP session metadata, A2A task metadata, UCP extensions), use a standard key — "legalContext" — with type and value fields:
{
"legalContext": {
"type": "sha256",
"value": "0x7f83b165..."
}
}Raw Byte Fields
For raw byte fields (e.g., TIP-20 32-byte memo), no prefix — there is no room. The per-protocol integration guide defines the meaning for that specific field.
Known Types
The type set is extensible. This is not a closed set.
| Type | Value Format | Example |
|---|---|---|
sha256 | Content hash, 0x-prefixed hex | alc:sha256:0x7f83b165... |
ipfs | IPFS CID | alc:ipfs:QmYwAPJzv5CZsnA... |
ar | Arweave transaction ID | alc:ar:bNbA3DWNQJ... |
url | URL to terms or legal-context.json | alc:url:https://example.com/terms/v3.pdf |
integra | Integra record reference | alc:integra:0xabcdef... |
New types can be added without changing the specification.