Skip to content
Termix track · Agent Advantage Report

Five tasks, done twice

Each task was executed once through a live endpoint published by an agent registered in the ERC-8004 Identity Registry on BNB Smart Chain, and once by hand through public APIs and a plain EVM RPC. Every request below was really sent. Every response is attached in full.

Two of the five do not go the agent's way, and one is a flat failure to answer the question at all. Those are written up at the same length as the wins, because a report where the agent wins five times out of five tells you only that its author picked the tasks carefully.

Run of record:
2026-09-07 05:51 UTC
Samples per leg:
3
Runner:
Node v26.5.0, darwin/arm64

Tasks, run both ways

5

Agent machine time, total

5.57 s

Manual machine time, total

12.14 s

Hand-stamped manual time

137 s

What the track asked for

Minimum 3 real tasks executed both ways

5 tasks, each run through a live agent endpoint and again by hand

Document time, cost and output quality per task

Median of three timed samples per leg, the price each side actually charged, and a verdict tied to a named measurement

Attach actual outputs for comparison

10 raw responses attached in full below and committed under docs/agent-advantage/outputs

At least one task from trading, stocks or security

Three trading tasks and two security tasks, including an independent audit of an onchain commit-reveal claim

Results at a glance

Machine time is the median of 3 samples per leg. The last column is the one that matters: speed is rarely the interesting difference between the two routes.

TaskCategoryAgentManualMachine timeWho answered the question
Pre-match 1X2 odds across the top five European leaguesTrading1470.5 ms1266.4 msno measurable differenceAgent wins
Win rate and risk metrics for a live trading agentTrading820.4 ms1644.3 msagent 2.00x fasterNeither answered
Verify the ERC-20 contract behind a spend approvalSecurity497.5 ms1549.0 msagent 3.11x fasterAgent wins
Best route to bridge 100 USDC from BNB Chain to BaseTrading1546.3 ms1536.7 msno measurable differenceToo close to call
Independently audit a trading agent's onchain commit-reveal claimSecurity1232.3 ms6142.3 msagent 4.98x fasterManual wins

Totals come to 5.57 s of agent time against 12.14 s of manual time, a 2.18x ratio. That is quoted because it is what was measured, and qualified immediately: the manual leg of task 1 produced no answer at all, so the two totals are not measuring equal work.

Task 1TradingAgent wins

Pre-match 1X2 odds across the top five European leagues

List upcoming football fixtures in the top European leagues with 1X2 prices from more than one bookmaker.

OpenOdds.Ai · token 49637

MCP (Streamable HTTP) · ERC-8004 identity on BNB Smart Chain

POST https://api.openodds.ai/mcp

tools/call list_supported_leagues {} ; tools/call get_upcoming_matches { limit: 100 }
Agent1470.5 ms

samples 3160.0 / 1470.5 / 1213.4

Manual1266.4 ms

samples 3527.8 / 1266.4 / 1241.1

Requests issued

  1. 200MCP list_supported_leagues - 5 leagues
  2. 200MCP get_upcoming_matches limit=100 - 53 rows

What came back

Leagues
Bundesliga, EPL, LaLiga, Ligue1, SerieA
Rows returned
53
Rows with two bookmakers
53
Rows actually in the future
4
Status counts
{"finished":30,"upcoming":23}
Date range
{"from":"2026-09-01","to":"2026-09-08"}

No payment required. The endpoint is unauthenticated and free at the point of use.

Raw response, attachedoutputs/odds-snapshot.agent.json
{
  "leagues": {
    "total": 5,
    "leagues": [
      {
        "league": "Bundesliga",
        "configured": true,
        "live_matches_30d": 18,
        "predictions_total": 53
      },
      {
        "league": "EPL",
        "configured": true,
        "live_matches_30d": 30,
        "predictions_total": 46
      },
      {
        "league": "LaLiga",
        "configured": true,
        "live_matches_30d": 40,
        "predictions_total": 49
      },
      {
        "league": "Ligue1",
        "configured": true,
        "live_matches_30d": 28,
        "predictions_total": 1
      },
      {
        "league": "SerieA",
        "configured": true,
        "live_matches_30d": 30,
        "predictions_total": 60
      }
    ]
  },
  "matches": {
    "total": 53,
    "matches": [
      {
        "match_id": 2993771,
        "league": "SerieA",
        "round": 2,
        "match_date": "2026-09-01T00:30:00+00:00",
        "home_team": "Lecce",
        "away_team": "Roma",
        "b365_odds": {
          "home": 7.5,
          "draw": 4.33,
          "away": 1.44
        },
        "wh_odds": {
          "home": 7,
          "draw": 4,
          "away": 1.44
        },
        "lb_odds": {
          "home": 6.5,
          "draw": 4.2,
          "away": 1.5
        },
        "match_status": "finished"
      },
      {
        "match_id": 3013667,
        "league": "LaLiga",
        "round": 3,
        "match_date": "2026-09-01T01:30:00+00:00",
        "home_team": "Osasuna",
        "away_team": "Getafe",
        "b365_odds": {
          "home": 2.1,
          "draw": 2.9,
          "away": 4.2
        },
        "wh_odds": {
          "home": 2.15,
          "draw": 2.8,
          "away": 4
        },
        "lb_odds": {
          "home": 2.15,
          "draw": 2.87,
          "away": 4
        },
        "match_status": "finished"
      },
      {
        "match_id": 2993766,
        "league": "SerieA",
        "round": 2,
        "match_date": "2026-09-01T02:45:00+00:00",
        "home_team": "Atalanta",
        "away_team": "Bologna",
        "b365_odds": {
          "home": 1.9,
          "draw": 3.5,
          "away": 4.1
        },
        "wh_odds": {
          "home": 1.85,
          "draw": 3.4,
          "away": 4
        },
        "lb_odds": {
          "home": 1.85,
          "draw": 3.6,
          "away": 4
        },
        "match_status": "finished"
      },
      {
        "match_id": 3003860,
        "league": "EPL",
        "round": 2,
        "match_date": "2026-09-01T03:00:00+00:00",
        "home_team": "Aston Villa",
        "away_team": "Arsenal",
        "b365_odds": {
          "home": 6.5,
          "draw": 4.33,
          "away": 1.48
        },
        "wh_odds": {
          "home": 6.5,
          "draw": 4.33,
          "away": 1.44
        },
        "lb_odds": {
          "home": 6,
          "draw": 4.2,
          "away": 1.48
        },
        "match_status": "finished"
      },
      {
        "match_id": 3013665,
        "league": "LaLiga",
        "round": 3,
        "match_date": "2026-09-01T03:30:00+00:00",
        "home_team": "Barcelona",
        "away_team": "Vallecano",
        "b365_odds": {
          "home": 1.1,
          "draw": 10,
          "away": 19
        },
        "wh_odds": {
          "home": 1.11,
          "draw": 10,
          "away": 19
        },
        "lb_odds": {
          "home": 1.12,
          "draw": 10,
          "away": 15
        },
        "match_status": "finished"
      },
      {
        "match_id": 2995333,
        "league": "Ligue1",
        "round": 3,
        "match_date": "2026-09-04T02:45:00+00:00",
        "home_team": "Toulouse",
        "away_team": "Lille",
        "b365_odds": {
          "home": 3.6,
          "draw": 3.5,
          "away": 2.05
        },
        "wh_odds": {
          "home": 3.6,
          "draw": 3.3,
          "away": 2
        },
        "lb_odds": {
          "home": 3.5,
          "draw": 3.4,
          "away": 2.05
        },
        "match_status": "finished"
      },
      {
        "match_id": 2995329,
        "league": "Ligue1",
        "round": 3,
        "match_date": "2026-09-05T01:00:00+00:00",
        "home_team": "Lyon",
        "away_team": "Auxerre",
        "b365_odds": {
          "home": 1.38,
          "draw": 5,
          "away": 7.5
        },
        "wh_odds": {
          "home": 1.36,
          "draw": 4.6,
          "away": 7
        },
        "lb_odds": {
          "home": 1.4,
          "draw": 5,
          "away": 7
        },
        "match_status": "finished"
      },
      {
        "match_id": 3018802,
        "league": "Bundesliga",
        "round": 2,
        "match_date": "2026-09-05T02:30:00+00:00",
        "home_team": "Stuttgart",
        "away_team": "FC Koln",
        "b365_odds": {
          "home": 1.44,
          "draw": 5.25,
          "away": 6.25
        },
        "wh_odds": {
          "home": 1.44,
          "draw": 4.8,
          "away": 5.8
        },
        "lb_odds": {
          "home": 1.44,
          "draw": 5.25,
          "away": 5.5
        },
        "match_status": "finished"
      },
      {
        "match_id": 2993780,
        "league": "SerieA",
        "round": 3,
        "match_date": "2026-09-05T02:45:00+00:00",
        "home_team": "Genoa",
        "away_team": "Como",
        "b365_odds": {
          "home": 5.75,
          "draw": 3.5,
          "away": 1.67
        },
        "wh_odds": {
          "home": 5,
          "draw": 3.6,
          "away": 1.67
        },
        "lb_odds": {
          "home": 5,
          "draw": 3.6,
          "away": 1.7
        },
        "match_status": "finished"
      },
      {
        "match_id": 3003875,
        "league": "EPL",
        "round": 3,
        "match_date": "2026-09-05T03:00:00+00:00",
        "home_team": "Ipswich",
        "away_team": "Liverpool",
        "b365_odds": {
          "home": 4.75,
          "draw": 4.33,
          "away": 1.62
        },
        "wh_odds": {
          "home": 4.8,
          "draw": 4,
          "away": 1.62
        },
        "lb_odds": {
          "home": 4.33,
          "draw": 4,
          "away": 1.61
        },
        "match_status": "finished"
      },
      {
        "match_id": 3013674,
        "league": "LaLiga",
        "round": 4,
        "match_date": "2026-09-05T03:00:00+00:00",
        "home_team": "Betis",
        "away_team": "Real Madrid",
        "b365_odds": {
          "home": 8,
          "draw": 5,
          "away": 1.36
        },
        "wh_odds": {
          "home": 6.5,
          "draw": 5,
          "away": 1.4
        },
        "lb_odds": {
          "home": 6.5,
          "draw": 5.25,
          "away": 1.4
        },
        "match_status": "upcoming"
      },
      {
        "match_id": 2995332,
        "league": "Ligue1",
        "round": 3,
        "match_date": "2026-09-05T03:05:00+00:00",
        "home_team": "Paris SG",
        "away_team": "Monaco",
        "b365_odds": {
          "home": 1.3,
          "draw": 5.75,
          "away": 8
        },
        "wh_odds": {
          "home": 1.3,
          "draw": 5,
          "away": 7.5
        },
        "lb_odds": {
          "home": 1.33,
          "draw": 5.75,
          "away": 7
        },
        "match_status": "finished"
      },
      {
        "match_id": 3003877,
        "league": "EPL",
        "round": 3,
        "match_date": "2026-09-05T19:30:00+00:00",
        "home_team": "Newcastle",
        "away_team": "Bournemouth",
        "b365_odds": {
          "home": 2.15,
          "draw": 3.5,
          "away": 3.25
        },
        "wh_odds": {
          "home": 2.1,
          "draw": 3.4,
          "away": 3.3
        },
        "lb_odds": {
          "home": 2.05,
          "draw": 3.5,
          "away": 3.1
        },
        "match_status": "finished"
      },
      {
        "match_id": 2993778,
        "league": "SerieA",
        "round": 3,
        "match_date": "2026-09-05T21:00:00+00:00",
        "home_team": "Fiorentina",
        "away_team": "Torino",
        "b365_odds": {
          "home": 2.1,
          "draw": 3.2,
          "away": 3.75
        },
        "wh_odds": {
          "home": 2.05,
          "draw": 3.3,
          "away": 3.4
        },
        "lb_odds": {
          "home": 2.1,
          "draw": 3.3,
          "away": 3.6
        },
        "match_status": "finished"
      },
      {
        "match_id": 3018796,
        "league": "Bundesliga",
        "round": 2,
        "match_date": "2026-09-05T21:30:00+00:00",
        "home_team": "M'gladbach",
        "away_team": "Elversberg",
        "b365_odds": {
          "home": 1.91,
          "draw": 3.9,
          "away": 3.5
        },
        "wh_odds": {
          "home": 1.85,
          "draw": 3.75,
          "away": 3.6
        },
        "lb_odds": {
          "home": 1.91,
          "draw": 3.9,
          "away": 3.5
        },
        "match_status": "finished"
      },
      {
        "match_id": 3018803,
        "league": "Bundesliga",
        "round": 2,
        "match_date": "2026-09-05T21:30:00+00:00",
        "home_team": "Werder Bremen",
        "away_team": "RB Leipzig",
        "b365_odds": {
          "home": 3.75,
          "draw": 4.2,
          "away": 1.83
        },
        "wh_odds": {
          "home": 3.8,
          "draw": 3.9,
          "away": 1.8
        },
        "lb_odds": {
          "home": 3.6,
          "draw": 4.2,
          "away": 1.83
        },
        "match_status": "finished"
      },
      {
        "match_id": 3018799,
        "league": "Bundesliga",
        "round": 2,
        "match_date": "2026-09-05T21:30:00+00:00",
        "home_team": "Hoffenheim",
        "away_team": "Dortmund",
        "b365_odds": {
          "home": 2.4,
          "draw": 3.8,
          "away": 2.7
        },
        "wh_odds": {
          "home": 2.45,
          "draw": 3.6,
          "away": 2.5
        },
        "lb_odds": {
          "home": 2.4,
          "draw": 3.9,
          "away": 2.6
        },
        "match_status": "finished"
      },
      {
        "match_id": 3018800,
        "league": "Bundesliga",
        "round": 2,
        "match_date": "2026-09-05T21:30:00+00:00",
        "home_team": "Paderborn",
        "away_team": "Freiburg",
        "b365_odds": {
          "home": 3.6,
          "draw": 3.8,
          "away": 1.91
        },
        "wh_odds": {
          "home": 3.6,
          "draw": 3.6,
          "away": 1.91
        },
        "lb_odds": {
          "home": 3.5,
          "draw": 3.7,
          "away": 1.95
        },
        "match_status": "finished"
      },
      {
        "match_id": 3018795,
        "league": "Bundesliga",
        "round": 2,
        "match_date": "2026-09-05T21:30:00+00:00",
        "home_team": "Leverkusen",
        "away_team": "Union Berlin",
        "b365_odds": {
          "home": 1.33,
          "draw": 5.25,
          "away": 7.5
        },
        "wh_odds": {
          "home": 1.36,
          "draw": 5,
          "away": 7
        },
        "lb_odds": {
          "home": 1.33,
          "draw": 5.75,
          "away": 7.5
        },
        "match_status": "finished"
      },
      {
        "match_id": 3003871,
        "league": "EPL",
        "round": 3,
        "match_date": "2026-09-05T22:00:00+00:00",
        "home_team": "Brighton",
        "away_team": "Leeds",
        "b365_odds": {
          "home": 1.91,
          "draw": 3.7,
          "away": 3.75
        },
        "wh_odds": {
          "home": 1.95,
          "draw": 3.5,
          "away": 3.7
        },
        "lb_odds": {
          "home": 1.91,
          "draw": 3.5,
          "away": 3.6
        },
        "match_status": "finished"
      },
      {
        "match_id": 3003873,
        "league": "EPL",
        "round": 3,
        "match_date": "2026-09-05T22:00:00+00:00",
        "home_team": "Fulham",
        "away_team": "Crystal Palace",
        "b365_odds": {
          "home": 2.2,
          "draw": 3.4,
          "away": 3.4
        },
        "wh_odds": {
          "home": 2.15,
          "draw": 3.2,
          "away": 3.5
        },
        "lb_odds": {
          "home": 2.1,
          "draw": 3.25,
          "away": 3.3
        },
        "match_status": "finished"
      },
      {
        "match_id": 3003876,
        "league": "EPL",
        "round": 3,
        "match_date": "2026-09-05T22:00:00+00:00",
        "home_team": "Man City",
        "away_team": "Coventry",
        "b365_odds": {
          "home": 1.18,
          "draw": 7.5,
          "away": 13
        },
        "wh_odds": {
          "home": 1.2,
          "draw": 7,
          "away": 12
        },
        "lb_odds": {
          "home": 1.2,
          "draw": 6.5,
          "away": 10
        },
        "match_status": "finished"
      },
      {
        "match_id": 3003878,
        "league": "EPL",
        "round": 3,
        "match_date": "2026-09-05T22:00:00+00:00",
        "home_team": "Nott'm Forest",
        "away_team": "Tottenham",
        "b365_odds": {
          "home": 2.7,
          "draw": 3.3,
          "away": 2.63
        },
        "wh_odds": {
          "home": 2.7,
          "draw": 3.2,
          "away": 2.6
        },
        "lb_odds": {
          "home": 2.5,
          "draw": 3.2,
          "away": 2.6
        },
        "match_status": "finished"
      },
      {
        "match_id": 3003870,
        "league": "EPL",
        "round": 3,
        "match_date": "2026-09-05T22:00:00+00:00",
        "home_team": "Brentford",
        "away_team": "Sunderland",
        "b365_odds": {
          "home": 1.7,
          "draw": 3.8,
          "away": 4.75
        },
        "wh_odds": {
          "home": 1.7,
          "draw": 3.6,
          "away": 4.8
        },
        "lb_odds": {
          "home": 1.67,
          "draw": 3.6,
          "away": 4.6
        },
        "match_status": "finished"
      },
      {
        "match_id": 3013673,
        "league": "LaLiga",
        "round": 4,
        "match_date": "2026-09-05T22:15:00+00:00",
        "home_team": "Ath Bilbao",
        "away_team": "Ath Madrid",
        "b365_odds": {
          "home": 3,
          "draw": 3.3,
          "away": 2.38
        },
        "wh_odds": {
          "home": 2.9,
          "draw": 3.3,
          "away": 2.3
        },
        "lb_odds": {
          "home": 3,
          "draw": 3.4,
          "away": 2.3
        },
        "match_status": "upcoming"
      },
      {
        "match_id": 2995328,
        "league": "Ligue1",
        "round": 3,
        "match_date": "2026-09-05T23:15:00+00:00",
        "home_team": "Lens",
        "away_team": "Lorient",
        "b365_odds": {
          "home": 1.5,
          "draw": 4.33,
          "away": 6.25
        },
        "wh_odds": {
          "home": 1.53,
          "draw": 4,
          "away": 5.5
        },
        "lb_odds": {
          "home": 1.53,
          "draw": 4.4,
          "away": 5.5
        },
        "match_status": "finished"
      },
      {
        "match_id": 2993781,
        "league": "SerieA",
        "round": 3,
        "match_date": "2026-09-06T00:00:00+00:00",
        "home_team": "Inter",
        "away_team": "Napoli",
        "b365_odds": {
          "home": 1.62,
          "draw": 4,
          "away": 5.25
        },
        "wh_odds": {
          "home": 1.62,
          "draw": 3.75,
          "away": 5
        },
        "lb_odds": {
          "home": 1.61,
          "draw": 3.9,
          "away": 5.25
        },
        "match_status": "finished"
      },
      {
        "match_id": 3018801,
        "league": "Bundesliga",
        "round": 2,
        "match_date": "2026-09-06T00:30:00+00:00",
        "home_team": "Schalke 04",
        "away_team": "Bayern Munich",
        "b365_odds": {
          "home": 13,
          "draw": 7,
          "away": 1.2
        },
        "wh_odds": {
          "home": 11,
          "draw": 6.5,
          "away": 1.2
        },
        "lb_odds": {
          "home": 9.5,
          "draw": 7.5,
          "away": 1.22
        },
        "match_status": "finished"
      },
      {
        "match_id": 3003874,
        "league": "EPL",
        "round": 3,
        "match_date": "2026-09-06T00:30:00+00:00",
        "home_team": "Hull",
        "away_team": "Aston Villa",
        "b365_odds": {
          "home": 4,
          "draw": 3.6,
          "away": 1.91
        },
        "wh_odds": {
          "home": 4,
          "draw": 3.5,
          "away": 1.85
        },
        "lb_odds": {
          "home": 3.7,
          "draw": 3.4,
          "away": 1.91
        },
        "match_status": "finished"
      },
      {
        "match_id": 3013679,
        "league": "LaLiga",
        "round": 4,
        "match_date": "2026-09-06T00:30:00+00:00",
        "home_team": "Vallecano",
        "away_team": "Santander",
        "b365_odds": {
          "home": 2.2,
          "draw": 3.4,
          "away": 3.2
        },
        "wh_odds": {
          "home": 2.25,
          "draw": 3.3,
          "away": 3.1
        },
        "lb_odds": {
          "home": 2.3,
          "draw": 3.4,
          "away": 3
        },
        "match_status": "upcoming"
      },
      {
        "match_id": 2995327,
        "league": "Ligue1",
        "round": 3,
        "match_date": "2026-09-06T02:45:00+00:00",
        "home_team": "Le Havre",
        "away_team": "Brest",
        "b365_odds": {
          "home": 2.88,
          "draw": 3.2,
          "away": 2.5
        },
        "wh_odds": {
          "home": 2.8,
          "draw": 3,
          "away": 2.45
        },
        "lb_odds": {
          "home": 2.75,
          "draw": 3.25,
          "away": 2.5
        },
        "match_status": "finished"
      },
      {
        "match_id": 2993775,
        "league": "SerieA",
        "round": 3,
        "match_date": "2026-09-06T02:45:00+00:00",
        "home_team": "Roma",
        "away_team": "Atalanta",
        "b365_odds": {
          "home": 1.65,
          "draw": 3.8,
          "away": 5.25
        },
        "wh_odds": {
          "home": 1.67,
          "draw": 3.6,
          "away": 5
        },
        "lb_odds": {
          "home": 1.65,
          "draw": 3.9,
          "away": 5
        },
        "match_status": "finished"
      },
      {
        "match_id": 2995331,
        "league": "Ligue1",
        "round": 3,
        "match_date": "2026-09-06T02:45:00+00:00",
        "home_team": "Nice",
        "away_team": "Le Mans",
        "b365_odds": {
          "home": 1.62,
          "draw": 4,
          "away": 5.25
        },
        "wh_odds": {
          "home": 1.62,
          "draw": 3.8,
          "away": 4.8
        },
        "lb_odds": {
          "home": 1.65,
          "draw": 4,
          "away": 4.8
        },
        "match_status": "finished"
      },
      {
        "match_id": 3013681,
        "league": "LaLiga",
        "round": 4,
        "match_date": "2026-09-06T03:00:00+00:00",
        "home_team": "Villarreal",
        "away_team": "La Coruna",
        "b365_odds": {
          "home": 1.48,
          "draw": 4.2,
          "away": 6.25
        },
        "wh_odds": {
          "home": 1.44,
          "draw": 4.33,
          "away": 6
        },
        "lb_odds": {
          "home": 1.5,
          "draw": 4.4,
          "away": 6
        },
        "match_status": "upcoming"
      },
      {
        "match_id": 2993779,
        "league": "SerieA",
        "round": 3,
        "match_date": "2026-09-06T21:00:00+00:00",
        "home_team": "Frosinone",
        "away_team": "Venezia",
        "b365_odds": {
          "home": 2.75,
          "draw": 3.3,
          "away": 2.55
        },
        "wh_odds": {
          "home": 2.63,
          "draw": 3.3,
          "away": 2.5
        },
        "lb_odds": {
          "home": 2.62,
          "draw": 3.4,
          "away": 2.5
        },
        "match_status": "upcoming"
      },
      {
        "match_id": 3003872,
        "league": "EPL",
        "round": 3,
        "match_date": "2026-09-06T21:00:00+00:00",
        "home_team": "Everton",
        "away_team": "Man United",
        "b365_odds": {
          "home": 3.5,
          "draw": 3.6,
          "away": 2.05
        },
        "wh_odds": {
          "home": 3.25,
          "draw": 3.4,
          "away": 2.15
        },
        "lb_odds": {
          "home": 3.1,
          "draw": 3.5,
          "away": 2.1
        },
        "match_status": "upcoming"
      },
      {
        "match_id": 2995334,
        "league": "Ligue1",
        "round": 3,
        "match_date": "2026-09-06T21:00:00+00:00",
        "home_team": "Troyes",
        "away_team": "Strasbourg",
        "b365_odds": {
          "home": 3,
          "draw": 3.4,
          "away": 2.38
        },
        "wh_odds": {
          "home": 2.9,
          "draw": 3.25,
          "away": 2.3
        },
        "lb_odds": {
          "home": 2.87,
          "draw": 3.4,
          "away": 2.37
        },
        "match_status": "upcoming"
      },
      {
        "match_id": 2993783,
        "league": "SerieA",
        "round": 3,
        "match_date": "2026-09-06T21:00:00+00:00",
        "home_team": "Parma",
        "away_team": "Monza",
        "b365_odds": {
          "home": 2.6,
          "draw": 3,
          "away": 2.9
        },
        "wh_odds": {
          "home": 2.5,
          "draw": 2.9,
          "away": 2.9
        },
        "lb_odds": {
          "home": 2.5,
          "draw": 3.1,
          "away": 2.9
        },
        "match_status": "upcoming"
      },
      {
        "match_id": 3018798,
        "league": "Bundesliga",
        "round": 2,
        "match_date": "2026-09-06T21:30:00+00:00",
        "home_team": "Hamburg",
        "away_team": "Mainz",
        "b365_odds": {
          "home": 2.88,
          "draw": 3.5,
          "away": 2.4
        },
        "wh_odds": {
          "home": 2.75,
          "draw": 3.4,
          "away": 2.4
        },
        "lb_odds": {
          "home": 2.7,
          "draw": 3.5,
          "away": 2.4
        },
        "match_status": "upcoming"
      },
      {
        "match_id": 3013680,
        "league": "LaLiga",
        "round": 4,
        "match_date": "2026-09-06T22:15:00+00:00",
        "home_team": "Valencia",
        "away_team": "Barcelona",
        "b365_odds": {
          "home": 10,
          "draw": 6,
          "away": 1.25
        },
        "wh_odds": {
          "home": 8.5,
          "draw": 5.8,
          "away": 1.3
        },
        "lb_odds": {
          "home": 8.5,
          "draw": 5.75,
          "away": 1.3
        },
        "match_status": "upcoming"
      },
      {
        "match_id": 2995326,
        "league": "Ligue1",
        "round": 3,
        "match_date": "2026-09-06T23:15:00+00:00",
        "home_team": "Angers",
        "away_team": "Rennes",
        "b365_odds": {
          "home": 4,
          "draw": 3.75,
          "away": 1.85
        },
        "wh_odds": {
          "home": 3.75,
          "draw": 3.6,
          "away": 1.85
        },
        "lb_odds": {
          "home": 3.7,
          "draw": 3.75,
          "away": 1.91
        },
        "match_status": "upcoming"
      },
      {
        "match_id": 3003869,
        "league": "EPL",
        "round": 3,
        "match_date": "2026-09-06T23:30:00+00:00",
        "home_team": "Arsenal",
        "away_team": "Chelsea",
        "b365_odds": {
          "home": 1.67,
          "draw": 3.9,
          "away": 5
        },
        "wh_odds": {
          "home": 1.73,
          "draw": 3.75,
          "away": 4.6
        },
        "lb_odds": {
          "home": 1.65,
          "draw": 3.9,
          "away": 4.4
        },
        "match_status": "upcoming"
      },
      {
        "match_id": 3018797,
        "league": "Bundesliga",
        "round": 2,
        "match_date": "2026-09-06T23:30:00+00:00",
        "home_team": "Ein Frankfurt",
        "away_team": "Augsburg",
        "b365_odds": {
          "home": 1.95,
          "draw": 3.9,
          "away": 3.5
        },
        "wh_odds": {
          "home": 1.95,
          "draw": 3.75,
          "away": 3.3
        },
        "lb_odds": {
          "home": 1.91,
          "draw": 4,
          "away": 3.5
        },
        "match_status": "upcoming"
      },
      {
        "match_id": 2993776,
        "league": "SerieA",
        "round": 3,
        "match_date": "2026-09-07T00:00:00+00:00",
        "home_team": "Bologna",
        "away_team": "Sassuolo",
        "b365_odds": {
          "home": 2.05,
          "draw": 3.4,
          "away": 3.75
        },
        "wh_odds": {
          "home": 2,
          "draw": 3.25,
          "away": 3.6
        },
        "lb_odds": {
          "home": 2,
          "draw": 3.4,
          "away": 3.7
        },
        "match_status": "upcoming"
      },
      {
        "match_id": 3013678,
        "league": "LaLiga",
        "round": 4,
        "match_date": "2026-09-07T00:30:00+00:00",
        "home_team": "Malaga",
        "away_team": "Levante",
        "b365_odds": {
          "home": 2.45,
          "draw": 3.1,
          "away": 2.88
        },
        "wh_odds": {
          "home": 2.45,
          "draw": 3.1,
          "away": 2.9
        },
        "lb_odds": {
          "home": 2.5,
          "draw": 3.1,
          "away": 2.87
        },
        "match_status": "upcoming"
      },
      {
        "match_id": 3013672,
        "league": "LaLiga",
        "round": 4,
        "match_date": "2026-09-07T00:30:00+00:00",
        "home_team": "Alaves",
        "away_team": "Osasuna",
        "b365_odds": {
          "home": 2.2,
          "draw": 3.1,
          "away": 3.4
        },
        "wh_odds": {
          "home": 2.25,
          "draw": 3,
          "away": 3.4
        },
        "lb_odds": {
          "home": 2.25,
          "draw": 3.1,
          "away": 3.3
        },
        "match_status": "upcoming"
      },
      {
        "match_id": 2995330,
        "league": "Ligue1",
        "round": 3,
        "match_date": "2026-09-07T02:45:00+00:00",
        "home_team": "Marseille",
        "away_team": "Paris FC",
        "b365_odds": {
          "home": 1.75,
          "draw": 4,
          "away": 4.1
        },
        "wh_odds": {
          "home": 1.75,
          "draw": 3.7,
          "away": 4
        },
        "lb_odds": {
          "home": 1.75,
          "draw": 4,
          "away": 4
        },
        "match_status": "upcoming"
      },
      {
        "match_id": 2993782,
        "league": "SerieA",
        "round": 3,
        "match_date": "2026-09-07T02:45:00+00:00",
        "home_team": "Juventus",
        "away_team": "Milan",
        "b365_odds": {
          "home": 2.1,
          "draw": 3.25,
          "away": 3.75
        },
        "wh_odds": {
          "home": 2.1,
          "draw": 3.1,
          "away": 3.5
        },
        "lb_odds": {
          "home": 2.05,
          "draw": 3.3,
          "away": 3.6
        },
        "match_status": "upcoming"
      },
      {
        "match_id": 3013676,
        "league": "LaLiga",
        "round": 4,
        "match_date": "2026-09-07T03:00:00+00:00",
        "home_team": "Espanol",
        "away_team": "Sevilla",
        "b365_odds": {
          "home": 2.25,
          "draw": 3.2,
          "away": 3.25
        },
        "wh_odds": {
          "home": 2.3,
          "draw": 3.1,
          "away": 3.2
        },
        "lb_odds": {
          "home": 2.3,
          "draw": 3.25,
          "away": 3.1
        },
        "match_status": "upcoming"
      },
      {
        "match_id": 2993777,
        "league": "SerieA",
        "round": 3,
        "match_date": "2026-09-08T00:30:00+00:00",
        "home_team": "Cagliari",
        "away_team": "Lecce",
        "b365_odds": {
          "home": 2,
          "draw": 3.1,
          "away": 4.33
        },
        "wh_odds": {
          "home": 1.95,
          "draw": 3.1,
          "away": 3.9
        },
        "lb_odds": {
          "home": 2,
          "draw": 3.2,
          "away": 4
        },
        "match_status": "upcoming"
      },
      {
        "match_id": 3013677,
        "league": "LaLiga",
        "round": 4,
        "match_date": "2026-09-08T01:00:00+00:00",
        "home_team": "Getafe",
        "away_team": "Celta",
        "b365_odds": {
          "home": 2.63,
          "draw": 2.8,
          "away": 3.1
        },
        "wh_odds": {
          "home": 2.5,
          "draw": 2.8,
          "away": 3.2
        },
        "lb_odds": {
          "home": 2.5,
          "draw": 2.87,
          "away": 3.1
        },
        "match_status": "upcoming"
      },
      {
        "match_id": 2993784,
        "league": "SerieA",
        "round": 3,
        "match_date": "2026-09-08T02:45:00+00:00",
        "home_team": "Udinese",
        "away_team": "Lazio",
        "b365_odds": {
          "home": 2.88,
          "draw": 3.1,
          "away": 2.63
        },
        "wh_odds": {
          "home": 2.8,
          "draw": 3,
          "away": 2.5
        },
        "lb_odds": {
          "home": 2.87,
          "draw": 3.2,
          "away": 2.5
        },
        "match_status": "upcoming"
      },
      {
        "match_id": 3013675,
        "league": "LaLiga",
        "round": 4,
        "match_date": "2026-09-08T03:30:00+00:00",
        "home_team": "Elche",
        "away_team": "Sociedad",
        "b365_odds": {
          "home": 2.8,
          "draw": 3.4,
          "away": 2.35
        },
        "wh_odds": {
          "home": 2.8,
          "draw": 3.3,
          "away": 2.4
        },
        "lb_odds": {
          "home": 2.87,
          "draw": 3.4,
          "away": 2.37
        },
        "match_status": "upcoming"
      }
    ]
  }
}

