MangroveTrader

Social trading leaderboard. 9 MCP tools, x402 micropayments (USDC on Base).

Should I use this

Quality & Safety

A
Description quality
98%
Schema completeness
91%
Naming quality
80%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~2,417Tokens (tool definitions)
~1.8 KBTypical response size
Moderate attention impact (1.89% of 128k context)

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-http

What it can do

Tool inventory

Tools (10)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
⚪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

Rate this Server

Evidence

Recent observations

verifiedversion not recorded10 tools
verifiedversion not recorded10 tools
verifiedversion not recorded10 tools
verifiedversion not recorded10 tools
verifiedversion not recorded10 tools
verifiedversion not recorded10 tools