
Actually
io.github.Sofiia7Published by GitHub account Sofiia7v0.1.10Updated Oct 24, 2026
Matches news to Polymarket markets and returns the market's probability. Optional capped trading.
Overview
Matches news headlines to Polymarket prediction markets and returns their odds, with optional capped trading via your own Polygon key.
- What you can do
- Match news text to prediction markets and read a market's own probability
- Look up a specific market's details and pricing
- Place, sell and cancel Polymarket orders, and list open orders and positions (only when a private key is supplied)
- Redeem a resolved position, only after a separate explicit opt-in
- When to use it
- Useful when you want an assistant to attach a concrete market-implied probability to a headline or article, or to check what prediction markets price an event at. Trading tools are for users who already hold a Polymarket wallet and want capped, agent-driven orders.
- Requirements
- Runs locally over stdio via npx actually-mcp-server; Node.js and network access needed. First launch downloads roughly 170 MB of package and model runtime, then a 34 MB model on first check_news, which can exceed client startup timeouts. Signal tools need no key or wallet. Trading needs POLYMARKET_PRIVATE_KEY; optional caps ACTUALLY_MAX_ORDER_USD and ACTUALLY_DAILY_LIMIT_USD, plus ACTUALLY_ENABLE_REDEEM, ACTUALLY_SPEND_STATE_PATH, ACTUALLY_WORKER_URL and ACTUALLY_WORKER_SECRET.
Installation
In SourceWeft
- Open Actually in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
Actually - What Markets Really Think
A Chrome extension and an MCP server that put prediction-market odds on top of the news you are already reading.
News tells you that "experts are concerned" or that "odds are rising". It rarely tells you a number. The number exists - on a prediction market, where people are betting their own money on the outcome. It just lives in another tab, and finding it means knowing such a market exists in the first place.
Actually closes that gap. Open an article, click the toolbar icon, and the extension matches the text against live Polymarket markets and shows the market's own probability. No account, no wallet, no signup.
Add it to Chrome from the Chrome Web Store - free.
[A news article matched to a live Polymarket market]
What it does
-
Matches an article to a market. A local embedding model (
Xenova/all-MiniLM-L12-v2, ~33 MB) scores the article text against the cached market set, boosted by keyword and number overlap - numbers matter because the encoder is nearly blind to them, and "dip to $57,500" embeds almost identically to "reach $120,000". -
Runs on your device. Model and WASM runtime are bundled at build time - nothing is fetched from a CDN at install or runtime, and on the default settings the article text never leaves the machine.
-
Reads non-English pages. They are translated to English before matching, using Chrome's own built-in
TranslatorAPI (local, no network). Every Polymarket question is written in English, and the local model holds 86 Cyrillic tokens out of 30522 - an untranslated Russian headline embeds to noise. Translated, the same headline scores 0.53-0.71 against the market it is actually about, against a 0.35 floor. -
Trades, optionally. Connect any WalletConnect v2 wallet for limit and market orders, selling, cancelling resting orders, and a positions panel with cost basis and P&L. Keys and funds are never held by us.
-
Serves agents too. The same capabilities are exposed over the Model Context Protocol:
check_news,get_market,place_order,sell_order,cancel_order,get_positions.
Using the MCP server
The MCP server is published, so it needs no clone and no build. Add it to any MCP client (Claude Desktop, Cursor, and anything else that speaks the protocol):
That gives an agent the signal tools - check_news and get_market - with no
key and no wallet. Ask it "what do markets think about this?" with a headline
and it answers with the market's own price.
The very first launch downloads the package and its local model runtime (about
170 MB), and the first check_news then fetches the 34 MB model. On a slow
connection that can take longer than a client waits for a server to start; if
yours reports a timeout, run npx -y actually-mcp-server once in a terminal,
let it finish, and restart the client. Later launches start in a few seconds.
Trading tools appear only if you supply a key of your own:
Both caps are enforced server-side against a persisted spend ledger, so an
agent cannot talk its way past them by claiming a different price.
redeem_position needs a further explicit opt-in
(ACTUALLY_ENABLE_REDEEM=true) because it submits a real on-chain transaction
and is still in testing.
Full documentation, including every environment variable and the reasoning
behind the guards: packages/mcp-server/README.md.
Listed in the official MCP registry
as io.github.Sofiia7/actually, on mcpservers.org, and on Glama:
How it fits together
The heavy work lives in an offscreen document because MV3 service workers cannot run WASM, hold a WebSocket, or survive long enough to sign an order.
The market cache is 2000 open markets with precomputed embeddings, rebuilt every two hours. Selection blends three orderings - 24h volume, lifetime volume, and recency - because ranking by lifetime volume alone is the wrong shelf for a news tool: a market opened this morning under today's headline has no history and loses to a year-old election market every time.
The Worker exists so no client has to hold a credential. It proxies Polymarket's APIs, serves the precomputed cache, and acts as a remote signer for the relayer, so the builder credential stays on the server and never ships inside an extension.
Running it
Load extension/dist as an unpacked extension in Chrome. Copy
extension/.env.example to .env.local and fill it in first - the build bakes
the Worker URL, the WalletConnect project id and the builder code.
Privacy
Discovery is free and needs no account. There are no content scripts: the page is read only when you click, and only the active tab. On the default settings (local embeddings) the article text does not leave your machine - translation, when the page needs it, also runs locally via the browser's own built-in translator, regardless of embedding provider. Telemetry is opt-in and off by default.
Full policy: https://actually-api.sofiaseremeteva.workers.dev/privacy
Status
The extension is live on the
Chrome Web Store.
actually-mcp-server is published on npm and listed in the official MCP
registry.
Redeeming a resolved position is in testing: builder authentication, neg-risk contract selection and the zero-balance guard are each verified against live services, but no redeem has yet been observed collecting funds end to end.
Viewing odds works everywhere. Opening new positions follows Polymarket's own restrictions: it is unavailable in, among others, the US, the UK, France, Germany, Italy, the Netherlands, Belgium, Poland, Ireland, Australia, New Zealand, Japan, Singapore, Taiwan, Thailand, Brazil, Russia, and the Canadian provinces of Ontario, British Columbia, Alberta and Quebec - there, existing positions can still be sold and resting orders cancelled. Sanctioned jurisdictions are blocked entirely. The check runs on the Worker.
Actually does not provide financial advice.
Polymarket tool directories
- PolyMart: a directory of Polymarket tools.
License
See LICENSE.
Source: README.md at commit 5648478
Tools
0Version history
3- v0.1.10LatestOct 5, 2026
- v0.1.9Sep 28, 2026
- v0.1.7Sep 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts