outcometick

io.github.outcometick由 GitHub 帳號 outcometick 發布v3.0.0更新於 Oct 24, 2026

Polymarket and Predict.fun historical tick data, plus backtest quotes and status, over MCP

已驗證Streamable HTTP可網頁執行金融開發者工具資料與分析

概覽

AI 產生的概覽

讓助理存取 outcometick 的 Polymarket 與 Predict.fun 逐筆資料存檔:查看涵蓋範圍、搜尋並下載檔案、驗證策略,以及取得回測報價與狀態。

可以做什麼
  • 查看各交易場所的存檔涵蓋範圍、目前可回測的日期以及佇列忙碌程度
  • 在不提交的情況下以點數估算回測範圍的價格,並列出資料或聰明錢訂閱方案與即時價格
  • 使用與回測佇列相同的驗證器檢查策略目錄
  • 查看資料金鑰可存取的日期區間與篩選值,搜尋存檔檔案,並下載單一檔案並驗證 sha256
  • 在回測金鑰下檢視近期回測執行,以及單次執行的狀態、點數與報告摘要
  • 列出已發布的聰明錢日期,並下載某一天的頂尖交易者名單並驗證校驗碼
適用情境
適合在撰寫或審閱 Polymarket、Predict.fun 交易策略時使用,讓助理驗證策略、估算回測成本,或把歷史逐筆資料與聰明錢名單帶進對話中。
執行需求
可作為託管的 Streamable HTTP 端點使用,也可透過 npx 在本機執行,需要 Node 24 或更新版本。公開工具不需金鑰;資料、聰明錢與回測工具需要對應金鑰,可透過 OT_KEY、OT_SMART_KEY、OT_BACKTEST_KEY 環境變數提供,或以 Authorization bearer 標頭加上選用的 X-Backtest-Key、X-Smart-Key 提供,也可透過 OAuth 登入。需要網路連線。
安裝前請注意
這些金鑰都是機密:資料金鑰、聰明錢金鑰與回測金鑰分別解鎖不同的下載內容,不要放進共用設定。回測會消耗點數,伺服器刻意不提供提交回測的功能;報價免費,但點數餘額是真實的。下載會在本機寫入檔案或回傳簽章連結,託管端點會把你的金鑰傳送到 outcometick 的伺服器。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 outcometick,將其新增到工作區。
  2. 連接 所需的 憑證。它們會被私密儲存,絕不會在公開頁面上展示。
  3. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/io.github.outcometick%2Foutcometick/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。 客戶端會在首次連接時完成 OAuth 登入。

{
  "mcpServers": {
    "outcometick": {
      "type": "http",
      "url": "https://outcometick.com/v1/mcp"
    }
  }
}

README

outcometick

The TypeScript / JavaScript strategy SDK and the ot command line for outcometick.com — tick-level data for Polymarket and Predict.fun crypto Up/Down markets.

npm i -g outcometick
ot check .                                           # validate, free, no dataot run . --data ./polymarket-data-samples            # replay locallyot submit . --assets btc,eth --days 30               # send it to the queueot status <run_id>                                   # where it got toot fetch  <run_id>                                   # download the report

Breaking in 2.0: backtests cover only the most recent 35 archived days, and the window moves forward as days are archived. A --from before the window, or --days longer than it, is refused with E_SCOPE before anything is uploaded, and the message names the current window. Use --days <n> for the most recent n days; the current dates are at https://outcometick.com/v1/backtest/capacity?venue=polymarket.

Writing a strategy

Fully typed — ot ships .d.ts declarations, so a strategy that type-checks is one the queue will accept.

ts
import { Strategy, Order, type Ctx, type Tick } from "outcometick";
export default class MeanReversion extends Strategy<{ entry_z: number; size: number }> {  private entered = false;
  onMarketOpen() { this.entered = false; }
  onTick(ctx: Ctx<{ entry_z: number; size: number }>, tick: Tick): Order | null {    const z = ctx.zscore(tick.value, { window: 180 });    if (this.entered || Math.abs(z) < ctx.p.entry_z) return null;    const side = z > 0 ? "DOWN" : "UP";    const limit = ctx.book().best(side);    if (limit === null) return null;    this.entered = true;    return new Order({ side, size: ctx.p.size, limit });  }}

Plain JavaScript works too — the runtime is ESM with no build step.

The point of ot check

It runs the same validator the queue runs — the same module, not a copy. If it passes locally it will not be rejected on submit. That is only true because there is one implementation, which is why the validator and the static analysers ship in this package rather than being reimplemented client-side.

What ot run is and is not

It is the same engine, the same report and the same archive format the queue uses, against a local copy of the archive:

curl -L https://github.com/outcometick/polymarket-tick-data-samples/releases/latest/download/polymarket-data-samples.tar.gz | tar xz

It is not the sandbox. Locally your strategy runs as you, with your privileges, on your machine — which is fine, because it is your code. On our machines it runs in a container with no network, no writable filesystem and a hard CPU and wall-clock budget.

Testing

npm install && npm test

Requires python3 on PATH: one of the two static analysers is written in Python, and the CLI drives it the same way the API does.

Downloading data

The other half of the package: a client for the data subscription, on a separate import because it has nothing to do with writing a strategy.

