Skip to main content
Glama
taap-mcp

taap-mcp

Official
by 402Protocol

taap-mcp

TaaP (Trading as a Prompt) MCP server. Connect it to your agent and the agent provisions a trading wallet on its own — you just back it up.

The flow

  1. You connect this MCP to your agent (one URL / one config block).

  2. The agent provisions a trading wallet by itself and hands you a claim link.

  3. You open the claim link, prove it's you with your device's fingerprint / face / passkey, and write down the 12-word recovery phrase.

  4. Only after your backup is confirmed does the agent see the deposit address.

  5. You fund the wallet — the deposit is the signup — and trade by prompting: "buy $200 of <CA>", "watch this wallet and copy trade it".

Paper mode is the default: simulated fills, no signing code paths, cannot move real money by construction. Live mode needs Turnkey credentials and fails closed without them.

Related MCP server: Guardian MCP

Run it

npx taap-mcp

Or from source:

npm install
npm run build
npm start

Connect it (Claude Code / Muse)

{
  "mcpServers": {
    "taap": {
      "command": "npx",
      "args": ["taap-mcp"],
      "env": {
        "TAAP_CLAIM_SERVER_URL": "https://claim.example.com"
      }
    }
  }
}

Environment

Variable

Default

What it does

TAAP_MODE

paper

paper (simulated) or live (Turnkey; fails closed without creds)

TAAP_CLAIM_SERVER_URL

http://localhost:4023

Claim site the agent sends the human to

TAAP_CLAIM_ADMIN_KEY

—

Admin key for the claim server (production)

TAAP_DB_PATH

./taap-paper.db

SQLite state file

Tools (15)

Wallet: provision_wallet, claim_status. Tokens: token_resolve (safety inspection — honeypot sim, taxes, mintable, ownership, LP, holders; never says "looks safe"). Trading: quote, paper_faucet, paper_trade, swap_execute (refuses live without venue calldata), triggers. Policy: policy_get, withdraw (owner wallet only).

Trust model

Constrain the verbs, not the nouns: no arbitrary transfers, withdrawals only to the owner's registered wallet, approved routers only, exact-amount approvals, the agent can't modify its own policy, structured signing only.

Test

npm test   # in-process MCP tests, stubbed network, no keys needed

Available Tools

17 tools
balanceA

The chat-native portfolio view: every paper balance for the trader (symbol, amount, chain), recent fills, and total 402 fees accrued in the paper fee ledger. Use it to answer "what do I hold?" and "what have I paid in fees?".

Inputs: trader_id (required).

cancel_triggerB

Disarm a trigger by trigger_id. Only the owning trader can cancel it.

Inputs: trader_id (required), trigger_id (required).

check_triggersA

Poll every armed trigger once against live prices and fire the tripped ones (paper fills within their caps). In production this runs on a cron; the tool exists so agents and tests can drive it directly. Returns one report per trigger checked.

Inputs: no named parameters.

claim_statusA

Check the human's claim-ceremony progress for this trader's wallet. Poll this after provision_wallet until backed_up is true. The deposit address is included ONLY after the human confirmed their 12-word backup — never invent or reveal an address earlier.

Inputs: trader_id (required).

get_startedA

Start here. With no trader_id, provisions your paper trader and returns the full integration guide (trade flow, 50 bps + $0.50 min fee, safety rules, copy-paste prompts). With a trader_id, returns the guide plus your trader status. Paper mode: simulated fills, play funds, real dry quotes and real token inspections — nothing here can move real money. Persist the trader_id in your own config/memory after first setup; pass it to every other tool.

Inputs: trader_id.

list_triggersB

List all triggers for a trader: armed and fired, with baselines and fire times.

Inputs: trader_id (required).

paper_faucetA

Credit your paper trader with PLAY funds (the sandbox faucet). Paper mode only — these funds are simulated and worthless. This is the "deposit is the signup" step for paper: fund the trader, then trade. In live mode this tool does not exist; funding is a real onchain deposit to your Turnkey wallet.

Inputs: amount (required), symbol (required), decimals (required), trader_id (required), +2 more.

pause_tradingA

KILL SWITCH. Stops everything immediately: fills, trigger arming, and trigger firing all fail while paused. No confirmation needed to stop — stopping is always safe. Call the moment anything looks wrong: "stop everything" / "pause trading".

Inputs: trader_id (required).

provision_walletA

Provision the human's trading wallet and get their claim link. Call this on your own as soon as you are connected — the human should never have to ask for it. One wallet per trader: if a wallet was already provisioned, the existing claim link is returned (never mint two). Present the claim_url to the human and tell them it is a 2-minute ceremony (fingerprint, 12-word backup, deposit address). Then poll claim_status until backed_up is true.

Inputs: trader_id.

resume_tradingA

Lift the kill switch after pause_trading. Trading, trigger arming, and firing resume.

Inputs: trader_id (required).

set_auto_approveA

Set the per-trade auto-approve threshold in USD for this trader (default 0 = always ask). Trades at or under the threshold with green safety auto-execute once the user's standing approval exists; anything over it — or any red flag regardless of size — needs an explicit yes per trade. No maximum: set it as high as the user wants. The server enforces the threshold itself; the agent cannot talk its way around it.

Inputs: trader_id (required), threshold_usd (required).

set_triggerA

