---
title: "Get Sharp Line"
method: POST
path: "/v1/mcp/get_sharp_line"
tags: ["mcp"]
---

# Get Sharp Line

`POST /v1/mcp/get_sharp_line`

## 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/get_sharp_line`
- Auth: none declared

## Request body

- SharpLineRequest
  - `query` string, required
  - `market_type` string
  - `period` string
  - `format` string
  - `sport` string, nullable
  - `date` string, nullable
  - `verbosity` string: full | terse. 'terse' empties the per-book `books` array inside `comparison` (the bulk of the payload); the top-level `summary` and the worked numbers are kept either way.

## Response `200`

Successful Response

- SharpLineResult: One-call NL→answer: resolve a fixture and return its worked sharp line (W1). ``status`` is the caller's go/no-go signal: ``ok`` (``match`` + ``comparison`` are set), ``ambiguous`` (``alternatives`` + ``ask_user`` are set, ``comparison`` is null — we do NOT guess), or ``not_found``. ``summary`` is always a ready-to-read sentence.
  - `status` string, required
  - `query` string, required
  - `summary` string, required
  - `match` MatchSummary: A fixture flattened for agent consumption (teams as names, optional live score).
    - `event_id` string, required: Canonical event id (evt_…); pass to get_match_odds / compare_lines.
    - `sport` string, required: football | basketball
    - `league` string, required: League name, e.g. 'English Premier League'.
    - `home_team` string, required
    - `away_team` string, required
    - `scheduled_at` string, nullable: Kickoff, ISO-8601 UTC.
    - `scheduled_at_local` string, nullable: Kickoff in the requested timezone (ISO-8601); null when no timezone was given.
    - `status` string, required: scheduled | live | finished
    - `score` Score
      - `home` integer, required
      - `away` integer, required
    - `red_cards` Score
      - `home` integer, required
      - `away` integer, required
    - `clock` string, nullable: Match clock when live, humanized for display: e.g. '1st half 25'', '2nd half 47'' (the real minute, not estimated) or 'half-time'; null pre-match or when the feed omits it. Basketball clocks (e.g. 'Q2 4:12') pass through as-is.
    - `confidence` number, nullable: Fuzzy-match confidence 0–1 (find_match only; null elsewhere).
    - `summary` string, nullable: One-line human-readable status, e.g. "Man City vs Arsenal — LIVE 1h 23 2-1." or "… — Kicks off 18:00 UTC on Jun 01." — ready to read to a user.
  - `comparison` 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').
  - `alternatives` MatchAlternative[]
    - `event_id` string, required
    - `label` string, required: 'Home vs Away' label for disambiguation.
    - `confidence` number, required
  - `ask_user` string, nullable
  - `as_of` string, nullable
  - `stale` boolean, nullable: Freshness of the comparison (W4); null when no match resolved.
  - `decision` Decision, required: Pre-computed go/no-go for the caller (W3): we decide whether it's safe to proceed so the agent doesn't have to reason it out (and risk guessing). Branch on ``safe_to_proceed``: true → act on the result without asking; false → put ``ask_user`` to the human, or follow ``next_action`` when there's a clear recovery step (e.g. nothing resolved → list fixtures).
    - `safe_to_proceed` boolean, required: True when the result is unambiguous enough to act on without asking the user.
    - `confidence` number, nullable: Resolution confidence 0–1 (null when not applicable).
    - `ask_user` string, nullable: A disambiguation question to put to the user; null when safe_to_proceed.
    - `next_action` NextAction: The single best next call to make, pre-computed so the agent doesn't have to plan it (W3).
      - `tool` string, required: Tool to call next, e.g. 'get_match_odds' | 'compare_lines' | 'list_today_matches'.
      - `args` object: Ready-to-use arguments for that call, e.g. {'event_id': 'evt_…'}.
      - `reason` string, required: Why this is the suggested next step.

## 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)
