Concepts

Actions

A unit of agent-buyable work. Each action has a fixed price, a deterministic input, a typed output, and a clear cost-of-failure boundary.


What an action is

An action is the smallest billable interaction. It must be:

  • ·Atomic. Either it completes and a receipt is issued, or payment is refunded and no receipt exists.
  • ·Stateless from the agent's side.The same input must yield the same canonical output (modulo time-sensitive freshness). This makes the receipt's output hash meaningful.
  • ·Independently priced.An action's price is its declared cost in the manifest. Bundles or subscriptions are not part of the v0.1 spec.

Action types

TypeUse caseTypical price
web_accessPage or article body, license-bypassable read access1–10 sat
structured_dataClean JSON for an entity (article metadata, profile, dataset row)1–10 sat
site_agent_querySite-hosted Q&A over the publisher's archive, with citations3–30 sat
verificationIndependent claim grading, fact-check, identity attestation5–500 sat

These four cover most current agent purchases. New types may be added as the protocol evolves; agents must safely ignore unknown types when selecting actions to buy.

Pricing

Prices are denominated in millisatoshis (price_msats), which is the smallest unit Lightning carries (1 sat = 1000 msat). This permits sub-cent pricing while keeping integer arithmetic.

Pricing intuition
At 2026 prices, 1 sat ≈ $0.0006. A typical 5-action research task at 1–3 sats per action is fractions of a US cent. Charge what the work is worth, not what humans would tolerate.

Inputs

Inputs are sent as a JSON body to the action endpoint. The publisher SHOULD declare an input_schema (any subset of JSON Schema). The agent MUST validate against it before paying.

example input_schema
json
{
  "type": "object",
  "properties": {
    "doc_id":  { "type": "string", "maxLength": 256 },
    "fields":  { "type": "array",  "items": { "type": "string" } }
  },
  "required": ["doc_id"]
}

Inputs are hashed (SHA-256 over canonical JSON) and bound to the L402 token. An agent cannot reuse a token for a different input — this prevents bait-and-switch where one cheap quote is reused for an expensive call.

Outputs

Outputs are JSON. The publisher MUST canonicalize the output (sorted keys, no extra whitespace) before hashing into the receipt. This makes the receipt's output_hash a stable witness of what was delivered.

Idempotency

Each L402 token is single-use. Once the publisher issues a receipt for a payment hash, the token is consumed. Subsequent retries with the same auth header MUST return 401 with token_already_consumed.

For repeatable work, the agent simply pays again — payment is the idempotency key. Caching results client-side is the agent's responsibility.

Next
Receipts
The signed proof of a paid action — what's bound, what's hashed, how to verify.
agents402.org / 2026
Open protocol · v0.1