# baba News by baba Hebrew

> Israeli news in Hebrew and English: stories, sources, comparisons, coverage gaps, people and trends.

- name: io.github.isaachorowitz/baba-news
- version: 1.0.0
- connection class: R1 (autonomous)
- trust: 96/100
- quality: 83/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.isaachorowitz%2Fbaba-news
- tools: https://api.protogrid.dev/v1/servers/io.github.isaachorowitz%2Fbaba-news/tools

**An agent can connect on its own if it already holds `BABA_NEWS_TOKEN`.** Remote endpoint behind a static API key or header. The registry never sees the value; the agent fills the placeholder.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "baba-news": {
      "type": "http",
      "url": "https://news.itsbaba.com/mcp",
      "headers": {
        "Authorization": "Bearer ${BABA_NEWS_TOKEN}"
      }
    }
  }
}
```

Placeholders to fill: `${BABA_NEWS_TOKEN}`.

## Trust

- hygiene: 100
- liveness: 98
- freshness: 100
- provenance: 90
- drivers: +repository +namespace-matches-repo +website +reachable +uptime-94% +updated-24d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 83/100 (good)

### 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`: 16 of 16 tools declare readOnlyHint or destructiveHint
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: stories_list (idempotentHint); stories_get (idempotentHint); people_list (idempotentHint); …
- pass `tools.token_cost`: about 3,357 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 50 (weight 15)

- pass `stability.changes`: 3 tool changes in 30 days
- fail `stability.rug_pull`: 1 tools kept their name but changed most of their description in 30 days; review before trusting them

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

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

- tools: 16, about 3,357 tokens to load them all
- tool set hash: a652ffeba859fc80c88d5947d9bf5869
- tools last changed: 2026-10-02T11:44:58.027Z
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.isaachorowitz/baba-news.svg)](https://protogrid.dev/servers/io.github.isaachorowitz/baba-news)
- 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-02 `stories_members` changed (inputSchema)
- 2026-10-02 `blindspots_list` changed (inputSchema)
- 2026-09-30 `trending_list` changed (title, description) **meaning changed**
  - before: Stories picking up speed. Requires the stories API scope. English is the fallback for untranslated fields.
  - after: Newsroom momentum ranked by an explicit computed metric (newsroom-momentum-v1). Requires the stories API scope. English is the fallback for untranslated fields.

Full history: https://api.protogrid.dev/v1/servers/io.github.isaachorowitz%2Fbaba-news/changes

## Remotes

- https://news.itsbaba.com/mcp (streamable-http, auth api_key ${BABA_NEWS_TOKEN}, reachable true, uptime30d 0.9444444)

## Packages

_none_

## Tools (16)

- `blindspots_list`: Coverage gaps, by camp.  Requires the stories API scope. English is the fallback for untranslated fields.
- `brief_get`: Today in Brief.  Requires the brief API scope. English is the fallback for untranslated fields.
- `changes_list`: Incremental change feed.  Requires the stories API scope. English is the fallback for untranslated fields.
- `people_get`: One person, with every spelling folded into them. Identity and aliases. recentCoverage is always null: resolving a person to their stories has no index behind it today, and the field is in the contract so filling it later is additive. Requires the people API scope. English is the fallback for untranslated fields.
- `people_list`: People in the last 24 hours.  Requires the people API scope. English is the fallback for untranslated fields.
- `search_list`: Search stories.  Requires the search API scope. English is the fallback for untranslated fields.
- `sources_activity`: Measured newsroom behaviour. What a newsroom did rather than what its profile says it is: crawl outcomes over the window, and the byline, originality, opinion, press-release and filing-lag rates the profile cron computed over its own 30-day window. successRate is over finished runs only, so a crawl still in flight never reads as a failure. Requires the sources API scope. English is the fallback for untranslated fields.
- `sources_get`: One newsroom, with profile when computed.  Requires the sources API scope. English is the fallback for untranslated fields.
- `sources_list`: List newsrooms.  Requires the sources API scope. English is the fallback for untranslated fields.
- `stories_get`: Story detail: members, timeline, framing.  Requires the stories API scope. English is the fallback for untranslated fields.
- `stories_list`: List stories.  Requires the stories API scope. English is the fallback for untranslated fields.
- `stories_members`: Every article in a cluster, paged. The same member records /v1/stories/{ckey} returns, but paged and filterable by side or lean. side and lean come from the source registry rather than the row, so a filtered page can be shorter than its limit while still issuing a cursor. Requires the stories API scope. English is the fallback for untranslated fields.
- `threads_get`: One running story and its whole arc. Every instalment we still hold, newest first, in the same shape as a story on /v1/stories. The arc is bounded by limit and returned whole rather than paged. Requires the stories API scope. English is the fallback for untranslated fields.
- `threads_list`: List running stories.  Requires the stories API scope. English is the fallback for untranslated fields.
- `topics_list`: The desk register with live volume.  Requires the sources API scope. English is the fallback for untranslated fields.
- `trending_list`: Newsroom momentum ranked by an explicit computed metric (newsroom-momentum-v1).  Requires the stories API scope. English is the fallback for untranslated fields.
