에이전트를 위한 Stablecoin scanner ACHIVX
스캐너가 소프트웨어에 여는 모든 접근 경로 — MCP, A2A, REST, Markdown 페이지 — 와 모든 응답 뒤에 있는 정직성 계약, 그리고 여덟 가지 스킬이 각각 무엇을 반환하는지. 스캐너 자체의 표현으로, 직접 호출해 확인했습니다.
- 23페이지
- 4개 그룹
- 답변 먼저
네 개 그룹의 23페이지로, 접근 경로마다 한 페이지, 스킬마다 한 페이지입니다. 모든 페이지는 첫 문단에서 답을 제시하고, 이어서 스캐너 자체의 표현으로 작동 방식을 설명한 뒤, 열어 볼 실시간 응답과 더 깊이 다루는 가이드 및 레슨을 안내합니다. 2026-10-13에 읽고 호출한 agents.md, openapi.json, 에이전트 카드, MCP 서버 카드, 세 개의 SKILL.md 절차, 카탈로그, /v1/methodology를 바탕으로 작성했습니다.
접근 경로
어느 인터페이스를 호출할지 — MCP, A2A, REST, 아니면 Markdown 페이지 — 그리고 에이전트가 하나의 URL에서 그 모두를 어떻게 찾는지.
에이전트는 어떤 접근 경로를 써야 합니까 — MCP, A2A, REST, 아니면 Markdown 페이지?
런타임에서 가장 쉬운 것을 고르십시오: 여덟 가지 기능은 MCP와 A2A에서 같고, REST는 그 상위 집합입니다. 이미 MCP를 쓰는 클라이언트는 한 줄로 서버를 추가하고, JSON-RPC 클라이언트는 /a2a에 POST하며, 스크립트는 /v1을 읽습니다. 페이지도 API입니다: 허브, 대시보드, /stablecoin, /explorers, /transactions, /freezes 색인, 피드, 동결 페이지, 모든 /{network}/stablecoin/{symbol} 페이지는 Markdown 쌍둥이를 제공하며, 주소, 거래, 블록 페이지는 HTML 전용입니다. /llms.txt에서 시작해 매뉴얼로 가십시오. 매뉴얼과 OpenAPI 명세가 모두 반복하는 두 규칙: 모든 호출에 chain을 명시적으로 전달하고, 응답으로 분기하기 전에 정직성 계약을 읽으십시오.
Stablecoin scanner ACHIVX MCP 서버는 어떻게 연결합니까?
한 줄이면 됩니다: claude mcp add stablescan --transport http https://stablescan.achivx.com/mcp. 서버는 스트리밍 가능한 HTTP를 사용하고, 프로토콜 버전 2024-11-05부터 2025-11-25까지를 받으며, 키가 필요 없고, 스킬 이름을 밑줄로 바꾼 여덟 개의 도구를 나열합니다. 클라이언트 없이 하려면 initialize를 POST하고, 반환된 Mcp-Session-Id 헤더를 보관해 이후 모든 호출에 보내십시오 — 이 헤더가 없는 호출은 세션 초기화 중에 한 것으로 간주되어 거부됩니다.
에이전트 카드는 무엇을 선언하며, A2A로 스킬을 어떻게 호출합니까?
/.well-known/agent-card.json의 카드(버전 1.4.0, A2A 프로토콜 1.0.0)는 입력 스키마를 갖춘 여덟 가지 스킬, JSON-RPC 엔드포인트 /a2a, 인증 방식 none, CAIP-2 id를 가진 일곱 개 네트워크, 분당 1,200 요청의 요청 한도, MCP 안내를 선언합니다. 스킬은 A2A 코어 방식 — 데이터 파트를 담은 SendMessage — 으로 호출하거나, 버전 헤더 없이 자체 JSON-RPC 메서드 {"jsonrpc": "2.0", "id": 1, "method": "get-address-risk", "params": {…}}로 호출합니다.
세 가지 에이전트 스킬은 무엇이며, 어떻게 설치합니까?
세 개의 SKILL.md 절차 — stablescan-screening, stablescan-settlement-data, stablescan-graph-walk로, 코딩 에이전트용 Agent Skills이며 에이전트 카드가 A2A 메서드로 선언하는 여덟 가지 스킬이 아닙니다 — 는 /.well-known/agent-skills/index.json(agentskills.io discovery 0.2.0)에 각각 sha256 다이제스트와 함께 나열되어 있고, npx skills add https://stablescan.achivx.com으로 설치합니다. 각각은 절차이고, 매뉴얼은 참고 문서이며, 각 스킬은 매뉴얼을 다시 가리킵니다.
에이전트는 이 호스트가 제공하는 모든 것을 어떻게 찾습니까?
네 개의 문서가 호스트를 색인합니다: /.well-known/ai-catalog.json의 AI 카탈로그(에이전트 산출물마다 한 항목: MCP 서버 카드, REST API의 OpenAPI 명세, A2A 에이전트 카드 — 각각 대표 질의 포함), /.well-known/api-catalog의 RFC 9727 API 카탈로그(REST, A2A, MCP와 각각의 문서 및 헬스 체크. REST 항목에는 방법론으로 가는 service-meta 링크가 추가됨), 한 페이지 지도인 /llms.txt, 그리고 랜딩 페이지, 스테이블코인 색인, 허브, 모든 네트워크의 스테이블코인 페이지를 하나의 Markdown 문서로 담은 /llms-full.txt입니다. 앱의 모든 HTML 페이지는 Link 헤더와 head에서 카탈로그를 알립니다.
페이지가 곧 API입니다: 페이지를 Markdown으로 어떻게 읽습니까?
허브, 랜딩 페이지, 스테이블코인·익스플로러·거래·동결 색인, 모든 네트워크 페이지, 모든 네트워크별 스테이블코인 페이지는 Accept: text/markdown에 같은 문서의 Markdown 변환본으로 답하며, .md 쌍둥이 URL에서도 제공됩니다. 프런트매터에는 제목, 설명, 정식 URL이 있고 응답에는 ETag가 붙습니다. 주소, 거래, 블록 페이지는 HTML 전용입니다 — 그곳의 200은 Markdown이라는 증거가 아닙니다.
REST API
/v1이 어떻게 구성되어 있는지, 페이지 나누기와 캐시는 어떻게 하는지, 한도와 거부는 어떤 모습인지, 원시 행은 얼마나 과거까지 닿는지.
REST API는 어떻게 구성되어 있습니까?
/openapi.json(OpenAPI 3.1, API 1.4.0)은 하나의 서버 아래 여덟 개 태그로 35개 경로를 설명합니다: addresses(9), freezes(6), registry(7), stats(5), feed(3), attestation(1), watchlists(경로 2개, 작업 3개), liveness(2). watchlists를 제외한 모든 것은 공개되어 있고 읽기 전용이며 인증이 필요 없습니다. 오류는 하나의 봉투를 공유합니다 — HTTP 상태가 아니라 error.code로 분기하십시오 — 그리고 chain을 받는 모든 호출에는 chain을 전달해야 합니다(/v1/verify는 tx만 받습니다).
페이지 나누기와 캐시는 어떻게 합니까: 커서, ETag, If-None-Match?
목록 피드는 next_cursor로 페이지를 나눕니다: 같은 쿼리를 cursor=와 함께 반복하고, 커서가 없는 페이지에서 멈추십시오. GET 응답에는 ETag가 붙습니다 — 비용이 적은 304를 받으려면 If-None-Match를 보내십시오(2026-10-13 /v1/sanctions에서 확인) — 단, §4가 no-store로 표시한 응답은 예외입니다: 일부를 잃은 응답 — 다시 요청하십시오 — 과, 호출마다 계산되는 솔라나 판정, 그리고 결코 캐시되지 않는 몇 가지 조회(/v1/stats/slo, 오류 응답)로, 이 경우 no-store는 재시도에 대해 아무것도 말하지 않습니다 — 503 timeout은 여전히 Retry-After를 담고 재시도를 요청합니다. Cache-Control을 정보로 읽으십시오: 판정에서 60 대신 max-age=10이면 노출 탐색이 중단되었다는 뜻입니다.
한도는 무엇이며, 거부는 어떤 모습입니까?
분당 1,200 요청의 토큰 버킷 요청 한도 하나(에이전트 카드의 rateLimits. 스킬은 같은 것을 초당 20, 버스트 40으로 표현합니다). 마감 시간을 넘긴 조회는 REST에서 error.code: timeout과 Retry-After: 5가 붙은 503, A2A에서 data.retryable이 붙은 -32050, MCP에서 timeout을 지정하는 도구 오류로 답합니다. MCP의 무거운 도구는 busy로 답할 수도 있습니다. 형식이 잘못된 입력은 코드와 메시지 안의 수정 방법이 붙은 400입니다. 모든 응답에는 X-Request-Id가 붙습니다.
응답은 어떤 것일 수 있습니까? REST, A2A, MCP의 모든 상태와 코드
세 가지 봉투. REST: HTTP 상태와 JSON 오류로, 그 code는 OpenAPI 명세가 열거하는 35개 값 중 하나이며 메시지에 수정 방법이 담깁니다 — 상태가 아니라 코드로 분기하십시오. A2A: 응답한 모든 요청은 JSON-RPC result 또는 error를 담은 HTTP 200이며, 코드는 모두 열두 개입니다 — 알림의 204, 요청 한도의 429, 그리고 GET만이 JSON-RPC 밖에 있습니다. id 없는 요청은 알림이며 아무것도 실행하지 않고 204로 답합니다. MCP: 전송 계층의 거부에는 일반 텍스트 HTTP 상태, 세션·알 수 없는 메서드·알 수 없는 도구에만 JSON-RPC 오류. 입력과 조회에 관한 모든 것은 무엇을 할지 밝히는 텍스트가 담긴 isError: true 도구 결과로 돌아옵니다. 아래의 모든 코드는 OpenAPI 명세, 매뉴얼, 2026-10-13에 조회한 응답에서 메시지와 함께 가져왔습니다.
기계가 조회할 때 원시 행은 얼마나 과거까지 닿습니까?
콜드 내보내기 경계보다 오래된 원시 전송 행은 핫 데이터베이스를 떠납니다. 행이 오프로드된 경우 그 경계는 피드와 /v1/stats/overview에 hot_window_start로 공개되며(없으면 아직 아무것도 오프로드되지 않았다는 뜻) — 2026-10-13에 조회했을 때 2026-10-11T00:00:00Z — 정해진 시각이 아니라 내보내기가 하루치를 분리할 때 움직입니다. 행 단위 조회는 거기서 끝나지만, 파생 계층은 그렇지 않습니다. 그보다 이전에 대한 빈 행 단위 응답은 없음이 아니라 오프로드됨을 뜻하며, 해시만으로 한 조회는 비교할 수 없으므로 그 빈 응답은 알 수 없음입니다.
정직성 계약과 여덟 가지 기능
unknown, null, 빈 목록이 무엇을 뜻하는지, 숫자가 어떻게 만들어지고 서명되는지, 여덟 가지 스킬이 각각 무엇을 반환하는지.
정직성 계약이란 무엇입니까?
매뉴얼의 §4 — 응답으로 분기하기 전에 읽으십시오: unknown은 none이 아니며, 그 이유를 incomplete_reasons에 밝힙니다. 일부를 잃은 응답은 그렇다고 밝히고 no-store로 제공됩니다. 측정되지 않음은 0이 아닙니다. 동결 집계 범위는 쌍별로 명시됩니다. 빈 동결 목록은 깨끗하다는 증명이 아닙니다. 최신성은 암시되는 것이 아니라 공개됩니다. 그리고 모두 unknown인 결과도 실제 결과입니다. unknown을 깨끗함으로 표시하는 연동은 스캐너가 말하기를 거부한 것을 공개한 셈입니다.
숫자는 어떻게 만들어지며, 누가 서명합니까?
GET /v1/methodology(2026-10-13 기준 버전 stablscan-methodology-v0.4.0)는 모든 숫자가 어떻게 만들어지는지 밝힙니다: 세 가지 원칙, 정의(정산 거래량, 헤어컷(haircut), 시장 대시보드, 운영 SLO…), 여섯 가지 제외 항목, 각각 공개 문구와 제품 규칙을 갖춘 열두 가지 한계, 섀도 모드로 시작하는 탐지기 신호, 그리고 질문 → 경로 지도입니다. 배포 환경이 서명하는 경우 카드에 signature와 jwks_uri가 있고 POST /v1/verify-attestation이 본문을 검사합니다. 그날 이 배포 환경의 방법론에는 attestation 블록이 없었습니다.
get-address-risk는 무엇을 반환하며, 언제 호출합니까?
한 체인에서 한 주소에 대한 하나의 등급 — unknown | none | low | medium | high | severe — 으로, 사실(OFAC, 이 체인의 발행사 동결/소각 상태, 노출)과 귀속된 라벨(최대 medium, 등급을 매기려면 최소 두 출처)을 종합하며, evidence 행, incomplete_reasons, flags, computed_at, sanctions_list_as_of를 함께 반환합니다. 거래하기 전에 가장 먼저 호출하고, chain을 명시적으로 전달하십시오 — 생략하면 0x… 주소는 베이스 기준으로 답하며 chain_source: "default"로 그 사실을 밝힙니다. unknown은 원인을 밝히며 결코 깨끗하다는 뜻이 아닙니다. REST 대응 엔드포인트: GET /v1/addresses/{address}/risk?chain=이며, new_counterparty를 위해 ?from=도 받습니다.
get-address-compliance는 무엇을 반환합니까?
한 체인에서 한 주소에 대한 컴플라이언스 사실입니다. sanctioned(OFAC SDN 플래그), freeze[] — 활성화된 동결 가능 스테이블코인마다 한 행이며 status는 frozen | seized | clear | unknown 중 하나이고, 그 근거가 된 기록, coverage, freeze_log_backfilled, frozen_usd6를 담습니다 — 그리고 not_freezable[], frozen_elsewhere[] (다른 체인의 기록에 걸린 동일한 바이트), freeze_proposals[], chains_with_data가 함께 반환됩니다. 출처와 함께 인용된 디코딩된 온체인 사실이며, 신원·AML·법적 판단이 결코 아닙니다. REST 대응 엔드포인트는 쿼리 없는 GET /v1/addresses/{address}?chain=입니다.
get-address-exposure는 무엇을 반환합니까?
가치 그래프를 거슬러 가장 가까운 오염 출발점까지 범위를 제한해 수행하는 역방향 너비 우선 탐색입니다. exposure(sanctioned | direct | indirect | negligible | none | unknown), min_hops, exposure_fraction, reached_roots, nodes_explored, frontier_truncated, hops_requested, hops_completed를 반환하며, 평가가 불완전한 이유는 incomplete_reasons가 밝힙니다. 예산 때문에 중단된 탐색은 이미 도달한 출발점이 판정을 정하지 않는 한 unknown으로 답합니다 — truncation_reason만 보지 말고 exposure를 읽으십시오.
get-address-approvals는 무엇을 반환합니까?
한 주소가 한 체인에서 부여한 열린 ERC-20 및 Permit2 허용량입니다: 사용 권한자(spender)와 토큰마다 한 행이며, 원시 값, unlimited / oversized / old 플래그, spender_class, 그리고 구간 — critical | high | low | expired | none — 와 worst_band가 있습니다. 경고 표시된 사용 권한자나 알 수 없는 사용 권한자에게 무제한 허용은 주요 자금 탈취 경로이며, DEX 라우터나 Permit2는 정상적인 경우입니다. 구간는 섀도 휴리스틱으로, 결코 위험 등급을 움직이지 않습니다.
get-sanctions-status는 무엇을 반환합니까?
OFAC SDN 데이터셋의 상태입니다: source(ofac_sdn), 생태계별 개수(evm_count, solana_count, tron_count, total), updated_at — 2026-10-13에는 디지털 화폐 주소 385개, 04:00 UTC 갱신이었습니다. 매개변수가 없으며 주소 목록 내보내기도 없습니다. 주소별 등재 여부는 주소 개요에서 확인합니다. 휴리스틱 노출 신호이며 법률 자문이 아닙니다 — 응답 자체의 note가 공식 SDN 목록과 대조해 확인하라고 말합니다.
get-sync-status는 무엇을 반환합니까?
한 네트워크에 대한 인덱서 최신성입니다: chain_id, last_indexed_block, head_block, safe_block, finalized_block, lag_blocks(헤드 빼기 마지막 인덱싱 블록), freshness_seconds — 가장 최근 인덱싱된 전송의 경과 시간으로, 모든 네트워크에서 쓰는 최신성 척도 — 와 as_of. 솔라나에서는 lag_blocks가 구조상 0에 가까우므로 최신성 신호가 아닙니다. freshness_seconds를 읽으십시오 — 그리고 그 값이 null이면 lag_blocks로 대체하지 말고 다시 요청하십시오. 이 값은 모든 네트워크의 동기화 응답에서 null일 수 있습니다. /health와 /ready는 이에 대해 아무것도 말하지 않습니다.
get-recent-transactions는 무엇을 반환합니까?
한 체인의 최신 스테이블코인 전송으로, recipient 또는 payer로 필터링할 수 있고 커서로 페이지를 나눕니다. items[]에는 tx_hash, log_index, block_number, block_time, payer, recipient, amount {최소 단위 금액, 소수 자릿수, 토큰 심볼}, token(컨트랙트 주소), finality, 그리고 가격이 매겨진 경우 usd_amount가 들어갑니다. limit의 기본값은 25이며 허용 범위는 1–200뿐입니다. REST 피드 GET /v1/transfers는 같은 행에 전체 필터 목록을 제공합니다. 어떤 행이든 오프로드된 뒤에는 두 응답 모두 hot_window_start를 담습니다.
get-wallet-graph-walk는 무엇을 반환합니까?
한 지갑에서 출발해 인덱싱된 정산 흐름 그래프를 범위를 제한해 탐색하며, 대상은 token에 지정한 스테이블코인 하나입니다(스킬에서는 필수, REST에서는 기본값 있음). direction, volume(원시 최소 단위), volume_usd6, 가치 비례 score를 담은 hops[].nodes, nodes_explored, frontier_truncated, window, window_from을 반환하며, 제재 대상 노드와 귀속된 노드에는 표시가 붙습니다. 설명용 기본 도구일 뿐입니다 — 탐지기 판정, 신원/통제 단정, AML 결정 또는 법률 자문이 아닙니다.
루프
사람이 개입하지 않는 매뉴얼의 루프, 그리고 스크립트가 발행사 기록을 어떻게 통보받는지.
사람이 개입하지 않는 일반적인 루프는 무엇입니까?
매뉴얼 §5의 세 단계: 자금을 받거나 보내기 전에 거래 상대를 검증합니다(get-address-risk, 그다음 get-address-compliance). 위험이 그럴 만하면 더 깊이 살펴봅니다(get-address-exposure, token을 지정한 get-wallet-graph-walk). 전송 후에는 이 인터페이스에서 인덱싱되었는지 확인합니다(수취인에 대한 get-recent-transactions, get-sync-status). 모든 페이로드는 완전한 JSON-RPC 2.0 봉투이며, 매뉴얼의 첫 예제는 그대로 실행할 수 있습니다.
스크립트는 발행사 기록을 어떻게 통보받습니까 — 관심 목록과 구독?
두 가지 메커니즘이 있습니다. 관심 목록(watchlist)은 유일하게 인증이 필요한 인터페이스입니다: POST /v1/watchlists가 규칙을 만들고(GET은 나열, DELETE /v1/watchlists/{id}는 삭제), 매뉴얼이 문서화한 두 가지 동결 분류가 있습니다. freeze(감시 중인 주소를 지목한 확정된 발행사 기록마다 한 번, 또는 usd6 기준 임계값을 넘는 전역 알림)와 freeze_proposed(대기 중인 제안마다 한 번 — 조기 경보)입니다. 베어러 서비스 키가 없으면 호스트는 401 valid bearer service key required로 답하며, 키는 운영자가 설정하는 것으로 셀프서비스가 아닙니다. 사람을 위한 구독은 공개 텔레그램 봇이며, GET /v1/subscriptions가 이를 설명합니다.
이 페이지는 ACHIVX Academy 영어 원문을 한국어로 옮긴 것입니다. 번역과 원문이 다르면 영어 원문이 기준입니다.