Convert, view, split, merge and track betting codes across bookmakers.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Mint a new verified booking code on 1 to 6 target bookmakers from either a plan_id (from mbc_resolve_picks) or direct picks. Costs 2 credits per target code created; refunded if no code is created.
Optional fan-out list of 1 to 6 target bookmakers.
Direct game picks when booking without a plan_id.
All games must resolve or no code is created (default true).
10-minute plan_id returned by mbc_resolve_picks.
Primary target bookmaker key or alias (e.g. 'sportybet').
Allow booking if odds moved since resolution (default false).
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http managebetcodes-mcp https://api.managebetcodes.app/v1/mcp
Mint a new verified booking code on 1 to 6 target bookmakers from either a plan_id (from mbc_resolve_picks) or direct picks. Costs 2 credits per target code created; refunded if no code is created.
| Argument | Type | Description |
|---|---|---|
| to | array | Optional fan-out list of 1 to 6 target bookmakers. |
| picks | array | Direct game picks when booking without a plan_id. |
| strict | boolean | All games must resolve or no code is created (default true). |
| plan_id | string | 10-minute plan_id returned by mbc_resolve_picks. |
| bookmaker | string | Primary target bookmaker key or alias (e.g. 'sportybet'). |
| accept_odds_change | boolean | Allow booking if odds moved since resolution (default false). |
{
"type": "object",
"properties": {
"to": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 6,
"description": "Optional fan-out list of 1 to 6 target bookmakers."
},
"picks": {
"type": "array",
"items": {
"type": "object"
},
"description": "Direct game picks when booking without a plan_id."
},
"strict": {
"type": "boolean",
"description": "All games must resolve or no code is created (default true)."
},
"plan_id": {
"type": "string",
"description": "10-minute plan_id returned by mbc_resolve_picks."
},
"bookmaker": {
"type": "string",
"description": "Primary target bookmaker key or alias (e.g. 'sportybet')."
},
"accept_odds_change": {
"type": "boolean",
"description": "Allow booking if odds moved since resolution (default false)."
}
}
}Convert 2 to 4 source booking codes synchronously across all or selected target bookmakers in one batch (each slip's own source bookmaker is automatically excluded from its targets). Costs 2 credits per successful (code, target) pair; failed pairs cost 0 credits. For 5 to 20 source codes, use mbc_manage_jobs_and_history with action='create_job' and kind='convert'.
| Argument | Type | Description |
|---|---|---|
| codes* | array | 2 to 4 source slips to bulk convert. |
| targets | array | Optional target bookmaker keys. Omit to convert each slip to all eligible bookmakers. |
| include_card | boolean | Set true to render a combined 1080x1920 PNG share card containing all slips. |
{
"type": "object",
"required": [
"codes"
],
"properties": {
"codes": {
"type": "array",
"items": {
"type": "object",
"required": [
"code",
"from_bookmaker"
],
"properties": {
"code": {
"type": "string",
"description": "Booking code."
},
"from_bookmaker": {
"type": "string",
"description": "Source bookmaker key or alias."
}
}
},
"maxItems": 4,
"minItems": 2,
"description": "2 to 4 source slips to bulk convert."
},
"targets": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional target bookmaker keys. Omit to convert each slip to all eligible bookmakers."
},
"include_card": {
"type": "boolean",
"description": "Set true to render a combined 1080x1920 PNG share card containing all slips."
}
}
}Convert a booking code from one source bookmaker to 1 target bookmaker or a synchronous batch of up to 6 target bookmakers. Costs 2 credits per target that produces a code; failed targets are automatically refunded. To convert to all bookmakers at once (up to 27), use mbc_convert_to_all.
| Argument | Type | Description |
|---|---|---|
| code* | string | Source booking code (e.g. '7B9A2F'). |
| to_bookmakers* | any | Target bookmaker key/alias or list of 1 to 6 targets (e.g. '1xng' or ['1xng', 'bet9ja', 'msport']). |
| from_bookmaker* | string | Source bookmaker key or alias (e.g. 'sportybet', 'bet9ja', '1xng', 'stake'). |
{
"type": "object",
"required": [
"code",
"from_bookmaker",
"to_bookmakers"
],
"properties": {
"code": {
"type": "string",
"description": "Source booking code (e.g. '7B9A2F')."
},
"to_bookmakers": {
"oneOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
},
"maxItems": 6,
"minItems": 1
}
],
"description": "Target bookmaker key/alias or list of 1 to 6 targets (e.g. '1xng' or ['1xng', 'bet9ja', 'msport'])."
},
"from_bookmaker": {
"type": "string",
"description": "Source bookmaker key or alias (e.g. 'sportybet', 'bet9ja', '1xng', 'stake')."
}
}
}Convert one booking code to ALL supported target bookmakers at once (up to 27 target bookmakers: SportyBet, 1xBet Global, 1xBet NG, MSport, Paripesa, 22Bet, Megapari, 888starz, Afropari NG, Afropari Global, Betwinner, Melbet, Helabet, Fastpari, Xparibet, Goldpari, 1xBit, WinWinBet, DBBet, Paripulse, BetJam, Planbet, Linebet, Luckypari, Bet9ja, BetKing, Football.com), or pass a custom targets subset. Uses per-family concurrency lanes. Costs 2 credits per successful target code; failed targets cost 0 credits.
| Argument | Type | Description |
|---|---|---|
| code* | string | Source booking code (e.g. '7B9A2F'). |
| targets | array | Optional list of target bookmaker keys. Omit to convert to all eligible bookmakers. |
| include_card | boolean | Set true to also render a 1080x1920 PNG share card with all converted codes. |
| from_bookmaker* | string | Source bookmaker key or alias (e.g. 'sportybet', 'bet9ja'). |
{
"type": "object",
"required": [
"code",
"from_bookmaker"
],
"properties": {
"code": {
"type": "string",
"description": "Source booking code (e.g. '7B9A2F')."
},
"targets": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional list of target bookmaker keys. Omit to convert to all eligible bookmakers."
},
"include_card": {
"type": "boolean",
"description": "Set true to also render a 1080x1920 PNG share card with all converted codes."
},
"from_bookmaker": {
"type": "string",
"description": "Source bookmaker key or alias (e.g. 'sportybet', 'bet9ja')."
}
}
}Fetch all available canonical markets, lines, outcomes, and live odds for one event_id on a bookmaker. Costs 0 action credits.
| Argument | Type | Description |
|---|---|---|
| event_id* | string | Event ID from mbc_search_events (e.g. 'sr:match:123'). |
| bookmaker* | string | Bookmaker key or alias (e.g. 'sportybet', '1xng'). |
{
"type": "object",
"required": [
"bookmaker",
"event_id"
],
"properties": {
"event_id": {
"type": "string",
"description": "Event ID from mbc_search_events (e.g. 'sr:match:123')."
},
"bookmaker": {
"type": "string",
"description": "Bookmaker key or alias (e.g. 'sportybet', '1xng')."
}
}
}Read the caller's active plan, key charge_order, API credits (monthly plan plus never-expiring packs), regular daily credits, rate limit windows, and active jobs and tracks. Costs 0 credits.
No arguments.
{
"type": "object",
"required": [],
"properties": {}
}List all 29 supported bookmakers with their canonical keys, aliases, code format hints, and capability flags (supports_book, supports_search, supports_tracking, supports_split, conversion_mode). Costs 0 credits. Note: bare '1xbet' and 'afropari' are retired; use '1xng'/'1xglobal' and 'afropari_ng'/'afropari_global'.
No arguments.
{
"type": "object",
"required": [],
"properties": {}
}List all canonical betting markets (1X2, Over/Under, Both Teams To Score, Double Chance, Asian Handicap, European Handicap, totals) and their valid outcome names for resolving and booking games. Costs 0 credits.
No arguments.
{
"type": "object",
"required": [],
"properties": {}
}Create, inspect, list, or cancel async jobs (for >6 targets or up to 20 source codes, requires Developer/Scale/Business API plan), or query past conversion history and book history (0 credits for reads).
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| action* | string | Operation to perform. |
| job_id | string | Job ID 'job_...' for get_job or cancel_job. |
| offset | integer | |
| row_id | string | History ID ('hl_...') or Book ID for get_history or get_book. |
| status | string | |
| target | string | |
| bookmaker | string | |
| job_payload | object | Job creation body for create_job: {kind: 'convert'|'split'|'merge'|'book', ...}. |
{
"type": "object",
"required": [
"action"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1
},
"action": {
"enum": [
"create_job",
"get_job",
"list_jobs",
"cancel_job",
"list_history",
"get_history",
"list_books",
"get_book"
],
"type": "string",
"description": "Operation to perform."
},
"job_id": {
"type": "string",
"description": "Job ID 'job_...' for get_job or cancel_job."
},
"offset": {
"type": "integer",
"minimum": 0
},
"row_id": {
"type": "string",
"description": "History ID ('hl_...') or Book ID for get_history or get_book."
},
"status": {
"type": "string"
},
"target": {
"type": "string"
},
"bookmaker": {
"type": "string"
},
"job_payload": {
"type": "object",
"description": "Job creation body for create_job: {kind: 'convert'|'split'|'merge'|'book', ...}."
}
}
}Manage live match tracking for SportyBet, Football.com, and Betway slips. Actions: 'start' (costs 1 credit; mode 'ticket' fast-fails on a cut, 'game' tracks to the end), 'get' (0 credits), 'list' (0 credits), 'stop' (0 credits).
| Argument | Type | Description |
|---|---|---|
| code | string | Booking code (required for 'start'). |
| mode | string | 'ticket' (fast-fail on a losing game) or 'game' (track all games to the end). |
| label | string | Optional label for 'start' (max 80 chars). |
| action* | string | Tracking operation to run. |
| status | string | Optional status filter for 'list'. |
| track_id | string | Track ID 'trk_...' (required for 'get' and 'stop'). |
| bookmaker | string | Trackable bookmaker: 'sportybet', 'football.com', or 'betway' (default 'sportybet'). |
| webhook_url | string | Optional HTTPS webhook URL on port 443/8443 for 'start'. |
{
"type": "object",
"required": [
"action"
],
"properties": {
"code": {
"type": "string",
"description": "Booking code (required for 'start')."
},
"mode": {
"enum": [
"ticket",
"game"
],
"type": "string",
"description": "'ticket' (fast-fail on a losing game) or 'game' (track all games to the end)."
},
"label": {
"type": "string",
"description": "Optional label for 'start' (max 80 chars)."
},
"action": {
"enum": [
"start",
"get",
"list",
"stop"
],
"type": "string",
"description": "Tracking operation to run."
},
"status": {
"enum": [
"active",
"finished",
"stopped",
"pending_choice"
],
"type": "string",
"description": "Optional status filter for 'list'."
},
"track_id": {
"type": "string",
"description": "Track ID 'trk_...' (required for 'get' and 'stop')."
},
"bookmaker": {
"type": "string",
"description": "Trackable bookmaker: 'sportybet', 'football.com', or 'betway' (default 'sportybet')."
},
"webhook_url": {
"type": "string",
"description": "Optional HTTPS webhook URL on port 443/8443 for 'start'."
}
}
}Combine 2 to 30 booking codes (from the same or different bookmakers) into one deduplicated booking code on a target bookmaker. Reports any skipped, dropped, or conflicting games. Costs 2 credits for 2 codes plus 1 credit per extra input code; refunded if no code is created.
| Argument | Type | Description |
|---|---|---|
| pairs* | array | 2 to 30 (bookmaker, code) pairs to merge. |
| target | string | Target bookmaker key or alias (defaults to the first pair's bookmaker). |
{
"type": "object",
"required": [
"pairs"
],
"properties": {
"pairs": {
"type": "array",
"items": {
"type": "object",
"required": [
"bookmaker",
"code"
],
"properties": {
"code": {
"type": "string",
"description": "Booking code."
},
"bookmaker": {
"type": "string",
"description": "Source bookmaker key or alias."
}
}
},
"maxItems": 30,
"minItems": 2,
"description": "2 to 30 (bookmaker, code) pairs to merge."
},
"target": {
"type": "string",
"description": "Target bookmaker key or alias (defaults to the first pair's bookmaker)."
}
}
}Validate 1 to 50 games (team names or event_ids plus canonical market, outcome, and optional line/odds) on a target bookmaker and create a 10-minute plan_id for mbc_book_code. Returns per-game status ('resolved', 'ambiguous', 'not_found', 'market_missing', 'odds_changed', 'not_bookable'). Costs 0 action credits.
| Argument | Type | Description |
|---|---|---|
| picks* | array | 1 to 50 games to resolve. |
| strict | boolean | Require all games to resolve (default true). |
| bookmaker* | string | Target bookmaker key or alias (e.g. 'sportybet', '1xng', 'bet9ja'). |
| accept_odds_change | boolean | Accept moved odds beyond 1% tolerance (default false). |
{
"type": "object",
"required": [
"bookmaker",
"picks"
],
"properties": {
"picks": {
"type": "array",
"items": {
"type": "object",
"properties": {
"line": {
"type": [
"number",
"string"
]
},
"odds": {
"type": [
"number",
"string"
]
},
"sport": {
"type": "string"
},
"league": {
"type": "string"
},
"market": {
"type": "string",
"description": "Canonical market (e.g. '1X2', 'Over/Under', 'Both Teams To Score', 'Double Chance')."
},
"kickoff": {
"type": "string"
},
"outcome": {
"type": "string",
"description": "Canonical outcome (e.g. 'home', 'draw', 'away', 'over', 'under', 'yes', 'no', '1X', '12', '2X')."
},
"event_id": {
"type": "string"
},
"away_team": {
"type": "string"
},
"home_team": {
"type": "string"
},
"market_id": {
"type": "string"
},
"outcome_id": {
"type": "string"
}
}
},
"maxItems": 50,
"minItems": 1,
"description": "1 to 50 games to resolve."
},
"strict": {
"type": "boolean",
"description": "Require all games to resolve (default true)."
},
"bookmaker": {
"type": "string",
"description": "Target bookmaker key or alias (e.g. 'sportybet', '1xng', 'bet9ja')."
},
"accept_odds_change": {
"type": "boolean",
"description": "Accept moved odds beyond 1% tolerance (default false)."
}
}
}Search up to 20 team or head-to-head match queries ('Arsenal vs Chelsea', 'Real Madrid') on a bookmaker. Returns event IDs, kickoff times, confidence ('exact' or 'fuzzy'), and top canonical markets. Costs 0 action credits (counts against daily search cap).
| Argument | Type | Description |
|---|---|---|
| sport | string | Sport filter (default 'football'; pass 'all' for all sports). |
| queries* | array | 1 to 20 search queries. |
| bookmaker* | string | Bookmaker key or alias (e.g. 'sportybet', '1xng', 'betking'). |
| market_filter | array | Optional canonical market names to filter (e.g. ['1X2', 'Over/Under']). |
| include_markets | boolean | Include top canonical markets on each event (default true). |
{
"type": "object",
"required": [
"bookmaker",
"queries"
],
"properties": {
"sport": {
"type": "string",
"description": "Sport filter (default 'football'; pass 'all' for all sports)."
},
"queries": {
"type": "array",
"items": {
"type": "object",
"required": [
"q"
],
"properties": {
"q": {
"type": "string",
"description": "Team name ('Arsenal') or head-to-head ('Arsenal vs Chelsea')."
},
"to": {
"type": "string",
"description": "Optional end date YYYY-MM-DD."
},
"from": {
"type": "string",
"description": "Optional start date YYYY-MM-DD."
},
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1
},
"league": {
"type": "string",
"description": "Optional league filter substring (e.g. 'Premier League')."
}
}
},
"maxItems": 20,
"minItems": 1,
"description": "1 to 20 search queries."
},
"bookmaker": {
"type": "string",
"description": "Bookmaker key or alias (e.g. 'sportybet', '1xng', 'betking')."
},
"market_filter": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional canonical market names to filter (e.g. ['1X2', 'Over/Under'])."
},
"include_markets": {
"type": "boolean",
"description": "Include top canonical markets on each event (default true)."
}
}
}Divide one booking code into 2 to 20 smaller codes on the same bookmaker so every game lands in exactly one new code. Supports 4 split methods: 'equal' (spread games evenly across codes), 'by_batches' (keep consecutive games together in each code), 'target_odds' (group games to reach a chosen combined odds per code), and 'custom' (set exact game counts per output code). Supports 2 game orders: 'mixed' (keep original slip order) and 'by_start_time' (earliest games first, latest games last). Costs 2 credits plus 1 credit per extra created code; unused parts are refunded.
| Argument | Type | Description |
|---|---|---|
| code* | string | Booking code to split. |
| count | integer | Number of output codes (2 to 20) when method is 'equal' or 'by_batches'. |
| order | string | Game order: 'mixed' (original slip order) or 'by_start_time' (sorted by kickoff). |
| counts | array | Exact game count for each output code (must sum to total games on the slip) when method is 'custom'. |
| method | string | Split method: 'equal', 'by_batches', 'target_odds', or 'custom' (default 'equal'). |
| bookmaker* | string | Bookmaker key or alias (e.g. 'sportybet', 'bet9ja', '1xng', 'msport'). |
| target_odds | number | Target combined odds per output code (e.g. 5.0) when method is 'target_odds'. |
Load a booking code on a bookmaker and return all games, markets, outcomes, odds, live scores, kickoff times, and total odds. Costs 1 credit after a successful read; failed lookups cost 0 credits.
| Argument | Type | Description |
|---|---|---|
| code* | string | Booking code (e.g. '7B9A2F'). |
| bookmaker* | string | Bookmaker key or alias (e.g. 'sportybet', 'bet9ja', '1xng', 'msport'). |
{
"type": "object",
"required": [
"code",
"bookmaker"
],
"properties": {
"code": {
"type": "string",
"description": "Booking code (e.g. '7B9A2F')."
},
"bookmaker": {
"type": "string",
"description": "Bookmaker key or alias (e.g. 'sportybet', 'bet9ja', '1xng', 'msport')."
}
}
}Render a branded PNG slip image for a booking code on a bookmaker. Returns an MCP ImageContent block (image/png) plus a summary. Costs 2 credits after a successful render; failed renders cost 0 credits.
| Argument | Type | Description |
|---|---|---|
| code* | string | Booking code (e.g. '7B9A2F'). |
| bookmaker* | string | Bookmaker key or alias (e.g. 'sportybet', 'bet9ja', '1xng'). |
{
"type": "object",
"required": [
"code",
"bookmaker"
],
"properties": {
"code": {
"type": "string",
"description": "Booking code (e.g. '7B9A2F')."
},
"bookmaker": {
"type": "string",
"description": "Bookmaker key or alias (e.g. 'sportybet', 'bet9ja', '1xng')."
}
}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 14, 2026.
{
"type": "object",
"required": [
"code",
"bookmaker"
],
"properties": {
"code": {
"type": "string",
"description": "Booking code to split."
},
"count": {
"type": "integer",
"maximum": 20,
"minimum": 2,
"description": "Number of output codes (2 to 20) when method is 'equal' or 'by_batches'."
},
"order": {
"enum": [
"mixed",
"by_start_time"
],
"type": "string",
"description": "Game order: 'mixed' (original slip order) or 'by_start_time' (sorted by kickoff)."
},
"counts": {
"type": "array",
"items": {
"type": "integer",
"minimum": 1
},
"maxItems": 20,
"minItems": 2,
"description": "Exact game count for each output code (must sum to total games on the slip) when method is 'custom'."
},
"method": {
"enum": [
"equal",
"by_batches",
"target_odds",
"custom"
],
"type": "string",
"description": "Split method: 'equal', 'by_batches', 'target_odds', or 'custom' (default 'equal')."
},
"bookmaker": {
"type": "string",
"description": "Bookmaker key or alias (e.g. 'sportybet', 'bet9ja', '1xng', 'msport')."
},
"target_odds": {
"type": "number",
"description": "Target combined odds per output code (e.g. 5.0) when method is 'target_odds'.",
"exclusiveMinimum": 1
}
}
}