get_action_status
Lê o status atual de uma action pendente ou passada pelo ID. Usa como fallback de polling quando o cliente MCP não renderiza notifications/resources/updated de picnic://action/{action_id}, ou pra ressincronizar status depois de uma desconexão.
Efeito colateral: quando chamada numa action em broadcast ou submitted, esta ferramenta consulta oportunisticamente o bundler/RPC pelo receipt do userOp e pode avançar o status pra executed ou failed (e preencher tx_hash + block_number) antes de retornar. Best-effort e nunca dá throw — mas significa que esta ferramenta não é estritamente read-only.
Escopo necessário: read:actions
Parâmetros:
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
action_id | string | sim | ID de uma action retornada por transfer, swap ou qualquer uma das ferramentas card_*. A action precisa pertencer ao mesmo usuário + cliente OAuth que a criou. |
Retorna:
| Campo | Tipo | Descrição |
|---|---|---|
action_id | string | Devolvido como entrada. |
type | string | Um de "transfer", "swap", "cardFreeze", "cardUnfreeze", "cardLimitSet". |
status | string | Status atual — veja o enum abaixo. |
summary | string | Resumo legível por humanos que o usuário viu na página de assinatura. |
chain_id | number | Chain alvo da action. |
smart_account | string | Endereço da smart account em que a action opera. |
tx_hash | string | null | Hash da tx on-chain. null até a reconciliação trazer o receipt. |
user_op_hash | string | null | O userOpHash 4337. Computado no momento da proposta e presente em qualquer action a partir daí (incluindo actions proposed/expired que nunca foram broadcast). Não inferir "essa action foi broadcast" só porque user_op_hash tá presente — checa broadcast_at ou status. |
block_number | number | null | Bloco onde a tx confirmou. Preenchido junto com tx_hash. |
error | string | null | Mensagem de erro se a action terminou em failed, ou se a RPC do bundler retornou erro na submissão (nesse caso o status ainda pode ser submitted enquanto a reconciliação roda). |
created_at | date | Quando a ferramenta de ação criou a pending action. |
expires_at | date | Deadline da TTL pra assinar. |
signed_at | date | null | Quando o usuário assinou (status passou pra signed). |
broadcast_at | date | null | Quando o bundler aceitou o userOp (status passou pra broadcast). |
executed_at | date | null | Quando o receipt on-chain chegou. |
status_history | array | Audit trail de todas as transições de status. |
status_history[].status | string | Status nessa entrada (mesmo enum do status no topo). |
status_history[].timestamp | date | Quando a transição aconteceu. |
status_history[].detail | string | null | Contexto opcional, ex.: mensagem de erro anexada a uma transição failed. |
Enum de status:
| Status | Significado |
|---|---|
proposed | Criada pela ferramenta de ação, esperando a assinatura do usuário. |
signed | Usuário assinou; o endpoint de assinatura tá submetendo a action. |
submitted | O userOp tá sendo entregue pra RPC do bundler (ou, pra card actions, pra API da Gnosis Pay). Permanece transitoriamente, ou até a reconciliação se a RPC errar no meio. |
broadcast | Bundler aceitou, user_op_hash conhecido, esperando o receipt on-chain. |
executed | Mineração bem-sucedida on-chain. |
failed | Revert on-chain. |
expired | TTL expirou antes do usuário assinar. |
rejected | Usuário negou na página de assinatura. |
Erros:
Action not found: …— oaction_idnão existe (ou foi retido além da janela de 24 horas).Action does not belong to the authenticated user/Action belongs to a different OAuth client— a action foi criada por outro usuário/agente.- Erros de escopo — caller tá sem
read:actions.
Exemplo de pergunta:
"Meu swap passou?" — agente chama
get_action_statuscom o action_id mais recente.