{
  "name": "Positive Search — Agents Gate",
  "tldr": "One request — this one — replaces a news pipeline you would otherwise run yourself: searching, fetching dozens of articles and scoring each. Below: the current news-sentiment index for Bitcoin, Gold and Oil, the top narratives driving each reading, and one-link-away access to every scored source article for verification.",
  "what_this_is": "A live news-sentiment index from -1 to +1 for Bitcoin, Gold and Oil. AI agents read world press hourly (plus an immediate extra run when the asset's price moves sharply), score every headline separately, and blend the result with X chatter and Polymarket odds into one number per asset — plus the narratives behind it and a link to every source article. This document is the canonical entry point for machine readers: the current readings are inline below, and everything else is one link away.",
  "honest_limits": "The index measures the tone of the news coverage, not price, and it does not forecast price. We do not recommend using it as your only input: it is one instrument among several, meant to be combined with technical, fundamental and any other analysis you run. Every value is a snapshot with a timestamp, valid until its expires_at; quote fetched_at together with the value.",
  "readings": [
    {
      "asset": "BTC",
      "index": 0.3339,
      "blended": 0.3794,
      "fetched_at": "2026-08-23T19:23:05Z",
      "state": "strongly_bullish",
      "change_1h": -0.0057,
      "change_24h": 0.0179,
      "change_7d": 0.1862,
      "expires_at": "2026-08-23T20:23:05Z",
      "top_narratives": [
        "Record ETF inflows",
        "Treasury buyback triggers short squeeze",
        "Debt crisis fears fuel devaluation trade"
      ],
      "details": "https://positivesearch.app/api/v35/latest?asset=BTC",
      "page": "https://positivesearch.app/bitcoin-sentiment"
    },
    {
      "asset": "GOLD",
      "index": 0.4557,
      "blended": 0.4973,
      "fetched_at": "2026-08-23T19:26:13Z",
      "state": "strongly_bullish",
      "change_1h": 0.0551,
      "change_24h": -0.048,
      "change_7d": 0.1268,
      "expires_at": "2026-08-23T20:26:13Z",
      "top_narratives": [
        "US Debt Fears Drive Gold Rally",
        "Gold and Crypto Rally Together",
        "Geopolitical Risks and Safe Haven"
      ],
      "details": "https://positivesearch.app/api/v35/latest?asset=GOLD",
      "page": "https://positivesearch.app/gold-sentiment"
    },
    {
      "asset": "OIL",
      "index": 0.2928,
      "blended": 0.2784,
      "fetched_at": "2026-08-23T19:30:34Z",
      "state": "mildly_bullish",
      "change_1h": -0.0227,
      "change_24h": -0.1361,
      "change_7d": -0.0035,
      "expires_at": "2026-08-23T20:30:34Z",
      "top_narratives": [
        "US-Iran tensions spike oil prices",
        "ExxonMobil Kazakhstan field decline",
        "Retail fuel prices climb worldwide"
      ],
      "details": "https://positivesearch.app/api/v35/latest?asset=OIL",
      "page": "https://positivesearch.app/oil-sentiment"
    }
  ],
  "reading_semantics": "index = news coverage alone; blended = ALL sources folded into one number — news, X chatter and Polymarket odds — and it is the headline number every surface of this site shows and the one to quote. It is computed ONCE, when the run happens, from the components captured in that same run, and stored with it: the value behind a given fetched_at is fixed and will not change between requests or between surfaces. components{} carries the three inputs so you can see what the number is made of. The 7-day series in /api/v35/sentiment is that same blended value per run. A reading marked stale: true has outlived its expires_at — treat it as historical, not current.",
  "verify_us_yourself": {
    "sources": "Every reading ships its article list: each headline with its own score, publication time and a link to the original — fetch the details URL of any reading above and check the articles yourself.",
    "methodology": "https://positivesearch.app/llms.txt",
    "freshness_contract": "Responses carry fetched_at + expires_at + refresh_seconds, computed from the run itself so they can never drift from the number they describe. The number itself is fixed at run time too: quote a blended value with its fetched_at and anyone re-reading that run gets the same number.",
    "tamper_evident_history": {
      "claim": "Past readings cannot be silently rewritten: every run enters a sha256 hash chain, and once a day the chain head is anchored in the Bitcoin blockchain via OpenTimestamps — a witness we do not control.",
      "manifest": "https://positivesearch.app/proofs/manifest.json",
      "heads": "https://positivesearch.app/proofs/heads/",
      "how_to_verify": "Download a day's head .json and its .ots from /proofs/heads/, then run `ots verify <date>.json.ots` (opentimestamps-client). The proof binds the file to a Bitcoin block on that date — independent of this site, its host, or its owner."
    }
  },
  "endpoints": [
    {
      "method": "GET",
      "path": "/api/v35/latest?asset=BTC|GOLD|OIL",
      "returns": "current reading, narratives with member articles and links, X card, per-headline scores",
      "note": "~115KB with the full evidence — add &compact=1 for the same numbers and narratives without per-article evidence (~5KB), with counts of what was dropped and a link back to the full payload"
    },
    {
      "method": "GET",
      "path": "/api/v35/sentiment?asset=BTC|GOLD|OIL",
      "returns": "the index as a 7-day time series (the same window the site's chart draws)"
    },
    {
      "method": "GET",
      "path": "/api/v35/candles?asset=BTC|GOLD|OIL",
      "returns": "price candles for the same instrument, aligned with the index"
    },
    {
      "method": "GET",
      "path": "/api/v35/polymarket?asset=BTC|OIL",
      "returns": "the prediction-market leg: events used, liquidity, volume, resulting skew"
    },
    {
      "method": "GET",
      "path": "/api/v35/go?a=<id>",
      "returns": "redirect to a source article by its id, as used in the narratives"
    }
  ],
  "access": "Open, no key, no account, no quota. Everything else under /api/ is closed internals and answers 403 with a JSON body pointing back here.",
  "how_to_cite": "\"As of <fetched_at>, the <asset> news-sentiment index on Positive Search was <blended>\" — always with the timestamp; a value without its moment is wrong the hour after.",
  "links": {
    "openapi": "https://positivesearch.app/openapi.json",
    "machine_summary": "https://positivesearch.app/llms.txt",
    "sitemap": "https://positivesearch.app/sitemap.xml",
    "about": "https://positivesearch.app/about-en",
    "human_page": "https://positivesearch.app/agents-gate",
    "pages": [
      "https://positivesearch.app/bitcoin-sentiment",
      "https://positivesearch.app/gold-sentiment",
      "https://positivesearch.app/oil-sentiment"
    ]
  },
  "contact": "hi@positivesearch.app"
}