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 分