agentwallet-mcp
Carteira EVM no lado do servidor para agentes de IA. Envie transações, gerencie tokens e interaja com contratos inteligentes em várias blockchains.
Documentação
Servidor MCP AgentWallet
Infraestrutura de carteira sem permissão para agentes de IA. Crie carteiras, assine transações e transmita on-chain, em qualquer chain EVM e Solana. Proteções integradas. Sem KYC. A única carteira de agente de IA que aceita cripto para suas próprias taxas de API.
Suas chaves podem permanecer na sua máquina. Defina uma variável de ambiente e cada assinatura acontece no seu próprio processo. Nenhum servidor vê a chave, nenhuma empresa pode congelar a carteira, e você pode verificar essa afirmação lendo src/local-wallet.ts ou executando o servidor com a API apontada para uma porta fechada.
Sem KYC. Sem KYT. Sem processo de aprovação. Sem monitoramento de transações. Ninguém pode bloquear sua carteira. Pague com USDC on-chain, sem necessidade de cartão de crédito.
Dois modos
| Local (autocustódia) | Hospedado (custodial) | |
|---|---|---|
| Quem detém a chave | Você, no seu próprio processo | Criptografada nos servidores AgentWallet |
| Configuração | Uma variável de ambiente, sem necessidade de conta | Chave de API |
| Chains | EVM + Solana | EVM + Solana |
| Alguém pode congelar | Não | Sim, é para isso que serve a pausa |
| Proteções de gasto | AGENTWALLET_MAX_TX_NATIVE, AGENTWALLET_MAX_TX_TOKEN, AGENTWALLET_MAX_TX_SOL, AGENTWALLET_MAX_AUTOPAY | Limites no servidor, pausa, limites de taxa |
| Paywalls, uso, cobrança | Também precisa de chave de API | Incluído |
Execute wallet_mode a qualquer momento e o servidor informará em qual modo você está e qual endereço ele controla.
Assinatura local em uma variável
{
"mcpServers": {
"agentwallet": {
"command": "npx",
"args": ["-y", "agentwallet-mcp"],
"env": {
"AGENTWALLET_PRIVATE_KEY": "0xyour_key",
"AGENTWALLET_RPC_8453": "https://your-own-rpc",
"AGENTWALLET_MAX_TX_NATIVE": "0.05"
}
}
}
}
Use AGENTWALLET_KEYFILE=/path/to/key se preferir manter a chave fora da configuração do seu shell. A chave é lida uma vez, nunca gravada em disco, nunca registrada em log e nunca incluída em uma mensagem de erro.
AGENTWALLET_RPC_<chainId> (ou AGENTWALLET_RPC_URL para todas as chains) aponta para um endpoint de sua confiança. Sem ele, um RPC público é usado, e um RPC público pode ver quais endereços você consulta.
AGENTWALLET_MAX_TX_NATIVE é um teto por transação em unidades nativas (ETH, MATIC e assim por diante). No modo hospedado, o servidor aplica limites; no modo local não há servidor, então essas proteções são as únicas existentes. Defina-as.
AGENTWALLET_MAX_TX_TOKEN é o teto equivalente para movimentação de ERC-20, em unidades humanas do token. Defina este também se você mantém stablecoins. O limite nativo não consegue ver uma transferência de token: um envio de ERC-20 carrega value = 0 com o valor nos calldata, então AGENTWALLET_MAX_TX_NATIVE sozinho deixa um saldo de USDC sem teto. AGENTWALLET_MAX_TX_TOKEN cobre transfer, transferFrom, approve, increaseAllowance, Permit2 approve, e deposit() / withdraw(uint256) no contrato de nativo encapsulado da própria chain (então wrap_eth e unwrap_eth continuam funcionando sob o teto), as aprovações porque uma permissão ilimitada é um dreno prestes a acontecer. Qualquer outro calldata enviado a um contrato de token ou ao Permit2 é recusado enquanto o teto estiver definido, porque a proteção não consegue precificá-lo; defina AGENTWALLET_ALLOW_UNKNOWN_TOKEN_CALLS=1 para permitir tais chamadas deliberadamente. increaseAllowance é avaliado no total resultante: a permissão atual é lida primeiro e a chamada recusa se não puder ser lida, então dois incrementos em conformidade não podem acumular uma permissão permanente acima do teto. Chamadas para outros contratos (routers, bridges) passam, pois eles só podem puxar o que uma aprovação já permitiu; um contrato conta como "outro" apenas quando demonstravelmente recusa decimals(), então uma resposta absurda ou malformada, ou um RPC inacessível, recusa em vez de permitir. Decimais são resolvidos localmente a partir do registro confiável, depois pelo próprio decimals() do token; um token que não resolve de nenhuma forma é avaliado com 0 decimais, o único valor que não pode falhar de forma permissiva. Para um token fora do registro, o RPC é a única fonte de decimais, e um RPC que você não controla pode escalar o valor e o teto juntos; fixe esses tokens com AGENTWALLET_TOKEN_DECIMALS (por exemplo 8453:0x<token>=6) e a fixação é usada em todos os lugares onde a resposta do RPC seria usada.
Assinatura local Solana
"env": {
"AGENTWALLET_SOLANA_KEY": "[12,34...]",
"AGENTWALLET_SOLANA_RPC": "https://your-own-rpc",
"AGENTWALLET_MAX_TX_SOL": "1",
"AGENTWALLET_MAX_TX_TOKEN": "25"
}
Aceita qualquer formato que você já tenha: um array id.json solana-keygen, uma chave secreta base58 exportada pela Phantom, ou base64. Use AGENTWALLET_SOLANA_KEYFILE para apontar para um arquivo. Transferências de SOL nativo e tokens SPL são ambas assinadas localmente, e uma conta de token associada ausente é criada automaticamente para o destinatário.
Defina qualquer uma das chaves, ou ambas. Elas são independentes: execute EVM localmente e Solana hospedado, ou o contrário.
Uma operação sem chave local correspondente é recusada, nunca roteada silenciosamente para o assinante hospedado. Se você tem uma chave EVM configurada e solicita uma transferência Solana sem chave Solana, o servidor para e informa qual variável está faltando. Mover fundos silenciosamente para uma chave que você não detém, enquanto você acredita estar em autocustódia, é a pior coisa que este servidor poderia fazer.
Sobre a árvore de dependências
A assinatura local usa viem para EVM e @solana/web3.js para Solana, além de bs58 para análise de chaves. Instruções SPL são construídas manualmente em vez de usar @solana/spl-token, porque esse pacote puxa bigint-buffer, que carrega um aviso de buffer overflow de alta gravidade. Uma carteira não deveria enviar isso para economizar uma dúzia de linhas de codificação de instruções.
npm audit atualmente relata problemas nas dependências de transporte HTTP do @modelcontextprotocol/sdk. Este servidor fala stdio, então esse código nunca é carregado, e o SDK não é algo que este pacote possa corrigir. Execute a auditoria você mesmo. Publicar uma árvore que você pode inspecionar é o objetivo.
Recursos
- 34 ferramentas MCP: crie carteiras, envie transações, aprove tokens, envolva ETH, transfira tokens SPL, pague e aceite pagamentos x402, verifique o modo de custódia e muito mais
- EVM + Solana: Ethereum, Base, Polygon, BSC, Arbitrum, Optimism, Avalanche, Zora, PulseChain, Solana e qualquer outra chain compatível com EVM
- Tokens SOL + SPL: transferências de SOL nativo e transferências de tokens SPL (USDC, USDT, etc.) com criação automática de conta
- Proteções integradas: no modo hospedado, limites diários de gastos, proteção de preço de gás, pausa de emergência e limite de taxa são aplicados no servidor por padrão. No modo local, sua proteção são os tetos por transação que você define (
AGENTWALLET_MAX_TX_NATIVE,AGENTWALLET_MAX_TX_TOKEN,AGENTWALLET_MAX_TX_SOL,AGENTWALLET_MAX_AUTOPAY). Proteção contra replay x402 e verificação on-chain se aplicam de qualquer forma - Pagamentos x402: pague por APIs habilitadas para x402 automaticamente, ou aceite pagamentos x402 em seus próprios endpoints (EVM e Solana)
- Opção de autocustódia: execute o modo local e a chave nunca sai da sua máquina. No modo hospedado, as chaves são criptografadas em repouso, descriptografadas apenas durante a assinatura e zeradas da memória imediatamente após. De qualquer forma, você pode exportar e sair.
- Sem permissão: Sem KYC. Sem KYT. Sem verificação de identidade. Sem processo de aprovação. Sem gatekeeping de conformidade. Cadastre-se, obtenha uma chave de API e comece a transacionar imediatamente.
- Configuração em 30 segundos: três linhas de configuração. Sem SDK para instalar. Sem dependências para gerenciar.
Preços
- $0,00345 por operação
- 6.000 operações gratuitas/mês
- $0,0005 por verificação x402
- 1.000 verificações x402 gratuitas/mês
- Pague com USDC on-chain via x402, sem necessidade de cartão de crédito
- Sem taxa mensal, sem níveis, apenas pague conforme usar
Comparações com concorrentes são mantidas em hifriendbot.com/wallet/#pricing com a data em que foram verificadas pela última vez. Elas ficam lá em vez de aqui porque um README npm publicado não pode ser corrigido quando alguém muda seus preços.
Início Rápido
Obtenha sua chave de API gratuita em hifriendbot.com/wallet, sem necessidade de cartão de crédito, sem KYC, sem espera de aprovação.
Claude Desktop / OpenClaw
Adicione à sua configuração:
{
"mcpServers": {
"agentwallet": {
"command": "npx",
"args": ["-y", "agentwallet-mcp"],
"env": {
"AGENTWALLET_USER": "your_username",
"AGENTWALLET_PASS": "your_api_key",
"AGENTWALLET_WALLET_ID": "1"
}
}
}
}
AGENTWALLET_WALLET_IDé opcional. Defina-o para habilitar o pagamento automático x402: quando você exceder o nível gratuito sem cartão de crédito, o servidor MCP paga automaticamente as operações com USDC desta carteira.Teto de segurança do pagamento automático.
AGENTWALLET_MAX_AUTOPAY(opcional, padrão1) é o máximo que um pagamento x402 pode autorizar, em unidades de stablecoin:1significa um dólar. Ele precifica apenas stablecoins do registro (USDC, USDT, USDbC, DAI nas chains suportadas, USDC e USDT na Solana). Uma exigência no ativo nativo da chain ou em qualquer outro token é recusada, porque "1" medido em ETH são alguns milhares de dólares; liste tais ativos emAGENTWALLET_AUTOPAY_ASSETS(endereços ou mints separados por vírgula, ou a palavranative) para permiti-los, e o teto então se aplica nas unidades do próprio ativo. Qualquer exigência acima do teto é rejeitada em vez de paga, então uma exigência de pagamento malformada ou adulterada não pode drenar a carteira. Este caminho automático liquida apenas exigênciasexact; uma ofertauptoda API é recusada antes de qualquer chamada de carteira, porque pagar um máximo de uso antecipadamente não é o que a oferta significa (usepay_x402, que assina uma autorização Permit2 para isso). O teto é o limite do operador: um argumentomax_paymentpode reduzi-lo para uma chamada, mas nunca aumentá-lo. Aumente a própria variável se você realmente precisar de pagamentos automáticos maiores (por exemplo"5"para até 5 USDC por chamada).
Claude Code
claude mcp add agentwallet \
-e AGENTWALLET_USER=your_username \
-e AGENTWALLET_PASS=your_api_key \
-e AGENTWALLET_WALLET_ID=1 \
-- npx -y agentwallet-mcp
VS Code
Adicione às suas configurações:
{
"mcp": {
"servers": {
"agentwallet": {
"command": "npx",
"args": ["-y", "agentwallet-mcp"],
"env": {
"AGENTWALLET_USER": "your_username",
"AGENTWALLET_PASS": "your_api_key",
"AGENTWALLET_WALLET_ID": "1"
}
}
}
}
}
Ferramentas
| Ferramenta | Descrição |
|---|---|
create_wallet | Criar uma nova carteira EVM ou Solana |
list_wallets | Listar todas as suas carteiras |
get_wallet | Obter detalhes da carteira por ID |
get_balance | Verificar saldo de token nativo em qualquer chain |
get_token_balance | Verificar saldo de token ERC-20 ou SPL |
get_token_info | Obter nome, símbolo e decimais de token ERC-20 |
transfer | Enviar tokens nativos (ETH, SOL, POL, BNB, etc.) |
transfer_token | Enviar tokens ERC-20 ou SPL (USDC, USDT, etc.) |
send_transaction | Assinar e transmitir uma transação bruta |
sign_transaction | Assinar uma transação sem transmitir |
call_contract | Chamada de contrato somente leitura (eth_call) |
approve_token | Aprovar gasto de token ERC-20 para DeFi |
get_allowance | Verificar permissão de token ERC-20 |
wrap_eth | Envolver tokens nativos em WETH/WAVAX/etc. |
unwrap_eth | Desenvolver WETH de volta para tokens nativos |
pay_x402 | Pagar faturas x402 (exatas via EIP-3009, até via Permit2), com aprovações acima do teto |
check_approval | Status de uma aprovação humana criada por um pay_x402 acima do teto |
approve_permit2 | Aprovação única de token para Permit2 para endpoints upto |
check_token_risk | Flags de honeypot, imposto, poder do proprietário e concentração de detentores para um token |
create_paywall | Criar um paywall x402 para cobrar por um recurso |
list_paywalls | Listar todos os seus paywalls x402 |
get_paywall | Obter detalhes do paywall por ID |
update_paywall | Atualizar preço, recurso ou status do paywall |
delete_paywall | Excluir um paywall |
get_paywall_payments | Ver histórico de pagamentos de um paywall |
get_x402_revenue | Agregar estatísticas de receita em todos os paywalls |
wallet_mode | Informar se a assinatura é local (autocustódia) ou hospedada, e qual endereço está em uso |
export_wallet_key | Como exportar uma chave de carteira hospedada e migrar para autocustódia |
buy_verification_credits | Comprar créditos de verificação x402 com USDC on-chain |
get_usage | Verificar seu uso mensal e cobrança |
get_chains | Listar todas as chains suportadas |
pause_wallet | Pausar uma carteira em emergência |
unpause_wallet | Retomar uma carteira pausada |
delete_wallet | Excluir uma carteira |
Chains Suportadas
| Chain | ID | Token Nativo | Stablecoin |
|---|---|---|---|
| Ethereum | 1 | ETH | USDC |
| Base | 8453 | ETH | USDC |
| Polygon | 137 | POL | USDC |
| BSC | 56 | BNB | USDT |
| Arbitrum | 42161 | ETH | USDC |
| Optimism | 10 | ETH | USDC |
| Avalanche | 43114 | AVAX | USDC |
| Zora | 7777777 | ETH | USDC |
| PulseChain | 369 | PLS | USDC |
| Solana | 900 | SOL | USDC |
| Solana Devnet | 901 | SOL | USDC |
Caso de Uso: GuessMarket
Combine com guessmarket-mcp para permitir que seu agente de IA negocie mercados de previsão:
- Crie uma carteira na Base
- Aprove o gasto de USDC
- Compre ações SIM/NÃO em mercados de previsão
- Forneça liquidez e ganhe taxas de negociação
- Resgate seus ganhos
Tudo on-chain. Tudo via MCP. Sem necessidade de frontend.
Pagamentos x402
O AgentWallet fala o padrão aberto de pagamento x402 da forma como a especificação define. Quando seu agente de IA acessa uma API que responde com HTTP 402, o pay_x402 executa todo o fluxo:
- Busca a URL e lê os requisitos de pagamento, do cabeçalho v2
PAYMENT-REQUIREDou do corpo JSON v1. - Escolhe uma opção de
exact(você pode direcionar comprefer_chain). - Assina uma EIP-3009
TransferWithAuthorizationexatamente para esse valor. Nada é transmitido e nenhum gás é pago pelo pagador; o facilitador do endpoint liquida on-chain. - Repete a requisição com o cabeçalho de pagamento (
PAYMENT-SIGNATUREpara v2,X-PAYMENTpara v1). - Retorna a resposta, o recibo de liquidação (
PAYMENT-RESPONSE/X-PAYMENT-RESPONSE) e, se o endpoint recusou, o motivo informado emretry_error.
Verificado contra o facilitador público da Coinbase (isValid: true para payloads v1 e v2) e servidores x402 ativos na Base. Funciona em ambos os modos de custódia: a chave local assina no processo; carteiras hospedadas assinam via POST /wallets/{id}/x402/authorize, um endpoint restrito que só assina essa estrutura e aplica as mesmas verificações de pausa e limite de token que uma transferência.
pay_x402(
url="https://api.example.com/premium-data",
wallet_id=1,
max_payment="1.00"
)
max_payment reduz o limite para uma chamada. Não pode aumentá-lo: AGENTWALLET_MAX_AUTOPAY (padrão 1) é o teto do operador, e um max_payment acima dele é ignorado e reportado como max_payment_ignored, então nem um endpoint 402 malicioso nem um agente com prompt injection podem autorizar mais do que o operador permitiu. Carteiras hospedadas só podem ultrapassar o teto mediante aprovação do proprietário por e-mail (abaixo); o modo local eleva a variável. No modo local, AGENTWALLET_MAX_TX_TOKEN também se aplica a autorizações, porque uma autorização é uma transferência que outra pessoa executa. Autorizações são válidas por no máximo AGENTWALLET_X402_MAX_TIMEOUT segundos (padrão 3600), independentemente do tempo que o endpoint pedir, e uma chamada repetida de pay_x402 para o mesmo endpoint, valor e destinatário dentro dessa janela reenvia a assinatura anterior em vez de assinar uma segunda (o nonce é de uso único, então um servidor que reteve o recurso após a liquidação não pode ser pago duas vezes; passe fresh_authorization=true para forçar uma nova). O rótulo exibido para o ativo vem do registro ou da cadeia, nunca do corpo do 402.
Esquemas. exact (EIP-3009, sem gás para o pagador) é o preferido e funciona em todas as cadeias EVM que o AgentWallet conhece. upto (um máximo Permit2 que o vendedor liquida pelo uso real) é assinado como um PermitWitnessTransferFrom vinculado ao facilitador do endpoint; requer um approve_permit2 único por token (ou AGENTWALLET_PERMIT2_AUTO_APPROVE=1). Uma opção de upto sem extra.facilitatorAddress é recusada, nunca aproximada com uma transferência antecipada. Requisições de ativos nativos e Solana, e os próprios paywalls do AgentWallet, são pagas por uma transferência on-chain comprovada pelo hash da transação, que é o que esses servidores verificam.
Aprovações acima do limite. Em uma carteira hospedada, um pagamento acima do limite não precisa falhar. Com request_approval (padrão ativado; AGENTWALLET_APPROVALS=0 desativa), o proprietário da carteira recebe um e-mail com links de aprovar e negar, pay_x402 retorna um approval_id, e o agente tenta novamente assim que check_approval indicar aprovação. Uma aprovação é vinculada a uma carteira, cadeia, ativo, destinatário e máximo específicos, expira em 24 horas e é consumida por uma assinatura. O modo local não tem canal de aprovação: os limites no seu ambiente são a política.
Risco de ativo. check_token_risk (e todo resultado de approve_token) reporta flags de honeypot, imposto, poder do proprietário, fonte verificada, concentração de detentores e liquidez da GoPlus Security, com fallback on-chain. Um aviso para o chamador avaliar, nunca um bloqueio.
Prova. Liquidações reais estão listadas em PAYMENTS.md; a primeira é um pagamento de 0,02 USDC exact na Base com o facilitador pagando o gás.
Pague qualquer API x402 pelo Claude em três passos
- Adicione o servidor (um dos trechos em Quick Start). Autocustódia: defina
AGENTWALLET_PRIVATE_KEYpara uma chave que tenha USDC na Base. Hospedado:AGENTWALLET_USEReAGENTWALLET_PASSde hifriendbot.com/wallet. - Pergunte: "Use pay_x402 para POST https://api.ozdreamtools.de/api/holidays com corpo {"year":2026,"state":"BY"} e um max_payment de 0.05."
- Leia o resultado:
payment_made: true, o valor,payment_methodesettlement.transaction, o hash on-chain. Sem necessidade de ETH paraexact: o facilitador do endpoint paga o gás.
Domínios de token. O domínio EIP-712 vem do extra.name / extra.version do endpoint, depois de um registro curto de implantações de USDC, depois do próprio name() / version() do contrato do token. Se nenhum deles responder, o pagamento é recusado em vez de assinado com um domínio adivinhado.
Pagadores delegados. Se o endereço pagador for uma conta delegada EIP-7702, pay_x402 reporta em payer_delegation (o delegado e se ele responde a ERC-1271). Um delegado sem ERC-1271 é recusado por facilitadores que verificam o código da conta antes de recuperar o assinante, e o motivo que retornam parece uma falha de assinatura; o aviso nomeia a causa real. Pague de uma EOA simples para liquidação confiável.
Aceitação x402
O AgentWallet também permite aceitar pagamentos x402. Crie um paywall, aponte para qualquer recurso e obtenha uma URL pública que cobra agentes automaticamente:
create_paywall(
wallet_id=1,
name="Premium API",
amount="0.01",
token_name="USDC",
token_address="0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
chain_id=8453,
resource_url="https://your-api.com/data"
)
Quando um agente acessa a URL do paywall:
- Recebe HTTP 402 com os requisitos de pagamento
- Paga on-chain usando
pay_x402(ou qualquer cliente compatível com x402) - Tenta novamente com prova de pagamento
- Recebe o conteúdo protegido
A verificação on-chain garante que todo pagamento é real. A proteção contra replay evita gastos duplicados. O rastreamento de receita mostra quem pagou, quanto e quando. 1.000 verificações gratuitas/mês, depois $0,0005 cada. Veja a comparação de preços para saber como isso se compara.
Como Nos Comparamos
| Recurso | Coinbase CDP | AgentWallet |
|---|---|---|
| Tempo de Configuração | Instalar SDK + configurar | 3 linhas de configuração |
| Processo de Aprovação | Verificação de identidade necessária | Nenhum, acesso instantâneo |
| KYC Necessário | Sim | Não |
| KYT / Monitoramento de Transações | Sim | Não |
| Pode Bloquear Sua Carteira | Sim | Não |
| Proteções Integradas | Sim (exige configuração) | Sim (hospedado: ativo por padrão; local: limites de ambiente que você define) |
| Operações Grátis / Mês | 5.000 | 6.000 |
| Custo por Operação | $0,005 | $0,00345 |
| Custo de Verificação x402 | $0,001 | $0,0005 |
| Verificações x402 Grátis / Mês | 1.000 | 1.000 |
| Aceitação x402 (Paywalls) | Não | Sim |
| Pagar Taxas de API com Cripto | Não (somente cartão de crédito) | Sim (USDC via x402) |
| Cadeias Suportadas | 8 EVM + Solana | Qualquer EVM + Solana |
| Ferramentas de Token | Sim | ERC-20 + SPL (34 ferramentas) |
| Servidor MCP | Sim | Sim |
Pague com Cripto, Sem Cartão de Crédito
O AgentWallet é a única infraestrutura de carteira para agentes de IA que aceita cripto para suas próprias taxas de API. Todo concorrente — Coinbase CDP, Circle, MoonPay, Crossmint, Turnkey — exige cartão de crédito ou fatura mensal. Com o AgentWallet, seu agente pode pagar por operações com USDC on-chain via protocolo x402. Sem cartão de crédito, sem fatura, sem portal de cobrança. Apenas pagamentos on-chain.
Quando seu agente excede o nível gratuito (6.000 operações/mês) sem cartão de crédito configurado, a API retorna HTTP 402 com instruções de pagamento em USDC. Seu agente paga on-chain, tenta novamente com prova de pagamento e a operação é executada. Totalmente automatizado via servidor MCP.
Você também pode pré-comprar créditos de verificação x402 com USDC usando a ferramenta buy_verification_credits, mantendo seus paywalls ativos além das 1.000 verificações gratuitas/mês sem precisar de cartão de crédito.
Proteções Integradas
Quais proteções se aplicam depende de quem detém a chave.
Modo hospedado (o servidor detém a chave): todas as proteções abaixo estão ativas por padrão, sem necessidade de configuração.
- Criptografado em repouso: chaves privadas criptografadas antes do armazenamento e nunca saem do servidor
- Zeragem de memória: chaves apagadas da memória imediatamente após cada operação de assinatura
- Limites diários de gasto: defina um teto diário por carteira em USD, aplicado pelo servidor em toda transação
- Proteção de preço de gás: transações bloqueadas quando os preços de gás sobem acima de limites seguros
- Pausa de emergência: congele instantaneamente qualquer carteira ou todas as carteiras com um clique
- Limitação de taxa: requisições de API limitadas por minuto para prevenir abuso e ataques de força bruta
Modo local (você detém a chave): não há servidor no caminho de assinatura, então os limites e a pausa do lado do servidor não podem ver ou impedir uma transação assinada localmente, e ninguém (incluindo nós) pode congelar uma carteira local. Sua proteção são os limites por transação aplicados dentro do seu próprio processo antes de qualquer assinatura. Defina-os antes de financiar a carteira; um limite não definido significa sem limite.
AGENTWALLET_MAX_TX_NATIVE: teto por transação em unidades nativas (ETH, MATIC e assim por diante)AGENTWALLET_MAX_TX_TOKEN: teto por transferência ou aprovação de ERC-20, em unidades humanas do tokenAGENTWALLET_ALLOW_UNKNOWN_TOKEN_CALLS: defina como1para permitir que calldata que o limite de token não consegue precificar alcance um contrato de token ou Permit2 (recusado por padrão enquanto o limite estiver definido)AGENTWALLET_TOKEN_DECIMALS: fixe decimais para tokens fora do registro (8453:0x<token>=6,<mint>=9); uma fixação é usada para valores e limites em vez de consultar o RPCAGENTWALLET_MAX_TX_SOL: teto por transferência nativa de SOL (também cobra o aluguel da conta de token do destinatário que um envio SPL precisa criar). Não cobre valores de tokens SPL:AGENTWALLET_MAX_TX_TOKENcobre, na Solana como na EVMAGENTWALLET_MAX_AUTOPAY: teto por pagamento automático x402 em unidades de stablecoin (padrão1);AGENTWALLET_AUTOPAY_ASSETSinclui ativos nativos ou não estáveis;AGENTWALLET_X402_MAX_TIMEOUTlimita por quanto tempo uma autorização assinada permanece válida (padrão 3600 segundos)AGENTWALLET_SOLANA_RPC_<chainId>(ouAGENTWALLET_SOLANA_RPCpara todos os clusters): o hash de gênese do RPC é verificado contra o ID da cadeia antes de qualquer envio, e oeth_chainIdde um RPC EVM também, para que uma URL não possa servir silenciosamente uma rede diferente da solicitadaAGENTWALLET_TOKEN_RISK=0: pule a consulta GoPlus queapprove_tokenexecuta (uma chamada de terceiros que revela qual token você está prestes a aprovar)
Todas as variáveis de limite são validadas na inicialização; um erro de digitação interrompe o servidor em vez de ser lido como "sem limite". wallet_mode reporta todas as proteções, incluindo o limite de token e se chamadas de token desconhecidas são permitidas. Node.js 22.19 ou mais recente é necessário.
Qualquer modo, para paywalls x402 que você executa via API hospedada:
- Proteção contra replay: todo pagamento x402 verificado on-chain com rastreamento único de transação
- Verificação on-chain: pagamentos x402 verificados diretamente na blockchain com compromisso finalizado
Programa de recompensa por bugs: $50 a $500 para divulgação responsável (detalhes).
Links
- Site: hifriendbot.com/wallet
- npm: agentwallet-mcp
- Segurança: security@hifriendbot.com, política e histórico de divulgação em SECURITY.md
Segurança
pay_x402 valida a URL de destino antes de cada requisição de saída e novamente em
cada salto de redirecionamento. Literais de IP são canonicalizados (incluindo IPv6 mapeado por IPv4
como [::ffff:127.0.0.1]) e nomes de host são resolvidos, com loopback,
privado, link-local, NAT de grau operadora, multicast e destinos de
metadados de nuvem recusados.
Validação e conexão usam a mesma resposta DNS. Cada salto resolve uma vez, e
o socket é fixado a um endereço dessa resposta, então um nome de host não pode
resolver público para a verificação e privado para a conexão. O nome de host ainda é
usado para o cabeçalho Host e para SNI TLS e validação de certificado, então
a fixação é invisível para endpoints legítimos.
As credenciais permanecem com a origem para a qual foram fornecidas. Se um endpoint redirecionar
pay_x402 para uma origem diferente, os cabeçalhos Authorization, Cookie
e X-PAYMENT fornecidos pelo chamador, e qualquer outro cabeçalho personalizado, são descartados antes do
próximo salto; apenas os cabeçalhos de negociação de conteúdo (Accept, Accept-Language,
Accept-Encoding, User-Agent, Content-Type) são mantidos. Um redirecionamento que
transforma um POST em GET também remove os cabeçalhos do corpo. Redirecionamentos para a mesma origem mantêm
tudo, como um navegador faria.
Relate problemas de segurança em particular para security@hifriendbot.com.
Licença
MIT