TradeRouter/trade-router-mcp (TradeRouter/trade-router-mcp) is an MCP server listed on the M8ven Trust Index. It scores 70 out of 100, grade C. It declares 21 tools. No publisher has claimed this listing.

C
Caution
70/100

TradeRouter/trade-router-mcp

Non-custodial Solana swap & limit order engine for AI agents.

TradeRouter/trade-router-mcp· npm: @traderouter/trade-router-mcp· listed on official

Caution. Specific findings reduced this grade. They are listed on the page. Grades reflect the full trust pyramid: code, verification depth, and reputation. New projects cap at C until adoption is earned.

How we verified

Code Verified⚡ Live Monitored: not connected

Verified is a snapshot. Live keeps it current, and builds your track record.

⚡ Connect GitHub → continuous verification on every pushwhy connect →

Who stands behind it

TradeRouter

Source: Official · also listed on Glama

Is this your MCP?

Claim it to get a verified publisher badge, a free copy of our full audit findings, and direct contact for any high-priority issues we find. Or connect your repo for our deepest verification, Live Monitored: read-only, revoke anytime. What we access →

Install from

The grade above is for the source repository. Registries can serve a different version, so we mark the ones we were not able to read.

// key findings
⚠️
Known vulnerabilities in dependencies: 2 high
Affects packages this MCP installs at runtime. Upgrade or remove the affected dependency.
No credential exfiltration, no sensitive file access, no obfuscation
Static analysis found nothing flowing your secrets to unexpected places.
Open source with a license and README
Anyone can audit the code, the license is declared, and the publisher documents what it does.
🔐
You'll be asked for 1 credential: TRADEROUTER_PRIVATE_KEY
These are read from process.env at runtime. Make sure you trust where they’ll be sent.
// tools this server exposes21 tools

These names and descriptions are the publisher's own, read from the source code. We print them as written. Our assessment is the findings above, not this list.

get_wallet_address

Returns the public Solana wallet address derived from the TRADEROUTER_PRIVATE_KEY environment variable, and triggers the persistent WebSocket connection to api.traderouter.ai for that wallet. WHEN TO USE: Call this once at session start, before any other Trade Router tool. The returned wallet addre

build_swap

Builds an unsigned Solana swap transaction via POST /swap. Returns the transaction as base58 — the caller must decode, sign locally, re-encode as base64, and submit via submit_signed_swap. WHEN TO USE: When you want to inspect or modify the transaction before signing (e.g. agent-layer validation),

submit_signed_swap

Submits a fully-signed, base64-encoded Solana transaction via POST /protect (Jito MEV-protected lane). Blocks until the transaction confirms on-chain. WHEN TO USE: Pair with build_swap when you want to inspect/modify the transaction before signing. For a single-call swap, prefer auto_swap. WHAT IT

auto_swap

Builds, signs, and submits a Solana swap in a single call. Equivalent to build_swap → local sign → submit_signed_swap, but the MCP server handles the encoding conversion (base58 → base64) for you. WHEN TO USE: For most swaps. This is the simplest path. Use build_swap + submit_signed_swap separately

get_holdings

Scans every SPL token account on a wallet and returns the holdings list. Most accurate Solana wallet scanner available — catches tokens that standard RPC token-account scans miss. WHEN TO USE: When you need the full token balance for a wallet, including obscure or newly-launched tokens, before deci

get_mcap

Returns market-cap and price data for one or more SPL tokens. Used by limit-order strategies to compute target market caps relative to current. WHEN TO USE: Before placing a limit_order with a market-cap target (so you know what current mcap is), or for portfolio valuation. WHAT IT DOES: Calls GET

get_flex_card

Returns the URL of a flex trade-card PNG that visualizes a wallet's position in a token (entry price, current PnL, etc.). Used for sharing trades on social media. WHEN TO USE: After a notable swap, to generate a shareable image for X / Discord / Telegram. WHAT IT DOES: Constructs the URL https://a

connect_websocket

