Chameleons

Polymarket traders checked for copy trading: 1–5★ or Can't copy. 90 d · modelled · not advice.

Should I use this

Quality & Safety

A
Description quality
87%
Schema completeness
74%
Naming quality
97%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,037Tokens (tool definitions)
~1.2 KBTypical response size
Moderate attention impact (0.81% 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": {
    "polymarket": {
      "url": "https://chameleons.markets/mcp"
    }
  }
}

Remote endpoints

https://chameleons.markets/mcpstreamable-http

What it can do

Tool inventory

Tools (6)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢find_traders(cat, stars, state, copyable, ret_lo, ...)

Polymarket traders, filtered and sorted like the page; head lines say what applied and what the defaults hid. copyable: % of checked trades a follower could fill (n=checked); ret_lo: ROIC, profit per copy as % of stake, 80% low end (n=copy10_n; 4★+ needs a 90% one above 0); crowd: % copied within 2 s, upper bound (n=crowd_n). <=4 KB: the rows that fit; the rows line pages on.

Input Schema

{
  "type": "object",
  "properties": {
    "cat": {
      "type": "string",
      "enum": [
        "politics",
        "sports",
        "crypto",
        "esports",
        "finance",
        "geopolitics",
        "tech",
        "culture",
        "economics",
        "weather",
        "mentions"
      ],
      "description": "category; children fold (iran → geopolitics)"
    },
    "stars": {
      "type": "string",
      "enum": [
        "1",
        "2",
        "3",
        "4",
        "5",
        "all"
      ],
      "description": "min stars 1–5, or all; default 3"
    },
    "state": {
      "type": "string",
      "enum": [
        "rated",
        "too_few",
        "cant_copy"
      ],
      "description": "rated, too_few or cant_copy"
    },
    "copyable": {
      "type": "number",
      "description": "min Copyable %, 0–100"
    },
    "ret_lo": {
      "type": "number",
      "description": "ROIC 80% low end above, %"
    },
    "copy10_lo": {
      "type": "number",
      "description": "Copy / $10 low end above, USD (n ≥ 10)"
    },
    "hold_h": {
      "type": "number",
      "description": "max median hold, hours"
    },
    "wk": {
      "type": "number",
      "description": "min copyable trades a week"
    },
    "uncrowded": {
      "type": "string",
      "enum": [
        "1",
        "0"
      ],
      "description": "1: crowd <= 20%, 0: over"
    },
    "active_d": {
      "type": "string",
      "enum": [
        "7",
        "30"
      ],
      "description": "traded within 7 or 30 days"
    },
    "checked": {
      "type": "integer",
      "description": "min checked trades"
    },
    "no": {
      "type": "string",
      "description": "keep rows checked clean of these flags, comma list"
    },
    "kind": {
      "type": "string",
      "enum": [
        "bot",
        "human",
        "unclear"
      ],
      "description": "bot, human or unclear"
    },
    "q": {
      "type": "string",
      "description": "name, 0x address, 8-hex or Polymarket URL"
    },
    "sort": {
      "type": "string",
      "enum": [
        "stars",
        "ret_lo",
        "copy10_lo",
        "copyable",
        "wk",
        "hold_h",
        "ret",
        "ret_shrunk"
      ],
      "description": "stars (default: then ret_shrunk), ret_lo, copyable, wk or hold_h; rated first"
    },
    "limit": {
      "type": "integer",
      "description": "rows, default 50; 0 = all"
    },
    "offset": {
      "type": "integer",
      "description": "rows to skip"
    },
    "fields": {
      "type": "string",
      "description": "all, or a comma list of columns"
    },
    "url": {
      "type": "string",
      "description": "a chameleons.markets list URL instead"
    },
    "format": {
      "type": "string",
      "enum": [
        "tsv",
        "json"
      ]
    }
  }
}
🟢get_trader(trader, cat, format)

One trader: a row per category, rule check, radar with n, stars history, 5 newest trades. <=2 KB.

Input Schema

{
  "type": "object",
  "properties": {
    "trader": {
      "type": "string",
      "description": "slug, 0x wallet, 8-hex, Polymarket URL or name"
    },
    "cat": {
      "type": "string"
    },
    "format": {
      "type": "string",
      "enum": [
        "tsv",
        "json"
      ]
    }
  },
  "required": [
    "trader"
  ]
}
🟢list_categories(format)

Rows per category at each stars level, plus the page's chip counts. <=800 B.

Input Schema

{
  "type": "object",
  "properties": {
    "format": {
      "type": "string",
      "enum": [
        "tsv",
        "json"
      ]
    }
  }
}
🟢explain_rating(trader, cat, format)

The 1-5★ rule; with trader, that trader's check per level, radar and stars history. <=1.5 KB.

Input Schema

{
  "type": "object",
  "properties": {
    "trader": {
      "type": "string",
      "description": "as get_trader"
    },
    "cat": {
      "type": "string"
    },
    "format": {
      "type": "string",
      "enum": [
        "tsv",
        "json"
      ]
    }
  }
}
🟢get_copy_recipe(trader, cat)

One trader's copy recipe for your own agent (/traders/<slug>/copy.md): watch, rules, costs, YAML. Not advice. <=5 KB.

Input Schema

{
  "type": "object",
  "properties": {
    "trader": {
      "type": "string",
      "description": "as get_trader"
    },
    "cat": {
      "type": "string"
    }
  },
  "required": [
    "trader"
  ]
}
🟢get_bot_guide

How to build a copy bot and steer it with find_traders' filters (/bots.md). Not advice.

Input Schema

{
  "type": "object",
  "properties": {}
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded6 tools