{
  "$schema": "./registry.schema.json",
  "registry": "actions",
  "title": "Verbs, scopes and tiers (reference defaults)",
  "version": "2026-11-draft5",
  "spec": "Draft 0.5 section 8.4, 16",
  "entries": [
    {
      "value": "listing.create",
      "scope": "dev.rctp.listing:create",
      "by": "seller",
      "default": "ask",
      "allowed": [
        "ask",
        "auto"
      ],
      "fixed": null,
      "note": "Reference default. Auto creates the listing without terms until the seller confirms them (6.5)"
    },
    {
      "value": "listing.set_terms",
      "scope": "dev.rctp.listing:set_terms",
      "by": "seller",
      "default": "ask",
      "allowed": [
        "ask"
      ],
      "fixed": null,
      "note": "Fixed: always opens the seller's confirmation"
    },
    {
      "value": "listing.reprice",
      "scope": "dev.rctp.listing:reprice",
      "by": "seller",
      "default": "auto",
      "allowed": [
        "auto",
        "ask"
      ],
      "fixed": null,
      "note": "Never below the floor"
    },
    {
      "value": "listing.answer_buyer",
      "scope": "dev.rctp.listing:answer_buyer",
      "by": "seller",
      "default": "auto",
      "allowed": [
        "auto",
        "ask"
      ],
      "fixed": null,
      "note": null
    },
    {
      "value": "offer.create",
      "scope": null,
      "by": "buyer",
      "default": null,
      "allowed": [],
      "fixed": null,
      "note": "Buyer verb: checked against the terms and the offer budget; has no tier (8.3)"
    },
    {
      "value": "offer.counter",
      "scope": "dev.rctp.deal:offer_counter",
      "by": "seller",
      "default": "auto",
      "allowed": [
        "auto",
        "ask"
      ],
      "fixed": null,
      "note": "Never below the floor. Optional: a marketplace may leave this scope out (7.3)"
    },
    {
      "value": "offer.accept",
      "scope": "dev.rctp.deal:offer_accept",
      "by": "seller",
      "default": "ask",
      "allowed": [
        "ask",
        "auto"
      ],
      "fixed": null,
      "note": "Never below the floor"
    },
    {
      "value": "deal.commit_to_ship",
      "scope": "dev.rctp.deal:commit_to_ship",
      "by": "seller",
      "default": "ask",
      "allowed": [
        "ask",
        "auto"
      ],
      "fixed": null,
      "note": null
    },
    {
      "value": "deal.disclose_passport",
      "scope": "dev.rctp.deal:disclose_passport",
      "by": "seller",
      "default": "ask",
      "allowed": [
        "ask",
        "auto"
      ],
      "fixed": null,
      "note": "Discloses the full Item Passport report (11.3)"
    },
    {
      "value": "deal.accept_deposit",
      "scope": "dev.rctp.deal:accept_deposit",
      "by": "seller",
      "default": "ask",
      "allowed": [
        "ask"
      ],
      "fixed": null,
      "note": null
    },
    {
      "value": "deal.sign_contract",
      "scope": null,
      "by": "seller",
      "default": "forbid",
      "allowed": [
        "forbid"
      ],
      "fixed": "forbid",
      "note": "Fixed (INV-3)"
    },
    {
      "value": "account.update",
      "scope": null,
      "by": "seller",
      "default": "forbid",
      "allowed": [
        "forbid"
      ],
      "fixed": "forbid",
      "note": "Fixed (INV-3)"
    }
  ],
  "note": "A seller verb's scope is {capability}:{scope}: listing.x is dev.rctp.listing:x, deal.x is dev.rctp.deal:x, offer.x is dev.rctp.deal:offer_x. Default and allowed are reference defaults: a marketplace declares its own default_tier and allowed_tiers per scope in dev.ucp.common.identity_linking (8.4). The seller's grant sets a tier per scope within allowed; otherwise default applies. Fixed forbid verbs have no scope, so no grant can contain them."
}
