
Predictit
- 13 installs
- 610 repo stars
- Updated June 26, 2026
- alsk1992/cloddsbot
predictit is a Claude skill that provides read-only access to PredictIt US political prediction markets, letting an agent search markets and view prices.
About
This skill adds read-only access to PredictIt, a US political prediction market, inside a chat agent. Developers use the /pi commands to search markets, pull a specific market's contracts, or list all active markets. It returns last-trade prices and best Yes/No bid and ask costs. There is no trading API, so it is view-only.
- Read-only access to PredictIt US political prediction markets
- Search markets, fetch market details, and list all active markets via /pi commands
- Surfaces last-trade price and best bid/ask for Yes/No contracts
Predictit by the numbers
- 13 all-time installs (skills.sh)
- Ranked #759 of 1,106 Finance & Trading skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
predictit capabilities & compatibility
- Capabilities
- market data lookup · prediction market search
- Use cases
- research
- Pricing
- Free
What predictit says it does
Read-only integration with PredictIt, a US political prediction market. View markets and prices.
PredictIt is read-only (no trading API)
npx skills add https://github.com/alsk1992/cloddsbot --skill predictitAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 13 |
|---|---|
| repo stars | ★ 610 |
| Last updated | June 26, 2026 |
| Repository | alsk1992/cloddsbot ↗ |
What it does
Look up prices and contracts on PredictIt US political prediction markets from a chat agent.
Who is it for?
Viewing prices and contracts on PredictIt political prediction markets from an agent.
Skip if: Placing trades, since PredictIt exposes no trading API here.
When should I use this skill?
A user wants to check PredictIt political market prices or search markets.
By the numbers
- 3 chat commands (/pi search, /pi market, /pi all)
Files
PredictIt
Read-only integration with PredictIt, a US political prediction market. View markets and prices.
Quick Start
# Search markets
/pi search president
# Get market details
/pi market 6867
# List all markets
/pi allCommands
| Command | Description |
|---|---|
/pi search [query] | Search markets |
/pi market <id> | Get market details |
/pi all | List all active markets |
Examples:
/pi search election # Search election markets
/pi market 6867 # Get specific market
/pi all # List all marketsFeatures
- Political Markets - US elections, congress, policy
- Real-time Prices - Last trade and best bid/ask
- Contract Details - Individual outcomes with prices
Notes
- PredictIt is read-only (no trading API)
- Prices shown are last trade price
- Market volume not exposed by API
- US politics focused
Price Data
| Field | Description |
|---|---|
| lastTradePrice | Most recent trade price |
| bestBuyYesCost | Best offer to buy Yes |
| bestBuyNoCost | Best offer to buy No |
| bestSellYesCost | Best bid to sell Yes |
| bestSellNoCost | Best bid to sell No |
Resources
/**
* PredictIt CLI Skill (Read-Only)
*
* Commands:
* /pi search [query] - Search markets
* /pi market <id> - Get market details
* /pi all - List all active markets
*/
import { createPredictItFeed, PredictItFeed } from '../../../feeds/predictit/index';
import { logger } from '../../../utils/logger';
let feed: PredictItFeed | null = null;
async function getFeed(): Promise<PredictItFeed> {
if (feed) return feed;
try {
feed = await createPredictItFeed();
await feed.connect();
return feed;
} catch (error) {
logger.error({ error }, 'Failed to initialize PredictIt feed');
throw error;
}
}
async function handleSearch(query: string): Promise<string> {
const f = await getFeed();
try {
const defaultQuery = !query;
const markets = await f.searchMarkets(query || 'president');
if (markets.length === 0) {
return 'No markets found.';
}
let output = defaultQuery
? `**PredictIt Markets** (showing default results — use \`/pi search <query>\` to filter)\n\n`
: `**PredictIt Markets** (${markets.length} results)\n\n`;
for (const market of markets.slice(0, 15)) {
output += `**${market.question}**\n`;
output += ` ID: \`${market.id}\`\n`;
if (market.outcomes.length > 0) {
output += ` Contracts:\n`;
for (const o of market.outcomes.slice(0, 5)) {
const price = o.price ? `${(o.price * 100).toFixed(0)}¢` : '-';
output += ` - ${o.name}: ${price}\n`;
}
}
output += '\n';
}
return output;
} catch (error) {
return `Error searching markets: ${error instanceof Error ? error.message : String(error)}`;
}
}
async function handleMarket(marketId: string): Promise<string> {
const f = await getFeed();
try {
const market = await f.getMarket(marketId);
if (!market) {
return `Market ${marketId} not found.`;
}
let output = `**${market.question}**\n\n`;
output += `ID: \`${market.id}\`\n`;
output += `Status: ${market.resolved ? 'Closed' : 'Open'}\n`;
output += `URL: ${market.url}\n\n`;
output += `**Contracts:**\n`;
for (const o of market.outcomes) {
const price = o.price ? `${(o.price * 100).toFixed(0)}¢` : '-';
const prevPrice = o.previousPrice ? `${(o.previousPrice * 100).toFixed(0)}¢` : '-';
output += `- **${o.name}**\n`;
output += ` Last Trade: ${price}\n`;
output += ` Previous Close: ${prevPrice}\n`;
}
return output;
} catch (error) {
return `Error fetching market: ${error instanceof Error ? error.message : String(error)}`;
}
}
async function handleAll(): Promise<string> {
const f = await getFeed();
try {
const markets = await f.getAllMarkets();
if (markets.length === 0) {
return 'No markets found.';
}
let output = `**All PredictIt Markets** (${markets.length})\n\n`;
for (const market of markets.slice(0, 25)) {
output += `**${market.question}** (\`${market.id}\`)\n`;
if (market.outcomes.length > 0) {
const topOutcome = market.outcomes[0];
const price = topOutcome.price ? `${(topOutcome.price * 100).toFixed(0)}¢` : '-';
output += ` ${topOutcome.name}: ${price}\n`;
}
}
return output;
} catch (error) {
return `Error fetching markets: ${error instanceof Error ? error.message : String(error)}`;
}
}
export async function execute(args: string): Promise<string> {
const parts = args.trim().split(/\s+/);
const command = parts[0]?.toLowerCase() || 'help';
const rest = parts.slice(1);
switch (command) {
case 'search':
case 'markets':
return handleSearch(rest.join(' '));
case 'market':
case 'm':
if (!rest[0]) return 'Usage: /pi market <id>';
return handleMarket(rest[0]);
case 'all':
case 'list':
return handleAll();
case 'help':
default:
return `**PredictIt Commands** (Read-Only)
/pi search [query] - Search markets
/pi market <id> - Get market details
/pi all - List all markets
**Examples:**
/pi search election
/pi market 6867
Note: PredictIt is read-only (no trading API).`;
}
}
export default {
name: 'predictit',
description: 'PredictIt prediction market - search and view political markets (read-only)',
commands: ['/predictit', '/pi'],
handle: execute,
};
Related skills
FAQ
Can this skill place trades on PredictIt?
No. The docs state PredictIt is read-only with no trading API; it only views markets and prices.
What price data does it return?
Last trade price plus best buy/sell costs for Yes and No contracts.