Without the agent

Public odds APIs, tried in the order a developer reaches for them

Hand-stamped analyst time

14 s

Wall clock for this leg only, at machine speed with the endpoints already known. The agent leg was not stamped, so the two are not compared.

Requests issued

  1. 401the-odds-api v4 (EPL h2h) - rejected without an API key
  2. 403api-football v3 (odds, league 39) - rejected without an API key
  3. 403football-data.org v4 (PL matches) - rejected without an API key
  4. 200OpenLigaDB (Bundesliga 2026) - 306 rows, odds fields: none

What came back

Sources tried
4
Sources that answered
1
Sources carrying 1X2 odds
0

Free tier only. No key was bought, so the paid tiers behind the three 401/403 responses were not exercised.

Raw response, attachedoutputs/odds-snapshot.manual.json
{
  "the-odds-api v4 (EPL h2h)": "{\"message\":\"API key is missing\",\"error_code\":\"MISSING_KEY\",\"details_url\":\"https://the-odds-api.com/liveapi/guides/v4/api-error-codes.html#missing-key\"}\n",
  "api-football v3 (odds, league 39)": "{\"get\": \"\",\"parameters\": [],\"errors\": {\"token\": \"Missing application key, Check our documentation on how to add your API key in headers.\",\"error\": \"4xHe\"},\"results\": 0,\"paging\": {\"current\": 1,\"total\": 1},\"response\": []}",
  "football-data.org v4 (PL matches)": "{\"message\":\"The resource you are looking for is restricted and apparently not within your permissions. Please check your subscription.\",\"errorCode\":403}",
  "OpenLigaDB (Bundesliga 2026)": {
    "rows": 306,
    "firstRowFields": [
      "matchID",
      "matchDateTime",
      "timeZoneID",
      "leagueId",
      "leagueName",
      "leagueSeason",
      "leagueShortcut",
      "matchDateTimeUTC",
      "group",
      "team1",
      "team2",
      "lastUpdateDateTime",
      "matchIsFinished",
      "matchResults",
      "goals",
      "location",
      "numberOfViewers"
    ]
  }
}

