# Geotone — Global News Signals

> Live global news signals: ranked wire, story timelines, coverage volume/tone/surges. Free, no auth.

- name: news.geotone/geotone
- version: 1.4.0
- connection class: R0 (autonomous)
- trust: 82/100 flags: no-repository
- quality: 94/100 (strong)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/news.geotone%2Fgeotone
- tools: https://api.protogrid.dev/v1/servers/news.geotone%2Fgeotone/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "geotone": {
      "type": "http",
      "url": "https://geotone.news/mcp"
    }
  }
}
```


## Trust

- hygiene: 80
- liveness: 99
- freshness: 100
- provenance: 55
- drivers: +dns-namespace +website +reachable +uptime-97% +updated-0d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 94/100 (strong)

### protocol: 100 (weight 25)

- pass `protocol.modern`: supports 2026-07-28 (server/discover)
- pass `protocol.stateless`: answers without a session
- pass `protocol.transport`: streamable HTTP
- pass `protocol.list_ttl`: tool list is cacheable (ttlMs 3600000)

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 86 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 9 of 9 tools declare readOnlyHint or destructiveHint
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: get_trending (destructiveHint, idempotentHint); get_topic (destructiveHint, idempotentHint); get_country (destructiveHint, idempotentHint); …
- pass `tools.token_cost`: about 1,392 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 100 (weight 15)

- pass `stability.changes`: 1 tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 9, about 1,392 tokens to load them all
- tool set hash: 3cbf573ca3a560cf0ce2f123b13ef493
- tools last changed: 2026-10-06T14:39:13.492Z
- badge: [![protogrid quality](https://protogrid.dev/badge/news.geotone/geotone.svg)](https://protogrid.dev/servers/news.geotone/geotone)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-06 `get_outbreaks` added
  - Disease outbreak events indexed from the WHO Disease Outbreak News (facts and links; WHO's assessments live at the linked pages), each with Geotone's measured news attention: articles carrying the disease in GDELT's thematic tagging across all languages, trailing 14 days vs the prior 14. status 'active' means a WHO update within 90 days; outbreaks are never marked ended by feed disappearance. DON covers internationally significant events and is not exhaustive — absence here is not absence of disease.

Full history: https://api.protogrid.dev/v1/servers/news.geotone%2Fgeotone/changes

## Remotes

- https://geotone.news/mcp (streamable-http, auth none, reachable true, uptime30d 0.9655172)

## Packages

_none_

## Tools (9)

- `get_briefing`: Geotone's daily global risk briefing for a date (YYYY-MM-DD): an analytical summary of coverage surges, tone shifts, and notable movers, with the statistics behind each claim.
- `get_country`: Live media-coverage statistics for one country by ISO-3166 alpha-2 code (e.g. 'ua', 'cn'): daily series (latest 30 days by default; response_format='detailed' for 90) of coverage volume (share of world news coverage that is about that country) and tone, plus armed-conflict fatalities (UCDP, trailing 12 months), displacement stocks (UNHCR: IDPs, refugees, asylum seekers), and coverage origin (what share of coverage about the country is produced by its own outlets vs abroad).
- `get_outbreaks`: Disease outbreak events indexed from the WHO Disease Outbreak News (facts and links; WHO's assessments live at the linked pages), each with Geotone's measured news attention: articles carrying the disease in GDELT's thematic tagging across all languages, trailing 14 days vs the prior 14. status 'active' means a WHO update within 90 days; outbreaks are never marked ended by feed disappearance. DON covers internationally significant events and is not exhaustive — absence here is not absence of disease.
- `get_relation`: Bilateral co-coverage signal for a monitored country pair (e.g. a='cn', b='us'): how much the world's press mentions the two countries together, and in what tone. ~50 strategic pairs are monitored.
- `get_story_chain`: A story timeline: the threaded developments of one multi-day event chain, oldest first (e.g. attack → casualties confirmed → international reaction). Use the chain_id values returned by get_wire. Each development is a headline + link + outlet count + tone.
- `get_topic`: Live media-coverage statistics for one geopolitical topic (e.g. 'ukraine-war', 'taiwan-strait', 'sanctions'): daily volume and tone series, z-score, week-over-week change, and a sample of recent articles (headline+link only). Returns the latest 30 days by default; pass response_format='detailed' for the full 90. Use search_topics to find slugs.
- `get_trending`: What's surging in global news right now: topics whose coverage is ≥2 standard deviations above their trailing average (z-score), the biggest week-over-week movers, and surging countries. Derived every 3 hours from GDELT across 65+ languages.
- `get_wire`: The live wire: the world's most significant stories right now, ranked by a published formula (authority-weighted outlet breadth, boosted by consequence themes, coded events, and casualty figures, decayed by recency over 72h). Each story carries one representative link, outlet count, tone, countries, non-English source languages that also reported the event, and a chain_id when it belongs to a multi-day story timeline (fetch with get_story_chain). Reclustered every 3 hours.
- `search_topics`: Search Geotone's tracked geopolitical topics by keyword (matches name, slug, and description). Returns slugs usable with get_topic, plus each topic's current coverage stats.
