Skip to content

Reports

Three reports rendered as markdown on the server: the market briefing, one coin's analysis, and the funding-arbitrage opportunities. Each is composed on the server from the keyless /api routes of the endpoints documented elsewhere in this reference (their read models, not an HTTP call), read with the queries listed below, and every number it prints is a field those routes serve. The MCP tools market_briefing, analyze_coin and find_opportunities and the CLI commands sharpe briefing, sharpe analyze and sharpe opportunities print report_md exactly as these endpoints serve it.

A report is never an error because one of its reads failed: that section says the data is unavailable and a **Data gaps:** line names the read and why. The report closes with the freshness of every answer it read (**Data freshness:**). Only when every read fails does the endpoint answer 503. Each endpoint has a keyless twin under /api that serves the data object as the body (see Free API).


The report object

Every report endpoint answers one object as its data.

  • Name
    report
    Type
    string
    Description

    Which report: briefing, coin-analysis or opportunities.

  • Name
    coin
    Type
    string
    Description

    The ticker the coin analysis covers, upper-cased. Coin analysis only.

  • Name
    report_md
    Type
    string
    Description

    The report as markdown. It ends with the freshness of each answer it read and, when a read failed, a **Data gaps:** line.

  • Name
    inputs
    Type
    object[]
    Description

    The reads the report was composed from, in its order: each read's label, the endpoint it read, its query, the answer's dataset_id, as_of, freshness_status and runtime_status, and the error it printed under Data gaps (null when it answered).

meta carries the most cautious freshness of the inputs: the oldest as_of, the earliest stale_after, the worst freshness_status, and runtime_status: "degraded" when a read failed or came back degraded (such a report is never cached).


GET/v1/briefing

Get the market briefing

Total market cap, 24h volume, BTC dominance and the Fear & Greed Index; the top 5 and bottom 3 narratives by 24h change as the API ranks them; the funding book's highest and lowest markets by 8h-equivalent rate among fresh markets with at least $1M of open interest, printed as APR; and the whole market's funding estimated over the next 24 hours at current rates. No query parameters.

Reads the free routes: /api/tracker/market-overview, /api/narratives/data with sort=-change24h&top=5&bottom=3, /api/funding/rates with type=current&extremes=3&min_oi_usd=1000000&max_age_h=6, and /api/funding/settlement with window=current.

Request

GET
/v1/briefing
curl https://www.sharpe.ai/api/v1/briefing \
  -H "Authorization: Bearer sk_live_your_key_here"

Response

{
  "data": {
    "report": "briefing",
    "report_md": "## Market Briefing\n\n### Market Stats\n**Total Market Cap:** $2.86T\n...",
    "inputs": [
      {
        "label": "market-overview",
        "endpoint": "tracker-market-overview",
        "query": {},
        "dataset_id": "sectors",
        "as_of": "2026-09-29T02:04:33.792Z",
        "freshness_status": "fresh",
        "runtime_status": "ok",
        "error": null
      }
    ]
  },
  "meta": {
    "request_id": "req_abc123def456ghij",
    "timestamp": "2026-09-29T02:23:10Z",
    "elapsed_ms": 48,
    "dataset_id": "funding_rates_current",
    "freshness_status": "fresh",
    "runtime_status": "ok"
  }
}

GET/v1/coins/{coin}/analysis

Get a coin's analysis

One coin's price-prediction score and signals (when its asset is in the prediction coverage list), with the price's as-of; its current funding on its 10 largest markets by open interest, each labelled with what the venue's rate is (rate_kind: on most venues the estimate of the next payment, not yet charged), with the average and median across venues; the asset's open-interest total from the global board in USD notional, its 1h and 24h change printed beside the 24h price change (USD open interest moves with price); and the dollars its funding is estimated to move over the next 24 hours at current rates, with the contract spellings of the asset that figure leaves out.

Path parameters

  • Name
    coin
    Type
    string
    Description

    Coin ticker, any case: BTC, eth, 1000PEPE. The funding reads resolve it to its asset (PEPE brings its 1000PEPE and KPEPE contracts); the prediction is matched in the coverage list by the asset the funding read resolved (bitcoin is BTC), else by ticker, never by a guessed slug. The settlement read matches the ticker as written; the report names the asset's other spellings it leaves out. 1 to 64 characters, else 400 invalid_parameter.

Reads the free routes: /api/price-prediction/data (the coverage list), /api/funding/rates with type=current&coin=<COIN>&max_age_h=6 and sort=-open_interest, then summary=1, /api/global/overview, and /api/funding/settlement with coin=<COIN>&window=current.

Request

GET
/v1/coins/{coin}/analysis
curl https://www.sharpe.ai/api/v1/coins/BTC/analysis \
  -H "Authorization: Bearer sk_live_your_key_here"

Response

{
  "data": {
    "report": "coin-analysis",
    "coin": "BTC",
    "report_md": "## BTC Analysis\n\n**Price (as of 2026-09-29 00:17Z):** $83.5K | **24h:** -1.15%\n...",
    "inputs": []
  },
  "meta": {
    "request_id": "req_abc123def456ghij",
    "timestamp": "2026-09-29T02:23:10Z",
    "elapsed_ms": 48,
    "dataset_id": "funding_rates_current",
    "freshness_status": "fresh",
    "runtime_status": "ok"
  }
}

GET/v1/opportunities

Get the arbitrage opportunities

The top 10 spot-perp basis trades (perp legs with at least $1M of open interest) and the top 10 cross-exchange funding pairs (both legs with at least $1M of open interest and 24h volume), each in its board's order with its gross and fee-adjusted net APR and status flags, and the funding book's market stats (mean and OI-weighted APR, markets paying each way). The spot-perp section says how many board rows are executable and marks open interest on a venue the API leaves out of its totals (MEXC) as unverified; a cross-exchange row prints its funding spread (netFundingRate per intervalHours) apart from its entry gap (spreadRate, negative = favourable). No query parameters.

Reads the free routes: /api/arbitrage/spot-perp with exchange=all&direction=all&minOiUsd=1000000, /api/arbitrage/cross-exchange with minOiUsd=1000000&minVolUsd=1000000&limit=10, and /api/funding/rates with type=current&stats=1.

Request

GET
/v1/opportunities
curl https://www.sharpe.ai/api/v1/opportunities \
  -H "Authorization: Bearer sk_live_your_key_here"

Was this page helpful?