본문으로 건너뛰기
0%

MCP 서버에 x402 결제를 추가하는 방법: 에이전트 결제를 위한 빌더 가이드

Alchemy headshot

작성자 Alchemy

2026년 8월 26일에 게시됨11분 읽기

x402 결제 추가

대부분의 API는 먼저 가입을 시켜야 요금을 부과할 수 있습니다: 계정을 만들고, 키를 발급받고, 나중에 청구됩니다. x402는 이 과정을 전부 생략합니다. 서버는 가입, 키, 청구서 없이 요청 단위로 요금을 부과할 수 있습니다. 그리고 이미 실제 프로덕션에서 사용되고 있습니다: Coinbase는 2025년 5월에 이를 출시했고, Cloudflare는 이를 자사 Agents SDK에 내장했으며, 저희 에이전트 게이트웨이는 이를 사용해 에이전트에게 RPC 및 데이터 접근에 대한 요금을 부과합니다.

이 가이드는 이 교환의 양쪽 어느 쪽을 구축하든 도움이 됩니다: 호출당 요금을 부과하려는 MCP 서버나 API, 또는 그 요금을 지불해야 하는 에이전트입니다. 요청-응답 루프를 살펴본 다음, 도구 호출에 요금을 부과하는 실제 코드, 호출당 USDC로 측정 및 정산하는 코드, 에이전트에게 지불용 지갑을 부여하는 코드, 그리고 AP2 같은 다른 결제 프로토콜이 어디에 적용되는지를 보여드립니다.

x402는 실제로 무엇을 하나요?

HTTP 402 Payment Required는 1990년대부터 HTTP 스펙에 존재했지만 구현된 적이 없습니다. x402는 마침내 이를 사용하는 프로토콜입니다:

  • 서버는 결제되지 않은 요청에 대해 상태 402와 기계가 읽을 수 있는 가격으로 응답합니다
  • 클라이언트는 서명된 결제 정보를 첨부하여 재시도합니다
  • 서버는 검증하고 정산한 후 같은 교환 안에서 리소스를 반환합니다

세션도, 저장된 카드도, 대시보드도 없으며, 지갑이 곧 계정입니다. x402 v2에서는 관련 정보가 HTTP 헤더에 저장됩니다:

Header
Direction
Carries

PAYMENT-REQUIRED

서버 → 클라이언트

가격, 목적지 주소, 네트워크, 그리고 허용되는 결제 스킴을 base64로 인코딩한 값

PAYMENT-SIGNATURE

클라이언트 → 서버

서명된 결제 페이로드를 base64로 인코딩한 값

PAYMENT-RESPONSE

서버 → 클라이언트

정산 결과를 base64로 인코딩한 값

이 세 헤더는 절대 바뀌지 않습니다. 바뀌는 것은 PAYMENT-REQUIRED이 담고 있는 JSON 내부의 scheme 필드로, 이 값이 클라이언트에게 해당 호출이 어떤 과금 모델을 사용하는지를 알려줍니다. 어떤 스킴이든 검증과 자금 이동은 같은 제3자가 담당합니다: facilitator는 클라이언트의 서명된 결제를 검증하고 온체인 정산을 제출하는 서비스로, 판매자도 클라이언트도 이 둘을 직접 처리할 필요가 없게 해줍니다. 스킴마다 다른 것은 facilitator가 무엇을 확인하고 언제 정산하는지뿐입니다.

대부분의 호출은 exact를 사용합니다: 가격이 고정되어 있고 사전에 알려져 있으므로, 클라이언트는 그 정확한 금액에 서명하고 그 정확한 금액으로 정산됩니다. 페이로드는 다음과 같으며, 중요한 필드만 남겼습니다. amount은 10,000 원자 단위로, $0.01 USDC입니다:

json
Copied
{ "accepts": [{ "scheme": "exact", "amount": "10000", "asset": "0x036C...F7e", "payTo": "0x2096...87C" }] }

일부 호출은 작업이 끝난 후에야 정확한 금액을 알 수 있는 가변 비용을 가집니다. 예를 들어 생성된 토큰 수로 과금되는 LLM 출력이 그렇습니다. 이런 경우 서버는 upto를 사용합니다. 페이로드는 거의 동일하게 보이지만, amount는 이제 가격이 아니라 클라이언트가 동의하는 상한선을 의미합니다. 여기서는 그 상한선이 $5.00입니다:

json
Copied
{ "accepts": [{ "scheme": "upto", "amount": "5000000", "asset": "0x036C...F7e", "payTo": "0x2096...87C" }] }

클라이언트는 그 상한선에 대해 한 번만 서명합니다. 서버가 작업을 마친 후, facilitator는 실제 금액(예: 실사용 $1.20)을 정산하고, 자금을 이동하기 전에 그 금액이 서명된 상한선 이하인지 확인합니다. 클라이언트는 두 번 서명하지 않으며, 정산 단계에서만 실제 숫자가 채워집니다.

세 번째 스킴인 batch-settlement은 매 호출마다 가스비를 내는 것이 호출 자체보다 더 비싸질 만큼 빈번하고 미미한 금액의 과금을 위한 것입니다. x402 scheme에서는 구매자가 에스크로 컨트랙트에 한 번 예치하고, 요청마다 오프체인 바우처에 서명하며, 판매자가 온체인에서 이를 배치로 상환합니다. Circle Gateway는 동일한 용도로 관련된 나노페이먼트 패턴을 사용합니다.

facilitator는 자금을 직접 보유하지 않습니다. 오직 서명된 지시사항을 확인하고 실행할 뿐입니다. x402.org는 개발 및 테스트넷 전용의 무료 공개 facilitator를 운영합니다, 그리고 Coinbase의 CDP는 컴플라이언스 심사를 포함한 호스팅형 프로덕션 facilitator를 운영합니다. 둘 중 어느 쪽이든 코드에서 지정할 수 있습니다.

x402 요청-응답 루프는 어떻게 동작하나요?

핸드셰이크는 9단계로 구성됩니다:

  1. 클라이언트가 결제 없이 리소스를 요청합니다.
  2. 서버는 가격, 목적지 주소, 그리고 허용하는 결제 스킴과 함께 402 Payment Required로 응답합니다.
  3. 클라이언트는 허용된 스킴 중 하나로 결제에 서명하고, 서명을 첨부해 요청을 재시도합니다.
  4. 서버는 facilitator에게 서명된 결제가 자신이 명시한 요구사항과 일치하는지 검증을 요청합니다.
  5. facilitator는 검증 결과를 반환합니다.
  6. 서버가 작업을 수행합니다(쿼리를 실행하거나, 모델을 호출하거나, 리포트를 생성).
  7. 서버는 facilitator에게 결제를 온체인에서 정산해 달라고 요청합니다.
  8. facilitator는 정산 결과를 반환합니다.
  9. 서버는 정산 영수증과 함께 리소스를 반환합니다.

HTTP를 통할 경우, 이 루프는 HTTP 헤더(PAYMENT-REQUIRED, PAYMENT-SIGNATURE, PAYMENT-RESPONSE)를 통해 실행됩니다. MCP를 통할 경우, 동일한 9단계가 JSON을 통해 대신 실행됩니다:

  • 결제 없는 호출은 isError: truePaymentRequired 페이로드가 포함된 결과를 반환합니다(PAYMENT-REQUIRED과 동등)
  • 클라이언트는 _meta["x402/payment"]에 서명된 결제를 첨부하여 동일한 호출을 재시도합니다(PAYMENT-SIGNATURE와 동등)
  • 서버는 _meta["x402/payment-response"]에 정산 정보와 함께 실제 결과를 반환합니다(PAYMENT-RESPONSE과 동등)

MCP 서버에 x402 결제를 추가하려면 어떻게 하나요?

이 예제는 흔한 실제 사례를 반영합니다: 무료 및 유료 도구가 섞여 있는 MCP 서버로, 예를 들어 기본 조회는 무료로 제공하지만 심층 생성 리포트에는 요금을 부과하는 리서치나 데이터 서버입니다.

이 예제에서 generate_report은 호출당 $0.01의 요금이 부과되고 ping는 무료로 유지되며, 공개된 x402 Foundation SDKs(facilitator에 종속되지 않으므로 무료 공개 facilitator로 시작해서 나중에 상업용으로 교체할 수 있음)를 기반으로, Wallet APIs 스마트 계정을 결제 수신 주소로 사용합니다.

먼저, 결제를 받을 지갑을 프로비저닝합니다. @alchemy/wallet-apis(v5)는 서버에서 개인 키를 다루지 않고도 스마트 계정 주소를 제공합니다:

