Borrowing it
Nothing to install: this file belongs to EventRegistry/newsapi-mcp. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/EventRegistry/newsapi-mcp/main/CLAUDE.mdgit clone --depth 1 https://github.com/EventRegistry/newsapi-mcpWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/instructions/eventregistry/newsapi-mcp/claude-md)<a href="https://agentmods.dev/instructions/eventregistry/newsapi-mcp/claude-md"><img src="https://agentmods.dev/badge/instructions/eventregistry/newsapi-mcp/claude-md/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/instructions/eventregistry/newsapi-mcp/claude-md"><img src="https://agentmods.dev/badge/instructions/eventregistry/newsapi-mcp/claude-md.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.01304 | $0.01304 |
| Opus 5.5 | $0.00522 | $0.00522 |
| Sonnet 5.5 | $0.00261 | $0.00261 |
| Haiku 4.5 | $0.00130 | $0.00130 |
Grade A, and why
newsapi-mcp CLAUDE.md scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 28d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 67 lines — stays where its author put it; the contents beside it link to each section on GitHub.
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Commands
npm run build # TypeScript compilation (tsc)
npm run build:bundle # Production single-file bundle (esbuild → dist/index.js)
npm run build:http # Hosted server bundle (esbuild → dist/http.js, used by Dockerfile)
npm run dev # Dev mode with tsx hot reload
npm test # Run all tests (vitest)
npm run test:watch # Tests in watch mode
npx vitest run tests/formatters.test.ts # Run single test file
CI runs on [ubuntu, windows, macos] × [node 20, 22]. Publishing uses npm publish --provenance triggered by GitHub releases.
Architecture
MCP server for NewsAPI.ai (Event Registry). Provides 8 tools: one search tool (kind: articles, events, mentions), detail lookups, topic pages, suggest and usage.
Two entry points share createServer() from src/server.ts:
- Local server —
src/index.ts, stdio. Logs in to Event Registry through a loopback browser flow (src/oauth.ts) unlessNEWSAPI_KEYselects API-key mode;login/logoutsubcommands manage the stored tokens. Published to npm. - Hosted server —
src/http.ts, stateless Streamable HTTP (freshMcpServerper request), login run by the MCP client. Verifies JWT access tokens, then runs the request insidewithAccessToken()soclient.tssendsAuthorization: Bearerinstead of the API key. Shipped as a Docker image, not in the npm package.
Request Flow
MCP Client → McpServer (SDK) → ToolRegistry handler → apiPost() → NewsAPI.ai
↓
Response Filter (strip fields)
↓
Formatter (JSON → text, optional)
↓
MCP Response back to client
Key Modules
src/client.ts— HTTP client.apiPost()for main API. Injects the API key, the local login's bearer token (renewed once and retried on 401), or the hosted caller's bearer token when insidewithAccessToken()(AsyncLocalStorage).authMode()tells the error formatter which guidance to give.src/oauth.ts— Local login:OAuthSession(PKCE code flow on fixed loopback ports, single-flight refresh with rotation), token stores (@napi-rs/keyring, file fallback), OpenID discovery shared withhttp.ts.src/http.ts— Hosted server: express app, protected-resource metadata,requireBearerAuthwith ajoseJWT verifier,/healthz. Config fromMCP_PUBLIC_URL,MCP_AUTH_ISSUER,PORT.src/query.ts— Search request builder shared by the search tools: expands comma lists, folds flat filters into an advancedquery($andleaf,ignore*→$not,$filter), normalises arrays to{"$or"}, auto-detects boolean keyword strings (keywordSearchMode: exact) and applies the 31-day default window; returnsnotesthe registry prints under the result.src/tools/registry.ts—ToolRegistryclass. Registers all tools at startup.buildZodShape()converts JSON Schema → Zod for MCP SDK registration.src/response-filter.ts— Token optimization.includeFieldsparam maps to API include params + post-response field stripping.filterResponse()preserves pagination metadata.src/formatters.ts— Converts JSON responses to compact text. All tools with formatters output human-readable numbered text.src/tools/search.ts— Thesearchtool: assembles the schema from the shared filters plus each kind'sSearchKindconfig (articlesKind,eventsKind,mentionsKindin their own files), tags kind-only params in their descriptions, maps the genericpage/count/sortByto the API's per-kind names and rejects params the chosen kind does not accept.src/tools/*.ts— Tool definitions asToolDefobjects withname,description,schema(JSON Schema),handler, and optionalformatter.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 28d ago Changed · +10 lines · +679 tokens per session e9659aa9a155
- 2mo ago First seen · 57 lines · 625 tokens per session scan A b38b323e6f58
newsapi-mcp CLAUDE.md is an instructions file published in the GitHub repository EventRegistry/newsapi-mcp (3 stars, last pushed 10d ago), licensed MIT. It adds 1,304 tokens to every session, about $0.0052 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
newsapi-mcp CLAUDE.md compared with instructions from other repositories
| Mod | Type | Stars | Last push | Licence | Scan | Tokens | Works with |
|---|---|---|---|---|---|---|---|
| newsapi-mcp CLAUDE.mdEventRegistry/newsapi-mcp | Instructions file | 3 | 10d ago | MIT | A | 1,304 | Claude Code |
| vscode buildNext.instructions.mdmicrosoft/vscode | Instructions file | 195k | yesterday | MIT | A | 9,719 | GitHub Copilot |
| next.js AGENTS.mdvercel/next.js | Instructions file | 143k | yesterday | MIT | A | 7,461 | Codex, OpenCode |
| langchain AGENTS.mdlangchain-ai/langchain | Instructions file | 149k | yesterday | MIT | A | 4,680 | Codex, OpenCode |
| vscode oss-third-party-notices.instructions.mdmicrosoft/vscode | Instructions file | 195k | yesterday | MIT | A | 5,516 | GitHub Copilot |
| vscode copilot-instructions.mdmicrosoft/vscode | Instructions file | 195k | yesterday | MIT | A | 3,093 | GitHub Copilot |
| deepseek-harness AGENTS.mddeepseek-ai/deepseek-harness | Instructions file | 274k | 2d ago | MIT | A | 4,313 | Codex, OpenCode |