You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: changelog.md
+23Lines changed: 23 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,6 +2,29 @@
2
2
3
3
All notable changes to this project will be documented in this file.
4
4
5
+
## [2.50.7] - 2026-06-18
6
+
7
+
### Fixed
8
+
9
+
-**`sdks/typescript/pmxt/hosted-routing.ts`** + **`sdks/python/pmxt/_hosted_routing.py`**: `HOSTED_TRADING_VENUES` includes `limitless` (since 2.50.3 wired the `limitless_buy` / `limitless_sell_polygon` / `limitless_sell_base_pull` / `cancel_limitless_*` schemas), but the `NotSupported` error message thrown to callers attempting hosted trading on an unsupported venue still said "Hosted trading is only supported for Polymarket and Opinion". A caller who hit the error would believe Limitless was unsupported even though it would have worked, and anyone reading the SDK source to figure out which venues are hosted-tradable saw a directly contradictory pair (the set says yes, the error string says no). Updated both SDKs to "Polymarket, Opinion, and Limitless".
10
+
11
+
### Docs
12
+
13
+
-**Limitless hosted writes documented across the docs surface.** The 2.50.3 release wired Limitless through the hosted trading path but no doc page reflected it, so the docs collectively asserted Limitless was read-only / self-hosted-writes-only. Updated nine claim sites across six files:
14
+
-`docs/trading-quickstart.mdx:9` — "Hosted writes today: Polymarket, Opinion, and Limitless."
15
+
-`docs/authentication.mdx:83` — same.
16
+
-`docs/security.mdx:54` — "Hosted (Polymarket, Opinion, Limitless): PMXT never sees the venue private key."
17
+
-`docs/guides/escrow-lifecycle.mdx:9` — escrow funding line now lists Polymarket, Opinion, and Limitless as the "today" set.
-`docs/guides/self-hosted.mdx:15` — hosted-writes list updated; Limitless removed from the self-hosted-only list of venues.
20
+
-`docs/guides/self-hosted.mdx:20` — "consumer app against Polymarket, Opinion, or Limitless".
21
+
-`docs/concepts/hosted-trading.mdx:9` — "trade Polymarket, Opinion, and Limitless" in the funding-once paragraph.
22
+
-`docs/concepts/hosted-trading.mdx:18` — "trading across Polymarket, Opinion, and Limitless".
23
+
-`docs/concepts/hosted-trading.mdx:51` — added a Limitless settlement sentence: "buys are settled on Polygon directly from escrow; sells use a Base-side pull leg that draws against the user's Polygon escrow" (the Polymarket and Opinion settlement descriptions were already there).
-`docs/concepts/hosted-trading.mdx:131` — "What's supported today" table: added a Limitless row (Yes / Yes / "Polygon buy leg, Base pull-sell leg") and removed Limitless from the Kalshi/Smarkets/etc. read-only row.
26
+
-**`docs/concepts/hosted-trading.mdx:89` — operator multisig wording.** The previous wording said "A multisig replacement is planned but not yet deployed" on one line while line 93 said `operator` is `immutable`. Read straight through, that reads like an in-place rotation that the contract design forbids. Rewrote to "Because `operator` is `immutable` on the deployed contracts, switching to a multisig would mean deploying new escrow contracts and migrating user balances — not an in-place rotation." Same facts, no contradiction.
Copy file name to clipboardExpand all lines: docs/concepts/hosted-trading.mdx
+7-6Lines changed: 7 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,7 +6,7 @@ description: "The hosted-default execution path — how PMXT routes orders, the
6
6
Hosted trading is PMXT's default execution path. You provide an API key and a wallet; your [USDC](/concepts/prediction-markets-101#usdc) sits in a non-custodial [`PreFundedEscrow`](/concepts/prediction-markets-101#prefundedescrow) smart contract on [Polygon](/concepts/prediction-markets-101#polygon) that can only move funds against an EIP-712 signature from your wallet; orders are built server-side, signed in your browser/server with your private key, and submitted by PMXT to the underlying venue. You never run a local server, never integrate with venue-specific signature schemes, and never expose your private key over the wire.
7
7
8
8
<Info>
9
-
**One chain to fund: Polygon.** All hosted trading uses a single Polygon-based `PreFundedEscrow` contract for every supported venue. Fund USDC on Polygon once and your same wallet and key trade Polymarket*and*Opinion (and future venues). For non-Polygon venues like Opinion (on BSC), PMXT handles cross-chain settlement transparently — you never sign anything on a chain other than Polygon. Pass any EVM-compatible private key.
9
+
**One chain to fund: Polygon.** All hosted trading uses a single Polygon-based `PreFundedEscrow` contract for every supported venue. Fund USDC on Polygon once and your same wallet and key trade Polymarket, Opinion, *and*Limitless (and future venues). For non-Polygon venues like Opinion (on BSC), PMXT handles cross-chain settlement transparently — you never sign anything on a chain other than Polygon. Pass any EVM-compatible private key.
10
10
</Info>
11
11
12
12
## When hosted mode is right
@@ -15,7 +15,7 @@ Hosted is the right default for:
15
15
16
16
-**Web and mobile apps** — your backend holds the `pmxt_api_key`; users keep their own private keys on their devices.
17
17
-**Trading bots that don't need sub-100ms latency** — typical hosted round-trip is ~150–300ms including the venue submit.
18
-
-**Multi-venue strategies** — you stay on one HTTP surface even when you're trading across Polymarketand Opinion.
18
+
-**Multi-venue strategies** — you stay on one HTTP surface even when you're trading across Polymarket, Opinion, and Limitless.
19
19
-**Anyone who doesn't want to operate infrastructure.**
20
20
21
21
A hosted trade has three actors: **your client** (holding the `pmxt_api_key` and, for writes, the user's `private_key`), **`trade.pmxt.dev`** (PMXT's hosted trading API — routes orders, operates against the escrow contract under user-signed authorization, talks to the venue), and **the venue** (Polymarket's CLOB, Opinion's matching engine, etc. — sees PMXT as the submitter).
@@ -48,7 +48,7 @@ Step-by-step:
48
48
1.**Build.** The SDK calls `POST /v0/trade/build-order` with the catalog UUIDs (`market_id`, `outcome_id`), side, and amount. The server resolves the venue-native fields (token IDs, salt, expiry, fees), packages them into the venue's EIP-712 typed-data shape, and returns a `built_order_id` plus the payload to sign.
49
49
2.**Sign.** The SDK signs the typed-data payload locally with your `private_key`. This step never leaves your process. See [Signing](/guides/signing) for the exact shape.
50
50
3.**Submit.** The SDK calls `POST /v0/trade/submit-order` with the `built_order_id` and the signature. The server attaches the signature to the prepared order and submits to the venue.
51
-
4.**Settle.** The venue matches the order. On Polymarket, fills come from the CLOB and are settled on Polygon via the CTF exchange. On Opinion, settlement uses a dual-signature cross-chain flow.
51
+
4.**Settle.** The venue matches the order. On Polymarket, fills come from the CLOB and are settled on Polygon via the CTF exchange. On Opinion, settlement uses a dual-signature cross-chain flow into a BSC-side `VenueEscrow`. On Limitless, buys are settled on Polygon directly from escrow; sells use a Base-side pull leg that draws against the user's Polygon escrow.
52
52
53
53
`create_order` is a convenience wrapper that chains build → sign → submit in one call. `build_order` and `submit_order` are the lower-level primitives if you want to inspect or modify the typed-data before signing.
54
54
@@ -86,7 +86,7 @@ Current operator addresses (immutable on the deployed contracts above):
The operator address is currently an EOA controlled by PMXT. A multisig replacement is planned but not yet deployed; this page will be updated when it lands.
89
+
The operator address is an EOA controlled by PMXT. Because `operator` is `immutable` on the deployed contracts, switching to a multisig would mean deploying new escrow contracts and migrating user balances — not an in-place rotation.
90
90
91
91
### Trust model
92
92
@@ -116,7 +116,7 @@ Self-hosted runs `pmxt-core` on your own machine; the SDK talks to `localhost`.
116
116
|**Writes**|`trade.pmxt.dev/v0/trade/{build,submit}-order`| Direct to the venue API |
117
117
|**Custody**| Non-custodial: USDC in `PreFundedEscrow`, movable only against your EIP-712 signature | You retain venue-native custody |
118
118
|**Latency**|~150–300ms round-trip | Limited by venue + your network |
119
-
|**Trading venues**| Polymarket, Opinion | Every venue PMXT supports |
119
+
|**Trading venues**| Polymarket, Opinion, Limitless| Every venue PMXT supports |
120
120
|**Read-only venues**| All catalog venues via Router | All catalog venues via Router |
121
121
|**Infra to run**| None | One local process |
122
122
|**Regulatory posture**| Non-custodial escrow; user retains beneficial ownership and unilateral withdrawal | You as direct counterparty to the venue |
@@ -129,7 +129,8 @@ Choose self-hosted when you need **sub-100ms latency**, want to use **raw venue
Copy file name to clipboardExpand all lines: docs/guides/escrow-lifecycle.mdx
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,7 +6,7 @@ description: "Deposit, trade, withdraw — how USDC moves through PMXT's non-cus
6
6
Hosted trading on PMXT settles through a non-custodial `PreFundedEscrow` smart contract on **Polygon** (chainId 137). USDC sits in the escrow under your wallet's beneficial ownership; PMXT cannot move funds without an EIP-712 signature from your wallet. This page walks through the full lifecycle: approve, deposit, trade, withdraw.
7
7
8
8
<Info>
9
-
**You fund Polygon only.** USDC always sits in the Polygon `PreFundedEscrow` — the single funding location for *every* hosted venue (Polymarket today, Opiniontoday, more coming). For venues that don't live on Polygon (e.g. Opinion on BSC), PMXT operates an internal cross-chain leg that holds outcome tokens on the venue's chain; you neither fund nor sign anything on that side. Pass any EVM-compatible private key — the same key handles every venue.
9
+
**You fund Polygon only.** USDC always sits in the Polygon `PreFundedEscrow` — the single funding location for *every* hosted venue (Polymarket, Opinion, and Limitless today; more coming). For venues that don't live on Polygon (e.g. Opinion on BSC), PMXT operates an internal cross-chain leg that holds outcome tokens on the venue's chain; you neither fund nor sign anything on that side. Pass any EVM-compatible private key — the same key handles every venue.
10
10
</Info>
11
11
12
12
## Why escrow at all?
@@ -17,7 +17,7 @@ For Opinion, the same Polygon escrow balance funds a cross-chain settlement leg
17
17
18
18
## The `client.escrow` namespace
19
19
20
-
Hosted exchange clients (Polymarket, Opinion) expose an `escrow` namespace. Every method **builds an unsigned transaction**. Your wallet — MetaMask, ethers `Wallet`, viem, web3.py, etc. — is responsible for signing and broadcasting it. PMXT never holds your private key.
20
+
Hosted exchange clients (Polymarket, Opinion, Limitless) expose an `escrow` namespace. Every method **builds an unsigned transaction**. Your wallet — MetaMask, ethers `Wallet`, viem, web3.py, etc. — is responsible for signing and broadcasting it. PMXT never holds your private key.
-**Regulatory custody** — you must be the direct counterparty with no intermediary in the custody path.
15
-
-**Venues hosted mode can't write to yet** — hosted writes are Polymarket + Opinion. Self-hosted writes work on every venue PMXT supports (Kalshi, Limitless, Smarkets, Probable, Myriad, Metaculus, etc.).
15
+
-**Venues hosted mode can't write to yet** — hosted writes are Polymarket, Opinion, and Limitless. Self-hosted writes work on every venue PMXT supports (Kalshi, Smarkets, Probable, Myriad, Metaculus, etc.).
16
16
-**OSS contribution** — you're hacking on `pmxt-core` itself.
17
17
18
18
## When hosted is still the better choice
19
19
20
-
Everyone else. [Hosted](/concepts/hosted-trading) is simpler to deploy (no local process), gives you on-chain custody you control via the timelock, and PMXT's server never sees a private key. If you're building a consumer app, a research notebook, or any non-latency-critical service against Polymarketor Opinion, stop here and use hosted.
20
+
Everyone else. [Hosted](/concepts/hosted-trading) is simpler to deploy (no local process), gives you on-chain custody you control via the timelock, and PMXT's server never sees a private key. If you're building a consumer app, a research notebook, or any non-latency-critical service against Polymarket, Opinion, or Limitless, stop here and use hosted.
Credential type is a property of the venue, not of PMXT. See [Supported Venues](/concepts/venues) for the full credential matrix. The difference between modes is **where the credential lives**:
53
53
54
-
-**Hosted (Polymarket, Opinion):** PMXT never sees the venue private key. You sign EIP-712 locally against the `PreFundedEscrow` domain; PMXT's operator submits with its own key for gas. See [Hosted trading](/concepts/hosted-trading).
54
+
-**Hosted (Polymarket, Opinion, Limitless):** PMXT never sees the venue private key. You sign EIP-712 locally against the `PreFundedEscrow` domain; PMXT's operator submits with its own key for gas. See [Hosted trading](/concepts/hosted-trading).
55
55
-**Self-hosted (any venue):** the venue credential lives on your machine, in your `pmxt-core` process.
Copy file name to clipboardExpand all lines: docs/trading-quickstart.mdx
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,7 +6,7 @@ description: "Place your first hosted trade in 60 seconds — API key, escrow de
6
6
From a fresh `pmxt_api_key` to a confirmed position on Polymarket in under a minute. For the full hosted model, see [Hosted trading](/concepts/hosted-trading).
7
7
8
8
<Info>
9
-
Hosted writes today: **Polymarket**and **Opinion**. Other venues are read-only via the hosted catalog; use [self-hosted](/guides/self-hosted) to trade them.
9
+
Hosted writes today: **Polymarket**, **Opinion**, and **Limitless**. Other venues are read-only via the hosted catalog; use [self-hosted](/guides/self-hosted) to trade them.
0 commit comments