toolspace › registry › Muninn news_watch
Muninn news_watch
Watch claude.com/blog for new posts during Daily Perch. Pure parsing + watermark state; HTTP fetching is delegated to the caller's web_fetch tool (claude.com WAFs raw container egress).
Install
install-manifest install https://raw.githubusercontent.com/oaustegard/muninn-utilities/main/manifests/news-watch/muninn-news-watch.v0.4.json
manifest JSON · source · docs · issues · homepage
Security
| Kill switch | manual Manual procedure: — |
|---|---|
| Smoke contract | shell timeout 5s |
Scopes
-
memory.trackingread, write turso-libsql-token (coarse; full DB access)Reads and writes a single watermark value in the Turso config table (key 'claude-blog-last-seen-iso', category 'ops') so consecutive perch runs only surface posts newer than the last-seen date.
-
net.outboundread, write *.turso.ioTalks to the configured Turso libSQL host for watermark state. No direct HTTP fetches against claude.com or any caller-supplied URL — fetching is the caller's responsibility via web_fetch.
Data boundary
Reads
memory.trackingsensitivity: low
Persists
—
Tool-local retention: 365 day(s).
Actions
-
parse_claude_blog none idempotent
Extract blog posts from the rendered content of claude.com/blog. Pure parse — no I/O.
- Goal
- Parse a fetched copy of claude.com/blog into structured post records.
- Inputs
content (req: rendered blog-index page; markdown or HTML — the regex shape matches either)- Outputs
{posts: [{url, title, date (YYYY-MM-DD), category}]}- Errors
(none — returns an empty list on parse miss)- Example
parse_claude_blog content='...blog page text...'
-
filter_new none idempotent
Return posts strictly newer than the watermark. Read-only, pure compute.
- Goal
- Filter parsed posts down to those newer than the watermark.
- Inputs
posts (req: from parse_claude_blog), last_seen (ISO date or null)- Outputs
{new_posts: [...]}- Errors
(none — pure compute)- Example
filter_new posts=[...] last_seen='2026-05-20'
-
get_last_seen read idempotent
Read the last-seen ISO date watermark from Turso config. ·
memory.trackingnet.outbound- Goal
- Fetch the watermark for the next perch run.
- Inputs
key (optional, default 'claude-blog-last-seen-iso')- Outputs
{last_seen: string|null}- Errors
tracking_unconfigured- Example
get_last_seen
-
set_last_seen write idempotent
Write the last-seen ISO date watermark to Turso config under category 'ops'. ·
memory.trackingnet.outbound- Goal
- Advance the watermark to the supplied ISO date.
- Inputs
iso (req: YYYY-MM-DD), key (optional, default 'claude-blog-last-seen-iso')- Outputs
{stored: bool}- Errors
tracking_unconfigured, iso_invalid- Example
set_last_seen iso='2026-05-27'
-
format_for_report none idempotent
Render new posts as HTML <li> rows for the perch report. Pure compute, read-only.
- Goal
- Format filtered posts for the perch HTML report.
- Inputs
new_posts (req: list from filter_new)- Outputs
{html: string}- Errors
(none — pure compute)- Example
format_for_report new_posts=[{url, title, date, category}]
Environment
TURSO_TOKEN |
Turso libSQL auth token for the Muninn memory database. Required for the watermark read/write (get_last_seen / set_last_seen route through `scripts.config_get`/`config_set`, which uses these credentials). Treat as a secret. required · secret: yes · obtain |
|---|---|
TURSO_URL |
Hostname of the Muninn memory libSQL database, e.g. 'mydb-username.turso.io'. required · secret: no |
Verify & cost
| Install fee | 0¢ |
|---|---|
| Monthly fee | 0¢ |
| Usage model | none |
Runtime
runtime: python-module · install method: preinstalled · entrypoint: python -m muninn_utils.news_watch
Five functions: parse_claude_blog(content) extracts post links, dates and categories from rendered blog-index content; filter_new(posts, last_seen) returns posts strictly newer than the watermark; get_last_seen/set_last_seen read and write a single ISO date in Turso config (key 'claude-blog-last-seen-iso', category 'ops'); format_for_report(new_posts) renders HTML <li> rows for the perch report. First run (last_seen is None) returns no new posts so the seed run doesn't alert on already-historical content; the watermark advances even when no new posts are found to avoid re-scanning the same back-window. The tool itself does NOT make outbound HTTP fetches against claude.com — that's the caller's web_fetch (claude.com 403s raw HTTP from container egress); the tool only parses content the caller already fetched and reads/writes the watermark in Turso.
Tags: newswatermarkclaude-blogparsingperch
License: MIT
Last fetched 2026-06-18T09:09:16Z (live)