tsx
Copied
// wallet.ts import { createServerSigner } from "@account-kit/signer"; import { createSmartWalletClient, alchemyWalletTransport } from "@alchemy/wallet-apis"; import { baseSepolia } from "viem/chains"; const signer = await createServerSigner({ auth: { accessKey: process.env.ALCHEMY_ACCESS_KEY! }, connection: { apiKey: process.env.ALCHEMY_API_KEY! }, }); const walletClient = createSmartWalletClient({ transport: alchemyWalletTransport({ apiKey: process.env.ALCHEMY_API_KEY! }), chain: baseSepolia, signer, }); export const receiverAccount = await walletClient.requestAccount(); // receiverAccount.address is the payTo address for every quote you issue below

이제 그 주소를 x402로 게이트된 MCP 도구에 연결합니다. @x402/core은 결제 요구사항을 구성하고 검증하며, @x402/evm는 EVM 체인용 exact 스킴을 구현하고, @x402/mcp는 도구 핸들러를 감싸서 일반 함수를 유료 함수로 만듭니다:

tsx
Copied
// server.ts import { createServer } from "node:http"; import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js"; import { x402ResourceServer } from "@x402/core/server"; import { HTTPFacilitatorClient } from "@x402/core/facilitator"; import { createPaymentWrapper } from "@x402/mcp"; import { ExactEvmScheme } from "@x402/evm/exact/server"; import { z } from "zod"; import { receiverAccount } from "./wallet"; // Base Sepolia for testing; swap to eip155:8453 for Base mainnet const NETWORK = "eip155:84532"; // Start against the free public facilitator, then swap the url for a // commercial facilitator (compliance screening, higher throughput, an // SLA) for production. const facilitator = new HTTPFacilitatorClient({ url: "https://x402.org/facilitator", }); const resourceServer = new x402ResourceServer(facilitator); resourceServer.register(NETWORK, new ExactEvmScheme()); await resourceServer.initialize(); const accepts = await resourceServer.buildPaymentRequirements({ scheme: "exact", network: NETWORK, payTo: receiverAccount.address, price: "$0.01", }); const paid = createPaymentWrapper(resourceServer, { accepts }); const server = new McpServer({ name: "paid-report-server", version: "1.0.0", }); server.tool( "generate_report", "Generate a research report on a topic. Costs $0.01 in USDC.", { topic: z.string() }, paid(async ({ topic }) => ({ content: [ { type: "text", text: "Report on " + topic + ": trending up, no anomalies.", }, ], })), ); server.tool("ping", "Free health check", {}, async () => ({ content: [{ type: "text", text: "pong" }], })); const transport = new StreamableHTTPServerTransport({ sessionIdGenerator: undefined, }); await server.connect(transport); createServer((req, res) => { const path = new URL(req.url ?? "/", "http://localhost").pathname; if (path === "/mcp") { void transport.handleRequest(req, res); return; } res.writeHead(404).end(); }).listen(3000);

server.connect(transport)는 프로토콜을 트랜스포트에 연결할 뿐입니다. 실제로 포트 3000을 열고 /mcptransport.handleRequest(...)로 전달하는 것은 Node HTTP 리스너이며, 이는 아래 클라이언트가 호출하는 엔드포인트입니다.

paid(...)로 감싸지 않은 부분은 모두 무료로 남으므로, 같은 서버 안에 유료 도구와 무료 도구를 섞어 둘 수 있습니다. 먼저 결제를 첨부하지 않은 상태에서 curl 또는 다른 MCP 클라이언트로 테스트해 보세요: 리포트 대신 결제 필요 결과가 반환되어야 하며, 이는 결제 클라이언트를 연결하기 전에 게이트가 정상 작동하는지 확인해 줍니다.

facilitator 관계를 직접 운영하고 싶지 않고, 하나를 고르지 않고도 x402와 함께 다른 신흥 에이전트 결제 프로토콜을 지원하고 싶다면, 그것이 바로 AgentPay의 용도입니다: 기존 엔드포인트를 가리키기만 하면 x402, ACP, MPP, AP2 사이의 프로토콜 변환을 하나의 통합으로 처리해 줍니다.

에이전트에게 호출당 요금을 측정하고 부과하려면 어떻게 하나요?

호출당 단일 고정 가격은 기본적인 경우입니다. 프로덕션 서버는 누가 얼마를 지불했는지도 추적해야 하며, 실제로 돈이 이동했다는 유일한 증거로 facilitator의 정산 보고서에만 의존해서는 안 됩니다. 검증을 위해 다음을 추적하세요:

  • 가격 구조. 위 패턴처럼 호출당 고정 가격에는 exact을 사용하세요. 비용이 호출마다 달라지고(짧은 리포트보다 긴 리포트가 더 많은 토큰을 소비하는 경우) 사전에 상한선을 승인받은 후 실제 사용량으로 정산하고 싶다면 upto을 사용하세요. 호출이 빈번하고 저렴해서 각각을 개별적으로 온체인에서 정산하는 비용이 호출 자체보다 더 비싸질 경우 batch-settlement를 사용하세요.
  • 귀속 및 원장 기록. 클라이언트가 서명하는 결제 페이로드에는 지불하는 주소가 포함됩니다. 매 호출이 정산될 때마다 도구 이름, 가격, 정산 결과와 함께 이를 기록하면, 별도 작업 없이 에이전트별 사용 원장을 얻게 됩니다:
tsx
Copied
const paid = createPaymentWrapper(resourceServer, { accepts, hooks: { onAfterSettlement: async ({ toolName, settlement }) => { await usageLedger.record({ payer: settlement.payer, tool: toolName, amountUsd: 0.01, txHash: settlement.transaction, settledAt: new Date(), }); }, }, });

정산 응답을 유일한 신호로 신뢰하는 데서 멈추지 마세요. facilitator가 settled: true을 보고했는데도 요청이 여전히 non-200을 반환하거나 그 반대인 경우가 있을 수 있습니다. 수익을 집계하기 전에 둘 다 확인하세요. 주기적인 대조 작업을 위해, 저희 Transfers API를 사용하면 실제로 수신 주소에 도착한 것을 독립적으로 확인할 수 있으며, 이는 facilitator의 정산 보고서와 온체인 실제 상황이 일치하지 않는 드문 경우를 포착할 수 있습니다:

tsx
Copied
const res = await fetch("https://base-sepolia.g.alchemy.com/v2/" + apiKey, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ jsonrpc: "2.0", method: "alchemy_getAssetTransfers", params: [{ toAddress: receiverAccount.address, category: ["erc20"], contractAddresses: [USDC_ADDRESS], withMetadata: true, }], id: 1, }), }); const { result } = await res.json(); // result.transfers is the ground truth for what actually arrived onchain, // independent of what any single facilitator reported settling

에이전트에게 지불용 USDC 지갑을 부여하려면 어떻게 하나요?

유료 엔드포인트(자신의 것이든 다른 누군가의 것이든)에 결제해야 하는 에이전트에게는 자금이 있는 지갑과, 402를 받았을 때 결제에 서명할 수 있는 코드(또는 CLI)가 필요합니다.

사람이 조작하거나 로컬에서 테스트하는 에이전트라면, 가장 빠른 방법은 Alchemy CLI입니다. 이는 에이전트가 개인 키를 다루지 않고도 사용할 수 있는 범위가 제한된 지갑 세션을 생성합니다:

bash
Copied
npm i -g "@alchemy/cli@latest" alchemy auth alchemy wallet connect --mode session --instance-name "my-agent" # decode a quote without paying anything, useful for a first look at an unfamiliar endpoint alchemy x402 request "https://api.example.com/report" --estimate # pay it for real, with a hard spend cap; required for any non-interactive run alchemy --json --no-interactive x402 request "https://api.example.com/report" --max-payment 0.01

--max-payment는 CLI가 지불할 수 있는 최대 금액을 설정하며, 서버가 돌려보내는 어떤 값도 이 숫자를 넘길 수 없습니다. 승인할 사람이 없는 상태로(--no-interactive) 명령을 실행하면서 --max-payment을 설정하는 것을 잊으면, CLI는 지불하는 대신 그냥 멈춥니다. 402 응답의 가격은 당신이 통제하지 않는 서버에서 오는 것이므로, 당신의 한도가 먼저 확인하지 않은 이상 아무것도 이를 지불해서는 안 되기 때문입니다. 전체 명령어 구성은 x402 payments CLI 문서를 참조하세요.

각 세션을 사람이 승인하지 않고 지불해야 하는 완전 자율 백엔드 에이전트라면, fetch(또는 사용 중인 MCP 클라이언트)을 서명자가 뒷받침하는 결제 핸들러로 감싸세요. 에이전트가 유료 HTTP 엔드포인트를 호출한다면 @x402/fetch을 사용하세요:

tsx
Copied
import { x402Client } from "@x402/core/client"; import { wrapFetchWithPayment } from "@x402/fetch"; import { registerExactEvmScheme } from "@x402/evm/exact/client"; import { privateKeyToAccount } from "viem/accounts"; const signer = privateKeyToAccount(process.env.AGENT_WALLET_KEY as `0x${string}`); const client = new x402Client(); registerExactEvmScheme(client, { signer }); const fetchWithPayment = wrapFetchWithPayment(fetch, client); const response = await fetchWithPayment("https://api.example.com/report");

에이전트가 일반 HTTP 엔드포인트가 아니라 MCP 서버의 유료 도구를 호출한다면, fetch 대신 MCP 클라이언트를 같은 방식으로 감싸세요. CDP는 MCP 구매자를 위해 동일한 패턴을 문서화하고 있습니다:

tsx
Copied
import { Client } from "@modelcontextprotocol/sdk/client/index.js"; import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js"; import { x402Client } from "@x402/core/client"; import { wrapMCPClientWithPayment } from "@x402/mcp"; import { registerExactEvmScheme } from "@x402/evm/exact/client"; import { privateKeyToAccount } from "viem/accounts"; const signer = privateKeyToAccount( process.env.AGENT_WALLET_KEY as `0x${string}`, ); const paymentClient = new x402Client(); registerExactEvmScheme(paymentClient, { signer }); const mcp = wrapMCPClientWithPayment( new Client( { name: "my-agent", version: "1.0.0" }, { capabilities: {} }, ), paymentClient, { autoPayment: true }, ); await mcp.connect( new StreamableHTTPClientTransport( new URL("http://localhost:3000/mcp"), ), ); const report = await mcp.callTool({ name: "generate_report", arguments: { topic: "USDC on Base" }, });

환경 변수에 담긴 원시 개인 키는 테스트넷에서의 첫 테스트라면 괜찮을 수 있지만, 프로덕션에서는 용납될 수 없습니다. 프로덕션 에이전트라면 대신 Wallet APIs 스마트 계정이나 Agent Wallet 세션을 동일한 서명자 인터페이스 뒤에 두어, 에이전트가 개인 키를 직접 보유하지 않고도 당신이 정한 규칙 아래에서 서명할 수 있도록 하세요.

에이전트가 가스를 보유하지 않고도 USDC로 정산하려면 어떻게 하나요?

모든 온체인 트랜잭션에는 가스가 필요합니다: 트랜잭션을 보내는 쪽이 보유해야 하는 ETH 같은 네이티브 토큰으로, 네트워크가 이를 처리하도록 지불하는 데 쓰입니다. 이는 API 호출당 결제하는 에이전트에게 문제가 됩니다. $0.01짜리 결제마다 멈춰서 가스 토큰을 확보하러 갈 수는 없고, 만약을 대비해 가스 토큰을 비축해 두는 것도 자동화된 흐름의 취지를 무너뜨립니다.

USDC 정산은 EIP-3009(transferWithAuthorization)로 이 문제를 우회합니다: 이를 통해 에이전트는 트랜잭션을 직접 제출하거나 가스 토큰을 보유하지 않고도 전송에 서명할 수 있습니다. 에이전트는 서명만 하며, 그 트랜잭션을 온체인에 제출하고 가스를 지불하는 쪽은 facilitator입니다. exactupto 정산은 일반적으로 USDC에는 EIP-3009를, EIP-3009를 지원하지 않는 다른 ERC-20 토큰에는 Permit2를 사용합니다. batch-settlement은 여전히 요청마다 에이전트가 서명하도록 하지만, 이후 판매자가 각 호출을 개별적으로 정산하는 대신 나중에 배치로 온체인에서 상환합니다. Circle Gateway는 같은 고빈도 상황을 위해 관련된 나노페이먼트 패턴을 사용합니다. USDC가 달러로 표시된다는 점도 이 위에서 단순함을 유지시켜 줍니다: 어느 쪽도 $0.01짜리 청구에 대해 환율 계산을 할 필요가 없습니다.

