prereason-com · Schema

MetricData

FinancialMarketAPIAIDataMCP

Properties

Name Type Description
metric string The series' public name, the name GET /api/metrics lists; a short name such as dxy answers as etf-uup. Since 2026-10-10; it carried the stored identifier before, which is now in `stored_name`.
name string Equal to `metric`: the series' public name, under which the answer is worded.
stored_name string The identifier PreReason stores the series under. It names no source; the series' source is in `source`.
instrument string Present on a series that measures a futures, swap or options market (`futures`, `swap` or `options`), including a series PreReason calculates from one, and absent for every other series.
display_name string
timestamp string
period object Present only for a series dated by its month or quarter (since 2026-10-10): the month or quarter the figure describes, its basis where the source states one, and its release where the row carries one.
interpretation object
trend object
stored_range object Where the reading sits in its stored daily history, as a briefing with percentiles serves it, with the facts the statement is made from. The Markdown prints the statement as a "Range:" line under the
context string Human-readable context summary
source string
display string Whether a Business plan's display licence covers showing this figure to your users. yes; notice, when shown with its provider's credit (named on the Data sources page); or no, when the provider's term
notices array The notices the row's sources require shown with the figure, each in its terms record's own words ("Powered by CoinGecko."), and Korea Customs' naming its release's title and date. Absent when no sour
data_quality object
View JSON Schema on GitHub

JSON Schema

