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 chaveVocê, no seu próprio processoCriptografada nos servidores AgentWallet
ConfiguraçãoUma variável de ambiente, sem necessidade de contaChave de API
ChainsEVM + SolanaEVM + Solana
Alguém pode congelarNãoSim, é para isso que serve a pausa
Proteções de gastoAGENTWALLET_MAX_TX_NATIVE, AGENTWALLET_MAX_TX_TOKEN, AGENTWALLET_MAX_TX_SOL, AGENTWALLET_MAX_AUTOPAYLimites no servidor, pausa, limites de taxa
Paywalls, uso, cobrançaTambém precisa de chave de APIIncluí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.

AgentWallet demo, AI agent pays x402 invoice automatically

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ão 1) é o máximo que um pagamento x402 pode autorizar, em unidades de stablecoin: 1 significa 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 em AGENTWALLET_AUTOPAY_ASSETS (endereços ou mints separados por vírgula, ou a palavra native) 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ências exact; uma oferta upto da API é recusada antes de qualquer chamada de carteira, porque pagar um máximo de uso antecipadamente não é o que a oferta significa (use pay_x402, que assina uma autorização Permit2 para isso). O teto é o limite do operador: um argumento max_payment pode 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

FerramentaDescrição
create_walletCriar uma nova carteira EVM ou Solana
list_walletsListar todas as suas carteiras
get_walletObter detalhes da carteira por ID
get_balanceVerificar saldo de token nativo em qualquer chain
get_token_balanceVerificar saldo de token ERC-20 ou SPL
get_token_infoObter nome, símbolo e decimais de token ERC-20
transferEnviar tokens nativos (ETH, SOL, POL, BNB, etc.)
transfer_tokenEnviar tokens ERC-20 ou SPL (USDC, USDT, etc.)
send_transactionAssinar e transmitir uma transação bruta
sign_transactionAssinar uma transação sem transmitir
call_contractChamada de contrato somente leitura (eth_call)
approve_tokenAprovar gasto de token ERC-20 para DeFi
get_allowanceVerificar permissão de token ERC-20
wrap_ethEnvolver tokens nativos em WETH/WAVAX/etc.
unwrap_ethDesenvolver WETH de volta para tokens nativos
pay_x402Pagar faturas x402 (exatas via EIP-3009, até via Permit2), com aprovações acima do teto
check_approvalStatus de uma aprovação humana criada por um pay_x402 acima do teto
approve_permit2Aprovação única de token para Permit2 para endpoints upto
check_token_riskFlags de honeypot, imposto, poder do proprietário e concentração de detentores para um token
create_paywallCriar um paywall x402 para cobrar por um recurso
list_paywallsListar todos os seus paywalls x402
get_paywallObter detalhes do paywall por ID
update_paywallAtualizar preço, recurso ou status do paywall
delete_paywallExcluir um paywall
get_paywall_paymentsVer histórico de pagamentos de um paywall
get_x402_revenueAgregar estatísticas de receita em todos os paywalls
wallet_modeInformar se a assinatura é local (autocustódia) ou hospedada, e qual endereço está em uso
export_wallet_keyComo exportar uma chave de carteira hospedada e migrar para autocustódia
buy_verification_creditsComprar créditos de verificação x402 com USDC on-chain
get_usageVerificar seu uso mensal e cobrança
get_chainsListar todas as chains suportadas
pause_walletPausar uma carteira em emergência
unpause_walletRetomar uma carteira pausada
delete_walletExcluir uma carteira

Chains Suportadas

ChainIDToken NativoStablecoin
Ethereum1ETHUSDC
Base8453ETHUSDC
Polygon137POLUSDC
BSC56BNBUSDT
Arbitrum42161ETHUSDC
Optimism10ETHUSDC
Avalanche43114AVAXUSDC
Zora7777777ETHUSDC
PulseChain369PLSUSDC
Solana900SOLUSDC
Solana Devnet901SOLUSDC