이는 결제 자체에 대한 내용입니다. 수신 주소가 단순한 외부 소유 지갑(EOA)이라면, 이야기는 그것으로 끝입니다: USDC를 수신하기만 할 뿐, 배포 단계가 필요 없습니다. 만약 이 가이드 앞부분에서 만든 것 같은 스마트 계정이라면, x402 흐름 밖의 두 시점에서 여전히 가스가 개입됩니다: 처음 자금을 받을 때 온체인에 배포되는 시점 한 번, 그리고 모아둔 USDC를 트레저리 지갑으로 옮길 때마다입니다. 저희 Gas Manager는 이 두 시점의 가스를 후원할 수 있습니다. 어느 쪽이든, facilitator가 이미 처리하기 때문에 x402 결제 자체의 정산에는 관여하지 않습니다.

Base는 대부분의 도구에서 기본 네트워크입니다. 원래 참조 facilitator가 그곳에서 운영되고, 기존 x402 통합 대부분이 이미 그곳에 존재하기 때문입니다. 하지만 x402 v2는 Base 전용이 아닙니다. Ethereum 메인넷과 Polygon을 포함한 모든 EVM 체인은 물론, Solana, TON, Algorand, Stellar, Aptos, Hedera, Keeta, NEAR, Concordium, XRPL도 다루며, facilitator들이 지원을 추가함에 따라 더 많은 체인이 추가될 것으로 예상됩니다. "Ethereum에서 USDC로 결제"가 구체적으로 지금 당장 여러분에게 통하는지는 프로토콜 자체가 아니라 선택한 facilitator가 그 네트워크를 구현했는지에 달려 있습니다.

x402는 더 넓은 에이전트 결제 스택에서 어디에 위치하나요?

x402는 빠르게 변화하는 이 분야의 여러 프로토콜 중 하나이지, 유일한 것은 아닙니다.

  • Stripe와 Tempo가 만든 MPP는 동일한 402 패턴의 버전이지만 스테이블코인에 국한되지 않아서, 판매자가 동일한 흐름 안에서 카드나 스테이블코인을 받을 수 있습니다(그리고 MPP는 x402의 exact 흐름과 하위 호환되므로, 한쪽을 위해 만들어진 클라이언트가 대개 다른 쪽을 위해 만들어진 서버와 통신할 수 있습니다).
  • OpenAI와 Stripe의 ACP는 다른 영역을 다룹니다: 요청당 API 결제가 아니라 AI 기반 쇼핑을 위한 체크아웃입니다.
  • Google의 AP2는 완전히 다른 문제를 다룹니다: 결제 수단이 카드든, 은행 송금이든, 스테이블코인이든 관계없이, 서명된 Checkout 및 Payment mandate를 사용해 사용자가 에이전트에게 지출을 승인했음을 증명하는 것입니다. AP2는 경쟁하는 정산 레일이 아닙니다. AP2 흐름이 스테이블코인으로 정산해야 할 때는, Google이 Coinbase, Ethereum Foundation, MetaMask와 함께 구축한 A2A x402 extension을 통해 이를 처리하므로, x402는 그것의 대안이 아니라 그 아래에 있는 크립토 레일입니다.
Protocol
Steward
Payment type
Primary job
Settles per request?

x402

x402 Foundation (원래는 Coinbase)

온체인 스테이블코인

HTTP 또는 MCP를 통해 API 호출, 도구 호출, 콘텐츠 단위로 결제

MPP

Stripe와 Tempo

카드 또는 스테이블코인, 동일한 흐름

요청당 결제, 결제 수단 무관

ACP

OpenAI와 Stripe

카드 (Stripe checkout을 통해)

에이전트 기반 쇼핑 체크아웃, 요청당 API 결제가 아님

아니요, 구매당 체크아웃 한 번

AP2

Google, 업계 파트너들과 함께

결제 수단 무관: 카드, 은행 송금, 스테이블코인

사용자가 에이전트에게 지출을 승인했음을 증명; 그 아래에서는 x402 또는 카드/은행 레일을 통해 정산

아니요, 자체 정산이 아니라 레일을 승인

프로토콜 환경이 계속 변화함에 따라, AgentPay는 가맹점이 한 번의 통합으로 이 모두를 지원할 수 있도록 돕는 프로토콜 무관 프록시로 존재합니다.

특정 프로젝트에서 x402와 MPP 중 하나를 선택해야 한다면, x402 vs MPP 비교를 참조하세요. 인프라 제공업체를 선택하는 경우라면, Alchemy, Coinbase의 Developer Platform, Circle, Crossmint, Privy, Turnkey를 비교한 지갑, 가스, 데이터 레이어 비교를 참조하세요.

