The Unzoi Event Graph · REST API and MCP server

News your agent can actually use.

One event returns once, with the outlets that covered it and the source each article came through. Query by meaning, filter by language, publisher and source, and call it from your backend or straight from Claude.

1,000 credits a month. No card.

Story 20260910-0731-4f2a

Export licence rules tightened for lithography tools

34 outlets
engdeujpn
first seen 07:31last seen 19:40
41 articles → 1 story credits_charged: 1
An illustration of one story as the API returns it, not a measurement.

The problem

Twenty results, one story

A wire report reaches hundreds of sites within an hour. Search for it and you get all of them back, each ranked as an independent result. A person skims past the repetition. A model reads the same fact twenty times, fills its context, and treats the repetition as corroboration.

Ask for stories instead of articles and that event arrives once, carrying the list of publishers who ran it. Three outlets or thirty — that number tells you more than the article count ever did.

How story grouping works

A normal news API

  • 20 results
  • 14 are the same wire story
  • ? how many outlets ran it
  • ? which languages
  • ? when it started
  • Agent must deduplicate…

Unzoi · one story

  • 1 story
  • 34 outlets carried it
  • 3 languages
  • first seen 07:31, last 19:40
  • story_id, and every article behind it
  • credits_charged: 1

An illustration of one call's shape, not a measurement. Every line on the right is a field in the response, so the agent reads it instead of inferring it.

One call

Ask for stories, not rows

The same filters over REST and MCP, and the same key. A story carries the outlets that ran it, the languages they ran it in, and when it started — so an agent can judge how widely something was covered without reading forty copies of it.

  • One key for the REST API and the MCP server
  • Eighteen tools over the same query surface
  • A credit count on every response, known before it runs

Worked queries for real tasks

MCP · any client

{
  "mcpServers": {
    "unzoi": {
      "url": "https://api.unzoi.com/mcp",
      "headers": { "x-api-key": "your-key" }
    }
  }
}

REST · curl

curl -s -G "https://api.unzoi.com/stories" \
  -H "x-api-key: $UNZOI_API_KEY" \
  --data-urlencode "q=chip export controls" \
  --data-urlencode "mode=hybrid" \
  --data-urlencode "from=2026-09-08"

Response

{
  "stories": [
    {
      "story_id": "20260910-0731-4f2a",
      "title": "Export licence rules tightened for lithography tools",
      "outlets": 34,
      "articles": 41,
      "languages": ["eng", "deu", "jpn"],
      "first_seen": "20260910073100",
      "last_seen": "20260910194000"
    }
  ],
  "total": 12,
  "credits_charged": 1
}

Why this one

Built for tool calls

For architects

Where it sits in your stack

Sources in, one graph of stories and entities in the middle, two surfaces out. Every part carries its status from the same roadmap the documentation follows.

Sources

  • Aggregate metadata feed
  • Publisher and broadcaster feeds
  • Licensed wires
  • Government and institutional feeds

+3 more kinds planned

The Event Graph

  • Stories
  • Entities
  • Relationships
  • Signals
  • Watches
  • Provenance
  • Publisher profiles

Read from the whole article · 4 more parts planned

Surfaces

  • REST API
  • MCP server, 18 tools

Same filters, same key, same credits

Your stack

  • Agents and assistants
  • Backends and pipelines
  • Feeds inside a product

Where it runs

  • Unzoi Cloud
  • Your cloud
  • Private network
  • Disconnected
26languages covered
78karticles indexed
6.7ksources
18MCP tools

Provisional figures, measured from one ingestion adapter’s public feed rather than from the index itself, and regenerated each publication cycle.

The response

What we read, and what we return

Read

The whole article, not the headline

The analysis runs over the whole article, not the headline. Topics, organisations, people, places, amounts, quotes, tone and every signal score are computed from the full text — each article even carries its own word count, and the signals are measured per hundred words of it. A headline-only index cannot tell you that a piece mentions a plant closure in its ninth paragraph; this one can.

Returned

Fields, links and identifiers

What comes back is headline, publisher, timestamp, language, link, a story identifier and everything derived from that reading. Not article bodies — those stay with the publishers who wrote them, and you stay clear of the licensing questions that follow full text around.

Small responses suit agents well

A model choosing what to read next needs to compare candidates, not consume them, and a compact result set lets it weigh far more options for the same budget. When one of them matters, its story identifier expands into the whole story in one call: every article, every outlet, first and last seen. Filters are exact, so a name resolves first to the spellings the index holds, grouped with counts. Other filters take a radius around a point or a class of event, such as a bankruptcy or a strike. The resolved id also shows who is reported alongside it, with the articles behind every connection.

Recipes

Start here

Limits

Where this is the wrong choice

You need the full text of articles

If your application needs the full text of articles, this is not the foundation for it and no plan changes that — license text from the publishers directly.

A person reads the feed

If your reader is a person scanning a feed and duplicate coverage does not bother them, simpler and cheaper options exist and the grouping you are paying attention to here is solving a problem you do not have.

Front pages, or country first

If you need newspaper front pages, or country filtering as the primary axis of your product today, other vendors are stronger and the comparison pages say which and why.

A regulatory screening obligation

If you have a regulatory screening obligation, buy a screening vendor: this is a news index, with no list coverage, no resolution against a registry and none of the audit guarantees that obligation carries.

Deciding what is true

It is also not an evidence product: it says what was reported and by whom, not whether it is true. There is no source reliability score today, and separating independent reporting from one wire carried by many outlets is not something it does yet.

A news index tells you what is being reported, which is narrower than it sounds.

The general shape of the limit is worth stating once. It is silent on what is true, on what is planned, and on everything that happened without anyone writing about it. It is a timeliness instrument rather than a completeness one, and most disappointment with this category comes from buying it as the second thing. Each solution page names the limit for its own job, which is usually the part that decides whether it fits.