Agents · JSON twins

Every panel has a JSON twin.

No API keys, no rate limits, no auth. Hanging Context is temporal context for agents and reasoning systems: claims from primary primitives, rendered as visual panels for inspection and JSON twins for use. The snapshots below power the homepage panels and are rebuilt every 12 hours, served as flat files from a CDN. The full firehose — live delivery, per-manifest briefs, signals, and record metadata — lives at api.synorb.com under a paid plan. What's here is the tip.

Endpoints

These are the exact endpoints the homepage panels consume. Every page at /data/* also ships a <link rel="alternate" type="application/json"> in its head so agents can discover the JSON twin by parsing HTML.

Data shape

Snapshots are intentionally flat. No nested pagination, no cursor tokens. If it doesn't fit in one JSON, the window is too wide. Here's a trimmed skeleton of /data/windows/24h.json — the same shape applies to the 168-hour snapshot (7d.json):

{
  "schema_version": 1,
  "window": "24h",
  "window_label": "Last 24 hours",
  "window_hours": 24,
  "window_coverage": "rolling",
  "range": { "start": "2026-04-21T...", "end": "2026-04-22T..." },
  "as_of": "2026-04-22T01:48:00Z",
  "refresh_analysis": {
    "comparison_basis": "rolling_window_vs_previous_build",
    "summary": "Since the previous refresh, the rolling claim count rose..."
  },

  "totals": {
    "claims": 20464,
    "manifests": 2564,
    "records": 2564,
    "sources": 100,
    "entities": 0,
    "domains": 9
  },

  "claims_by_day": [
    { "day": "2026-04-21T01:00:00Z", "claims": 847 },
    { "day": "2026-04-21T02:00:00Z", "claims": 912 }
  ],

  "top_sources": [
    { "source_name": "codename-one-engineering-blog",
      "claim_count": 6288, "record_count": 759, "manifest_count": 759 }
  ],

  "top_entities": [
    { "tag_id": 123, "name": "Anthropic", "type": "organization",
      "claim_count": 412, "slug": "anthropic" }
  ],

  "claim_types":       { "publication": 42100, "announcement": 38211 },
  "evidence_types":    { "paraphrase": 13294, "direct_quote": 6842 },
  "confidence_levels": { "stated": 19285, "implied": 652 },
  "sentiment_levels":  { "neutral": 11483, "positive": 6021, "mixed": 1884 },
  "domains":           { "engineering-technology": 14897 },

  "tag_graph": {
    "nodes": [ { "id": 1, "name": "LLM", "type": "topic", "weight": 420 } ],
    "edges": [ { "a": 1, "b": 2, "weight": 87 } ]
  },

  "highlights": [
    { "claim_id": 123,
      "text": "Anthropic released Claude Opus 4.7 with a 1M-token context window.",
      "source": "anthropic-news",
      "source_url": "https://anthropic.com/...",
      "published_date": "2026-04-21",
      "evidence_type": "direct_quote",
      "confidence": "stated",
      "domain": "engineering-technology",
      "entities": [ { "name": "Anthropic", "type": "organization" } ]
    }
  ],

  "verified_samples": [
    { "claim_id": 456,
      "text": "OpenAI said developers can now inspect per-run retrieval traces in the console.",
      "source": "openai-news",
      "source_display": "OpenAI",
      "source_url": "https://openai.com/...",
      "source_channel_display": "OpenAI",
      "published_date": "2026-04-22T00:45:00Z",
      "verified_at": "2026-04-22T01:12:00Z",
      "sentiment": "positive",
      "confidence": "stated",
      "evidence_type": "direct_quote",
      "media_type": "text",
      "claim_type": "publication"
    }
  ],

  "samples": [ /* 60 recent claims, any confidence */ ]
}
Minimal subscribe

Poll hourly and diff — or parse the as_of field to detect fresh builds:

import urllib.request, json, time

def pull():
    with urllib.request.urlopen("https://hangingcontext.com/data/windows/24h.json") as r:
        return json.load(r)

last_as_of = None
while True:
    snap = pull()
    if snap["as_of"] != last_as_of:
        print(f"fresh: {snap['totals']['claims']} claims, {snap['totals']['sources']} sources")
        for h in snap["highlights"][:3]:
            print(f"  - {h['text']} ({h['source']})")
        last_as_of = snap["as_of"]
    time.sleep(3600)
Honest limits
What's not here

Per-manifest brief + signal + claims + record metadata are the paid surface at api.synorb.com — including real-time delivery over REST, MCP, S3 export, or WebSocket firehose. Hanging Context shows you the kind of thing the pipeline produces; the API is how you act on it continuously.