Autonomous Agent Skills
by @josephrp
CornerStone MCP x402 skill for agents. Tools for stock predictions, backtests, bank linking, and agent/borrower scores. Payment-protected MCP tools (run_prediction, run_backtest, link_bank_account, get_agent_reputation_score, get_borrower_score, by-email variants) with x402 flow (Aptos + Base). Skill handles 402 β pay β retry. Wallet attestation for onboarding. For marketplaces where agents download and use skills autonomously.
clawhub install autonomous-agentπ About This Skill
name: autonomous-agent description: CornerStone MCP x402 skill for agents. Tools for stock predictions, backtests, bank linking, and agent/borrower scores. Payment-protected MCP tools (run_prediction, run_backtest, link_bank_account, get_agent_reputation_score, get_borrower_score, by-email variants) with x402 flow (Aptos + Base). Skill handles 402 β pay β retry. Wallet attestation for onboarding. For marketplaces where agents download and use skills autonomously. metadata: {"clawdbot":{"emoji":"π","homepage":"https://github.com/FinTechTonic/autonomous-agent","requires":{"bins":["node","npm"]}}}
CornerStone MCP x402 Skill (for Agents)
This skill gives you (the agent) a set of tools to: create and manage Aptos and EVM wallets, check balances, and call x402-paid MCP tools (stock prediction, backtest, bank linking, agent/borrower scores). Payment is automatic β when a paid tool returns 402, the skill signs, verifies, settles, and retries transparently. You just call the tool; the result comes back.
Quick-start workflow
Follow this sequence on first use, then skip to the tool you need:
1. Check wallets β call get_wallet_addresses (no args).
2. If empty β call create_aptos_wallet then create_evm_wallet.
3. Fund β call credit_aptos_wallet (Aptos faucet) and fund_evm_wallet (EVM faucet instructions).
4. Tell the user to whitelist the returned addresses at https://arnstein.ch/flow.html.
5. Check balance β call balance_aptos (must have USDC for predictions/backtests) and/or balance_evm (must have ETH for bank linking).
6. Use paid tools β run_prediction, run_backtest, link_bank_account, or score tools.
> Important: Paid tools will fail with a wallet/whitelist error if the address has not been funded and whitelisted. Always verify wallets and balances first.
Tool reference
Wallet management tools (local)
#### get_wallet_addresses
{ aptos: [{ address, network }], evm: [{ address, network }] } β may be empty arrays.#### create_aptos_wallet
{ force?: boolean, network?: "testnet" | "mainnet" } β defaults: force=false, network=testnet.{ success, address, network, message } or { success: false, message, addresses } if wallet exists and force=false.get_wallet_addresses returns empty aptos array, or user requests a new wallet.success: false and wallet already exists, either use the existing wallet or retry with force: true to add another.#### create_evm_wallet
{ force?: boolean, network?: "testnet" | "mainnet" } β defaults: force=false, network=testnet.{ success, address, network, message } or { success: false, message, addresses }.create_aptos_wallet.#### credit_aptos_wallet
{ amount_octas?: number } β default 100,000,000 (= 1 APT).{ success: true, address } (programmatic faucet funded).{ success: true, address, faucet_url } (instructions only; no programmatic faucet).create_aptos_wallet first).#### fund_evm_wallet
{ success: true, address, faucet_url, message } (manual funding instructions).create_evm_wallet first).Balance tools (local)
#### balance_aptos
{ address, balances: { usdc, apt } } or { error }.run_prediction, run_backtest, or score tools to confirm sufficient USDC.#### balance_evm
{ chain?: string } β default "base". Supported: base, baseSepolia, ethereum, polygon, arbitrum, optimism.{ address, chain, balance, symbol } or { error }.link_bank_account to confirm sufficient ETH on Base Sepolia.chain: "baseSepolia".Paid MCP tools (x402 β payment handled automatically)
> All paid tools accept both Aptos and EVM payment. The skill picks the best option or follows PREFERRED_PAYMENT_ORDER. You never see 402 errors β just call the tool and get the result or an error message.
#### run_prediction
{ symbol: string, horizon?: number } β symbol is a stock ticker (e.g. "AAPL"), horizon is days (default 30).{ error }.run_prediction({ symbol: "AAPL", horizon: 30 })#### run_backtest
{ symbol: string, startDate?: string, endDate?: string, strategy?: string } β dates in "YYYY-MM-DD", strategy defaults to "chronos".{ error }.run_backtest({ symbol: "TSLA", startDate: "2024-01-01", endDate: "2024-12-31", strategy: "chronos" })#### link_bank_account
{ link_token } or account ID for Plaid bank linking, or { error }.#### get_agent_reputation_score
{ agent_address?: string, payer_wallet?: string } β both optional; uses the configured wallet if omitted.{ reputation_score: number } (e.g. 100) or 403 if not allowlisted, or { error }.payer_wallet).#### get_borrower_score
{ agent_address?: string, payer_wallet?: string } β same pattern.{ score: number } (100 base; higher with bank linked) or { error }.#### get_agent_reputation_score_by_email
{ email: string, payer_wallet?: string } β resolves email to allowlisted agent.{ reputation_score: number } or { error }.SCORE_BY_EMAIL_ENABLED must be set on the server. Higher fee.#### get_borrower_score_by_email
{ email: string, payer_wallet?: string } β same pattern.{ score: number } or { error }.SCORE_BY_EMAIL_ENABLED must be set on the server. Higher fee.Decision tree for common tasks
"Run a prediction for X"
get_wallet_addresses
β aptos empty? β create_aptos_wallet β credit_aptos_wallet β tell user to whitelist
β aptos exists? β balance_aptos
β has USDC? β run_prediction({ symbol: "X", horizon: 30 })
β no USDC? β tell user to fund USDC, provide address
"Link a bank account"
get_wallet_addresses
β evm empty? β create_evm_wallet β fund_evm_wallet β tell user to whitelist
β evm exists? β balance_evm({ chain: "baseSepolia" })
β has ETH? β link_bank_account
β no ETH? β fund_evm_wallet (returns faucet URL)
"Get my scores"
get_wallet_addresses
β has aptos or evm? β get_agent_reputation_score + get_borrower_score
β neither? β create wallets first, whitelist, then query
Error handling
| Error pattern | Meaning | What to do |
|--------------|---------|------------|
| "No Aptos wallet" | Wallet file missing | Call create_aptos_wallet |
| "No EVM wallet" | Wallet file missing | Call create_evm_wallet |
| "already exist. Use force: true" | Wallet exists, not overwriting | Use existing wallet, or pass force: true to add another |
| "Payment verification failed" | Insufficient funds or wrong asset | Check balance; tell user to fund the wallet |
| "No Aptos wallet configured" / "No EVM wallet configured" | Paid tool needs wallet that doesn't exist | Create the missing wallet type |
| "Unsupported chain" | Invalid chain name for balance_evm | Use one of: base, baseSepolia, ethereum, polygon, arbitrum, optimism |
| "timed out after 300s" | MCP call took too long | Retry once; the server may be under load |
| "403" or "not allowlisted" | Wallet not whitelisted | Tell user to whitelist address at https://arnstein.ch/flow.html |
Setup (for the human installing this skill)
1. Install: npm install from repo root. Copy .env.example to .env.
2. Configure: Set wallet paths (APTOS_WALLET_PATH, EVM_WALLET_PATH or EVM_PRIVATE_KEY).
3. Wallets: Create via tools (create_aptos_wallet, create_evm_wallet) or CLI (node src/setup-aptos.js, node src/setup.js). Fund and whitelist all addresses at https://arnstein.ch/flow.html.
CLI commands (from repo root)
| Task | Command |
|------|--------|
| Generate Aptos wallet | npm run setup:aptos |
| Generate EVM wallet | npm run setup |
| Show addresses for whitelist | npm run addresses |
| Credit Aptos (devnet) | npm run credit:aptos (set APTOS_FAUCET_NETWORK=devnet) |
| EVM balance | npm run balance -- |
| Transfer ETH/tokens | npm run transfer -- |
| Swap tokens (Odos) | npm run swap -- |
| Run skill demo | npx cornerstone-agent "Run a 30-day prediction for AAPL" |
| Attest Aptos wallet | npm run attest:aptos |
| Attest EVM wallet | npm run attest:evm |
Source: FinTechTonic/autonomous-agent