{
  "ok": true,
  "resource": {
    "id": "RES_85788A1B8D40",
    "resource_type": "mcp_server",
    "canonical_url": "https://registry.modelcontextprotocol.io/v0.1/servers/ai.betslipdoctor%2Fmcp/versions/1.1.0",
    "name": "BetSlip Doctor",
    "summary_en": "Read, grade, and track a subscriber's betslips with preserved truth and no wager placement.",
    "summary_zh": "读取、评级并跟踪订阅者的投注单，保留真实信息，不进行投注。",
    "description_en": "BetSlip Doctor is an MCP server that reads, grades, and tracks a subscriber's betslips. It provides tools to track betslips, get live odds boards, grade betslips, view saved reports, and review betting history. The server does not place wagers and is intended for decision support and entertainment.",
    "description_zh": "BetSlip Doctor 是一个 MCP 服务器，用于读取、评级和跟踪订阅者的投注单。它提供工具来跟踪投注单、获取实时赔率面板、对投注单进行评级、查看保存的报告以及查看投注历史。该服务器不进行投注，仅用于决策支持和娱乐。",
    "provider_name": "ai.betslipdoctor",
    "homepage_url": "https://github.com/opspot-ai/betslipdoctor",
    "endpoint_url": "https://api.betslipdoctor.ai/api/mcp",
    "source_url": "https://github.com/opspot-ai/betslipdoctor",
    "icon_url": null,
    "cover_image_url": null,
    "capabilities": [
      "betslip.track",
      "betslip.grade",
      "odds.read",
      "history.read",
      "report.read",
      "price.compare"
    ],
    "categories": [
      "other"
    ],
    "industries": [
      "general"
    ],
    "protocols": [
      "mcp"
    ],
    "auth": {
      "type": "unknown"
    },
    "pricing": {
      "model": "unknown"
    },
    "input_schema": {},
    "output_schema": {},
    "metadata": {
      "content_language": "en",
      "translation_status": "original-only",
      "official_registry": {
        "version": "1.1.0",
        "packages": [],
        "remotes": []
      },
      "review_gate": {
        "passed": true,
        "reasons": [],
        "policy_version": "review-gate-v1",
        "evaluated_at": "2026-09-03T06:07:09.479Z"
      }
    },
    "latest_version": "1.1.0",
    "status": "listed",
    "health_status": "healthy",
    "source_kind": "imported",
    "source_agent": "registry.modelcontextprotocol.io",
    "trust": {
      "signal": "none",
      "reason": null,
      "signals": {
        "yellow": 0,
        "red": 0
      }
    },
    "review_summary": {
      "method_version": "capability-evidence-v2",
      "capability_definition": "strong",
      "contract_completeness": "strong",
      "access_friction": "unknown",
      "operational_transparency": "partial",
      "evidence_strength": "protocol_inspected",
      "use_readiness": "conditional",
      "reviewed_at": "2026-09-03T06:07:10.403Z"
    },
    "experience_count": 0,
    "verified_experience_count": 0,
    "usage_count": 0,
    "success_rate": null,
    "first_seen_at": "2026-09-03T02:49:54.223Z",
    "last_seen_at": "2026-09-03T06:07:09.724Z",
    "published_at": "2026-09-03T06:07:09.724Z",
    "created_at": "2026-09-03T02:49:54.223Z",
    "updated_at": "2026-09-03T06:07:10.403Z",
    "api_url": "https://aiworkshub.io/api/v1/resources/RES_85788A1B8D40",
    "reviews_url": "https://aiworkshub.io/api/v1/resources/RES_85788A1B8D40/reviews",
    "public_url": "https://aiworkshub.io/resources/RES_85788A1B8D40",
    "distribution": {
      "canonical_identity": "https://registry.modelcontextprotocol.io/v0.1/servers/ai.betslipdoctor%2Fmcp/versions/1.1.0",
      "syndicatable": true,
      "origins": [
        {
          "registry_url": "https://registry.modelcontextprotocol.io/",
          "upstream_resource_id": "ai.betslipdoctor/mcp@1.1.0",
          "upstream_record_url": "https://registry.modelcontextprotocol.io/v0.1/servers/ai.betslipdoctor%2Fmcp/versions/1.1.0",
          "relation": "syndicated",
          "metadata": {
            "source": "official-mcp-registry"
          },
          "first_seen_at": "2026-09-03T02:49:54.223Z",
          "last_seen_at": "2026-09-03T06:07:09.724Z"
        }
      ]
    },
    "tools": [
      {
        "name": "get_history_summary",
        "title_en": "Betting history summary",
        "title_zh": "投注历史摘要",
        "description_en": "The authenticated user's imported betting-history ledger: W-L record, stake and net over lifetime/30d/7d windows, sync freshness, and their most recent bets. Numbers come only from the user's own imported slips; nothing is fabricated.",
        "description_zh": "已认证用户导入的投注历史账本：胜负记录、终身/30天/7天窗口的投注额和净额、同步新鲜度以及最近的投注。数字仅来自用户自己导入的投注单；不虚构任何内容。",
        "input_schema": {
          "type": "object",
          "properties": {
            "recent": {
              "type": "integer",
              "minimum": 0,
              "maximum": 20,
              "description": "How many recent bets to include (default 5)."
            }
          },
          "additionalProperties": false
        },
        "output_schema": {},
        "unit_kind": "mcp_tool",
        "effect": "read",
        "open_world": false,
        "idempotency": "idempotent",
        "confirmation": "explicit policy",
        "evidence_ids": [
          "protocol-tools"
        ],
        "runtime_auth": {},
        "pricing": {},
        "metadata": {}
      },
      {
        "name": "get_saved_reports",
        "title_en": "Saved reports",
        "title_zh": "保存的报告",
        "description_en": "List the authenticated user's saved diagnosis reports (newest first), or fetch one full report by id. Only ever the calling user's own reports.",
        "description_zh": "列出已认证用户保存的诊断报告（最新优先），或按 ID 获取一份完整报告。仅限调用用户自己的报告。",
        "input_schema": {
          "type": "object",
          "properties": {
            "report_id": {
              "type": "string",
              "description": "Return this one report in full instead of the compact list."
            },
            "limit": {
              "type": "integer",
              "minimum": 1,
              "maximum": 25,
              "description": "Compact list size (default 10)."
            }
          },
          "additionalProperties": false
        },
        "output_schema": {},
        "unit_kind": "mcp_tool",
        "effect": "read",
        "open_world": false,
        "idempotency": "idempotent",
        "confirmation": "explicit policy",
        "evidence_ids": [
          "protocol-tools"
        ],
        "runtime_auth": {},
        "pricing": {},
        "metadata": {}
      },
      {
        "name": "get_todays_board",
        "title_en": "Today's board (live odds)",
        "title_zh": "今日面板（实时赔率）",
        "description_en": "Live sports board: upcoming and in-play games with main-market prices (moneyline, spread, total) and the best posted price per selection across connected books. Read-only decision support; never a guarantee and never a wager.",
        "description_zh": "实时体育面板：即将进行和进行中的比赛，包含主要市场赔率（胜负、让分、总分）以及各连接博彩公司每个选项的最佳报价。只读决策支持；绝不保证，也绝不投注。",
        "input_schema": {
          "type": "object",
          "properties": {
            "leagues": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "description": "League labels to filter by, e.g. ['MLB','NFL']. Omit for all leagues."
            },
            "limit": {
              "type": "integer",
              "minimum": 1,
              "maximum": 50,
              "description": "Games to return (default 20, max 50). Live plus soonest first."
            },
            "offset": {
              "type": "integer",
              "minimum": 0,
              "description": "Window offset for paging (default 0)."
            }
          },
          "additionalProperties": false
        },
        "output_schema": {},
        "unit_kind": "mcp_tool",
        "effect": "read",
        "open_world": true,
        "idempotency": "idempotent",
        "confirmation": "explicit policy",
        "evidence_ids": [
          "protocol-tools"
        ],
        "runtime_auth": {},
        "pricing": {},
        "metadata": {}
      },
      {
        "name": "get_tracked_slips",
        "title_en": "Tracked slips",
        "title_zh": "跟踪的投注单",
        "description_en": "Read the authenticated user's tracked ticket trees and tracking lifecycle. Provider placement ids and sportsbook deep links are never returned.",
        "description_zh": "读取已认证用户的跟踪票据树和跟踪生命周期。绝不返回提供商投注 ID 和体育博彩深层链接。",
        "input_schema": {
          "type": "object",
          "properties": {
            "limit": {
              "type": "integer",
              "minimum": 1,
              "maximum": 50,
              "description": "Tickets to return (default 20)."
            }
          },
          "additionalProperties": false
        },
        "output_schema": {},
        "unit_kind": "mcp_tool",
        "effect": "read",
        "open_world": false,
        "idempotency": "idempotent",
        "confirmation": "explicit policy",
        "evidence_ids": [
          "protocol-tools"
        ],
        "runtime_auth": {},
        "pricing": {},
        "metadata": {}
      },
      {
        "name": "grade_slip",
        "title_en": "Grade a betslip",
        "title_zh": "评级投注单",
        "description_en": "Submit betslip text and get BetSlip Doctor's graded second opinion: rank, score, per-leg calls, ten-dimension checkup and sourced evidence. Entertainment/decision support only. Uses the user's plan allowance exactly like grading in the app.",
        "description_zh": "提交投注单文本，获取 BetSlip Doctor 的评级第二意见：排名、评分、每腿判断、十维检查和来源证据。仅供娱乐/决策支持。与应用程序中的评级一样使用用户的计划配额。",
        "input_schema": {
          "type": "object",
          "properties": {
            "slipText": {
              "type": "string",
              "description": "The betslip as pasted text: one leg per line with odds where known."
            },
            "ticket": {
              "type": "object",
              "description": "Optional BSD two-level BetTicketContract. Use this for screenshot/manual parses and SGP trees."
            },
            "stake": {
              "type": "number",
              "description": "Optional stake in dollars for payout context."
            },
            "mode": {
              "type": "string",
              "enum": [
                "fast",
                "deep"
              ],
              "description": "Research depth. 'fast' (default) answers quickly; 'deep' fans out to every research provider."
            }
          },
          "anyOf": [
            {
              "required": [
                "slipText"
              ]
            },
            {
              "required": [
                "ticket"
              ]
            }
          ],
          "additionalProperties": false
        },
        "output_schema": {},
        "unit_kind": "mcp_tool",
        "effect": "compute",
        "open_world": true,
        "idempotency": "unknown",
        "confirmation": "explicit policy",
        "evidence_ids": [
          "protocol-tools"
        ],
        "runtime_auth": {},
        "pricing": {},
        "metadata": {}
      },
      {
        "name": "price_shop_slip",
        "title_en": "Price-shop a slip",
        "title_zh": "比价投注单",
        "description_en": "Compare posted prices across books for each leg of a slip (main markets). Reports every book's quote, the best price for the bettor, and how much the user's own line gives up. Only ever describes books with real posted data; read-only, never places a wager.",
        "description_zh": "比较各博彩公司对投注单每腿（主要市场）的报价。报告每家公司的报价、对投注者最有利的价格以及用户自己的赔率让利多少。仅描述具有真实报价数据的公司；只读，绝不投注。",
        "input_schema": {
          "type": "object",
          "properties": {
            "legs": {
              "type": "array",
              "minItems": 1,
              "maxItems": 12,
              "items": {
                "type": "object",
                "properties": {
                  "query": {
                    "type": "string",
                    "description": "Leg description, e.g. 'Yankees moneyline' or 'Brewers -1.5'."
                  },
                  "odds": {
                    "type": "number",
                    "description": "The american odds the user is on (e.g. -120), if known."
                  },
                  "book": {
                    "type": "string",
                    "description": "The book the user is on (e.g. 'draftkings'), if known."
                  }
                },
                "required": [
                  "query"
                ],
                "additionalProperties": false
              }
            }
          },
          "required": [
            "legs"
          ],
          "additionalProperties": false
        },
        "output_schema": {},
        "unit_kind": "mcp_tool",
        "effect": "read",
        "open_world": true,
        "idempotency": "idempotent",
        "confirmation": "explicit policy",
        "evidence_ids": [
          "protocol-tools"
        ],
        "runtime_auth": {},
        "pricing": {},
        "metadata": {}
      },
      {
        "name": "track_slip",
        "title_en": "Track a slip",
        "title_zh": "跟踪投注单",
        "description_en": "Create or revise one of the authenticated user's ticket trees. This stores truth state only; it never places, prepares, or hands off a wager.",
        "description_zh": "创建或修改已认证用户的票据树之一。仅存储真实状态；绝不进行、准备或移交投注。",
        "input_schema": {
          "type": "object",
          "properties": {
            "client_mutation_id": {
              "type": "string",
              "minLength": 1,
              "maxLength": 160,
              "description": "Caller-generated idempotency key."
            },
            "ticket_id": {
              "type": "string",
              "description": "Server ticket id when revising an existing tracked slip."
            },
            "expected_revision": {
              "type": "integer",
              "minimum": 1,
              "description": "Required with ticket_id; stale writes fail with a conflict."
            },
            "ticket": {
              "type": "object",
              "description": "BSD two-level BetTicketContract. SGP children stay nested under one outer pick."
            }
          },
          "required": [
            "client_mutation_id",
            "ticket"
          ],
          "additionalProperties": false
        },
        "output_schema": {},
        "unit_kind": "mcp_tool",
        "effect": "write",
        "open_world": false,
        "idempotency": "idempotent",
        "confirmation": "explicit policy",
        "evidence_ids": [
          "protocol-tools"
        ],
        "runtime_auth": {},
        "pricing": {},
        "metadata": {}
      }
    ],
    "review_profile": {
      "schema_version": "aiworkshub.resource-review/0.2",
      "method_version": "capability-evidence-v2",
      "review_state": {
        "identity": "verified",
        "source": "verified",
        "connectivity": "verified",
        "contract": "strong",
        "safe_use": "untested",
        "real_use": "unobserved"
      },
      "assessment": {
        "capability_definition": "strong",
        "contract_completeness": "strong",
        "access_friction": "unknown",
        "operational_transparency": "partial",
        "evidence_strength": "protocol_inspected",
        "use_readiness": "conditional"
      },
      "profile": {
        "capabilities": [
          {
            "id": "betslip.track",
            "weight": 90,
            "confidence": 90,
            "evidence_ids": [
              "protocol-tools"
            ]
          },
          {
            "id": "betslip.grade",
            "weight": 90,
            "confidence": 90,
            "evidence_ids": [
              "protocol-tools"
            ]
          },
          {
            "id": "odds.read",
            "weight": 80,
            "confidence": 90,
            "evidence_ids": [
              "protocol-tools"
            ]
          },
          {
            "id": "history.read",
            "weight": 70,
            "confidence": 90,
            "evidence_ids": [
              "protocol-tools"
            ]
          },
          {
            "id": "report.read",
            "weight": 60,
            "confidence": 90,
            "evidence_ids": [
              "protocol-tools"
            ]
          },
          {
            "id": "price.compare",
            "weight": 80,
            "confidence": 90,
            "evidence_ids": [
              "protocol-tools"
            ]
          }
        ],
        "domains": [
          {
            "id": "sports",
            "weight": 100,
            "confidence": 90,
            "evidence_ids": [
              "source-record"
            ]
          },
          {
            "id": "betting",
            "weight": 100,
            "confidence": 90,
            "evidence_ids": [
              "source-record"
            ]
          }
        ],
        "workflow_roles": [
          "retrieve",
          "analyze",
          "monitor"
        ]
      },
      "capability_units": [
        {
          "id": "tool:get_tracked_slips",
          "kind": "mcp_tool",
          "capability_id": "betslip.track",
          "effect": "read",
          "open_world": false,
          "idempotency": "idempotent",
          "confirmation": "explicit policy",
          "input_contract": "typed",
          "output_contract": "untyped",
          "accepts": [
            "limit"
          ],
          "produces": [
            "tracked slips"
          ],
          "runtime_auth": {},
          "pricing": {},
          "evidence_ids": [
            "protocol-tools"
          ],
          "metadata": {}
        },
        {
          "id": "tool:track_slip",
          "kind": "mcp_tool",
          "capability_id": "betslip.track",
          "effect": "write",
          "open_world": false,
          "idempotency": "idempotent",
          "confirmation": "explicit policy",
          "input_contract": "typed",
          "output_contract": "untyped",
          "accepts": [
            "client_mutation_id",
            "ticket_id",
            "expected_revision",
            "ticket"
          ],
          "produces": [
            "tracking state"
          ],
          "runtime_auth": {},
          "pricing": {},
          "evidence_ids": [
            "protocol-tools"
          ],
          "metadata": {}
        },
        {
          "id": "tool:get_todays_board",
          "kind": "mcp_tool",
          "capability_id": "odds.read",
          "effect": "read",
          "open_world": true,
          "idempotency": "idempotent",
          "confirmation": "explicit policy",
          "input_contract": "typed",
          "output_contract": "untyped",
          "accepts": [
            "leagues",
            "limit",
            "offset"
          ],
          "produces": [
            "live odds board"
          ],
          "runtime_auth": {},
          "pricing": {},
          "evidence_ids": [
            "protocol-tools"
          ],
          "metadata": {}
        },
        {
          "id": "tool:grade_slip",
          "kind": "mcp_tool",
          "capability_id": "betslip.grade",
          "effect": "compute",
          "open_world": true,
          "idempotency": "unknown",
          "confirmation": "explicit policy",
          "input_contract": "typed",
          "output_contract": "untyped",
          "accepts": [
            "slipText",
            "ticket",
            "stake",
            "mode"
          ],
          "produces": [
            "graded report"
          ],
          "runtime_auth": {},
          "pricing": {},
          "evidence_ids": [
            "protocol-tools"
          ],
          "metadata": {}
        },
        {
          "id": "tool:get_saved_reports",
          "kind": "mcp_tool",
          "capability_id": "report.read",
          "effect": "read",
          "open_world": false,
          "idempotency": "idempotent",
          "confirmation": "explicit policy",
          "input_contract": "typed",
          "output_contract": "untyped",
          "accepts": [
            "report_id",
            "limit"
          ],
          "produces": [
            "saved reports"
          ],
          "runtime_auth": {},
          "pricing": {},
          "evidence_ids": [
            "protocol-tools"
          ],
          "metadata": {}
        },
        {
          "id": "tool:get_history_summary",
          "kind": "mcp_tool",
          "capability_id": "history.read",
          "effect": "read",
          "open_world": false,
          "idempotency": "idempotent",
          "confirmation": "explicit policy",
          "input_contract": "typed",
          "output_contract": "untyped",
          "accepts": [
            "recent"
          ],
          "produces": [
            "history summary"
          ],
          "runtime_auth": {},
          "pricing": {},
          "evidence_ids": [
            "protocol-tools"
          ],
          "metadata": {}
        },
        {
          "id": "tool:price_shop_slip",
          "kind": "mcp_tool",
          "capability_id": "price.compare",
          "effect": "read",
          "open_world": true,
          "idempotency": "idempotent",
          "confirmation": "explicit policy",
          "input_contract": "typed",
          "output_contract": "untyped",
          "accepts": [
            "legs"
          ],
          "produces": [
            "price comparison"
          ],
          "runtime_auth": {},
          "pricing": {},
          "evidence_ids": [
            "protocol-tools"
          ],
          "metadata": {}
        }
      ],
      "access": {
        "distribution_license": {},
        "runtime_auth": {},
        "runtime_pricing": {},
        "dependencies": []
      },
      "operational_flags": [],
      "trust": {
        "signal": "none",
        "evidence_ids": [],
        "reason": null
      },
      "fit": {
        "good_for": [
          "betting analysis",
          "odds comparison",
          "bet tracking"
        ],
        "not_for": [
          "placing bets",
          "guaranteed outcomes"
        ]
      },
      "evidence": [
        {
          "id": "source-record",
          "type": "registry_record",
          "source": "https://github.com/opspot-ai/betslipdoctor",
          "observation": "MCP source record for BetSlip Doctor; version 1.1.0.",
          "observed_at": null,
          "payload": {}
        },
        {
          "id": "protocol-tools",
          "type": "protocol_observation",
          "source": "https://api.betslipdoctor.ai/api/mcp#tools/list",
          "observation": "7 tools were returned by MCP discovery; 7 were retained for review.",
          "observed_at": "2026-09-03T06:06:55.273Z",
          "payload": {}
        }
      ],
      "unknowns": [
        "authentication method",
        "pricing model",
        "data retention policies"
      ],
      "id": "REV_2F9B7C94F2C4",
      "resource_id": "RES_85788A1B8D40",
      "evaluator_type": "platform_ai",
      "provider": "deepseek",
      "model": "deepseek-v4-flash",
      "review_scope": "protocol-inspected-mcp",
      "created_at": "2026-09-03T06:07:10.403Z"
    }
  }
}