Mynews — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Mynews (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
A multi-topic news aggregator that doubles as an API your AI agents can read. One small Express server pulls RSS for 16 topics, serves a designed browser feed, and exposes the same data as a REST + MCP API — including full readable article text, not just headlines. No API keys required.
Live: https://mynews-nine.vercel.app · Repo: https://github.com/iamvazghen/mynews
/ landing page
/dashboard.html the live feed — filter, sort by newest/category, timeframe, search
/api/* the agent API (REST), also exposed over MCP via mcp.jsA focused full-stack project that solves a real problem I have: I read across ~16 unrelated topics, and I want my own agents to read them too. It demonstrates:
It's deliberately small: ~1 backend file, 1 feed-config file, a static frontend, and an MCP shim.
npm install
npm start # → http://localhost:3000
npm test # unit checks for reading-time + filter/sortThe feed is live immediately — every card shows when it dropped and how long it takes to read; sort by newest or category, pick a timeframe, search.
Everything goes through `feeds.js` — the only file you edit. Each category is { slug, label, feeds: [rss urls] }. A dead/blocked URL is silently skipped, so the page never breaks; swap it when convenient.
feeds array.{ slug, label, feeds } object. Frontend, API and chips pick it up automatically./feed/, /rss, or /feed.xml. Topics without first-party RSS use Hacker News query feeds (hnrss.org/newest?q=...).RSS covers all 16 topics today, so nothing is needed to run or deploy. Add a key only if you want more than a source's feed exposes — each is a small change:
| Want | Source | Key |
|---|---|---|
| Broad multi-source headlines | NewsAPI / GNews | free tier |
| Trending repos (richer than the RSS mirror) | GitHub GET /search/repositories?sort=stars | a PAT |
| Reddit topic feeds | reddit.com/r/<sub>/.rss | none (already RSS) |
| Crypto prices alongside news | CoinGecko | none |
Store keys as env vars (add dotenv) — never hardcode them.
CORS is open, so any agent or page can call it.
GET /api/categories
→ [{ slug, label }, ...]
GET /api/news?category=ai,crypto&since=24&sort=newest&q=bitcoin&limit=50
category comma-separated slugs (omit = all)
since only items from the past N hours (0 = all time)
sort newest | category
q keyword filter on title + snippet
limit max items (default 200, cap 500)
→ { count, totalReadingMinutes, items: [{ title, link, source,
category, publishedAt, readingMinutes, snippet, image }] }
GET /api/article?url=<article-url>
→ { url, title, author, published, source, wordCount, readingMinutes, content }
full readable body text, boilerplate stripped — what an agent reads to summarize a storycurl "https://mynews-nine.vercel.app/api/news?category=agents,ai&since=24&limit=10"
curl "https://mynews-nine.vercel.app/api/article?url=https://www.theverge.com/some-story"The API is public and keyless, so wiring any agent takes three steps.
https://mynews-nine.vercel.app/api.GET /api/news?category=ai,crypto&since=24 → titles, sources, timestamps, read-time.GET /api/article?url=<link from step 2> → clean body text to summarize.That's enough for any framework (LangChain, a custom tool, a cron + curl). For MCP-native agents, use the bundled server instead of raw HTTP:
npm i @modelcontextprotocol/sdk zod
NEWS_API=https://mynews-nine.vercel.app node mcp.js # speaks MCP over stdioIt exposes three tools: get_news, get_article, list_categories.
Add one block to ~/.openclaw/openclaw.json under mcp.servers, then restart the gateway — every agent gains the three tools:
"mynews": {
"command": "/usr/bin/node",
"args": ["/home/openclaw/newsfeed/mcp.js"],
"env": { "NEWS_API": "https://mynews-nine.vercel.app" }
}A morning-news cron then calls get_news for the day's headlines and get_article for the full text of each story it wants to summarize — no scraping glue.
api/index.js + vercel.json); public/ is the static site. Auto-deploys on push to main.--user unit (newsfeed.service, Restart=always) on port 3000. Manage with systemctl --user restart|status newsfeed and journalctl --user -u newsfeed -f.server.js — API + cache + reading-time + article extractionfeeds.js — the 16 categories → RSS URLs (edit this)public/ — Cobalt-themed landing + feed (index.html, dashboard.html, app.js, styles.css, landing.css, tokens.css)api/index.js + vercel.json — Vercel serverless wiringmcp.js — MCP server (get_news / get_article / list_categories)test.js — unit checks~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.