prereason-com-metric-data-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/prereason-com/json-schema/prereason-com-metric-data-schema.json",
  "title": "MetricData",
  "x-generated": "2026-10-31",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/prereason-com-openapi.json#/components/schemas/MetricData",
  "type": "object",
  "properties": {
    "metric": {
      "type": "string",
      "description": "The series' public name, the name GET /api/metrics lists; a short name such as dxy answers as etf-uup. Since 2026-10-10; it carried the stored identifier before, which is now in `stored_name`."
    },
    "name": {
      "type": "string",
      "description": "Equal to `metric`: the series' public name, under which the answer is worded."
    },
    "stored_name": {
      "type": "string",
      "description": "The identifier PreReason stores the series under. It names no source; the series' source is in `source`."
    },
    "instrument": {
      "type": "string",
      "enum": [
        "futures",
        "swap",
        "options"
      ],
      "description": "Present on a series that measures a futures, swap or options market (`futures`, `swap` or `options`), including a series PreReason calculates from one, and absent for every other series."
    },
    "display_name": {
      "type": "string"
    },
    "timestamp": {
      "type": "string",
      "format": "date-time"
    },
    "period": {
      "type": "object",
      "description": "Present only for a series dated by its month or quarter (since 2026-10-10): the month or quarter the figure describes, its basis where the source states one, and its release where the row carries one. `timestamp` is unchanged, and `data_quality.age_display` counts from `released`, or names the period when no release is stored.",
      "properties": {
        "period": {
          "type": "string",
          "description": "The month or quarter the figure describes (\"2026-09\", or \"2026-Q1\" for a quarter)."
        },
        "period_words": {
          "type": "string",
          "description": "The same period in words."
        },
        "basis": {
          "type": [
            "string",
            "null"
          ],
          "description": "\"monthly average\" where the source states its figure is the month's average; null otherwise."
        },
        "released": {
          "type": [
            "string",
            "null"
          ],
          "format": "date",
          "description": "The row's own release day, or null when the row carries none."
        },
        "released_as": {
          "type": [
            "string",
            "null"
          ],
          "description": "What `released` is: \"release\" for the publisher's release, or \"file's date\" for the date of the publisher's file (the World Bank's monthly prices). Null when `released` is null."
        },
        "description": {
          "type": "string",
          "description": "The period, its basis and its release in one line."
        }
      }
    },
    "interpretation": {
      "$ref": "#/$defs/Interpretation"
    },
    "trend": {
      "$ref": "#/$defs/Trend"
    },
    "stored_range": {
      "type": "object",
      "description": "Where the reading sits in its stored daily history, as a briefing with percentiles serves it, with the facts the statement is made from. The Markdown prints the statement as a \"Range:\" line under the rank. Absent when nothing is said: under two years of stored history, a \"since\" date less than a year back, a series that grows by construction, or a nominal stock of money or debt (M2, EU M3, US total debt, BIS global liquidity). Absent too for a series dated by its month or quarter with fewer than 24 monthly or 8 quarterly stored readings, where no percentile is served, and for dealer-takedown-pct and indirect-bidder-pct, which are not ranked. For SPY, QQQ, IWM, UUP and VXX, whose older history is held as month closes (VXX: week closes), a stored day that is such a close is named by its period: its `date`, `highest_since`, `lowest_since` or `history_from` is the month (\"2024-01\") or the week's first day, `stored_high` and `stored_low` carry `basis`, and a dated read counts no such close before its period ends.",
      "properties": {
        "statement": {
          "type": "string"
        },
        "highest_since": {
          "type": "string",
          "description": "The day the reading is the highest since, or stored_history when no stored day is at or above it. Absent when not said."
        },
        "lowest_since": {
          "type": "string",
          "description": "The day the reading is the lowest since, or stored_history when no stored day is at or below it. Absent when not said."
        },
        "stored_high": {
          "type": "object",
          "properties": {
            "value_formatted": {
              "type": "string"
            },
            "date": {
              "type": "string"
            },
            "basis": {
              "type": "string",
              "enum": [
                "month's last close",
                "week's last close"
              ],
              "description": "Present only where the stored high is a month's or a week's last close; `date` is then that month or week."
            }
          }
        },
        "stored_low": {
          "type": "object",
          "properties": {
            "value_formatted": {
              "type": "string"
            },
            "date": {
              "type": "string"
            },
            "basis": {
              "type": "string",
              "enum": [
                "month's last close",
                "week's last close"
              ],
              "description": "Present only where the stored low is a month's or a week's last close; `date` is then that month or week."
            }
          }
        },
        "history_from": {
          "type": "string",
          "description": "The first stored day the statement reads from."
        }
      }
    },
    "context": {
      "type": "string",
      "description": "Human-readable context summary"
    },
    "source": {
      "type": "string"
    },
    "display": {
      "type": "string",
      "enum": [
        "yes",
        "notice",
        "no"
      ],
      "description": "Whether a Business plan's display licence covers showing this figure to your users. yes; notice, when shown with its provider's credit (named on the Data sources page); or no, when the provider's terms do not allow it, were not read, or the value is calculated from inputs whose sources' terms have not been traced."
    },
    "notices": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "The notices the row's sources require shown with the figure, each in its terms record's own words (\"Powered by CoinGecko.\"), and Korea Customs' naming its release's title and date. Absent when no source requires one; the New York Fed's reference rates carry theirs as their source."
    },
    "data_quality": {
      "$ref": "#/$defs/DataQuality"
    }
  },
  "$defs": {
    "DataQuality": {
      "type": "object",
      "properties": {
        "age_hours": {
          "type": "number"
        },
        "stale": {
          "type": "boolean"
        },
        "status": {
          "type": "string",
          "enum": [
            "fresh",
            "warning",
            "stale"
          ]
        }
      }
    },
    "Interpretation": {
      "type": "object",
      "description": "The reading's signal and its confidence. For dealer-takedown-pct and indirect-bidder-pct, whose readings are each the latest note or bond auction of any term, only `not_measured` is served: no signal, confidence, confidence_label or factors.",
      "properties": {
        "not_measured": {
          "type": "string",
          "description": "Why no signal is read, in place of signal, confidence, confidence_label and factors. Served for dealer-takedown-pct and indirect-bidder-pct only; absent everywhere else."
        },
        "signal": {
          "type": "string",
          "enum": [
            "bullish",
            "bearish",
            "neutral",
            "above-trend",
            "below-trend",
            "at-trend"
          ],
          "description": "The reading's word, the same one briefings serve for the metric. Crypto series read bullish, bearish or neutral. Every other metric reads above-trend, below-trend or at-trend: where its value sits against its trend, so a Treasury yield at the top of its range reads above-trend."
        },
        "confidence": {
          "type": "number",
          "minimum": 15,
          "maximum": 90,
          "description": "Signal clarity: how clearly the current reading supports its own label, scored from 15 to 90 on four facts about the reading (how far past the boundary that decided the label it sits, whether its 7 day and 30 day moves point the way the label expects, how extreme it is in its history, and whether it is current against its own publication schedule, the same judgement data_quality.stale states). It is not a probability that the label is right, says nothing about what any price does next, and has not been calibrated against outcomes."
        },
        "confidence_label": {
          "type": "string",
          "enum": [
            "Very High",
            "High",
            "Medium",
            "Low",
            "Very Low"
          ]
        },
        "factors": {
          "type": "object",
          "description": "The four factors behind confidence, each 0 to 100.",
          "properties": {
            "signal_strength": {
              "type": "number"
            },
            "trend_consistency": {
              "type": "number"
            },
            "percentile_score": {
              "type": "number"
            },
            "data_quality": {
              "type": "number",
              "description": "100 while the reading is current on its own publication schedule (data_quality.stale is false), 60 once stale, 30 once critical."
            }
          }
        }
      }
    },
    "Trend": {
      "type": "object",
      "properties": {
        "direction": {
          "type": "string",
          "enum": [
            "rising",
            "falling",
            "flat"
          ],
          "description": "Absent where no change window was measured (every 7, 30 and 90 day flag false): the two any-term auction shares, or a series with no recent reading. It holds the label the last live answer served in the past 6 hours: a new direction needs the 7 day change more than a quarter past the series' flat band, and a held one stays until the change falls back inside three quarters of it. A historical date has no memory."
        },
        "change_7d": {
          "type": "number"
        },
        "change_7d_available": {
          "type": "boolean",
          "description": "True when change_7d was measured against a reading close to 7 days before this one. False when no reading sat close enough: change_7d is then the change against the nearest earlier reading, or 0 when there is none, and is not a 7 day change. Always false, with every window and a change of 0, for a series that mixes auction terms (dealer-takedown-pct, indirect-bidder-pct): each reading is the latest note or bond auction of any term, so a window would compare two different securities."
        },
        "change_30d": {
          "type": "number"
        },
        "change_30d_available": {
          "type": "boolean",
          "description": "True when change_30d was measured against a reading close to 30 days before this one. False when no reading sat close enough: change_30d is then the change against the nearest earlier reading, or 0 when there is none, and is not a 30 day change."
        },
        "change_90d": {
          "type": "number"
        },
        "change_90d_available": {
          "type": "boolean",
          "description": "True when change_90d was measured against a reading close to 90 days before this one. False when no reading sat close enough: change_90d is then the change against the nearest earlier reading, or 0 when there is none, and is not a 90 day change."
        },
        "change_unit": {
          "type": "string",
          "enum": [
            "percent",
            "absolute"
          ],
          "description": "The unit of change_7d, change_30d and change_90d. percent is a relative change. absolute is a difference in the metric's own unit: percentage points for a rate, standard deviations for a score, contracts for a position, or its currency. A series that can take either sign by what it is (a spread, a distance, a z score, a flag, a rank, a net position or flow) always measures its changes as absolute differences, and so does a level at or below zero."
        },
        "momentum": {
          "type": "string",
          "enum": [
            "accelerating",
            "decelerating",
            "steady"
          ]
        },
        "momentum_description": {
          "type": "string"
        },
        "percentile": {
          "type": "number",
          "minimum": 0,
          "maximum": 100,
          "description": "Where the reading ranks, the same in a briefing and on this route: among every daily close stored for the metric, or, for a series that grows by construction such as hash rate or difficulty, its change over 7 days among the weekly changes in its history. Null, with no percentile_label, for dealer-takedown-pct and indirect-bidder-pct: each reading is the latest note or bond auction of any term, so a rank would compare different securities."
        },
        "percentile_label": {
          "type": "string",
          "description": "The percentile's band word, or \"not measured\" where no rank was measured. Absent for a series that holds one value in all its stored readings, for a series dated by its month or quarter with fewer than 24 monthly or 8 quarterly stored readings, and for dealer-takedown-pct and indirect-bidder-pct."
        },
        "percentile_history_days": {
          "type": "integer",
          "description": "The days of history the percentile was ranked in, from the first stored close to the reading (or the history read for a weekly change rank). Absent when that span is not known, where no rank was measured, for a series that holds one value in all its stored readings, for a series dated by its month or quarter with fewer than 24 monthly or 8 quarterly stored readings, and for dealer-takedown-pct and indirect-bidder-pct."
        },
        "same_value": {
          "type": "object",
          "description": "Present only for a series that holds the same value in all its stored readings: no percentile is served (percentile is null, with no percentile_label), and this says how many readings and since which day. Absent for every other series.",
          "properties": {
            "readings": {
              "type": "integer"
            },
            "since": {
              "type": "string",
              "format": "date"
            }
          }
        },
        "percentile_readings": {
          "type": "integer",
          "description": "How many stored readings the served percentile was taken among. Present only for a series dated by its month or quarter, and only when a percentile is served."
        },
        "percentile_since": {
          "type": "string",
          "description": "The month or quarter of the first of those readings (\"1990-01\", or \"2000-Q1\" for a quarter). Present under the same conditions as percentile_readings."
        },
        "change_30d_from": {
          "type": "string",
          "description": "The month the 30 day change was measured from (\"2026-07\"). Present only for a series dated by its month, and only where that change is measured. Absent for a quarterly series: no 30 day change is measured between two of its readings."
        },
        "change_90d_from": {
          "type": "string",
          "description": "The month or quarter the 90 day change was measured from (\"2026-05\"). Present only for a series dated by its month or quarter, and only where that change is measured."
        }
      }
    }
  }
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/prereason-com-metric-data"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.