关于 dino.markets
dino.markets 是托管的预测市场数据 MCP 服务,面向需要分析 Kalshi 与 Polymarket 配对市场的开发者和 Agent。它提供市场匹配、套利机会及结算条款和匹配置信度信息。
主要功能
- 01搜索和筛选配对市场
- 02查询已确认的跨平台套利机会
- 03查看价格差与市场详情
- 04检查结算差异和匹配置信度
- 05通过 WebSocket 监看市场
适用场景
- 01查找 Kalshi 与 Polymarket 的关联市场
- 02筛选已确认的套利机会
- 03核对市场结算条款与风险
- 04订阅实时市场数据流
MCP 相关
托管的 Streamable HTTP MCP 服务,提供 8 种公开工具,用于查询市场、套利机会、价差、结算信息并监看市场。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
dino.markets MCP
通过模型上下文协议,关联体育、加密货币、天气和经济领域的 Kalshi 与 Polymarket 预测市场。托管服务提供匹配目录、带置信区间的已确认套利机会,以及实时 WebSocket 流。
概览
| 传输方式 | Streamable HTTP |
| 端点 | https://api.dino.markets/v2/mcp/(末尾带斜杠) |
| 身份验证 | X-API-Key 标头(也支持 Authorization: Bearer)——免费套餐可用 |
| 已记录的公开工具 | 8 |
| 托管方式 | 托管服务——无需自行托管 |
安装 / 连接
添加到 Claude Desktop 或 Cursor(通过官方桥接服务连接远程 MCP):
{
"mcpServers": {
"dino-markets": {
"command": "npx",
"args": ["mcp-remote", "https://api.dino.markets/v2/mcp/", "--header", "X-API-Key:${DINO_API_KEY}"],
"env": { "DINO_API_KEY": "sk_live_YOUR_KEY" }
}
}
}
即使使用免费套餐,也必须提供 API 密钥;不支持匿名模式。请前往 https://dino.markets 获取密钥。
套餐与限制
所有套餐均包含 MCP。所有套餐的 REST 快照均为尽力提供,延迟约两分钟。
| 套餐 | 价格 | 每月 REST 请求数 | REST 请求/秒 | WebSocket |
|---|---|---|---|---|
| Free | $0/月 | 10,000 | 10 | 精选的 sample 通道,1 个连接 |
| Basic | $30/月 | 1,000,000 | 10 | 完整市场流,3 个连接 |
| Premium | $100/月 | 5,000,000 | 25 | 完整市场流,10 个连接 |
| Pro | $200/月 | 5,000,000 | 25 | 完整市场流,另含原始报价和提前候选项,10 个连接 |
已记录的 8 个公开工具
| 工具 | 返回内容 | 套餐 |
|---|---|---|
find_markets | 按球队、联赛、市场标题或市场类别进行自由文本查询;返回详情调用所需的 ID | 任意有效密钥 |
find_arbitrage | Kalshi 与 Polymarket 之间已确认的跨平台套利机会,以原生 Opportunity 对象形式返回——每个结果各选取一条确切的执行腿(平台、卖价、数量、合约 ID)——可按体育项目筛选 | 任意有效密钥 |
list_markets | 匹配的跨平台市场目录;可按体育项目、联赛、状态、market_type 或 signal(spread|candidates——arb 会被明确拒绝,见下文)筛选 | 任意有效密钥 |
get_market | 根据市场 ID(dino_<uuid> 或原始 UUID)获取单个市场的规范市场对象,包括结算披露信息和深度 | 任意有效密钥 |
list_leagues | 当季体育项目和联赛,以及各体育项目的开放、进行中和已结算数量——请先调用此工具 | 任意有效密钥 |
get_spreads | 已匹配且归类为仅价差的跨平台价差,经验证后返回 | 任意有效密钥 |
report_bad_arb | 标记错误或不正确的套利机会,供运营人员审核 | 任意有效密钥 |
watch_markets | 创建短期连接票据;Free 套餐可使用 sample,付费套餐可使用完整流 | 任意有效密钥 |
list_markets 默认使用 moneyline,outright。market_type 还接受 total、spread、team_total、advance、weather_high、crypto_above、fed_decision、econ_print、cb_decision 或 all。实时工具说明和产品手册是结算注意事项的准确信息来源。
示例:find_arbitrage
find_arbitrage 返回的是独立的 Opportunity 资源,而非 Market 对象——已触发的套利在每个结果上始终只有一个选定的执行方(引擎实际选中的平台),因此无法将其表示为双边 Market 行。这是 v2 接口的一项有意变更(2026-07-13):旧的 GET /v2/markets?signal=arb 路径已移除——现在,list_markets(signal="arb") 会返回一个类型化错误,引导你使用此接口。
REST 等效接口:
curl -s "https://api.dino.markets/v2/arbitrage?sport=baseball" \
-H "Authorization: Bearer $DINO_API_KEY"
MCP 工具调用:find_arbitrage()(无参数),或 find_arbitrage(sport="baseball")。
响应信封({as_of, delay_seconds, count, opportunities:[...]}),摘自 REST API 参考,而非最新的实时捕获数据——此仓库没有可直接调用的服务。opportunities 数组为空且 count: 0 是正常的静止状态;有数据时则如下所示:
{
"as_of": "2026-07-13T08:00:05Z",
"delay_seconds": 120,
"count": 1,
"opportunities": [
{
"id": "opp_01J2Y9M4X8",
"market_id": "dino_8f3a1c92-47e8-4c3f-b9d2-f1a8e6c4d5f2",
"title": "Nyy vs Bos",
"sport": "baseball",
"league": "MLB",
"start_time": "2026-07-13T23:05:00Z",
"edge_pct": 4.2503,
"roi_pct": 4.439,
"fees_included": true,
"fee_model": "conservative_per_contract",
"cost_per_payout_usd": 0.957497,
"max_contracts": 700,
"max_wager_usd": 670.25,
"confidence": 1.0,
"detected_at": "2026-07-13T08:00:00Z",
"priced_at": "2026-07-13T08:00:05Z",
"legs": [
{
"outcome": "NYY", "venue": "kalshi", "side": "yes",
"ask_usd": 0.44, "stake_fraction": 0.480419,
"available_contracts": 1000,
"contract_id": "KXMLBGAME-NYY-BOS-NYY", "url": null
},
{
"outcome": "BOS", "venue": "polymarket", "side": null,
"ask_usd": 0.49, "stake_fraction": 0.519581,
"available_contracts": 700,
"contract_id": "tok_bos", "url": null
}
]
}
]
}
edge_pct 和 roi_pct 是扣除费用后的保守建模收益;fees_included 明确标示是否已计入费用;fee_model: "conservative_per_contract" 表示数据提供方按每个选定执行方各一个合约进行建模,API 再将该成本按 max_contracts 缩放,因此按数量计算的平台费用取整结果可能有所不同。ask_usd 是每份合约需支付的美元金额(若该结果获胜,则赔付 $1);max_contracts 是快照中每个结果可执行的相同合约数量,max_wager_usd 则是该数量下包含费用的保守资金估算。as_of 是响应中最新的 priced_at——应以此判断数据新鲜度,而非请求时间。即使当前没有已确认的套利,也可以调用 list_markets(不加筛选,或使用 signal=spread)查看匹配后的目录。
Market 信号与 Opportunity 资源
list_markets 和 get_market 返回规范化的 Market 对象,每个对象都带有自身的 signal 字段,每次调用时都会重新推导,绝不会使用缓存标签:
signal:"arb"由双边目录联接上的decide_signal()判定:状态为 open,且有 2 个或更多确认;已确认结算一致;不存在 high 或 critical 风险;并且每个结果都在两个平台上有报价。signal:"spread"表示其他所有情况:观察到价格差(spread_pts),但尚未满足套利门槛——这是一项观察结果,而非可据以采取行动的收益。
这两个信号与 find_arbitrage 的 Opportunity 相关,但并不相同:已触发的 Opportunity 的账本记录会在每个结果上精确记录一个选定的平台(引擎实际选择执行的一方),而 Market 的 signal 字段只有在每个结果都同时有两个平台的报价时,才会将其标记为 "arb"。由于这种结构差异,get_market/list_markets 可能会对某个同时正由 find_arbitrage 报告为真实有效 Opportunity 的组合显示 signal:"spread"——find_arbitrage 是当前开放且可执行套利的权威集合。请直接调用它,而不要筛选 list_markets 中的 signal:"arb"(该筛选会被明确拒绝,见上文)。
结算披露与置信度区间
大多数聚合器只给你一个数字。dino 则会提供披露信息,让你在交易前进行验证。get_market(以及 GET /v2/pairs/{id})会返回:
settlement.parity(bool)——两个平台的结算条款是否已确认一致settlement.risks[]——已披露的跨平台差异(平局处理、取消赛事的结算方式等)settlement.verdict——"agree"|"diverge"|"edge_case"|null(在匹配器调和两个平台的文本之前为 null——通常要等到市场结算后)confidence.entity/confidence.resolution——匹配器对两个平台所报的是同一现实事件、且将以相同方式结算的置信度
在将任何 arb 行视为可交易项之前,请查看 settlement.risks 和 confidence——API 会显示用于计算 verdict 的相同平台文本(settlement.kalshi_text / settlement.poly_text),因此你可以自行核查,而不是只相信一个数字。
本地化文档
产品文档提供以下语言版本。此代码仓库仍是英文 MCP 参考资料。
| 语言 | 文档 | MCP 服务 |
|---|---|---|
| 日本語 | 文档 | MCP |
| 한국어 | 文档 | MCP |
| 简体中文 | 文档 | MCP |
| Español | 文档 | MCP |
链接
- llms.txt:https://dino.markets/llms.txt
- OpenAPI:https://api.dino.markets/openapi.json
- 文档:https://dino.markets/docs
- 定价:https://dino.markets/pricing
- 关联代码仓库:dino-markets-skills — 基于此 MCP 服务构建的 Agent Skills
免责声明
这是开发者数据,不构成交易或财务建议。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。