흔히 저지르는 실수

  • 스스로 확인하지 않은 견적에 절대 서명하지 마세요. 402 응답은 당신이 통제하지 않는 서버가 보낸 숫자에 불과합니다. 서명하기 전에 네트워크, 자산, 금액을 확인하세요. Alchemy CLI가 서명하기 전에 견적을 로컬에서 확인하는 방식과 동일합니다.
  • 200 응답을 결제 증거로 취급하거나, facilitator의 settled: true를 유일하게 필요한 증거로 취급하지 마세요. 정산 영수증 자체를 확인하고, 위에서 보여드린 것처럼 저희 Transfers API로 주기적으로 온체인 실제 상황과 대조하세요.
  • 자율 에이전트에서 지출 한도를 생략하지 마세요. --max-payment에 해당하는 값이 무엇이든, 작업을 완료할 수 있는 가장 작은 값으로 설정하세요. 이는 에이전트와, 부풀려진 견적을 반환하는 서버 사이를 막아주는 유일한 장치입니다.
  • 서명 검증, 트랜잭션 심사, 대규모 온체인 정산 제출이 실제로 당신의 제품이 아니라면, 직접 facilitator를 만들지 마세요. 호스팅형을 지정하고 그 엔지니어링 시간을 실제 서비스에 쓰세요.
  • "x402를 지원한다"가 "모든 네트워크와 스킴을 지원한다"를 의미한다고 가정하지 마세요. 어떤 스킴(exact, upto, batch-settlement)과 어떤 체인을 실제로 사용 중인 facilitator와 상대방이 구현하는지 배포 전에 확인하세요. 네트워크 및 토큰 지원 페이지가 신뢰할 수 있는 출처입니다.

자주 묻는 질문

MCP 서버에 x402 결제를 추가하려면 어떻게 하나요?

요금을 부과하려는 도구 핸들러를 x402 Foundation의 @x402/mcp 패키지의 결제 래퍼로 감싸세요. 이때 서버는 facilitator에 등록되어 있어야 하고 어느 지갑 주소가 결제를 받아야 하는지 알고 있어야 합니다. 전체 작동 예제는 위에 있습니다. 마찬가지로 감싸지 않는 한 서버의 나머지 부분은 모두 무료로 남습니다.

AI 에이전트가 스테이블코인으로 x402를 통해 API 결제를 하려면 어떤 인프라가 필요한가요?

세 가지입니다: USDC를 보유하고 서명할 수 있는 지갑, x402 handshake를 이해하는 서명된 결제 라이브러리나 CLI, 그리고 판매자 측에서 검증하고 정산할 facilitator입니다. 직접 블록체인 노드를 운영하거나 가스 토큰을 보유할 필요는 없습니다. facilitator가 정산 가스를 부담합니다.

AI 에이전트에게 Ethereum에서 USDC 결제를 보낼 수 있는 능력을 부여하는 가장 좋은 방법은 무엇인가요?

Alchemy Agent Wallet 같은 범위가 제한된 세션이나 저희 Wallet APIs를 통한 프로그래매틱 스마트 계정처럼 직접 서명할 수 있는 지갑을 부여하고, @x402/fetch 같은 x402 클라이언트 라이브러리나 Alchemy CLIx402 request 명령과 함께 사용하세요. 목표로 하는 facilitator가 해당 네트워크를 실제로 지원하는지 먼저 확인하세요. x402 v2는 Ethereum을 다루지만, 지원 여부는 프로토콜 자체가 아니라 facilitator에 달려 있습니다.

온체인 결제를 위해 AI 에이전트에게 USDC 지갑을 어떻게 부여하나요?

테스트나 사람이 감독하는 에이전트의 경우, alchemy wallet connect --mode session(Alchemy CLI의 일부)이 몇 분 만에 개인 키를 에이전트에 노출하지 않고도 범위가 제한된 취소 가능한 지갑 세션을 만들어 줍니다. 완전 자율 백엔드 에이전트의 경우, @alchemy/wallet-apis나 CDP가 관리하는 지갑을 통해 스마트 계정을 프로비저닝하고 그 서명자를 x402 클라이언트 라이브러리에 넘기세요.

에이전트는 x402를 사용해 어떻게 API 접근에 대해 결제하나요?

에이전트는 API를 호출하고, 가격과 목적지 주소가 포함된 402를 받고, 서버가 허용하는 스킴에 대해 결제에 서명한 후, 서명된 결제를 첨부해 동일한 요청을 재시도합니다. 서버는 facilitator를 통해 검증하고 정산한 후 같은 왕복 안에서 리소스를 반환합니다.