The only route to the answer, carrying a label that is wrong.

Machine time: no measurable difference

The manual leg was marginally faster and returned nothing usable. Three of the four public sources price an API key and refused without one; the single free source that answered is a fixtures-and-results database whose schema has no odds, price or bookmaker field anywhere in it.

The agent returned 53 fixtures across five leagues, every one of them carrying 1X2 decimals from three separate books. There is no free unauthenticated equivalent, so this is a real advantage rather than a marginal one.

It is also mislabelled. The tool is named get_upcoming_matches and 30 of its 53 rows report match_status "finished". Only four kick off after the moment of the call. A caller who trusts the name and skips a match_date filter will price week-old settled fixtures as live.

The measurement that carries it: 4 of 53 returned fixtures are actually in the future; 0 of 4 manual sources carry odds.

Task 2TradingNeither answered

Win rate and risk metrics for a live trading agent

What is OpenOdds.Ai's settled win rate, Brier score and calibration error, and how much of its record is anchored onchain?

OpenOdds.Ai · token 49637

MCP (Streamable HTTP) · ERC-8004 identity on BNB Smart Chain

POST https://api.openodds.ai/mcp

tools/call get_metrics {} ; tools/call get_prediction_summary { days: 365 }
Agent820.4 ms

samples 2588.9 / 811.0 / 820.4

