Buzzr Sports Engine

Registre officiel Marketing et ventes

Local sports math, DFS settlement, bet analytics, and game-entertainment tools.

Installation

Ajoutez ceci à la configuration MCP de votre client (Claude Desktop : claude_desktop_config.json ; Cursor : .cursor/mcp.json ; VS Code et les autres utilisent la même forme « mcpServers »).

NPM package @buzzr/mcp
Claude Code
claude mcp add buzzr-sports-engine -- npx -y @buzzr/mcp@5.1.0
Configuration JSON (Claude Desktop, Cursor, VS Code)
{
    "mcpServers": {
        "buzzr-sports-engine": {
            "command": "npx",
            "args": [
                "-y",
                "@buzzr/mcp@5.1.0"
            ]
        }
    }
}

Documentation

Tirée du README du projet sur GitHub, actualisée chaque semaine. Les liens ouvrent GitHub.

Sommaire
  1. Buzzr Sports Engines
  2. The packages
  3. Architecture
  4. Quick starts
  5. Verified Buzzr app integration
  6. Codex skill
  7. Development
  8. Release hardening
  9. Reporting bugs
  10. Links
  11. License

Buzzr Sports Engines

Pure-TypeScript, zero-dependency engines for sports betting and DFS apps — auditable pick'em settlement, sportsbook odds math, and transparent game-entertainment scoring. The three core engines are pure and perform no I/O; provider contracts inject data, while the CLI and MCP packages are thin boundary wrappers. Feed data in, get deterministic, explainable decisions out — with validation reports and audit trails, because settling money on if (points > line) is how disputes happen. The packages originated in Buzzr, a sports social app; the exact app integration snapshot is documented below.

The packages

PackageWhat it doesInstall
@buzzr/dfs-engineDFS settlement OS: book policies, grading, payouts, audit trails, batch settlementnpm i @buzzr/dfs-engine
@buzzr/bets-coreOdds math: no-vig fair lines, parlays, EV, Kelly staking, CLV, period analyticsnpm i @buzzr/bets-core
@buzzr/entertainment-engineTransparent buzz scoring, hybrid ML predictions, personalized game recommendationsnpm i @buzzr/entertainment-engine
@buzzr/mcpMCP server exposing the engines to AI agents (11 tools)npx -y @buzzr/mcp@5.1.0
@buzzr/dfs-cliGrade a DFS entry from JSON on the command linenpm i -g @buzzr/dfs-cli
@buzzr/dfs-reactSettlement → UI view-models (React/Vue/Svelte/vanilla; no React dep)npm i @buzzr/dfs-react
@buzzr/dfs-testkitFixture builders + mock stat providers for testsnpm i -D @buzzr/dfs-testkit
@buzzr/dfs-provider-espnESPN-shaped stat provider contractnpm i @buzzr/dfs-provider-espn
@buzzr/dfs-provider-sportradarSportradar-shaped stat provider contractnpm i @buzzr/dfs-provider-sportradar
@buzzr/dfs-engine-test-vectorsEngine regression fixtures for the matching package versionnpm i -D @buzzr/dfs-engine-test-vectors

All packages are TypeScript-first with full .d.ts, Node >= 22, and MIT licensing. The core engines have zero external runtime dependencies and ship ESM + CJS; the CLI is ESM-only, and the MCP server necessarily depends on the official MCP SDK plus Zod.

Architecture

flowchart LR
    subgraph data["Your data layer"]
        ESPN["@buzzr/dfs-provider-espn"]
        SR["@buzzr/dfs-provider-sportradar"]
        Custom["custom StatProvider"]
    end

    subgraph core["Core engines (pure functions)"]
        Engine["@buzzr/dfs-engine<br/>policies · grading · payouts · audit"]
        Bets["@buzzr/bets-core<br/>odds · parlays · EV · Kelly · CLV"]
        Ent["@buzzr/entertainment-engine<br/>buzz scores · ML · recommendations"]
    end

    subgraph consumers["Consumers"]
        CLI["@buzzr/dfs-cli"]
        React["@buzzr/dfs-react"]
        MCP["@buzzr/mcp → AI agents"]
        App["your app / Buzzr app"]
    end

    subgraph testing["Testing"]
        Testkit["@buzzr/dfs-testkit"]
        Vectors["@buzzr/dfs-engine-test-vectors"]
    end

    ESPN --> Engine
    SR --> Engine
    Custom --> Engine
    Engine --> CLI
    Engine --> React
    Engine --> MCP
    Bets --> MCP
    Ent --> MCP
    Engine --> App
    Bets --> App
    Ent --> App
    Testkit -.-> Engine
    Vectors -.-> Engine

Quick starts

Settle a DFS entry — @buzzr/dfs-engine
import { createDfsEngine, defineStatProvider } from '@buzzr/dfs-engine';

const provider = defineStatProvider({
  id: 'my-stats',
  getGameLog: ({ leg }) => fetchGameLogRows(leg.playerId, leg.gameDate),
});

const engine = createDfsEngine({ statProviders: [provider] });

const result = await engine.settleEntry(entry, { statProviderId: 'my-stats' });
// result.status, result.payout, result.legs[].actual, result.auditTrail, ...

// v5: settle a whole slate in one call with a shared, memoized stat cache
const batch = await engine.settleEntries(entries, { statProviderId: 'my-stats' });

