Asi aptos-agent
Interact with Aptos blockchain - check balances, transfer APT, swap tokens, stake, and execute Move view functions. Features game-theoretic decision analysis with Nash equilibrium detection. All transactions require explicit approval.
git clone https://github.com/plurigrid/asi
T=$(mktemp -d) && git clone --depth=1 https://github.com/plurigrid/asi "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/aptos-agent" ~/.claude/skills/plurigrid-asi-aptos-agent-1c7d1b && rm -rf "$T"
skills/aptos-agent/SKILL.mdAptos Claude Agent
Aptos blockchain interaction with game-theoretic decision analysis.
When to Use
- Check APT wallet balances
- Transfer APT tokens
- Swap tokens on DEX (Liquidswap, etc.)
- Stake APT
- Call Move view functions
- Process natural language blockchain intents
- Query NFT/token collections
- Interact with multisig accounts
Setup
MCP server configured in
~/.mcp.json:
{ "aptos": { "command": "node", "args": ["/path/to/aptos-claude-agent/dist/mcp/server.js"], "env": { "APTOS_NETWORK": "mainnet", "APTOS_PRIVATE_KEY": "${APTOS_PRIVATE_KEY}" } } }
Available MCP Tools
| Tool | Description |
|---|---|
| Get wallet balance |
| Transfer APT (requires approval) |
| Swap tokens on DEX (requires approval) |
| Stake APT (requires approval) |
| Read-only view function call |
| Process natural language intent |
| Approve/reject pending decision |
| List pending decisions |
Security Model
- Simulation First: All transactions simulated before execution
- Approval Required: Every state-changing operation needs explicit approval
- Game-Theoretic Analysis: Transactions modeled as open games
- Wallet Validation: ALWAYS validate key→address before funding
CRITICAL: Wallet Derivation Safety
NEVER use
for wallet creation.derive-resource-account-address
Correct Workflow
# 1. Generate key aptos key generate --output-file my_key # 2. Derive address FROM PRIVATE KEY aptos init --private-key-file my_key --network mainnet --profile my_wallet # 3. VALIDATE before funding just aptos-validate "PRIVATE_KEY" "EXPECTED_ADDRESS" # 4. Only fund AFTER validation passes
What Can Go Wrong
- Using
with pubkey = PERMANENT FUND LOSSderive-resource-account-address - Resource accounts need signer capabilities from source account
- If key doesn't match address, funds are unrecoverable
Validation
Run
just aptos-validate-all to verify all configured wallets before any funding operation.
Aptos Framework Reference (0x1)
Core Modules
| Module | Purpose |
|---|---|
| Legacy fungible token standard |
| New FA standard (object-based) |
| Native APT token |
| Account creation/management |
| Object model foundation |
| Validator staking |
| Delegated staking |
| Multi-signature accounts |
| On-chain governance |
| Module deployment |
0x1::coin Module
Key Structs:
- Fungible token containerCoin<CoinType>
- Account balance storageCoinStore<CoinType>
- Token metadataCoinInfo<CoinType>
- Minting rightsMintCapability<CoinType>
- Burning rightsBurnCapability<CoinType>
- Freeze rightsFreezeCapability<CoinType>
View Functions:
0x1::coin::balance<CoinType>(owner: address): u64 0x1::coin::is_account_registered<CoinType>(account: address): bool 0x1::coin::name<CoinType>(): vector<u8> 0x1::coin::symbol<CoinType>(): vector<u8> 0x1::coin::decimals<CoinType>(): u8 0x1::coin::supply<CoinType>(): Option<u128>
Entry Functions:
0x1::coin::transfer<CoinType>(from: &signer, to: address, amount: u64) 0x1::coin::register<CoinType>(account: &signer)
0x1::fungible_asset Module
Key Structs:
- Asset metadata objectMetadata
- Balance storageFungibleStore
- Asset containerFungibleAsset
,MintRef
,BurnRef
- CapabilitiesTransferRef
View Functions:
0x1::fungible_asset::balance<T>(store: Object<T>): u64 0x1::primary_fungible_store::balance(account: address, metadata: Object<Metadata>): u64
0x1::stake Module
Key Structs:
- Validator stake poolStakePool
- Validator configurationValidatorConfig
- Pool ownershipOwnerCapability
View Functions:
0x1::stake::get_validator_state(pool_address: address): u64 0x1::stake::get_stake(pool_address: address): (u64, u64, u64, u64)
0x1::delegation_pool Module
View Functions:
0x1::delegation_pool::get_stake(pool_address: address, delegator: address): (u64, u64, u64) 0x1::delegation_pool::calculate_and_update_voter_total_voting_power(pool_address: address): u64
0x1::multisig_account Module
Key Functions:
0x1::multisig_account::create(owner: &signer, num_signatures_required: u64, owners: vector<address>) 0x1::multisig_account::create_transaction(multisig: address, payload: vector<u8>) 0x1::multisig_account::approve_transaction(owner: &signer, multisig: address, sequence_number: u64) 0x1::multisig_account::execute_transaction(multisig: address, sequence_number: u64)
Token Standards Reference
Legacy Token (0x3::token)
Key Structs:
- Token instance with id, amount, propertiesToken
- Global unique identifier (creator + collection + name + version)TokenId
- Shared metadata (max supply, uri, royalty)TokenData
- Account's token holdingsTokenStore
- Collection metadataCollectionData
- Royalty configurationRoyalty
Entry Functions:
0x3::token::create_collection_script(creator: &signer, name: String, description: String, uri: String, maximum: u64) 0x3::token::create_token_script(creator: &signer, collection: String, name: String, description: String, ...) 0x3::token::mint_script(creator: &signer, token_data_address: address, collection: String, name: String, amount: u64) 0x3::token::direct_transfer_script(sender: &signer, receiver: &signer, creators_address: address, ...)
View Functions:
0x3::token::balance_of(owner: address, id: TokenId): u64 0x3::token::get_royalty(token_data_id: TokenDataId): Royalty 0x3::token::get_token_supply(creator: address, collection: String, name: String): Option<u64>
Digital Asset (0x4::token + 0x4::aptos_token)
Key Structs (0x4::token):
- Object-based token with collection, index, description, nameToken
- Burning capabilityBurnRef
- Mutation capabilityMutatorRef
Key Structs (0x4::aptos_token):
- No-code collection with mutability settingsAptosCollection
- Minimally viable tokenAptosToken
Entry Functions:
0x4::aptos_token::create_collection(creator: &signer, description: String, name: String, uri: String, ...) 0x4::aptos_token::mint(creator: &signer, collection: String, description: String, name: String, uri: String, ...) 0x4::aptos_token::mint_token_object(creator: &signer, collection: String, ...) -> Object<AptosToken> 0x4::aptos_token::burn(owner: &signer, token: Object<AptosToken>) 0x4::aptos_token::freeze_transfer(creator: &signer, token: Object<AptosToken>) 0x4::aptos_token::set_description(creator: &signer, token: Object<AptosToken>, description: String)
View Functions:
0x4::token::creator(token: Object<Token>): address 0x4::token::collection_name(token: Object<Token>): String 0x4::aptos_token::are_properties_mutable(token: Object<AptosToken>): bool 0x4::aptos_token::is_burnable(token: Object<AptosToken>): bool
Supporting Modules
0x4::collection:
0x4::collection::count(collection: Object<Collection>): Option<u64> 0x4::collection::creator(collection: Object<Collection>): address 0x4::collection::name(collection: Object<Collection>): String
0x4::royalty:
0x4::royalty::get(token: Object<Token>): Option<Royalty> 0x4::royalty::payee_address(royalty: &Royalty): address 0x4::royalty::numerator(royalty: &Royalty): u64 0x4::royalty::denominator(royalty: &Royalty): u64
0x4::property_map:
0x4::property_map::read_string(object: &Object<T>, key: &String): String 0x4::property_map::read_u64(object: &Object<T>, key: &String): u64 0x4::property_map::read_bool(object: &Object<T>, key: &String): bool
Common View Function Patterns
Check APT Balance
aptos_view( functionId: "0x1::coin::balance", typeArgs: ["0x1::aptos_coin::AptosCoin"], args: ["0xADDRESS"] )
Check Token Balance (Legacy)
aptos_view( functionId: "0x3::token::balance_of", typeArgs: [], args: ["0xOWNER", { token_data_id: {...}, property_version: 0 }] )
Check Stake
aptos_view( functionId: "0x1::stake::get_stake", typeArgs: [], args: ["0xVALIDATOR_POOL"] )
Check Delegation
aptos_view( functionId: "0x1::delegation_pool::get_stake", typeArgs: [], args: ["0xPOOL", "0xDELEGATOR"] )
Game-Theoretic Features
Nashator Analysis
Computes deviation incentives for transactions:
- LAX monoidal (
): Actual executionfire - STRONG monoidal (
): Simulation onlyexec
Bisimulation Self-Play
Explores alternatives via attacker/defender games. Equilibrium detected when
|utility - quality| < 0.15.
Risk Visualization
Decisions map to colors via deterministic LCG:
- HOT ZONE [160-220]: High-risk indices
DeFi Protocols on Aptos
| Protocol | Category | Key Functions |
|---|---|---|
| Liquidswap | DEX | Swap, add/remove liquidity |
| Thala | DEX + Stablecoin | MOD stablecoin, LP farming |
| Amnis Finance | Liquid Staking | stAPT, 7-8% APY |
| Aries Markets | Lending | Supply, borrow, liquidate |
| Cellana | DEX | ve(3,3) model |
| Echo Protocol | BTC Bridge | Cross-chain BTC |
Related Skills
- Alpha executor trading scriptsaptos-trading
- ACSet schemas for Aptos dataacsets-algebraic-databases
- Unified ASI skill orchestrationasi-integrated