Manual1644.3 ms

samples 4292.8 / 1644.3 / 1642.9

Requests issued

  1. 200MCP get_metrics - model 1.2.0
  2. 200MCP get_prediction_summary days=365 - 209 predictions

What came back

Model version
1.2.0
All time settled
177
All time scored
0
Win rate
null
Brier score
null
Calibration error
null
Committed onchain
177
Revealed onchain
177
Data range
{"from":"2026-03-21","to":"2026-05-12"}

No payment required.

Raw response, attachedoutputs/track-record.agent.json
{
  "metrics": {
    "overall": {
      "total_predictions": 0,
      "settled_predictions": 0,
      "pending_predictions": 0,
      "stale_predictions": 0,
      "scored_predictions": 0,
      "probability_scored_predictions": 0,
      "decision_coverage": null,
      "clean_predictions": 0,
      "clean_win_rate": null,
      "pass_predictions": 0,
      "lean_predictions": 0,
      "lean_win_rate": null,
      "void_predictions": 0,
      "expired_predictions": 0,
      "avg_prediction_score": null,
      "win_rate": null,
      "brier_score": null,
      "market_brier_score": null,
      "brier_improvement": null,
      "rps_score": null,
      "log_loss": null,
      "calibration_error": null,
      "signal_accuracy": {
        "bullish": null,
        "trap": null,
        "neutral": null
      }
    },
    "by_league": {},
    "by_month": {},
    "model_version": "1.2.0",
    "backbone_version": "37node_pchip1x2_v4",
    "data_range": {},
    "baseline_status": "pending",
    "is_shadow_only": false,
    "evaluation_scope": "current_production",
    "current_level_source": "unified_dynamic_fair_backbone",
    "current_production": {
      "total_predictions": 0,
      "settled_predictions": 0,
      "pending_predictions": 0,
      "stale_predictions": 0,
      "scored_predictions": 0,
      "probability_scored_predictions": 0,
      "decision_coverage": null,
      "clean_predictions": 0,
      "clean_win_rate": null,
      "pass_predictions": 0,
      "lean_predictions": 0,
      "lean_win_rate": null,
      "void_predictions": 0,
      "expired_predictions": 0,
      "avg_prediction_score": null,
      "win_rate": null,
      "brier_score": null,
      "market_brier_score": null,
      "brier_improvement": null,
      "rps_score": null,
      "log_loss": null,
      "calibration_error": null,
      "signal_accuracy": {
        "bullish": null,
        "trap": null,
        "neutral": null
      }
    },
    "current_by_league": {},
    "current_data_range": {},
    "all_time_overall": {
      "total_predictions": 177,
      "settled_predictions": 177,
      "pending_predictions": 0,
      "stale_predictions": 0,
      "scored_predictions": 0,
      "probability_scored_predictions": 0,
      "decision_coverage": 0,
      "clean_predictions": 0,
      "clean_win_rate": null,
      "pass_predictions": 0,
      "lean_predictions": 0,
      "lean_win_rate": null,
      "void_predictions": 0,
      "expired_predictions": 30,
      "avg_prediction_score": null,
      "win_rate": null,
      "brier_score": null,
      "market_brier_score": null,
      "brier_improvement": null,
      "rps_score": null,
      "log_loss": null,
      "calibration_error": null,
      "signal_accuracy": {
        "bullish": null,
        "trap": null,
        "neutral": null
      }
    },
    "all_time_by_league": {
      "SerieA": {
        "total": 49,
        "settled": 49,
        "scored": 0,
        "avg_score": null,
        "win_rate": null
      },
      "EPL": {
        "total": 45,
        "settled": 45,
        "scored": 0,
        "avg_score": null,
        "win_rate": null
      },
      "Bundesliga": {
        "total": 44,
        "settled": 44,
        "scored": 0,
        "avg_score": null,
        "win_rate": null
      },
      "LaLiga": {
        "total": 39,
        "settled": 39,
        "scored": 0,
        "avg_score": null,
        "win_rate": null
      }
    },
    "all_time_data_range": {
      "from": "2026-03-21",
      "to": "2026-05-12"
    },
    "metrics_schema_version": "2.0",
    "metrics_status": "ok",
    "metrics_error": null
  },
  "summary": {
    "window_days": 365,
    "league": null,
    "total": 209,
    "settled": 179,
    "pending": 30,
    "committed_onchain": 177,
    "revealed_onchain": 177,
    "error_count": 0,
    "by_status": {
      "settled": 179,
      "expired": 30
    }
  }
}

