{"name":"ai.betslipdoctor/mcp","slug":"betslipdoctor-mcp","title":"BetSlip Doctor","description":"Read, grade, and track a subscriber's betslips with preserved truth and no wager placement.","url":"https://mcp.market/server/betslipdoctor-mcp","rating":null,"grade":"C","score":57,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":5,"stars":null,"forks":null,"downloads_week":null,"last_push_at":null,"license":null},"uptime":{"percent":100,"checks":20,"ok":20,"last_checked_at":"2026-09-24T05:11:06.179Z","last_ok_at":"2026-09-24T05:11:06.179Z","latency_ms":214},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/opspot-ai/betslipdoctor","website":null,"version":"1.1.0","remotes":[{"type":"streamable-http","url":"https://api.betslipdoctor.ai/api/mcp"}],"packages":[],"tools":[{"name":"get_history_summary","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"recent":{"type":"integer","minimum":0,"maximum":20,"description":"How many recent bets to include (default 5)."}},"additionalProperties":false}},{"name":"get_saved_reports","description":"Read your saved Grade job, exact paginated live progress, saved report, or job library. Use bsd-agent-grade-v1 actions list/job/progress/report. Readiness requires a readable saved report. Unversioned report_id/limit reads are retained for legacy reports only.","write_action":false,"price_micros":0,"input_schema":{"type":"object","anyOf":[{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","anyOf":[{"type":"object","properties":{"version":{"type":"string","const":"bsd-agent-grade-v1"},"action":{"type":"string","const":"list"},"limit":{"default":10,"type":"integer","minimum":1,"maximum":20},"cursor":{"type":"string","minLength":1,"maxLength":2000}},"required":["version","action"],"additionalProperties":false},{"type":"object","properties":{"version":{"type":"string","const":"bsd-agent-grade-v1"},"action":{"type":"string","const":"job"},"jobId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["version","action","jobId"],"additionalProperties":false},{"type":"object","properties":{"version":{"type":"string","const":"bsd-agent-grade-v1"},"action":{"type":"string","const":"report"},"jobId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["version","action","jobId"],"additionalProperties":false},{"type":"object","properties":{"version":{"type":"string","const":"bsd-agent-grade-v1"},"action":{"type":"string","const":"progress"},"jobId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"after":{"default":0,"type":"integer","minimum":0,"maximum":1000000},"limit":{"default":100,"type":"integer","minimum":1,"maximum":100}},"required":["version","action","jobId"],"additionalProperties":false}]},{"type":"object","properties":{"report_id":{"type":"string"},"limit":{"type":"integer","minimum":1,"maximum":25}},"additionalProperties":false}]}},{"name":"get_todays_board","description":"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.","write_action":false,"price_micros":0,"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}},{"name":"get_tracked_slips","description":"Read the authenticated user's tracked ticket trees and tracking lifecycle. Provider placement ids and sportsbook deep links are never returned.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":50,"description":"Tickets to return (default 20)."}},"additionalProperties":false}},{"name":"grade_slip","description":"Quote the current Grade service for an existing saved ticket or exact confirmed manual ticket, then start the quote to reserve its disclosed allowance. Returns a durable job; use get_saved_reports to follow progress and read the saved result. Requires bsd-agent-grade-v1. Text and legacy SGP inputs return migration_required.","write_action":false,"price_micros":0,"input_schema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","anyOf":[{"type":"object","properties":{"version":{"type":"string","const":"bsd-agent-grade-v1"},"action":{"type":"string","const":"quote"},"commandKey":{"type":"string","minLength":16,"maxLength":120,"pattern":"^[a-zA-Z0-9_-]+$"},"depth":{"type":"string","enum":["fast","smart","deep","elite"]},"funding":{"default":"auto","type":"string","enum":["auto","weekly","bug_bounty"]},"ticketId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["version","action","commandKey","depth","ticketId"],"additionalProperties":false},{"type":"object","properties":{"version":{"type":"string","const":"bsd-agent-grade-v1"},"action":{"type":"string","const":"quote"},"commandKey":{"type":"string","minLength":16,"maxLength":120,"pattern":"^[a-zA-Z0-9_-]+$"},"depth":{"type":"string","enum":["fast","smart","deep","elite"]},"funding":{"default":"auto","type":"string","enum":["auto","weekly","bug_bounty"]},"ticket":{"type":"object","properties":{"clientSlipId":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[a-zA-Z0-9_.:@/-]+$"},"clientRevision":{"type":"integer","minimum":0,"maximum":1000000000},"parentTicketId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"source":{"type":"string","const":"manual"},"intent":{"type":"string","enum":["singles","parlay"]},"bookId":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[a-zA-Z0-9_.:@/-]+$"},"bookLabel":{"type":"string","minLength":1,"maxLength":80},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"stakeMinor":{"type":"integer","minimum":0,"maximum":1000000000000},"selections":{"minItems":1,"maxItems":25,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[a-zA-Z0-9_.:@/-]+$"},"eventId":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[a-zA-Z0-9_.:@/-]+$"},"entityId":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[a-zA-Z0-9_.:@/-]+$"},"provider":{"type":"string","const":"manual"},"sport":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[a-zA-Z0-9_.:@/-]+$"},"league":{"anyOf":[{"type":"string","minLength":1,"maxLength":200,"pattern":"^[a-zA-Z0-9_.:@/-]+$"},{"type":"null"}]},"market":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[a-zA-Z0-9_.:@/-]+$"},"period":{"anyOf":[{"type":"string","minLength":1,"maxLength":200,"pattern":"^[a-zA-Z0-9_.:@/-]+$"},{"type":"null"}]},"side":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[a-zA-Z0-9_.:@/-]+$"},"line":{"anyOf":[{"type":"string","pattern":"^-?\\d{1,8}(\\.\\d{1,4})?$"},{"type":"null"}]},"label":{"type":"string","minLength":1,"maxLength":300},"startsAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"future":{"type":"boolean","const":true},"bookId":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[a-zA-Z0-9_.:@/-]+$"},"jurisdiction":{"type":"string","minLength":2,"maxLength":32},"oddsAmerican":{"type":"integer","minimum":-1000000,"maximum":1000000},"observedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"quoteVersion":{"anyOf":[{"type":"string","minLength":1,"maxLength":200,"pattern":"^[a-zA-Z0-9_.:@/-]+$"},{"type":"null"}]}},"required":["id","eventId","entityId","provider","sport","league","market","period","side","line","label","startsAt","bookId","jurisdiction","oddsAmerican","observedAt","quoteVersion"],"additionalProperties":false}},"confirmation":{"type":"string","const":"exact_fields_confirmed"},"offeredReturnMinor":{"anyOf":[{"type":"integer","minimum":0,"maximum":1000000000000},{"type":"null"}]},"acceptedReturnMinor":{"anyOf":[{"type":"integer","minimum":0,"maximum":1000000000000},{"type":"null"}]},"settlementTerms":{"type":"object","properties":{"source":{"type":"string","enum":["provider","book_document","user_reported","unknown"]},"cashSingle":{"type":"string","const":"win_loss_refund"},"reference":{"anyOf":[{"type":"string","minLength":1,"maxLength":500},{"type":"null"}]},"version":{"anyOf":[{"type":"string","minLength":1,"maxLength":200,"pattern":"^[a-zA-Z0-9_.:@/-]+$"},{"type":"null"}]},"pushes":{"type":"string","enum":["refund","reprice","lose","unknown"]},"voids":{"type":"string","enum":["refund","reprice","unknown"]}},"required":["source","reference","version","pushes","voids"],"additionalProperties":false}},"required":["clientSlipId","clientRevision","source","intent","bookId","currency","stakeMinor","selections","confirmation","offeredReturnMinor","acceptedReturnMinor","settlementTerms"],"additionalProperties":false}},"required":["version","action","commandKey","depth","ticket"],"additionalProperties":false},{"type":"object","properties":{"version":{"type":"string","const":"bsd-agent-grade-v1"},"action":{"type":"string","const":"start"},"commandKey":{"type":"string","minLength":16,"maxLength":120,"pattern":"^[a-zA-Z0-9_-]+$"},"quoteId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["version","action","commandKey","quoteId"],"additionalProperties":false},{"type":"object","properties":{"version":{"type":"string","const":"bsd-agent-grade-v1"},"action":{"type":"string","const":"cancel"},"commandKey":{"type":"string","minLength":16,"maxLength":120,"pattern":"^[a-zA-Z0-9_-]+$"},"jobId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["version","action","commandKey","jobId"],"additionalProperties":false}]}},{"name":"price_shop_slip","description":"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.","write_action":false,"price_micros":0,"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}},{"name":"track_slip","description":"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.","write_action":true,"price_micros":0,"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}}],"scan":{"score":57,"grade":"C","scanned_at":"2026-09-22T21:29:06.822Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-22T21:29:05.456Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 328ms"]},"poisoning":{"score":15,"max":15,"notes":["7 tool descriptions checked"]},"auth":{"score":3,"max":15,"notes":["open endpoint exposes 1 write-action tools with no auth"]},"maintenance":{"score":3,"max":15,"notes":["repository not readable: repo not found"]},"identity":{"score":2,"max":10,"notes":["no repository or website to verify"]}},"findings":[{"id":"auth.open-write","severity":"high","component":"auth","title":"Write-action tools reachable without authentication"}],"inputs":{"probes":[{"url":"https://api.betslipdoctor.ai/api/mcp","reachable":true,"authRequired":false,"latencyMs":328,"serverInfo":{"name":"betslip-doctor","version":"1.1.0"}}],"packages":[],"repo":{"found":false,"owner":"opspot-ai","repo":"betslipdoctor","error":"repo not found"},"icon":{"url":"https://api.betslipdoctor.ai/icon.svg?ba22d273da6f201c","source":"site"},"presence":{"stars":null,"forks":null,"downloadsWeek":null,"license":null,"lastPushAt":null,"score":5}}}},"grade_history":[],"reviews":[]}