Install
openclaw skills install @jcislo/isocastPolymarket weather-signal API for AI agents. When a city's observed daily-high temperature crosses into a new Polymarket temperature bucket, Isocast fires one signal carrying the market URL, the old and new reading, and live odds for every bucket. 37 cities, with optional Telegram push delivery. Free to browse — cities, sample signal, pricing, and terms need no auth; deeper per-city signal bundles are pay-per-call via x402.
openclaw skills install @jcislo/isocastAPI at https://api.isocast.dev. Isocast watches 37 cities and, when a city's observed
daily-high temperature crosses out of one Polymarket temperature bucket and into another,
emits exactly one signal for that (city, day, transition). Every signal carries the
Polymarket market URL, the old and new {reading, unit, bucket}, and live YES/NO/midpoint
odds for every bucket (with dead: true on buckets the day can no longer reach). Browsing is
free and needs no auth; deeper signals are per-city bundles bought pay-per-call.
Full API docs: api.isocast.dev/llms.txt | OpenAPI spec: api.isocast.dev/openapi.json
A signal fires when a city's daily-high reading moves into a new Polymarket bucket. It
includes the market URL, the old/new bucket readings, and current odds for every bucket, plus
bucketsAsOf (odds freshness, ~10s) and observedAt. Delivery is at-most-once per (city,
day, bucket), and seq is a monotonic per-city counter so you can track what you've seen.
| Method | Path | Description |
|---|---|---|
| GET | /health | Liveness + configured payment mode (live|mock) |
| GET | /v1/cities | All active cities (slug, unit, bucketWidth, timezone, latestSeq). 30s cache |
| GET | /v1/cities/:slug | One city + today's target date + Polymarket market URL |
| GET | /v1/sample?city=SLUG | A promo signal (fixed, never the latest) so you can see the shape before paying. sample: true |
| GET | /v1/signals/meta?city=SLUG | Pricing + bundle tiers for a city (never returns signal rows) |
| GET | /terms.txt · /terms.json | Terms of Service (also sets X-Terms-URL) |
Every JSON response also carries a disclaimer string.
// All free, no auth, no setup
const BASE = "https://api.isocast.dev";
// 1. List active cities
const cities = await (await fetch(`${BASE}/v1/cities`)).json();
// cities: [{ slug, unit, bucketWidth, timezone, latestSeq }, ...]
// 2. Inspect today's market for one city
const city = await (await fetch(`${BASE}/v1/cities/istanbul`)).json();
// city: { slug, targetDate, marketUrl, ... }
// 3. See a sample signal shape before paying
const sample = await (await fetch(`${BASE}/v1/sample?city=istanbul`)).json();
// sample.signal: { marketUrl, old, new, buckets, observedAt, ... }, sample: true
Live signals are bought as prepaid per-city bundles (from $0.01), pay-per-call via x402 —
the effective unit price drops with bundle size. Agents can use the isocast-mcp npm package
(an MCP server) which handles payment for you, or read the full flow at
api.isocast.dev/llms.txt. Entitled signals can also be
pushed to a Telegram chat (free — the delivery registration route never charges).
Retry-After header (seconds to wait).| Path | What |
|---|---|
/llms.txt | This doc (concise) |
/openapi.json | OpenAPI 3.1 spec |
/discovery | Discovery JSON (free/paid endpoint listing) |
Informational data only — not financial or betting advice. No guarantee of accuracy or outcome; prediction markets are restricted in some jurisdictions. Terms: https://isocast.dev/terms