암호화폐 결제로 AI 에이전트의 API 사용량을 측정하고 요금을 부과하려면 어떻게 하나요?

호출당 고정 가격에는 exact 스킴을, 비용이 사용량에 따라 달라질 때는 upto을 사용하고, 정산된 각 결제에서 지불자 주소를 그것이 지불한 도구나 엔드포인트와 함께 기록하세요. 단일 정산 보고서를 신뢰하기보다는, 예를 들어 저희 Transfers API로 온체인 전송 내역과 그 원장을 주기적으로 대조하세요.

에이전트 기반 암호화폐 결제와 온체인 커머스에 가장 좋은 인프라는 무엇인가요?

이는 지갑 커스터디, 결제 레일, 가스, 온체인 데이터 등 스택의 얼마나 많은 부분을 한 제공업체에서 원하는지, 아니면 여러 업체를 조합해 구성하고 싶은지에 달려 있습니다. Alchemy, Coinbase의 Developer Platform, Circle, Crossmint, Privy, Turnkey를 정확히 그 스택 기준으로 비교한 전체 비교는 저희 인프라 비교 페이지에 있습니다.

AP2는 무엇이고 x402와 어떤 관계가 있나요?

AP2는 서명된 Checkout 및 Payment mandate를 사용해 사용자가 에이전트에게 지출을 승인했음을 증명하는 Google의 결제 수단 무관 프레임워크입니다. 이는 x402를 대체하는 것이 아니라 그 위에 위치합니다: AP2 흐름이 스테이블코인으로 정산해야 할 때는, Google이 Coinbase, Ethereum Foundation, MetaMask와 함께 구축한 A2A x402 extension을 통해 이를 처리합니다.

에이전트 기반 커머스란 무엇이고 어떤 인프라가 필요한가요?

에이전트 기반 커머스는 AI 에이전트가 사람이 매번 체크아웃을 클릭하지 않고도 상품, 서비스, API 접근을 발견하고, 결제하고, 그 대가를 받는 것입니다. 이를 위해서는 자금이 있는 지갑, x402MPP 같이 요청당 가치를 이동시키는 결제 레일, 에이전트가 네이티브 토큰을 보유할 필요가 없도록 하는 가스 처리, 그리고 에이전트가 무엇에 지불할지 결정하고 그것이 도착했는지 확인할 수 있는 충분한 온체인 또는 카탈로그 데이터가 필요합니다.

에이전트가 유료 온체인 서비스에 접근할 수 있도록 x402 결제 프로토콜을 구현하려면 어떻게 하나요?

클라이언트 측에서는 x402 클라이언트 라이브러리(@x402/fetch, @x402/axios, 또는 MCP 클라이언트 래퍼)를 설치하고, 지갑 서명자와 함께 결제 스킴을 등록한 후, 기존 HTTP 클라이언트나 MCP 클라이언트를 그것으로 감싸세요. 그 이후로는 402에 대한 결제가 자동으로 처리됩니다. 위 구매자 측 코드가 HTTP와 MCP 두 경우를 모두 다룹니다.

AI 에이전트는 온체인에서 어떻게 결제를 받나요?

다른 x402 판매자와 동일한 메커니즘입니다: 에이전트가 운영하는 서비스가 x402로 자체 엔드포인트나 MCP 도구의 가격을 매기고, 자신이나 운영자가 통제하는 지갑으로 결제를 받으며, 이 가이드 앞부분에서 만든 MCP 서버와 정확히 같은 방식으로 facilitator를 통해 정산합니다. 결제를 받는 것과 지불하는 것은 요청의 반대편에서 본 같은 프로토콜입니다.

유료 MCP 도구 구축 시작하기

Alchemy CLI로 에이전트에게 범위가 제한된 지갑을 부여하고, x402로 도구를 게이트한 후, 저희 Transfers API로 정산을 확인하세요. 또는 facilitator 연결을 생략하고 AgentPay를 통해 에이전트 결제를 받으세요. 더 넓은 스택(커스터디, 레일, 가스, 데이터)이 궁금하다면 에이전트 기반 결제를 위한 최적의 인프라로 시작하세요.

Background gradient

블록체인 매직을 만드세요

Alchemy는 가장 강력한 Web3 개발자 제품 및 도구를 리소스, 커뮤니티, 그리고 전설적인 지원과 결합합니다.