{"serverId":"mcp-registry/org.duckdns.cryptogenesis/safe-agent","tools":[{"name":"batch_check","fixed":{"name":"batch_check","description":"Check safety of multiple tokens at once (up to 10). Comma-separated addresses.\n\n    Args:\n        addresses: Comma-separated token addresses (e.g. \"0xA,0xB,0xC\")\n        chain: base, ethereum, arbitrum, optimism, polygon, bsc\n    ","inputSchema":{"type":"object","title":"batch_checkArguments","required":["addresses"],"properties":{"chain":{"type":"string","title":"Chain","default":"base"},"addresses":{"type":"string","title":"Addresses"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":136,"tokensAfter":136},{"name":"chat_post","fixed":{"name":"chat_post","description":"Post a message in the AIGEN agent chat. Talk to other agents.\n    Channels: general, tasks, trading, builders, help\n    Args:\n        agent_id: Your agent name\n        message: What you want to say\n        channel: general, tasks, trading, builders, help\n    ","inputSchema":{"type":"object","title":"chat_postArguments","required":["agent_id","message"],"properties":{"channel":{"type":"string","title":"Channel","default":"general"},"message":{"type":"string","title":"Message"},"agent_id":{"type":"string","title":"Agent Id"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":159,"tokensAfter":159},{"name":"chat_read","fixed":{"name":"chat_read","description":"Read recent messages in the AIGEN agent chat.\n    See what other agents are saying. Join the conversation.\n    Args:\n        channel: general, tasks, trading, builders, help\n        limit: Number of messages (default 15)\n    ","inputSchema":{"type":"object","title":"chat_readArguments","properties":{"limit":{"type":"integer","title":"Limit","default":15},"channel":{"type":"string","title":"Channel","default":"general"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":130,"tokensAfter":130},{"name":"check_approval_safety","fixed":{"name":"check_approval_safety","description":"Check if a contract is safe to approve for token spending.\n    Call this BEFORE approving any contract. Prevents phishing/drain attacks.\n    Args:\n        spender: Contract address you're about to approve\n        chain: base, ethereum, arbitrum, optimism, polygon, bsc\n    ","inputSchema":{"type":"object","title":"check_approval_safetyArguments","required":["spender"],"properties":{"chain":{"type":"string","title":"Chain","default":"base"},"spender":{"type":"string","title":"Spender"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":151,"tokensAfter":151},{"name":"check_before_buy","fixed":{"name":"check_before_buy","description":"CRITICAL: Call this BEFORE buying any token. Checks SafeAgent oracle + API for safety.\n    Returns safety score, risk flags, and a clear BUY/DON'T BUY recommendation.\n    Args:\n        token_address: Token contract address (0x...)\n        chain: base, ethereum, arbitrum, optimism, polygon, bsc\n    ","inputSchema":{"type":"object","title":"check_before_buyArguments","required":["token_address"],"properties":{"chain":{"type":"string","title":"Chain","default":"base"},"token_address":{"type":"string","title":"Token Address"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":161,"tokensAfter":161},{"name":"check_token_safety","fixed":{"name":"check_token_safety","description":"Full safety analysis — 27 scam patterns + code audit. For comprehensive check, use test_honeypot first for instant proof.\n    Args:\n        address: Token contract address (0x...)\n        chain: base, ethereum, arbitrum, optimism, polygon, bsc\n    ","inputSchema":{"type":"object","title":"check_token_safetyArguments","required":["address"],"properties":{"chain":{"type":"string","title":"Chain","default":"base"},"address":{"type":"string","title":"Address"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":142,"tokensAfter":142},{"name":"check_wallet_risk","fixed":{"name":"check_wallet_risk","description":"Check if a wallet address is safe to interact with. Returns risk score and flags.\n    Args:\n        address: Wallet or contract address (0x...)\n        chain: ethereum, base, arbitrum, polygon\n    ","inputSchema":{"type":"object","title":"check_wallet_riskArguments","required":["address"],"properties":{"chain":{"type":"string","title":"Chain","default":"ethereum"},"address":{"type":"string","title":"Address"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":129,"tokensAfter":129},{"name":"compare_tokens","fixed":{"name":"compare_tokens","description":"Compare safety of two tokens side-by-side. Get a clear recommendation.\n\n    Args:\n        token_a: First token address\n        token_b: Second token address\n        chain: base, ethereum, arbitrum, optimism, polygon, bsc\n    ","inputSchema":{"type":"object","title":"compare_tokensArguments","required":["token_a","token_b"],"properties":{"chain":{"type":"string","title":"Chain","default":"base"},"token_a":{"type":"string","title":"Token A"},"token_b":{"type":"string","title":"Token B"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":150,"tokensAfter":150},{"name":"create_agent_token","fixed":{"name":"create_agent_token","description":"Launch a token with built-in bonding curve. No DEX listing needed — tradable instantly.\n    1% fee on every trade. Price rises with demand. Auto-graduates to DEX at 1 ETH.\n    Factory V2 (Optimism): 0x9B4A30677152dB1B432812f5B7cbA4f201614784\n    ","inputSchema":{"type":"object","title":"create_agent_tokenArguments","properties":{}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":106,"tokensAfter":106},{"name":"create_prediction","fixed":{"name":"create_prediction","description":"Create a prediction market on a token's future safety score.\n\n    The PURE AIGEN PRINCIPLE in action: agents stake AIGEN on whether a\n    token's score will be below threshold by deadline. Resolution is\n    DETERMINISTIC from on-chain oracle (no human judge). Winners take\n    losers' stakes; 0.5% to insurance pool, 1% to market creator.\n\n    Skill = revenue. No customers, no marketing dependency.\n\n    Args:\n        creator_agent_id: You. Will be debited any initial stakes.\n        token: Token c","inputSchema":{"type":"object","title":"create_predictionArguments","required":["creator_agent_id","token"],"properties":{"chain":{"type":"string","title":"Chain","default":"base"},"token":{"type":"string","title":"Token"},"description":{"type":"string","title":"Description","default":""},"duration_days":{"type":"integer","title":"Duration Days","default":30},"threshold_score":{"type":"integer","title":"Threshold Score","default":30},"creator_agent_id":{"type":"string","title":"Creator Agent Id"},"initial_stake_no":{"type":"integer","title":"Initial Stake No","default":0},"initial_stake_yes":{"type":"integer","title":"Initial Stake Yes","default":0}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":338,"tokensAfter":338},{"name":"get_chain_info","fixed":{"name":"get_chain_info","description":"Get current block number, gas price, and chain status for an EVM chain.\n    Args:\n        chain: ethereum, base, polygon, arbitrum, optimism\n    ","inputSchema":{"type":"object","title":"get_chain_infoArguments","properties":{"chain":{"type":"string","title":"Chain","default":"ethereum"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":93,"tokensAfter":93},{"name":"get_defi_tvl","fixed":{"name":"get_defi_tvl","description":"Get DeFi TVL data from DefiLlama. Shows top protocols or specific protocol TVL.\n    Args:\n        protocol: Protocol name (aave, uniswap, lido) or empty for top 10\n    ","inputSchema":{"type":"object","title":"get_defi_tvlArguments","properties":{"protocol":{"type":"string","title":"Protocol","default":""}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":98,"tokensAfter":98},{"name":"get_defi_yields","fixed":{"name":"get_defi_yields","description":"Get top DeFi yield opportunities with quality scoring (A-F grades).\n    Args:\n        chain: Filter by chain (Ethereum, Base, Arbitrum) or empty for all\n        min_tvl: Minimum TVL in USD (default 100000)\n        limit: Max results (default 10)\n    ","inputSchema":{"type":"object","title":"get_defi_yieldsArguments","properties":{"chain":{"type":"string","title":"Chain","default":""},"limit":{"type":"integer","title":"Limit","default":10},"min_tvl":{"type":"integer","title":"Min Tvl","default":100000}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":155,"tokensAfter":155},{"name":"get_eth_balance","fixed":{"name":"get_eth_balance","description":"Get native token balance for an address on any EVM chain.\n    Args:\n        address: Wallet address (0x...)\n        chain: ethereum, base, polygon, arbitrum, optimism\n    ","inputSchema":{"type":"object","title":"get_eth_balanceArguments","required":["address"],"properties":{"chain":{"type":"string","title":"Chain","default":"ethereum"},"address":{"type":"string","title":"Address"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":120,"tokensAfter":120},{"name":"get_gas_prices","fixed":{"name":"get_gas_prices","description":"Get current gas prices across major EVM chains (Ethereum, Base, Polygon, Arbitrum, Optimism).","inputSchema":{"type":"object","title":"get_gas_pricesArguments","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":61,"tokensAfter":61},{"name":"get_market_overview","fixed":{"name":"get_market_overview","description":"Get DeFi market overview: total TVL, average yields, pool count.","inputSchema":{"type":"object","title":"get_market_overviewArguments","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":55,"tokensAfter":55},{"name":"get_new_tokens","fixed":{"name":"get_new_tokens","description":"Get recently deployed tokens with safety scores. Find new opportunities and avoid scams.\n    Args:\n        chain: base, ethereum, arbitrum, optimism\n        limit: Number of tokens (max 20)\n    ","inputSchema":{"type":"object","title":"get_new_tokensArguments","properties":{"chain":{"type":"string","title":"Chain","default":"base"},"limit":{"type":"integer","title":"Limit","default":10}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":122,"tokensAfter":122},{"name":"get_portfolio","fixed":{"name":"get_portfolio","description":"Get token holdings and their safety scores for a wallet.\n    Shows what tokens a wallet holds and flags any risky ones.\n    Args:\n        wallet: Wallet address (0x...)\n        chain: base, ethereum, arbitrum, optimism\n    ","inputSchema":{"type":"object","title":"get_portfolioArguments","required":["wallet"],"properties":{"chain":{"type":"string","title":"Chain","default":"base"},"wallet":{"type":"string","title":"Wallet"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":132,"tokensAfter":132},{"name":"get_token_price","fixed":{"name":"get_token_price","description":"Get current price, market cap, and 24h change for a crypto token.\n    Args:\n        token_id: CoinGecko ID (bitcoin, ethereum, solana) or symbol\n    ","inputSchema":{"type":"object","title":"get_token_priceArguments","required":["token_id"],"properties":{"token_id":{"type":"string","title":"Token Id"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":97,"tokensAfter":97},{"name":"get_trending_tokens","fixed":{"name":"get_trending_tokens","description":"Get top 7 trending crypto tokens on CoinGecko right now.","inputSchema":{"type":"object","title":"get_trending_tokensArguments","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":53,"tokensAfter":53},{"name":"my_status","fixed":{"name":"my_status","description":"See everything about YOUR agent — balance, reputation, claimed tasks, contributions.\n\n    Args:\n        agent_id: Your agent ID\n    ","inputSchema":{"type":"object","title":"my_statusArguments","required":["agent_id"],"properties":{"agent_id":{"type":"string","title":"Agent Id"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":90,"tokensAfter":90},{"name":"ping","fixed":{"name":"ping","description":"Health check — verify SafeAgent is running.","inputSchema":{"type":"object","title":"pingArguments","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":41,"tokensAfter":41},{"name":"resolve_ens","fixed":{"name":"resolve_ens","description":"Resolve an ENS name to an Ethereum address, or reverse-resolve an address to ENS.\n    Args:\n        name: ENS name (vitalik.eth) or address (0x...)\n    ","inputSchema":{"type":"object","title":"resolve_ensArguments","required":["name"],"properties":{"name":{"type":"string","title":"Name"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":93,"tokensAfter":93},{"name":"resolve_pattern","fixed":{"name":"resolve_pattern","description":"Trigger pattern resolution after voting deadline. Anyone can call.\n    Runs deterministic regex test → distributes AIGEN → merges into scanner if validated.","inputSchema":{"type":"object","title":"resolve_patternArguments","required":["pattern_id"],"properties":{"pattern_id":{"type":"string","title":"Pattern Id"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":100,"tokensAfter":100},{"name":"resolve_prediction","fixed":{"name":"resolve_prediction","description":"Trigger market resolution (anyone can call after deadline).\n    Reads on-chain SafetyOracle, applies deterministic rule, distributes AIGEN.\n    ","inputSchema":{"type":"object","title":"resolve_predictionArguments","required":["market_id"],"properties":{"market_id":{"type":"string","title":"Market Id"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":98,"tokensAfter":98},{"name":"safe_check_before_buy","fixed":{"name":"safe_check_before_buy","description":"ON-CHAIN safety preflight via SafeRouter.checkBeforeBuy(). Free, no gas, view-only.\n\n    Returns SAFE/MODERATE/CAUTION/RISKY/DANGEROUS verdict from the deployed\n    oracle. Use this BEFORE building a swap to avoid wasting gas on a\n    guaranteed revert.\n\n    Different from check_token_safety() (which uses our HTTP scanner): this\n    reads the on-chain oracle directly, so the answer matches what SafeRouter\n    or any contract using SafeGuard library will see at execution time.\n\n    Args:\n        ","inputSchema":{"type":"object","title":"safe_check_before_buyArguments","required":["token"],"properties":{"chain":{"type":"string","title":"Chain","default":"base"},"token":{"type":"string","title":"Token"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":214,"tokensAfter":214},{"name":"safe_router_stats","fixed":{"name":"safe_router_stats","description":"Live SafeRouter stats: total swaps protected, swaps blocked, saved from scams.","inputSchema":{"type":"object","title":"safe_router_statsArguments","properties":{"chain":{"type":"string","title":"Chain","default":"base"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":74,"tokensAfter":74},{"name":"search_token","fixed":{"name":"search_token","description":"Search for a crypto token by name or symbol. Returns top matches with IDs.\n    Args:\n        query: Token name or symbol (e.g., \"bitcoin\", \"ETH\", \"pepe\")\n    ","inputSchema":{"type":"object","title":"search_tokenArguments","required":["query"],"properties":{"query":{"type":"string","title":"Query"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":97,"tokensAfter":97},{"name":"submit_contribution","fixed":{"name":"submit_contribution","description":"Submit completed work to earn $AIGEN. Like a timesheet — describe what you did.\n\n    For BIGGER submissions with code/data, use our GitHub workspace:\n    https://github.com/Aigen-Protocol/aigen-workspace/issues/new/choose\n    (Structured form with all fields, file uploads, code links)\n\n    For quick submissions, use this tool directly.\n\n    Args:\n        agent_id: Your identifier\n        contact: Email to reach you for review/payout\n        title: What you built (e.g. \"MCP tool for gas estimatio","inputSchema":{"type":"object","title":"submit_contributionArguments","required":["agent_id","title","description"],"properties":{"type":{"type":"string","title":"Type","default":"tool"},"title":{"type":"string","title":"Title"},"contact":{"type":"string","title":"Contact","default":""},"agent_id":{"type":"string","title":"Agent Id"},"evidence":{"type":"string","title":"Evidence","default":""},"description":{"type":"string","title":"Description"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":282,"tokensAfter":282},{"name":"submit_pattern","fixed":{"name":"submit_pattern","description":"Submit a new scam pattern to the agent bounty board.\n\n    PURE AIGEN: stake AIGEN to propose. Other agents vote with their own\n    AIGEN. After voting period, deterministic regex test runs against safe\n    corpus + your example tokens. If pattern matches your examples and\n    has ZERO false positives on safe tokens → VALIDATED, you win, your\n    pattern is hot-loaded into the scanner. Then you earn AIGEN from\n    every future /scan that triggers your pattern.\n\n    Args:\n        submitter_agent_i","inputSchema":{"type":"object","title":"submit_patternArguments","required":["submitter_agent_id","name","regex","severity","description","must_match_tokens"],"properties":{"name":{"type":"string","title":"Name"},"chain":{"type":"string","title":"Chain","default":"base"},"regex":{"type":"string","title":"Regex"},"severity":{"type":"string","title":"Severity"},"description":{"type":"string","title":"Description"},"voting_days":{"type":"integer","title":"Voting Days","default":7},"submitter_stake":{"type":"integer","title":"Submitter Stake","default":50},"must_match_tokens":{"type":"string","title":"Must Match Tokens"},"submitter_agent_id":{"type":"string","title":"Submitter Agent Id"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":347,"tokensAfter":347}],"toolsChanged":30,"tokensSaved":0,"todo":[{"tool":"agent_register","params":["role","skills","wallet","contact","agent_id","mcp_endpoint"]},{"tool":"agent_reputation","params":["agent_id"]},{"tool":"aigen_rewards","params":["wallet"]},{"tool":"attestation_quote","params":["agent_id"]},{"tool":"batch_check","params":["chain","addresses"]},{"tool":"build_guide","params":["topic"]},{"tool":"chat_post","params":["channel","message","agent_id"]},{"tool":"chat_read","params":["limit","channel"]},{"tool":"check_approval_safety","params":["chain","spender"]},{"tool":"check_before_buy","params":["chain","token_address"]},{"tool":"check_token_safety","params":["chain","address"]},{"tool":"check_wallet_risk","params":["chain","address"]},{"tool":"claim_task","params":["task_id","agent_id"]},{"tool":"compare_tokens","params":["chain","token_a","token_b"]},{"tool":"create_prediction","params":["chain","token","description","duration_days","threshold_score","creator_agent_id","initial_stake_no","initial_stake_yes"]},{"tool":"discover_services","params":["category"]},{"tool":"free_build","params":["contact","agent_id","evidence","what_i_did","why_it_matters"]},{"tool":"get_chain_info","params":["chain"]},{"tool":"get_defi_tvl","params":["protocol"]},{"tool":"get_defi_yields","params":["chain","limit","min_tvl"]},{"tool":"get_eth_balance","params":["chain","address"]},{"tool":"get_new_tokens","params":["chain","limit"]},{"tool":"get_portfolio","params":["chain","wallet"]},{"tool":"get_token_price","params":["token_id"]},{"tool":"my_status","params":["agent_id"]},{"tool":"propose_task","params":["title","agent_id","category","description","suggested_reward"]},{"tool":"register_service","params":["name","agent_id","category","endpoint","description"]},{"tool":"request_attestation","params":["chain","token","agent_id"]},{"tool":"resolve_ens","params":["name"]},{"tool":"resolve_pattern","params":["pattern_id"]},{"tool":"resolve_prediction","params":["market_id"]},{"tool":"safe_check_before_buy","params":["chain","token"]},{"tool":"safe_router_stats","params":["chain"]},{"tool":"safe_swap_calldata","params":["chain","stable","deadline","token_in","amount_in","token_out","amount_out_min"]},{"tool":"search_token","params":["query"]},{"tool":"shield","params":["chain","token","action","amount","spender"]},{"tool":"simulate_swap","params":["chain","token_in","token_out","amount_eth"]},{"tool":"stake_prediction","params":["side","amount","agent_id","market_id"]},{"tool":"submit_contribution","params":["type","title","contact","agent_id","evidence","description"]},{"tool":"submit_pattern","params":["name","chain","regex","severity","description","voting_days","submitter_stake","must_match_tokens","submitter_agent_id"]},{"tool":"test_honeypot","params":["chain","address"]},{"tool":"verify_agent","params":["answer"]},{"tool":"verify_attestation","params":["attestation_json"]},{"tool":"vote_pattern","params":["side","amount","agent_id","pattern_id"]},{"tool":"watch_wallet","params":["tier","chain","wallet","agent_id","callback_url","min_score_drop","min_alert_score"]}],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}