{
  "id": "transfer-custody",
  "description": "Hand a prop or packet to a declared participant",
  "labels": {
    "en": "Transfer custody",
    "es": "Transferir custodia",
    "fr": "Transférer la garde",
    "de": "Besitz übertragen"
  },
  "action_contract": {
    "requires": [
      "target"
    ],
    "parameters": {
      "recipient_ref": {
        "required": true,
        "description": "Participant id in the TAM-45 shared namespace",
        "domain": "string"
      },
      "position": {
        "required": false,
        "description": "Named location for the transferred prop or packet",
        "domain": "string"
      }
    },
    "post_state_invariant": "After this action, the target's custody — state.possession for a whole prop, or the containing packet's custodian_ref (TAM-44/53) — equals recipient_ref. No card order, identity or per-card physical state changes."
  }
}