🎁 Get the FREE AI Skills Starter Guide β€” Subscribe β†’
BytesAgainBytesAgain
πŸ¦€ ClawHub

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.

Versionv2.1.1
Downloads4,753
Installs21
TERMINAL
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

  • Args: none
  • Returns: { aptos: [{ address, network }], evm: [{ address, network }] } β€” may be empty arrays.
  • When to use: Always call first before any wallet or paid tool action. Determines what exists.
  • Decision: If both arrays are empty β†’ create wallets. If only one is empty β†’ create the missing one. If both have entries β†’ proceed to balance check or paid tools.
  • #### create_aptos_wallet

  • Args: { force?: boolean, network?: "testnet" | "mainnet" } β€” defaults: force=false, network=testnet.
  • Returns: { success, address, network, message } or { success: false, message, addresses } if wallet exists and force=false.
  • When to use: When get_wallet_addresses returns empty aptos array, or user requests a new wallet.
  • Error handling: If success: false and wallet already exists, either use the existing wallet or retry with force: true to add another.
  • #### create_evm_wallet

  • Args: { force?: boolean, network?: "testnet" | "mainnet" } β€” defaults: force=false, network=testnet.
  • Returns: { success, address, network, message } or { success: false, message, addresses }.
  • Same pattern as create_aptos_wallet.
  • #### credit_aptos_wallet

  • Args: { amount_octas?: number } β€” default 100,000,000 (= 1 APT).
  • Returns on devnet: { success: true, address } (programmatic faucet funded).
  • Returns on testnet: { success: true, address, faucet_url } (instructions only; no programmatic faucet).
  • Prerequisite: Aptos wallet must exist (create_aptos_wallet first).
  • Note: Funded APT is for gas; tools pay in USDC (~6Β’). The user may need to acquire testnet USDC separately.
  • #### fund_evm_wallet

  • Args: none
  • Returns: { success: true, address, faucet_url, message } (manual funding instructions).
  • Prerequisite: EVM wallet must exist (create_evm_wallet first).
  • Note: Returns a Base Sepolia faucet URL. The user must fund manually; there is no programmatic faucet.
  • Balance tools (local)

    #### balance_aptos

  • Args: none
  • Returns: { address, balances: { usdc, apt } } or { error }.
  • When to use: Before calling run_prediction, run_backtest, or score tools to confirm sufficient USDC.
  • #### balance_evm

  • Args: { chain?: string } β€” default "base". Supported: base, baseSepolia, ethereum, polygon, arbitrum, optimism.
  • Returns: { address, chain, balance, symbol } or { error }.
  • When to use: Before calling link_bank_account to confirm sufficient ETH on Base Sepolia.
  • Note: For testnet tools, use 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

  • Args: { symbol: string, horizon?: number } β€” symbol is a stock ticker (e.g. "AAPL"), horizon is days (default 30).
  • Returns: Prediction result object (forecast data, confidence intervals, etc.) or { error }.
  • Cost: ~6Β’ USDC (Aptos or EVM).
  • Prerequisite: Funded + whitelisted Aptos or EVM wallet.
  • Example call: run_prediction({ symbol: "AAPL", horizon: 30 })
  • #### run_backtest

  • Args: { symbol: string, startDate?: string, endDate?: string, strategy?: string } β€” dates in "YYYY-MM-DD", strategy defaults to "chronos".
  • Returns: Backtest result (returns, drawdown, sharpe, etc.) or { error }.
  • Cost: ~6Β’ USDC.
  • Example call: run_backtest({ symbol: "TSLA", startDate: "2024-01-01", endDate: "2024-12-31", strategy: "chronos" })
  • #### link_bank_account

  • Args: none
  • Returns: { link_token } or account ID for Plaid bank linking, or { error }.
  • Cost: ~5Β’ (EVM/Base).
  • Prerequisite: Funded + whitelisted EVM wallet (Base Sepolia for testnet).
  • #### get_agent_reputation_score

  • Args: { agent_address?: string, payer_wallet?: string } β€” both optional; uses the configured wallet if omitted.
  • Returns: { reputation_score: number } (e.g. 100) or 403 if not allowlisted, or { error }.
  • Cost: ~6Β’ via x402, or free with lender credits (pass payer_wallet).
  • #### get_borrower_score

  • Args: { agent_address?: string, payer_wallet?: string } β€” same pattern.
  • Returns: { score: number } (100 base; higher with bank linked) or { error }.
  • Cost: ~6Β’ via x402, or free with lender credits.
  • #### get_agent_reputation_score_by_email

  • Args: { email: string, payer_wallet?: string } β€” resolves email to allowlisted agent.
  • Returns: { reputation_score: number } or { error }.
  • Prerequisite: SCORE_BY_EMAIL_ENABLED must be set on the server. Higher fee.
  • #### get_borrower_score_by_email

  • Args: { email: string, payer_wallet?: string } β€” same pattern.
  • Returns: { score: number } or { error }.
  • Prerequisite: 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 -- [tokenAddress] | | 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