Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Query Polymarket prediction market data — search markets, get prices, orderbooks, and price history. Read-only via public REST APIs, no API key needed.
.claude/skills/graniet-polymarket/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | 64% | 0% |
| case-05 | ✗→✓ | ▲ Improved | -36% | 0% |
| case-06 | ✗→✓ | ▲ Improved | -1% | 0% |
| case-09 | ✗→✓ | ▲ Improved | -22% | 0% |
| case-13 | ✗→✓ | ▲ Improved | -35% | 0% |
This skill is repo-local and stays inactive until explicitly activated.
When the original instructions refer to legacy tool names, use these Kheish mappings:
terminal => bashweb_extract => web_fetch, plus web_search when discovery is neededsearch_files => grep_search and glob_searchbrowser_* tools require a browser-capable surfaced tool or MCP; if none is available, use the closest available surface and say so explicitlyWhen the instructions mention local helper files, resolve them from ${KHEISH_SKILL_DIR}.
Query prediction market data from Polymarket using their public REST APIs. All endpoints are read-only and require zero authentication.
See references/api-endpoints.md for the full endpoint reference with curl examples.
outcomePrices field: JSON-encoded array like ["0.80", "0.20"]clobTokenIds field: JSON-encoded array of two token IDs Yes, No] for price/book queriesconditionId field: hex string used for price history queriesgamma-api.polymarket.com — Discovery, search, browsingclob.polymarket.com — Real-time prices, orderbooks, historydata-api.polymarket.com — Trades, open interestWhen a user asks about prediction market odds:
Format prices as percentages for readability:
["0.652", "0.348"] becomes "Yes: 65.2%, No: 34.8%"Example: "Will X happen?" — 65.2% Yes ($1.2M volume)
The Gamma API returns outcomePrices, outcomes, and clobTokenIds as JSON strings inside JSON responses (double-encoded). When processing with Python, parse them with json.loads(market['outcomePrices']) to get the actual array.
Generous — unlikely to hit for normal usage:
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 5,688 | 10,902 | +92% | 1 | 1 | 0% | 319 | 1,554 | +387% | 0 | 0 | — |
case-02 | pass→fail | 6,343 | 7,042 | +11% | 1 | 1 | 0% | 544 | 1,313 | +141% | 0 | 0 | — |
case-03 | pass→fail | 11,320 | 10,789 | -5% | 1 | 1 | 0% | 2,073 | 1,684 | -19% | 0 | 0 | — |
case-04 | fail→pass | 5,406 | 3,423 | -37% | 1 | 1 | 0% | 873 | 1,434 | +64% | 0 | 0 | — |
case-05 | fail→pass | 12,360 | 3,835 | -69% | 1 | 1 | 0% | 2,190 | 1,410 | -36% | 0 | 0 | — |
case-06 | fail→pass | 10,925 | 5,540 | -49% | 1 | 1 | 0% | 1,934 | 1,912 | -1% | 0 | 0 | — |
case-07 | pass→pass | 6,583 | 2,833 | -57% | 1 | 1 | 0% | 1,135 | 1,336 | +18% | 0 | 0 | — |
case-08 | pass→pass | 10,115 | 1,996 | -80% | 1 | 1 | 0% | 1,983 | 1,234 | -38% | 0 | 0 | — |
case-09 | fail→pass | 8,670 | 2,817 | -68% | 1 | 1 | 0% | 1,571 | 1,223 | -22% | 0 | 0 | — |
case-10 | pass→pass | 3,501 | 2,370 | -32% | 1 | 1 | 0% | 666 | 1,360 | +104% | 0 | 0 | — |
case-11 | pass→pass | 9,293 | 3,294 | -65% | 1 | 1 | 0% | 1,771 | 1,437 | -19% | 0 | 0 | — |
case-12 | pass→pass | 4,885 | 1,542 | -68% | 1 | 1 | 0% | 866 | 1,142 | +32% | 0 | 0 | — |
case-13 | fail→pass | 9,537 | 2,079 | -78% | 1 | 1 | 0% | 1,750 | 1,131 | -35% | 0 | 0 | — |
case-14 | fail→pass | 9,862 | 1,504 | -85% | 1 | 1 | 0% | 1,755 | 1,033 | -41% | 0 | 0 | — |
case-15 | fail→pass | 12,395 | 2,955 | -76% | 1 | 1 | 0% | 2,368 | 1,401 | -41% | 0 | 0 | — |
case-16 | pass→pass | 9,643 | 4,617 | -52% | 1 | 1 | 0% | 1,870 | 1,692 | -10% | 0 | 0 | — |
case-17 | fail→pass | 8,870 | 2,906 | -67% | 1 | 1 | 0% | 1,582 | 1,381 | -13% | 0 | 0 | — |
case-18 | fail→fail | 5,897 | 4,531 | -23% | 1 | 1 | 0% | 1,042 | 1,123 | +8% | 0 | 0 | — |
case-19 | fail→pass | 4,945 | 1,759 | -64% | 1 | 1 | 0% | 941 | 1,135 | +21% | 0 | 0 | — |
case-20 | pass→pass | 12,541 | 4,586 | -63% | 1 | 1 | 0% | 2,332 | 1,658 | -29% | 0 | 0 | — |
case-21 | pass→pass | 12,007 | 4,582 | -62% | 1 | 1 | 0% | 1,844 | 1,486 | -19% | 0 | 0 | — |
case-22 | pass→pass | 11,029 | 3,441 | -69% | 1 | 1 | 0% | 1,730 | 1,460 | -16% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 18 counted toward the lift figure. The other 4 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +32 percentage points is the difference between those two pass rates over the 18 comparable cases. 2 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.