PMXT
CCXT-shaped client for prediction markets, with a hosted API and a self-hosted mode.
Last updated
What it is
A unified client for prediction markets shaped deliberately like ccxt - its README describes itself as "the ccxt for prediction markets" - with one interface over many venues, Python and TypeScript SDKs, a CLI, an MCP server and a hosted API behind them. MIT-licensed, created in January 2026, 2,157 stars.
The supported-venue row in the README lists Polymarket, Polymarket US, Kalshi, Limitless,
Probable, Baozi, Myriad, Opinion, Metaculus, Smarkets, Hyperliquid, Gemini Titan, SuiBets, Rain
and Hunch. That is a wider net than anything else in this catalogue casts, and the width is the
point: fetch_markets, fetch_positions, fetch_balance and create_order are the same calls
whichever venue you construct.
There are two ways to run it, and they are different products wearing one name.
- Hosted.
pip install pmxtornpm i pmxtjs, apmxt_api_keyfrom the PMXT dashboard, and your calls go through PMXT's infrastructure - which is also what sells the subscription: deep historical data, cross-exchange market matching, order book snapshots, and a smart order router the site says picks the best price across venues. - Self-hosted.
pip install pmxt-coreornpm install pmxt-core, construct a venue client with no PMXT key, and the SDK spawns a local service that talks to venue APIs directly with your own venue credentials. The documentation's sentence for this mode is that venue credentials stay on your machine.
Availability
Nothing here is geographically gated by PMXT that we could find: the package installs anywhere, the free hosted tier needs an email and a key rather than an identity check, and the restrictions that bite are the venues' own - Limitless declines US order placement, Kalshi and Polymarket US want a verified account. The card's flags describe the client, not the venues behind it.
One term is worth reading off the pricing page rather than guessing at: all plans are for personal use only, with enterprise access on request. That is on the page in those words, and it is the sort of clause a team discovers after building on the free tier.
Pricing
The library is free and MIT. The hosted Data API is a subscription, and the figures below were read off the pricing page on 2026-09-19 with the monthly toggle selected; an annual toggle takes 20% off.
- Free - $0, 25,000 credits a month, 60 requests a minute, 5 WebSocket streams.
- Starter - $29.99 a month, 250,000 credits, 300 requests a minute, 20 streams.
- Pro - $99.99 a month, 1,000,000 credits, 1,000 requests a minute, 100 streams.
One REST call costs one credit and one WebSocket message costs 0.1, which is the number that decides whether a streaming strategy fits a tier: a book that ticks ten times a second exhausts the free month in about seven hours of streaming.
Trading fees are not PMXT's. Each fill is charged by whichever venue executed it.
Markets & resolution
PMXT resolves nothing and settles nothing; it routes to venues that do, and the answer differs per
venue - a Polymarket position settles in USDC on Polygon against an on-chain oracle, a Kalshi
position settles in dollars against the exchange. The card carries crypto because the venues it
can currently write to are the on-chain ones.
The abstraction is where the risk is. A unified market model has to flatten events, markets and outcomes across fifteen venues that disagree about all three, and what reaches your code is PMXT's translation. The README's own hierarchy - event, market, outcome - is the shape everything is bent into, and a venue that does not fit it fits it anyway.
Integrations
Python (pmxt), TypeScript (pmxtjs), a CLI (@pmxt/cli), an MCP server (@pmxt/mcp) for
Claude, Cursor and other agent clients, and copy-paste React trading widgets advertised on the
site. Credentials in self-hosted mode are the venue-native ones: a Polygon private key and
optional proxy address with a signature type for Polymarket, an API key plus RSA private key for
Kalshi, an API key plus an EIP-712 signing key for Limitless.
There is also a dome-to-pmxt codemod that rewrites calls from the Dome API, which tells you who
PMXT thinks it is competing with.
Limitations
It stopped shipping in July. 322 releases on PyPI between 2026-01-03 and 2026-07-18, then
nothing; the last commit on main is the same day. For a library whose whole job is to track
fifteen moving APIs, two months of silence is the most important fact on this card. It is not
archived and the issue tracker is open - but see the next paragraph for what that tracker looks
like.
1,236 open issues and 77 open pull requests, counted through the GitHub search API on
2026-09-19 with is:issue is:open rather than the REST field, which would have added the pull
requests together with them. That is an extraordinary number for a repository eight months old,
and whatever it is - automation, a flood of small reports, a backlog nobody triaged - it means the
tracker cannot tell you whether your problem is known.
Hosted is the default path, and the default path has a key in it. The quickstart puts a
pmxt_api_key and a private_key in the same constructor. The hosted-trading documentation does
now set out the split that makes the claim coherent - the SDK signs the typed-data payload locally
and that step never leaves your process, and pmxt_api_key is described as a service-role
credential that can read hosted data and forward signed orders but cannot move funds on its own.
What remains is that this is the vendor describing its own design: the page states the contracts
are unaudited as of 2026-06-09, with an audit report to be linked when one exists. Self-hosted
mode is where you stop taking it on description. Re-read on 21 September 2026.
Writes are narrower than reads. Hosted trading covers Polymarket, Opinion and Limitless; Kalshi writes need self-hosting. A card that says fifteen venues is telling you about data.
Nothing here has been run by us, including the self-hosted path, the credit accounting and the smart order router.
Alternatives
ccxt is the older, larger and far more heavily used abstraction, with a prediction namespace covering seven venues and a weekly release rhythm - less coverage of this niche, much more evidence of being maintained.
For one venue done properly, the official SDKs are narrower and usually more current: polymarket-client, polymarket-us-python, kalshi-python-sync and limitless-sdk.
If what you want is data rather than trading, adjacent and finfeedapi sell cross-venue feeds without asking for a signing key at all.
Specs
- Interfaces
- API, websocket, Python, MCP server
- Export
- JSON
- Available in
- Global
- KYC required
- No
- Market subjects
- —
- Resolved by
- Resolves nothing
- Maker fee
- None
- Platforms
- Library, CLI
- AI features
- None
- Capabilities
- Order book, Automation, Live trading, Portfolio tracking, Cross venue
- Pricing verified
- Availability verified
- Capabilities verified
Background
How this part of the sector works, rather than which product to pick.
- Where your key lives when software trades for you — Four different credentials are all called a key, and they differ in what a copy permits. What the clients in this catalogue ask for, and what to ask them back.
- Why the same contract costs two different prices on two venues — Two venues quoting one outcome are quoting two contracts. What the gap between the prices is made of - rules, fallbacks, fees, collateral, exits, eligibility.
- What running a bot does not solve — A bot fixes speed and consistency. Rate limits, a missing rehearsal, a field that stops arriving, a partial fill and a paused market are not coding problems.
Also worth comparing
- CCXT — One client for seven prediction venues, inside a 104-exchange crypto library.
- limitless-sdk — Limitless Exchange's own async Python SDK - CLOB and NegRisk orders, WebSocket, MIT.
- polymarket-client — Polymarket's own unified Python SDK - sync and async, data through order signing.
- py-clob-client — Polymarket's own Python CLOB client - archived, and declared non-functional by its README.
- Kalshi Python SDK (sync and async) — Kalshi's current official Python client - weekly releases, Python 3.13 only, no source.
- kalshi-python — Kalshi's own generated Python client - closed-source, and unreleased since September 2025.
Named as a replacement for
FAQ
Do I have to use PMXT's hosted service?
No. Installing pmxt-core and constructing a venue client without a PMXT API key spawns a local service and talks to the venues directly. The documentation says venue credentials stay on your machine in that mode. The hosted path is the default in the quickstart, and it needs a key from PMXT's dashboard.
Does PMXT see my private key in hosted mode?
No, on the vendor's account. The hosted-trading page documents a build-sign-submit split in which the SDK signs locally and that step never leaves your process, and describes pmxt_api_key as a service-role credential that cannot move funds by itself. That is the design as described rather than as audited - the same page says the contracts are unaudited as of 9 June 2026 - so if the answer matters, read the source or self-host.
Which venues can it actually trade on?
Fewer than it can read. The README says hosted writes cover Polymarket, Opinion and Limitless today, and points you at self-hosting for venue-native writes such as Kalshi. Everything else in the supported list is read access.
Has it stopped shipping?
It has paused, at least. After 322 PyPI releases between January and July 2026, the last one - 2.54.0 - and the last commit on the main branch are both dated 2026-07-18. Check the feeds before depending on it.