Skip to main content
Glama
MadeOnSol

MadeOnSol — Solana memecoin intelligence

by MadeOnSol

mcp-server-madeonsol

npm version npm downloads Smithery Glama MCP License: MIT

Install via Smithery · 🤖 Use in Claude Desktop · 🖱️ Use in Cursor · 📚 API docs · 💰 Free API key · 🔎 On Glama

MCP server for MadeOnSol Solana KOL intelligence API. Use from Claude Desktop, Cursor, or any MCP-compatible client.

Real-time Solana trading intelligence: track 1,069 KOL wallets with <3s latency on paid keys and x402 pay-per-call (free-tier live feeds are 5-min delayed), score 23,000+ Pump.fun deployers, surface deshred deploy signals ~500ms before on-chain confirmation, detect multi-KOL coordination, surface bundle-cohort holdings (which same-slot wallets still hold a token's supply), verify any wallet's CURRENT on-chain holdings straight from its token accounts, and stream every DEX trade across 9+ programs. Free tier: 200 requests/day across 40+ endpoints (live feeds 5-min delayed) — no signup payment. Get a key at madeonsol.com/pricing.

New in 1.27.0 — top traders, sniper watchlist management, and two update tools (104 tools total). Six additions found by an internal agentic-infra coverage audit. madeonsol_token_top_traders (GET /tokens/{mint}/top-traders, PRO/ULTRA) ranks a token's wallets by realized PnL or ROI, enriched with KOL/alpha-wallet identity — this endpoint already existed on the REST API and x402 rail but had no MCP tool. madeonsol_sniper_watchlist_list / _add / _remove (PRO+/ULTRA) manage your custom sniper-deploy watchlist (madeonsol_sniper_recent(watchlist: true) narrows to it) — previously only reachable via raw HTTP. madeonsol_update_webhook (PATCH) changes a webhook's URL, events, or active state without deleting and recreating it. madeonsol_wallet_tracker_relabel (PATCH) renames or clears a tracked wallet's label.

New in 1.26.0 — deployer reputation as-of a date, and creator-fee rewards. Two new tools (PRO+, keyed msk_ API only — no x402 route). madeonsol_deployer_as_of binds GET /deployer-hunter/{wallet}/as-of: the deployer's reputation exactly as it stood on date (default today, UTC) — the latest write-on-change snapshot at or before it, so an agent backtests without look-ahead bias. snapshot.snapshot_date can predate date (write-on-change); snapshot.carried: true marks that. No snapshot at or before dateas_of: false, snapshot: null — nothing is ever synthesized. date must be ≥ 2026-04-07 and not in the future. madeonsol_deployer_rewards binds GET /deployer-hunter/{wallet}/rewards: pump.fun creator-fee rewards, answered two ways that are never merged — collected (what actually reached the wallet: direct vault claims kept 90 days, social-handle claims, shareholder payouts on any token) and attributed (every payout on the tokens it deployed, split to_self/to_others + redirected_pct). Every money field is {sol, usdc, usd}; usd is null (never a silent 0) when a SOL amount exists and no SOL price was available. top_tokens/top_recipients (≤10, USD-sorted) show where attributed fees went. Works for non-deployers too (is_deployer: false, attributed empty).

New in 1.25.0 — token surges & revivals: momentum fires with the honest half attached. The new madeonsol_tokens_surges tool binds GET /tokens/surges (PRO+, keyed msk_ API only — no x402 route): every token momentum fire, newest first. Two kinds, one row shape. surge — a token < 30 min old whose market cap runs hard against its launch MC, in three tiers that each fire at most once per mint: early (≤10 min, ≥$12k, ≥3× launch), strong (≤30 min, ≥$30k, ≥6× launch and ≥2× the lowest sample of the last 3 min — it is climbing now), breakout (≤2 min, ≥$45k, ≥8×). A tier must be sustained (current tick and a sample ≥10 s older; nothing fires before 20 s of age) — a same-slot bundle marked to $475k at age 1 s is a spike, not a surge. revival — a token with no 1-minute trade candle for ≥24 h that starts trading again, confirmed only by the tape (≥5 buys, ≥$500 buy volume, MC ≥1.5× the pre-dormancy close), never by the price mark; tier is null. Hard gates on both: liquidity ≥$1.5k and ≥2 % of MC, and the MC gained must be paid for by buy volume (a price mark in a spoof pool moves MC on ~$0). Every row carries the burst tape (source candles / wallet_trades; unique_buyers only where the mint is in trade coverage — wallet_data_available:false otherwise, never an inferred zero), kol buyers, the first-20 early_buyers cohort (bundled / sold / sniper wallets), deployer reputation and risk_flags[] (bundled_launch, few_buyers, wash_pattern, thin_liquidity, cold_deployer, sniper_heavy, early_buyers_exiting, sell_pressure, no_tape_trades, no_prior_price, mint_authority_active, transfer_fee — empty means no flag raised, not verified clean). Rows ≥65 min old carry the +1 h outcome; stats=1 prints per-(kind, tier) hit-rates (up_1h_pct, median_peak_multiple, doubled_1h_pct) — out-of-sample by construction. Filters kind, tier, mint, launchpad, deployer_tier, min_mc_usd / max_mc_usd, min_buys, exclude_flags, only_clean; cursors since / before. Pushed live on the new token:surges WS channel (events token:surge / token:revival; subscribe filters kinds[], tiers[], launchpads[], exclude_flags[], min_mc_usd / max_mc_usd, deployer_tier[]) and accepted by madeonsol_create_webhook as events token:surge / token:revival with the same filters. The response echoes the live thresholds in definitions.

New in 1.24.1 — stream tokens never expire. madeonsol_stream_token (POST /stream/token) now returns the same token on every call, forever. It stops working only if your subscription lapses or you call the tool with rotate: true to replace it (the previous value keeps working for 60 s). expires_at and the new next_refresh_at are always null (kept for wire compatibility — do not schedule refreshes on them); the response gains rotated (boolean) and lifetime (string). The server never rotates on its own and never sends token_refresh unless you rotated; a 4001 close means "mint again" (lapsed or rotated), never a timer. Prefer Authorization: Bearer <token> on the WebSocket handshake — ?token= still works and is masked in access logs.

New in 1.24.0 — token locks & vesting, upcoming unlocks, and pump.fun creator-fee sharing / claims. Five new tools (all PRO+, keyed msk_ API only — no x402 route). madeonsol_token_locks binds GET /tokens/{mint}/locks: every on-chain lock / vesting contract on a mint (Streamflow, Jupiter Lock, Bonfida vesting) with the schedule, the terms (cancelable_by_sender = the locker can pull it — funds are locked against the recipient, not the locker) and a live-derived view (locked_*, claimable_*, next_unlock) plus a summary with 7d / 30d forward unlock totals. madeonsol_token_locks_feed (GET /tokens/locks) is the cross-token feed of NEW contracts (cursor pagination.next_since, or push on WS channel token:locks), madeonsol_token_unlocks (GET /tokens/unlocks) lists upcoming unlock EVENTS (cliff / period / final / tranche) inside a 1h–90d window sorted by soonest / largest_usd / largest_pct. LP locks are not included — token/vesting locks only. madeonsol_token_fee_shares (GET /tokens/{mint}/fee-shares) decodes a pump.fun coin's on-chain SharingConfig — shareholders with share_bps, is_admin, is_social_pda (fees earmarked for an X identity: social.platform 2 = X, user_id = the numeric platform id, not the handle), redirected_bps, is_default: true = 100% to the creator — plus a distributions rollup and config history; madeonsol_token_fee_claims (GET /tokens/fee-claims) is the fee-event feed (distribution with per-address payouts[], social_claim, shares_created/updated/reset, creator_transferred, creator_claim only when asked via type=), pushed on WS channel token:fee_claims. Fee-event history starts 2026-08-17. All base-unit amounts are digit strings; ui / usd / pct are null when decimals or price are unknown.

New in 1.23.0 — live holder census: exact holder count, labelled holders, and pools that are named, not just excluded. The new madeonsol_token_holders tool binds GET /tokens/{mint}/holders (PRO+): every token account of the mint read from the ledger at confirmed and merged per owner, so concentration.holder_count is EXACT (distinct non-zero owners minus pools / bonding curves / burns) — never a trade-derived estimate; it is null only when the provider refuses the census for a mega-cap, in which case you get the top-20 view and source.census_fallback_reason says so. Each disclosed owner carries our labels (deployer / kol / early_buyer / bundle / bot / dump_cluster — empty means unknown to us, not clean), and excluded[] NAMES what was taken out of the circulating denominator: reason = pool (with dex + pool_address), bonding_curve (pump.fun / LaunchLab), burn, or program_account only when we genuinely cannot attribute the PDA; pool_pct / burned_pct / program_pct split the exclusion. Amounts are raw u64 strings. Disclosure: PRO ranks 1–10, ULTRA 1–50, BUSINESS 1–100 — the maths is tier-independent. Big tokens take 5–30 s upstream: you get 503 holder_scan_in_progress with retry_after_seconds: 20 while the scan finishes into the cache, and the retry is instant.

New in 1.22.0 — two prices on the trade tape, and the right one is now the default. The trade tape now tells you what a trade actually cost. price_sol/price_usd on each trade are THIS trade's executed price — sol_amount / token_amount, reconciling exactly with the amounts on the same row and with the PnL endpoints. Because sol_amount is the wallet's net SOL movement, that is the trader's all-in effective rate: swap fee and any account rent included, not the pool mid. The market-cap tracker's canonical pool price moved to the new market_price_sol/market_price_usd fields — it is sampled once per token per pool update, so every trade in the same slot shares it. Until now price_sol carried that canonical value and disagreed with the row's own amounts by a 7.9% median (p90 ~74%): a stale market price reads low in a pump and high in a dump, so anything you averaged out of the tape inherited the bias instead of cancelling it. Use price_sol for cost basis, fills and PnL; market_price_sol for a per-token series independent of trade size and direction. Both madeonsol_token_trades and madeonsol_wallet_trades carry all four fields, and both tool descriptions spell out which price to use so an agent does not average the wrong one.

New in 1.21.0 — the Deployer Hunter surface completed. Seven new operations that existed on the API but had no SDK binding: madeonsol_deployer_leaderboard, madeonsol_deployer_stats, madeonsol_deployer_profile, madeonsol_deployer_tokens, madeonsol_deployer_alert_stats, madeonsol_deployer_best_tokens and madeonsol_deployer_recent_bonds. Read bonding_rate (lifetime) against recent_bond_rate (rolling) — the gap between them is the signal, not either number alone. runner_rate only means something once labeled_tokens >= 3, and an untracked wallet returns a profile with zeroed counters, not a 404, so check total_deployed before reading a 0% bond rate as a track record. Dependency ranges are now bounded to the versions actually tested (@x402/* ^2.x, @solana/kit ^5.5.1) instead of open-ended >=0.0.1, and the lazily-imported x402 peers are marked optional — a keyed install no longer pulls the whole Solana stack.

New in 1.20.0Token depth / price impact + deployer self-activity on risk. New tool madeonsol_token_depth (GET /tokens/{mint}/depth) — per-pool price-impact / slippage: "how much SOL moves this token's price N%", per pool (NOT router-optimal). Pass up to 8 SOL buy sizes (each >0 and ≤10000; default [0.5, 1, 5, 10]); every computable pool returns spot_price_sol, fee_pct, a quotes[] entry per size (size_sol, tokens_out, avg_price_sol, price_impact_pct), and to_move_price — the SOL required to move price 1% / 5% / 10%. Constant-product AMMs are served from stream reserves (source: "stream" with reserves_age_ms); pump.fun/bonk bonding curves from a live read of the curve's virtual reserves (source: "live_rpc"). Pools that can't be priced honestly — concentrated CLMM/Orca/DLMM, Meteora-DBC curves, unclassified models — come back in unsupported_pools[] with a reason (e.g. concentrated_liquidity_depth_not_supported, curve_graduated_use_amm_pool) instead of a wrong number; primary_pool names the deepest computable pool, found: false means no pools tracked. PRO/ULTRA only. And madeonsol_token_risk now returns a top-level dev block (deployer self-activity; null when the mint has no deployer-pipeline row): the create-tx self-buy snapshot (buy_sol, buy_tokens, buy_supply_pct), the post-create rollup (bought_tokens_after — catches the same-second-separate-tx dev buy the create snapshot reads as 0 — sold_tokens, sold_sol, first_sell_at/last_sell_at), live on-chain holdings (holdings_tokens, holdings_supply_pct — pump.fun 1B denominator, null elsewhere — wallet_empty: is the dev wallet empty NOW), and transferred_out (tokens left without a sell; null = unknown, never a guess), plus as_of. deployer:alert webhook/WS payloads gain dev_buy_sol + dev_buy_supply_pct.

New in 1.19.0Batch wallet classification + token trade tape + bigger keyless catalog. New tool madeonsol_wallet_batch_classify — reputation flags for 1–100 wallets in one call (counts as one request): per wallet is_sniper / is_bundler / is_dumper / is_kol (+ kol_name), bot_confidence (string enum none/low/medium/high, null when not alpha-tracked), and a dump_cluster block (dump_cohorts, runner_cohorts, total_cohorts, as_of). Flags are pump.fun-pipeline scoped — false = not observed, NOT verified clean; is_bundler is lifetime, is_dumper is a rolling 42d window. New tool madeonsol_token_trades — mint-scoped cursor-paginated trade tape (the backfill complement to the live firehose): tx_signature, wallet_address, action, sol_amount, token_amount, price_sol/price_usd, early_buyer_rank, slot, block_time, traded_at; filters action / wallet / sinceuntil (default FULL history — capture starts 2026-04-12), plus a coverage honesty block. Both PRO/ULTRA. madeonsol_wallet_stats flags gain is_sniper/is_bundler/is_dumper + dump_cluster, and bot_confidence is now correctly typed as a string enum (it was documented as a number and always came back null due to a server bug — now returns real values). madeonsol_token_risk inputs and madeonsol_sniper_recent deploys gain the slot-window sniper_footprint/footprint rollup (buys, buyers, sol, supply_pct, sniper_wallet_buys, data_available, as_ofnull = not observable, not zero). The keyless x402 catalog grows 18 → 25 endpoints: token candles ($0.01), almost-bonded ($0.01), top-traders ($0.02), cap-table ($0.02), sniper recent ($0.01), token flow ($0.01), deployer trajectory ($0.01) — madeonsol_sniper_recent and madeonsol_deployer_trajectory now work keyless via x402 too.

New in 1.18.0Verified on-chain wallet holdings. New tool madeonsol_wallet_holdings — the wallet's CURRENT holdings read straight from chain: its actual SPL + Token-2022 token accounts and SOL balance, each enriched with our price_usd / value_usd / market_cap_usd / name / symbol / is_bonded, plus transfer_delta (on-chain amount − trade-derived net position — exposes non-swap flows like airdrops, insider funding, and wallet-hopping). Distinct from madeonsol_wallet_positions (trade-derived FIFO): this is what the wallet actually holds right now. Params: limit (1–500, default 200), min_value_usd (default 0). Returns { address, sol_balance, holdings[], summary, verified_at, trade_window_days, cache_hit, ttl_seconds }. ULTRA only.

New in 1.17.0Bundle-cohort holdings. New tool madeonsol_token_bundle — which same-slot "bundle" wallets bought a token and how much of supply they still hold (the incumbents' "current held %" rug/insider signal, from confirmed on-chain data). Returns a bundle block (wallet_count, bundle_kind atomic_tx/same_slot/none, held_ratio, held_pct_of_supply — the headline, net held / circulating supply, null if unknown — fully_exited, buy_volume, tokens_held) plus a wallets[] array (rank, wallet, held_ratio, has_sold, atomic, is_kol). BASIC get the bundle block only (empty wallets[]); PRO adds top-10 flags-only wallets; ULTRA returns the full cohort with enriched identities (kol_name, win_rate, bot_confidence, tokens_held).

New in 1.16.0Batch risk scoring + live stream-session control. New tool madeonsol_tokens_batch_risk — bulk rug-risk/safety scoring for up to 50 mints in one call, returning the same per-mint shape as madeonsol_token_risk (0–100 score, band, explainable factors[], raw inputs) plus an as_of timestamp; untracked mints come back as { mint, error: "not_tracked" } without failing the batch, and the whole call counts as one request against quota. Plus two WebSocket session tools: madeonsol_stream_sessions_list (list your live sessions — id, service, tier, channels, connected_at, remote_ip, messages_sent) and madeonsol_stream_session_kill (force-disconnect a session by id to free its connection slot, e.g. a ghost socket). PRO/ULTRA only.

New in 1.15.0Almost-bonded discovery + trending sorts. New tool madeonsol_almost_bonded — pre-bond pump.fun tokens near graduation, ranked by velocity (Δprogress/min): "95% and accelerating" beats "92% stalled". Each token carries progress_pct, velocity_pct_per_min, eta_minutes, stalled, real_sol_reserves, market_cap_usd, liquidity_usd, authorities_revoked, deployer_tier, and age_minutes. Params: min_progress, max_progress, min_velocity_pct_per_min, max_age_minutes, deployer_tier, authority_revoked, min_liq, sort (velocity_desc / progress_desc / eta_asc), limit. PRO/ULTRA only. Plus madeonsol_tokens_list gains four momentum sorts — mc_change_5m_desc, mc_change_1h_desc, volume_1h_desc, and trending (composite recent-volume × positive-momentum rank).

New in 1.14.0Token trade flow. New tool madeonsol_token_flow — a trade-flow aggregate (organic-vs-fake volume) over a 1h/24h window: unique_wallets / unique_buyers / unique_sellers, buy_count / sell_count / total_trades, buy_sol / sell_sol / net_sol (sell − buy; positive = net SOL leaving the pool), and trades_per_wallet (wash-trading proxy). PRO/ULTRA only. Deployer alerts (madeonsol_deployer_alerts) now carry deployers.deployer_sol_balance — the deployer wallet's SOL balance at alert time (null for historical rows).

New in 1.13.0Token OHLCV candles. New tool madeonsol_token_candles — historical price candles (1m/5m/15m/1h/4h/1d) aggregated from the on-chain trade firehose. Each candle has t/open/high/low/close/volume_usd/trades/market_cap_usd. PRO returns OHLCV for the last 30 days; ULTRA adds buy/sell volume + count splits, net flow, MEV volume, open/close liquidity, high/low MC, and full history. PRO/ULTRA only.

New in 1.12.0Token risk score. New tool madeonsol_token_risk — a transparent 0–100 rug-risk/safety score (higher = riskier) with a band (safe/caution/danger), an explainable factors[] array, and the raw inputs (mint/freeze authority, liquidity, liq-to-MC ratio, transfer fee, launch cohort, deployer bond rate, KOL signal, blacklist). PRO/ULTRA only.

New in 1.11.0madeonsol_tokens_list gains three new filter params: min_liq_mc_ratio, max_liq_mc_ratio, and deployer_tier. Response items now include liquidity_to_mc_ratio and deployer_tier. New tool: madeonsol_signal_performance — evaluate signal efficacy (hit rate, sample size, median outcome) before acting on any signal. KOL leaderboard entries now include median_hold_minutes_30d and percentile_early_entry_30d.

New in 1.10.4 — Deployer alerts/profiles now expose runner_rate + labeled_tokens (fraction of a deployer's labeled tokens that ran vs dumped, gate on labeled_tokens ≥3) plus avg_time_to_bond_minutes.

New in 1.10.3Dump-cluster detection. madeonsol_token_buyer_quality breakdown now includes dump_cluster_count (3+ dump-cluster wallets in the first-20 → 94% historical dump rate vs 61% base) and recycled_early_buyer_count. Full breakdown is returned on all tiers. Also: the API now pushes every pump.fun graduation in real time (token:graduations WS channel).

New in 1.10Deshred Sniper Alerts. madeonsol_sniper_recent surfaces pump.fun deploys from shred-level data ~500ms before on-chain confirmation. PRO: elite/good deployers. ULTRA: all tiers + custom watchlist. Use sniper:deploys WebSocket or sniper:deploy webhook for live push.

New in 1.9Price alerts, scout leaderboard, coordination history. madeonsol_price_alerts_* CRUD (PRO=5, ULTRA=25). madeonsol_scout_leaderboard ranks top scouts by first-touch follow-on rate. madeonsol_coordination_history and madeonsol_peak_history expose the historical record. madeonsol_wallet_stats now returns derived: win_rate, roi, verdict, biggest_miss.

New in 1.8Universal Wallet API. madeonsol_wallet_stats, madeonsol_wallet_pnl, madeonsol_wallet_positions, madeonsol_wallet_trades — FIFO cost-basis PnL and cursor-paginated raw trades for any Solana wallet. PRO+. Cache hits don't count against quota.

New in 1.7.0 (2026-05-12) — Two new tools: madeonsol_me (account/quota introspection — read tier, remaining requests, and per-feature usage without parsing rate-limit headers) and madeonsol_tokens_list (PRO+ filtered, sortable token directory — MC band, liquidity floor, primary DEX, authority/safety flags, plus computed 1h volume / MEV-share / MC-change deltas). Token responses now expose velocity / MEV-share fields. Token directory defaults to min_liq=2000 to skip phantom-MC dust — pass min_liq=0 to opt out. /token/{mint} now returns structured 400 errors (code / reason / example / docs) instead of plain strings. Deprecated avg_entry_mc_usd field fully removed from KOL/alpha leaderboards.

Install via Smithery (one line)

Smithery is the easiest path — it writes the config for you and handles the install:

npx -y smithery mcp add madeonsol/solana-kol-intelligence

Smithery prompts for your MADEONSOL_API_KEY (free at madeonsol.com/pricing) and wires up Claude Desktop or your chosen MCP client. Restart the client and ask: "What are KOLs buying right now?"

You can also browse tools from the CLI:

npx -y smithery tool get madeonsol/solana-kol-intelligence madeonsol_kol_feed

Related MCP server: cryptoiz-mcp

Quick start — manual config (10 seconds)

npm install -g mcp-server-madeonsol

Add to claude_desktop_config.json or Cursor MCP settings (free tier at https://madeonsol.com/pricing):

{ "mcpServers": { "madeonsol": { "command": "mcp-server-madeonsol", "env": { "MADEONSOL_API_KEY": "msk_..." } } } }

Restart Claude Desktop and ask: "What are KOLs buying right now?"

AI agent quickstart (x402 / pay-per-call)

Building an autonomous agent? Skip the signup. Point a funded Solana wallet at the server and every tool call auto-pays a micropayment over x402 — no API key, no account, no rate-limit dance.

{
  "mcpServers": {
    "madeonsol": {
      "command": "mcp-server-madeonsol",
      "env": {
        "SVM_PRIVATE_KEY": "<base58 solana private key>"
      }
    }
  }
}

How it works:

  • The wallet behind SVM_PRIVATE_KEY settles each request as a USDC micropayment on Solana (~$0.005–$0.02 per call, settled on-chain). No subscription, no quota.

  • The keyless catalog covers 25 endpoints — the latest additions: token candles ($0.01), almost-bonded ($0.01), top-traders ($0.02), cap-table ($0.02), sniper recent deploys ($0.01), token flow ($0.01), and deployer trajectory ($0.01).

  • The free madeonsol_discovery tool needs no auth and returns every endpoint with its exact per-call price — call it first to see what each tool costs.

  • Install the x402 peer deps alongside the server (only required for this mode):

    npm install -g mcp-server-madeonsol @x402/fetch @x402/svm @x402/core @solana/kit @scure/base

Data only. MadeOnSol returns trading intelligence — it never trades, signs swaps, or takes custody of funds. The only thing your wallet ever pays for is the per-call data fee.

Prefer a fixed monthly bill, free tier, or no wallet? Use the developer path below.

Authentication

Two options (in priority order):

Method

Env var

Best for

MadeOnSol API key (recommended)

MADEONSOL_API_KEY

Developers — get a free key

x402 micropayments

SVM_PRIVATE_KEY

AI agents with Solana wallets

v1.0 breaking change: RapidAPI auth (RAPIDAPI_KEY) has been removed. The MadeOnSol RapidAPI marketplace was retired on 2026-04-19. Get a free msk_ key at madeonsol.com/pricing.

Install

npm install -g mcp-server-madeonsol

x402 peer deps (@x402/fetch @x402/svm @x402/core @solana/kit @scure/base) are only needed when using SVM_PRIVATE_KEY.

Configure

Claude Desktop

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "madeonsol": {
      "command": "mcp-server-madeonsol",
      "env": {
        "MADEONSOL_API_KEY": "msk_your_api_key_here"
      }
    }
  }
}

Cursor

Add to MCP settings with the same command and env vars.

Tools

KOL Intelligence

Tool

Description

madeonsol_kol_feed

Real-time KOL trade feed (1,000+ wallets)

madeonsol_kol_coordination

Multi-KOL convergence signals (v1.1) — peak-density window, exit detection, 0-100 score

madeonsol_kol_first_touches

First-KOL-touch events — backtested scout signal. Filter by scout tier, winrate, token age, mint suffix

madeonsol_kol_leaderboard

KOL PnL and win rate rankings (180 days of history; periods: today, 7d, 30d, 90d, 180d)

madeonsol_kol_pairs

KOL affinity matrix — which KOLs co-trade the same tokens

madeonsol_kol_hot_tokens

KOL momentum tokens — accelerating buy interest

madeonsol_kol_trending_tokens

Tokens ranked by KOL buy volume (5m–12h windows). ULTRA adds full KOL wallet addresses.

madeonsol_kol_pnl

Deep per-wallet PnL: equity curve, risk metrics, closed positions. ULTRA adds open positions (tokens bought but not yet sold).

madeonsol_kol_timing

KOL entry/exit timing profile — available on all tiers

Deployer Hunter

Tool

Description

madeonsol_deployer_alerts

Pump.fun deployer launches with KOL enrichment. Filter by tier (elite/good/moderate/rising/cold). ULTRA unlocks full pagination. Each alert's deployers now includes deployer_sol_balance — the deployer wallet's SOL balance at alert time (null for historical rows).

madeonsol_deployer_trajectory

Deployer skill curve — streaks, rolling bond rate, trend — available on all tiers

madeonsol_deployer_history

A pump.fun deployer's daily reputation time-series (bonding_rate, recent_bond_rate, tier, avg_peak_mc per day) — backtest deployer signals at launch time without look-ahead bias. limit 1–365 (default 90)

Deshred Sniper Alerts (new in 1.10 — Pro/Ultra)

Pre-confirm pump.fun deploy feed reconstructed from shred-level (deshred) data — launches surface ~500ms before they confirm on-chain. Pro sees elite/good deployers; Ultra sees every tier.

Tool

Description

madeonsol_sniper_recent

Newest-first deshred deploy feed. Pro: elite/good · Ultra: all tiers · keyless x402: $0.01 (elite/good). watchlist: true (Ultra) narrows to your custom deployer watchlist. New 1.19: each deploy carries footprint — the slot-window snipe rollup (buys, buyers, sol, supply_pct, sniper_wallet_buys, data_available, as_of) or null when not yet settled/observable

madeonsol_sniper_by_deployer

Deshred deploys for a single deployer wallet (Ultra)

Wallet Tracker

Tool

Description

madeonsol_wallet_tracker_watchlist

List your tracked wallets and remaining capacity (Free: 10, Pro: 50, Ultra: 100)

madeonsol_wallet_tracker_add

Add a wallet to your watchlist

madeonsol_wallet_tracker_remove

Remove a wallet from your watchlist

madeonsol_wallet_tracker_trades

Historical swap/transfer events for watched wallets (120-day retention)

madeonsol_wallet_tracker_summary

Per-wallet stats: swap counts, SOL bought/sold, last event

Universal Wallet (new in 1.8 — any wallet, not just curated KOLs, PRO+)

Tool

Description

madeonsol_wallet_stats

Aggregate 90d stats + cross-product flags (is_kol, is_alpha_tracked + bot_confidence none/low/medium/high, is_deployer + tokens_deployed, new 1.19: is_sniper / is_bundler / is_dumper + dump_cluster cohorts) — quick sizing-up of an unknown wallet

madeonsol_wallet_batch_classify

New 1.19 · Bulk reputation flags for 1–100 wallets in one call — is_sniper/is_bundler/is_dumper/is_kol + kol_name, bot_confidence, dump_cluster. Pump.fun-pipeline scoped: false = not observed, not verified clean

madeonsol_wallet_pnl

Full FIFO cost-basis PnL: realized + unrealized SOL, profit factor, max drawdown, avg + median hold minutes, daily UTC PnL curve, closed + open positions hydrated with live mc-tracker prices

madeonsol_wallet_positions

Open positions only — lighter slice of /pnl. Shares the same cache.

madeonsol_wallet_holdings

New 1.18 · Verified CURRENT on-chain holdings (real SPL + Token-2022 accounts + SOL) enriched with price/MC/name, plus transfer_delta vs trade-derived position. ULTRA only.

madeonsol_wallet_trades

Cursor-paginated raw trades with action / token / since-until filters

Cached server-side with dynamic TTL (5min / 1h / 24h based on last activity). Cost basis observable only inside the 90-day window.

Alpha Wallet Intelligence

Scored from 1M+ early-buyer records (wallets seen in the first 20 buyers of Pump.fun tokens).

Tool

Tier

Description

madeonsol_alpha_leaderboard

All

Top profitable early-buyer wallets. Up to 100 on Free/Pro; ULTRA unlocks 500 + bot signals

madeonsol_alpha_wallet

ULTRA

Full per-token breakdown + bot_signals array

madeonsol_alpha_linked

ULTRA

Wallets behaviorally linked (co-bought 3+ tokens within 2s)

Token Quality

Tool

Tier

Description

madeonsol_tokens_list

PRO+

Filtered, sortable token directory — MC band, liquidity floor, primary DEX, authority/safety flags, computed 1h volume / MEV-share / MC-change deltas, plus momentum sorts (mc_change_5m_desc, mc_change_1h_desc, volume_1h_desc, trending). Default min_liq=2000 skips phantom-MC dust.

madeonsol_almost_bonded

PRO+

Pre-bond pump.fun tokens near graduation, ranked by velocity (Δprogress/min) — progress_pct, velocity_pct_per_min, eta_minutes, stalled, deployer_tier, age_minutes

madeonsol_token_cap_table

PRO+

First non-deployer early buyers, enriched with PnL/KOL/bot flags. PRO=10, ULTRA=20

madeonsol_token_buyer_quality

All

0–100 buyer-quality score + full breakdown (5-min cached)

madeonsol_token_risk

PRO+

Transparent 0–100 rug-risk/safety score with band, explainable factors[], and raw inputs (new 1.19: inputs.sniper_footprint — slot-window snipe rollup, null = not observable; new 1.20: top-level dev block — deployer self-buy at create, sells rollup, live on-chain holdings, wallet_empty, transferred_out)

madeonsol_token_bundle

All

Bundle-cohort holdings — which same-slot bundle wallets bought a token and how much of supply they still hold (held_pct_of_supply headline, plus bundle_kind, held_ratio, fully_exited). BASIC: bundle block only. PRO: top-10 flags. ULTRA: full cohort + identities

madeonsol_token_pools

PRO+

Per-venue liquidity map — every DEX pool a token trades in (pump.fun/PumpSwap/Raydium/Meteora/Orca) with per-pool liquidity_usd, is_active (live vs parked), plus a summary (pool/DEX counts, total_liquidity_usd, primary_pool, top_pool_share_pct concentration)

madeonsol_token_depth

New 1.20 · PRO+

Per-pool price impact / slippage — quotes[] per SOL buy size (tokens_out, avg_price_sol, price_impact_pct) + to_move_price (SOL to move price 1%/5%/10%). sizes max 8, default [0.5, 1, 5, 10]; unsupported pools (CLMM/DLMM/DBC) flagged with a reason

madeonsol_token_holders

New · PRO+

Live holder census + concentration — who holds NOW (vs madeonsol_token_cap_table = who bought first). concentration.holder_count is EXACT (mint-scoped getProgramAccounts census merged per owner; null only when the provider refuses a mega-cap → top-20 fallback with source.census_fallback_reason, never trade-estimated). Each disclosed owner labelled deployer / kol / early_buyer / bundle / bot / dump_cluster (empty = unknown, not clean). Pools / bonding curves / burns EXCLUDED from the circulating denominator and NAMED in excluded[] (reason: pool + dex + pool_address, bonding_curve, burn, program_account); amount_raw is a raw u64 STRING. Disclosure PRO 10 / ULTRA 50 / BUSINESS 100. Big tokens: first call may be HTTP 503 holder_scan_in_progress (retry_after_seconds: 20) — scan continues + cached, retry is instant

madeonsol_token_locks

New 1.24 · PRO+

Token locks & vesting on a mint — every Streamflow / Jupiter Lock / Bonfida contract: program, kind (lock / vesting), derived status, sender / recipient, schedule (start_at / cliff_at / end_at, period_seconds), terms (cancelable_by_sender — the locker can pull it), live locked_* / claimable_* / next_unlock, plus summary (locked / deposited totals, unlocking_7d_* / unlocking_30d_*, nearest next_unlock, active_cancelable_by_sender). Filters status, program, limit ≤500. Base-unit amounts are STRINGS; ui/usd/pct null when unknown. LP locks not included

madeonsol_token_locks_feed

New 1.24 · PRO+

Cross-token feed of NEW lock / vesting contracts, newest first — same row shape + token {symbol, price_usd, market_cap_usd}. Cursors since / before (pagination.next_since / next_before); filters mint, sender, recipient, program, kind, status, min_usd, min_pct_of_supply, include_estimated (backfilled Jupiter rows). Push: WS channel token:locks (event token:lock)

madeonsol_token_unlocks

New 1.24 · PRO+

Upcoming unlock EVENTS across all active contracts inside within = 1h–90d — one entry per contract = its next event (cliff / period / final / tranche) with amount_* + window_amount_* (total release over the window), token, lock. sort soonest / largest_usd / largest_pct; filters mint, program, kind, min_usd, min_pct_of_supply; limit ≤200, offset

madeonsol_token_fee_shares

New 1.24 · PRO+

pump.fun creator-fee SharingConfig on a coin — shareholders[] (share_bps, is_admin, is_social_pda + social {platform (2 = X), user_id, lifetime_claimed}, received_*), redirected_bps, social_bps, is_default (100% to creator), source stream / chain; distributions rollup (recipients, past_recipients), history[], recent_distributions[]. Amounts in quote base units (lamports) as STRINGS. Event history starts 2026-08-17

madeonsol_token_fee_claims

New 1.24 · PRO+

pump.fun fee-event feed, newest first — type distribution (with payouts[] per shareholder) / social_claim (X identity → wallet, mint null) / shares_created / shares_updated / shares_reset / creator_transferred / creator_claim (excluded unless type= asks). Filters type (comma list), mint, recipient, actor, social_platform, social_user_id, min_sol, since / before. Push: WS channel token:fee_claims (event token:fee_claim). History starts 2026-08-17

madeonsol_tokens_surges

New 1.25 · PRO+

Token momentum fires, newest first — kind surge (token < 30 min old vs its LAUNCH MC; tier early ≤10 min ≥$12k ≥3× · strong ≤30 min ≥$30k ≥6× and ≥2× the 3-min low · breakout ≤2 min ≥$45k ≥8×; each once per mint, sustained ≥10 s) or revival (no trade candle ≥24 h, then ≥5 buys / ≥$500 buy volume / ≥1.5× the pre-dormancy MC on the tape — never a price mark; tier null). Each row: burst tape (unique_buyers null outside trade coverage), kol, early_buyers (bundled / sold / sniper), deployer, risk_flags[] (empty = no flag raised, not verified clean), and outcome (+1 h MC / peak / low) once ≥65 min old. stats=1 = per-(kind, tier) hit-rates over days. Filters kind, tier, mint, launchpad, deployer_tier, min_mc_usd / max_mc_usd, min_buys, exclude_flags (comma list), only_clean; cursors since / before; limit ≤200. Push: WS channel token:surges (events token:surge / token:revival) + webhook registry. Retention 60 d

madeonsol_tokens_batch_risk

PRO+

Bulk rug-risk/safety scoring for up to 50 mints — same shape as madeonsol_token_risk + as_of. Untracked mints return { mint, error: "not_tracked" } without failing the batch; counts as one request

madeonsol_token_candles

PRO+

Historical OHLCV candles (1m–1d). PRO=OHLCV 30d; ULTRA=+net flow, liquidity delta, MEV volume, full history

madeonsol_token_flow

PRO+

Trade-flow aggregate (organic-vs-fake volume) over a 1h/24h window — unique wallets/buyers/sellers, buy/sell counts + SOL, net_sol, trades_per_wallet wash-trading proxy

madeonsol_token_trades

New 1.19 · PRO+

Mint-scoped trade tape — cursor-paginated raw trades for one token (action / wallet / since–until filters, default FULL history). History starts 2026-04-12; coverage block marks scope

Copy-Trade Rules (PRO/ULTRA)

Server-side rules that fire signals when a watched source wallet trades. Delivered via webhook (HMAC-signed) and/or WebSocket.

Tool

Description

madeonsol_copytrade_list

List your rules

madeonsol_copytrade_create

Create a rule. Returns webhook_secret once — store it

madeonsol_copytrade_get

Get one rule

madeonsol_copytrade_update

Update fields or toggle is_active

madeonsol_copytrade_delete

Delete permanently

madeonsol_copytrade_signals

Recent fired signals (up to 7 days)

KOL Coordination Alerts (PRO/ULTRA — v1.1 push signals)

Real-time push alerts when a KOL cluster co-buys the same token. Fires within ~1s (pg_notify push). Delivered via WebSocket (kol:coordination channel, user-scoped) and/or HMAC-signed webhook.

Tool

Description

madeonsol_coordination_alerts_list

List your rules (PRO=5, ULTRA=20)

madeonsol_coordination_alerts_create

Create a rule. Returns webhook_secret once — store it

madeonsol_coordination_alerts_get

Get one rule

madeonsol_coordination_alerts_update

Update fields or toggle is_active

madeonsol_coordination_alerts_delete

Delete permanently

KOL Scout Signal — first KOL touches (new in 1.3)

Every "first KOL buy on a token mint" event. Filterable by scout tier (S/A/B/C from mv_kol_scout_score), KOL winrate, token age, mint suffix.

Backtest: S-tier scouts attract ≥3 follow-on KOLs within 4h ~50% of the time vs ~14% baseline (38d / 491k buys / 72,549 events). Public leaderboard at madeonsol.com/kol/scouts.

Tool

Description

madeonsol_kol_first_touches

Recent first-KOL-touch events. Filters: min_scout_tier, min_kol_winrate_7d, token_age_max_min, mint_suffix, preset, etc.

madeonsol_first_touch_subscriptions_list

List your first-touch webhook subscriptions — ULTRA

madeonsol_first_touch_subscriptions_create

Create a webhook rule (HMAC-signed). Returns webhook_secret once — store it. Up to 10/user — ULTRA

madeonsol_first_touch_subscriptions_get

Get one subscription — ULTRA

madeonsol_first_touch_subscriptions_update

Update fields or toggle is_active — ULTRA

madeonsol_first_touch_subscriptions_delete

Delete permanently — ULTRA

Don't poll — push. Median lead time before the second KOL is 12 seconds. WebSocket channel: kol:first_touches (PRO+).

Price Alerts (new in 1.9)

CRUD for token dip/recovery price alerts. Fires when a token's market cap crosses your threshold. PRO=5 rules, ULTRA=25.

Tool

Description

madeonsol_price_alerts_list

List your price alert rules

madeonsol_price_alerts_create

Create a dip/recovery alert. Returns webhook_secret once — store it

madeonsol_price_alerts_get

Get one alert rule by ID

madeonsol_price_alerts_update

Update fields or toggle is_active

madeonsol_price_alerts_delete

Delete permanently

Scout Leaderboard & KOL Consensus (new in 1.9)

Tool

Tier

Description

madeonsol_scout_leaderboard

PRO+

Top scout-tier KOLs ranked by first-touch follow-on rate, win rate, and ROI

madeonsol_kol_consensus

PRO+

Tokens with the strongest KOL agreement signal — weighted by scout score and recent PnL

madeonsol_peak_history

PRO+

Historical peak-density windows for a token — every coordination spike with KOL breakdown

madeonsol_coordination_history

PRO+

Global coordination event log with token, KOL count, score, and outcome

Wallet Derived Stats (new in 1.9)

madeonsol_wallet_stats now returns a stats object with derived fields: win_rate (0-1), roi, verdict ("strong" | "profitable" | "neutral" | "losing"), and biggest_miss (token with the highest post-exit gain the wallet missed).

Streaming & Webhooks

Tool

Description

madeonsol_stream_token

Get your WebSocket token for KOL/deployer streaming and DEX trade stream — PRO/ULTRA. Never expires (1.24.1): same token on every call; rotate: true replaces it (old value works 60 s more); expires_at / next_refresh_at always null. Channels now also include token:locks (new lock/vesting contracts, event token:lock), token:fee_claims (pump.fun fee events, event token:fee_claim) and token:surges (new 1.25 — token momentum fires, events token:surge / token:revival, with risk_flags[]; subscribe filters kinds[], tiers[], launchpads[], exclude_flags[], min_mc_usd / max_mc_usd, deployer_tier[])

madeonsol_stream_sessions_list

List your live WebSocket sessions — id, service, tier, channels, connected_at, remote_ip, messages_sent — PRO/ULTRA

madeonsol_stream_session_kill

Evict a live WebSocket session by id to free its connection slot (e.g. a ghost socket) — PRO/ULTRA

madeonsol_create_webhook

Register a webhook for real-time push notifications — PRO/ULTRA

madeonsol_list_webhooks

List your registered webhooks — PRO/ULTRA

madeonsol_delete_webhook

Delete a webhook by ID — PRO/ULTRA

madeonsol_test_webhook

Send a test payload to verify a webhook — PRO/ULTRA

General

Tool

Description

madeonsol_discovery

List all endpoints and prices (free, no auth)

madeonsol_me

Inspect your account — tier, daily/burst quota state, remaining requests, subscription expiry, per-feature usage (webhooks, copy-trade wallets, coordination rules, etc.). Self-throttle without parsing rate-limit headers.

Tiers

Tier

Price

Wallets tracked

Requests/day

BASIC (free)

$0

10

200

PRO

€43/mo (€430/yr) ≈ $49

50

10,000

ULTRA

€131/mo (€1310/yr) ≈ $149

100 + WS events

100,000

BUSINESS

€400/mo (€4000/yr) ≈ $449

500 + WS events

500,000

Free tier returns the full REST response shape on 40+ endpoints — real wallets, TX signatures, full precision — with live feeds delayed 5 minutes (delayed responses carry delay/as_of and an X-Data-Delay header). Paid tiers are real-time and unlock webhooks, WebSockets, rule engines, and ULTRA-only data depth; x402 pay-per-call is always real-time. Get a key at madeonsol.com/pricing.

Also Available

Platform

Package

TypeScript SDK

madeonsol on npm

Rust SDK

madeonsol on crates.io

Python (LangChain, CrewAI)

madeonsol-x402 on PyPI

ElizaOS

@madeonsol/plugin-madeonsol

Solana Agent Kit

solana-agent-kit-plugin-madeonsol

License

MIT

Available Tools

51 tools
madeonsol_alpha_leaderboardA
Read-onlyIdempotent

Top statistically profitable early-buyer wallets, scored from 47,000+ early-buyer records. BASIC=25 (truncated), PRO=100, ULTRA=500 + bot signals.

ParametersJSON Schema
NameRequiredDescriptionDefault
periodNoTime window30d
min_tokensNoMinimum tokens traded by wallet (1-20)
sortNoSort axiswin_rate
exclude_botsNoExclude wallets flagged as bots

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and idempotentHint. The description adds valuable behavioral context: results are truncated per tier (25/100/500) and ULTRA includes bot signals. This goes beyond annotations by disclosing data limitations and tier-dependent behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero waste. First sentence defines the tool, second explains tier limits. Information is front-loaded and efficiently packaged.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Although no output schema exists, the description explains the nature of the output (leaderboard of profitable wallets) and mentions tier-based data limitations. For a simple list-type tool, this is nearly complete; missing only explicit return fields.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with all parameters documented. The description adds no further meaning to parameters (sort, period, min_tokens, exclude_bots). Baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the tool returns 'Top statistically profitable early-buyer wallets' from a large dataset, clearly distinguishing it from sibling leaderboards that focus on KOLs or scouts. The verb 'scored' and mention of tier limits add specificity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies this tool is for analyzing early-buyer wallet profitability, but does not explicitly state when to use it over alternatives like 'madeonsol_kol_leaderboard' or 'madeonsol_scout_leaderboard'. No exclusions or context-aware guidance is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

madeonsol_alpha_linkedA
Read-onlyIdempotent

Wallets behaviorally linked to a target wallet (co-bought 3+ tokens within 2 seconds). ULTRA only.

ParametersJSON Schema
NameRequiredDescriptionDefault
walletYesWallet address (base58)

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnly, openWorld, idempotent, and non-destructive. The description adds behavioral detail (co-bought logic) and access restriction (ULTRA only), which goes beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single 11-word sentence that is front-loaded and compact. Every element earns its place, with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one parameter, no output schema, and comprehensive annotations, the description provides sufficient context: input, logic, and access level.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%; the description does not add new meaning to the wallet parameter beyond calling it a 'target wallet'. Baseline score applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it returns wallets behaviorally linked to a target wallet via a specific heuristic (co-bought 3+ tokens within 2 seconds). It distinguishes from sibling alpha tools like madeonsol_alpha_wallet by focusing on linkage.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use for finding linked wallets but does not explicitly state when not to use or mention alternatives. However, the sibling list provides context for differentiation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

madeonsol_alpha_walletA
Read-onlyIdempotent

Full alpha profile for one wallet — per-token breakdown + bot_signals array. ULTRA only.

ParametersJSON Schema
NameRequiredDescriptionDefault
walletYesWallet address (base58)

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and idempotentHint. Description adds that the output includes per-token breakdown and bot_signals, clarifying what the agent can expect. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise single sentence with no wasted words; front-loaded with core purpose, then specifics. Perfectly sized.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter read tool, the description is largely sufficient. However, 'ULTRA only' is ambiguous without context, and 'bot_signals array' could be explained further for clarity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with 'Wallet address (base58)' already described. Description doesn't add parameter meaning beyond what's in the schema, meeting the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it provides a 'Full alpha profile for one wallet' with specific components ('per-token breakdown + bot_signals array'). The 'ULTRA only' qualifier distinguishes it from other wallet tools, though 'alpha profile' could be more precise.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Only hints at usage with 'ULTRA only', implying a permission constraint, but provides no explicit guidance on when to use this versus sibling tools like wallet_stats or wallet_positions. No alternatives mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

madeonsol_coordination_alerts_createA

Create a coordination alert rule. Fires within ~1s when a KOL cluster meets thresholds (peak-density scored). Delivered via WebSocket (kol:coordination channel) and/or HMAC-signed webhook. Returns webhook_secret ONCE when delivery_mode includes 'webhook' — store it.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoOptional label
min_kolsNoMinimum distinct KOLs in the window (default 3)
window_minutesNoPeak-density window size in minutes (default 15)
min_scoreNoMinimum composite score 0-100 (default 60)
include_majorsNoInclude WIF/BONK/POPCAT etc. Default false.
cooldown_minNoSilence per (rule, token) in minutes (default 60)
score_jump_breakNoRe-fire early when score jumps by N points vs last fire (default 10)
delivery_modeNoWhere to deliver fires
webhook_urlNoRequired when delivery_mode includes 'webhook'

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds behavioral context beyond annotations: firing latency (~1s), delivery methods (WebSocket channel and HMAC-signed webhook), and the one-time return of webhook_secret. Annotations indicate write operation but non-destructive. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no wasted words, front-loading the purpose and adding essential behavioral details efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 9 parameters, no required ones, and no output schema, the description covers key aspects: creation, firing condition, delivery, and return value. Missing error cases but acceptable given output schema absence.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with all parameters described. The description adds context on overall behavior (peak-density scoring) but does not significantly enhance per-parameter meaning beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool creates a coordination alert rule, specifies firing condition (KOL cluster meets thresholds within ~1s), delivery methods (WebSocket and/or webhook), and return of webhook_secret. It distinguishes from sibling alert tools like price_alerts_create and coordination_alerts_update.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for setting up KOL coordination alerts with thresholds, but lacks explicit guidance on when to use this vs alternatives like price_alerts_create or first_touch_subscriptions_create. However, for a creation tool, the context is fairly clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

madeonsol_coordination_alerts_deleteA
DestructiveIdempotent

Delete a coordination alert rule permanently.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesRule UUID

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide destructiveHint=true and readOnlyHint=false. Description adds 'permanently' aligning with destructiveness but no further behavioral details. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Short single sentence, front-loaded. Every word earns its place, though 'permanently' is slightly redundant given annotations. Still concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a simple delete operation with one required parameter and no output schema. Description explains purpose and implies irreversibility. No missing critical information.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter 'id' fully described in schema as 'Rule UUID'. Description adds no extra meaning beyond confirming the parameter is required and identifies the rule.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it deletes a coordination alert rule permanently. It uses a specific verb and resource, and differentiates itself from siblings like create, get, list, update.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool vs alternatives like update or other delete tools. Context is implied by the tool name and sibling set, but description lacks explicit usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

madeonsol_coordination_alerts_getA
Read-onlyIdempotent

Get one coordination alert rule by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesRule UUID

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, clearly indicating safe, non-destructive, idempotent behavior. The description does not contradict these annotations but adds no further behavioral context beyond the 'by id' constraint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence of six words, highly concise and front-loaded with the core action. Every word is necessary and no extraneous information is present.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (one parameter, no output schema, rich annotations), the description provides sufficient context for an agent to understand the tool's behavior. It is complete for a straightforward get-by-id operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single parameter 'id,' which includes a description 'Rule UUID.' The tool description does not add additional meaning to this parameter beyond what the schema already provides, meeting the baseline for high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states 'Get one coordination alert rule by id,' which clearly identifies the verb and resource. It distinguishes from sibling tools like list (get all) and create/delete/update, as it specifies retrieval of a single rule by its unique identifier.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives such as listing all rules or searching. The description lacks context about prerequisites, fallback options, or scenarios where this tool is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

madeonsol_coordination_alerts_listA
Read-onlyIdempotent

List your coordination alert rules. PRO=5 rules, ULTRA=20.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, indicating a safe, non-destructive read operation. The description adds value by disclosing plan-specific rule limits (PRO=5, ULTRA=20), which is not in annotations. No contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: one sentence and a clause with no unnecessary words. Every part is necessary and immediate.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with no parameters and no output schema, the description provides the essential information: what it lists and plan limits. It is complete enough for an agent to use correctly, though it could optionally mention that it returns a list of rules.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters, and the input schema has 100% coverage. The description does not need to add parameter semantics. Baseline score of 4 applies as the description is adequate for a no-parameter tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists coordination alert rules, with the verb 'List' and resource 'coordination alert rules'. It also differentiates from siblings like create, delete, get, update by specifying the listing action and plan-specific limits (PRO=5, ULTRA=20).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly state when to use this tool versus alternatives like create or get. However, the context of the sibling tool names (e.g., _list, _create) implies that _list is for listing, but no when-not or alternative guidance is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

madeonsol_coordination_alerts_updateC

Update fields on a coordination alert rule, including is_active toggle.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesRule UUID
nameNo
min_kolsNo
window_minutesNo
min_scoreNo
include_majorsNo
cooldown_minNo
score_jump_breakNo
delivery_modeNo
webhook_urlNo
is_activeNo

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description does not disclose behavioral traits beyond the annotation's readOnlyHint=false, such as whether updates are partial or full replacement, or authentication requirements. The annotation provides minimal context, and the description adds little transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise (one sentence, 12 words) and front-loaded with verb and resource. However, it sacrifices necessary detail for brevity, making it less informative.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 11 parameters, no output schema, and sparse annotations, the description is incomplete. It does not explain return values, error cases, or how partial updates work, leaving significant gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With only 9% schema description coverage, the description adds very little meaning. It only mentions 'fields' and 'is_active toggle', leaving many parameters (e.g., min_kols, cooldown_min, delivery_mode) without explanation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Update' and the resource 'coordination alert rule', and mentions a specific field ('is_active toggle'). It effectively distinguishes from sibling tools like create, delete, get, and list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives (e.g., when to update vs. create or delete). There is no discussion of prerequisites, context, or when-not-to-use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

madeonsol_copytrade_createA

Create a copy-trade rule. Returns webhook_secret ONCE on creation when delivery_mode includes 'webhook' — store it to verify HMAC signatures. PRO=5 source_wallets/rule, ULTRA=50.

ParametersJSON Schema
NameRequiredDescriptionDefault
source_walletsYesWallets to mirror (base58)
sizing_amountYesAmount used by the chosen sizing_mode
nameNoOptional human label
min_trade_solNoMinimum source-wallet trade size to fire a signal
only_actionNoFilter to one side (default 'both')
sizing_modeNoHow sizing_amount is interpreted
delivery_modeNoWhere to deliver fired signals
webhook_urlNoRequired when delivery_mode includes 'webhook'

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses that webhook_secret is returned only once, which is critical for HMAC signatures. Annotations already indicate a write operation (readOnlyHint=false), so this adds meaningful context beyond annotations. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no wasted words. Front-loaded with purpose, followed by essential behavioral note and limits.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a create operation with 8 parameters and no output schema, the description covers purpose, return value caveat, and constraints. Missing error handling or activation details, but adequate overall.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds minimal parameter context beyond schema, mainly the limit on source wallets. Does not explain each parameter's meaning beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clear verb and resource ('Create a copy-trade rule'), with specific constraints on webhook secret and limits. Does not explicitly differentiate from sibling copy-trade tools (delete, update, etc.), but the verb is distinct enough.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies usage for creating rules, but no explicit guidance on when to use this versus alternatives like update or delete. No 'when not to use' or prerequisites mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

madeonsol_copytrade_deleteA
DestructiveIdempotent

Delete a copy-trade rule permanently.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSubscription id

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark destructiveHint=true and idempotentHint=true. Description adds 'permanently', confirming irreversibility, but provides no other behavioral traits like auth needs or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence with no extraneous information. Efficiently communicates the essential action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one parameter, no output schema, clear annotations), the description is complete enough. No further information is necessary for an agent to use it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema already describes the 'id' parameter as 'Subscription id'. The description does not add additional meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the action (delete) and resource (copy-trade rule), and adds 'permanently' to indicate irreversibility. It distinguishes from sibling tools like create, get, list, and update.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives. While it is obvious as the only delete tool, there are no conditions or prerequisites mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

madeonsol_copytrade_getA
Read-onlyIdempotent

Get one copy-trade rule by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSubscription id

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the tool as read-only, idempotent, and non-destructive. The description adds no additional behavioral context beyond what the annotations provide, which is adequate but not enhanced.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, focused sentence that conveys the essential purpose without any extraneous words. It is optimally concise and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-parameter retrieval tool with robust annotations, the description provides sufficient context. It could mention return value details, but the lack of an output schema does not detract significantly from completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a clear description for the only parameter ('id' is 'Subscription id'). The description adds no further clarification about the parameter's format or usage, so baseline score applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get') and the resource ('copy-trade rule') with a qualifier ('by id'). It effectively distinguishes this tool from siblings like 'list' or 'create'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like 'madeonsol_copytrade_list' or when not to use it. The usage context is implied but not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

madeonsol_copytrade_listB
Read-onlyIdempotent

List your copy-trade rules. PRO=3 rules, ULTRA=20 rules.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=true and idempotentHint=true. Description adds plan limit info (PRO=3, ULTRA=20) which is useful behavioral context, but does not disclose other traits like pagination or sorting.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise, single sentence with no wasted words. Front-loaded with action and resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and low complexity, the description is adequate but could be improved by mentioning the output format (e.g., returns an array of rules) or its relationship to plan limits.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters in the schema, so description adds no parameter semantics. Baseline of 4 for 0 parameters is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it lists copy-trade rules, using a specific verb and resource. The plan limit info adds context, but it does not explicitly differentiate from sibling tools like madeonsol_copytrade_get.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives like get, update, or create. The description merely states the function and plan limits without usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

madeonsol_copytrade_signalsA
Read-onlyIdempotent

Recent fired copy-trade signals (up to 7 days). Filter by subscription_id, since (ISO8601), and limit (1–500).

ParametersJSON Schema
NameRequiredDescriptionDefault
subscription_idNoFilter to one rule
sinceNoISO8601 timestamp — only signals fired at-or-after this time
limitNoMax signals to return (1–500)

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds context beyond annotations: 7-day window and filtering capability. Annotations already indicate read-only, idempotent, and safe behavior; description aligns and complements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, 18 words, front-loaded with core purpose. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, so description should detail return format. It mentions filters but not the structure of a signal object, leaving some incompleteness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline 3. Description restates parameters as filters without adding new semantic details beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states 'Recent fired copy-trade signals (up to 7 days)', specifying the resource (signals) and scope. Differentiates from sibling tools like copytrade_list and signal_performance.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implied usage via filters, but no explicit guidance on when to use vs alternatives like copytrade_list or signal_performance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

madeonsol_copytrade_updateC

Update fields on a copy-trade rule, including is_active toggle.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSubscription id
nameNo
source_walletsNo
min_trade_solNo
only_actionNo
sizing_modeNo
sizing_amountNo
delivery_modeNo
webhook_urlNo
is_activeNo

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate mutation (readOnlyHint=false) and non-destructiveness (destructiveHint=false). The description adds only 'update fields', with no details on side effects, partial vs full update behavior, or constraints. Minimal additional value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence, which is concise but insufficiently informative given the tool's complexity. It is front-loaded with the action, but brevity sacrifices necessary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 10 parameters, no output schema, and no explanation of return values or error states. Missing context about required fields, defaults, or relationships to siblings. The description is far from complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With only 10% schema description coverage, the description should compensate but only mentions 'is_active' as an example. The other 9 parameters (including enums like only_action, sizing_mode, delivery_mode) are left unexplained. The description adds little meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'update' and the resource 'copy-trade rule', with an example field 'is_active toggle'. Among siblings like madeonsol_copytrade_create, get, list, this tool is unambiguously the update variant.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives, prerequisites (e.g., requires an existing rule ID), or when not to use it. The description is silent on usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

madeonsol_create_webhookA

Register a webhook URL to receive real-time push notifications for KOL trades and deployer alerts. Requires Pro/Ultra subscription.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesHTTPS webhook URL to receive events
eventsYesEvent types to subscribe to
min_solNoOptional: minimum SOL amount filter (for kol:trade)
actionNoOptional: filter by buy or sell only
deployer_tierNoOptional: filter by deployer tiers, e.g. ['elite', 'good']

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate the tool is not read-only, not destructive, open-world, and not idempotent. The description adds the subscription requirement but does not disclose other behavioral traits like side effects (e.g., external endpoint activation), idempotency behavior on duplicate URLs, or authentication details. It does not contradict annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: two sentences that front-load the purpose and requirement. Every word adds value with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a creation tool with 5 parameters and no output schema, the description covers the basic purpose and prerequisite but lacks details on return values, error handling, or validation. With no output schema, the agent would benefit from knowing what response to expect.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the description does not need to repeat parameter details. It provides no additional meaning beyond the schema descriptions. The baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (Register a webhook URL), the resource (webhook URL), and the purpose (receive real-time push notifications for KOL trades and deployer alerts). It distinguishes from sibling tools like list_webhooks or delete_webhook by specifying the creation action and event types.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions the Pro/Ultra subscription requirement but provides no guidance on when to use this tool vs alternatives like coordination_alerts_create or other webhook tools. There is no explicit when-to-use or when-not-to-use information.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

madeonsol_delete_webhookB
DestructiveIdempotent

Delete a webhook by ID. Permanently removes the webhook and its delivery history.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesWebhook ID to delete

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and readOnlyHint=false. Description adds minimal value by stating permanence, but lacks additional behavioral details (e.g., auth requirements, irreversibility beyond what annotations imply).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loaded with purpose, no superfluous words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a simple tool with one parameter and no output schema. Mentions permanence, but could be slightly more explicit about irreversibility.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with param 'id' described as 'Webhook ID to delete'. Description aligns but adds no new semantics. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the action ('Delete a webhook by ID') and consequences ('Permanently removes the webhook and its delivery history'). Distinct from sibling tools like create, test, list, though sibling differentiation is not explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives (e.g., other delete tools like coordination_alerts_delete, price_alerts_delete). No prerequisites or conditions mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

madeonsol_deployer_alertsA
Read-onlyIdempotent

Get real-time alerts from Pump.fun deployers with KOL buy enrichment. Filters: deployer tier, alert_type, priority, and min_kol_buys to gate out noise. Cursor-paginated via 'before' (preferred over 'offset' at scale).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of deployer alerts to return (1-100)
offsetNoLegacy offset pagination (prefer 'before' for polling)
beforeNoCursor — ISO 8601 timestamp; returns alerts strictly older than this. Pass next_before from the previous response.
sinceNoOnly alerts after this ISO 8601 timestamp.
tierNoFilter by deployer tier. PRO/ULTRA only — BASIC callers receive HTTP 403.
alert_typeNoFilter by alert_type (e.g. 'new_deploy', 'bonded').
priorityNoFilter by alert priority.
min_kol_buysNoOnly alerts where at least N KOLs bought the token (1-100).

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false. The description adds value by specifying it's real-time with KOL enrichment, and that 'before' cursor is preferred for pagination at scale. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences: first states purpose and enrichment, second lists filters and pagination. Every sentence is informative with no fluff. Front-loaded with main action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

While the description covers core functionality, it lacks details on the output structure (e.g., which fields each alert contains, KOL enrichment specifics). Since no output schema is provided, the agent might need to infer response format. For a tool with real-time enrichment, more output context is beneficial.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has 100% documented parameters. The description reinforces key filter meanings (noise gating) and highlights the tier access restriction, adding context beyond schema descriptions. It also explains pagination preference, which is not in schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it retrieves real-time deployer alerts with KOL buy enrichment, listing specific filters and pagination method. The sibling list includes many alert tools, but this one is uniquely focused on deployers with KOL enrichment, providing clear differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides filter tips and recommends cursor pagination over offset, but does not explicitly state when to use this tool versus alternatives like coordination alerts or KOL feed. No when-not or direct sibling differentiation is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

madeonsol_deployer_trajectoryA
Read-onlyIdempotent

Deployer skill curve — streaks, rolling bond rate, improvement trend, and deployment cadence for a Pump.fun deployer.

ParametersJSON Schema
NameRequiredDescriptionDefault
walletYesDeployer wallet address (base58)

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations (readOnlyHint, idempotentHint, etc.) already declare it safe and non-destructive. The description adds context about the specific metrics returned (streaks, bond rate, etc.), which is valuable beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single succinct sentence that front-loads key terms. No fluff or redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only analytics tool with one parameter and no output schema, the description adequately explains what the tool returns. No additional information is necessary given the simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter 'wallet' has a clear description in the schema ('Deployer wallet address (base58)'). Schema description coverage is 100%, so the description does not need to add more. Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool returns a deployer's skill curve including streaks, rolling bond rate, improvement trend, and deployment cadence. It uses specific terms that differentiate it from sibling tools like madeonsol_deployer_alerts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for analyzing a deployer's performance over time, but does not explicitly state when to use this tool versus alternatives like madeonsol_deployer_alerts or other deployer-related tools. No exclusions or when-not-to-use guidance is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

madeonsol_discoveryA
Read-onlyIdempotent

List all available MadeOnSol API endpoints with prices and parameter docs. Free, no auth required.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint, destructiveHint, idempotentHint. Description adds 'Free, no auth required' and implies a list return, going beyond annotations to detail cost and authentication needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, highly efficient, no extraneous information. Every part earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters and no output schema, the description adequately describes what the tool returns (list of endpoints with prices and docs). Sufficient for agent understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters; input schema is empty. Per guidelines, 0 parameters yields baseline 4. Description adds no extra parameter info as none is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'List all available MadeOnSol API endpoints with prices and parameter docs,' specifying the verb 'List' and resource 'available MadeOnSol API endpoints'. This distinguishes it from sibling tools that perform specific operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Includes 'Free, no auth required,' providing clear context on when to use. Does not explicitly state when not to use or list alternatives, but the broad discovery nature is evident.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

madeonsol_first_touch_subscriptions_createA

Create a first-touch webhook subscription. ULTRA only — up to 10 active. Filters: kol (wallet), mint_suffix, min_first_buy_sol, min_scout_tier (S/A/B/C), min_n_touches. Returns webhook_secret ONCE — store it.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoOptional label
filtersNo
delivery_modeNoDefault 'webhook'
webhook_urlNoRequired when delivery_mode includes 'webhook'

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Explicitly states 'Returns webhook_secret ONCE — store it', a critical one-time behavior. Annotations (readOnlyHint=false) are consistent but the description adds essential behavioral detail beyond the structured annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three concise sentences: purpose, constraints/filters, return value. Front-loaded and efficient with no unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a creation tool with no output schema, the description covers parameters, constraints, and the secret's one-time nature. Could mention error implications but sufficient for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 75% but the description enumerates all filter parameters, compensating for missing schema descriptions. It adds practical meaning beyond the structured input.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Create a first-touch webhook subscription' and lists specific filters. It distinguishes from sibling tools like delete, get, list, and update.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

States 'ULTRA only — up to 10 active', providing clear constraints and context for when to use. Although it doesn't explicitly list alternatives, the limitation is well communicated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

madeonsol_first_touch_subscriptions_deleteA
DestructiveIdempotent

Delete a first-touch subscription permanently. ULTRA only.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSubscription UUID

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructiveHint=true and idempotentHint=true. The description adds 'permanently' which confirms irreversibility, but this does not add substantial new behavioral context beyond the annotations. It does not mention error handling, return values, or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with two short sentences. It front-loads the purpose and adds a restriction. No fluff or redundant information; every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive operation with no output schema, the description is too minimal. It omits critical context such as success confirmation, failure modes (e.g., subscription not found), or any undo capability. The agent may not know what to expect after invoking the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with the parameter 'id' described as 'Subscription UUID'. The description does not add any additional meaning or constraints beyond the schema, so it provides no extra value. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Delete'), the resource ('first-touch subscription'), and the effect ('permanently'). It also specifies a restriction ('ULTRA only'), distinguishing it from sibling tools like create, get, list, and update. The verb and target are unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides implicit context with 'ULTRA only' but does not explicitly state when to use this tool versus alternatives (e.g., update). No guidance on prerequisites or conditions for deletion is given. It fails to help the agent decide between deleting and other actions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

madeonsol_first_touch_subscriptions_getA
Read-onlyIdempotent

Get one first-touch subscription by id. ULTRA only.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSubscription UUID

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the ULTRA access constraint, which is a behavioral context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise, using two sentences to convey the core action and a usage constraint. No unnecessary words, and the purpose is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple get-by-id tool with one parameter and strong annotations, the description is nearly complete. It covers the action and the ULTRA requirement. Lacking details about response format is acceptable given no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the schema describes the 'id' parameter as 'Subscription UUID'. The description merely says 'by id', adding no further meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action 'Get one first-touch subscription by id', using a specific verb and resource. It distinguishes itself from sibling tools like 'list' and 'delete' by specifying retrieval of a single item by identifier.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides context by stating 'ULTRA only', indicating the tool's restricted audience. It implies use when a specific subscription ID is known, but does not explicitly contrast with alternative tools like 'list'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

madeonsol_first_touch_subscriptions_listA
Read-onlyIdempotent

List your first-touch webhook subscriptions. ULTRA only.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds the 'ULTRA only' access constraint, which is a behavioral trait not covered by annotations. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very short but includes action, resource, scope, and a requirement. It's efficient, though 'first-touch' may be unclear without context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description doesn't hint at what the response contains (e.g., list of subscription objects). Annotations are good, but the missing return structure limits completeness. Adequate but not thorough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, so the description need not add parameter details. The schema coverage is 100% (empty). Baseline 4 is appropriate for zero parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it lists first-touch webhook subscriptions and mentions 'ULTRA only' for plan context. However, it doesn't explain what 'first-touch' means or distinguish it from similar list tools like general webhook lists.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives (e.g., madeonsol_list_webhooks or subscription CRUD siblings). Only 'ULTRA only' hints at access restriction, but no context for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

madeonsol_first_touch_subscriptions_updateC

Update fields on a first-touch subscription, including is_active toggle. ULTRA only.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSubscription UUID
nameNo
filtersNo
delivery_modeNo
webhook_urlNo
is_activeNo

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate the tool is not read-only and not destructive, consistent with 'Update'. However, the description does not disclose potential side effects, such as whether updating is_active triggers notifications or other actions. The openWorldHint suggests possible side effects, but the description fails to elaborate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, making it concise and front-loaded, but it omits important details like a list of updatable fields or behavioral notes. It achieves conciseness at the expense of completeness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the input schema's complexity (nested filters object, six parameters) and lack of output schema, the description is too sparse. It does not explain return values, validation rules, or the effect of parameters like webhook_url or delivery_mode. The tool requires more context for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With only 17% schema description coverage, the description adds minimal value by highlighting the 'is_active' toggle. The other five parameters (name, filters, webhook_url, delivery_mode) remain undocumented in both schema and description, leaving the agent uncertain about their purpose and format.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Update fields') and the resource ('first-touch subscription'), and it distinguishes from sibling tools like create, delete, get, and list. It also specifies the 'is_active' toggle and an access restriction ('ULTRA only'), but could be more explicit about the full scope of updatable fields.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It mentions 'ULTRA only' as an access constraint but does not explain prerequisites, typical use cases, or scenarios where another tool (e.g., create or delete) would be more appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

madeonsol_kol_alerts_recentA
Read-onlyIdempotent

Live KOL alert feed — consensus clusters, fresh-token KOL buys, and heating-up wallets in one unified stream.

ParametersJSON Schema
NameRequiredDescriptionDefault
windowNoLookback window15m
typesNoFilter to specific alert types
min_severityNoMinimum severity to include
limitNoMax alerts to return

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations (readOnlyHint, openWorldHint, idempotentHint, destructiveHint) already declare safe, read-only behavior. The description adds no further behavioral traits (e.g., ordering, freshness guarantees, rate limits), so it does not exceed what annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence (18 words) that front-loads the core purpose. Every word earns its place with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 4-parameter tool with 100% schema coverage and no output schema, the description adequately conveys the nature (live feed, alert types) but could be more explicit about ordering or time range constraints. Annotations are rich, lowering the burden.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and parameter descriptions (limit, types, window, min_severity) are already clear with enums. The description does not add new meaning beyond listing the alert types, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool is a 'Live KOL alert feed' and lists three specific alert types (consensus clusters, fresh-token KOL buys, heating-up wallets), distinguishing it from sibling tools like madeonsol_kol_feed or madeonsol_kol_consensus.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. With many sibling tools (e.g., madeonsol_kol_feed, madeonsol_kol_consensus), explicit context or when-not-to-use guidance is missing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

madeonsol_kol_compare_walletsA
Read-onlyIdempotent

Side-by-side comparison of 2-5 KOL wallets — strategy, winrates, ROI, percentile. PRO+ adds 30d overlap tokens (bought by 2+ of the wallets).

ParametersJSON Schema
NameRequiredDescriptionDefault
walletsYes2-5 wallet addresses. BASIC=2, PRO=4, ULTRA=5.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the agent knows it's a safe read operation. The description adds the context of side-by-side comparison and tier-dependent overlap tokens, but does not disclose any additional behavioral traits (e.g., response size, auth requirements, or rate limits). Given annotations carry the safety burden, a score of 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise—two sentences—with no extraneous words. The first sentence states the core function and metrics; the second adds the tier-specific feature. Information is front-loaded and easily scannable. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the purpose, metric types, and tier-based feature. However, it lacks details about the output format (e.g., is it a table, JSON, or plain text?) and does not mention any prerequisites for using the PRO+ overlap feature. Given the annotations already provide safety context, the description is nearly complete but could be slightly richer.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The only parameter, wallets, is described in the schema with min/max items and a brief description. The tool description adds clarity by mapping wallet counts to tiers (BASIC=2, PRO=4, ULTRA=5) and mentioning the PRO+ add-on feature. This adds meaningful context beyond the schema, compensating for the lack of parameter details elsewhere.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool does side-by-side comparison of 2-5 KOL wallets, listing metrics like strategy, winrates, ROI, percentile. The name 'compare_wallets' reinforces this purpose. Among many KOL sibling tools (e.g., kol_consensus, kol_leaderboard), it uniquely focuses on comparison, though it could better differentiate itself.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives like madeonsol_kol_consensus or madeonsol_kol_leaderboard. It mentions tier-specific features (BASIC, PRO, ULTRA) but does not direct the agent toward or away from this tool. The agent must infer usage from the description alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

madeonsol_kol_coordinationA
Read-onlyIdempotent

KOL convergence signals (v1.2) — tokens being accumulated by multiple KOLs. Response includes peak_kols/peak_buys (busiest window slice), exited_count (net-flow-negative wallets), 0-100 coordination_score, and (v1.2 / 2026-05-06) market_cap_usd_at_first_buy + market_cap_usd + last_price_usd so you can see whether the cluster formed at micro-cap or after the chart was already running. Blacklist filters WIF/BONK/stables by default.

ParametersJSON Schema
NameRequiredDescriptionDefault
periodNoTime period for coordination analysis24h
min_kolsNoMinimum number of KOLs converging on the same token
limitNoNumber of coordination signals to return
min_avg_winrateNoPRO+: require cluster avg winrate_7d >= N (0-100)
unique_strategiesNoPRO+: require >= N distinct strategies in cluster
include_majorsNov1.1: include major memecoins (WIF/BONK/POPCAT). Default false.
window_minutesNov1.1: peak-density window (1-60). Default 15.
min_scoreNov1.1: minimum composite coordination_score (0-100).

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint as true/true/true/false, so the safety profile is clear. The description adds behavioral context beyond annotations, such as the response fields (peak_kols, exited_count, coordination_score), blacklisting behavior, and version details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is moderately long but efficient, front-loading the main purpose and version, then detailing response fields and blacklisting. It is well-structured and avoids redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description explains key response fields (peak_kols, exited_count, coordination_score, market_cap fields) adequately. It covers the blacklist default and version, but could be more exhaustive given the complexity of the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so each parameter already has a description. The main description does not add significant meaning to the parameters themselves, though it mentions response fields that depend on parameters like min_kols and min_score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool provides 'KOL convergence signals (v1.2) — tokens being accumulated by multiple KOLs.' It lists specific response fields and distinguishes from other KOL tools by its focus on coordination signals.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly guide when to use this tool versus alternatives, nor does it state when not to use it. While the purpose is clear, no exclusionary or comparative guidance is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

madeonsol_kol_feedA
Read-onlyIdempotent

Get real-time Solana KOL trades from 1,000+ tracked wallets. Each trade includes the token's market cap (USD) at the moment of trade — sourced from our in-memory price tracker, accurate to the millisecond, faster than Dexscreener spot. PRO+ adds size/age/strategy/winrate filters.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of trades to return (1-100)
beforeNoCursor — ISO 8601 timestamp; returns trades strictly older than this. Pass next_before from the previous response for polling.
actionNoFilter by trade type: buy or sell
kolNoFilter by specific KOL wallet address (base58)
min_solNoPRO+: minimum SOL size per trade
token_age_max_minNoPRO+: max token age in minutes at time of trade
exclude_sellsNoPRO+: drop sell-side trades
min_kol_winrateNoPRO+: minimum 7d winrate of the KOL (0-100)
strategyNoPRO+: filter by auto-tagged strategy

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds behavioral context: real-time nature, data source (in-memory price tracker), speed comparison, and PRO+ filter limitations. This adds value beyond annotations without contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two well-structured sentences: first states core purpose and output details, second highlights PRO+ tiers and filters. No redundant information. Every sentence adds value and is front-loaded with essential info.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so description must explain return values. It mentions each trade includes token's market cap but not other fields. Given 9 parameters and complexity, the description covers the key output aspect but could list more fields. Adequate but not exhaustive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for all 9 parameters. The description groups PRO+ parameters (min_sol, strategy, exclude_sells, min_kol_winrate, token_age_max_min) under 'size/age/strategy/winrate filters', adding meaningful context about tier restrictions. This enhances understanding beyond individual parameter descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it retrieves real-time Solana KOL trades from 1,000+ tracked wallets. The verb 'Get' and resource 'trades' are specific. However, it does not explicitly differentiate from sibling tools like kol_alerts_recent or kol_leaderboard, which might have overlapping purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. The description mentions PRO+ features but does not specify exclusions or contexts where other tools might be preferred. The user is left to infer use cases from the tool name and context signals.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

madeonsol_kol_first_touchesA
Read-onlyIdempotent

Recent first-KOL-touch events — every time a tracked KOL was the first to buy a token mint. Filterable by scout tier (S/A/B/C from mv_kol_scout_score), KOL winrate, token age, etc. Backtest: top scouts attract ≥3 follow-on KOLs within 4h ~50% of the time vs ~14% baseline. Median lead time before second KOL is 12s — for trading this signal, use the WebSocket channel rather than polling.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of events to return (1-100, default 50)
sinceNoISO timestamp — events strictly newer than this. Polling cursor.
beforeNoISO timestamp — events strictly older than this. Pagination cursor.
kolNoFilter to a single KOL wallet address (base58)
min_kol_winrate_7dNoMinimum 7d winrate of the first-touch KOL (0-100)
min_scout_tierNoRestrict to first-touch KOLs of this scout tier or better. Requires n_first_touches_30d >= 30.
min_n_touchesNoLower the minimum sample size for scout scoring (default 30)
strategyNoFilter by first-touch KOL's auto-tagged strategy
token_age_max_minNoOnly events on tokens younger than N minutes (uses token_first_seen)
min_first_buy_solNoMinimum size of the first KOL buy in SOL
mint_suffixNoSuffix-filter the token mint (e.g. 'pump', 'bonk')
presetNoShortcut filter: 'scout' = min_scout_tier=B + min_n_touches=30 + token_age_max_min=60. 'fresh_launch' = token_age_max_min=15.
includeNoComma-separated includes — currently 'followers_4h' (computed for events >=4h old)

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, providing strong behavioral transparency. The description adds context like backtest stats and a WebSocket recommendation, but doesn't reveal additional behavioral traits beyond what annotations cover.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is front-loaded with purpose and is well-structured. The backtest statistics add value but are slightly lengthy; however, every sentence contributes to understanding. Overall concise for the information provided.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 13 parameters and no output schema, the description covers purpose, filters, and usage guidance but does not describe the return fields or event structure. This leaves the agent somewhat uncertain about output format, making it less complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the description does not add new meaning beyond the input schema. It summarizes filter options but does not clarify parameter usage beyond what the schema already provides. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description starts with 'Recent first-KOL-touch events — every time a tracked KOL was the first to buy a token mint', providing a clear verb+resource. It distinguishes from siblings like madeonsol_kol_feed and madeonsol_kol_consensus by focusing on first touches and includes filterable criteria.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Description includes backtest statistics and explicitly recommends using WebSocket for trading signals, guiding the agent on when to use this tool for historical analysis versus real-time alternatives. However, it does not explicitly state when not to use the tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

madeonsol_kol_hot_tokensA
Read-onlyIdempotent

KOL momentum tokens — tokens with accelerating KOL buy interest, early signals before coordination triggers. PRO+ adds buyer-quality filters.

ParametersJSON Schema
NameRequiredDescriptionDefault
periodNoTime period: 1h or 6h6h
min_kolsNoMinimum KOL buyers to include a token
limitNoNumber of hot tokens to return
min_avg_winrateNoPRO+: require avg winrate_7d of buyers >= N (0-100)
unique_strategiesNoPRO+: require >= N distinct strategies among buyers

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the tool as read-only, idempotent, and non-destructive. The description adds minimal behavioral context beyond the concept of 'accelerating interest', which is more about purpose than specific behaviors like rate limits or pagination.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise, with two short, meaningful sentences. Every word adds value, no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

While the description provides a high-level concept and parameter hints, it lacks details about return values, ordering, or pagination. Given the absence of an output schema, the description could be more complete, but it is adequate for a simple listing tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description mentions 'PRO+ adds buyer-quality filters', which maps to two parameters (min_avg_winrate and unique_strategies), adding slight context but not significantly enhancing the schema's own descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool as returning tokens with accelerating KOL buy interest, positioning it as an early signal tool distinct from other KOL tools like trending tokens or leaderboard. It uses specific language ('momentum tokens') and implies a unique value proposition.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for early detection before coordination triggers, but does not explicitly state when to use this versus sibling tools or when to avoid it. No alternatives or exclusion criteria are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

madeonsol_kol_leaderboardA
Read-onlyIdempotent

Get KOL performance rankings by PnL and win rate. PRO+ can sort by alternative axes (winrate/roi/profit_factor/early_entry).

ParametersJSON Schema
NameRequiredDescriptionDefault
periodNoTime period (trade retention is 180d)7d
limitNoNumber of KOLs to return in ranking
sortNoPRO+: sort axis (default 'pnl')
strategyNoPRO+: filter by strategy tag
min_winrateNoPRO+: minimum winrate cutoff (0-100)

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate read-only, idempotent, and non-destructive behavior. The description adds the context that sorting by alternative axes (winrate, roi, etc.) requires a PRO+ subscription, which is a useful behavioral trait. However, it does not detail other aspects like data freshness or pagination behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description consists of two concise sentences that front-load the primary purpose and quickly convey additional functionality (PRO+ sorting). No redundant or irrelevant information is present.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple leaderboard query, the description covers the main functionality. However, with no output schema, it does not specify the structure of returned results (e.g., fields like KOL name, PnL, win rate). While the name implies a ranking list, the absence of output details slightly reduces completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers all parameters with descriptions, achieving 100% coverage. The description supplements by clarifying that the default sort is by PnL/win rate and that alternative sort axes are PRO+-only, providing meaning beyond the schema's enum list. This adds value for parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns KOL performance rankings by PnL and win rate, with a specific verb 'Get'. The name 'kol_leaderboard' further distinguishes it from sibling leaderboards like alpha_leaderboard or scout_leaderboard, making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives such as madeonsol_alpha_leaderboard or madeonsol_scout_leaderboard. There is no mention of prerequisites, context, or exclusions, leaving the agent to infer usage from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

madeonsol_kol_pairsB
Read-onlyIdempotent

KOL affinity matrix — discover which KOLs frequently co-trade the same tokens within a time window.

ParametersJSON Schema
NameRequiredDescriptionDefault
periodNoTime period: 7d or 30d7d
min_sharedNoMinimum number of shared tokens to qualify as a pair
limitNoNumber of KOL pairs to return

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint as false, which covers safety and idempotency. The description adds that the tool returns an 'affinity matrix' based on co-trading, but it does not detail how affinity is calculated, pagination behavior, or output structure. With annotations present, the description provides moderate added value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that conveys the core purpose efficiently. It is front-loaded with the key concept 'KOL affinity matrix.' However, it could be slightly more structured to include output hints or usage notes, but it is not overly verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description should hint at the return structure; it mentions 'affinity matrix' but doesn't specify fields like pair identifiers, score, or token counts. Given the tool's moderate complexity (3 optional parameters, no required ones) and rich annotations, the description is somewhat incomplete regarding output.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All three parameters (limit, period, min_shared) have descriptions in the input schema, achieving 100% coverage. The description mentions 'time window' which aligns with the period parameter, but does not add new meaning beyond what the schema already provides. Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'KOL affinity matrix — discover which KOLs frequently co-trade the same tokens within a time window.' It uses a specific verb (discover) and resource (KOL pairs based on co-trading), distinguishing it from sibling tools like madeonsol_kol_leaderboard or madeonsol_kol_feed.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not provide any guidance on when to use this tool versus other KOL-related siblings (e.g., madeonsol_kol_consensus, madeonsol_kol_coordination). There is no explicit context or exclusion criteria, leaving the agent to infer when this is the appropriate choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

madeonsol_kol_pnlA
Read-onlyIdempotent

Deep per-wallet PnL breakdown — realized PnL, win rate, profit factor, max drawdown, daily equity curve, closed/open positions. BASIC: summary only. PRO: + curve + closed. ULTRA: + open positions.

ParametersJSON Schema
NameRequiredDescriptionDefault
walletYesKOL wallet address (base58)
periodNoTime period for PnL calculation30d

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false, so the description is not needed for safety traits. The description adds tier behavior (BASIC/PRO/ULTRA) and lists metrics, but does not disclose additional behavioral context like rate limits or data freshness. It is adequate but not extensive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is one sentence with a clear list of metrics and tier breakdown. It is concise and front-loaded with the purpose. However, the tier notation (— and : ) slightly clutters readability, and the list could be more structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description lists specific metrics but does not explain the output format (e.g., object structure, array), leaving ambiguity for the agent. The tier info helps but completeness is moderate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for both 'wallet' and 'period' parameters. The description does not add new semantic information beyond the schema, thus baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool provides 'Deep per-wallet PnL breakdown' with specific metrics (realized PnL, win rate, profit factor, max drawdown, daily equity curve, closed/open positions). It distinguishes from siblings by specifying 'KOL wallet' and tier system (BASIC, PRO, ULTRA), making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use for detailed PnL analysis of a KOL wallet but does not provide explicit guidance on when to use this tool versus alternatives like madeonsol_wallet_pnl or other sibling tools. The tier system is mentioned but lacks comparative context for when to choose each tier.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

madeonsol_kol_timingA
Read-onlyIdempotent

KOL entry/exit timing profile — hold duration, exit speed, and activity patterns for a specific KOL.

ParametersJSON Schema
NameRequiredDescriptionDefault
walletYesKOL wallet address (base58)
periodNoTime period: 7d or 30d30d

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the tool as read-only, open-world, idempotent, and non-destructive. The description adds that it provides hold duration, exit speed, and activity patterns, which is consistent and adds minimal extra behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that front-loads the core purpose and key outputs. No redundant or extraneous content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 2 parameters and no output schema, the description explains the output concept (hold duration, exit speed, activity patterns), but could provide more detail on the output format given its absence in the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the description does not add new meaning beyond what the schema already provides for the wallet and period parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool provides a KOL timing profile including hold duration, exit speed, and activity patterns. It distinguishes the tool from siblings like madeonsol_kol_consensus or madeonsol_kol_pnl by focusing specifically on timing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for obtaining timing profiles of a specific KOL, but does not provide explicit guidance on when to use this tool over alternatives, nor does it mention exclusions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

madeonsol_kol_token_entry_orderA
Read-onlyIdempotent

Ranked KOL first-buyers for a specific token, ordered by entry timestamp. PRO+ adds percentile_pnl_7d per entry.

ParametersJSON Schema
NameRequiredDescriptionDefault
mintYesToken mint address (base58)
limitNoMax ranked entries to return

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds value by specifying ranking, ordering, and the PRO+ addition of percentile_pnl_7d, which annotations do not cover. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences front-load the main purpose and then mention the PRO+ feature. No superfluous text, every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description must convey return structure. It mentions 'entry timestamp' and 'percentile_pnl_7d per entry', but leaves out other possible fields (e.g., rank, KOL identity). Could be more complete for a ranked list output.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers both parameters (mint and limit) with descriptions. The description does not add new semantic meaning beyond the schema, such as format or constraints, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it returns ranked KOL first-buyers for a specific token ordered by entry timestamp. The name and description differentiate it from sibling KOL tools like madeonsol_kol_first_touches, but no explicit differentiation is provided.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. The description implies it's for viewing first-buyers, but no exclusions or context for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

madeonsol_list_webhooksA
Read-onlyIdempotent

List all your registered webhooks with delivery status and failure counts.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and idempotentHint, so the description adds only the output fields (delivery status, failure counts). This is adequate but not extensive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no unnecessary words, conveying all essential information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

While there is no output schema, the description mentions key output fields (delivery status, failure counts) and annotations cover behavioral aspects. It lacks mention of pagination or response format, but is mostly complete for a simple list operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has no parameters, so schema coverage is 100%. The description does not need to explain parameters, and the baseline is 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists all registered webhooks with delivery status and failure counts, using a specific verb and resource, and distinguishes from sibling tools that create, delete, or test webhooks.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use (to view registered webhooks) but does not explicitly state when not to use or mention alternatives. However, the context of sibling tools makes the usage clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

madeonsol_meA
Read-onlyIdempotent

Inspect your MadeOnSol API account — current tier, daily/burst quota state, remaining requests, subscription expiry, and per-feature usage (webhooks, copy-trade wallets, coordination rules, etc.). Use to self-throttle without parsing rate-limit headers.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=False. The description adds behavioral details about the return fields (quota, expiry, per-feature usage), enhancing transparency beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no wasted words. Front-loaded with main verb and resource, then succinctly lists data and use case.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-parameter, no-output-schema read tool, the description fully covers what it does and why to use it. Annotations further assure safe behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, so schema coverage is 100%. The description doesn't need to explain parameters but adds value by detailing return values, which is appropriate for a parameterless tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Inspect' and the resource 'your MadeOnSol API account', listing specific data returned (tier, quota, remaining requests, etc.). It differentiates from sibling tools by being the only account inspection tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit use case 'self-throttle without parsing rate-limit headers', but does not mention when not to use or alternatives. Still, it gives clear context for when it is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

madeonsol_stream_tokenA

Generate a 24h WebSocket streaming token. Includes ws_url for KOL/deployer streaming (Pro/Ultra) and dex_ws_url for all-DEX trade streaming (Ultra only).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide readOnlyHint=false, openWorldHint=true, idempotentHint=false, destructiveHint=false. The description adds behavioral context: the token is valid for 24 hours and which stream types are available. It does not contradict annotations. Additional details like rate limits or authentication are omitted, but the description complements the annotations adequately.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long, front-loads the key purpose ('Generate a 24h WebSocket streaming token'), and efficiently details the two output URLs and their plan requirements. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given zero parameters and the absence of an output schema, the description covers the core functionality and output fields. It could mention authentication or token usage, but for this complexity level it is sufficiently complete to guide an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters with 100% schema coverage. Per rules, baseline is 4. The description does not need to explain parameters, and it adds no parameter-specific info, which is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it generates a 24h WebSocket streaming token, distinguishing between ws_url for KOL/deployer streaming (Pro/Ultra) and dex_ws_url for all-DEX trade streaming (Ultra only). This specific verb-resource combination and scope differentiate it from sibling tools like madeonsol_stream_session_kill or madeonsol_stream_sessions_list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly indicates when to use the tool (for generating a streaming token) and includes tier prerequisites (Pro/Ultra and Ultra only). However, it does not explicitly state alternatives or when not to use it, but given zero parameters, usage context is sufficiently clear without exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

madeonsol_test_webhookA
Read-onlyIdempotent

Send a sample event payload to a webhook URL to verify it works. Returns status code and response time.

ParametersJSON Schema
NameRequiredDescriptionDefault
webhook_idYesID of the webhook to test

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations (readOnlyHint, destructiveHint) already indicate safety, and the description adds context about the test action and return values (status code, response time). No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences communicate purpose and return value without any wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter tool with no output schema, the description covers purpose and return value. Could mention error handling (e.g., invalid webhook_id) but not required for basic completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema coverage for webhook_id, the description adds no further semantic meaning beyond the schema's description ('ID of the webhook to test'). Baseline score applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly specifies the verb ('send a sample event payload') and the resource ('webhook URL'), distinguishing it from sibling webhook tools like create_webhook, delete_webhook, and list_webhooks.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies using this tool to test a webhook, but it lacks explicit guidance on prerequisites (e.g., webhook must exist) or when not to use it compared to alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

madeonsol_token_batchA
Read-onlyIdempotent

Bulk lookup of up to 50 mints in one request. Returns the same per-mint shape as madeonsol_token_get. DB queries batched with IN(...); dex-stream + RPC fan-outs run in parallel. ~10-20× cheaper than N sequential calls — ideal for sniper pipelines scoring many tokens at once.

ParametersJSON Schema
NameRequiredDescriptionDefault
mintsYes1–50 base58 Solana token mints

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false. The description adds valuable behavioral details: 'DB queries batched with IN(...); dex-stream + RPC fan-outs run in parallel.' This explains the internal execution mechanism, which goes beyond the annotations. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with three sentences. It front-loads the core purpose in the first sentence, adds technical details in the second, and provides usage guidance with a cost comparison in the third. Every sentence is valuable and there is no redundancy or unnecessary information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that there is no output schema, the description adequately explains the return shape: 'Returns the same per-mint shape as madeonsol_token_get.' It also covers input constraints, internal behavior, and performance characteristics. For a batch lookup tool with simple input, this is complete and leaves no major questions unanswered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the single parameter 'mints', which has a clear description in the schema: '1–50 base58 Solana token mints.' The tool description does not add additional semantic meaning to this parameter beyond what the schema provides. Since schema coverage is high, a baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Bulk lookup of up to 50 mints in one request.' It specifies the action (lookup), resource (mints), and constraint (up to 50). It also distinguishes from the sibling tool madeonsol_token_get by stating 'Returns the same per-mint shape as madeonsol_token_get.' This provides clear differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use this tool: 'Ideal for sniper pipelines scoring many tokens at once.' It also highlights the performance benefit: '~10-20× cheaper than N sequential calls.' While it doesn't explicitly state when not to use it (e.g., for single mint lookups), the comparison to the single-mint sibling implies the appropriate context. This is clear but could be more explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

madeonsol_token_buyer_qualityA
Read-onlyIdempotent

0–100 buyer-quality score for a token's first-buyer cohort. 5-min cached. BASIC: score+signal only. PRO/ULTRA: full breakdown.

ParametersJSON Schema
NameRequiredDescriptionDefault
mintYesToken mint address (base58)

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate read-only, idempotent, open-world. Description adds valuable behavioral context: 5-minute caching and plan-dependent output detail (BASIC vs PRO/ULTRA). No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences: first defines purpose, second adds caching and plan differentiation. No extraneous content; every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given low complexity and rich annotations, the description covers core functionality and caching. However, missing output schema means the agent lacks details on return structure (e.g., shape of 'score+signal' or 'full breakdown'), which is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has 100% coverage for the single parameter (mint). Description does not add extra parameter-level meaning beyond what schema already provides; it focuses on output behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it provides a 0–100 buyer-quality score for a token's first-buyer cohort, with plan-level output differentiation. This is specific and distinguishable from sibling `madeonsol_tokens_batch_buyer_quality` which does batch processing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies usage for single-token analysis via contrast with batch sibling, and hints at plan-dependent output interpretation, but lacks explicit when-to-use or when-not-to-use guidance or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

madeonsol_token_cap_tableA
Read-onlyIdempotent

First non-deployer early buyers for a token, enriched with PnL, KOL identity, and bot flags. PRO=top 10 (truncated wallets), ULTRA=top 20 (full). BASIC: 403.

ParametersJSON Schema
NameRequiredDescriptionDefault
mintYesToken mint address (base58)

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond annotations (read-only, idempotent), the description reveals plan-dependent behavior (403 for BASIC, truncated vs full wallets), which is critical for an agent to understand before calling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence with clear front-loading of purpose and key plan details. No filler or redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple input schema and no output schema, the description fully covers what the tool does, its limitations, and plan variations. No missing context for agent invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter 'mint' with schema description 'Token mint address (base58)' is sufficient. Schema coverage is 100%, so description adds no extra meaning beyond what schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it returns 'first non-deployer early buyers for a token, enriched with PnL, KOL identity, and bot flags,' with specific plan-based outcomes (PRO/ULTRA/BASIC). This distinguishes it from sibling tools like KOL analysis or alerts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It implies usage by token mint address and indicates plan limitations (BASIC returns 403), but does not explicitly state when to prefer this over alternatives like madeonsol_token_buyer_quality or madeonsol_token_flow.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

madeonsol_token_getA
Read-onlyIdempotent

Comprehensive per-mint snapshot: price (VWAP), market cap, 24h volume, deployer reputation, KOL smart-money activity, first_seen_at + age_seconds, and blacklist status — all in one call. ULTRA adds individual KOL wallet addresses in top_buyers[].

ParametersJSON Schema
NameRequiredDescriptionDefault
mintYesToken mint address (base58)

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate read-only, idempotent, open-world, and not destructive. The description adds behavioral context by listing the specific data returned (e.g., VWAP, deployer reputation, KOL activity) and mentions an 'ULTRA' feature for KOL wallet addresses, enhancing transparency beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences efficiently convey the tool's purpose and key data fields, with critical details front-loaded. No superfluous words; every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple input (single mint address) and lack of output schema, the description adequately covers expected return fields and the optional ULTRA addition. Missing details on error responses or pagination, but these are unlikely given the tool's nature.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with parameter 'mint' described as 'Token mint address (base58)'. The description reinforces that the tool operates per-mint but adds no new semantic information beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Comprehensive per-mint snapshot' and enumerates specific data fields (price, market cap, volume, etc.), distinguishing it from sibling tools that focus on specific aspects (e.g., madeonsol_token_candles for candlestick data, madeonsol_token_risk for risk).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use for a broad overview of a token's metrics but does not explicitly specify when to use this tool instead of specialized siblings like madeonsol_token_flow or madeonsol_token_buyer_quality. No 'when not to use' or alternatives are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

madeonsol_tokens_batch_buyer_qualityA
Read-onlyIdempotent

Bulk buyer-quality scoring for up to 50 mints in one call. Shares the 5-min LRU cache with the single-mint endpoint — already-warm mints return at ~zero cost. Response includes cache_hits counter.

ParametersJSON Schema
NameRequiredDescriptionDefault
mintsYes1–50 base58 Solana token mints

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, non-destructive behavior. The description adds valuable context about the 5-minute LRU cache shared with the single-mint endpoint and the cache_hits counter in the response, enhancing transparency beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with two sentences, front-loading the core purpose. Every sentence provides specific value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers purpose, caching behavior, and a response detail (cache_hits counter). However, it does not specify the structure of the scoring output, which could be inferred but isn't explicitly stated. Given the simplicity of the tool, this is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a clear description of the 'mints' parameter. The description does not add new semantic meaning beyond what the schema provides, so a baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Bulk buyer-quality scoring for up to 50 mints in one call.' It specifies the verb (scoring) and resource (mints), and distinguishes itself from the sibling single-mint endpoint by emphasizing bulk usage.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use this tool (when scoring multiple mints up to 50) and mentions the shared cache with the single-mint endpoint, suggesting efficiency for warm mints. However, it doesn't explicitly state alternatives or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

madeonsol_tokens_listA
Read-onlyIdempotent

Filtered, sortable token directory. Browse all tracked Solana tokens by market-cap band, liquidity floor, recent-activity window, primary DEX, authority/safety flags, and computed 1h volume / MEV-share / MC-change deltas. Default min_liq=2000 skips phantom-MC dust (low-liquidity pools producing absurd VWAP×supply products) — pass min_liq=0 to opt out. Computed filters (min_volume_1h_usd, max_mev_share_pct, mc_change_1h_min_pct, mc_change_1h_max_pct) over-fetch and post-filter — pagination.post_filtered=true on the response means page size may be < limit. PRO+ only.

ParametersJSON Schema
NameRequiredDescriptionDefault
min_mcNoMinimum market cap in USD
max_mcNoMaximum market cap in USD
min_liqNoMinimum quote-side liquidity in USD (default 2000 — pass 0 to opt out of phantom-MC filter)
active_hNoOnly tokens with a trade in the last N hours
primary_dexNoFilter by primary DEX
authority_revokedNoOnly tokens whose mint+freeze authority is revoked
exclude_token2022NoExclude Token-2022 mints (transfer-fee / hook risk)
min_lp_burnt_pctNoMinimum % of LP supply burned (0-100)
min_volume_1h_usdNoMinimum trailing 1h volume in USD (post-filter — may shrink page size)
max_mev_share_pctNoMaximum MEV-share % of 1h volume (post-filter)
mc_change_1h_min_pctNoMinimum 1h MC change % (post-filter; negative allowed)
mc_change_1h_max_pctNoMaximum 1h MC change % (post-filter)
sortNoSort axis (default mc_desc)
limitNoPage size (max 100)
offsetNoPagination offset

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare it read-only, idempotent, non-destructive, and open world. The description goes beyond by detailing the over-fetching mechanism for computed filters, that pagination.post_filtered=true indicates page size may be smaller than limit, and explains the rationale behind the min_liq default. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, starting with a clear one-line summary. It efficiently lists all filter types and behaviors in two sentences. While comprehensive, it could be slightly more structured (e.g., bullet points) but is not wasteful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description could explain the full response structure. It mentions pagination behavior and computed deltas but does not specify what fields each token object contains. An agent might need to infer the common token schema from other tools. This is a moderate gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All 15 parameters have descriptions in the schema (100% coverage). The description adds value by explaining the default min_liq, the over-fetching behavior for computed filters, and the default sort axis. It clarifies the meaning of 'phantom-MC dust' and provides context for using filters together.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies it as a filtered, sortable token directory for Solana tokens, listing specific filters and defaults. It distinguishes from siblings like madeonsol_token_get (single token) and madeonsol_discovery (likely different criteria) by focusing on broad directory browsing with advanced filtering.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides usage guidance on the default min_liq=2000 (to avoid phantom-MC dust) and explains the over-fetching and post-filtering behavior. It tells users to pass min_liq=0 to opt out. However, it does not explicitly contrast this tool with other token listing siblings like madeonsol_discovery or madeonsol_kol_hot_tokens.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

madeonsol_wallet_tracker_addA

Add a Solana wallet to your watchlist. Returns 409 if already tracked or limit reached.

ParametersJSON Schema
NameRequiredDescriptionDefault
wallet_addressYesSolana wallet address (base58) to track
labelNoOptional human-readable label for this wallet

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate not read-only and not destructive. The description adds behavioral detail by mentioning the 409 conflict response for duplicates or limit reached, which is beyond annotation info.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that conveys the essential information with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple add tool without an output schema, the description covers the primary action and a notable error case. It does not describe the success response, but the annotations provide safety context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already describes both parameters. The description adds no additional meaning beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Add a Solana wallet to your watchlist') with a specific verb and resource, and distinguishes from sibling tools like remove and summary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for adding wallets but lacks explicit guidance on when to use this vs alternatives like wallet_tracker_remove. The mention of 409 provides some context on limits but no exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

madeonsol_wallet_tracker_removeA
DestructiveIdempotent

Remove a wallet from your watchlist.

ParametersJSON Schema
NameRequiredDescriptionDefault
wallet_addressYesSolana wallet address to remove from watchlist

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructiveHint=true and idempotentHint=true. The description does not add behavioral context beyond stating the action, such as being irreversible or what happens if the wallet is not in the list. It is adequate but not enriching.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no unnecessary words. Every part is essential and earned its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple removal tool with no output schema, the description should explain the result (e.g., wallet is no longer tracked) or any side effects. It fails to provide this, leaving the agent to infer outcomes.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter 'wallet_address' is fully described in the schema (100% coverage). The description does not add additional semantic meaning beyond what the schema provides, so baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Remove a wallet from your watchlist' clearly states the verb (remove), resource (wallet), and context (from watchlist). It effectively distinguishes from the sibling tool 'madeonsol_wallet_tracker_add' which performs the opposite operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when a user wants to stop tracking a wallet, but it lacks explicit guidance on prerequisites (e.g., wallet must be in watchlist) or when not to use it. No alternatives are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

madeonsol_wallet_tracker_summaryA
Read-onlyIdempotent

Per-wallet stats: swap counts, SOL bought/sold, and last activity time across your watchlist.

ParametersJSON Schema
NameRequiredDescriptionDefault
periodNoTime window for stats7d
walletNoFilter to a specific wallet address

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and non-destructive. The description adds that it returns specific stats, but does not disclose other behavioral traits like rate limits or pagination. With strong annotation coverage, a score of 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, front-loaded with key purpose ('Per-wallet stats'), and no redundant information. Every word adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given annotations, full schema coverage, and no output schema, the description sufficiently covers the tool's purpose and return data. Could mention watchlist context more explicitly, but overall complete for a simple non-destructive tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and parameter descriptions already explain 'period' (time window) and 'wallet' (filter). The description does not add new meaning beyond what schema provides, so baseline score of 3 is correct.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool returns per-wallet stats (swap counts, SOL bought/sold, last activity) for wallets on watchlist. It uses specific verb (implied 'get') and resource (watchlist wallet stats), distinguishing it from other wallet tools like wallet_pnl or wallet_positions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for watchlist wallets, but does not explicitly state when to use this versus alternatives like wallet_stats or wallet_tracker_trades. No exclusion criteria or when-not-to-use guidance is provided, though context signals help.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

madeonsol_wallet_tracker_tradesA
Read-onlyIdempotent

Historical swap and transfer events for all your watched wallets. BASIC: truncated wallets, no tx_signature.

ParametersJSON Schema
NameRequiredDescriptionDefault
walletNoFilter to a specific wallet address
actionNoFilter by action type
event_typeNoFilter by event type: swap (token trade) or transfer (SOL moved)
limitNoMax results (1–200)
beforeNoPagination cursor: block_time of the last event from previous page

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds valuable behavioral info beyond annotations: data is truncated and no tx_signature is included. Annotations already indicate read-only, open-world, idempotent, non-destructive, so no contradiction. The truncation disclosure is helpful.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with two sentences that capture the core purpose and a key limitation. No unnecessary words or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with good schema and annotations, the description is adequate but lacks details on what 'truncated wallets' means, pagination behavior beyond the before parameter, and expected output structure (no output schema). Could be slightly more comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% coverage with parameter descriptions, so the description does not need to add much. The tool description only adds a general limitation (truncated data), not per-parameter detail. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns historical swap and transfer events for watched wallets, and it adds a specific limitation note (BASIC: truncated wallets, no tx_signature), distinguishing it from similar tools like madeonsol_wallet_trades.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context (for watched wallets) but does not explicitly state when to use this tool versus alternatives like madeonsol_wallet_trades or other wallet tools. No when-not or exclusion criteria are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

madeonsol_wallet_tracker_watchlistA
Read-onlyIdempotent

List your tracked wallets with labels and remaining watchlist capacity. BASIC=10, PRO=50, ULTRA=100.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint, openWorldHint, idempotentHint, and destructiveHint false. The description adds specific behavioral context: it returns labels and capacity limits (BASIC=10, PRO=50, ULTRA=100), which is beyond the annotations and helps the agent understand output scope.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no wasted words. It efficiently conveys the tool's purpose and a key detail (plan capacities).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given zero parameters and no output schema, the description is complete: it tells the agent what the tool does, what it returns (wallets with labels and capacity), and the capacity limits per plan. No further information is needed for this simple list operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters, and schema coverage is 100%. The description adds meaning by specifying that the output includes labels and remaining watchlist capacity, which is not detailed elsewhere.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'List your tracked wallets with labels and remaining watchlist capacity.' This is a specific verb and resource, and it distinguishes the tool from siblings like wallet_tracker_add and wallet_tracker_remove by focusing on listing existing watchlist entries.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for viewing tracked wallets but does not explicitly state when to use this tool versus alternatives like wallet_tracker_summary or other list tools. It provides no guidance on prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

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

  1. 51 tool updatesv1.7.4
    • First observedmadeonsol_alpha_leaderboard
    • First observedmadeonsol_alpha_linked
    • First observedmadeonsol_alpha_wallet
    • First observedmadeonsol_coordination_alerts_create
    • First observedmadeonsol_coordination_alerts_delete
    • First observedmadeonsol_coordination_alerts_get
    • First observedmadeonsol_coordination_alerts_list
    • First observedmadeonsol_coordination_alerts_update
    • First observedmadeonsol_copytrade_create
    • First observedmadeonsol_copytrade_delete
    • First observedmadeonsol_copytrade_get
    • First observedmadeonsol_copytrade_list
    • First observedmadeonsol_copytrade_signals
    • First observedmadeonsol_copytrade_update
    • First observedmadeonsol_create_webhook
    • First observedmadeonsol_delete_webhook
    • First observedmadeonsol_deployer_alerts
    • First observedmadeonsol_deployer_trajectory
    • First observedmadeonsol_discovery
    • First observedmadeonsol_first_touch_subscriptions_create
    • First observedmadeonsol_first_touch_subscriptions_delete
    • First observedmadeonsol_first_touch_subscriptions_get
    • First observedmadeonsol_first_touch_subscriptions_list
    • First observedmadeonsol_first_touch_subscriptions_update
    • First observedmadeonsol_kol_alerts_recent
    • First observedmadeonsol_kol_compare_wallets
    • First observedmadeonsol_kol_coordination
    • First observedmadeonsol_kol_feed
    • First observedmadeonsol_kol_first_touches
    • First observedmadeonsol_kol_hot_tokens
    • First observedmadeonsol_kol_leaderboard
    • First observedmadeonsol_kol_pairs
    • First observedmadeonsol_kol_pnl
    • First observedmadeonsol_kol_timing
    • First observedmadeonsol_kol_token_entry_order
    • First observedmadeonsol_kol_trending_tokens
    • First observedmadeonsol_list_webhooks
    • First observedmadeonsol_me
    • First observedmadeonsol_stream_token
    • First observedmadeonsol_test_webhook
    • First observedmadeonsol_token_batch
    • First observedmadeonsol_token_buyer_quality
    • First observedmadeonsol_token_cap_table
    • First observedmadeonsol_token_get
    • First observedmadeonsol_tokens_batch_buyer_quality
    • First observedmadeonsol_tokens_list
    • First observedmadeonsol_wallet_tracker_add
    • First observedmadeonsol_wallet_tracker_remove
    • First observedmadeonsol_wallet_tracker_summary
    • First observedmadeonsol_wallet_tracker_trades
    • First observedmadeonsol_wallet_tracker_watchlist

TDQS

A3.7/5.0

Scored across 51 tools

Disambiguation5/5

The 51 tools are grouped by domain (alpha, coordination, copytrade, webhook, deployer, discovery, first_touch, kol, token, wallet_tracker) with distinct purposes within each group. For instance, kol_feed, kol_leaderboard, kol_pnl, and kol_timing each target different aspects of KOL analysis. CRUD operations for alerts, subscriptions, and webhooks are clearly separated. No two tools appear to do the same thing.

Naming Consistency5/5

All tools follow the prefix 'madeonsol_' followed by lowercase snake_case names that describe the action and resource (e.g., madeonsol_kol_leaderboard, madeonsol_token_get). The pattern is strictly consistent, with no mixing of conventions like camelCase or abbreviations. Even multi-word names like 'madeonsol_first_touch_subscriptions_create' maintain uniformity.

Tool Count2/5

With 51 tools, the server far exceeds the typical 3-15 range for a well-scoped MCP server. While the domain of Solana memecoin intelligence is broad, the count feels excessive for a single server, including many CRUD operations and multiple similar endpoints (e.g., 6 subscription tools). It would benefit from consolidation or modularization.

Completeness5/5

The toolset covers the full lifecycle of the domain: KOL discovery, analysis, alerts, copy-trading, webhook management, token data, wallet tracking, and account inspection. There are no obvious missing operations—CRUD is present for all managed resources, and even a discovery endpoint is provided. The surface is well-rounded for its stated purpose.

Maintenance

ActivityActive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers