Agent Legal Context
Protocol Integration

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.

TypeValue FormatExample
sha256Content hash, 0x-prefixed hexalc:sha256:0x7f83b165...
ipfsIPFS CIDalc:ipfs:QmYwAPJzv5CZsnA...
arArweave transaction IDalc:ar:bNbA3DWNQJ...
urlURL to terms or legal-context.jsonalc:url:https://example.com/terms/v3.pdf
integraIntegra record referencealc:integra:0xabcdef...

New types can be added without changing the specification.