Without the agent

The agent's public website, plus its ERC-8004 reputation record

Hand-stamped analyst time

3 s

Wall clock for this leg only, at machine speed with the endpoints already known. The agent leg was not stamped, so the two are not compared.

Requests issued

  1. 200GET openodds.ai (HTML) - 2938 bytes, metric words present: none
  2. 200GET 8004scan agent record 56/49637 - 3 feedbacks

What came back

Site bytes
2938
Metric words in HTML
empty
Onchain feedbacks
3
Onchain average score
100
Onchain stars
8
Win rate
null
Brier score
null

Free.

Raw response, attachedoutputs/track-record.manual.json
{
  "siteHtmlFirst2kb": "<!DOCTYPE html><html><head><meta charset=\"utf-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n<title>OpenOdds AI — Football Odds Intelligence Agent</title>\n<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500;700&display=swap\">\n<link rel=\"stylesheet\" href=\"/_nuxt/entry.CO4N3YXn.css\" crossorigin>\n<link rel=\"modulepreload\" as=\"script\" crossorigin href=\"/_nuxt/DMSMBirI.js\">\n<script type=\"module\" src=\"/_nuxt/DMSMBirI.js\" crossorigin></script>\n<meta name=\"description\" content=\"A verified OpenOdds AI football odds intelligence agent with commit-reveal integrity and ERC-8004 identity.\">\n<meta property=\"og:title\" content=\"OpenOdds AI — ERC-8004 Verified Football Odds Intelligence Agent\">\n<meta property=\"og:description\" content=\"AI-powered football odds predictions with cryptographic commit-reveal proof. Verify predictions on-chain before match kickoff.\">\n<meta property=\"og:image\" content=\"https://oddsmarketspace.sgp1.cdn.digitaloceanspaces.com/markets/general/og-card/1776911169952-footballaiog-en.png\">\n<meta property=\"og:url\" content=\"https://openodds.ai\">\n<meta property=\"og:type\" content=\"website\">\n<meta name=\"twitter:card\" content=\"summary_large_image\">\n<meta name=\"twitter:title\" content=\"OpenOdds AI — ERC-8004 Verified Football Odds Intelligence Agent\">\n<meta name=\"twitter:description\" content=\"AI-powered football odds predictions with cryptographic commit-reveal proof. Verify predictions on-chain before match kickoff.\">\n<meta name=\"twitter:image\" content=\"https://oddsmarketspace.sgp1.cdn.digitaloceanspaces.com/markets/general/og-card/1776911169952-footballaiog-en.png\">\n<link rel=\"icon\" type=\"image/x-icon\" href=\"/favicon.ico\">\n<link rel=\"icon\" type=\"image/svg+xml\" href=\"/logo.svg\">\n<link rel=\"apple-touch-icon\" href=\"/logo.svg\">\n<script id=\"unhead:payload\" type=\"application/json\">{\"titl",
  "scanRecord": {
    "total_feedbacks": 3,
    "average_score": 100,
    "star_count": 8,
    "total_score": 30.52,
    "health_score": 100
  }
}

The metric the track asks for does not exist, on either route.

Machine time: agent 2.00x faster

get_metrics returns a serious schema - win rate, Brier, market Brier, Brier improvement, RPS, log loss, calibration error, per-signal accuracy, split by league and by month. Every one of those fields is null. 177 predictions are settled and none has been scored.

The manual route does worse. The public site is a 2.9 KB client-rendered shell with no metric word and no percentage in it, and the ERC-8004 record gives reputation rather than performance: three feedbacks at 100/100 says three counterparties were satisfied, not that any prediction was right.

What the agent does deliver is a denominator and an anchor: 209 predictions, 179 settled, 177 committed and 177 revealed onchain. The win rate it declines to compute is computable by someone else. That is falsifiability, not a track record, and it is what task 5 goes on to exploit.

For a marketplace this is a constraint rather than a footnote. The highest-scoring trading agent on the BNB index publishes no win rate, so any marketplace that shows one for it has invented it.

The measurement that carries it: 177 settled predictions, 0 scored, win_rate null, brier_score null, calibration_error null.

Task 3SecurityAgent wins

Verify the ERC-20 contract behind a spend approval

Before approving a spend, confirm what 0xcE24439F2D9C6a2289F741120FE202248B666666 on BNB Smart Chain actually is: name, symbol, decimals, supply, and who controls it.

ClawdMint · token 2468

MCP (Streamable HTTP, SSE framed) · ERC-8004 identity on BNB Smart Chain

POST https://clawdmint-api.vercel.app/mcp

tools/call get_token_info { token_address: "0xcE24439F2D9C6a2289F741120FE202248B666666", chain: "bsc" }
Agent497.5 ms

samples 1597.6 / 423.4 / 497.5

Manual1549.0 ms

samples 2291.6 / 1532.9 / 1549.0

Requests issued

  1. 200MCP get_token_info - 6 fields returned

What came back

Name
United Stables
Symbol
U
Decimals
18
Total supply
956298607.90846715
Owner
null
Paused
null
Fields returned
address, chain, name, symbol, decimals, total_supply

No payment required.

Raw response, attachedoutputs/token-contract-check.agent.json
{
  "address": "0xcE24439F2D9C6a2289F741120FE202248B666666",
  "chain": "bsc",
  "name": "United Stables",
  "symbol": "U",
  "decimals": 18,
  "total_supply": "956298607.90846715"
}

Without the agent

Six eth_call reads against a public BNB Chain node, decoded by hand

Hand-stamped analyst time

46 s

Wall clock for this leg only, at machine speed with the endpoints already known. The agent leg was not stamped, so the two are not compared.

Requests issued

  1. 200eth_call name() 0x06fdde03 - returned data
  2. 200eth_call symbol() 0x95d89b41 - returned data
  3. 200eth_call decimals() 0x313ce567 - returned data
  4. 200eth_call totalSupply() 0x18160ddd - returned data
  5. 200eth_call owner() 0x8da5cb5b - returned data
  6. 200eth_call paused() 0x5c975abb - returned data

What came back

Name
United Stables
Symbol
U
Decimals
18
Total supply
956298607.90846715
Owner
0x59F94AdE4F881f21ea608AD4448bf70B78e37187
Paused
false
Fields returned
name, symbol, decimals, totalSupply, owner, paused

Free. Public dataseed node, no key.

Raw response, attachedoutputs/token-contract-check.manual.json
{
  "selectors": {
    "name": "0x06fdde03",
    "symbol": "0x95d89b41",
    "decimals": "0x313ce567",
    "totalSupply": "0x18160ddd",
    "owner": "0x8da5cb5b",
    "paused": "0x5c975abb"
  },
  "rawReturnData": {
    "name": "0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000e556e6974656420537461626c6573000000000000000000000000000000000000",
    "symbol": "0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000015500000000000000000000000000000000000000000000000000000000000000",
    "decimals": "0x0000000000000000000000000000000000000000000000000000000000000012",
    "totalSupply": "0x00000000000000000000000000000000000000000317081b697649c38e388c00",
    "owner": "0x00000000000000000000000059f94ade4f881f21ea608ad4448bf70b78e37187",
    "paused": "0x0000000000000000000000000000000000000000000000000000000000000000"
  }
}

