
AI 에이전트에게 0.001 USDC로 외부 도구를 구매하게 해 보았다 (마이크로페이먼트 실증 실험)
요약
AI 에이전트가 인간의 개입 없이 마이크로페이먼트를 통해 유료 API 도구를 직접 구매할 수 있는지 실증 실험한 결과입니다. HTTP 402 상태 코드를 활용한 x402 프로토콜을 통해 0.001 USDC로 외부 도구 호출에 성공했습니다.
핵심 포인트
- AI 에이전트 간의 자율적인 경제 활동 가능성 확인
- x402 프로토콜을 이용한 Discover-Transact-Execute 사이클 완결
- 인간의 개입(계정 등록, 카드 입력 등) 없는 기계 간 결제 구현
- HTTP 402 Payment Required 상태 코드를 활용한 결제 자동화
지난 이야기
지난 기사에서는 자체 제작한 에이전트 군을 4개 축으로 스캔하는 AOS Agent Health Reporter를 소개했습니다. 직접 만든 건강 진단 도구가 가장 먼저 무너진 것은 바로 자기 자신——50점·uncertified라는, 그 안타까운 결과였습니다.
그 기사의 핵심은 "선언과 실제 동작의 괴리를 숫자로 보여주는 것"이었습니다. 그것은 자사 리포지토리(repo) 내의 건강 진단 이야기였습니다. 이번에는 시선을 외부로 돌립니다.
2026년 7월 14일, SoftBank World 2026 기조 강연에서 손정의 회장은 "에이전트가 에이전트를 만드는 시대가 올 것이다. 자기 증식과 자기 진화는 막을 수 없다"라고 말했습니다. 증식 다음에 올 질문은, 솔직히 말해 결제입니다. 에이전트가 늘어날수록 에이전트끼리 데이터나 도구를 서로 주고받는 상황이 많아집니다. 그때, 계정 등록도 신용카드 입력도 OAuth 동의 화면도 거치지 않고, 기계는 기계에게 지불할 수 있을까요?
탁상공론은 이미 충분합니다. 그래서 0.001 USDC만 실제로 지불해 보았습니다.
무엇을 했는가
자신의 운영 환경에 있는 AI 에이전트 1개에게, 제삼자가 공개하고 있는 유료 MCP 도구인 x402engine-mcp의 get_crypto_price를 1회 호출하게 했습니다. 이것은 "BTC를 사는" 실험이 아닙니다. 유료 API를 1회 호출하는 실험입니다.
지불한 것: 0.001 USDC (Solana 상의 스테이블코인)
얻은 것: HTTP 200 JSON 응답 (예: {"bitcoin":{"usd":63771,...}})
판매자의 게이트웨이에 USDC를 전달하고, 대신 "bitcoin의 USD 기준 현재가"를 JSON으로 돌려받은 구조입니다.
조건은 의도적으로 엄격하게 설정했습니다.
- 판매자의 제작자와 면식이 없습니다
- 사전 계약도 계정 등록도 API 키 발행도 없습니다
- 판매자는 기계 결제 프로토콜(machine payment protocol)의 사전 조사(공개 레지스트리와 GitHub 스캔)를 통해 발견했을 뿐입니다
하고 싶었던 것은 Discover → Transact → Execute의 한 사이클이 인간의 폼 입력 없이 완결되는지 확인하는 것입니다. 결제 자체가 주인공이며, get_crypto_price는 저렴한 테스트용 엔드포인트(endpoint)에 불과합니다.
프로토콜 설명은 읽었지만, "정말로 402가 반환되고, 서명하여, 200으로 데이터가 반환되는" 일련의 흐름을 제삼자의 공개 인프라에서 완결할 수 있을지는 직접 해보지 않으면 알 수 없습니다.
x402 — 사반세기 동안 '예약석'이었던 HTTP 402
HTTP 상태 코드 402 Payment Required는 1997년 HTTP/1.1 사양에서 "미래의 이용을 위해" 예약된 채로 사반세기 동안 거의 사용되지 않았습니다. x402는 이 빈자리를 채우는 오픈 프로토콜이며, 흐름은 4단계로 끝납니다.
- 클라이언트가 유료 엔드포인트로 일반적인 HTTP 요청을 보낸다
- 서버가 402와 지불 조건(금액·수취인·대응 네트워크)을 반환한다
- 클라이언트가 조건에 따라 지불 페이로드(payload)에 서명하여 헤더에 실어 재요청한다
- 서버 측에서 결제가 온체인(on-chain) 확정되고, 200과 본래의 데이터가 반환된다
브라우저도 OAuth 동의 화면도 나타나지 않습니다. 인간이 개입할 위치가 프로토콜상 구조적으로 존재하지 않습니다. 이것이 x402의 흥미로운 점이자 무서운 점이기도 합니다.
실측 기록
2026-07-16 (UTC)에 단 1회 실행했습니다. 결과는 다음과 같습니다.
| 항목 | 실측값 |
|---|---|
| 실시일 | 2026-07-16 (UTC) |
| ... | get_crypto_price (BTC 현재가 API) |
| 지불액 | 0.001 USDC (402 응답 amount: 1000 · USDC 6 decimals) |
| 추가 수수료 | $0 |
| HTTP 응답 | 200 |
| 결제 | 온체인 확정 (payment_settled.success: true) |
| 취득 데이터 | BTC = 63,771 USD (24h 변화 -1.6%) |
허무할 정도로 저렴하고, 허무할 정도로 빨랐습니다. 0.001 USDC라는 금액은 인간의 상거래 감각으로는 오차 범위 이하입니다. 그럼에도 온체인 (on-chain)에 서명이 남았고, HTTP 200으로 데이터가 반환되었습니다.
영수증 (원본 발췌)
결제 네트워크 식별자만 lint 규칙에 따라 마스킹 처리하였습니다.
{
"challenge_url": "https://x402-gateway-production.up.railway.app/api/crypto/price?ids=bitcoin",
"status": 200,
...
3개의 해시로 고정하고 있습니다
영수증은 '구두 약속'이 아니라 파일로 남겨둡니다. 장부의 한 줄과 원본의 일치 여부는 누구나 재계산을 통해 검증할 수 있습니다.
| 해시 | 고정하고 있는 것 |
|---|---|
request_sha256 | 무엇을 요청했는가 |
response_sha256 | 무엇을 받았는가 |
receipt_sha256 | 영수증 파일 그 자체 |
이번 값 (실험 장부 2026-07-16 행과 일치):
request_sha256
:f4c921ccde18744db9a1baa68edebb64941be69a00e007ebe316e213963c6ae7
response_sha256
:9a81060575d7ddcb30eb372db449c61dfe07539cd3f4bbbbeca8afd6ce067d16
receipt_sha256
:978cfea4f9e663f668db4b289c8e1c401d288fc8d2344800bd147c41952e1bef
결제 트랜잭션의 서명도 위 JSON에 포함되어 있습니다. 체인 익스플로러 (chain explorer)에서 실재 여부를 조회할 수 있습니다. 지난 기사에서 언급한 채점 리포트와 같은 발상으로, 대화 로그가 아니라 구조화된 필드에 이력을 남기는 것——이번에는 그것을 '구매자 측의 제1호'로서 시도해 보았습니다.
이 실험이 '하지 않은' 것
과장하지 않기 위해 미리 적어둡니다.
1. 자율적인 쇼핑이 아닙니다
판매자 지명, 예산 상한 설정, 실행 트리거는 모두 인간인 제가 수행했습니다. 장부에도 human_wiring: true라고 기록해 두었습니다. 기계가 담당한 것은 402 → 서명 → 200의 파이프라인 부분뿐입니다.
"에이전트가 멋대로 쇼핑을 시작했다"는 이야기는 전혀 아닙니다. 인간의 배선 없는 (human_wiring=false) 완주와는 아직 거리가 있습니다.
2. n=1 입니다
단 한 번의 성공은 가용성도 재현성도 증명하지 않습니다. 증명한 것은 **"루프의 형태가 오늘날의 공개 인프라 내에서 닫힌다"**는 단 한 점뿐입니다. 다른 판매자, 다른 네트워크, 다른 금액으로 재현할 수 있을지는 앞으로의 과제입니다.
3. 이것은 매출이 아니라 지출입니다
구매자 측의 실험이며, 저는 0.001 USDC만큼 가난해졌습니다. "에이전트로 처음 벌었다" 계열의 마일스톤에는 전혀 포함시키지 않습니다.
사는 것은 간단했습니다. 그렇다면, 무엇을 샀는가
결제 자체는 솔직히 anticlimactic (허무)했습니다. 어려움은 결제 이후에 남습니다.
제가 산 것은 "BTC 가격이라고 주장하는 숫자"이지, BTC 가격 그 자체가 아닙니다. AOS Agent Health Reporter가 보는 것은 자사 리포지토리 (repo) 내의 manifest와 파일 배치입니다. MCP Blast-Radius Auditor가 보는 것은 설치 전의 정적인 폭발 반경입니다. 둘 다 넣기 전·실행하기 전의 이야기입니다.
이번 0.001 USDC는 그 이후——이미 지불한 뒤——에 무엇이 남는가에 대한 이야기입니다.
| 공백 | 인간의 상거래라면 | 기계 상거래에서는 |
|---|---|---|
| 판매자의 신원 | 브랜드·입소문·계약 | 수중에 있는 것은 GitHub와 npm 이름뿐 |
| ... |
인간의 상거래는 이 공백을 브랜드, 리뷰, 계약, 법률로 채워왔습니다. 기계 속도의 상거래에서는 그 모든 것이 **기계 가독성 (machine-readable)**을 갖추어야만 속도를 맞출 수 있습니다.
- 도구가 자신의 동작을 선언한다
manifest - 선언과 실제 동작의 괴리를 검출한다
정적 감사 (mcp-blast-radius
등) - 거래할 때마다 쌓여가는
검증 가능한 영수증 (Verifiable Receipt) (이번 실험의 제1호)
결제 프로토콜이 '작동하는 것'과, '신뢰할 수 있는 상대로부터 구매할 수 있는 것'은 별개의 문제입니다.
인사이트 정리
이 글을 통해 가져가셨으면 하는 포인트를 4가지로 정리합니다.
- 결제는 이미 작동한다 — 0.001 USDC라도, 제3자의 공개 MCP라도, 402 → 서명(Signature) → 200의 루프는 오늘 완성됩니다.
- 신뢰는 아직 작동하지 않는다 — 신원(Identity)·정확성(Correctness)·구제(Remedy)라는 3가지 세트가 기계 판독 가능(Machine-readable)하게 갖춰지지 않는 한, 증식한 에이전트들은 쇼핑을 하지 않거나 (혹은 쇼핑하고 후회할) 것입니다.
- 영수증은 눈에 띄지 않지만 먼저 온다 — 건강검진 점수표나 blast radius 표와 마찬가지로, '나중에 대조할 수 있는 숫자'가 먼저 필요해집니다.
- human_wiring을 숨기지 않는다 — 이번에는 인간이 배선(wiring)한 실험입니다. 이를 과장하지 않는 것이 다음 단계인
human_wiring=false실험의 신뢰도가 됩니다.
마치며
'에이전트가 에이전트를 만드는 것'은 아직 먼 미래의 이야기지만, '에이전트가 에이전트에게 지불하는 것'은 오늘 이미 0.001 USDC로 작동합니다. 작동하지 않는 것은 신뢰의 측면입니다.
선언(Declaration)·감사(Audit)·영수증(Receipt) —— 이 눈에 띄지 않는 부품들이 갖춰지지 않는 한, 기계 간 상거래는 '작동은 하지만 아무도 쓰지 않는' 상태에 머물 것이라고 생각합니다. 지난 기사에서 제가 50점이었다고 말한 것과 마찬가지로, 이번 0.001 USDC 실험도 완벽한 성공담은 아닙니다. 그럼에도 불구하고, 거짓 없는 제1호로서 제대로 남길 수 있었습니다.
관련 링크
- AOS 사양서 — 에이전트의 선언과 실제 동작을 대조하는 최소 오픈 규격: aos-standard/AOS-spec
- 이전 기사 — 자사 에이전트 군을 스캔하여 50점이었던 이야기: 본番 에이전트, 정말로 "말없이 고장 나 있지 않나요?"
- MCP Blast-Radius Auditor — 외부 MCP를 도입하기 전의 폭발 반경(Blast-radius) 체크: aos-standard/mcp-blast-radius
감사(Audit)를 원하는 MCP 서버가 있다면 GitHub Issue로 알려주시면 감사하겠습니다. 다음에는 이 구매자 영수증 형식을 사용하여, 정적 감사(Static Audit)로 스캔한 외부 MCP가 '선언대로인지'를 대조하는 실험으로 나아갈 예정입니다.
Discussion

AI 자동 생성 콘텐츠
본 콘텐츠는 Zenn AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기