Servidor MCP

BetSlip Doctor

ai.betslipdoctor/mcp
Gaming Público y accesible MCP 2026-07-28

Qué hace este MCP

Provides read-only sports betting analysis, odds comparisons, betslip grading, betting history, and slip tracking without placing wagers.

doctor_conversation
Ask the Doctor
The app Doctor conversation. Send version bsd-agent-doctor-v1 and one action: open (commandKey, optional owned subject), threads, conversation (threadId), quota, quote (commandKey, threadId, current sequence, text), start (commandKey, quoteId), job or events (jobId), or cancel (commandKey, jobId). Keep each write commandKey stable on retry. Show the quote before start; a succeeded job carries the saved Doctor answer and the conversation stores it. The app enforces AI consent, tier, allowance, cost cap and worker admission. Do not claim an answer until the saved result is readable.
Idempotente
Esquema de entrada
{'type': 'object', 'required': ['version', 'action'], 'properties': {'text': {'type': 'string', 'maxLength': 4000, 'minLength': 1}, 'after': {'type': 'integer', 'maximum': 1000000, 'minimum': 0}, 'jobId': {'type': 'string', 'format': 'uuid'}, 'action': {'enum': ['open', 'threads', 'conversation', 'quota', 'quote', 'start', 'job', 'events', 'cancel'], 'type': 'string'}, 'before': {'type': 'integer', 'maximum': 2001, 'minimum': 1}, 'history': {'type': 'object', 'required': ['kind', 'id'], 'properties': {'id': {'type': 'string', 'format': 'uuid'}, 'kind': {'enum': ['import', 'manual'], 'type': 'string'}}, 'additionalProperties': False}, 'quoteId': {'type': 'string', 'format': 'uuid'}, 'version': {'type': 'string', 'const': 'bsd-agent-doctor-v1'}, 'reportId': {'type': ['string', 'null'], 'format': 'uuid'}, 'sequence': {'type': 'integer', 'maximum': 1998, 'minimum': 0, 'description': 'Current thread sequence from conversation.'}, 'threadId': {'type': 'string', 'format': 'uuid'}, 'ticketId': {'type': ['string', 'null'], 'format': 'uuid'}, 'commandKey': {'type': 'string', 'maxLength': 120, 'minLength': 16, 'description': 'Stable key for one write action and all its retries.'}}, 'additionalProperties': False}
get_history_summary
Betting history summary
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. Set view: app for the current app History summary with its source, currency and limitation rules.
Solo lectura Idempotente
Esquema de entrada
{'type': 'object', 'properties': {'view': {'enum': ['app'], 'type': 'string', 'description': 'Use the current app History summary; omit for legacy imported history.'}, 'range': {'enum': ['1w', '1m', '3m', 'ytd', 'all'], 'type': 'string', 'description': 'Current app view only.'}, 'recent': {'type': 'integer', 'maximum': 20, 'minimum': 0, 'description': 'How many recent bets to include (default 5).'}, 'currency': {'type': 'string', 'description': 'Current app view only; ISO 4217 code.'}, 'recordKind': {'enum': ['all', 'import', 'manual'], 'type': 'string', 'description': 'Current app view only.'}}, 'additionalProperties': False}
get_saved_reports
Saved Grade jobs and reports
For current Grade, send version bsd-agent-grade-v1 and action: list (optional limit 1-20 and cursor), job or report (jobId UUID required), or progress (jobId UUID required; optional after 0-1000000 and limit 1-100). Readiness requires a readable saved report. For legacy reports only, omit version/action and send optional report_id and limit 1-25. Never mix current and legacy fields.
Solo lectura Idempotente
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'after': {'type': 'integer', 'default': 0, 'maximum': 1000000, 'minimum': 0}, '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)$'}, 'limit': {'type': 'integer', 'maximum': 100, 'minimum': 1}, 'action': {'enum': ['list', 'job', 'progress', 'report'], 'type': 'string'}, 'cursor': {'type': 'string', 'maxLength': 2000, 'minLength': 1}, 'version': {'type': 'string', 'const': 'bsd-agent-grade-v1'}, 'report_id': {'type': 'string', 'description': 'Legacy saved report ID; omit version and action.'}}, 'additionalProperties': False}
get_todays_board
Today's board (live odds)
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. Set view: app for the current app Live board and its provider, filters and cursor.
Solo lectura Acceso externo Idempotente
Esquema de entrada
{'type': 'object', 'properties': {'view': {'enum': ['app'], 'type': 'string', 'description': 'Use the current app Live board; omit for the legacy main-market board.'}, 'limit': {'type': 'integer', 'maximum': 50, 'minimum': 1, 'description': 'Legacy main-market board: max 50. Current app games view: max 20.'}, 'cursor': {'type': 'string', 'maxLength': 800, 'description': 'Current app view only.'}, 'league': {'type': 'string', 'description': 'Current app view only.'}, 'offset': {'type': 'integer', 'minimum': 0, 'description': 'Window offset for paging (default 0).'}, 'leagues': {'type': 'array', 'items': {'type': 'string'}, 'description': "League labels to filter by, e.g. ['MLB','NFL']. Omit for all leagues."}, 'category': {'enum': ['games'], 'type': 'string', 'description': 'Current app games board only; current event prices are a separate app read.'}}, 'additionalProperties': False}
get_tracked_slips
Tracked slips
Read the authenticated user's tracked ticket trees and tracking lifecycle. Set view: app to read the current app saved-ticket library instead. Provider placement ids and sportsbook deep links are never returned.
Solo lectura Idempotente
Esquema de entrada
{'type': 'object', 'properties': {'view': {'enum': ['app'], 'type': 'string', 'description': 'Use current app saved-ticket library; omit for tracked trees.'}, 'limit': {'type': 'integer', 'maximum': 50, 'minimum': 1, 'description': 'Legacy tracked trees: max 50. Current app view: max 20.'}, 'cursor': {'type': 'string', 'maxLength': 1000, 'description': 'Current app view only.'}, 'search': {'type': 'string', 'maxLength': 128, 'description': 'Current app view only.'}}, 'additionalProperties': False}
grade_slip
Grade a confirmed betslip
Use version bsd-agent-grade-v1 and a unique commandKey (16-120 characters) for every action. quote requires depth plus exactly one of ticketId (saved UUID) or ticket (exact confirmed manual ticket); funding is optional. start requires quoteId. cancel requires jobId. A quote discloses the allowance; start reserves it and returns a durable job. Use get_saved_reports for progress and the saved result. Text and legacy SGP inputs return migration_required.
Acceso externo Idempotente
Esquema de entrada
{'type': 'object', 'required': ['version', 'action', 'commandKey'], 'properties': {'depth': {'enum': ['fast', 'smart', 'deep', 'elite'], 'type': 'string'}, '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)$'}, 'action': {'enum': ['quote', 'start', 'cancel'], 'type': 'string'}, 'ticket': {'type': 'object', 'required': ['clientSlipId', 'clientRevision', 'source', 'intent', 'bookId', 'currency', 'stakeMinor', 'selections', 'confirmation', 'offeredReturnMinor', 'acceptedReturnMinor', 'settlementTerms'], 'properties': {'bookId': {'type': 'string', 'pattern': '^[a-zA-Z0-9_.:@/-]+$', 'maxLength': 200, 'minLength': 1}, 'intent': {'enum': ['singles', 'parlay'], 'type': 'string'}, 'source': {'type': 'string', 'const': 'manual'}, 'currency': {'type': 'string', 'pattern': '^[A-Z]{3}$'}, 'bookLabel': {'type': 'string', 'maxLength': 80, 'minLength': 1}, 'selections': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'eventId', 'entityId', 'provider', 'sport', 'league', 'market', 'period', 'side', 'line', 'label', 'startsAt', 'bookId', 'jurisdiction', 'oddsAmerican', 'observedAt', 'quoteVersion'], 'properties': {'id': {'type': 'string', 'pattern': '^[a-zA-Z0-9_.:@/-]+$', 'maxLength': 200, 'minLength': 1}, 'line': {'anyOf': [{'type': 'string', 'pattern': '^-?\\d{1,8}(\\.\\d{1,4})?$'}, {'type': 'null'}]}, 'side': {'type': 'string', 'pattern': '^[a-zA-Z0-9_.:@/-]+$', 'maxLength': 200, 'minLength': 1}, 'label': {'type': 'string', 'maxLength': 300, 'minLength': 1}, 'sport': {'type': 'string', 'pattern': '^[a-zA-Z0-9_.:@/-]+$', 'maxLength': 200, 'minLength': 1}, 'bookId': {'type': 'string', 'pattern': '^[a-zA-Z0-9_.:@/-]+$', 'maxLength': 200, 'minLength': 1}, 'future': {'type': 'boolean', 'const': True}, 'league': {'anyOf': [{'type': 'string', 'pattern': '^[a-zA-Z0-9_.:@/-]+$', 'maxLength': 200, 'minLength': 1}, {'type': 'null'}]}, 'market': {'type': 'string', 'pattern': '^[a-zA-Z0-9_.:@/-]+$', 'maxLength': 200, 'minLength': 1}, 'period': {'anyOf': [{'type': 'string', 'pattern': '^[a-zA-Z0-9_.:@/-]+$', 'maxLength': 200, 'minLength': 1}, {'type': 'null'}]}, 'eventId': {'type': 'string', 'pattern': '^[a-zA-Z0-9_.:@/-]+$', 'maxLength': 200, 'minLength': 1}, 'entityId': {'type': 'string', 'pattern': '^[a-zA-Z0-9_.:@/-]+$', 'maxLength': 200, 'minLength': 1}, 'provider': {'type': 'string', 'const': 'manual'}, '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'}]}, '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'}]}, 'jurisdiction': {'type': 'string', 'maxLength': 32, 'minLength': 2}, 'oddsAmerican': {'type': 'integer', 'maximum': 1000000, 'minimum': -1000000}, 'quoteVersion': {'anyOf': [{'type': 'string', 'pattern': '^[a-zA-Z0-9_.:@/-]+$', 'maxLength': 200, 'minLength': 1}, {'type': 'null'}]}}, 'additionalProperties': False}, 'maxItems': 25, 'minItems': 1}, 'stakeMinor': {'type': 'integer', 'maximum': 1000000000000, 'minimum': 0}, 'clientSlipId': {'type': 'string', 'pattern': '^[a-zA-Z0-9_.:@/-]+$', 'maxLength': 200, 'minLength': 1}, 'confirmation': {'type': 'string', 'const': 'exact_fields_confirmed'}, 'clientRevision': {'type': 'integer', 'maximum': 1000000000, 'minimum': 0}, '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)$'}, 'settlementTerms': {'type': 'object', 'required': ['source', 'reference', 'version', 'pushes', 'voids'], 'properties': {'voids': {'enum': ['refund', 'reprice', 'unknown'], 'type': 'string'}, 'pushes': {'enum': ['refund', 'reprice', 'lose', 'unknown'], 'type': 'string'}, 'source': {'enum': ['provider', 'book_document', 'user_reported', 'unknown'], 'type': 'string'}, 'version': {'anyOf': [{'type': 'string', 'pattern': '^[a-zA-Z0-9_.:@/-]+$', 'maxLength': 200, 'minLength': 1}, {'type': 'null'}]}, 'reference': {'anyOf': [{'type': 'string', 'maxLength': 500, 'minLength': 1}, {'type': 'null'}]}, 'cashSingle': {'type': 'string', 'const': 'win_loss_refund'}}, 'additionalProperties': False}, 'offeredReturnMinor': {'anyOf': [{'type': 'integer', 'maximum': 1000000000000, 'minimum': 0}, {'type': 'null'}]}, 'acceptedReturnMinor': {'anyOf': [{'type': 'integer', 'maximum': 1000000000000, 'minimum': 0}, {'type': 'null'}]}}, 'additionalProperties': False}, 'funding': {'enum': ['auto', 'weekly', 'bug_bounty'], 'type': 'string', 'default': 'auto'}, '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)$'}, 'version': {'type': 'string', 'const': 'bsd-agent-grade-v1'}, '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)$'}, 'commandKey': {'type': 'string', 'pattern': '^[a-zA-Z0-9_-]+$', 'maxLength': 120, 'minLength': 16}}, 'additionalProperties': False}
price_shop_slip
Price-shop a slip
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.
Solo lectura Acceso externo Idempotente
Esquema de entrada
{'type': 'object', 'required': ['legs'], 'properties': {'legs': {'type': 'array', 'items': {'type': 'object', 'required': ['query'], 'properties': {'book': {'type': 'string', 'description': "The book the user is on (e.g. 'draftkings'), if known."}, 'odds': {'type': 'number', 'description': 'The american odds the user is on (e.g. -120), if known.'}, 'query': {'type': 'string', 'description': "Leg description, e.g. 'Yankees moneyline' or 'Brewers -1.5'."}}, 'additionalProperties': False}, 'maxItems': 12, 'minItems': 1}}, 'additionalProperties': False}
tail_post
Preview or publish to Tail
Send version bsd-agent-tail-v1. Preview a draft from either an owned saved Grade report (reportId, text, showStake, placement) or saved Doctor exchange (source doctor_exchange, threadId, messageId, text) through the app service. Publish only after showing the exact preview and getting the customer’s confirmation. For action publish reuse the same draft and previewBinding, pass confirmation PUBLISH_POST, placementConfirmation, fWarning and a stable commandKey. Publishing enters the app moderation queue; it is not a wager.
Acceso externo Idempotente
Esquema de entrada
{'type': 'object', 'required': ['version', 'action', 'draft'], 'properties': {'draft': {'type': 'object', 'required': ['text'], 'properties': {'text': {'type': 'string', 'maxLength': 280}, 'source': {'type': 'string', 'const': 'doctor_exchange'}, 'reportId': {'type': 'string', 'format': 'uuid', 'description': 'Owned saved Grade job ID for a ticket post.'}, 'threadId': {'type': 'string', 'format': 'uuid', 'description': 'Owned Doctor thread for an exchange post.'}, 'messageId': {'type': 'string', 'format': 'uuid', 'description': 'Saved Doctor reply in that thread.'}, 'placement': {'enum': ['asking', 'self_reported_placed'], 'type': 'string', 'description': 'Ticket post only.'}, 'showStake': {'type': 'boolean', 'description': 'Ticket post only.'}, 'pollOptions': {'type': 'array', 'items': {'type': 'string', 'maxLength': 50, 'minLength': 1}, 'maxItems': 4, 'minItems': 2}}, 'description': 'The exact app post draft: either a saved Grade report or a saved Doctor exchange.', 'additionalProperties': False}, 'action': {'enum': ['preview', 'publish'], 'type': 'string'}, 'version': {'type': 'string', 'const': 'bsd-agent-tail-v1'}, 'fWarning': {'enum': ['acknowledge', 'dont_ask_again', None], 'type': ['string', 'null']}, 'commandKey': {'type': 'string', 'maxLength': 120, 'minLength': 16}, 'confirmation': {'type': 'string', 'const': 'PUBLISH_POST'}, 'previewBinding': {'type': 'string', 'pattern': '^[a-f0-9]{64}$'}, 'placementConfirmation': {'enum': ['NOT_PLACED', 'SELF_REPORTED_PLACED'], 'type': 'string'}}, 'additionalProperties': False}
tail_read
Read Tail
Send version bsd-agent-tail-v1 and action feed (optional feed/profileId/listId/search/limit/cursor) or post (postId). Read the same account-filtered Tail feed or one visible post as the BSD app. Moderation, follows, mutes, private lists and cursor binding use the app service.
Solo lectura Idempotente
Esquema de entrada
{'type': 'object', 'required': ['version', 'action'], 'properties': {'feed': {'enum': ['community', 'for_you', 'following', 'own', 'profile', 'bookmarks', 'list'], 'type': 'string'}, 'limit': {'type': 'integer', 'maximum': 25, 'minimum': 1}, 'action': {'enum': ['feed', 'post'], 'type': 'string'}, 'cursor': {'type': 'string', 'maxLength': 1500}, 'listId': {'type': 'string', 'format': 'uuid'}, 'postId': {'type': 'string', 'format': 'uuid'}, 'search': {'type': 'string', 'maxLength': 100}, 'version': {'type': 'string', 'const': 'bsd-agent-tail-v1'}, 'profileId': {'type': 'string', 'format': 'uuid'}}, 'additionalProperties': False}
track_slip
Track a slip
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.
Idempotente
Esquema de entrada
{'type': 'object', 'required': ['client_mutation_id', 'ticket'], 'properties': {'ticket': {'type': 'object', 'description': 'BSD two-level BetTicketContract. SGP children stay nested under one outer pick.'}, '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.'}, 'client_mutation_id': {'type': 'string', 'maxLength': 160, 'minLength': 1, 'description': 'Caller-generated idempotency key.'}}, 'additionalProperties': False}
Añadido
tail_post
25 de September de 2026 a las 03:00
Añadido
tail_read
25 de September de 2026 a las 03:00
Añadido
doctor_conversation
25 de September de 2026 a las 03:00
Modificado
get_history_summary
25 de September de 2026 a las 03:00
Modificado
get_saved_reports
25 de September de 2026 a las 03:00
Modificado
grade_slip
25 de September de 2026 a las 03:00
Modificado
get_todays_board
25 de September de 2026 a las 03:00
Modificado
get_tracked_slips
25 de September de 2026 a las 03:00
Modificado
get_saved_reports
23 de September de 2026 a las 02:51
Modificado
grade_slip
23 de September de 2026 a las 02:51
Añadido
price_shop_slip
11 de September de 2026 a las 15:31
Añadido
get_history_summary
11 de September de 2026 a las 15:31
Añadido
get_saved_reports
11 de September de 2026 a las 15:31
Añadido
grade_slip
11 de September de 2026 a las 15:31
Añadido
get_todays_board
11 de September de 2026 a las 15:31
Añadido
track_slip
11 de September de 2026 a las 15:31
Añadido
get_tracked_slips
11 de September de 2026 a las 15:31