Opens (or reuses) the persistent WebSocket connection to wss://api.traderouter.ai/ws for a wallet, performs the Ed25519 challenge-response handshake, and waits up to 25 seconds for the "registered" confirmation. WHEN TO USE: Before placing limit / trailing / TWAP / combo orders. get_wallet_address

connection_status

Returns the current state of the persistent WebSocket connection for a wallet (connected, registered, last heartbeat time, queued message count). WHEN TO USE: For debugging. If place_*_order calls are failing or hanging, check this first to see whether the WebSocket is actually authenticated. WHAT

get_fill_log

Returns the in-memory log of all order_filled events received over the WebSocket since the MCP server process started (capped at 200 entries). WHEN TO USE: Audit which orders have triggered, with their on-chain signatures. Useful for end-of-session reporting or debugging "did my order fill?" WHAT

place_limit_order

Places a market-cap-triggered limit order over the WebSocket. The server polls market cap ~every 5 seconds and fires the swap when the target is crossed. WHEN TO USE: When you want to enter or exit at a specific market-cap level, not at current price. Examples: "buy BONK when its mcap drops to $500

place_trailing_order

Places a trailing-stop sell or trailing buy order over the WebSocket. The server tracks the high-water mark (or low-water mark for buy) of mcap and fires when it retraces by trail BPS. WHEN TO USE: To ride a trend without picking a fixed exit. "Sell BONK when mcap drops 10% from its peak" — sell tr

place_twap_order

Places a Time-Weighted Average Price (TWAP) buy or sell order. The total amount is split into N equal slices executed every (duration / frequency) seconds. WHEN TO USE: For DCA, large entries/exits where minimizing market impact matters more than getting a single price. Example: "DCA 1 SOL into JUP

place_limit_twap_order

COMBO ORDER: Wait for a market-cap target to be crossed, then execute the entry/exit as a TWAP rather than a single swap. Server-orchestrated; no client-side state machine needed. WHEN TO USE: When you want a trigger-then-distribute pattern. Example: "If BONK's mcap hits $500M, ladder out of my pos

place_trailing_twap_order

COMBO ORDER: Wait for a trailing-stop trigger, then execute the exit as a TWAP rather than a single swap. WHEN TO USE: To ride a trend with a trailing stop, but exit gradually via TWAP when the trail fires (minimizing market impact on a low-liquidity exit). Example: "Sell BONK if mcap drops 15% fro

place_limit_trailing_order

COMBO ORDER: Wait for a limit target, then activate a trailing stop. When the trail triggers, execute as a SINGLE swap (not TWAP). WHEN TO USE: To enter at a specific mcap, then ride the trend with a trailing stop. Example: "Buy BONK if mcap drops to $500M, then sell with a 15% trailing stop after

place_limit_trailing_twap_order

COMBO ORDER (the full chain): Wait for a market-cap limit target → activate trailing stop → on trail trigger, execute exit/entry as TWAP slices. WHEN TO USE: For the most sophisticated single-tool strategy. Example: "Buy BONK at mcap $500M, then sell with a 15% trailing stop, and when the trail fir

list_orders

