Read BL Sports from code, or hand it to your AI.
Public JSON for odds, saved boards, fantasy and college data; an MCP server and agent API for AI clients; and the Black Label platform API, MCP and SDKs to connect your other apps.
BL Sports data API
Base URL https://michaelbarber.tech. JSON, read-only, no key, edge-cached. Every response carries its own timestamps and source states; missing sources are reported, never filled in. Research data only: BL Sports does not accept or place wagers.
| Endpoint | What it returns |
|---|---|
GET/api/health | Service check. |
GET/api/odds | Current multi-book odds snapshot (schema bl-sportsbook-odds/v1) with live status. |
GET/api/odds/live?league=NFL | Live game, prop, alternate and period lines from every connected book. Large; filter by league. |
GET/api/odds/board?league=NFL | Player-prop board for one league. |
GET/api/odds/sources | Sportsbook source catalog with each connector’s current state. |
GET/api/odds/archive/status | Odds archive capture status: runs, quotes and age of the newest capture. |
GET/api/odds/board/history?league=&kind=games|players&from=&through=&limit=&cursor= | Saved board receipts with original ranks, quotes and times; paged with cursor. |
GET/api/odds/backtest | Five-season odds backtest report, with its availability status. |
GET/api/sources | Fantasy source catalog, league settings and truth boundary. |
GET/api/fantasy | 2026 full-PPR redraft dataset: players, projections, ranks. |
GET/api/fantasy/live | The same dataset with live status overlays. |
GET/api/fantasy/environment?playerId= | Game environment and background for one player (400 without playerId). |
GET/api/fantasy/backtest | Fantasy model backtest across 2021–2025. |
GET/api/intelligence | Draft-intelligence summary with provenance. |
GET/api/college | College fantasy dataset. |
GET/api/college/live | College dataset with live source states. |
GET/api/college/scoreboard | NCAA FBS scoreboard from the official live feed, with fetch receipt. |
GET/api/college/play-by-play?contestId= | Play-by-play for one NCAA contest (digits only). |
GET/api/college/sources | College connectors, known data gaps and receipts. |
GET/api/weather?stadium=pittsburgh | National Weather Service forecast for a supported stadium. |
curl "https://michaelbarber.tech/api/odds/board/history?league=NFL&kind=games&limit=20"
Site MCP and agent API
Connect Claude, ChatGPT, Cursor or any MCP client to this site. Public tools need no credential. OpenAPI: /openapi.json · setup guide: /connect · agent card: /.well-known/agent-card.json.
| Endpoint | What it returns |
|---|---|
GET/agent/site.json | Site identity and every discovery link. |
GET/agent/search?q=&limit= | Search site pages by words in their path. |
GET/agent/read?url= | Read one michaelbarber.tech page as Markdown. |
GET/agent/connect.json | Connection details for API, MCP, A2A and DNS. |
POST/agent/a2a | A2A 1.0 JSON-RPC SendMessage with a site skill. |
POST/mcp | MCP server (Streamable HTTP). Tools: site_info, search_pages, read_page. |
claude mcp add --transport http --scope user michaelbarber-tech https://michaelbarber.tech/mcp
{
"mcpServers": {
"michaelbarber-tech": { "type": "http", "url": "https://michaelbarber.tech/mcp" }
}
}
Connect your other apps from code.
The Black Label platform (Ace) connects 1,600+ apps to one account and exposes them through a REST API, an MCP server and dependency-free SDKs. Keys start with ace_sk_ and act as your account.
- REST
https://tryacee.com/api/v1·Authorization: Bearer ace_sk_…· 120 requests a minute per key- Spec
https://tryacee.com/openapi.json- MCP
https://tryacee.com/mcp· tools: search_apps, connect_app, list_connections, find_tools, get_tool, run_tool- npm
npm install https://tryacee.com/sdk/tryacee-sdk-1.0.0.tgz- pip
pip install https://tryacee.com/sdk/tryacee-1.0.0-py3-none-any.whl
| Endpoint | What it returns |
|---|---|
GET/api/v1/catalog | Public app catalog, no key. |
GET/api/v1/apps?search= | Search apps with your connection status. |
POST/api/v1/apps/{app}/connect | Sign-in link that connects an app. |
GET/api/v1/connections | Your connected apps. |
POST/api/v1/tools/find | Find tools for a task in plain words. |
POST/api/v1/tools/{tool}/run | Run a tool in a connected app. |
POST/api/v1/apps/{app}/request | Call any endpoint of a connected app’s own API. |
POST/api/v1/triggers | Watch an event; Ace posts each one to your webhook, signed. |
POST/api/v1/custom-connectors | Add any MCP server or REST API as your own connector. |
GET/api/v1/me | The account behind the key. |
import { Ace } from "@tryacee/sdk";
const ace = new Ace({ apiKey: process.env.ACE_API_KEY });
const { url } = await ace.apps.connect("slack");
const { tools } = await ace.tools.find("post a message in #sales on Slack");
await ace.tools.run("SLACK_SEND_MESSAGE", {
channel: "#sales", markdown_text: "Board updated",
});
from tryacee import Ace
ace = Ace() # reads ACE_API_KEY
link = ace.apps.connect("googlesheets")["url"]
found = ace.tools.find("append a row to a Google Sheet")
# MCP in Claude Code
claude mcp add --transport http ace https://tryacee.com/mcp \
--header "Authorization: Bearer ace_sk_YOUR_KEY"