Polymarket Tennis
livetennisapi/livetennisapi-mcp
Build observe-only Polymarket and Kalshi tennis market tooling on the polymarket-tennis Python package (MIT) plus the Live Tennis API free tier.
Polymarket address profiler — input any 0x address, get a complete trading profile with PnL, win rate, positions, category breakdown, and top trades.
$ npx skills add runesleo/polymarket-toolkit --skill polymarket-profile -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install runesleo/polymarket-toolkit polymarket-profile --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/runesleo/polymarket-toolkit.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/polymarket-profile .claude/skills/polymarket-profile && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "polymarket-profile" agent skill from https://github.com/runesleo/polymarket-toolkit/tree/main/skills/polymarket-profile into .claude/skills/polymarket-profile/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "polymarket-profile", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/runesleo/polymarket-toolkit/tree/main/skills/polymarket-profileType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add runesleo/polymarket-toolkit --skill polymarket-profile -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install runesleo/polymarket-toolkit polymarket-profile --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/runesleo/polymarket-toolkit.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/polymarket-profile .agents/skills/polymarket-profile && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "polymarket-profile" agent skill from https://github.com/runesleo/polymarket-toolkit/tree/main/skills/polymarket-profile into .agents/skills/polymarket-profile/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "polymarket-profile", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add runesleo/polymarket-toolkit --skill polymarket-profile -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install runesleo/polymarket-toolkit polymarket-profile --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/runesleo/polymarket-toolkit.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/polymarket-profile .cursor/skills/polymarket-profile && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "polymarket-profile" agent skill from https://github.com/runesleo/polymarket-toolkit/tree/main/skills/polymarket-profile into .cursor/skills/polymarket-profile/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "polymarket-profile", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/runesleo/polymarket-toolkit.git --path skills/polymarket-profile--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add runesleo/polymarket-toolkit --skill polymarket-profile -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install runesleo/polymarket-toolkit polymarket-profile --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/runesleo/polymarket-toolkit.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/polymarket-profile .gemini/skills/polymarket-profile && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "polymarket-profile" agent skill from https://github.com/runesleo/polymarket-toolkit/tree/main/skills/polymarket-profile into .gemini/skills/polymarket-profile/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "polymarket-profile", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install runesleo/polymarket-toolkit polymarket-profileInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add runesleo/polymarket-toolkit --skill polymarket-profile -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/runesleo/polymarket-toolkit.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/polymarket-profile .github/skills/polymarket-profile && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "polymarket-profile" agent skill from https://github.com/runesleo/polymarket-toolkit/tree/main/skills/polymarket-profile into .github/skills/polymarket-profile/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "polymarket-profile", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add runesleo/polymarket-toolkit --skill polymarket-profile -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install runesleo/polymarket-toolkit polymarket-profile --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/runesleo/polymarket-toolkit.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/polymarket-profile .opencode/skills/polymarket-profile && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "polymarket-profile" agent skill from https://github.com/runesleo/polymarket-toolkit/tree/main/skills/polymarket-profile into .opencode/skills/polymarket-profile/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "polymarket-profile", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
polymarket-profilePolymarket address profiler — input any 0x address, get a complete trading profile with PnL, win rate, positions, category breakdown, and top trades.
Polymarket Profile is an agent skill from runesleo/polymarket-toolkit. Polymarket address profiler — input any 0x address, get a complete trading profile with PnL, win rate, positions, category breakdown, and top trades. All data from public APIs, no local database needed.
Its SKILL.md is about 3.7k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Business, Finance & HR, covering Trading and backtesting and Performance optimization. It works with Polymarket and TypeScript. The repository describes itself as: CLI + AI Skills workflow for profiling Polymarket traders from an address. The licence is MIT.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 4a66e7d. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
Bash(curl:*)Bash(node:*)ReadWriteEditFrom allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
curlFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
lb-api.polymarket.comdata-api.polymarket.comgamma-api.polymarket.comclob.polymarket.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Polymarket Profile loads about 3.7k tokens when it runs. Until then it costs about 55 tokens; SKILL.md has 1,517 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from runesleo/polymarket-toolkit at commit 4a66e7d, republished under its MIT licence (© runesleo). 1,517 words, ~3,735 tokens.
.claude/skills/polymarket-profile/SKILL.md (or your agent's skills folder).Generate a complete trading profile for any Polymarket address. All data comes from public APIs in real-time — no local database or API key required.
User provides a Polymarket identity and wants analysis, profile, or trading overview.
The skill requires a 0x proxy wallet address. Users may provide:
| Input Type | Example | How to handle |
|---|---|---|
| 0x address | 0x63ce3421... | Use directly |
| Profile URL | polymarket.com/profile/Theo4 | Extract username from URL, then resolve via leaderboard lookup (see below) |
| Username | Theo4 | Resolve via leaderboard lookup (see below) |
Step 1: Try leaderboard lookup — Search lb-api.polymarket.com/profit to resolve username → address.
# Paginate through the leaderboard searching for the username
# Start with offset=0, increment by 500 until found or no more results
curl -s "https://lb-api.polymarket.com/profit?window=all&limit=500&offset=0"Response is an array of objects with name, pseudonym, and proxyWallet fields. Search for a case-insensitive match on name or pseudonym.
proxyWallet as the 0x address, continue to Step 1 of executionStep 2: Manual fallback (only if leaderboard lookup fails)
"This username isn't in the Polymarket leaderboard (only ranked users can be auto-resolved). You can find the 0x address by:
- Open the profile page on Polymarket
- Click the address/wallet icon near the username — it copies the 0x address
- Or check the browser URL — some profile pages show the address"
NOTE: Leaderboard lookup covers all users with a PnL ranking (tens of thousands). Only very new or inactive accounts with zero trading history won't be found.
All endpoints are public, no authentication needed.
| Endpoint | Base URL | Purpose |
|---|---|---|
| LB API | https://lb-api.polymarket.com | PnL, volume, rankings |
| Data API | https://data-api.polymarket.com | Positions, activity, trades |
| CLOB API | https://clob.polymarket.com | Orderbook, market prices |
| Gamma API | https://gamma-api.polymarket.com | Market metadata, events, categories |
Run steps 1-4 in parallel where possible to minimize latency.
curl -s "https://lb-api.polymarket.com/profit?window=all&address={ADDRESS}"Response is an array. Extract [0].amount for total PnL, [0].name for username.
NOTE: lb-api only returns amount (total PnL). It does NOT return invested/numTrades/numWins. Those must be computed from positions (Step 2) and activity (Step 3).
Also fetch time-windowed PnL for trend:
curl -s "https://lb-api.polymarket.com/profit?window=7d&address={ADDRESS}"
curl -s "https://lb-api.polymarket.com/profit?window=30d&address={ADDRESS}"curl -s "https://data-api.polymarket.com/positions?user={ADDRESS}&sizeThreshold=0&limit=100&offset=0"Paginate with offset parameter: if response returns exactly 100 records, fetch next page with offset=100, offset=200, etc. until fewer than 100 returned.
Each position object contains:
| Field | Description |
|---|---|
title | Market question |
outcome | "Yes" or "No" |
size | Number of shares held |
avgPrice | Average entry price |
curPrice | Current market price |
initialValue | Total cost (size × avgPrice) |
currentValue | Current value (size × curPrice) |
cashPnl | Realized + unrealized PnL |
percentPnl | PnL as percentage |
totalBought | Total shares ever bought |
realizedPnl | PnL from closed portions |
redeemable | Can claim settlement winnings |
endDate | Market expiry date |
eventSlug | Event identifier for Gamma API |
Extract:
redeemable == false AND currentValue > 0currentValuecurrentValue for open positionsClassify positions into three buckets:
| Bucket | Condition | Meaning |
|---|---|---|
| Won | redeemable == true AND currentValue > 0 | Market settled in user's favor, awaiting redemption |
| Lost | redeemable == true AND currentValue == 0 | Market settled against user |
| Open | redeemable == false AND currentValue > 0 | Market not yet settled |
Win Rate = Won / (Won + Lost)
IMPORTANT: Do NOT use cashPnl > 0 to determine wins. Winning positions have currentValue > 0 (shares worth $1) even if cashPnl appears negative due to partial sells. The redeemable flag is the definitive settlement indicator.
For inactive accounts, the positions API may return very few records (settled positions get cleaned up). If Won + Lost < 3, fall back to activity-based estimation:
slug (market)slugcurl -s "https://data-api.polymarket.com/activity?user={ADDRESS}&limit=500"IMPORTANT: You MUST paginate to get complete data. Large accounts have 10,000+ records. 500 records is NOT enough for an accurate profile.
Loop:
1. First request: /activity?user={ADDRESS}&limit=500
2. Get `timestamp` of the LAST record in the response
3. Next request: /activity?user={ADDRESS}&limit=500&end={last_timestamp}
4. Repeat until response returns fewer than 500 records (= last page)
5. Merge all resultsInform user of progress for large accounts: "Fetching activity... page X (Y records so far)"
Each activity object contains: type, size, usdcSize, price, side, title, slug, timestamp, outcome.
Classify by type field:
| Type | What it means |
|---|---|
| TRADE | Bought or sold shares (check side field: "BUY" or "SELL") |
| SPLIT | Created YES+NO pairs from USDC (market-neutral entry) |
| MERGE | Combined YES+NO back to USDC (exit / arbitrage capture) |
| REDEEM | Claimed winnings after market settlement |
| CONVERSION | Converted between YES/NO (special market operation) |
| REBATE | Fee rebate from maker orders |
Count and sum usdcSize for each type. Also track unique markets (slug) for diversity analysis.
For each position, fetch market metadata via Gamma API using the eventSlug from positions:
curl -s "https://gamma-api.polymarket.com/events?slug={eventSlug}"Or batch multiple slugs. Each event has a category field and a tags array (each tag has a label field).
Gamma API categories are legacy naming. Map to Polymarket's frontend categories:
| Gamma category / tag label | Display Category |
|---|---|
Sports, NBA Playoffs, Chess, Esports, any sports team name | Sports |
Crypto, NFTs, Bitcoin, Ethereum | Crypto |
US-current-affairs, Elections, any president/congress/party keyword | Politics |
Ukraine & Russia, Iran, any war/military/invasion keyword | Geopolitics |
Business, any GDP/oil/fed/rate keyword | Finance |
Pop-Culture, Art, Coronavirus | Culture |
| temperature/weather/celsius keyword in title | Weather |
| AI/tech/SpaceX keyword in title | Tech |
| Musk/tweet keyword in title | Musk/Tweets |
| No match | Other |
Priority: Use Gamma category field first. If it's missing or too generic (All), fall back to tag labels. If still unclear, infer from market title keywords.
NOTE: Gamma API may return empty [] for old/settled markets. This is expected — fall back to keyword inference from market titles in activity data.
Optimization: Collect all unique eventSlug values from positions first, then batch fetch from Gamma (avoid one API call per position). Group by slug to avoid duplicates.
Compute the percentage distribution by volume invested.
Analyze data from Steps 1-4 to classify the address into a trading pattern. Use multiple dimensions — no single metric is sufficient.
From activity data:
trade_count: total TRADE recordssplit_count / split_volume: SPLIT records and USDC volumemerge_count / merge_volume: MERGE records and USDC volumeredeem_volume: total REDEEM volumeunique_markets: number of distinct slug valuesavg_trade_size: total trade volume / trade counttrade_frequency: trade count / active days (first to last timestamp)From positions data:
open_count: open positions (not redeemable)settled_count: won + lostconcentration: top 3 positions as % of total investedEvaluate in this order (first match wins):
| Pattern | Conditions | Description |
|---|---|---|
| SPLIT Arbitrage | split_volume > trade_volume × 0.2 AND merge_volume > 0 | Enters via SPLIT (creates YES+NO pairs), sells one side or MERGEs back. Capital-efficient, market-neutral entry. |
| Market Maker | trade_count > 500 AND unique_markets < 15 AND avg_trade_size < $20 | High-frequency small trades concentrated in few markets. Provides liquidity, earns spread. |
| Whale / Concentrated | concentration > 60% AND unique_markets < 10 | Heavy capital in a few markets. High-conviction directional bets. |
| Diversified | unique_markets > 50 | Spread across many markets. Portfolio approach, lower per-market risk. |
| Small Trader | trade_count < 50 AND total_invested < $500 | Limited activity. New or casual user. |
| Mixed | None of the above | Combination of strategies, no dominant pattern. |
🎯 Strategy Pattern: {pattern_name}
{1-2 sentence explanation based on actual numbers}
Key metrics: {trade_count} trades across {unique_markets} markets, avg ${avg_trade_size}/tradeDo NOT reveal specific thresholds used for classification. Just state the pattern name and explain it in plain language using the trader's actual data.
From positions data (not activity), use cashPnl field for settled positions:
cashPnlcashPnlFor each: market title, outcome (Yes/No), entry price (avgPrice), PnL amount.
NOTE: cashPnl from positions is approximate (affected by partial sells). This is acceptable for v0.1. Do NOT attempt to match individual BUY→SELL/REDEEM from activity — that requires complex logic and is not worth the accuracy gain for a profile overview.
If positions API returns very few settled records, estimate Top Trades from activity:
slug, sum usdcSize per market (= total invested)slug, sum usdcSize per market (= total payout)Output the complete profile in this format:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Polymarket Profile: {ADDRESS_SHORT}
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📊 Overview
Address: {ADDRESS}
Total PnL: ${totalProfit} (invested ${invested})
Win Rate: {wins}/{total} ({winRate})
7d PnL: ${pnl_7d}
30d PnL: ${pnl_30d}
📈 Current Positions ({count})
Largest: {market_name} — {direction} ${size} @ ${avg_price}
Portfolio: ${total_value}
| # | Market | Direction | Size | Avg Price | Current | PnL |
|---|--------|-----------|------|-----------|---------|-----|
| 1 | ... | YES/NO | $xx | $0.xx | $0.xx | +$x |
...
📂 Category Distribution
| Category | Positions | Volume | % |
|----------|-----------|--------|---|
| Crypto | 12 | $5,000 | 45% |
| Politics | 5 | $2,000 | 22% |
...
📋 Activity Summary
| Type | Count | Volume |
|------------|-------|--------|
| TRADE BUY | xxx | $xxx |
| TRADE SELL | xxx | $xxx |
| SPLIT | xxx | $xxx |
| MERGE | xxx | $xxx |
| REDEEM | xxx | $xxx |
🏆 Top Wins
1. {market} — {direction} +${pnl} (entry ${price} → ${exit})
2. ...
3. ...
💀 Top Losses
1. {market} — {direction} -${pnl} (entry ${price} → ${exit})
2. ...
3. ...
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Generated: {timestamp} | Data: Polymarket Public APIs
Powered by Leo Labs — leolabs.me
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━cashPnl may differ due to SPLIT/MERGE accounting.end timestamp, never offset. Do NOT deduplicate — same txHash with multiple records means multiple fills in one transaction.eventSlug from positions to query Gamma API. Category comes from the event's tags or category field. If Gamma is slow, infer from market title keywords (BTC/ETH/crypto → Crypto, Trump/election → Politics, NBA/FIFA → Sports, temperature/weather → Weather).[] for inactive accounts. Display as "N/A" instead of $0.© runesleo, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/polymarket-profile of runesleo/polymarket-toolkit.
Open the folder on GitHubat commit 4a66e7d
Polymarket Profile next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Polymarket Profile this skillrunesleo/polymarket-toolkit | 194 | — | ~3.7k | Automated safety check: Pass | MIT | |
| Polymarket Tennislivetennisapi/livetennisapi-mcp | 152 | — | ~3k | Automated safety check: Pass | MIT | |
| Web3 PolymarketPolymarket/agent-skills | 192 | 1 repos | ~2k | Automated safety check: Pass | None | |
| Digital Oraclekomako-workshop/digital-oracle | 878 | — | ~5.9k | Automated safety check: Pass | MIT | |
| Polyclawchainstacklabs/polyclaw | 359 | 1 repos | ~2k | Automated safety check: Pass | Apache-2.0 | |
| Polymarket TradingBlockRunAI/ClawRouter | 6.6k | — | ~1.4k | Automated safety check: Pass | MIT |
livetennisapi/livetennisapi-mcp
Build observe-only Polymarket and Kalshi tennis market tooling on the polymarket-tennis Python package (MIT) plus the Live Tennis API free tier.
Polymarket/agent-skills
Polymarket integration for prediction market trading on Polygon.
komako-workshop/digital-oracle
Answer prediction questions using market trading data, not opinions.
chainstacklabs/polyclaw
Trade on Polymarket via split + CLOB execution. An agent skill from chainstacklabs/polyclaw.
BlockRunAI/ClawRouter
A skill your agent uses when the user wants to actually PLACE, manage, or redeem bets on Polymarket (not just read odds — that's the blockrunpredexon data tools).
guzus/dr-manhattan
Trade prediction markets (Polymarket, Kalshi, Opinion, Limitless, Predict.fun) using a unified CCXT-style API.
runesleo/polymarket-toolkit
Brier Score calculator for Polymarket addresses — measures prediction accuracy independent of PnL.
Works with
Categories
Polymarket address profiler — input any 0x address, get a complete trading profile with PnL, win rate, positions, category breakdown, and top trades. Polymarket Profile is an agent skill from runesleo/polymarket-toolkit. Polymarket address profiler — input any 0x address, get a complete trading profile with PnL, win rate, positions, category breakdown, and top trades.
Polymarket Profile fits situations like: tasks that involve Trading and backtesting; tasks that involve Performance optimization.
Run `npx skills add runesleo/polymarket-toolkit --skill polymarket-profile -a claude-code`. Or copy the skill folder (skills/polymarket-profile in runesleo/polymarket-toolkit) into .claude/skills/polymarket-profile in your project. Claude Code loads it when a task matches its description.
Run `npx skills add runesleo/polymarket-toolkit --skill polymarket-profile -a codex`. Or copy the skill folder (skills/polymarket-profile in runesleo/polymarket-toolkit) into .agents/skills/polymarket-profile in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add runesleo/polymarket-toolkit --skill polymarket-profile -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/polymarket-profile, .gemini/skills/polymarket-profile, .github/skills/polymarket-profile and .opencode/skills/polymarket-profile in your project.
Going by SKILL.md and its folder, Polymarket Profile needs the command-line tools its instructions call (curl). Its frontmatter pre-approves these tools: Bash(curl:*), Bash(node:*), Read, Write, Edit.
SKILL.md names 4 domains. In commands or code: lb-api.polymarket.com, data-api.polymarket.com, gamma-api.polymarket.com and clob.polymarket.com; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Polymarket Profile is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.7k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Polymarket Profile: Polymarket Tennis (livetennisapi/livetennisapi-mcp, 152 stars), Web3 Polymarket (Polymarket/agent-skills, 192 stars), Digital Oracle (komako-workshop/digital-oracle, 878 stars) and Polyclaw (chainstacklabs/polyclaw, 359 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
runesleo (a GitHub user) maintains it in runesleo/polymarket-toolkit, which has 194 GitHub stars. The repository holds 2 skills in this directory. The repository was last updated on September 9, 2026.
Source: runesleo/polymarket-toolkit on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.