Stable은 MCP 서버, 에이전트 스킬, 일반 텍스트 문서 파일을 제공하여 AI 에디터와 코딩 에이전트가 Stable과 직접 작업할 수 있도록 합니다. 이 페이지에서는 각 구성 요소를 워크플로에 연결하는 방법, MCP를 지원하지 않는 AI 도구를 위한 복사-붙여넣기 가능한 컨텍스트 블록, 일반적인 작업을 위한 시작 프롬프트를 다룹니다.
MCP 서버
Stable은 두 개의 MCP 서버를 운영합니다. Docs MCP는 이 문서 사이트에서 개념, 가이드, 코드 스니펫, 컨트랙트 레퍼런스를 검색합니다. Runtime MCP는 잔액 조회, 트랜잭션 시뮬레이션, 실행을 위해 Stable 체인과 상호작용합니다.
두 서버 모두 MCP 호환 클라이언트에 추가할 수 있습니다.
Cursor
MCP 설정 파일을 열고 다음을 추가하세요:
{
"mcpServers": {
"stable-docs": {
"url": "https://docs.stable.xyz/mcp"
},
"stable-runtime": {
"url": "https://runtime.stable.xyz/mcp"
}
}
}Cursor를 재시작합니다. "Stable에서 USDT0를 어떻게 보내나요?"라고 물어 확인하세요.
Claude Code
claude mcp add stable-docs https://docs.stable.xyz/mcp
claude mcp add stable-runtime https://runtime.stable.xyz/mcp"Gas Waiver 통합 단계에 대해 Stable 문서를 검색해줘."라고 물어 확인하세요.
에이전트 스킬
에이전트 스킬은 Docs MCP와 Runtime MCP를 결합한 사전 정의된 워크플로입니다. "세 개의 주소로 100 USDT0를 보내줘"와 같은 작업을 AI에 요청하면, 스킬이 전체 시퀀스를 처리합니다: 관련 문서 조회, 주소 및 파라미터 확인, 잔액 점검, 트랜잭션 시뮬레이션, 승인 후 실행.
스킬은 Claude Code 플러그인으로 제공됩니다.
설치
claude plugin add stable-xyz/agent-skills또는 Claude Code 마켓플레이스에서 설치하세요.
전체 스킬 정의와 소스는 agent-skills 저장소를 참고하세요.
일반 텍스트 문서
MCP를 지원하지 않는 AI 도구를 위해, Stable 문서는 정적 텍스트 파일로 제공됩니다.
| 파일 | URL | 내용 |
|---|---|---|
llms.txt | https://docs.stable.xyz/llms.txt | 제목과 설명이 포함된 페이지 인덱스 |
llms-full.txt | https://docs.stable.xyz/llms-full.txt | 단일 파일로 된 전체 문서 |
이 파일들은 정적 스냅샷입니다. 가장 최신 내용을 위해서는 Docs MCP를 사용하세요.
Cursor
- Settings > Features > Docs로 이동합니다.
- Add를 선택하고
https://docs.stable.xyz/llms-full.txt를 입력합니다. - 채팅에서
@Stable로 참조합니다.
기타 도구
llms-full.txt를 다운로드하여 프로젝트 컨텍스트나 시스템 프롬프트에 포함하세요.
Stable 컨텍스트 블록
이것을 모든 AI 채팅이나 시스템 프롬프트 상단에 붙여넣으세요. 모델이 첫 시도에 올바른 Stable 코드를 생성하는 데 필요한 모든 것을 제공합니다.
# Stable chain context
Stable is a Layer 1 where USDT0 is the native gas token. Fully EVM-compatible.
All standard EVM tools (Hardhat, Foundry, ethers.js, viem) work unchanged once
you adjust three gas fields (see Behavioral differences below).
## Network
| Field | Mainnet | Testnet |
| :-------------- | :--------------------------------------- | :----------------------------------------- |
| Chain ID | 988 | 2201 |
| RPC | https://rpc.stable.xyz | https://rpc.testnet.stable.xyz |
| Explorer | https://stablescan.xyz | https://testnet.stablescan.xyz |
| Currency symbol | USDT0 | USDT0 |
## USDT0 contract addresses
- Mainnet: 0x779ded0c9e1022225f8e0630b35a9b54be713736
- Testnet: 0x78cf24370174180738c5b8e352b6d14c83a6c9a9
## Behavioral differences from Ethereum
1. **Gas token is USDT0, not ETH.** The `value` field in native transfers
carries USDT0. Fees are denominated in USDT0.
2. **`maxPriorityFeePerGas` is always 0.** No tip-based ordering. Set it
explicitly to `0n` or validators will reject or ignore tip components.
3. **USDT0 has a dual role**: native asset (18 decimals) AND ERC-20 (6 decimals)
on the same balance. `address(x).balance` reports 18-decimal wei;
`USDT0.balanceOf(x)` reports 6-decimal units. Values may differ by up to
0.000001 USDT0 due to fractional reconciliation. Never mirror native
balance in an internal variable; always query at payout time.
4. **Transfer events are emitted for native transfers too.** A single Transfer
event listener on the USDT0 ERC-20 contract covers both transfer paths.
5. **Single-slot finality (~700ms).** Once a block is committed, it cannot
be reorged. No need to wait multiple confirmations.
6. **Gas Waiver** lets applications cover gas: user signs with `gasPrice = 0`,
a governance-registered waiver wraps and submits. Contracts must be on
the waiver's AllowedTarget policy.
7. **EIP-7702** is supported for delegating an EOA to a contract (type-4 tx).
8. **Precompile addresses**: Bank `0x...1003`, Distribution `0x...0801`,
Staking `0x...0800`, StableSystem `0x...9999`.
## Common mistakes to avoid
- Copying Ethereum priority-fee constants (2 gwei tips, etc.) — has no effect
on Stable and can be rejected by wallets.
- Using `ethers.parseUnits(x, 18)` for ERC-20 USDT0 amounts. ERC-20 uses 6
decimals; native transfers use 18.
- Mirroring native balance in a `uint256 deposited` variable — USDT0
allowance-based operations (transferFrom, permit) can reduce a contract's
native balance without invoking its code.
- Sending native or ERC-20 USDT0 to `address(0)` — both revert on Stable.
- Assuming `EXTCODEHASH == 0` means an address is unused. On Stable,
permit-based approvals can change state without incrementing nonce.
- Writing `value: ethers.parseEther(amount, "ether")` and expecting ETH
semantics. That transfer sends USDT0.시작 프롬프트
위의 컨텍스트 블록을 로드한 후 다음 중 아무거나 AI 에디터에 복사하세요.
컨트랙트 배포
Use Foundry to scaffold a project called `stable-escrow`. Write a minimal
Escrow contract in Solidity ^0.8.24 with deposit() and withdraw(amount)
functions that transfer USDT0 natively. Use address(this).balance for
solvency checks (never mirror the balance in a uint256). Reject
address(0) recipients. Then produce a deployment command using
`forge create` pointed at Stable testnet (RPC https://rpc.testnet.stable.xyz,
chain ID 2201).USDT0 보내기
Write a TypeScript script using ethers v6 that sends 0.001 USDT0 natively
from the wallet loaded from PRIVATE_KEY. Use base-fee-only EIP-1559 gas
(maxPriorityFeePerGas = 0n, maxFeePerGas = 2 * baseFeePerGas). Target
Stable testnet. Log the tx hash and a Stablescan explorer URL.EIP-7702 위임 설정
Write a TypeScript script using ethers v6 that:
1. Signs an EIP-7702 authorization delegating my EOA to Multicall3 at
0xcA11bde05977b3631167028862bE2a173976CA11 on Stable testnet
(chain ID 2201).
2. Sends a type-4 transaction with authorizationList: [signedAuth],
to: wallet.address (self-call), and data that invokes aggregate3()
to batch three USDT0 transfers (100, 200, 150 USDT0 with 6 decimals).
3. Use maxPriorityFeePerGas: 0n.구독 컨트랙트 빌드
Write a SubscriptionManager Solidity contract for EIP-7702 delegation on
Stable. It runs on a subscriber's EOA. Expose:
- subscribe(bytes32 subId, address provider, uint256 amount, uint256 interval)
callable only when msg.sender == address(this) (subscriber on their own EOA).
- collect(bytes32 subId) callable only by the registered provider, only
when block.timestamp >= nextChargeAt; advances nextChargeAt by interval
and transfers USDT0 to the provider. Use IERC20 USDT0 at the testnet
address 0x78cf24370174180738c5b8e352b6d14c83a6c9a9.
- cancelSubscription(bytes32 subId) callable only by the subscriber.
Emit events for SubscriptionCreated, SubscriptionCollected, SubscriptionCancelled.x402 호출당 결제 API 빌드
Write an Express server in TypeScript that exposes GET /weather priced
at $0.001 USDT0 (amount: "1000", 6 decimals) using @x402/express,
@x402/evm/exact/server, and HTTPFacilitatorClient pointed at
https://x402.semanticpay.io/. Use Stable mainnet (CAIP-2 eip155:988,
USDT0 at 0x779Ded0c9e1022225f8E0630b35a9b54bE713736). The handler should
return { weather: "sunny", temperature: 70 }. Read PAY_TO_ADDRESS from
env. Print the configured routes on startup.다음 권장 사항
- MCP 서버로 결제하기 — 유료 API를 MCP 도구로 래핑하여 AI 클라이언트가 호출하고 결제할 수 있도록 합니다.
- 빠른 시작 — AI 컨텍스트와 첫 트랜잭션 실행을 5분 만에 함께 진행합니다.
- Ethereum과의 차이점 — 컨텍스트 블록의 gas 및 USDT0 시맨틱에 대한 심층 분석.