ts
import { DataClient, NO_VALUE } from "outcometick/data";
const ot = new DataClient();                    // key from OT_KEY
const meta = await ot.meta();                   // what can this key see?
const { files } = await ot.files({  from: "2026-08-01", to: "2026-08-12",         // or date: "2026-08-12"  asset: ["BTC", "ETH"],                        // the BASE symbol, not BTCUSD  dataset: "prices",  interval: ["5m", NO_VALUE],                   // "5m" alone EXCLUDES the});                                             // period-less settlement streams
await ot.download(files[0], { saveTo: files[0].name });   // checksum verified

meta() reports the dimensions this key can actually reach. Note that intervals holds real durations only — the none sentinel is reported separately under filterTokens, so a caller that builds an enum from it or parses the values as durations never meets a token.

Downloads are checksum-verified: /v1/dl redirects to storage with the sha256 in a header, and the client follows that redirect itself so the checksum is not thrown away.

Rebuilding a Polymarket order book

book and price_change are stored at a capture cadence, so a removal can fall between two stored frames and leave a stale level behind. OrderBook applies the documented rebuild rule: snapshots replace a token's ladder, changes set absolute sizes (0 removes), and levels crossed by the newest best bid/ask (from best_bid_ask and from each change) are dropped. Feed it rows from the three files merged by recv_ms.

ts
import { OrderBook } from "outcometick/data";
const book = new OrderBook();for (const row of rows) book.apply(row);       // parsed objects or JSONL linesbook.ladder(tokenId);                           // { bids: [{ price, size }], asks: [...] }, best firstbook.best(tokenId);                             // { bid, ask }

That removes every level the best prices have moved past, but it cannot restore what the dropped frames added or resized: until the next snapshot a level, at the top too, can be missing or carry an old size (best_bid_ask has prices only). best() is the best level of the rebuilt ladder, not the market's latest best bid/ask — read best_bid_ask rows for that.

Smart-money trade history

A separate subscription with its own key: daily files of the trades made by the top-ranked Polymarket traders.

ts
const smart = new DataClient({ key: process.env.OT_SMART_KEY });const { days } = await smart.smartDays();                  // newest firstconst day = days.find((d) => d.lists.top1000?.status === "published")?.day;if (day) await smart.smartDownload(day, "top1000", { saveTo: "top1000.csv.zst" });  // verified

What the lists are and what each column means: https://outcometick.com/polymarket-smart-money-data

MCP server

ot mcp is a Model Context Protocol server over stdio, for coding assistants and agents. It reads, prices, validates and downloads; it never submits a backtest, because that spends credits. Needs Node 24 or newer.

json
{  "mcpServers": {    "outcometick": {      "command": "npx",      "args": ["-y", "outcometick", "mcp"],      "env": {        "OT_KEY": "<data subscription key, optional>",        "OT_SMART_KEY": "<smart-money key, optional>",        "OT_BACKTEST_KEY": "<backtest key, optional>"      }    }  }}

Claude Code: claude mcp add outcometick -e OT_KEY=<data key> -- npx -y outcometick mcp

The same tools are also hosted, with nothing to install, over Streamable HTTP:

  • https://outcometick.com/v1/mcp: send Authorization: Bearer <key> (data, smart-money or backtest key; add a second or third key as X-Backtest-Key / X-Smart-Key), or connect without a header and sign in with OAuth, pasting your keys on the consent page (claude.ai and ChatGPT connectors).
  • https://outcometick.com/v1/mcp/public: no key, public tools only.

claude mcp add --transport http outcometick https://outcometick.com/v1/mcp --header "Authorization: Bearer <data key>"

Hosted, download_file and smart_download return a signed URL and its sha256 instead of writing to disk, and check_strategy takes the file contents instead of a directory.

ToolKeyWhat it does
coveragenoneWhat the archive holds per venue: assets, datasets, day range
plansnoneData subscription plans and their live prices
backtest_capacitynoneWhich days can be backtested now, and how busy the queue is
backtest_quotenonePrice a backtest scope in credits without submitting it
check_strategynoneValidate a strategy directory with the queue's own validator, locally
metaOT_KEYThe date window and filter values the data key can reach
list_filesOT_KEYSearch archive files the data key can download
download_fileOT_KEYDownload one file and verify its sha256
backtest_runsOT_BACKTEST_KEYRecent runs under the backtest key, and the credit balance
backtest_statusOT_BACKTEST_KEYOne run's status, credits and report summary
smart_plansnoneSmart-money plans (daily Polymarket wallet lists) and their live prices
smart_coveragenoneWhich smart-money days are published
smart_daysOT_SMART_KEYThe days the smart-money key can download, with each list's status
smart_downloadOT_SMART_KEYDownload one day's list and verify its sha256

Writing your strategy in Python instead? The SDK for it is pip install outcometick. ot runs those too — it is the one CLI for both languages.

Full reference: https://outcometick.com/docs/sdk

Links

來源:README.md,提交 4ca7ac8

工具

0
該伺服器需要登入,因此 SourceWeft 無法在沒有帳號的情況下讀取其工具,也未收錄。已連接帳號所能看到的內容可能因帳號及其權限而異。

版本歷史

3
  1. v3.0.0最新Oct 15, 2026
  2. v2.13.3Oct 15, 2026
  3. v2.13.1Oct 14, 2026

評分

已滿足適用檢查項的 85%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分