Caso de Uso: GuessMarket

Combine com guessmarket-mcp para permitir que seu agente de IA negocie mercados de previsão:

  1. Crie uma carteira na Base
  2. Aprove o gasto de USDC
  3. Compre ações SIM/NÃO em mercados de previsão
  4. Forneça liquidez e ganhe taxas de negociação
  5. 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:

  1. Busca a URL e lê os requisitos de pagamento, do cabeçalho v2 PAYMENT-REQUIRED ou do corpo JSON v1.
  2. Escolhe uma opção de exact (você pode direcionar com prefer_chain).
  3. Assina uma EIP-3009 TransferWithAuthorization exatamente para esse valor. Nada é transmitido e nenhum gás é pago pelo pagador; o facilitador do endpoint liquida on-chain.
  4. Repete a requisição com o cabeçalho de pagamento (PAYMENT-SIGNATURE para v2, X-PAYMENT para v1).
  5. Retorna a resposta, o recibo de liquidação (PAYMENT-RESPONSE / X-PAYMENT-RESPONSE) e, se o endpoint recusou, o motivo informado em retry_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

  1. Adicione o servidor (um dos trechos em Quick Start). Autocustódia: defina AGENTWALLET_PRIVATE_KEY para uma chave que tenha USDC na Base. Hospedado: AGENTWALLET_USER e AGENTWALLET_PASS de hifriendbot.com/wallet.
  2. 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."
  3. Leia o resultado: payment_made: true, o valor, payment_method e settlement.transaction, o hash on-chain. Sem necessidade de ETH para exact: 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:

  1. Recebe HTTP 402 com os requisitos de pagamento
  2. Paga on-chain usando pay_x402 (ou qualquer cliente compatível com x402)
  3. Tenta novamente com prova de pagamento
  4. 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

RecursoCoinbase CDPAgentWallet
Tempo de ConfiguraçãoInstalar SDK + configurar3 linhas de configuração
Processo de AprovaçãoVerificação de identidade necessáriaNenhum, acesso instantâneo
KYC NecessárioSimNão
KYT / Monitoramento de TransaçõesSimNão
Pode Bloquear Sua CarteiraSimNão
Proteções IntegradasSim (exige configuração)Sim (hospedado: ativo por padrão; local: limites de ambiente que você define)
Operações Grátis / Mês5.0006.000
Custo por Operação$0,005$0,00345
Custo de Verificação x402$0,001$0,0005
Verificações x402 Grátis / Mês1.0001.000
Aceitação x402 (Paywalls)NãoSim
Pagar Taxas de API com CriptoNão (somente cartão de crédito)Sim (USDC via x402)
Cadeias Suportadas8 EVM + SolanaQualquer EVM + Solana
Ferramentas de TokenSimERC-20 + SPL (34 ferramentas)
Servidor MCPSimSim

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 token
  • AGENTWALLET_ALLOW_UNKNOWN_TOKEN_CALLS: defina como 1 para 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 RPC
  • AGENTWALLET_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_TOKEN cobre, na Solana como na EVM
  • AGENTWALLET_MAX_AUTOPAY: teto por pagamento automático x402 em unidades de stablecoin (padrão 1); AGENTWALLET_AUTOPAY_ASSETS inclui ativos nativos ou não estáveis; AGENTWALLET_X402_MAX_TIMEOUT limita por quanto tempo uma autorização assinada permanece válida (padrão 3600 segundos)
  • AGENTWALLET_SOLANA_RPC_<chainId> (ou AGENTWALLET_SOLANA_RPC para todos os clusters): o hash de gênese do RPC é verificado contra o ID da cadeia antes de qualquer envio, e o eth_chainId de um RPC EVM também, para que uma URL não possa servir silenciosamente uma rede diferente da solicitada
  • AGENTWALLET_TOKEN_RISK=0: pule a consulta GoPlus que approve_token executa (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

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