Built-in operator-named policies are independent compatibility profiles, not official rules engines. PrizePicks is an experimental, partially verified profile; Underdog is experimental and unverified. The displayed lineup terms are authoritative. Custom books plug in via defineBookPolicy, and draft fixtures are not registered for settlement.

The test-vector package publishes engine regression fixtures for the matching engine version. They are not official operator conformance.

Price a bet — @buzzr/bets-core
import {
  americanOddsToImpliedProbability,
  calculateNoVigFairLine,
  calculateExpectedValue,
  calculateKellyStake,
} from '@buzzr/bets-core';

americanOddsToImpliedProbability(-120); // 0.545455

const fair = calculateNoVigFairLine({
  selected: { side: 'home', americanOdds: -120 },
  opposite: { side: 'away', americanOdds: 100 },
}); // vig removed → fair probability for the selected side

const ev = calculateExpectedValue({ stake: 100, americanOdds: 120, winProbability: 0.5 });

const kelly = calculateKellyStake({ bankroll: 1000, americanOdds: 120, winProbability: 0.5 });
// kelly.recommendedStake — quarter-Kelly by default

v5 also ships parlay math (combineAmericanOdds, calculateParlayFairValue), closing-line value, and period analytics (calculateRollupByPeriod, calculateDrawdown, calculateStreaks).

Score a game — @buzzr/entertainment-engine
import { resolveBuzzScores, isMustWatch } from '@buzzr/entertainment-engine';

const scores = resolveBuzzScores(
  {
    league: 'NBA',
    status: 'final',
    entertainmentScore: 87,
    predictedEntertainmentScore: 74,
  },
  { upcomingLike: false },
);
// scores.entertainmentScore, scores.predictedEntertainmentScore,
// scores.source (which model won), scores.diagnostics (why)

isMustWatch(scores.entertainmentScore); // boolean against the must-watch threshold

v5 adds calibrated ML confidence, DST-safe primetime detection, search-heat and star-power features, and rankGamesForUser personalized recommendations.

Give it to your AI agent — @buzzr/mcp

Add to your MCP client config (Claude Desktop, Claude Code, Cursor, …):

{
  "mcpServers": {
    "buzzr": {
      "command": "npx",
      "args": ["-y", "@buzzr/mcp@5.1.0"]
    }
  }
}

The server exposes 11 tools for DFS validation and settlement, odds and bet-history math, and game scoring. It performs deterministic computation only; it does not fetch operator accounts, live odds, or box scores. See the MCP install, client configuration, tool catalog, and error contracts.

A downloadable MCPB built from the exact @buzzr/mcp@5.1.0 npm artifact is published as the Buzzr Sports Engine on Smithery. Smithery distributes it as a local stdio MCPB, so the tools still run on your machine. It is not a hosted HTTP service. For a Codex install through Smithery:

npx -y smithery@1.2.0 mcp add sarveshsea/buzzr-sports-engine --client codex

Use the direct version-pinned npm configuration above when you also need to pin the launcher rather than accept the Smithery-generated runner configuration.

Verified Buzzr app integration

The Buzzr mobile app’s release/ios-2.0.0 branch vendors @buzzr/bets-core, @buzzr/dfs-engine, and @buzzr/entertainment-engine as local 5.0.0 tarballs and imports all three. That verified snapshot is not automatically upgraded to the public 5.1.0 toolkit; an app update remains a separate, deliberate release task.

The live consumer is Buzzr Sports on the App Store.

Codex skill

The repository-owned Buzzr Sports Engine skill routes DFS, odds, history, and game-scoring work to the 11 MCP tools and records operator-safety limits.

npx skills add https://github.com/Buzzr-app/dfs-engine --skill buzzr-sports-engine

After installation, configure the local server with the MCP client instructions. Pin a reviewed published @buzzr/mcp version when repeatability matters.

Development

npm ci
npm run typecheck
npm test
npm run build

Release hardening

Before publishing or cutting a release, run:

npm run verify

verify runs typecheck, lint, formatting, tests, coverage, build, packed-package and real-client proofs, the repository skill proof, API docs, public-doc and local-link contracts, export and package smoke checks, release-workflow and MCP Registry metadata checks, and the high-severity dependency audit. CI additionally checks external links on Node 22.

Reporting bugs

Use the GitHub bug report template for package defects. Include the package version, Node version, book policy/play type, provider data shape, and a minimal reproduction.

For settlement correctness or security-sensitive issues, follow SECURITY.md so reports can be triaged before public disclosure.

License

MIT

Questions fréquentes

Qu'est-ce que Buzzr Sports Engine ?

Local sports math, DFS settlement, bet analytics, and game-entertainment tools.

Comment installer Buzzr Sports Engine ?

Il s'exécute sur votre machine. Dans Claude Code : claude mcp add buzzr-sports-engine -- npx -y @buzzr/mcp@5.1.0. Pour les autres clients, collez la configuration JSON de cette page dans leurs réglages MCP.

Faut-il une clé API pour Buzzr Sports Engine ?

Son entrée au registre n'indique aucune clé ni secret obligatoire. Certaines fonctions peuvent tout de même demander un compte auprès du service auquel il se connecte.

Buzzr Sports Engine est-il open source ?

Oui. Son code est sur GitHub sous licence MIT.

Qui maintient Buzzr Sports Engine ?

Il est publié par Buzzr-app. AI.tn le référence sans le maintenir ni le recommander.

Issu du registre MCP officiel. Être listé n'est pas une recommandation : vérifiez le code et les permissions d'un serveur avant de lui donner accès à vos données.