Hottub News
by hottub.news · remote · no sign-in to list tools · v0.1.0 · published by news.hottub
Worldwide news for agents: search, sync and story clusters across outlets and languages. No key.
10 tools: 4 change things and 6 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone0Claude Code: ask
- Changes things4Claude Code: ask: see these tools
- Only reads6Claude Code: allow: see these tools
1 check matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http hottub-news https://hottub.news/mcpFindings
Matches of fixed checks, with the text they matched.
- Warnsync_news
The server marks "sync_news" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "sync_news" says "sync": a word for a change.
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
10 tools
Changes things 4Claude Code: ask
news_statsItem counts over the last 24 hours by kind, language, country and source, plus the current sync cursor.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Item counts over the last 24 hours by kind, language, country and source, plus the current sync cursor.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
newsmapWhat the news covered in a period, for the world or a region: reports counted by publisher country (a choropleth map, as links to SVG and PNG) and the most widely covered stories w…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it What the news covered in a period, for the world or a region: reports counted by publisher country (a choropleth map, as links to SVG and PNG) and the most widely covered stories with outlet counts. Periods: YYYY-MM-DD (UTC day), YYYY-wWW (ISO week), YYYY-MM, or today, yesterday, this-week, last-week, this-month, last-month. Past periods are final and permanent.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
quote_placementQuote for placing a labeled, paid press release in the Hottub News mix via Hottub Business.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Quote for placing a labeled, paid press release in the Hottub News mix via Hottub Business. Price varies by topic tier, current topic interest, demand, targeting reach and duration; the response itemizes each factor. Read-only: returns a price; books and charges nothing.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
sync_newsIncremental feed: returns items added after `after`, oldest first, plus a new cursor.1 finding
Why it is in this group
- The name "sync_news" says "sync": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "sync_news" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "sync_news" says "sync": a word for a change.
Description, as the server wrote it Incremental feed: returns items added after `after`, oldest first, plus a new cursor. Call again with that cursor to get only what is new.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
Only reads 6Claude Code: allow
find_entitiesLook up Wikidata ids for a name (e.g.No findings
Why it is in this group
- The name "find_entities" says "find": a word for reading.
Description, as the server wrote it Look up Wikidata ids for a name (e.g. "Tesla", "Lagos") with how many items mention each in the last 7 days; pass the id as `entity` to search_news or list_stories.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
get_news_itemFull record for one item id (n_… for news, s_… for sponsored).No findings
Why it is in this group
- The name "get_news_item" says "get": a word for reading.
Description, as the server wrote it Full record for one item id (n_… for news, s_… for sponsored).
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
get_storyEvery item in a story (the `story` id on items, st_…): all outlets and languages covering the same event, newest first.No findings
Why it is in this group
- The name "get_story" says "get": a word for reading.
Description, as the server wrote it Every item in a story (the `story` id on items, st_…): all outlets and languages covering the same event, newest first.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
list_sourcesRegistered sources with their language, country, kind and health.No findings
Why it is in this group
- The name "list_sources" says "list": a word for reading.
Description, as the server wrote it Registered sources with their language, country, kind and health. Filter by q (name), country or lang.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
list_storiesThe most widely covered stories right now (last 48h), each with a neutral multi-source brief when available, outlet count, languages, entities and a representative report.No findings
Why it is in this group
- The name "list_stories" says "list": a word for reading.
Description, as the server wrote it The most widely covered stories right now (last 48h), each with a neutral multi-source brief when available, outlet count, languages, entities and a representative report. Filter by lang, country, category, entity.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
search_newsNewest-first headlines from worldwide sources, optionally filtered by words, language, country, topic, source, kind and time.No findings
Why it is in this group
- The name "search_news" says "search": a word for reading.
Description, as the server wrote it Newest-first headlines from worldwide sources, optionally filtered by words, language, country, topic, source, kind and time.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 0.1.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http hottub-news https://hottub.news/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__hottub-news__search_news",
"mcp__hottub-news__list_stories",
"mcp__hottub-news__find_entities",
"mcp__hottub-news__get_story",
"mcp__hottub-news__get_news_item",
"mcp__hottub-news__list_sources"
],
"ask": [
"mcp__hottub-news__sync_news",
"mcp__hottub-news__quote_placement",
"mcp__hottub-news__newsmap",
"mcp__hottub-news__news_stats"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as hottub-news. Review it before you use it.