What is being sent, and to whom.
Exactly one of contactId / quoteId / invoiceId must be set (mirrors the /mcp/transfer body). amount is required when contactId is the dispatch path; otherwise it is derived from the referenced invoice or quote.
Successful Response
One outcome shape for both ways a transfer attempt can end.
Spent straight away: txHash only. Needs approval: the request that was filed, with the deep link to approve it. transactionId appears once an approved transfer has been reported back. A decline reason is not a field — it is a message in chatId, the request's thread.
Client-facing status of a transfer_request proposal.
The record is a proposal (seven statuses); this is the short vocabulary the API keeps for the agent and the web app, mapped from ProposalStatus by :meth:from_proposal.