Picnic agents is in early access — read-only access only for now.
PT
Docs
Ferramentas
transfer

transfer

Inicia uma transferência de token de uma das smart accounts controladas pelo utilizador para um destinatário. Suporta tanto source picnic como gnosisPay — descobre os endereços disponíveis via get_smart_accounts. Devolve um sign_url e um resource_uri para atualizações de estado em tempo real. A execução arranca assim que o utilizador assina em sign_url.

Tipos de source:

  • picnic — executa em ~10s via bundler 4337. Usado para carregar o cartão (recipient = endereço do safe gnosisPay) ou enviar para qualquer outro endereço.
  • gnosisPay (apenas Gnosis chain) — usado para sacar da conta do cartão. Enfileira pelo delay module do gnosisPay e despacha ~3 minutos depois da assinatura. A action passa a broadcast quando enfileirada e a executed quando o dispatch atrasado confirma on-chain.

Restrição de depósito no cartão: quando o destinatário é o próprio safe gnosisPay do utilizador e a source é uma conta picnic, o asset_id TEM de ser o asset denominado pelo cartão (EUR / USD / GBP, conforme o fiatSymbol do cartão). Caso contrário a ferramenta rejeita antes — depositar o token errado deixaria o saldo preso no safe do cartão. Levantamentos a partir do cartão não têm essa restrição (o safe pode legitimamente conter assets depositados por engano que o utilizador precisa recuperar).

Âmbitos necessários: propose:transfer, execute:transfer

Parâmetros:

NomeTipoObrig.Descrição
source_smart_account_addressstringsimSmart account de origem que detém o asset. Tem de ser uma das contas controladas pela passkey em source_chain_id. Usa get_smart_accounts para descobrir endereços.
source_chain_idnumbersimChain ID da smart account de origem. Tem de ser igual à chainId codificada em asset_id — divergência é rejeitada.
asset_idstringsimId do asset — eip155:{chainId}/erc20:{address} para ERC-20s, eip155:{chainId}/bep20:{address} na chain 56, ou eip155:{chainId}/slip44:60 para a moeda nativa.
recipientstringsimDestino — endereço 0x EVM ou nome ENS (e.g. vitalik.eth). A resolução de ENS corre sempre na mainnet do Ethereum.
formatted_amountstringsimValor decimal nas unidades de exibição do asset, e.g. "1.5" para 1.5 USDC. O servidor resolve os decimais a partir de asset_id.

Retorna:

CampoTipoDescrição
action_idstringUUID da action pendente. Passa a get_action_status como fallback de polling.
statusstringSempre "proposed" imediatamente após esta chamada.
summarystringResumo legível mostrado ao utilizador na página de assinatura. Derivado server-side.
sign_urlstringURL que o utilizador abre para autorizar com a passkey.
resource_uristringpicnic://action/{action_id}. Subscreve via resources/subscribe para receber notifications/resources/updated.
simulation_urlstringURL de preview Tenderly para source picnic; null para source gnosisPay (o enqueue no delay module não é um userOp).
expires_atdateTimestamp ISO; 10 minutos após a criação.
external_recipientbooleantrue quando o destino não é uma das smart accounts controladas pelo utilizador nesta chain. Comunica este aviso verbalmente ao utilizador antes de abrir sign_url — transferências on-chain são irreversíveis.
warningsstring[]Linhas de aviso para o agente chamador (atualmente: a linha de external-recipient quando external_recipient = true). Array vazio quando nada há a assinalar.

Ciclo de vida (status):

proposed → signed → submitted → broadcast → executed (caminho de sucesso) — a mesma forma para os dois tipos de source. O que cada passo significa muda:

  • Source picnic: broadcast = bundler aceitou o userOp 4337; executed = userOp confirmou on-chain.
  • Source gnosisPay: broadcast = a tx de enqueue do delay module está no mempool; executed = a tx de enqueue confirmou on-chain. O dispatch on-chain efetivo da transferência interna ocorre ~3 minutos depois via o job de scheduled transactions (e aparece em get_transactions nessa altura).

Outros estados terminais: failed (revert on-chain), expired, rejected.

Exemplos de prompt:

"Carrega o meu cartão com 5 USDC da minha conta Picnic na Base."

"Saca 10 EURE do meu cartão para a minha conta Picnic." (source gnosisPay, ~3 min)

"Envia 100 USDC para vitalik.eth na Base."