Three times faster, exactly right, and still not enough to sign on.

Machine time: agent 3.11x faster

Every field the agent returned matches the chain: name, symbol, decimals, and a total supply agreeing to its final digit. There is no discrepancy to report and none is manufactured.

It returned six fields, two of which the caller supplied. No owner, no pause flag, no mint authority, no upgradeability. For "what is this token" it is correct and three times faster. For the question actually asked - who controls the contract I am about to grant an allowance to - it is silent, and the six-call manual read is not: a single externally owned account holds owner().

A good first read and a bad last one. Bazar signs an approve against this exact contract on every hire, so its hire flow keeps reading owner() itself.

The measurement that carries it: Agent 4 of 4 returned fields match the chain; owner() and paused() are absent from its response.

Task 4TradingToo close to call

Best route to bridge 100 USDC from BNB Chain to Base

Which bridge gives the most USDC on Base for 100 USDC sent from BNB Chain, and what does it cost?

ClawdMint · token 2468

MCP (Streamable HTTP, SSE framed) · ERC-8004 identity on BNB Smart Chain

POST https://clawdmint-api.vercel.app/mcp

tools/call get_bridge_route { from_chain: "bsc", to_chain: "base", from_token: "USDC", to_token: "USDC", amount: "100" }
Agent1546.3 ms

samples 1546.3 / 1604.3 / 1354.5

Manual1536.7 ms

samples 2001.1 / 1107.4 / 1536.7

Requests issued

  1. 200MCP get_bridge_route - 3 routes ranked

What came back

Top bridge
AcrossV4
Top min received
99.7366 USDC
Top total cost USD
$0.2714
Routes returned
3
Cheapest route by total cost
LI.FI Intents
Rank one is cheapest
false

No payment required.

Raw response, attachedoutputs/bridge-route.agent.json
{
  "from": "100 USDC on bsc",
  "to": "~99.9866 USDC on base",
  "bridge": "AcrossV4",
  "gas_cost_usd": "$0.0081",
  "bridge_fee_usd": "$0.2633",
  "total_cost_usd": "$0.2714",
  "estimated_time": "~1 min",
  "slippage": "0.26%",
  "min_received": "99.7366 USDC",
  "jumper_url": "https://jumper.exchange/?fromChain=56&toChain=8453&fromToken=0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d&toToken=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
  "routes": [
    {
      "rank": 1,
      "bridge": "AcrossV4",
      "to": "~99.9866 USDC",
      "min_received": "99.7366 USDC",
      "bridge_fee_usd": "$0.2633",
      "gas_cost_usd": "$0.0081",
      "total_cost_usd": "$0.2714",
      "estimated_time": "~1 min",
      "slippage": "0.26%"
    },
    {
      "rank": 2,
      "bridge": "LI.FI Intents",
      "to": "~99.9834 USDC",
      "min_received": "99.7334 USDC",
      "bridge_fee_usd": "$0.2499",
      "gas_cost_usd": "$0.0142",
      "total_cost_usd": "$0.2641",
      "estimated_time": "~1 min",
      "slippage": "0.27%"
    },
    {
      "rank": 3,
      "bridge": "NearIntents",
      "to": "~99.9693 USDC",
      "min_received": "99.7193 USDC",
      "bridge_fee_usd": "$0.2898",
      "gas_cost_usd": "$0.0142",
      "total_cost_usd": "$0.3040",
      "estimated_time": "~1 min",
      "slippage": "0.28%"
    }
  ]
}

Without the agent

One GET to the LI.FI quote API, fields extracted by hand

Hand-stamped analyst time

16 s

Wall clock for this leg only, at machine speed with the endpoints already known. The agent leg was not stamped, so the two are not compared.

Requests issued

  1. 200GET li.quest/v1/quote - tool across

What came back

Top bridge
AcrossV4
Top min received
99.736594
Top total cost USD
$0.2805
Routes returned
1
Cheapest route by total cost
AcrossV4
Rank one is cheapest
null

Free. Public endpoint, no key.

Raw response, attachedoutputs/bridge-route.manual.json
{
  "tool": "across",
  "toolName": "AcrossV4",
  "estimate": {
    "fromAmount": "100000000000000000000",
    "toAmount": "99736594",
    "toAmountMin": "99736594",
    "fromAmountUSD": "99.9623",
    "toAmountUSD": "100.2259",
    "executionDuration": 2,
    "gasCosts": [
      {
        "amountUSD": "0.0172"
      }
    ],
    "feeCosts": [
      {
        "name": "LIFI Fixed Fee",
        "amountUSD": "0.2499"
      },
      {
        "name": "Relayer fee",
        "amountUSD": "0.0100"
      },
      {
        "name": "Relayer gas fee",
        "amountUSD": "0.0034"
      }
    ]
  }
}

Faithful numbers, wrong ordering. Take the data, ignore the ranking.

Machine time: no measurable difference

Nine milliseconds apart. Neither route is faster in any sense that matters.

The agent is accurate where it counts: its minimum received reproduces the aggregator's own toAmountMin exactly, and it names the same winning bridge. It adds two alternatives the direct call never surfaced and a prefilled execution link, which is genuine added value.

Its ranking contradicts its own cost column. Rank 1 carries a total cost of $0.2714 while rank 2 carries $0.2641. It is ordering by estimated output and presenting that order as best. This is reported rather than smoothed over because "the agent ranked it for you" is exactly the kind of convenience that gets trusted without being checked.

The two legs also differ by $0.0091 on total cost. Quotes move between calls; that is drift, and no significance is claimed for it.

The measurement that carries it: Agent rank 1 total cost $0.2714 against its own rank 2 at $0.2641.

Task 5SecurityManual wins

Independently audit a trading agent's onchain commit-reveal claim

Did OpenOdds.Ai really commit prediction pred_c0bc19d214a24fd9 onchain before kickoff, and does the revealed content hash to the committed value?

OpenOdds.Ai · token 49637

MCP (Streamable HTTP) · ERC-8004 identity on BNB Smart Chain

POST https://api.openodds.ai/mcp

tools/call verify_prediction { prediction_id: "pred_c0bc19d214a24fd9" }
Agent1232.3 ms

samples 1274.4 / 1232.3 / 377.0

Manual6142.3 ms

samples 7832.7 / 6142.3 / 5532.9

Requests issued

  1. 200MCP verify_prediction - status verified

What came back

Verification status
verified
Verification source
local_db
Names the chain
false
Commit tx
a784bbc3a79f12ff01b02cd9cec8f10a775d055431f98fae6a93e9b3b81af7fd
Commit block
45756452
Revealed
true
Content hash match
true
Commitment hash match
true
Independently checked
false

No payment required.

Raw response, attachedoutputs/commit-reveal-audit.agent.json
{
  "prediction_id": "pred_c0bc19d214a24fd9",
  "match_id": "0xccf4b1a6f24937d129ffe8da2141ea7f6e3e4edcf75d12a3ad8e070d58d50d6f",
  "match_time": "2026-05-11T01:30:00",
  "content_hash": "0xb79743557bd43c703b034beb6082649d1c829e1766447fd3ba4edf13132ed4d3",
  "commitment_hash": "0x83b13fbe60937d2d92ca889408a693284d9ddb5199e45a2e96cfe6a9a9a1bb0f",
  "commit_tx": "a784bbc3a79f12ff01b02cd9cec8f10a775d055431f98fae6a93e9b3b81af7fd",
  "commit_block": 45756452,
  "commit_timestamp": "2026-05-09T04:50:45.702367",
  "commit_before_match": true,
  "revealed": true,
  "reveal_tx": "5accfd504b2a1b7568c5c68b214b1e415f31197792234fc5c75cbc98fd169b12",
  "salt": "0xbc833638a69227d04dd690de59477df1ff864f8b11b0ef06d9efa70bff57ba04",
  "ipfs_uri": "ipfs://QmRwhE3fGrJYTC2U2PJiQ1hj98E6TYekhYsSm2s8A6der1",
  "verification_source": "local_db",
  "verification_status": "verified",
  "content_hash_match": true,
  "commitment_hash_match": true
}

Without the agent

