get_action_status
Lê o estado atual de uma action pendente ou passada pelo ID. Usa-se como fallback de polling quando o cliente MCP não renderiza notifications/resources/updated de picnic://action/{action_id}, ou para ressincronizar estado 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 para executed ou failed (e preencher tx_hash + block_number) antes de devolver. Best-effort e nunca lança — mas significa que esta ferramenta não é estritamente read-only.
Âmbito necessário: read:actions
Parâmetros:
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
action_id | string | sim | ID de uma action devolvida por transfer, swap ou qualquer uma das ferramentas card_*. A action tem de pertencer ao mesmo utilizador + cliente OAuth que a criou. |
Devolve:
| Campo | Tipo | Descrição |
|---|---|---|
action_id | string | Devolvido como entrada. |
type | string | Um de "transfer", "swap", "cardFreeze", "cardUnfreeze", "cardLimitSet". |
status | string | Estado atual — ver o enum abaixo. |
summary | string | Resumo legível por humanos que o utilizador 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. Calculado no momento da proposta e presente em qualquer action a partir daí (incluindo actions proposed/expired que nunca foram broadcast). Não inferir "esta action foi broadcast" só porque user_op_hash está presente — verifica broadcast_at ou status. |
block_number | number | null | Bloco onde a tx confirmou. Preenchido em conjunto com tx_hash. |
error | string | null | Mensagem de erro se a action terminou em failed, ou se a RPC do bundler devolveu erro na submissão (nesse caso o status pode ainda ser submitted enquanto a reconciliação corre). |
created_at | date | Quando a ferramenta de ação criou a pending action. |
expires_at | date | Prazo da TTL para assinar. |
signed_at | date | null | Quando o utilizador assinou (status passou a signed). |
broadcast_at | date | null | Quando o bundler aceitou o userOp (status passou a broadcast). |
executed_at | date | null | Quando o receipt on-chain chegou. |
status_history | array | Audit trail de todas as transições de estado. |
status_history[].status | string | Estado 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 estado:
| Estado | Significado |
|---|---|
proposed | Criada pela ferramenta de ação, à espera da assinatura do utilizador. |
signed | Utilizador assinou; o endpoint de assinatura está a submeter a action. |
submitted | O userOp está a ser entregue à RPC do bundler (ou, para card actions, à API da Gnosis Pay). Persiste transitoriamente, ou até à reconciliação se a RPC errar a meio. |
broadcast | Bundler aceitou, user_op_hash conhecido, à espera do receipt on-chain. |
executed | Mineração bem-sucedida on-chain. |
failed | Revert on-chain. |
expired | TTL expirou antes de o utilizador assinar. |
rejected | Utilizador negou na página de assinatura. |
Erros:
Action not found: …— oaction_idnão existe (ou foi retido para 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 utilizador/agente.- Erros de âmbito — o caller não tem
read:actions.
Exemplo de pergunta:
"O meu swap passou?" — o agente chama
get_action_statuscom o action_id mais recente.