Alpaca Trading API integration for Model Context Protocol (MCP)
Moby is installed from its publisher's own source and answers where it runs, so this marketplace is not in the path of a single call. There is no address here to send one to, and a panel that pretended otherwise would be showing you an answer we made up. Install it and call it from your own client — the Installation tab has the entry for each one.
What it does
Bearer agent key. Codex, Claude Code CLI, Gemini CLI (paid key), Grok CLI. ChatGPT: workspace plans.
Quickstart
# 1 — add it to Claude Code
claude mcp add --scope user --transport http moby-mcp https://mcp.moby.win/mcp --header 'Authorization: Bearer ${AGENT_KEY}'
# 2 — ask your agent for something these tools do
# get_screener_leaderboard, get_degen_leaderboard, get_screener_groups and 74 more
It needs AGENT_KEY (No withdrawals. Codex, Claude Code CLI, Gemini CLI (with a paid Gemini API key or enterprise access), and Grok CLI all use the agent key, sent as…): this sends it in the Authorization header from your environment, so export it first — its endpoint answers 401 without it.
Moby costs nothing on mcprush: there is no plan to choose here, no cap to set and nothing mcprush can bill you for.
Collected from a public index. Nobody has claimed this account, so nothing here was written by its author — claim it if it is yours.
Where are you running it?
Every route below installs the same thing and ends at the same approval screen. Nothing here runs on your machine and nothing runs on ours: this server answers at its publisher’s own address, and what you install is the connection straight to it.
This is a public server: it answers at its publisher’s own address and this marketplace is not in the path. Claude Code registers it in one command; --scope user makes it available in every project. The transport below is http, as the publisher's own manifest declares it. Claude Code reads AGENT_KEY (No withdrawals. Codex, Claude Code CLI, Gemini CLI (with a paid Gemini API key or enterprise access), and Grok CLI all use the agent key, sent as…) from your environment each time it connects and sends it in the Authorization header — its endpoint answers 401 without it — so the key stays out of its config: export it in your shell profile (macOS, Linux), or run setx AGENT_KEY … and open a new terminal (Windows).
claude mcp add --scope user --transport http moby-mcp https://mcp.moby.win/mcp --header 'Authorization: Bearer ${AGENT_KEY}'Reconnect, or start a new session, and the tools appear in the model’s tool list.
It reaches a system of yours, so it needs your own credential rather than the publisher’s: Authorization header — No withdrawals. Codex, Claude Code CLI, Gemini CLI (with a paid Gemini API key or enterprise access), and Grok CLI all use the agent key, sent as Authorization: Bearer. In ChatGPT, paste your personal Moby connector URL from the app. ChatGPT: works on Business, Enterprise and Edu workspaces that allow custom MCP servers (web). The key comes from the Moby app (Agent tab, Connect) and starts with moby_agent_.. You set it in your own client’s config, on your machine — this marketplace never holds it.
One config entry pointing straight at the publisher’s own address — this marketplace is not in the path, and nothing from this listing executes on your machine.
77 tools, with what each one reads, writes and reaches shown before you agree — the same list on every route above. Read the tool surface.
Tool surface
What the model actually sees. Descriptions are diffed on every release — see version history.
The main Moby token leaderboard: the tokens with the most notable activity right now, ranked best-first by Moby's composite 24h score. Start here when the user asks what is moving, what is trending, or what they should be looking at, and they have not named a specific token. Page 1 is the top of the board — for 'what is hot right now' the default page is the whole answer. Moby's leaderboards: Main
| Parameter | Type | Required | Notes |
|---|---|---|---|
| network | string | no | — |
| limit | integer | no | Tokens per page, 1-100. Keep it small. |
| page | integer | no | 1-based page number. Page 1 is the top. |
| whale_windows | no | Windows for the optional per-row whale block, e.g. ["h1", "h4"]. Omit for the default row. |
The high-risk ('degen') leaderboard: newer, smaller, far more volatile tokens than get_screener_leaderboard. Tokens here can lose most of their value in minutes and many are short-lived. Say that plainly when you present them. Ranked best-first; page 1 is the top. Moby's leaderboards: Main = get_screener_leaderboard (composite 24h activity, 'what's moving'); Degen = get_degen_leaderboard (ne
| Parameter | Type | Required | Notes |
|---|---|---|---|
| network | string | no | — |
| limit | integer | no | Tokens per page, 1-100. Keep it small. |
| page | integer | no | 1-based page number. Page 1 is the top. |
| whale_windows | no | Windows for the optional per-row whale block, e.g. ["h1", "h4"]. Omit for the default row. |
List the token groups/categories Moby tracks (themes, sectors, narratives). Use this to discover a valid group_id, then pass that to get_group_leaderboard to see the tokens inside it. home_tabs lists the app's Home boards by tab_id (home_majors, home_stocks, home_pulse), also valid group_ids. Moby's leaderboards: Main = get_screener_leaderboard (composite 24h activity, 'what's mo
| Parameter | Type | Required | Notes |
|---|---|---|---|
| network | string | no | — |
The ranked tokens inside one group/category. group_id must come from get_screener_groups — a group's group_id, or a home_tabs tab_id such as home_majors / home_stocks — do not invent or guess one. Ranked best-first; page 1 is the top. Moby's leaderboards: Main = get_screener_leaderboard (composite 24h activity, 'what's moving'); Degen = get_degen_leaderboard (newer, smaller, high
| Parameter | Type | Required | Notes |
|---|---|---|---|
| group_id | string | yes | — |
| network | string | no | — |
| limit | integer | no | Tokens per page, 1-100. Keep it small. |
| page | integer | no | 1-based page number. Page 1 is the top. |
| whale_windows | no | Windows for the optional per-row whale block, e.g. ["h1", "h4"]. Omit for the default row. |
Tokens grouped by the launchpad they were created on (pump.fun and similar). Useful for 'what launched recently' questions. Newly launched tokens are the riskiest category on the platform. This is public market data about the whole market — it is NOT about the user's own wallet or holdings. Tools whose names start with get_my_ are the ones that return the user's own data.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| network | string | no | — |
Screener events — discrete things that happened to tokens (price and volume moves, notable activity) over a period, newest first. This is the event stream behind the leaderboards, so use it when the user asks what CHANGED or what HAPPENED rather than what ranks highest right now. Poll for new events with after_timestamp; page back through history with before_timestamp. Each event carries flat
| Parameter | Type | Required | Notes |
|---|---|---|---|
| network | string | no | — |
| after_timestamp | no | Only events after this instant. ISO 8601 UTC, e.g. 2026-08-11T14:30:00Z. | |
| before_timestamp | no | Only events before this instant. ISO 8601 UTC, e.g. 2026-08-11T14:30:00Z. | |
| event_types | no | Restrict to these event types. Omit for all types. | |
| period | no | Time window. all or omitted disables the filter. | |
| market_cap_group | no | Market-cap band. all or omitted disables the filter. | |
| token_address | no | Restrict to one token's events. Omit for the whole market. | |
| page | integer | no | 1-based page number. |
| limit | integer | no | Events per page, 1-100. Keep it small. |
Find tokens by name, symbol or contract address. Use this FIRST whenever the user names a token in words ('buy some BONK') — every other token tool needs a contract address, and searching is the only safe way to get one. Never guess a contract address: on-chain there are many impostor tokens sharing a popular symbol, and picking the wrong one loses the user's money. If several results look plausib
| Parameter | Type | Required | Notes |
|---|---|---|---|
| query | string | yes | — |
| network | string | no | — |
START HERE for pre-buy research on one token: a compact brief (a few KB) in one call instead of 5-10. Sections: about (description, socials, age, launchpad; liquidity_source, and graduation_pct while on a bonding curve), safety (safety_tier + safety_note), smart_money_flow (h1/h4/h24 net $, buy vs sell counts, last_buy_at / last_sell_at, data_as_of), smart_money_read (tier
| Parameter | Type | Required | Notes |
|---|---|---|---|
| token_address | string | yes | — |
| network | string | no | — |
Everything Moby knows about one token in a single call: price, market cap, liquidity, volume, holder counts, safety signals and metadata. This is the default tool for 'tell me about <token>'. Get token_address from search_tokens. liquidity_source says where liquidity sits: bonding_curve = a launchpad coin not yet migrated, liquidity is its curve reserve (0 = curve drained, everyone sol
| Parameter | Type | Required | Notes |
|---|---|---|---|
| token_address | string | yes | — |
| network | string | no | — |
Holder-concentration and contract risk for one token: sniper, insider, bundler and fresh-wallet shares, dev hold, mint/freeze authority, honeypot and buy/sell tax. Same fields and rules as the Moby app's Risk Signals block. status is ok / pending / unavailable / unsupported: pending means retry in a few seconds; unavailable and unsupported mean no data (do not hammer). Nulls mean n
| Parameter | Type | Required | Notes |
|---|---|---|---|
| token_address | string | yes | — |
| network | string | no | — |
Which tracked high-performing wallets (whales, KOLs, proven traders) are positioned in this token, and on which side. This is Moby's core edge signal — it answers 'is anyone good in this?'. These are OTHER people's wallets, never the user's. Each window (h1, h4, h24) carries last_buy_at / last_sell_at (newest buy / sell in that window) and the response data_as_of (when the windows were
| Parameter | Type | Required | Notes |
|---|---|---|---|
| token_address | string | yes | — |
| network | string | no | — |
The most significant holders of this token and how concentrated ownership is. High concentration is a risk signal worth stating explicitly to the user. ⚠️ These are OTHER people's wallets — this is NOT the user's position in the token. For that, use get_my_position. whale_count/trader_count/kol_count (and the claim's tag_count, when tag is set) are always TRUE totals; page/limit ar
| Parameter | Type | Required | Notes |
|---|---|---|---|
| token_address | string | yes | — |
| network | string | no | — |
| tag | no | Claim filter behind the expanded Smart Money read: one of the four exclusive tags (holding / bought / trimming / closed) or one of the read's own claims (never_sold / exited_24h / new_24h / left_7d / | |
| sort | string | no | Row order: value (default, largest position first) / newest (most recent first tracked buy first) / oldest (earliest first buy first) / recent_trade (latest tracked buy or sell first). |
| page | integer | no | 1-based page number. |
| limit | integer | no | Holders per page, 1-100. Keep it small. |
| min_position_usd | no | Minimum live USD position to list or count a holder (whales, traders and KOLs). Omit for the default $100; raise it (e.g. 500) for conviction-only counts. Ignored when tag is set. |
Trade-by-trade feed of the TRACKED whale, KOL and trader wallets that traded one token, newest first. It is NOT the whole market: only wallets Moby tracks appear. Every tracked trade is listed, with no $ floor (the app's feed hides trades under $100). One row per swap: a wallet that is both a whale and a KOL appears once, with identities, is_whale and is_kol set. Rows exist from when Moby be
| Parameter | Type | Required | Notes |
|---|---|---|---|
| token_address | string | yes | — |
| network | string | no | — |
| page | integer | no | 1-based page number. Ignored when cursor is given. |
| limit | integer | no | Trades per page, 1-100. Keep it small. |
| cursor | no | next_cursor from the previous response. Wins over page; no gaps or duplicates. |
Price history for one token as a series of points, for describing or plotting a trend. period selects the window and defaults to 1d. Prices are in USD. Choosing between the two price tools: get_token_chart returns a ready-to-read price line for describing a trend; get_token_ohlcv returns raw open/high/low/close/volume candles for calculation and technical analysis. Prefer the chart unless
| Parameter | Type | Required | Notes |
|---|---|---|---|
| token_address | string | yes | — |
| network | string | no | — |
| period | string | no | — |
Raw OHLCV candles for one token — open, high, low, close and volume per interval — for calculation, technical analysis, or computing a return over a specific window. Prices are always USD (the response says so in denomination). Pick the candle size with interval (1m, 5m, 15m, 1h, 4h, 1d); it wins over timeframe and aggregate. With none of the three the default is 15-minute cand
| Parameter | Type | Required | Notes |
|---|---|---|---|
| token_address | string | yes | — |
| network | string | no | — |
| interval | no | Candle size. Wins over timeframe/aggregate. Omit all three for 15m. | |
| timeframe | no | Candle unit. Candle size is aggregate × this (aggregate defaults to 1 when only this is given). Only the sizes listed under interval are served; anything else is rejected. | |
| aggregate | no | How many timeframe units per candle. 1 when only timeframe is given. | |
| limit | integer | no | How many candles to return. |
| time_from | no | Window start, Unix timestamp in SECONDS or MILLISECONDS — either is accepted. Requires time_to as well. | |
| time_to | no | Window end, Unix timestamp in SECONDS or MILLISECONDS — either is accepted. Requires time_from as well. | |
| before_timestamp | no | Return candles before this Unix timestamp, in seconds or milliseconds. Use to page further back in history — a t value from a previous response can be passed straight back. | |
| include_in_progress_candle | boolean | no | True keeps the current, still-forming candle at index 0. Leave false for any calculation — its close is not a close. |
The current USD price of one token, and nothing else. Cheapest call for a price check; use get_token_overview if you also need market cap, liquidity or volume. This is public market data about the whole market — it is NOT about the user's own wallet or holdings. Tools whose names start with get_my_ are the ones that return the user's own data.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| token_address | string | yes | — |
| network | string | no | — |
Moby's WhaleWatch feed: buys and sells by tracked whale wallets across the market, newest first. Filter to one token with token_address, to one tracked wallet with wallet_address, or to specific whale lists with list_ids (from get_whalewatch_lists). ⚠️ wallet_address here filters TRACKED WHALE wallets — it is not the user's wallet and cannot be used to look up the user's own trades. Use
| Parameter | Type | Required | Notes |
|---|---|---|---|
| network | string | no | — |
| token_address | no | Restrict to whale trades in this one token. | |
| wallet_address | no | Restrict to one TRACKED WHALE wallet. Not the user's wallet. | |
| transaction_types | no | buy and/or sell. Omit for both. Anything else is rejected rather than ignored — an unrecognised value used to drop the filter and return every row. | |
| list_ids | no | Whale list ids from get_whalewatch_lists. Omit for all lists. | |
| after_timestamp | no | Only trades after this instant. ISO 8601 UTC, e.g. 2026-08-11T14:30:00Z. | |
| before_timestamp | no | Only trades before this instant. ISO 8601 UTC, e.g. 2026-08-11T14:30:00Z. | |
| page | integer | no | 1-based page number. |
| limit | integer | no | Trades per page, 1-100. Keep it small. |
| include_context | boolean | no | Add the per-row context block (position/PnL facts for each trade). |
| min_days_since_prev_trade | no | Only trades by a wallet that had been quiet at least this many days before the trade (no tracked trade on this network, any token), e.g. 14 for 'woke up after two weeks'. Trades with no earlier trade |
Every tracked-whale buy and sell inside one time window (at most 48 hours), for bulk reads such as 'everything whales did in the last 6 hours'. Unlike get_whalewatch_feed, it returns ONE ROW PER SWAP (the plain feed repeats a swap once per whale list the wallet is on; list_id here is one of the matching lists), and pages with a cursor: pass next_cursor from the previous response as cursor
| Parameter | Type | Required | Notes |
|---|---|---|---|
| after_timestamp | string | yes | Window start (inclusive). At most 48h before the window end. ISO 8601 UTC, e.g. 2026-08-11T14:30:00Z. |
| before_timestamp | no | Window end (inclusive). Omit for now. ISO 8601 UTC, e.g. 2026-08-11T14:30:00Z. | |
| network | string | no | — |
| transaction_types | no | buy and/or sell. Omit for both. | |
| min_amount_usd | no | Only trades of at least this many USD. | |
| min_market_cap_usd | no | Only trades in tokens whose market cap at trade time was at least this. | |
| actions | no | What the trade did to the wallet's position: first_buy, re_entry, add, trim, close, sell_unknown_entry. Omit for all. | |
| list_ids | no | Whale list ids from get_whalewatch_lists. Omit for all lists. | |
| cursor | no | next_cursor from the previous page. Omit for the first page. | |
| limit | integer | no | Swaps per page, 1-1000. Keep it small unless you need the whole window. |
| include_context | boolean | no | Add the per-row context block (position/PnL facts for each trade). |
| min_days_since_prev_trade | no | Only trades by a wallet that had been quiet at least this many days before the trade (no tracked trade on this network, any token), e.g. 14 for 'woke up after two weeks'. Trades with no earlier trade |
Same feed as get_whalewatch_feed but pre-filtered to KOLs — public, named crypto influencers — rather than anonymous whales. The list filter is applied server-side, so there is no list_ids argument. Use this when the user asks what influencers or 'the callers' are buying. For one KOL's trades, use get_whalewatch_feed with its wallet_address. include_context=true adds a per-row context
| Parameter | Type | Required | Notes |
|---|---|---|---|
| network | string | no | — |
| token_address | no | Restrict to KOL trades in this one token. | |
| transaction_types | no | buy and/or sell. Omit for both. Anything else is rejected rather than ignored — an unrecognised value used to drop the filter and return every row. | |
| after_timestamp | no | Only trades after this instant. ISO 8601 UTC, e.g. 2026-08-11T14:30:00Z. | |
| before_timestamp | no | Only trades before this instant. ISO 8601 UTC, e.g. 2026-08-11T14:30:00Z. | |
| page | integer | no | 1-based page number. |
| limit | integer | no | Trades per page, 1-100. Keep it small. |
| include_context | boolean | no | Add the per-row context block (position/PnL facts for each trade). |
The WHOLE MARKET's whale flow in one call: tracked whale/KOL/smart-money buys, sells and dumps for the last 1h, 4h and 24h (h1, h4, h24). Use it to tell 'whales are dumping everything' from 'this one coin is weak' before reading a single token, instead of paging get_whalewatch_feed_window. Each window has totals, by_wallet_type (whale / kol / smart_money; overlapping, a wallet on two k
| Parameter | Type | Required | Notes |
|---|---|---|---|
| network | string | no | — |
The tracked-wallet lists Moby maintains (whale groups, KOL groups, proven-trader cohorts). Call this to discover valid list_ids for get_whalewatch_feed. This is public market data about the whole market — it is NOT about the user's own wallet or holdings. Tools whose names start with get_my_ are the ones that return the user's own data.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| network | string | no | — |
What one TRACKED WHALE wallet currently holds. ⚠️ This is somebody else's portfolio, taken from Moby's public whale-tracking data. It is NOT the user's portfolio under any circumstances — for that, call get_my_balances. Take wallet_address from a WhaleWatch feed result; addresses may be returned as stable opaque references rather than raw addresses, and those references work here. This is publ
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | — |
| network | string | no | — |
The biggest realised wins of one TRACKED WHALE wallet — its top closed trades by profit, at most five. Use it to judge whether a wallet seen in a WhaleWatch feed is actually good before weighting its activity. ⚠️ Somebody else's track record, not the user's — the user's own realised results come from get_my_closed_positions. An empty list means no wins data was available, not that the wallet has
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | Tracked trader wallet, from a WhaleWatch feed. Opaque references work here too. |
| network | string | no | — |
The short, curated WhaleWatch feed the Moby app shows on its home screen — the most notable recent whale trades across the whole market, already filtered down. Use it for an open-ended 'what are whales doing right now'. For anything filtered — one token, one wallet, specific lists, a time window, or more than a handful of rows — use get_whalewatch_feed instead. This is public market data about t
| Parameter | Type | Required | Notes |
|---|---|---|---|
| network | string | no | — |
| limit | integer | no | How many highlighted trades to return. |
The key explaining the icons and badges attached to rows in the WhaleWatch feeds. Static reference data — call it once if you need to explain what a marker on a feed row means, and do not poll it. It contains no market data and no wallets. This is public market data about the whole market — it is NOT about the user's own wallet or holdings. Tools whose names start with get_my_ are the ones that
No parameter schema on file.
TOKENS ranked by aggregate USD held, either by tracked WHALES or by Moby USERS — never a person-vs-person ranking. Use holder_type=whale (default) for 'what are whales piling into'; holder_type=user for 'what do Moby users collectively hold most of'. This is public market data about the whole market — it is NOT about the user's own wallet or holdings. Tools whose names start with get_my_ are
| Parameter | Type | Required | Notes |
|---|---|---|---|
| holder_type | string | no | — |
| network | string | no | — |
The VALID VALUES for get_market_movers' event_types, period and market_cap_group arguments, for one network. Call this BEFORE filtering get_market_movers — an invented filter string returns an empty list that reads as 'no events found' rather than 'you guessed a value that does not exist'. This is public market data about the whole market — it is NOT about the user's own wallet or holdin
| Parameter | Type | Required | Notes |
|---|---|---|---|
| network | string | no | — |
Aggregate holder-distribution summary for one token — the concentration picture in bucketed form. For the individually itemised top holders use get_token_holders; for just the tracked whales/KOLs use get_token_key_holders. This is public market data about the whole market — it is NOT about the user's own wallet or holdings. Tools whose names start with get_my_ are the ones that return the us
| Parameter | Type | Required | Notes |
|---|---|---|---|
| token_address | string | yes | — |
| network | string | no | — |
ALL top holders of this token, paginated and ranked by size — not just the wallets Moby tracks. get_token_key_holders is the tracked-whale/KOL SUBSET of this same population; this is the full concentration picture. Results are capped. Raise limit or step page only if the answer is genuinely not in the first page — a large result costs context that later steps of the same task need. This is p
| Parameter | Type | Required | Notes |
|---|---|---|---|
| token_address | string | yes | — |
| network | string | no | — |
| page | integer | no | 1-based page number. |
| limit | integer | no | Holders per page, 1-100. Keep it small. |
Tracked WHALES holding this token, GROUPED BY WHALE LIST. get_token_key_holders returns the same population UNGROUPED (whales and KOLs together); use this when the question is 'which KIND of whale is in this'. This is public market data about the whole market — it is NOT about the user's own wallet or holdings. Tools whose names start with get_my_ are the ones that return the user's own data.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| token_address | string | yes | — |
| network | string | no | — |
Tracked KOLs — named public traders/influencers — holding this token. The KOL-only slice of get_token_key_holders. This is public market data about the whole market — it is NOT about the user's own wallet or holdings. Tools whose names start with get_my_ are the ones that return the user's own data.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| token_address | string | yes | — |
| network | string | no | — |
PUBLIC, on-chain DCA (dollar-cost-average) orders open against this token — who ELSE in the market is accumulating it on a schedule. ⚠️ NOT the user's own DCAs — those come from get_my_dca_schedules. The two are unrelated datasets that both use the word 'DCA'. This is public market data about the whole market — it is NOT about the user's own wallet or holdings. Tools whose names start with `get_
| Parameter | Type | Required | Notes |
|---|---|---|---|
| token_address | string | yes | — |
| network | string | no | — |
| size | integer | no | Max rows to scan, 1-500. |
| order_by | string | no | — |
| order_direction | string | no | — |
The project's X/Twitter account: follower count, age, verification — 'is this project's social presence real or a two-day-old burner'. ⚠️ CALL SPARINGLY: X charges paid credits per lookup. Not for routine enrichment of every token in a list. This is public market data about the whole market — it is NOT about the user's own wallet or holdings. Tools whose names start with get_my_ are the ones tha
| Parameter | Type | Required | Notes |
|---|---|---|---|
| token_address | string | yes | — |
| network | string | no | — |
The full track record behind a TRACKED WHALE: win rate, realized PnL, trade count, typical hold time, and whether Moby has finished indexing it (backfill_state). Judge whether a wallet seen in a WhaleWatch feed is actually good before weighting its activity. For everything in one call — including current holdings and the caller's own follow state — use get_whale_wallet_profile instead. ⚠️ Some
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | Tracked trader wallet, from a WhaleWatch feed. Opaque references work too. |
| network | string | no | — |
A TRACKED WHALE's cumulative realized PnL over time — is the track record a steady climb or one lucky trade? ⚠️ Somebody else's equity curve, never the user's. This is public market data about the whole market — it is NOT about the user's own wallet or holdings. Tools whose names start with get_my_ are the ones that return the user's own data.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | Tracked trader wallet, from a WhaleWatch feed. Opaque references work too. |
| network | string | no | — |
| period | string | no | — |
A TRACKED WHALE's current holdings WITH cost basis and unrealized PnL per position. Richer than get_whale_wallet_holdings, which is amount + USD value only. ⚠️ Somebody else's positions, never the user's — for the user's own, use get_my_balances or get_my_position. This is public market data about the whole market — it is NOT about the user's own wallet or holdings. Tools whose names start w
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | Tracked trader wallet, from a WhaleWatch feed. Opaque references work too. |
| network | string | no | — |
THE RICHEST WHALE READ ON THIS SURFACE: one call combining identity, realized track record, current holdings, recent trades, and whether Moby has stopped tracking this wallet (identity.tracking_paused_at). Prefer this over calling get_whale_wallet_track_record + get_whale_wallet_positions separately. windows.d7 and windows.d30 give realized P/L, closes, win rate, avg/median hold days and
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | Tracked trader wallet, from a WhaleWatch feed. Opaque references work too. |
| network | string | no | — |
| include_holdings | boolean | no | false = stats only, no holdings (smaller, faster). Default true. |
Rate 10-20 key holders before a buy in one call; stats only, no holdings. Pass the wallet_address refs from get_token_key_holders (max 20). Each profile carries windows.d7 / windows.d30 (realized P/L, closes, win rate, median hold, short-hold share), track_record, realized and identity. A wallet Moby has never seen is left out — match rows on wallet_ref. For one wallet's holdings u
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_addresses | array | yes | 1-20 tracked wallet refs, e.g. from get_token_key_holders. |
| network | string | no | — |
The user's CURRENT holdings in their Solana agent wallet, with balances and USD values. USDC is your cash (flagged is_cash: true). SOL and every other token are positions; sell with quick_sell to raise USDC. What each part contains: - tokens — EVERYTHING held in the wallet, and the authoritative answer to 'what do I own'. It INCLUDES the native coin (SOL, flagged is_native: true) and the USD
| Parameter | Type | Required | Notes |
|---|---|---|---|
| network | string | no | — |
| refresh | boolean | no | — |
EVERYTHING the user's agent holds, in one call — with a single combined total of the AGENT'S OWN wallets only: the user's Copy Trading wallet and manual wallets are NOT counted. excluded_wallets lists what was left out (shortened address, owner_kind, label) and scope is agent_wallets; do not add those back in — hero_usd is the agent's equity, the number to judge its performance and drawd
| Parameter | Type | Required | Notes |
|---|---|---|---|
| refresh | boolean | no | — |
The user's position in ONE token: how much they hold, what they paid, and their unrealised profit or loss. Use this for 'am I up on X'. Amounts are in token units and USD; profit figures are USD. HOW MUCH THE USER HOLDS comes from the CHAIN and is reported by get_my_balances, get_my_token_balance and get_my_position (balance_source: "chain"). WHAT IT COST — cost basis, average entry, real
| Parameter | Type | Required | Notes |
|---|---|---|---|
| token_address | string | yes | — |
| network | string | no | — |
🔴 CLOSED POSITIONS ONLY — positions the user has already fully exited, with their realised profit and loss. IMPORTANT: get_my_closed_positions returns ONLY positions the user has already exited. Positions the user still holds come from get_my_balances. Never tell a user they hold nothing based on get_my_closed_positions being empty. Use this for realised PnL questions. An empty result means
| Parameter | Type | Required | Notes |
|---|---|---|---|
| network | string | no | — |
| token_address | no | Restrict to closed positions in one token. Omit for all. | |
| page | integer | no | 1-based page number. |
| limit | integer | no | Positions per page, 1-100. Keep it small. |
The user's own wallet activity feed — their trades, transfers, deposits and withdrawals, newest first. ⚠️ This one is CURSOR-paginated, not page-numbered: read cursor out of the response and pass it back to get the next page. Do not send a page number. Choosing between the two history feeds: get_my_activity is the merged, human-readable timeline the app shows, cursor-paginated. `get_my_transac
| Parameter | Type | Required | Notes |
|---|---|---|---|
| network | string | no | — |
| token_address | no | Restrict to activity involving one token. Omit for all. | |
| category | no | Restrict to one activity category. Omit (or all) for everything. ⚠️ buys, sells and closed_trades REQUIRE token_address — without one the call is rejected, deliberately: 'bought' means 'this | |
| cursor | no | Opaque cursor from the previous response. Omit for the first page. | |
| limit | integer | no | Items per page. Keep it small. |
How much of ONE token the user holds right now, and what it is worth. The cheapest way to answer 'do I have any X', and the tool to size a sell from before placing one. ⭐ balance_token_amount IS THE ANSWER. It is the on-chain balance and it always agrees with get_my_balances. HOW MUCH THE USER HOLDS comes from the CHAIN and is reported by get_my_balances, get_my_token_balance and `get_my_
| Parameter | Type | Required | Notes |
|---|---|---|---|
| token_address | string | yes | — |
| network | string | no | — |
The user's completed trades, newest first — one entry per closed buy→sell cycle, with what was bought or sold and the realised result. Each cycle carries fills: every buy/sell leg with timestamp, side, price_usd, token_amount, usd_amount and tx_hash (pass include_fills=false to skip them), plus the rationale you gave for it (null when none). Choosing between the two history tools: `get_my_cl
| Parameter | Type | Required | Notes |
|---|---|---|---|
| token_address | string | yes | Contract address of the ONE token to show trades for. Required. |
| network | string | no | — |
| page | integer | no | — |
| limit | integer | no | — |
| include_fills | boolean | no | — |
The user's raw wallet transaction list, newest first and page-numbered. Filter by transaction_type to answer questions about one kind of movement — deposits, withdrawals, swaps, transfers or trigger-order fills. Choosing between the two history feeds: get_my_activity is the merged, human-readable timeline the app shows, cursor-paginated. get_my_transactions is the raw transaction list, page-
| Parameter | Type | Required | Notes |
|---|---|---|---|
| network | string | no | — |
| token_address | no | Restrict to transactions involving one token. Omit for all. | |
| transaction_type | no | Restrict to one movement type. Omit for every type. trigger_order_placed and trigger_order_cancelled are an order's LIFECYCLE rather than money moving — the description used to list only six of th | |
| page | integer | no | 1-based page number. |
| limit | integer | no | Transactions per page, 1-100. Keep it small. |
The user's AGENTIC wallets, with their addresses. AI Trading is Solana only for now: tell the user to deposit to the Solana one. 🔴 THE USER'S REGULAR APP WALLETS ARE NOT HERE — an agent's world is agentic wallets only, and every other get_my_* tool here reads from one of these, never from the user's primary wallet. This returns the CURRENT USER's own data, resolved from their API key. There is
No parameter schema on file.
One transaction in full detail, by its id. Get the id from get_my_transactions first — this tool does not search or list. This returns the CURRENT USER's own data, resolved from their API key. There is no way to ask about someone else's wallet with this tool.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| transaction_id | string | yes | Transaction id from get_my_transactions. |
The user's watchlists on one network — names and ids only. Pass an id to get_my_watchlist_tokens to read a list's contents. Start here for 'what's on my watchlist' or 'anything on my watchlist moving?'. A watchlist is the tokens the user chose to follow, NOT what they hold (get_my_balances) and NOT other people's wallets. Read-only: adding or removing tokens is not available here. This returns
| Parameter | Type | Required | Notes |
|---|---|---|---|
| network | string | no | — |
The tokens on one of the user's watchlists, each with market data in ONE call, so you can triage a list without a get_token_overview per token. Each row carries price_usd, price_change_24hr (24h %, there is no 1h figure here), market_cap, liquidity_usd, whale_count, key_holder_count and token (address, symbol, safety_tier). safety_tier: green = verified; grey = usually fine (no
| Parameter | Type | Required | Notes |
|---|---|---|---|
| watchlist_id | no | Watchlist id from get_my_watchlists. Omit for the default list. | |
| network | string | no | — |
The user's single orders — limit orders, take-profit and stop-loss. By default only LIVE ones (not executed yet): use that before placing a new order (to avoid duplicates) and to find an order_id for cancel_order. For HISTORY — what filled, what was cancelled and why — pass status="terminal" (optionally with since/until). Filled rows carry filled_price, fill_tx_hash and `slippage_vs_
| Parameter | Type | Required | Notes |
|---|---|---|---|
| network | string | no | — |
| status | no | Omit for LIVE orders only. terminal = every finished order (filled, cancelled, expired, failed) — the history; all = live and finished; or one status / a list of statuses. A resting, unfilled orde | |
| since | no | ISO 8601 time, e.g. 2026-10-23T00:00:00Z. Only orders whose last state change (fill, else cancel/update) is at or after this. | |
| until | no | ISO 8601 upper bound, same clock as since. | |
| limit | integer | no | History only: rows per page, newest first (max 200). |
| page | integer | no | History only: 1-based page number. |
| token_address | no | Contract address: only orders on this token, whether it is the token being sold (TP/SL) or bought (limit buy). Omit for every token. |
The user's DCA schedules — recurring buys or sells that split an amount into slices over time — with progress so far (how many slices have filled and when the next one is due). The same rows get_my_orders returns as dca_schedules; use this one when you only need the DCAs. get_my_orders answers 'what do I have running' in ONE call: orders (limit, take-profit, stop-loss) plus dca_schedules
| Parameter | Type | Required | Notes |
|---|---|---|---|
| network | string | no | — |
| include_terminal | boolean | no | True also returns completed and cancelled schedules. Default: live only. |
The limits the user set on you in the Moby app, READ-ONLY — you cannot change them; only the user can, in the app. Read this before planning trades instead of discovering limits by refusal. - maxTradeUsd / dailyVolumeUsd: per-trade and rolling-24h trading-volume limits (null = uncapped). maxTradeUsd caps BUYS only — any sell passes it, whatever the size or output. Buys (and any other swap) c
No parameter schema on file.
Price a token swap before doing it: how much of output_token the user would receive for amount of input_token, plus price impact, fees, the slippage tolerance (slippage_bps) and the least the route can deliver (minimum_output_amount_ui). Quote output_amount_ui to the user — output_amount is in the token's smallest unit. pricing_basis states what produced it. This only prices the tr
| Parameter | Type | Required | Notes |
|---|---|---|---|
| input_token | string | yes | Contract address of the token being SPENT. |
| output_token | string | yes | Contract address of the token being RECEIVED. |
| amount | number | yes | How much of input_token to spend, in whole token units (not the smallest unit). |
| network | string | no | — |
Execute a swap that get_swap_quote already priced. ⚠️ THIS SPENDS REAL MONEY. It submits a real transaction from the user's wallet using real funds and cannot be undone. Confirm the exact amount, token and network with the user in plain language, and get their explicit go-ahead, BEFORE calling this. Only ever pass a quote_id returned by get_swap_quote in this same conversation, after showing
| Parameter | Type | Required | Notes |
|---|---|---|---|
| quote_id | string | yes | quote_id from a recent get_swap_quote response. |
Buy a token in one step, without a separate quote. ⚠️ THIS SPENDS REAL MONEY. It submits a real transaction from the user's wallet using real funds and cannot be undone. Confirm the exact amount, token and network with the user in plain language, and get their explicit go-ahead, BEFORE calling this. Because there is no quote step, the user does not get to see a price before committing — so confirm
| Parameter | Type | Required | Notes |
|---|---|---|---|
| output_token | string | yes | Contract address of the token to BUY. Get it from search_tokens. |
| network | string | no | — |
| amount_usd | no | How much to spend in US DOLLARS. Mutually exclusive with amount_in. | |
| amount_in | no | How much to spend in whole units of USDC, the only funding asset — SOL is a position, never spent by a buy. Mutually exclusive with amount_usd. | |
| rationale | no | Optional. Your 2–4 line thesis: why this coin, why now, who's in it, what breaks it. Stored with the trade and shown to the user; ≤500 chars. |
Sell a token the user holds, in ONE step, at market — quote and execute happen together on the server, so it never fails on an expired quote while you wait for the user. This is THE tool to close or trim a position. ⚠️ THIS SPENDS REAL MONEY. It submits a real transaction from the user's wallet using real funds and cannot be undone. Confirm the exact amount, token and network with the user in plai
| Parameter | Type | Required | Notes |
|---|---|---|---|
| token_address | string | yes | Contract address of the HELD token to sell. Get it from get_my_balances. |
| network | string | no | — |
| pct | number | no | Percent of the current balance to sell, 1-100. Default 100 = close it. |
| max_slippage_bps | no | Slippage tolerance in basis points (100 = 1%). Omit for Moby's default. |
Check where a quote or swap stands, by request_id (the quote_id) OR transaction_signature — exactly one. Moves nothing and is safe to call again. status is one of: not_executed (quoted but never executed — nothing was traded; it can still be executed until quote_expires_at), expired (never executed and now too old — nothing was traded; get a fresh quote if the user still wants it), `
| Parameter | Type | Required | Notes |
|---|---|---|---|
| request_id | no | The quote_id of the swap you executed. Give this OR transaction_signature. | |
| transaction_signature | no | The transaction_signature the swap returned. Give this OR request_id. |
Place a resting order that executes later when its condition is met: a limit order, take-profit, stop-loss, trigger buy, or a DCA schedule. ⚠️ THIS SPENDS REAL MONEY. It submits a real transaction from the user's wallet using real funds and cannot be undone. Confirm the exact amount, token and network with the user in plain language, and get their explicit go-ahead, BEFORE calling this. It commits
| Parameter | Type | Required | Notes |
|---|---|---|---|
| order_type | string | yes | Which kind of order to place. See the tool description for what each one needs. |
| token_address | string | yes | Contract address of the token the order is about. |
| amount | number | yes | How much to SPEND, in whole token units: the funding asset on a buy, the held token on a sell. |
| network | string | no | — |
| take_profit_price | no | USD price at which to take profit. Required for tp_only and sl_and_tp. | |
| stop_loss_price | no | USD price at which to stop out. Required for sl_only and sl_and_tp; for trigger_buy it is the price the buy fires at when the price drops to it. | |
| limit_price | no | USD limit price. Required for limit_buy and limit_sell. | |
| interval_seconds | no | Seconds between DCA slices. Required for dca_buy and dca_sell. | |
| order_count | no | How many DCA slices to split the amount into. Required for dca_buy and dca_sell. | |
| rationale | no | Optional. Your 2–4 line thesis: why this coin, why now, who's in it, what breaks it. Stored with the trade and shown to the user; ≤500 chars. |
Cancel one resting order — or a whole DCA schedule — so it can no longer fire. Pass EXACTLY ONE of order_id (from get_my_orders) or schedule_id (from get_my_dca_schedules; stops every remaining slice, filled slices stay filled). This does not move funds, but it is not reversible — a cancelled stop-loss stops protecting the position, and re-placing it will be at whatever price is available
| Parameter | Type | Required | Notes |
|---|---|---|---|
| order_id | no | order_id from get_my_orders. Omit when cancelling a DCA by schedule_id. | |
| schedule_id | no | schedule_id from get_my_dca_schedules — cancels that whole DCA. |
The Find-wallets tab shell: a manual 'picks' strip, then one summary per curated wallet list that has rows on this chain (whale groups, KOL groups, proven-trader cohorts). Call this first to learn the valid slug values for get_whalewatch_wallet_list_detail. NOT the same lists as get_whalewatch_lists — that one is for filtering get_whalewatch_feed; this one is for browsing wallets to follow
| Parameter | Type | Required | Notes |
|---|---|---|---|
| network | string | no | — |
One curated wallet list's rows, pre-ranked. slug MUST come from get_whalewatch_wallet_lists — an invented or stale slug is a 404, not an empty list. This is public market data about the whole market — it is NOT about the user's own wallet or holdings. Tools whose names start with get_my_ are the ones that return the user's own data.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slug | string | yes | List slug from get_whalewatch_wallet_lists. |
| network | string | no | — |
Find PUBLIC whale/KOL/trader wallets by a KOL name or a whale-list brand — NOT by pasted address, and NOT the same search as search_tokens. Use discover_wallets_to_follow if you also want to know which of the results the caller already follows. This is public market data about the whole market — it is NOT about the user's own wallet or holdings. Tools whose names start with get_my_ are the o
| Parameter | Type | Required | Notes |
|---|---|---|---|
| query | string | yes | A KOL name or a whale-list brand. Minimum 2 characters. |
| network | string | no | — |
The Find-Wallets suggested pool: PUBLIC wallets ranked for discovery, is_following marked per row. With query set, searches by name/brand or an exact pasted address (followed wallets ARE included). With no query, returns a ranked pool that EXCLUDES wallets the caller already follows — use get_my_followed_wallets to see those. This is public market data about the whole market — it is NOT ab
| Parameter | Type | Required | Notes |
|---|---|---|---|
| query | no | A KOL name, whale-list brand, or exact pasted address. Omit to browse. | |
| wallet_type | string | no | — |
| network | string | no | — |
| limit | integer | no | Wallets to return, 1-50. Keep it small. |
'For you': the tracked wallets that overlap the CALLER's OWN holdings, in the same shape as get_whalewatch_wallet_list_detail. A caller holding nothing Moby tracks gets total: 0, rows: [] — that is a real answer, not an error. This returns the CURRENT USER's own data, resolved from their API key. There is no way to ask about someone else's wallet with this tool.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| network | string | no | — |
Follow a PUBLIC whale/KOL/trader wallet, so its trades appear in get_my_following_feed. Idempotent — following an already-followed wallet is a no-op and does not count against the follow cap (max_follows on get_my_followed_wallets). Moves no money and needs no agentic wallet. Fails if the caller is already at the cap.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | Public wallet ref from a Find-wallets or WhaleWatch tool. |
| network | string | no | — |
| custom_name | no | Optional nickname for this wallet, max 50 characters. |
Unfollow a wallet. Idempotent — a no-op if the caller does not follow it. Also clears the caller's Following-feed history for this wallet, so get_my_following_feed reflects the change immediately. Moves no money.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| wallet_address | string | yes | Public wallet ref, as returned by get_my_followed_wallets. |
| network | string | no | — |
Every wallet the CALLER follows, with max_follows so you can report 'N of 50' without a second call, each row's current list associations, and any nickname set with follow_wallet. This returns the CURRENT USER's own data, resolved from their API key. There is no way to ask about someone else's wallet with this tool.
No parameter schema on file.
Trades made by wallets the CALLER follows, newest first. ⚠️ EMPTY MEANS 'you follow nobody, or nobody you follow has traded recently' — NOT 'no whale activity anywhere'; for the market-wide feed use get_whalewatch_feed. Filters mirror that tool minus list selection, since following is orthogonal to lists. Results are capped. Raise limit or step page only if the answer is genuinely not in the
| Parameter | Type | Required | Notes |
|---|---|---|---|
| network | string | no | — |
| transaction_types | no | buy and/or sell. Omit for both. | |
| wallet_addresses | no | Restrict to specific FOLLOWED wallets. Omit for all followed wallets. | |
| token_address | no | Restrict to trades in one token. Omit for every token. | |
| page | integer | no | 1-based page number. |
| limit | integer | no | Trades per page, 1-100. Keep it small. |
The user's saved trading profile: experience, assets, work mode, sizing and protection (v1 rows read as v2). 🔴 Call this BEFORE ANY OTHER TOOL on every connect — before balances, portfolio, strategies or research. - interview_due: true = onboard first: show onboarding_brief verbatim, then run the skippable 5-question interview in interview_questions, then its closing step (TWO-line playback
No parameter schema on file.
Save the user's interview answers, or record that they skipped. Call it after you played the answers back in TWO lines and the user said yes; or with skipped: true when they decline. Pass profile OR skipped, not both. - replace: false (default) MERGES into what is saved, so for 'update my trading profile' send only the changed fields. replace: true overwrites the whole profile. - Amounts
| Parameter | Type | Required | Notes |
|---|---|---|---|
| profile | no | — | |
| skipped | boolean | no | True when the user declined the interview. |
| replace | boolean | no | False merges into the saved answers; true overwrites them. |
The starter strategies from the Strategies section of AI Trading in the Moby app: each card's id, name, summary, how_it_works, chips (the editable defaults), risk_label, warning and the Moby tools it uses, with the user's max per trade already filled in. Use it during or after onboarding to recommend a card, and whenever the user asks what strategies there are. To match a card to t
No parameter schema on file.
One starter strategy with its ready-to-run prompt — the same text the app copies. Run that prompt as the user's standing instructions for this session. Before starting: confirm the editable numbers (chips: amounts, exits, schedule) with the user, and check get_my_active_strategies so you never run one twice. Once the user says go, record it with save_active_strategy (pass strategy_id). `
| Parameter | Type | Required | Notes |
|---|---|---|---|
| strategy_id | string | yes | A card id from list_strategies. |
| ask_before_every_trade | boolean | no | True adds the 'ask me before every trade' line to the prompt. |
The strategies the user's agents are running, saved on Moby so every client and session sees them: name, strategy_id (the starter card, null = custom), settings, schedule, status (active / paused; pass include_stopped=true for stopped ones too), started_at, last_run_at. Call it at the start of every session to learn what is already running, and before starting a strategy, so two se
| Parameter | Type | Required | Notes |
|---|---|---|---|
| include_stopped | boolean | no | True also returns stopped strategies. |
Record what you run, so other sessions and clients see it. - START: omit active_strategy_id; pass strategy_id for a starter card (its name is used if you omit name) or name for a custom one, plus settings (the numbers the user confirmed: amounts, mix, exits, the ask-first flag) and schedule in plain words ('every 4 hours'). - PAUSE / RESUME / STOP: pass active_strategy_id and `status
| Parameter | Type | Required | Notes |
|---|---|---|---|
| active_strategy_id | no | Omit to start a new one; an id from get_my_active_strategies to update. | |
| strategy_id | no | The starter card id from list_strategies; omit for a custom strategy. | |
| name | no | Display name (max 120 chars). | |
| settings | no | The confirmed numbers as a small JSON object (max 8 KB); {} clears it. | |
| schedule | no | How often it runs, in plain words (max 120 chars). | |
| status | no | active, paused or stopped. | |
| notes | no | Anything to remember (max 1000 chars). | |
| last_run_at | no | ISO 8601 time of the run just finished, e.g. 2026-10-29T14:00:00Z. |
Log a bug, a wrong number (data_issue, name the tool) or an idea to improve Moby, once per issue; tell the user it was logged with its id. Not for payments, lost funds or account problems: send those to support in the Moby app. kind: bug (something broke), data_issue (a Moby number looks wrong; tool_name is required, and expected / actual help), idea (a missing tool or 'they should add X')
| Parameter | Type | Required | Notes |
|---|---|---|---|
| kind | string | yes | bug, data_issue or idea. |
| title | string | yes | One line (max 160 chars). |
| details | string | yes | What happened or what to add (max 2000 chars). |
| tool_name | no | The Moby tool it is about, e.g. get_token_overview. Required for data_issue. | |
| token_address | no | The token's contract address, when it is about one token. | |
| expected | no | What the number should be, and where you saw it (max 500 chars). | |
| actual | no | What Moby returned (max 500 chars). |
Your earlier submissions and their status; mention a shipped one to the user when relevant. Each has id, kind, title, status (new / reviewed / planned / shipped / wont_fix) and the team's reply when there is one, newest first. This returns the CURRENT USER's own data, resolved from their API key. There is no way to ask about someone else's wallet with this tool.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| status | no | Only submissions in this status. | |
| limit | integer | no | How many to return (1-50). |
- Every tool — any call limit is its publisher’s, not ours
- No card, and mcprush charges nothing for it
- Runs at its publisher’s own address — this marketplace is not in the path
- Nothing to cap, because mcprush bills nothing
What counts against your monthly calls
| Tool | Unit | Calls used | Out of the allowance |
|---|
Nothing here is billable: mcprush charges nothing to install Moby or to call it, at any volume.
Two independent axes, because powerful and malicious are different questions. The grade is threat only. The capability level is blast radius, and it is never a penalty on the grade — it is priced as one subtract-only term in the score, where you can see it.
| Term | Level | What it prices | Points |
|---|---|---|---|
| capability-exposure | high | capability blast radius (high) — client exposure if the model is manipulated | −6 |
| coverage-honesty | manifest | inspection depth (manifest) — how much of the target the scan could see | −4 |
What the scan could actually read
A grade is only as meaningful as its coverage, so the scanner publishes its own depth before it publishes its result.
The scan read each tool’s name, description, input schema and annotations exactly as the server listed them the last time it answered us; no code was reviewed. We ask the server again about once a month, and a list that changed is graded again.
The implementation source was not read — this reflects the declared tool metadata only.
Capability — what it could do if the model were manipulated
Tags derived from each tool’s schema and the implementation, not from what the tool calls itself. high is the level these add up to.
| Tool | Capability tags | Why the tag was assigned |
|---|---|---|
| get_screener_leaderboard | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_degen_leaderboard | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_screener_groups | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_group_leaderboard | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_launchpads | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_market_movers | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| search_tokens | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_token_trade_brief | sensitive-sourceuntrusted-input | sensitive-source: keyword "get_token"; untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_token_overview | sensitive-sourceuntrusted-input | sensitive-source: keyword "get_token"; untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_token_risk_signals | sensitive-sourceuntrusted-input | sensitive-source: keyword "get_token"; untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_token_smart_money | sensitive-sourceuntrusted-input | sensitive-source: keyword "get_token"; untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_token_key_holders | sensitive-sourceuntrusted-input | sensitive-source: keyword "get_token"; untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_token_live_feed | sensitive-sourceuntrusted-input | sensitive-source: keyword "get_token"; untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_token_chart | sensitive-sourceuntrusted-input | sensitive-source: keyword "get_token"; untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_token_ohlcv | sensitive-sourceuntrusted-input | sensitive-source: keyword "get_token"; untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_token_price | sensitive-sourceuntrusted-input | sensitive-source: keyword "get_token"; untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_whalewatch_feed | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_whalewatch_feed_window | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_whalewatch_kol_feed | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_smart_money_pulse | sensitive-sourceuntrusted-input | sensitive-source: keyword "dump"; untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_whalewatch_lists | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_whale_wallet_holdings | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_whale_wallet_wins | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_whalewatch_home_feed | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_whalewatch_legend | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_top_held | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_screener_event_filters | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_token_holdings | sensitive-sourceuntrusted-input | sensitive-source: keyword "get_token"; untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_token_holders | sensitive-sourceuntrusted-input | sensitive-source: keyword "get_token"; untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_token_whale_holders | sensitive-sourceuntrusted-input | sensitive-source: keyword "get_token"; untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_kol_top_held | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_token_dca_orders | sensitive-sourceuntrusted-input | sensitive-source: keyword "get_token"; untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_token_x_profile | sensitive-sourceuntrusted-input | sensitive-source: keyword "get_token"; untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_whale_wallet_track_record | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_whale_wallet_pnl_chart | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_whale_wallet_positions | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_whale_wallet_profile | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_whale_wallet_profiles | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_my_balances | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_my_portfolio | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_my_position | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_my_closed_positions | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_my_activity | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_my_token_balance | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_my_closed_trades | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_my_transactions | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_my_wallets | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_my_transaction | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_my_watchlists | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_my_watchlist_tokens | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_my_orders | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_my_dca_schedules | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_my_guardrails | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_swap_quote | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| execute_swap | external-sink | external-sink: declares readOnlyHint: false, destructiveHint: true, openWorldHint: true |
| quick_buy | external-sink | external-sink: declares readOnlyHint: false, destructiveHint: true, openWorldHint: true |
| quick_sell | external-sink | external-sink: declares readOnlyHint: false, destructiveHint: true, openWorldHint: true |
| get_swap_status | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| create_order | external-sink | external-sink: declares readOnlyHint: false, destructiveHint: true, openWorldHint: true |
| cancel_order | external-sink | external-sink: declares readOnlyHint: false, destructiveHint: true, openWorldHint: true |
| get_whalewatch_wallet_lists | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_whalewatch_wallet_list_detail | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| search_whalewatch_wallets | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| discover_wallets_to_follow | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_my_recommended_wallets | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| follow_wallet | external-sink | external-sink: declares readOnlyHint: false, openWorldHint: true |
| unfollow_wallet | external-sink | external-sink: declares readOnlyHint: false, openWorldHint: true |
| get_my_followed_wallets | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_my_following_feed | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_my_trading_profile | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| save_trading_profile | state-write | state-write: declares readOnlyHint: false |
| list_strategies | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_strategy | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_my_active_strategies | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| save_active_strategy | state-write | state-write: declares readOnlyHint: false |
| submit_feedback | state-write | state-write: declares readOnlyHint: false |
| get_my_feedback | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
Toxic-flow graph
The lethal trifecta, checked as a graph rather than as a checklist: untrusted input, a sensitive source and an external sink have to meet before there is a path worth worrying about.
Supply chain and provenance
This is the first scan of this surface here, so there is nothing yet to compare it against.
Every result on this tab comes from one deterministic pass over the published package — offline, rule by rule, and auditable line by line above. Same methodology version, same bytes, same score.
Release history
This is an address its publisher runs: which release it serves is theirs to choose, so there is nothing here to pin. The history below is for reading; the current release on file is 1.0.2.
No release note was published with this version.
One review per account, from a signed-in account that does not publish this listing. Nothing else is asked — you can say what you think before you install it. Publishers can reply once per review, and a review can be edited or deleted by whoever wrote it.
Any signed-in account that does not publish Moby can review it, once — before installing it or after. A review from an account that has installed it is marked as one.
Nobody has reviewed this listing. The rating on the card is the mean of the reviews written here and nothing else, so there is no rating until somebody writes the first — which takes a signed-in account that does not publish it, and nothing else.