ownerTransfer
Proposes moving the account to another address. Nothing moves until that address accepts with ownerAccept. A second proposal replaces the first, which is how a mistyped address is fixed.
Cost: Free. Signed by the current owner over method
POST, path/account/v1/<address lowercased>/owner/transferand the body{"newOwner": ...}. TheARCGATE-KEYheader does not authorize it: a call with only a key is a 401signature_required.Inputs:
address(path), the current owner, any letter case, andnewOwner(body), the address to move the account to, any letter case.Returns:
accountId,owner,newOwnerlowercased andexpiresAt, the unix time the proposal lapses (account.transfer.daysafter now).Errors:
404
account_not_found: the address has no account.409
account_exists:newOwnerowns an account already, this account included: an address owns at most one.
Next:
ownerAccept: the new owner signs it, at this account's path, to take the account.accountStatus: read the account.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | The account owner's address, any letter case. One account per address, and a signed request must be signed by it. | |
| newOwner | Yes | The address to move the account to, any letter case. It must own no account: an address owns at most one. A second proposal replaces the first. | |
| agentSignature | No | The owner's EIP-712 signature over this request, as the AGENT-SIGNATURE, AGENT-NONCE and AGENT-EXPIRY headers carry it over HTTP. Sign the typed data `AccountRequest` (not `AgentRequest`) with fields `origin` (the API's base URL with no trailing slash: the URL this request is sent to less its path, for example `https://api.arcgate.dev`; over MCP the same, not the /mcp URL), `address` (the owner), `method`, `path`, `bodyHash`, `nonce` and `expiry`, in that order. A signature made for another deployment's origin is a 401 invalid_signature, under the domain {name: "arcgate", version: "1"} with no chainId (a wallet that can only sign with one may add the chainId of the chain this deployment serves). The `path` is the request path with the address lowercased. The `bodyHash` is the keccak256 of the canonical JSON of the body you send (sorted keys, no whitespace), or of no bytes when there is none. Each nonce is accepted once per owner. Omitting it is a 401 signature_required, never a charge. |