API, 데이터 피드 또는 MCP 도구가 에이전트에 402 Payment Required로 응답하면, MetaMask Agent Wallet은 가입이나 API 키 없이 USDC로 결제할 수 있습니다. 에이전트가 서버의 제안을 읽고 자산, 금액, 네트워크, 수신자를 보여 드리며, 사용자가 승인하면 일회용 결제 승인에 서명합니다. 개인 키는 지갑 안에 그대로 유지됩니다. 또한 서명 요청은 지갑 서비스의 위협 스캔도 거칩니다.
면책 조항: 이 가이드는 교육 목적으로만 제공됩니다. 금융 조언이나 투자 권유가 아니며, 영국 거주자를 대상으로 하지 않습니다. AI 에이전트가 수행하는 암호화폐 결제에는 위험이 따르며 모든 사용자에게 적합하지는 않습니다.
이 문서는 Agent Wallet으로 x402 결제를 진행하는 방법을 안내하는 실무 가이드입니다. x402가 무엇인지, 402 핸드셰이크가 어떻게 작동하는지, 누가 프로토콜을 관리하는지 알아보려면 x402란 무엇인가를 참고하세요. 자체 앱에 위임 기반 x402 결제를 구축하는 개발자는 대신 Smart Accounts Kit x402 가이드부터 시작하세요. 아직 Agent Wallet을 설정하지 않았다면 퀵스타트부터 시작하세요.
에이전트가 API 키를 보관하지 않고 호출당 결제하는 이유
유료 API를 쓰려면 보통 계정과 오래 유효한 API 키가 필요합니다. AI 에이전트의 경우 이 키를 에이전트가 읽을 수 있는 곳에 두어야 하므로 공격 대상이 되기 쉽습니다. 2026년 2월 5일에 발표된 연구에서 Snyk는 ClawHub 마켓플레이스의 스킬 3,984개를 스캔했고, 그중 283개(약 7.1%)가 API 키, 비밀번호, 카드 번호를 모델의 컨텍스트 윈도우나 평문 메모리 파일로 전달하고 있음을 발견했습니다. 이런 곳에서는 프롬프트 인젝션으로 정보를 다시 빼낼 수 있습니다.
x402는 상시 보관되는 비밀 정보를 없앱니다. 에이전트는 특정 수신자에게 정확한 금액을 지급하겠다는 서명된 승인으로 요청마다 결제하며, 이 승인은 짧은 시간 동안만 유효합니다. Agent Wallet에서는 이 서명이 mm wallet sign-typed-data를 통해 지갑 서비스에서 생성되므로, 에이전트는 개인 키나 API 키를 직접 다루지 않습니다. 각 승인에는 무작위 nonce가 포함되어 있어 두 번 정산될 수 없습니다. 에이전트가 다른 에이전트에 서비스를 판매하는 경우를 포함해 x402가 에이전트 상거래를 어떻게 바꾸는지에 대한 더 폭넓은 내용은 후속 글에서 다룰 예정입니다.
x402 구성 요소 살펴보기
x402 지원은 mm 하위 명령어가 아니라 metamask-agent-wallet 스킬 안에 포함된 Python 헬퍼 스크립트로 제공됩니다. 에이전트는 요청에 402가 반환되면 이 스크립트를 호출합니다. 보통은 일상적인 말로 요청하면 됩니다(「이 URL에서 프리미엄 데이터를 가져오고, 402가 반환되면 결제해 줘」). 그러면 에이전트가 아래 단계를 대신 실행합니다.
단계 | 명령어(에이전트가 실행) | 기능 | 자금 사용 여부 |
HTTP 402 확인 | x402_pay.py inspect
| 서버의 제안(자산, 금액, 네트워크, 수신자, 리소스)을 읽습니다 | 아니요 |
HTTP 402 결제 | x402_pay.py pay --confirm
| 승인에 서명하고 요청을 재시도한 뒤, 정산 해시와 응답을 반환합니다 | 예 |
유료 MCP 도구 확인 | x402_pay.py mcp-inspect --challenge
| 유료 MCP 도구가 반환한 결제 챌린지를 읽습니다 | 아니요 |
유료 MCP 도구용 서명 | x402_pay.py mcp-sign --challenge --confirm
| 승인에 서명하고, 재시도하는 도구 호출에 사용할 페이로드를 출력합니다 | 예 |
제안 중에서 선택 | --asset 또는 --network
| 서버가 여러 옵션을 제시할 때 하나를 선택합니다 | 해당 없음 |
GET이 아닌 엔드포인트 결제 | --method POST --data ''
| 결제 정보를 첨부해 동일한 요청을 다시 보냅니다 | 해당 없음 |
전체 레퍼런스는 x402 결제 가이드와 스킬의 x402 레퍼런스에서 확인할 수 있습니다.
이 흐름을 이해했다면, Agent Wallet으로 x402 결제를 진행할 때 도움이 되는 9가지 팁을 살펴보세요.
1. 서비스가 요구하는 네트워크에 USDC 충전하기
어떤 자산과 네트워크를 받을지는 서버가 정합니다. 에이전트는 서버가 제안한 옵션으로만 결제할 수 있습니다.
Agent Wallet은 EVM 제안만 결제하며, mm chains list에 포함된 네트워크에서만 가능합니다. 잔액은 체인별로 관리되므로 Ethereum의 USDC로는 Base의 제안을 결제할 수 없습니다. 다른 체인에 USDC가 있다면 에이전트에게 필요한 체인으로 자금을 옮겨 달라고 요청할 수도 있습니다. 결제 자체는 가스비가 없는 오프체인 승인입니다. 서비스의 facilitator가 이를 온체인에서 정산하므로, 결제에 필요한 네트워크 수수료를 내기 위해 지갑에 네이티브 토큰을 보유할 필요가 없습니다.
2. 결제 전에 제안 내용 확인하기
inspect는 서명이나 지출 없이 402 응답만 읽습니다. 자산, 사람이 읽기 쉬운 형태의 금액, 네트워크, 수신자(payTo), 리소스를 반환합니다. 스킬은 에이전트가 pay를 실행하기 전에 이러한 세부 정보를 사용자에게 보여 주고 승인을 기다리도록 지시하며, pay는 --confirm 없이는 실행되지 않습니다.
서명하기 전에 몇 가지 검사가 실행됩니다. 리소스 URL은 반드시 https://여야 합니다. 스크립트는 리다이렉트를 따라가지 않으므로, 다른 호스트로의 리다이렉트로 인해 사용자가 선택하지 않은 서버로 결제가 우회될 수 없습니다. 금액은 토큰의 최소 단위 기준 양의 정수여야 하며, 수신자와 자산은 유효한 주소여야 합니다. exact 스킴에서는 서명되는 금액이 제안된 금액과 정확히 일치합니다. 서버가 그 금액까지 청구할 수 있는 상한선이 아닙니다.
3. 모든 결제에 대해 확인 절차를 기본값으로 설정하기
Agent Wallet 스킬을 사용하면 에이전트가 각 x402 결제 전에 기본적으로 자산, 금액, 네트워크, 수신자, 리소스를 사용자에게 확인하도록 지시할 수 있습니다. 이 확인은 에이전트와의 대화 중에 이루어집니다. 이는 2FA와는 별개이며, 2FA는 요청이 플래그 처리되었거나 사용자 정책을 벗어난 경우에만 지갑 서비스가 실행합니다.
한 세션에서 리서치 보고서, 몇 건의 데이터 조회, 기프트 카드 등을 구매하는 에이전트에는 이 방식이 적합합니다. 하지만 몇 초마다 유료 엔드포인트를 호출하는 루프에는 맞지 않습니다. 호출할 때마다 사용자의 확인을 기다려야 하기 때문입니다. 여러 단계에서 비용이 청구되는 다단계 구매는 매 단계마다 확인을 요청합니다.
4. x402 결제에서 Guard Mode가 확인하는 항목 알아보기
서버 지갑 모드에서는 모든 서명 요청이 지갑 서비스로 전달되며, 지갑 서비스는 서명하기 전에 위협 스캔을 실행합니다. 플래그 처리된 요청은 사용자가 승인할 때까지 AWAITING_MFA 상태로 일시 중지됩니다. x402 인증은 서버가 정한 짧은 유효 시간을 가집니다. Guard Mode가 2FA를 위해 서명을 일시 중지했고 유효 시간이 지난 뒤에 승인하면, 해당 인증은 사용되지 않은 채 만료됩니다. 이 경우 에이전트에게 pay를 다시 실행하도록 하세요. 새 402를 가져와 새로운 값으로 서명합니다. 승인 요청은 로그인 방식에 따라 전달됩니다. Google 또는 이메일 로그인은 이메일 링크로, QR 로그인은 MetaMask Mobile의 알림 메뉴로 도착합니다.
최근 24시간 기준 유출 한도는 여기서 다르게 작동합니다. 유출 정책은 토큰 전송, 스왑, 예치를 추적하며, 2026년 10월 27일 기준으로 Permit2 같은 서명은 유출 계산에 포함되지 않는다고 명시하고 있습니다. x402 인증은 서명이므로 24시간 한도는 x402 지출의 신뢰할 수 있는 상한이 아닙니다. 확인 단계는 에이전트가 스킬을 따르는 것에 의존하며, 확실한 최대 한도는 결제 지갑의 토큰 잔액입니다. 노출을 제한하는 한 가지 방법은 유료 API 호출용으로만 자금을 넣은 별도의 지갑을 쓰는 것입니다. mm wallet create와 mm wallet select로 여러 지갑을 관리할 수 있습니다.
5. 서버가 여러 옵션을 제공하면 하나를 선택하기
402 응답이 같은 스킴을 지원되는 여러 네트워크 또는 자산에 걸쳐 나열하면, 스크립트는 대신 선택하지 않고 “multiple eligible options” 오류와 함께 중단됩니다. Base와 Monad 모두에서 USDC를 받는 서비스가 여기에 해당할 수 있습니다. --network(예: Base는 eip155:8453) 또는 토큰 컨트랙트와 함께 --asset을 지정해 다시 실행하세요. 자금을 넣어 둔 네트워크를 에이전트에게 알려 주면 처음부터 해당 플래그를 전달할 수 있습니다.
6. Agent Wallet이 서명할 수 있는 오퍼인지 확인하기
헬퍼는 x402 프로토콜 v1과 v2에 대해 EVM 네트워크에서 EIP-3009 transferWithAuthorization으로 exact 스킴에 서명합니다. 다음과 같은 경우에는 명확한 오류를 반환하고 아무것도 서명하지 않습니다.
오퍼 | 거부되는 이유 |
Permit2 자산 전송 방식만 지원하는 경우 | 헬퍼는 EIP-3009에만 서명합니다 |
upto 또는 기타 스킴
| exact만 지원됩니다
|
Solana 또는 기타 비 EVM 네트워크 | mm chains list에 있는 EVM 네트워크만 지원됩니다
|
EIP-712 도메인 name 및 version 누락 | 헬퍼는 서명 도메인을 추측하지 않습니다 |
표준 x402 챌린지가 아닌 402 응답 | 먼저 결제한 뒤 해시를 보내는 방식은 x402가 아닙니다 |
서비스가 같은 자산에 대해 Permit2와 EIP-3009를 모두 제공하면 EIP-3009 옵션이 사용됩니다. 각 오류는 문제 해결 페이지에 정리되어 있습니다.
7. 결제를 무작정 다시 실행하지 않기
스크립트는 과거 결제 기록을 보관하지 않습니다. EIP-3009 nonce는 같은 서명된 인증이 두 번 정산되는 것을 막아 주지만, pay를 새로 실행할 때마다 새로운 결제가 만들어집니다. pay가 “payment not accepted”를 반환하면, 다시 시도하기 전에 정산 출력과 인증 유효 시간이 만료되었는지 확인하세요. 같은 리소스에 대해 두 번째로 실행하면 두 번째 청구가 발생하며, x402 가이드도 호출하는 쪽에서 반복 호출을 방지하도록 안내합니다.
8. MCP 도구와 POST 엔드포인트도 결제하기
x402는 GET 요청에만 국한되지 않습니다. --method와 --data를 전달하면 헬퍼가 결제를 첨부한 채 동일한 요청 본문을 다시 전송하므로, 유료 POST(예: AI 채팅 완성 엔드포인트)도 유료 다운로드처럼 작동합니다.
유료 MCP 도구는 x402 v2의 MCP 전송을 사용합니다. 결제하지 않은 도구 호출은 결제 챌린지가 담긴 오류 결과를 반환합니다. 에이전트는 mcp-inspect를 실행해 오퍼를 보여 주고, 사용자가 승인하면 mcp-sign --confirm을 실행한 뒤, 서명된 페이로드를 _meta["x402/payment"]에 담아 도구 호출을 다시 시도합니다. 스크립트는 서명만 할 뿐 MCP를 사용하지 않으므로, 재시도는 에이전트 자체의 MCP 세션이 전달합니다. 재시도에서 또 다른 챌린지가 돌아오면 결제가 정산되지 않은 것이므로, 에이전트는 다시 서명하지 않고 사용자에게 보고합니다.
에이전트가 x402로 구매하는 것들
한 가지 사용 사례는 유료 데이터입니다. 트레이딩 에이전트는 실행 전에 시그널이나 리서치 dev를 가져온 다음, 실행을 위해 스왑 또는 무기한 선물(perps)로 넘길 수 있습니다. 다음은 x402를 지원하는 몇 가지 서비스이며, 2026년 10월 27일 기준 각 서비스의 자체 문서에 나와 있는 내용입니다.
서비스 | 에이전트가 구매할 수 있는 것 | x402 가격 | 결제 네트워크 |
Nansen | 온체인 분석: 지갑 프로필, 토큰 스크리너, Smart Money 흐름 | 호출당 $0.01(기본), $0.05(프리미엄 및 Smart Money) | Base, Monad의 USDC(x402 v2만 해당) |
Messari | 시장 데이터, 네트워크 지표, 펀딩, 뉴스, 시그널, 토큰 언락, Messari AI | 엔드포인트에 따라 요청당 $0.00~$1.00 | Base의 USDC |
Bitrefill | 180개 이상의 국가에서 사용할 수 있는 기프트 카드, 휴대폰 충전, eSIM | 상품 가격 | x402를 통한 USDC 등 다양한 결제 방식 |
서비스마다 오퍼 형식이 다르므로, 먼저 에이전트에게 inspect를 실행하게 하여 해당 오퍼가 Agent Wallet이 서명할 수 있는 형식인지 확인하세요(팁 6). 예를 들어 Nansen의 x402 엔드포인트는 POST 요청을 받으며 x402 v2만 지원합니다. 요청 예시: “이더리움의 Nansen Smart Money 순유입·유출 데이터를 가져와 줘. 402가 반환되면 비용을 보여주고, 내가 확인한 후에 결제해 줘.” 더 많은 x402 서비스를 찾아보려면 x402 생태계 탐색기인 x402scan을 이용해 보세요.
x402에서 Agent Wallet이 지원하지 않는 기능
유출 한도로 x402 지출 제한. 현재 유출 정책은 24시간 계산에서 서명을 제외합니다.
모든 x402 오퍼에 서명. Permit2 전용, upto, 비EVM 오퍼는 거부됩니다.
중복 결제 방지. 아직 결제 원장이 없습니다. pay를 다시 실행하면 다시 결제됩니다.
x402로 판매. 이 헬퍼는 구매자 측 전용입니다. 다른 에이전트를 위한 유료 엔드포인트를 호스팅하려면 별도의 설정이 필요합니다.
mm 명령어로 실행. 스킬에 포함된 Python 3 스크립트입니다. 항상 JSON을 출력하므로 --toon과 --format은 적용되지 않습니다.
네. metamask-agent-wallet 스킬이 설치되어 있고 Python 3를 사용할 수 있다면, 에이전트가 402 응답을 감지하여 결제 조건을 보여 주고, 사용자가 승인하면 mm wallet sign-typed-data를 통해 EIP-3009 결제 승인에 서명합니다. HTTP 엔드포인트와 유료 MCP 도구 모두에서 작동합니다.
결제 자체에는 필요하지 않습니다. 지갑은 오프체인 승인에 서명하고, 서비스의 facilitator가 온체인 정산을 제출합니다. 서비스가 요구하는 네트워크에 요청된 토큰(보통 USDC)이 충분히 있어야 합니다.
2026년 10월 27일 기준, 유출 정책에 따르면 Permit2와 같은 서명은 유출 계산에 포함되지 않으며, x402 승인은 서명에 해당합니다. 지갑 서비스는 서명 요청에 대해 여전히 위협 스캔을 실행하고, 스킬은 에이전트가 각 결제를 사용자에게 확인하도록 합니다.
이런 방식으로 Agent Wallet을 구성할 수 있습니다. 기본적으로 이 skill은 에이전트가 x402 결제를 진행할 때마다 사용자에게 확인을 받도록 지시합니다.
2FA를 기다리는 동안 승인이 만료된 경우, pay를 다시 실행하여 새 값에 서명하세요. 서버가 결제를 거부한 경우, 다시 시도하기 전에 settlement 출력을 확인하세요. pay를 실행할 때마다 새로운 결제가 생성되기 때문입니다.
Agent Wallet은 직접 운영하는 AI 에이전트가 mm CLI와 skill을 통해 자체 지갑에서 결제할 수 있도록 하는 솔루션입니다. Smart Accounts Kit는 개발자가 ERC-7710 delegation으로 반복 예산을 포함한 x402 결제를 자체 앱에 구축할 수 있도록 하는 키트입니다.