Returns all currently active orders (limit, trailing, TWAP, combo) for a wallet. Used to audit pending orders and find order_ids for cancel_order or extend_order. WHEN TO USE: Periodically, to detect expired orders (the server does NOT push an expiry event — orders silently disappear from results w

check_order

Returns the current status of a specific order by order_id. More targeted than list_orders. WHEN TO USE: To check whether a known order has triggered, expired, or been cancelled. Useful when polling for a specific order's outcome rather than scanning the full list. WHAT IT DOES: Sends { action: "c

cancel_order

Cancels an active limit, trailing, TWAP, or combo order. Once cancelled, the order is removed server-side and no further fills will arrive. WHEN TO USE: To kill an order before it triggers (e.g. you no longer want to take that position) or to halt remaining TWAP slices. WHAT IT DOES: Sends { actio

extend_order

Extends the expiry time of an active limit or trailing order. expiry_hours sets the NEW total lifetime (counted from order creation, not from now). WHEN TO USE: When you want to keep a pending order alive longer than the original expiry_hours allowed (max 336 = 14 days). WHAT IT DOES: Sends { acti

// known CVEs in dependencies2 high1 low

Disclosed vulnerabilities in this server's declared npm dependencies (via OSV). Whether each is reachable depends on the installed versions.

high@modelcontextprotocol/sdk@1.0.0GHSA-w48q-cv73-mx4w

Model Context Protocol (MCP) TypeScript SDK does not enable DNS rebinding protection by default

highws@8.18.0GHSA-96hv-2xvq-fx4p

ws: Memory exhaustion DoS from tiny fragments and data chunks

ws: Uninitialized memory disclosure

Depend on this server? Get alerted when its CVEs change.Watch this server free →
// environment variables
To run this server yourself, you supply these values. They go in your own MCP client configuration and stay on your machine. The secret label means the value is sensitive, not that the server mishandles it.
configSOLANA_RPC_URL❌ https://api.mainnet-beta.solana.com Custom RPC for reads
configTRADEROUTER_DRY_RUN
🔐 secretTRADEROUTER_PRIVATE_KEY3. MCP signs the tx locally using
configTRADEROUTER_REQUIRE_ORDER_CREATED_SIGNATURE❌ true Verify server signatures on order_created
configTRADEROUTER_REQUIRE_SERVER_SIGNATURE❌ true Verify server signatures on order_filled / twap_execution
configTRADEROUTER_SERVER_PUBKEY❌ baked-in trust anchor Override the server's Ed25519 trust anchor
configTRADEROUTER_SERVER_PUBKEY_NEXT❌ (unset) Accept messages signed by this key in addition to the primary (key rotation)
// quality suggestions

Tool annotations

No tools have read-only/destructive annotations

Add readOnlyHint or destructiveHint annotations to every tool so hosts can warn users before invoking.

All four hints declared on every tool

21/21 tools missing one or more hints — get_wallet_address (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint); build_swap (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint); submit_signed_swap (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint), +18 more. OpenAI's directory rejects tools where any of the four hints are missing or non-boolean.

For every tool, set all four hints (readOnlyHint, destructiveHint, idempotentHint, openWorldHint) to explicit true/false values that match the handler’s actual behaviour.

Tests exist

No test files found

Add tests that exercise each declared tool.

Production dependencies are patched

0 critical, 2 high severity in production deps — @modelcontextprotocol/sdk@1.0.0 (high), ws@8.18.0 (high)

Run npm audit fix, or upgrade the affected packages to a non-vulnerable version.

Dependency freshness

1/5 production deps stale: tweetnacl@2023-04-12 (3.3y)

Claim the listing to review these findings one by one and send us a correction where you disagree, straight to the team. Claiming also means we tell you when the grade moves, and reach you first if we find anything urgent.

// full audit trail
The findings above are the summary. The full trail, every check we ran, each deduction, the network hosts observed and the dependency advisories, goes to verified publishers, along with an alert whenever a new one lands. Verified publishers can also review each finding and dispute it in one click. Publisher corrections have sharpened several of our checks this month, because the maintainer knows the codebase better than any scanner.
// improvement guidance — verified publishers only
We have 4 concrete improvements we can share with the publisher of this MCP. Each comes with specific guidance to raise the trust score.
// embed badge in your README
[![M8ven Verified](https://m8ven.ai/badge/mcp/traderouter/trade-router-mcp?variant=verified)](https://m8ven.ai/mcp/traderouter/trade-router-mcp)
Shows verification status without the grade. Want the grade badge instead? Remove ?variant=verified from the URL.
commit: 95d9ace3fa586bc626704e84054302048559b35a
code hash: 2a501739ddbd24e02a59789fa76f3575036648e13b68b13abd7406f4ed4106f9
view raw JSON →
Check MCPs from inside your assistant
Tool Check · MCP

Vetting this one by hand? Tool Check is an MCP that scores other MCPs. Add it once and ask Claude, ChatGPT, or any MCP client to grade a server, surface CVEs, check the publisher, and suggest safer alternatives — before you install.

https://m8ven.ai/api/mcp/tool-check
check_toolsearch_toolscompare_toolsrecommend_alternativescheck_publisherreport_concern
How to add it →Free · no account needed · works in any MCP client