MetaMask Agent Wallet는 mm swap 명령 세트를 통해 동일 체인에서 토큰을 스왑하고 체인 간에 브리지합니다. 트레이더는 에이전트에게 일상적인 언어로 토큰 거래 또는 이동을 요청하면, 에이전트가 해당 요청을 견적 조회, 경로 비교, 실행을 담당하는 명령으로 라우팅합니다. Agent Wallet의 무기한 선물 거래와 달리, 무기한 선물 거래에서는 담보 입금만이 MetaMask가 확인하는 EVM 트랜잭션인 반면, 스왑 또는 브리지 자체가 트랜잭션입니다. 이로 인해 트레이더가 사전에 지정해야 할 사항과 MetaMask의 지갑 수준 제어가 실제로 확인하는 내용이 달라집니다.
바로 이 지점에서 에이전트 기반 거래가 인터페이스를 직접 탭하는 방식과 차이를 보입니다. 단 한 문장에 슬리피지 허용 범위, 라우팅, 목적지 체인에 관한 수많은 암묵적 가정이 담길 수 있습니다. 이 글에서는 명시적으로 짚어볼 만한 세부 사항을 다룹니다.
이 글은 거래 메커니즘 가이드이며, 스왑 입문서가 아닙니다. 슬리피지의 작동 방식과 허용 범위 설정 방법은 슬리피지란 무엇인가를 참고하세요. 시장가 주문과 지정가 주문의 비교, 그리고 슬리피지 허용 범위가 AMM에서 지정가 주문에 가장 가까운 개념인 이유는 암호화폐 주문 유형을 참고하세요. DEX, 애그리게이터, 지갑 네이티브 스왑의 차이는 2026년 최고의 암호화폐 스왑 플랫폼을 참고하세요. 지갑 카테고리 자체에 대해서는 에이전틱 지갑이란 무엇인가와 에이전틱 지갑의 작동 방식을 참고하세요. 담보 입금 규모 설정 및 다른 자산 클래스에서 MetaMask가 실제로 확인하는 거래 단계에 대해서는 MetaMask Agent Wallet로 무기한 선물 거래하는 방법을 참고하세요.
스왑 인터페이스 분석
다음은 스왑 또는 브리지 워크플로우에서 활용되는 명령들입니다. 인터페이스를 이해하면 의도한 대로 요청을 표현하기가 더 쉬워집니다.
에이전트에게 요청하는 내용 | 실행되는 명령 | 수행하는 작업 |
"0.1 ETH를 USDC로 스왑해줘" | mm swap quote
| 제출 없이 동일 체인 스왑 가격 조회 |
"Base에서 Arbitrum으로 10 USDC 브리지해줘" | mm swap quote --to-chain-id
| 제출 없이 크로스체인 경로 가격 조회 |
"모든 경로를 비용 순으로 보여줘" | mm swap quote --all-quotes
| 순위가 매겨진 모든 후보 경로 반환 |
"그 견적으로 진행해줘" | mm swap execute --quote-id
| 이전에 조회된 거래 제출 |
"스왑하고 확인 요청은 하지 마" | mm swap quote --yes
| 확인 생략 후 즉시 견적 조회 및 실행 |
"그 스왑 어떻게 되고 있어" | mm swap status --quote-id
| 실행 상태 확인 |
출처: MetaMask Agent Wallet 명령 참조
이러한 기본 이해를 바탕으로, 토큰화된 주식 및 기타 자산(흔히 실물 자산 또는 RWA라고 불리는)을 포함한 토큰 스왑 및 브리지에 MetaMask Agent Wallet를 활용하기 위한 9가지 팁을 소개합니다.
1. 먼저 견적을 조회하고, "이용 불가"를 정상적인 응답으로 받아들이기
mm swap quote는 제출 없이 거래 가격을 조회합니다. mm swap execute도 동일한 스왑 파라미터를 직접 받아 한 번의 호출로 견적 조회와 실행을 처리할 수 있지만, 견적을 별도로 먼저 실행하는 것이 더 안전한 기본 방식입니다. 서명 전에 가격, 경로, 수수료를 확인할 수 있는 유일한 방법이기 때문입니다. 기반 브리지 또는 DEX 애그리게이터가 경로를 찾지 못하면, CLI는 하드 에러를 발생시키지 않고 reason(예: AMOUNT_TOO_LOW, SLIPPAGE_TOO_HIGH, NO_QUOTES)과 message, hint가 포함된 소프트 kind: "unavailable" 결과를 반환합니다.
이 차이는 프롬프트에 따라 행동하는 에이전트에게 중요합니다. 이용 불가 견적은 작업할 수 있는 응답입니다. 에이전트는 슬리피지를 넓히거나, 금액을 조정하거나, 다른 토큰을 시도할 수 있으며, 이는 그대로 보고해야 할 실패가 아닙니다. 단, 일시적인 QUOTE_RETRY 신호는 예외로, 그대로 재시도할 가치가 있는 진짜 하드 에러입니다. 어느 경우든, 에이전트는 견적이 이용 불가 또는 만료된 후 execute를 호출하기 위해 quoteId를 임의로 생성하거나 재사용해서는 안 됩니다. 실행 단계는 정상적으로 실패하지만, 추측에 기반한 트랜잭션은 제출되지 않습니다.
2. 기본값을 신뢰하는 대신 슬리피지 허용 범위 직접 설정하기
mm swap quote는 --slippage를 0에서 100 사이의 백분율로 받으며, 생략 시 기본값은 0.5%입니다. 이 기본값은 합리적인 중간 지점이지만, 토큰의 유동성과 무관하게 모든 거래에 적용되는 기본값일 뿐입니다.
슬리피지란 무엇인가에서 다루듯이, 엄격한 허용 범위는 불리한 체결을 방지하지만 변동성이 큰 상황에서 더 많은 견적이 완전히 실패하는 원인이 됩니다. 반면 느슨한 허용 범위는 더 나쁜 가격에서도 더 안정적으로 체결됩니다. ETH에서 USDC처럼 유동성이 깊은 페어를 거래하는 프롬프트는 0.5% 기본값에 합리적으로 의존할 수 있지만, 유동성이 얕은 토큰을 거래하는 프롬프트는 해당 토큰을 고려하지 않고 선택된 수치를 그대로 상속받는 것보다 어느 방향으로든 허용 범위를 명시적으로 지정하는 것이 좋습니다.
3. 크로스체인 브리지에는 목적지 체인이 필요하며, 리퓨얼에는 특정 실패 방식이 있음
--to-chain-id를 추가하면 동일 체인 스왑이 크로스체인 브리지로 전환됩니다. 생략하면 목적지가 소스 체인으로 기본 설정됩니다. --to-address를 사용하면 출력이 서명자 본인의 지갑이 아닌 다른 곳으로 전달되지만, 크로스체인 경로에서만 가능하며 소스와 목적지 체인이 동일한 경우에는 효과가 없습니다.
--refuel은 크로스체인 견적에 소량의 목적지 체인 네이티브 가스를 번들로 포함시키는 기능으로, 트레이더가 목적지 체인에 아직 가스 토큰을 보유하지 않은 경우에 유용합니다. 이 기능은 선택 사항이며 크로스체인 전용이고, 한 가지 특정 실패 방식이 있습니다. 목적지 토큰이 이미 목적지 체인의 네이티브 가스 자산인 경우(예: Arbitrum ETH로 ETH 브리지)에 사용하면 NO_QUOTES가 반환됩니다. "Base에서 Arbitrum으로 USDC를 브리지하고 거기서 사용할 ETH도 확보해줘"와 같은 프롬프트는 정확히 이 플래그를 설명하는 것입니다. 체인의 네이티브 토큰으로 직접 브리지하는 프롬프트는 이 플래그가 필요 없으며, 추가하면 실패합니다.
4. 경로를 신중하게 비교한 후 특정 경로로 실행하기
--all-quotes는 추천 경로가 표시된 모든 순위별 후보 경로를 반환하며, --strategy(쉼표로 구분된 cost, speed, impact, output; 기본값은 cost,speed)에 따라 순위가 매겨집니다. 경로를 비교하고 이후 특정 --quote-id를 실행하는 것은 2단계 프로세스이며, 의도적인 설계입니다. --all-quotes는 --yes와 함께 사용할 수 없으므로, 모든 경로를 확인하면서 확인도 건너뛰라는 프롬프트는 CLI가 동일한 호출에서 처리하지 않는 두 가지를 동시에 요청하는 것입니다.
견적 아티팩트는 24시간 후 자동으로 삭제되므로, 오늘 비교할 가치가 있는 경로가 다음 주에도 유효하게 실행될 수 있는 경로는 아닙니다.
5. 가스리스 실행과 일괄 승인은 요청이 아닌 자동으로 처리됨
지갑의 네이티브 잔액으로 가스를 충당할 수 없는 경우, mm swap execute는 EIP-7702를 사용하는 가스리스 릴레이를 통해 적격한 가스 포함 견적을 자동으로 라우팅하며, 릴레이 수수료는 스왑된 토큰 자체에서 차감됩니다. 이를 위한 플래그는 없습니다. 이는 CLI가 자격을 갖춘 견적에 자체적으로 적용하는 폴백이며, 모든 저가스 스왑에 대한 보장이 아닙니다.
별도로, 적격 체인 및 계정에서 CLI는 ERC-7821 배치 실행을 사용하여 ERC-20 승인과 거래를 하나의 원자적 호출로 결합하며, 이 경우 응답에 route: "erc7821"로 보고됩니다. 배치가 불가능한 경우 CLI는 순차적으로 제출하는 방식으로 폴백합니다. 두 동작 모두 프롬프트에서 요청할 필요가 없지만, 실제로 실행된 내용을 확인할 때 알아두면 유용합니다. 배치된 가스리스 스왑과 2단계 가스 지불 스왑 모두 동일한 요청을 충족할 수 있으며, 어느 것이 실행되었는지는 응답 필드를 통해 확인할 수 있습니다.
참고: 가스리스 실행은 더 높은 수수료를 초래할 수 있습니다.
6. Guard Mode가 확인하는 것은 별도의 단계가 아닌 스왑 자체임을 인지하기
이는 Agent Wallet의 무기한 선물 거래와 반대되는 패턴입니다. 무기한 선물 거래에서는 Hyperliquid 포지션 개설 또는 청산이 오프체인에서 이루어지며, MetaMask가 평가하는 EVM 트랜잭션은 담보 입금뿐입니다. 스왑 또는 브리지에는 이러한 분리가 없습니다. mm swap execute는 거래를 EVM 트랜잭션으로 직접 제출하므로, Guard Mode의 롤링 24시간 유출 한도가 측정하는 트랜잭션이 바로 이것이며, MetaMask의 위협 스캐닝과 네트워크, 주소, 토큰 허용 목록이 직접 평가하는 대상도 이것입니다.
$2,000 스왑은 확인되는 순간 롤링 한도에 대해 $2,000 유출로 계산되며, 동일 체인 거래든 크로스체인 브리지든 마찬가지입니다. 한도를 초과하거나 위협 스캐닝에 의해 플래그가 지정되면, 작업이 2단계 인증 승인을 위해 AWAITING_MFA 상태로 일시 중지됩니다. QR 로그인의 경우 MetaMask Mobile 푸시 알림, 브라우저 로그인의 경우 이메일 링크를 통해 누군가가 응답할 때까지 에이전트는 진행할 수 없습니다. 이는 서버 지갑 모드에 적용되며, 거래 모드는 자체 지갑 연결 설정에는 적용되지 않습니다. 실질적인 의미는 다음과 같습니다. 스왑 프롬프트에서의 규모 관리는 무기한 선물 입금처럼 지갑이 이미 시행하는 것과 별개의 습관이 아닙니다. 스왑 금액 자체가 Guard Mode가 주시하는 수치입니다.
7. 타임아웃 후 실행을 무작정 재실행하지 않기
스왑은 트랜잭션 해시가 존재하기 전에 2단계 인증을 위해 일시 중지될 수 있으며, 폴링 ID가 첨부된 AWAITING_MFA 상태로 진입합니다. 가스리스 릴레이 단계 또는 순차적 서버 지갑 단계에서 MFA 폴이 타임아웃되면, RELAY_TIMEOUT 또는 JOB_TIMEOUT으로 표시되며 동일한 복구 힌트가 제공됩니다. mm wallet requests watch 를 실행하여 해시를 검색하고, 원래 작업이 아직 완료될 수 있는 동안에는 execute를 다시 호출하지 마세요.
해당 기간에 실행을 재실행하면 문제를 해결하는 것이 아니라 두 번째 중복 제출이 발생할 위험이 있습니다. 보류 중인 요청을 승인하고 작업을 모니터링하는 것이 올바른 복구 경로입니다.
8. 스왑에는 드라이 런이 없으며, 견적 비교가 가장 가까운 대안임
--dry-run을 허용하여 서명 없이 주문을 검증하는 mm perps open과 달리, mm swap execute에는 동등한 미리보기 모드가 없습니다. 스왑을 미리 연습하는 것에 가장 가까운 방법은 견적을 요청하고, 일상적이지 않은 거래의 경우 하나를 확정하기 전에 --all-quotes를 통해 전체 후보 경로 세트를 확인하는 것입니다. 두 방법 모두 엄밀한 의미의 드라이 런을 대체하지는 않습니다. 견적은 여전히 만료될 수 있고, 견적 조회와 실행 사이에 시장 상황이 변할 수 있습니다. 하지만 서명 전에 잘못 지정된 요청을 포착하기 위해 사용할 수 있는 도구입니다.
9. 견적 조회 전 체인 및 가스리스 지원 여부 확인하기
mm chains list는 체인별로 features 필드를 반환하며, 해당 체인에서 swap이 지원되는지 여부와 가스리스 릴레이 사용 가능 여부를 나타내는 relaySupported 플래그가 포함됩니다. 견적 조회 전에 이를 확인하면 불필요한 왕복을 줄일 수 있습니다. 스왑 지원이 없는 체인에 대한 견적 요청이나 릴레이가 지원되지 않는 체인에서 가스리스 실행이 작동할 것이라는 가정은 사전에 배제할 수 있었음에도 불구하고 사후에야 에러로 나타납니다.
이는 인식할 가치가 있는 두 가지 스왑 관련 에러 코드와 함께 활용됩니다. GASLESS_UNSUPPORTED는 해당 체인에서 릴레이를 사용할 수 없음을 의미하고, INSUFFICIENT_GAS는 지갑의 네이티브 잔액으로 가스를 충당할 수 없으며 가스리스 폴백도 적용되지 않았음을 의미합니다. 두 경우 모두 mm chains list가 사전에 답변하는 동일한 체인 지원 질문으로 귀결됩니다.
Agent Wallet이 스왑에서 지원하지 않는 기능
경계를 명확히 하는 것이 더 넓은 범위를 암시하는 것보다 유용합니다.
반복 또는 예약 스왑 기능은 내장되어 있지 않습니다. 네이티브 달러 비용 평균화 기능, 포트폴리오 전반의 자동 리밸런싱, 중앙화 거래소처럼 상시 지정가 주문 장부도 없습니다. 각 mm swap 호출은 단일 견적 조회 및 실행 사이클입니다. 반복적인 작업은 해당 사이클을 일정에 따라 호출하는 스크립트 또는 에이전트 루프이며, 지갑 기능이 아닙니다. 이러한 상시 로직을 원하는 트레이더는 플러그인으로 구축할 수 있습니다. 이는 설치된 npm 패키지가 동의 기반 권한 하에 CLI에 새 명령을 추가할 수 있는 베타 기능이지만, 직접 구축해야 하는 경로이지 내장 기능이 아닙니다.
견적 단계에서 보고하는 것 이상의 크로스 DEX 최적 실행 보장은 없습니다. --all-quotes와 --strategy는 순위별 후보를 표시하지만, 순위는 견적 시점에 사용 가능한 경로를 반영할 뿐이며, 잠시 후 더 나은 가격이 나타나지 않는다는 보장이 아닙니다.
슬리피지 보호는 허용 가능한 가격 변동의 상한선이며, 기반 거래 자체가 좋지 않은 아이디어라는 것에 대한 보호가 아닙니다. 슬리피지 허용 범위를 통과한 스왑도 사후에 트레이더가 선택하지 않았을 가격에서 실행될 수 있습니다. 허용 범위는 체결가가 견적가에서 얼마나 벗어날 수 있는지만 제한할 뿐입니다.
mm chains list는 특정 CLI 버전에 대한 신뢰할 수 있는 최신 체인 목록을 반환하며, 체인별 swap 지원 여부를 나타내는 features 필드와 gasless 자격 여부를 나타내는 relaySupported 플래그도 함께 제공됩니다.
아니요, 그 차이는 알아두실 만한 가치가 있습니다. Perps의 경우, MetaMask가 확인하는 EVM 트랜잭션은 Hyperliquid 입금뿐이며, 포지션을 열거나 닫는 행위 자체는 해당되지 않습니다. 반면 스왑이나 브리지는 이러한 분리가 없습니다. mm swap execute 자체가 EVM 트랜잭션이므로, 출금 한도, 위협 스캔, allowlist에 대해 직접 확인됩니다.
이는 브리지 또는 DEX가 실행 가능한 이유로 경로를 생성할 수 없을 때 CLI가 반환하는 정상적인 응답입니다. 응답에는 kind: "unavailable", AMOUNT_TOO_LOW 또는 SLIPPAGE_TOO_HIGH와 같은 reason, 그리고 조정 방법에 대한 hint가 포함됩니다. 일시적인 QUOTE_RETRY 신호만이 실제 하드 오류에 해당합니다.
아니요. 이 기능은 선택적으로 활성화되며 크로스체인 전용입니다. 목적지 토큰이 이미 목적지 체인의 네이티브 가스 자산인 경우, 리퓨얼할 필요가 없으므로 NO_QUOTES 오류와 함께 실패합니다.
직접적으로는 불가능합니다. mm swap execute에는 dry-run 플래그가 없으며, 사전 견적 없이 swap 파라미터를 직접 입력하여 실행할 수도 있습니다. 커밋하기 전에 가장 근접한 확인 방법은 먼저 견적을 요청하고, 일반적이지 않은 경우 --all-quotes를 사용하여 경로를 비교하는 것입니다.
MFA 대기 상태(AWAITING_MFA)로 진입하며 폴링 ID가 연결됩니다. 가스리스 릴레이 또는 순차적 서버 지갑 단계에서 대기 시간이 초과되면 RELAY_TIMEOUT 또는 JOB_TIMEOUT으로 표시됩니다. 어느 경우든 대기 중인 요청을 승인한 후 mm wallet requests watch 를 실행하여 트랜잭션 해시를 가져오세요. 기존 작업이 아직 완료될 수 있는 상태에서 execute를 다시 실행하면 문제가 해결되지 않고 중복 제출이 발생할 수 있습니다.
아니요. 지갑의 네이티브 잔액으로 가스 비용을 충당할 수 없는 경우, MM Swap 실행은 자격을 갖춘 가스 포함 견적을 gasless relay를 통해 자동으로 라우팅하고, 스왑된 토큰에서 수수료를 차감합니다. 이는 모든 저가스 스왑에 보장되는 것이 아니라, 견적이 자격 조건을 충족하는 경우에만 적용됩니다. CLI가 승인과 거래를 하나의 호출로 일괄 처리한 경우, 응답은 route: "erc7821"로 보고됩니다. 두 동작 모두 플래그로 제어되지 않습니다.