---
title: "Compare Lines"
method: POST
path: "/v1/mcp/compare_lines"
tags: ["mcp"]
---

# Compare Lines

`POST /v1/mcp/compare_lines`

## Request

- Base URL: `https://api.infersports.dev` (the document declares no server; this is the origin it was published from)
- URL: `https://api.infersports.dev/v1/mcp/compare_lines`
- Auth: none declared

## Request body

- CompareLinesRequest
  - `event_id` string, required: Event id (evt_…).
  - `market_type` string: 1x2 | asian_handicap | totals.
  - `period` string: full_time | half_time.
  - `format` string: Display format for prices (analytics use decimal).
  - `verbosity` string: full | terse. 'terse' drops the per-book `books` array (the bulk of the payload) and returns only the computed answer (best_prices / consensus_line / fair_odds / summary). Use it when you only need the worked numbers, not every book's line-by-line quote.

## Response `200`

Successful Response

- CompareLinesResult
  - `event_id` string, required
  - `home_team` string, required
  - `away_team` string, required
  - `market_type` string, required
  - `period` string, required
  - `format` string, required
  - `as_of` string, required
  - `stale` boolean, required: True when as_of is older than the freshness window for the match state.
  - `consensus_line` number, nullable: Line offered by the most books (null for 1x2 / no books).
  - `lines_offered` number[]: Distinct lines present across books (AH/totals).
  - `best_prices` BestPrice[]: Best price per outcome on the consensus line (across all returned books).
    - `outcome` string, required: home/draw/away (1x2), home/away (AH), or over/under (totals).
    - `bookmaker` string, required
    - `price` union, required: Best price for this outcome in the requested format.
      - number
      - integer
    - `decimal` number, required: Same price as decimal odds (for comparison).
  - `fair_odds` object, nullable: De-vigged fair decimal odds from the sharpest (lowest-overround) book on the consensus line.
  - `fair_from` string, nullable: Bookmaker key the fair_odds were de-vigged from.
  - `books` BookLine[]: Every book's quote for this market, line-by-line. Empty when verbosity='terse' (check book_count for how many books backed the analytics — empty here ≠ no books).
    - `bookmaker` string, required
    - `line` number, nullable: Handicap/total line (null for 1x2).
    - `prices` object, required
    - `overround` number, nullable: Book margin = Σ(1/decimal) − 1 over this market's outcomes.
    - `status` string, required: open | suspended
  - `book_count` integer
  - `summary` string: One ready-to-read sentence stating the consensus line, best prices and fair odds (W2) — quote it to the user directly. Present in both verbosity modes.
  - `verbosity` string: Echo of the requested verbosity ('full' | 'terse').

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/infersports/apis/infersports-api.md) · [All operations](https://skmtc.dev/infersports/apis/infersports-api/llms.txt) · [OpenAPI document](https://skmtc.dev/infersports/apis/infersports-api/revisions/1a1c3b357ea7?raw)
