Prototype · Preview: every server in the official registry, synced every 30 minutes. Reviews and accounts come in a later step.
PopNx MCPMCP servers for people who use AI · explained in plain words

MagicMarkets

by magicmarketsversion 1.0.0i★ –iRuns in the cloud
Registry namecom.magicmarkets/mcp

Install

Overview

Description from the maker (original English)

Sports prediction markets for AI agents — live prices, quotes, orders, and positions.

PopNx MCP’s three pillars

These three are never merged into one score: opinions, measurements and popularity are different things.

What you can do with it

We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.

  • Connection: Runs in the cloud
  • Transport: Streamable HTTP
  • Category: Online shops & payments

Install

Pick the AI app you use, then copy the settings.

Before you install

  • Basic checks: 1 of 1 passed
  • Runs on the maker’s server: what you ask it goes through their server.
  • The registry lists no key to fill in.

You need

Which app do you use?

Pick your app above. We remember it, so next time the button says “Install in …”.

Works in Claude on the web, desktop and mobile:

  1. Open Settings → Connectors
  2. Press Add custom connector
  3. Paste the address below and press Add
  4. If it asks you to sign in, sign in with the maker
SettingsConnectors1+ Add2https://…3
https://magicmarkets.com/mcp

Run this in your terminal

claude mcp add --transport http magicmarkets https://magicmarkets.com/mcp

Open in Cursor

Or copy the settings yourself

Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json

{
  "mcpServers": {
    "magicmarkets": {
      "url": "https://magicmarkets.com/mcp"
    }
  }
}

Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.

Open in VS Code

Or copy the settings yourself

Paste into .vscode/mcp.json in your project

{
  "servers": {
    "magicmarkets": {
      "type": "http",
      "url": "https://magicmarkets.com/mcp"
    }
  }
}

Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.

ChatGPT connects only to servers on the internet:

  1. Open ChatGPT on the web → Settings → Connectors (Apps)
  2. Press Create or Add (some plans need Developer mode under Advanced first)
  3. Paste the address below, give it a name and save
  4. If it asks you to sign in, sign in with the maker
SettingsConnectors1+ Create2https://…3
https://magicmarkets.com/mcp

Menu names can differ slightly by plan and over time.

Your choice stays on this device in a cookie; no account needed.

These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.

What it can do

We have not read this server’s tool list yet; we check endpoints in rotation.

Basic checksi

We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 7, 2026

  • ✓ Pass

    Maker matches the repo

    The registry name was verified against the domain magicmarkets.com (the registry checks domain ownership)

  • … Not checked yet

    Still maintained

    We have not read this repo from GitHub yet

  • … Not checked yet

    Has a licence

    We have not read this repo from GitHub yet

  • … Not checked yet

    Endpoint responds

    Not checked yet; we check endpoints in rotation

  • … Not checked yet

    Sign-in with OAuth

    Not checked yet; we check endpoints in rotation

  • … Not checked yet

    No hidden instructions in tool descriptions

    Not checked yet; we read the tool list when we check the endpoint

Compared with others in Online shops & paymentsi

  • More stars than 0% of the other 1748 servers in this category
  • Published to the registry more recently than 52% of the other 1748 servers in this category
  • Basic checks equal to or better than 100% of the other 1748 servers in this category

Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.

Common questions

Is MagicMarkets safe?

It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.

What keys or codes does it need?

The registry does not list a required key, though some servers ask you to sign in on first use.

Does it run on my computer or in the cloud?

It runs in the maker’s cloud. Connect over the internet with nothing to install, but what you send passes through the maker’s servers.

Is it still maintained?

The GitHub repo last changed –, and the latest version (1.0.0) reached the registry 30 days ago.

Which apps can use it?

Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. It connects by URL, so apps that accept remote MCP servers work too, such as ChatGPT in developer mode.

What can I use instead?

In the same category: Spree Commerce: open-source B2B and marketplace ecommerce, Stripe MCP, MCP Cn Commerce

Alternatives

Servers in the same category from other makers, sorted by stars.

Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi

Stripe MCP

by stripe

Stripe’s official server lets AI view and manage customers, products, payments and invoices. Connect to Stripe’s cloud and sign in with OAuth.

Runs in the cloud★ 2,043MITUpdated 12 months ago
Install

MCP Cn Commerce

by TonyWang-hub

8 read-only MCP platform entries; support is operation-specific; merchant live acceptance pending

Runs on your computer★ 96MITUpdated 27 days ago
Install

README from the maker

Open the README

Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.

magicmarkets-cli

A command-line interface for the Magic Markets v2 API — stream live sports prices, quote selections, place and manage orders, and inspect your position. The same API is also available as MCP tools: the easiest path is the hosted, OAuth-authenticated endpoint at https://magicmarkets.com/mcp — no install required. This binary also serves the same tools locally, over stdio (a client launches magicmarkets mcp as a subprocess) or the streamable HTTP transport on localhost.

Single static binary, authenticated with one API key. No request signing, no private keys.

magicmarkets markets --sport fb                     # find events with live prices

magicmarkets offers fb 2026-06-15,1001,2002 # list priced bet types magicmarkets betslip create fb 2026-06-15,1001,2002 for,h --wait 5s magicmarkets order place --betslip bs-123 --price 2.10 --stake 50

  • [Setup](#setup) — install, authenticate, first commands
  • [Using it](#using-it) — the bet flow, command reference, MCP, prices, errors
  • [Development](#development) — layout, code generation, conventions, contributing

Setup

1. Install

From a clone:

git clone https://github.com/magicmarkets/magicmarkets-cli

cd magicmarkets-cli make install # installs magicmarkets into your Go bin directory

make where prints exactly where that landed. If magicmarkets is not found afterwards, that directory is not on your PATH:

export PATH="$PATH:$(go env GOPATH)/bin"      # add to ~/.zshrc or ~/.bashrc

Prefer not to install? make build produces ./build/magicmarkets and leaves your PATH alone.

go install directly

Note the /cmd/magicmarkets path — installing the module root would build a binary called magicmarkets-cli:

go install ./cmd/magicmarkets

The Go module path is magicmarkets-cli, not a GitHub URL, so go install github.com/…/magicmarkets-cli@latest will not work. Cloning and make install is the supported path.

2. Add your API key

Create a key at magicmarkets.com under Settings → API. It is shown once at creation, so store it immediately.

Put it in ~/.magicmarkets/.env so it works from any directory:

mkdir -p ~/.magicmarkets

echo 'MAGICMARKETS_API_KEY=your-key-here' > ~/.magicmarkets/.env chmod 600 ~/.magicmarkets/.env

An env var or a project-local .env works too — cp env.example .env and fill it in.

3. Verify

$ magicmarkets status

version v1.0.0 api url https://magicmarkets.com/v2 ws url wss://magicmarkets.com/v2/stream lang en api key ***********1234 env files [/Users/you/.magicmarkets/.env] authenticated yes

Always check this before opening a stream — the WebSocket rejects a bad key at the handshake without a useful error.

That's the whole setup. Everything below is optional.

Try it

magicmarkets balance                          # money position

magicmarkets xrates # exchange rates to USDT magicmarkets markets --sport fb --limit 5 # events that currently have prices magicmarkets offers fb --depth 2 # priced bet types on one event magicmarkets orders --open # your open orders magicmarkets ticks 2.345 # where a price lands on the tick schedule magicmarkets api endpoints # every endpoint (no key, no network)

Add --json to any command to pipe it into jq.

Configuration

Resolved in this order, first match winning:

PrioritySource
1Real environment variables
2./.env
3~/.magicmarkets/.env
4~/.env
5Built-in defaults
VariableDefaultPurpose
MAGICMARKETS_API_KEY—API key (X-Api-Key) for the CLI and stdio MCP. HTTP MCP takes the key per request instead
MAGICMARKETS_OAUTH_ISSUERhttps://magicmarkets.com/api/authUpstream AS that mcp --http proxies /authorize and /token to, and that POST /oauth2/firebase-token is resolved against for a Bearer credential — see Authentication
MAGICMARKETS_SESSION_GROUP_ID—Environment-specific id from Magic Markets, used to build the session value an OAuth Bearer credential resolves to. No safe default — required wherever a Bearer credential is expected
MAGICMARKETS_FIREBASE_WEB_API_KEY—Firebase Web API key for the Magic Markets Firebase project, used to exchange the Firebase custom token from /oauth2/firebase-token for a real Firebase ID token — see Authentication. No safe default — required wherever a Bearer credential is expected
MAGICMARKETS_OAUTH_CLIENT_ID—Pre-registered client allowlisting *this host's own* /mcp/callback
MAGICMARKETS_OAUTH_PROXY_SECRET—Seals OAuth proxy state; every replica must share it
MAGICMARKETS_MCP_PUBLIC_URL—Public base of mcp --http (this host is the MCP Authorization Server)
MAGICMARKETS_API_URLhttps://magicmarkets.com/v2REST base, including /v2
MAGICMARKETS_BASIC_AUTH—Base64 user:pass sent as an additional Authorization: Basic header on every /v2/* REST call — the token for an infra-level wall some non-production environments put in front of the v2 API. Production has no such wall, so this is unset there. Never sent to /oauth2/firebase-token, Firebase's signInWithCustomToken, or the WebSocket stream
MAGICMARKETS_WS_URLderived from MAGICMARKETS_API_URLStream endpoint
MAGICMARKETS_LANGenEvent name language: en, ko, zh-hans
MAGICMARKETS_TIMEOUT30sPer-request timeout
MAGICMARKETS_ALLOW_TRADINGunset (off)Lets magicmarkets mcp place bets. No effect on the CLI.

Global flags: --json, --verbose/-v, --api-key, --api-url, --ws-url.

--api-url re-derives the stream endpoint from it (matching MAGICMARKETS_WS_URL's own derivation), unless MAGICMARKETS_WS_URL or --ws-url pins it explicitly — so --api-url https://staging... doesn't leave stream reading production prices while every other command reaches staging.


Using it

The two-step bet flow

Placing a bet always takes two steps:

  1. A betslip registers interest in one selection and receives a live quote. It costs nothing and commits nothing.
  2. An order commits a stake against that quote.

Betslips are short-lived and carry no price when created — the quote arrives asynchronously, over the WebSocket as a pmm message or by polling. Hence --wait:

# 1. find an event that has prices

$ magicmarkets markets --sport fb --limit 5 SPORT EVENT ID EVENT COMPETITION STATUS START


fb 2026-06-15,1001,2002 Arsenal v Chelsea England Premier League pre_event 2026-06-15 16:00:00

2. read a bet_type straight off the feed

$ magicmarkets offers fb 2026-06-15,1001,2002 --depth 2 BET TYPE MARKET IR PRICES (stake @ price) TOTAL


for,h 1x2 - 150.00@2.10 80.00@2.08 230.00 for,ah,h,-4 ah - 200.00@1.95 120.00@1.94 320.00

3. quote it, waiting for the price to land

$ magicmarkets betslip create fb 2026-06-15,1001,2002 for,h --wait 5s betslip id bs-abc123 bet type for,h description Home expires 2026-06-15 15:42:10 (28s) total available 230.00 USDT

Prices: PRICE MIN MAX


2.10 5.00 150.00 2.08 - 80.00

4. commit a stake (asks for confirmation)

$ magicmarkets order place --betslip bs-abc123 --price 2.10 --stake 50

Never construct a `bet_type` by hand. Copy it verbatim from magicmarkets offers or the stream — it encodes the market, handicap, outcome and direction in one string.

Command reference

Account
CommandPurpose
magicmarkets statusShow config and verify the key
magicmarkets balanceBalance, open stake, smart credit, available
magicmarkets xratesExchange rates to USDT
magicmarkets positionAggregate P&L, with --grid for the payoff matrix
Discovery
CommandPurpose
magicmarkets marketsEvents that currently have prices
magicmarkets offers ...Priced bet types on one or more events
magicmarkets streamTail the live price and account feed

markets and offers are plain REST calls (GET /v2/events/, GET /v2/offers/). Sport, competition, in-play status, start window, market type, bet type and minimum liquidity are filtered by the API; --search is matched locally. REST offers can trail the live market by a few seconds — use stream --register when every tick matters.

magicmarkets markets --sport fb,tennis --limit 20

magicmarkets markets --sport fb --from 2026-06-15 --to 2026-06-16 magicmarkets markets --search arsenal magicmarkets markets --in-play magicmarkets offers fb 2026-06-15,1001,2002 --market ah --depth 3 magicmarkets offers fb 2026-06-15,1001,2002 2026-06-15,1003,2004 --min-liquidity 500 magicmarkets stream --register fb:2026-06-15,1001,2002 magicmarkets stream --type order,bet # only order activity

Trading
CommandPurpose
magicmarkets betslip create [sport] [event] [bet-type]Quote a selection
magicmarkets betslip get Show a betslip and its prices
magicmarkets betslip listOpen betslip IDs (--expand for full detail)
magicmarkets betslip refresh Extend expiry
magicmarkets betslip close Close a betslip you no longer need
magicmarkets order placePlace an order against a betslip
magicmarkets orders / magicmarkets order listList orders
magicmarkets order get Show one order and its bets
magicmarkets order tracked Look an order up by idempotency key
magicmarkets order updatesOrders changed in a time window
magicmarkets order close Cancel one order
magicmarkets order close-many ...Cancel up to 500 orders
magicmarkets order close-allCancel every open order

Lay bets and parlays:

# lay (against) a selection

magicmarkets betslip create --lay fb 2026-06-15,1001,2002 for,over,2.5

a 2-leg accumulator

magicmarkets betslip create \ --leg fb:2026-06-15,1001,2002:for,h \ --leg fb:2026-06-16,1003,2004:for,over,2.5 --wait 5s

Risk
CommandPurpose
magicmarkets heartbeat runCreate a heartbeat and keep it alive in the foreground
magicmarkets heartbeat create/list/get/refresh/cancelManage heartbeats directly

A heartbeat is a dead-man's switch: if it is not refreshed before it expires, every open order is closed automatically. Run one alongside an automated strategy so a crash cannot leave orders live.

$ magicmarkets heartbeat run --timeout 60

heartbeat hb-xyz created, expires 2026-06-15 15:43:10; refreshing every 20s press Ctrl-C to cancel it and leave orders open

On Ctrl-C the heartbeat is cancelled cleanly, leaving orders open. If the process dies, the switch fires.

MCP
CommandPurpose
magicmarkets mcpMCP tools over stdio by default, or --http for the streamable HTTP transport on localhost. See MCP
Reference
CommandPurpose
magicmarkets bet-type Validate a bet type, show its payoff grid
magicmarkets ticks Snap a price onto the tick schedule
magicmarkets api endpointsList every endpoint
magicmarkets api show [method]Endpoint detail: parameters, body, responses

| magicmarkets api schema [name] | Componen

Only the beginning is shown; read the rest in the repo

Ask PopNx