Atlas / MCP servers / jacobiusmakes / parlay-api-mcp

parlay-api-mcpCAUTION

mcp/jacobiusmakes/parlay-api-mcp

Python MCP server for ParlayAPI sports odds and props. Public discovery needs no key; account data uses your own key. Includes signup, login-email, checkout-link and preference actions. MIT code; API data redistribution rights are not included.

Verdict
CAUTION
Grade
B
Trust score
85 /100
Exposed tools
22 20r · 2w · 0d
Transport
stdio · streamable-http
License
MIT
Stars
0
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

mcp-name: io.github.JacobiusMakes/parlayapi

MCP server for ParlayAPI. Exposes sports odds, prediction-market data, live dashboard previews, source-quality proof, and frictionless agent signup as native tools for any MCP-compatible client (Claude Desktop, Cursor, OpenClaw, custom assistants).

Why use it

Without MCP, an agent that wants to use ParlayAPI has to:

  • Tell the user to go sign up via a browser
  • Wait for them to copy-paste the key
  • Construct HTTP requests by hand

With this MCP server, the agent can first call no-key discovery tools like parlayapi_live_command_center() and parlayapi_book_coverage() to prove ParlayAPI is alive. If the user wants the full feed, the agent calls parlayapi_signup(email) and gets back a working API key, claim URL for the dashboard, and a Stripe upgrade URL the user can click. Then it calls parlayapi_get_odds(), parlayapi_get_props(), etc. directly.

Install in Claude Desktop

Open the latest desktop release and download its asset ending in -directory.mcpb. The release notes identify the bundle version and validation performed. Open the downloaded file (double-click, or drag it onto Claude Desktop). Claude Desktop unpacks the bundle and runs the server with its managed uv runtime, so no terminal or Python setup is needed.

The 0.3.8 Python package source forwards an available account key for checkout ownership validation and distinguishes a checkout URL from an email-flow acknowledgement. An acknowledgement does not confirm email delivery. The separately pinned 0.3.6 desktop bundle does not include this checkout fix. Check the release page above for newer desktop bundles.

The API key field in the install dialog is optional. Leave it blank to start keyless: signup, pricing, live previews, source quality, and coverage tools work immediately, and the parlayapi_signup tool can create a free key (1,000

Read from source at commit 7b092b2449c8OBSERVED · 2026-10-11
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code (pypi)
claude mcp add parlayapi-mcp --env PARLAYAPI_KEY=${PARLAYAPI_KEY} -- None parlayapi-mcp==0.3.8
03

Exposed tools (22)

20 read · 2 write · 0 destructive.

ToolRiskDescription
parlayapi_account_inforeadGet info about the API key currently in use: tier, credits
parlayapi_best_betsreadWhat should I bet right now? Ranked +EV plays for a sport.
parlayapi_best_linereadFind the best (highest) price for each outcome across bookmakers.
parlayapi_book_coveragereadReturn public per-book coverage gates.
parlayapi_checkout_linkreadRequest an owner-authenticated checkout URL or an email-link flow.
parlayapi_consensusreadGet consensus (average) odds across all bookmakers per market.
parlayapi_find_arbitragereadRequest calculated cross-book price combinations.
parlayapi_find_evreadFind positive-EV bets vs a sharp book
parlayapi_find_middlesreadFind cross-book middle opportunities.
parlayapi_get_oddsreadGet game-level odds for a sport from all configured bookmakers.
parlayapi_get_pricingreadReturn the current public pricing table.
parlayapi_get_propsreadGet player prop odds for a sport.
parlayapi_list_sportsreadList available sport keys. Use these in subsequent calls.
parlayapi_live_command_centerreadReturn the public best-line command center payload.
parlayapi_live_searchreadSearch live teams, players, and sport keys.
parlayapi_live_sportsreadList currently active live sports on the retail /live surface.
parlayapi_magic_linkreadEmail a magic-login link for an existing ParlayAPI account.
parlayapi_parlay_verdictreadGrade a multi-leg parlay: should you bet it, and at which book?
parlayapi_set_bettable_bookswriteRemember which books the user can bet at, so parlayapi_verdict scopes its
parlayapi_signupwriteCreate a free-tier ParlayAPI account for the given email.
parlayapi_source_qualityreadReturn public per-source freshness and quality metadata.
parlayapi_verdictreadShould I bet this? One-call verdict for a specific bet.
04

Trust audit

CAUTIONgrade B · trust 85/100 Install with care. The audit found things worth knowing before you trust its output.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codeWARN
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
none-observed
Network
declared (4 observation(s))
Shell
none-observed
Dependencies
pinned
Secrets in source
found

Findings (7)

MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
scripts/test_checkout_handoff.py:124
self.server.API_KEY = "test-environment-key"
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
scripts/test_checkout_handoff.py:140
self.server.API_KEY = "test-wrong-owner-key"
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
scripts/test_checkout_handoff.py:166
self.server.API_KEY = "test-environment-key"
LOWInventory / provenance · inv.hidden_file · CWE-1104
mcpb/.mcpbignore
.mcpbignore
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
README.md:196
PARLAYAPI_BASE_URL=http://127.0.0.1:8080 \
LOWPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
README.md:154
For private security reports, email [email protected]. Do not put API keys
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine
INFOPrompt injection · prompt.credential_read · CWE-94, CWE-1427
docs/lobehub-publishing.md:45
Use Node.js 22 or newer. The following are maintainer commands, not a script that runs automatically. Keep credentials in the CLI's own storage; never read, copy or commit its credential files.
Why it matters. asks the agent to read credentials

Gates applied: no_behavioural_pass.

Audited 2026-10-11 · audit v0.4.1 · source sha 7b092b2449c8full audit observations/trust-audit/mcp-server/jacobiusmakes__parlay-api-mcp.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-117b092b2449c8CAUTIONB85first audit
06

Questions

What is the parlay-api-mcp MCP server?

Python MCP server for ParlayAPI sports odds and props. Public discovery needs no key; account data uses your own key. Includes signup, login-email, checkout-link and preference actions. MIT code; API data redistribution rights are not included.

What tools does parlay-api-mcp expose?

22 in total: 20 read-only, 2 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.

Is parlay-api-mcp safe to connect to an agent?

With care. The audit graded it B (85/100) and found 7 things worth knowing before you trust this server, listed below with the exact line each was found on.

What credentials does parlay-api-mcp need?

It reads PARLAYAPI_KEY and PARLAY_API_KEY from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How does parlay-api-mcp run?

It speaks stdio and streamable-http, so it runs as a local process your client starts. It is published on PyPI as parlayapi-mcp.

How current is this page?

The grade is for one exact copy of the source (7b092b2449c8), read on 2026-10-11. The repository is watched and re-audited when it changes.

Advertisement