Hanging Context MCP
Read Hanging Context stories from your agent. Search them, get new stories since your last call, or get them pushed to a webhook. Each fact cites a Synorb Manifest. No key is necessary.
Connect
The server URL is https://hangingcontext.com/mcp. The transport is Streamable HTTP. There is no sign-in.
Claude Code
claude mcp add --transport http hangingcontext https://hangingcontext.com/mcp
Claude Desktop
Open Settings, then Connectors, then add a custom connector with the server URL. Or add this to claude_desktop_config.json:
{
"mcpServers": {
"hangingcontext": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://hangingcontext.com/mcp"]
}
}
}
Cursor
Add this to ~/.cursor/mcp.json:
{
"mcpServers": {
"hangingcontext": { "url": "https://hangingcontext.com/mcp" }
}
}
Windsurf
Add this to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"hangingcontext": { "serverUrl": "https://hangingcontext.com/mcp" }
}
}
VS Code
Add this to .vscode/mcp.json:
{
"servers": {
"hangingcontext": { "type": "http", "url": "https://hangingcontext.com/mcp" }
}
}
Tools
There are 10 tools. Eight are read-only. Two manage a webhook. Every response has a freshness block and a next_step hint.
hc_ask: answer a question from recent stories. Returns up to 5 facts, copied word for word, each with its story URL and Manifest ids. Start here.hc_latest: the latest stories, newest first. Filter bytopicorbeat.hc_since: only the stories that are new since your last call. See the cursor rules below.hc_search: keyword search over recent stories.hc_get_story: one story asbrief,full(Markdown) orclaims(JSON with Manifest ids).hc_sources: for each cited Manifest, its original title, URL, source and publication time, and the facts that use it.hc_topics: the topics, their beats and sources, story counts for the last 24 hours, and what the server does not cover.hc_subscribeandhc_unsubscribe: watch a topic. New stories are sent to your HTTPS webhook.hc_about: what Hanging Context is, how stories are checked, and the reuse rules.
Prompts and resources
- Prompt
morning_brief: a brief of the latest stories. Thetopicargument is optional. - Prompt
what_changed: the stories that are new for a topic in the last N hours. - Resource
hc://latestandhc://topics/{slug}/latest. You can subscribe to both. The server sendsnotifications/resources/updatedwhen a new story is published. The old URIshc://editions/latestandhc://newsrooms/{slug}/lateststill work.
The cursor rules for hc_since
- A cursor is a number in a string. It only grows.
- Call
hc_sincewith no cursor. You get the current cursor and no stories. - Call it again with
next_cursorfrom the last response. You get only the stories published after that point. - A story is never returned twice. If
has_moreis true, call again at once. - A
topicfilter does not break the chain. The cursor moves past the stories that the filter drops.
Examples
1. Ask a question
Prompt: "What did the cloud providers say about capex?" The agent calls hc_ask with question set to that text.
{
"question": "What did the cloud providers say about capex?",
"no_match": false,
"facts": [
{
"text": "Provider X raised its capex guidance for the year.",
"story_url": "https://hangingcontext.com/stories/2026-10-13/cloud-providers-raise-capex/",
"story_slug": "cloud-providers-raise-capex",
"published_at": "2026-10-13T01:10:00Z",
"manifest_ids": ["9990000000000000601", "9990000000000000603"],
"match": "key_fact"
}
],
"stories": [ { "slug": "cloud-providers-raise-capex", "trust": "confirmed", "source_count": 2 } ],
"freshness": {
"as_of": "2026-10-13T10:44:00Z",
"next_update_at": "2026-10-13T12:00:00Z",
"newest_source_at": "2026-10-12T23:00:00Z"
},
"next_step": "Call hc_get_story with a slug to read more, or hc_sources to check the Manifests behind a fact."
}
2. Follow a topic
Prompt: "Tell me about new stories since I last asked." The agent keeps the cursor between calls.
hc_since {} -> { "next_cursor": "11", "stories": [] }
(later) hc_since { "cursor": "11" } -> {
"count": 1,
"stories": [ { "slug": "agent-frameworks-one-tool-schema", "seq": 12, "trust": "confirmed" } ],
"next_cursor": "12",
"has_more": false
}
3. Check a story
Prompt: "Where does the capex story get its facts?" The agent calls hc_sources with the story slug.
{
"slug": "cloud-providers-raise-capex",
"trust": "confirmed",
"distinct_sources": 2,
"manifests": [
{
"manifest_id": "9990000000000000601",
"title": "Provider X earnings call transcript",
"publisher": "Earnings transcripts",
"source_url": "https://example.com/transcripts/provider-x",
"published_at": "2026-10-12T22:00:00Z",
"used_in": { "key_facts": ["f1"], "paragraphs": ["s1p1"] },
"check_url": "https://api.synorb.com/manifests/by-id/9990000000000000601"
}
],
"check_it_yourself": [
"Find the Manifest ids in this response.",
"Get a Synorb Key at https://synorb.com/connect.",
"Send GET https://api.synorb.com/manifests/by-id/{id} with the header 'Authorization: Bearer <your key>'.",
"Compare the fact with the Manifest and its source link."
]
}
Limits
Calls are limited for each IP address. If you reach the limit, the error says how many seconds to wait. Stories are rebuilt at 00:00 and 12:00 UTC. The freshness block of each response gives the next update time.
Reuse
You can quote, summarize and republish stories, also for commercial use. Credit Hanging Context, link to the story, and keep the Manifest ids. See the reuse terms. Each response carries them in a reuse field.
Check a claim yourself
Find the Manifest ids in the story. Get a Synorb Key at synorb.com/connect. Send GET https://api.synorb.com/manifests/by-id/{id} with the key. Compare the fact with the Manifest and its source link.
For registries
The server card is at /.well-known/mcp/server-card.json. It needs no sign-in.