root@machine:~# signal_engine online node // us-east-1b
uptime 00:00:00 x402 · rest · agent-json v1.0.0 --:--:--.--- utc
$ ./machineodds.init tty0

      
// machine-readable sports signal
Ranked Pythia Premium + Strongest sports signals for agents. External execution only.
REST x402 agent-json usdc
$mODDS TOKEN 0xF7B36e3CEf28D77dD6193531C54E6fB34990ABA3 click to copy
🟦 Built on Base
machineODDS Signal Bot
Trade fresh executable sports prediction-market signals on Telegram.
@machineODDS_bot ↗
scanner monitoring
venues loading…
signal mix
executable fresh 0
pythia rows
stale/watch
hist. prior wr 60.8%
native scan checking…
last scan
interval
status building
142ms
latency · p50
<2.0s
freshness gate
%
kalshi prem wr
%
avg edge · premium
live_signals tail -f /var/signal.stream
signal.stream
all mlb nhl nba mls
win_rate_trend // prior data
bookmaker historical calibration · not realised PnL
pythia kalshi premium wr
— resolved
pythia polymarket premium wr
— resolved
avg edge · premium
active premium signals
pythia kalshi strongest wr
— resolved
pythia polymarket strongest wr
— resolved
top lane
best current lane
api.quickstart public · x402 USDC · $mODDS credits

No UI. No dashboards.
Just an endpoint your agent can hit.

machineODDS is a signal layer for autonomous agents. GET /signals/latest for free ranked signals — Pythia Premium first, then Strongest, then native. GET /signal/preview for the free cache-first preview. POST /signal/strongest (paid x402 · 0.50 USDC on Base) for the current best executable-fresh row. Free preview shows limited signal discovery. Paid x402 or $mODDS credits unlock full executable signal JSON. No custody. No direct execution. Structured signal JSON only.

  • /signals/latestranked executable-fresh signals — Premium first, then Strongest, then native
  • /signal/previewGET = free cache-first single strongest preview
  • /signal/strongestGET + POST = x402 paywall · 0.50 USDC on Base
  • /inventoryactive lanes, scan loop state, historical prior WR
  • x402stateless USDC paywall. no keys, no invoicing, no support tickets
  • $mODDS creditswallet-signed credit spend · 1 credit = 1 paid signal call
  • /credits/balancepreflight balance check · returns credit_balance + can_spend
  • /signal/credit/messagecanonical EIP-191 signable message · no nonce consumed
  • /signal/creditspend 1 $mODDS credit · EIP-191 wallet signature · full signal JSON
$mODDS utility live on Base

$mODDS utility
is live.

$mODDS is the native credit rail for machineODDS. Send $mODDS on Base, verify the transaction, mint machineODDS credits, then let agents spend those credits with a wallet signature to unlock full executable sports signal JSON.

Rail A USDC x402 stateless pay-per-call · 0.50 USDC on Base per signal
Rail B $mODDS credits token-based credit access for repeat agent calls

Signal intelligence only. No guaranteed profit. No custody. No direct execution.

1Hold / send $mODDS on Basecontract: 0xF7B36…ABA3
2POST /credits/verify-modds337,824 $mODDS = 1 credit · verify tx on-chain
3GET /credits/balancecheck credit_balance + can_spend
4GET /signal/credit/messageget canonical EIP-191 signable message
5sign client-sideEIP-191 personal_sign · never share key
6POST /signal/creditspend 1 credit · receive full executable signal JSON
SDK / MCP / CLI agent access
Build on machineODDS.
Pull executable-fresh sports signal JSON from apps, agents, terminals, and MCP clients. Preview free, unlock full signal payloads with x402 or $mODDS credits.
SDK
integrate signals
Fetch previews, strongest signals, schema, inventory, status, and $mODDS credit balances from your app or agent runtime.
import { MachineOddsClient } from "@machineodds/sdk"

const client = new MachineOddsClient({
  baseUrl: "https://machineodds.live"
})

const signal = await client.signals.strongest({
  venue: "polymarket",
  payment: "modds_credit"
})
CLI
terminal-native
Pull previews, paid signals, credit balances, schemas, and agent-ready JSON directly from the command line.
machineodds preview

machineodds strongest \
  --venue polymarket \
  --pay x402

machineodds credits balance \
  --wallet 0xYourWallet
MCP
agent tools
Expose machineODDS as tools for Claude, Cursor, Bankr-style agents, and autonomous workflows.
{
  "tool": "machineodds_get_strongest_signal",
  "arguments": {
    "venue": "polymarket",
    "payment_rail": "modds_credit"
  }
}
No custody. No guaranteed profit. Signal infrastructure only.
pipeline scan → filter → deliver
01
scan

Pythia lanes.
Native scanner.

machineODDS consumes contract-filtered Pythia Premium and Strongest signal rows for Polymarket and Kalshi sports markets. A native bookmaker-edge scanner provides a supporting lane when the Odds API key is active. Only executable_fresh rows with activation_status=candidate are served.

// lanes: Pythia Premium · Pythia Strongest · native scanner (Odds API)
02
filter

Liquidity-gated.
Edge-gated.

Raw signals pass through freshness, depth, and edge gates. A signal only survives if it can actually be executed at the quoted price, on a real book, before the line moves. Everything else is noise.

// gates: executable_fresh only · stale/watch/research rows rejected · api_execution_allowed=true required
03
execute

Deliver to agent.
Execute externally.

Survivors are delivered as structured signal JSON via REST. Two live paid rails: Rail A — USDC x402 (0.50 USDC, stateless pay-per-call); Rail B — $mODDS credits (send $mODDS on Base, verify, sign, spend). No API keys. No monthly minimums. Your agent executes externally.

// rest · x402 · agent-skill: machineodds.live/agent-skill.md
agent_quickstart try it — type 'help'

point your agent at the machineODDS api. no custody. no execution. structured signal json only.

machineodds@agent · ~/odds tty1 · 80x24
$ ⏎ run