MangroveTrader
Social trading leaderboard. 9 MCP tools, x402 micropayments (USDC on Base).
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"mangrove-trader": {
"url": "https://api.mangrovetraders.com/mcp/"
}
}
}Remote endpoints
https://api.mangrovetraders.com/mcp/streamable-httpWhat it can do
Tool inventory
Tools (10)
⚪trader_login
Use this when you need to sign in before calling a tool that takes an auth_token and MT_AUTH_TOKEN is not set. Returns a link to verify your X identity and the command that saves the session token, which stays valid for 30 days.
Input Schema
{
"type": "object",
"properties": {},
"title": "_loginArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "_loginOutput"
}🟢trader_my_stats(auth_token, twitter_handle)
Use this for a quick snapshot of your own standing: composite score, rank, total trades, qualified status and open positions (free, own account only). For returns, drawdown and win rate use trader_performance_report; for other traders use trader_search_trader.
Input Schema
{
"type": "object",
"properties": {
"auth_token": {
"description": "Session token for your X-verified account. Read it from the MT_AUTH_TOKEN environment variable; if it is not set, call trader_login first.",
"title": "Auth Token",
"type": "string"
},
"twitter_handle": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional. Your own X handle, with or without @. Must match the account the auth_token belongs to, otherwise the call returns PAYMENT_REQUIRED.",
"title": "Twitter Handle"
}
},
"required": [
"auth_token"
],
"title": "_my_statsArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "_my_statsOutput"
}🟢trader_performance_report(auth_token, timeframe)
Use this when you want a detailed breakdown of your own results over a timeframe: return statistics, volatility, Sharpe ratio, maximum drawdown, win rate, composite score and the scoring weights. For a quick score and rank check use trader_my_stats.
Input Schema
{
"type": "object",
"properties": {
"auth_token": {
"description": "Session token for your X-verified account. Read it from the MT_AUTH_TOKEN environment variable; if it is not set, call trader_login first.",
"title": "Auth Token",
"type": "string"
},
"timeframe": {
"default": "all_time",
"description": "Reporting period: daily, weekly, monthly, all_time, 7d or 30d (7d is weekly, 30d is monthly). Defaults to all_time.",
"title": "Timeframe",
"type": "string"
}
},
"required": [
"auth_token"
],
"title": "_performance_reportArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "_performance_reportOutput"
}🟢trader_last_trade(twitter_handle)
Use this when you want to see a trader's most recent trade (action, symbol, quantity, price, time) and their total trade count; free, no auth_token, works for any trader. It returns one trade only, so for a list of trades use trader_get_trade_history.
Input Schema
{
"type": "object",
"properties": {
"twitter_handle": {
"description": "X handle of the trader to look up, with or without @.",
"title": "Twitter Handle",
"type": "string"
}
},
"required": [
"twitter_handle"
],
"title": "_last_tradeArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "_last_tradeOutput"
}🔴trader_cancel_last(auth_token)
Use this when you made a mistake and want to undo your most recent trade; it deletes the trade and updates your position, but only within 5 minutes of it being made, and the deletion cannot be undone. Acts only on your own account.
Input Schema
{
"type": "object",
"properties": {
"auth_token": {
"description": "Session token for your X-verified account. Read it from the MT_AUTH_TOKEN environment variable; if it is not set, call trader_login first.",
"title": "Auth Token",
"type": "string"
}
},
"required": [
"auth_token"
],
"title": "_cancel_lastArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "_cancel_lastOutput"
}🔴trader_watch(auth_token, target_handle)
Use this when you want to add a trader to your watchlist; returns your updated watch count (activity notifications are not available yet). You must have made a trade yourself and cannot watch yourself; to remove a trader use trader_unwatch.
Input Schema
{
"type": "object",
"properties": {
"auth_token": {
"description": "Session token for your X-verified account. Read it from the MT_AUTH_TOKEN environment variable; if it is not set, call trader_login first.",
"title": "Auth Token",
"type": "string"
},
"target_handle": {
"description": "X handle of the trader to add to your watchlist, with or without @.",
"title": "Target Handle",
"type": "string"
}
},
"required": [
"auth_token",
"target_handle"
],
"title": "_watchArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "_watchOutput"
}🔴trader_unwatch(auth_token, target_handle)
Use this when you want to remove a trader from your watchlist; returns a confirmation and is safe to repeat. To add a trader use trader_watch.
Input Schema
{
"type": "object",
"properties": {
"auth_token": {
"description": "Session token for your X-verified account. Read it from the MT_AUTH_TOKEN environment variable; if it is not set, call trader_login first.",
"title": "Auth Token",
"type": "string"
},
"target_handle": {
"description": "X handle of the trader to remove from your watchlist, with or without @.",
"title": "Target Handle",
"type": "string"
}
},
"required": [
"auth_token",
"target_handle"
],
"title": "_unwatchArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "_unwatchOutput"
}🟢trader_get_leaderboard(payment, timeframe, limit)
Use this when you want the ranked list of top traders for a timeframe; paid with x402 ($0.25 USDC on Base for up to 100 rows, plus $0.01 per 4 more rows, maximum 500; call without payment to see the exact price). To look up one trader use trader_search_trader or trader_last_trade.
Input Schema
{
"type": "object",
"properties": {
"payment": {
"default": "",
"description": "Base64-encoded x402 payment signature. Leave empty on the first call to receive the price and payment requirements, then call again with the signed payment.",
"title": "Payment",
"type": "string"
},
"timeframe": {
"default": "all_time",
"description": "Leaderboard period: daily, weekly, monthly, all_time, 7d or 30d (7d is weekly, 30d is monthly). Defaults to all_time.",
"title": "Timeframe",
"type": "string"
},
"limit": {
"default": 100,
"description": "Number of rows to return, 1 to 500. Defaults to 100; the price rises above 100 rows.",
"title": "Limit",
"type": "integer"
}
},
"title": "_get_leaderboardArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "_get_leaderboardOutput"
}🟢trader_search_trader(query, payment, limit)
Use this when you want to find a trader by X handle or display name; returns up to 50 matches with handle, name, score, rank, trade count and qualified status. Paid with x402 ($0.02 USDC on Base; call without payment first to get the requirements). For the full ranking use trader_get_leaderboard.
Input Schema
{
"type": "object",
"properties": {
"query": {
"description": "Text to match against trader handles and display names. Maximum 100 characters; letters, digits, @, - and spaces are used, other characters are dropped.",
"title": "Query",
"type": "string"
},
"payment": {
"default": "",
"description": "Base64-encoded x402 payment signature. Leave empty on the first call to receive the price and payment requirements, then call again with the signed payment.",
"title": "Payment",
"type": "string"
},
"limit": {
"default": 20,
"description": "Maximum number of results, 1 to 50. Defaults to 20.",
"title": "Limit",
"type": "integer"
}
},
"required": [
"query"
],
"title": "_search_traderArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "_search_traderOutput"
}🟢trader_get_trade_history(twitter_handle, payment, limit, auth_token)
Use this when you want a trader's list of trades, newest first (action, symbol, asset class, quantity, price, time); free for your own trades with auth_token, otherwise $0.01 USDC per 3 trades with x402 on Base (call without payment to see the price). For only the latest trade use trader_last_trade.
Input Schema
{
"type": "object",
"properties": {
"twitter_handle": {
"description": "X handle of the trader whose trades you want, with or without @.",
"title": "Twitter Handle",
"type": "string"
},
"payment": {
"default": "",
"description": "Base64-encoded x402 payment signature. Leave empty on the first call to receive the price and payment requirements, then call again with the signed payment.",
"title": "Payment",
"type": "string"
},
"limit": {
"default": 0,
"description": "Number of most recent trades to return, up to 1000. 0 (the default) returns all trades. For someone else's history the price scales with this number.",
"title": "Limit",
"type": "integer"
},
"auth_token": {
"default": "",
"description": "Optional. Your session token from MT_AUTH_TOKEN. If it belongs to twitter_handle, the history is free and no payment is needed.",
"title": "Auth Token",
"type": "string"
}
},
"required": [
"twitter_handle"
],
"title": "_get_trade_historyArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "_get_trade_historyOutput"
}Community
Evidence