Arm a standing strategy in plain language: "sell half my FUG if it doubles" = sell_pct 50, price_up_pct 100. The live price right now becomes the baseline; the trigger fires ONCE when the price rises by price_up_pct, selling sell_pct of the token balance into the stable. Firing executes within the trigger's own caps under the user's standing approval from this call. Red-flagged (BLOCKED) tokens cannot be armed.

Inputs: chain (required), sell_pct (required), trader_id (required), price_up_pct (required), +4 more.

swap_executeA

Execute a swap_quote (PAPER FILL in paper mode — simulated at the quoted net price, never real money). LIVE MODE: swap execution is not wired yet (Phase 3) — the signer is ready (see signer_status / signer_sign_transaction) but swap calldata construction comes next; swap_execute refuses in live mode. Approval, enforced server-side: pass user_approved=true when the user explicitly approved this trade, OR leave it false and let auto-approve decide — that path only fills when the trader set a threshold via set_auto_approve, the trade's server-side USD value is known and at/under it, and the execution-time inspection is fully green. Red flags always need an explicit yes regardless of size; honeypots never fill. Execution-time safety: the token being bought is re-inspected NOW (honeypot turned on between quote and fill = blocked). Each quote fills at most once; the fill is atomic (balances + trade + fee records move together). Fails if the kill switch is engaged or the quote expired. Returns a paper: reference — paper fills are never confused with real tx hashes.

Inputs: quote_id (required), trader_id (required), user_approved (required).

swap_quoteA

Dry quote for a swap: real venue quotes (KyberSwap/Jupiter/0x), best net-of-fee fill wins. The 402 fee — max(50 bps, $0.50 minimum, the min is a placeholder until the Turnkey bill calibrates it) — is applied AT THE QUOTE LAYER — the response shows amount_out_gross, fee, and amount_out_net separately, and amount_out_net is what a fill would deliver. BLOCKED (honeypot) tokens get no quote, ever — the token being bought is inspected before quoting. amount_in_usd is the server-side USD valuation the auto-approve threshold is enforced against. Quotes live 60 seconds and fill at most once; swap_execute rejects stale or consumed quotes. No signing, no broadcasting — quoting is always safe. For ETH use token 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE on EVM.

Inputs: chain (required), amount (required), token_in (required), symbol_in (required), +5 more.

swap_statusA

Check a fill by trade_id: status, amounts, fee, venue, and reference. Paper fills carry a paper: reference, never a real transaction hash.

Inputs: trade_id (required).

token_resolveA

Inspect a token BEFORE any trade talk: paste the contract address (CA), get red flags + facts. Checks: honeypot (buy AND sell simulation), buy/sell tax, mintable supply, ownership/proxy status, holder count, price, liquidity, 24h volume, market cap. Verdicts: BLOCKED (honeypot — no quote, no fill, ever), REVIEW_REQUIRED (red flags — user must approve explicitly regardless of size), NO_RED_FLAGS_DETECTED. The agent NEVER says "looks safe" — report the checks and the numbers, then ask the user what they want to do. Call this first, every time, before swap_quote.

Inputs: contract_address (required), chain.

withdrawA

Withdraw to an external wallet. ALWAYS requires explicit per-action approval: pass confirmed=true only after reading the amount AND destination back to the user and getting a yes — the server records the read-back values. Paper mode: records the withdrawal and debits the paper balance; status PAPER_RECORDED, no real movement. Live mode (Phase 2): Turnkey policy enforces withdrawals to the owner's pre-registered wallet only. Never auto-executes.

Inputs: chain (required), amount (required), symbol (required), confirmed (required), +3 more.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.7/5.0

    Scored across 17 tools

    Disambiguation4/5

    Most tools target distinct actions or resources, but onboarding concepts overlap: get_started, provision_wallet, and paper_faucet all involve provisioning/funding setup, and token_resolve overlaps with swap_quote's built-in inspection step. The detailed descriptions largely resolve these boundaries, but an agent could still misorder startup or skip the explicit token_resolve call.

    Naming Consistency4/5

    All tool names use snake_case, which is consistent and readable. However, many are verb_noun while several are noun_verb or noun-only (token_resolve, swap_quote, swap_status, claim_status, balance, withdraw), so the set does not follow a strict verb_noun pattern throughout.

    Tool Count4/5

    With 17 tools, the server is slightly heavy for the domain but each tool maps to a distinct action across onboarding, safety, trading, triggers, and admin. No tool appears redundant, though 17 exceeds the typical 3-15 sweet spot.

    Completeness3/5

    The paper-trading lifecycle is well covered, but notable gaps exist: the trigger system only supports upward price moves, so there is no stop-loss or downside trigger. Additionally, live-mode signer tools (signer_status, signer_sign_transaction) are referenced in swap_execute but absent from the tool surface, leaving live execution incomplete.

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables AI agents to propose stock, ETF, and crypto trades through Alpaca paper trading while enforcing deterministic policy rules and recording every decision in an audit trail.
      13 npm
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables an autonomous agent wallet on Base to make payments, approve tokens, swap on Uniswap V3, Aerodrome, 0x and CoW Protocol, lend/borrow via Aave V3 and Morpho Blue, trade perps on Hyperliquid, and enforce risk policies via blacklists, caps, simulation, and audit logs.
      1
      Creative Commons Zero v1.0 Universal