Locate the commit tx across seven EVM chains, read the calldata, re-derive the hash

Hand-stamped analyst time

58 s

Wall clock for this leg only, at machine speed with the endpoints already known. The agent leg was not stamped, so the two are not compared.

Requests issued

  1. 200Take the claim to be tested (verify_prediction) - claim under audit
  2. 200eth_getTransactionByHash on BNB Smart Chain - not present
  3. 200eth_getTransactionByHash on opBNB - not present
  4. 200eth_getTransactionByHash on Base - FOUND
  5. 401eth_getTransactionByHash on Polygon - not present
  6. 200eth_getTransactionByHash on Arbitrum One - not present
  7. 200eth_getTransactionReceipt on Base - success
  8. 200eth_getBlockByNumber on Base - block header read

What came back

Verification status
verified
Verification source
local_db
Names the chain
true
Chain found on
Base
Commit tx
0xa784bbc3a79f12ff01b02cd9cec8f10a775d055431f98fae6a93e9b3b81af7fd
Commit block
45756452
Tx succeeded
true
Contract called
0x3002fd6411b7f89abcc2319126b95c4a2eaa03d5
Selector
0x3bab54e6
Match id in calldata
true
Content hash in calldata
true
Commitment hash in calldata
true
Derived commitment
0x83b13fbe60937d2d92ca889408a693284d9ddb5199e45a2e96cfe6a9a9a1bb0f
Derived matches onchain
true
Block time UTC
2026-05-09T04:50:51.000Z
Agent claimed commit time
2026-05-09T04:50:45.702367
Committed before kickoff
true
Independently checked
true

Free. Public RPC endpoints, no key.

Raw response, attachedoutputs/commit-reveal-audit.manual.json
{
  "claimUnderAudit": {
    "prediction_id": "pred_c0bc19d214a24fd9",
    "match_id": "0xccf4b1a6f24937d129ffe8da2141ea7f6e3e4edcf75d12a3ad8e070d58d50d6f",
    "match_time": "2026-05-11T01:30:00",
    "content_hash": "0xb79743557bd43c703b034beb6082649d1c829e1766447fd3ba4edf13132ed4d3",
    "commitment_hash": "0x83b13fbe60937d2d92ca889408a693284d9ddb5199e45a2e96cfe6a9a9a1bb0f",
    "commit_tx": "a784bbc3a79f12ff01b02cd9cec8f10a775d055431f98fae6a93e9b3b81af7fd",
    "commit_block": 45756452,
    "commit_timestamp": "2026-05-09T04:50:45.702367",
    "commit_before_match": true,
    "revealed": true,
    "reveal_tx": "5accfd504b2a1b7568c5c68b214b1e415f31197792234fc5c75cbc98fd169b12",
    "salt": "0xbc833638a69227d04dd690de59477df1ff864f8b11b0ef06d9efa70bff57ba04",
    "ipfs_uri": "ipfs://QmRwhE3fGrJYTC2U2PJiQ1hj98E6TYekhYsSm2s8A6der1",
    "verification_source": "local_db",
    "verification_status": "verified",
    "content_hash_match": true,
    "commitment_hash_match": true
  },
  "chainFoundOn": "Base",
  "transaction": {
    "hash": "0xa784bbc3a79f12ff01b02cd9cec8f10a775d055431f98fae6a93e9b3b81af7fd",
    "blockNumber": "0x2ba3024",
    "from": "0x0d68a153897b73a6e4d2eaa9b0d4802bae69532d",
    "to": "0x3002fd6411b7f89abcc2319126b95c4a2eaa03d5",
    "input": "0x3bab54e6ccf4b1a6f24937d129ffe8da2141ea7f6e3e4edcf75d12a3ad8e070d58d50d6fb79743557bd43c703b034beb6082649d1c829e1766447fd3ba4edf13132ed4d383b13fbe60937d2d92ca889408a693284d9ddb5199e45a2e96cfe6a9a9a1bb0f000000000000000000000000000000000000000000000000000000006a00c098"
  },
  "receiptStatus": "0x1",
  "blockTimestampHex": "0x69febd2b",
  "calldataWords": [
    "0xccf4b1a6f24937d129ffe8da2141ea7f6e3e4edcf75d12a3ad8e070d58d50d6f",
    "0xb79743557bd43c703b034beb6082649d1c829e1766447fd3ba4edf13132ed4d3",
    "0x83b13fbe60937d2d92ca889408a693284d9ddb5199e45a2e96cfe6a9a9a1bb0f",
    "0x000000000000000000000000000000000000000000000000000000006a00c098"
  ],
  "derivedCommitment": "0x83b13fbe60937d2d92ca889408a693284d9ddb5199e45a2e96cfe6a9a9a1bb0f"
}

The claim was true. That is not why it should have been believed.

Machine time: agent 4.98x faster

The agent answered "verified" in a fifth of the time the chain took to confirm it, and the field beside that answer reads verification_source: local_db. It verified its own database against its own database. Had the commitment been absent from every chain, the same response would have come back.

The independent check stands it up completely. The transaction is real, it succeeded, its calldata carries the match id, the content hash and the commitment hash in the clear, and keccak256(content hash ‖ salt) reproduces the onchain commitment byte for byte. It was committed 1.86 days before kickoff. Nothing was fabricated and the audit found no discrepancy.

Two things the agent never says. The transaction is not on the chain its identity lives on - the ERC-8004 identity is on BNB Smart Chain and the commitment is anchored on Base, found only by trying five networks in turn. And "verified" from this endpoint means self-reported until somebody reads the calldata.

Six seconds of machine time and 58 seconds of hand work turned a self-attestation into a fact. That is the whole argument for a marketplace layer: the value of the agent is that it publishes enough to be checked, and the value of the marketplace is that it checks.

The measurement that carries it: Agent says verified from local_db; the chain confirms it on Base at block 45756452, 1.86 days pre-kickoff.

What agents charge

Every task above ran against an endpoint that answers for free, which leaves a misleading impression in the cost column. These three agents on the same index publish their prices in-band without being paid anything. None was paid and none was executed: Bazar holds no keys, and the harness will not sign a payment. No output, timing or quality judgement is reported for any of them, because none was obtained.

AgentTokenPriceNetworkMechanism
Cast Transaction Agent449420.001 USDCeip155:8453x402
Agentscan Agent519450.001 USDCeip155:84532x402
Sentinels Audit2586410.2 BNB on BSCeip155:56native BNB transfer, tx hash redeemed once

Worth flagging from the discovery run: Agentscan Agent prices its work on chain 84532, which is Base Sepolia - a testnet. A buyer reading "0.001 USDC" off that header is being quoted in play money.

Published prices, read from the agents themselves. Nothing here was paid for and no paid task was executed.

How to check this

Re-run the measurements

node scripts/advantage/run-benchmark.mjs
node scripts/advantage/run-benchmark.mjs --samples 5
node scripts/advantage/price-discovery.mjs

Writes docs/agent-advantage/results.json and the raw outputs this page renders. Nothing on this page is typed in by hand; every number is read from that file.

What re-running will not reproduce

The findings will reproduce: the null win rate, the six-field token response, the mis-ranked bridge routes, the Base transaction and the commitment hash.

The milliseconds will not. Latency moves, and both agent endpoints are cold-start serverless deployments whose first call after an idle period runs several times slower than steady state - visible in the raw samples above, where a first sample of 3160.0 ms sits against a third of 1213.4 ms. Medians are shown beside the full sample sets rather than instead of them, and no timing gap under 20 percent is called a win.

The claim this report will not make

It does not claim to know how much human time an agent saves. Nothing here was executed by a human. The hand-stamped analyst times are wall clock from an automated run at machine speed, with the endpoints, chain ids and token addresses already known - a best case for the manual route and a lower bound on what a person would spend. Turning that into a productivity claim about people would be a fabrication, so it is not turned into one.

  • Machine wall clock only, one machine, one network, 3 samples per leg.
  • Analyst time was stamped for the manual legs only. The agent legs were not stamped, so no side-by-side analyst comparison appears anywhere on this page.
  • No paid agent was invoked and no payment was signed.
  • Task 1's manual leg tested free tiers only. The three keyed services were not purchased, and nothing is claimed about what they would have returned.