Borrowing it
Nothing to install: this file belongs to n1byn1kt/apitap. 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/n1byn1kt/apitap/main/CLAUDE.mdgit clone --depth 1 https://github.com/n1byn1kt/apitapWrote 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/n1byn1kt/apitap/claude-md)<a href="https://agentmods.dev/instructions/n1byn1kt/apitap/claude-md"><img src="https://agentmods.dev/badge/instructions/n1byn1kt/apitap/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/n1byn1kt/apitap/claude-md"><img src="https://agentmods.dev/badge/instructions/n1byn1kt/apitap/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.01922 | $0.01922 |
| Opus 5.5 | $0.00769 | $0.00769 |
| Sonnet 5.5 | $0.00384 | $0.00384 |
| Haiku 4.5 | $0.00192 | $0.00192 |
Grade A, and why
apitap CLAUDE.md scanned grade A with 1 finding 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 1mo 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.
Makes network callslowCapability
Not a fault in itself. Listed so you know the mod talks to something, and to what.
- **SSRF defense is multi-layered**: validated at import, at replay, per redirect hop, and — the enforcement point — inside the connection's own DNS lookup (`validatingLookup`), so the checked address is the connected ad How it starts
The opening of the file, as written. The whole thing — 84 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.
Using ApiTap as an MCP Tool
When asked to fetch data from a website, always check for existing skill files first:
apitap show <domain>— check if a skill file already exists- If it exists → use
apitap replay <domain> <endpoint-id>(no browser needed) - If no skill file → try
apitap read <url>first (text extraction, no browser) - Only use
apitap captureorapitap browseas a last resort (requires browser)
The replay path is the fast path. It calls APIs directly over HTTP — no browser, no Playwright, no Chrome. Don't open a browser if a skill file already exists.
Commands
npm test # Run all tests (~721, Node built-in runner + tsx)
node --import tsx --test test/path/to/test.ts # Run a single test file
npm run typecheck # Type check (tsc --noEmit)
npm run build # Compile to dist/
npx tsx src/cli.ts <command> [args] # Run CLI from source
Architecture
ApiTap intercepts web API traffic via browser, generates portable "skill files," and replays APIs without a browser. Two distinct runtime paths:
Capture path (requires Playwright):
Browser → CDP listener (monitor.ts) → filter.ts → SkillGenerator → skill.json on disk
Replay path (zero dependencies, stdlib node:http):
Skill file → replay/engine.ts → net/transport.ts pinnedFetch() → JSON response
Module Map
src/capture/— Browser-side interception.monitor.tsis the Playwright CDP listener.session.tswraps monitor into a stateful interactive session (used by MCPcapture_start/capture_interact/capture_finish).filter.tsscores requests to separate API calls from noise.parameterize.tsconverts/users/123→/users/:id.src/skill/— Skill file lifecycle.generator.tsgroups captured exchanges, deduplicates bymethod + parameterizedPath, extracts auth/pagination/body templates.store.tsreads/writes~/.apitap/skills/<domain>.json.signing.tsprovides HMAC-SHA256 integrity.ssrf.tsvalidates URLs against private IP ranges.src/replay/—engine.tssubstitutes params, injects auth from encrypted storage, validates URLs via SSRF checks, and callstransport.fetch()(src/net/transport.ts). Auth comes fromAuthManager, never from the skill file itself.src/net/—transport.ts:pinnedFetch(), a fetch-compatible client over node:http(s) whose DNS lookup rejects private addresses at connect time (closes DNS rebinding), never follows redirects, never pools sockets.fetchFollowing()adds fetch-style redirect following where every hop is re-checked and Authorization/Cookie are dropped on cross-origin hops. Every outbound HTTP call goes through here: replay, OAuth refresh, verifier, spec importers (GitHub/APIs.guru/SwaggerHub), and (viasafeFetch) read/peek/discovery.src/discovery/— Browser-free API detection.frameworks.tsdetects WordPress/Next.js/Shopify from HTML/headers.openapi.tsprobes for specs.probes.tschecks common API paths.index.tsorchestrates all three in parallel.src/read/— Text-mode content extraction. Site-specific decoders (Reddit, YouTube, Wikipedia, HN, Twitter, Grokipedia, DeepWiki) indecoders/. Falls back to generic HTML extraction inextract.ts.peek.tsdoes HEAD-only triage.src/auth/—manager.tsstores/retrieves encrypted credentials (AES-256-GCM).refresh.tshandles browser-based token refresh.handoff.tsopens a visible browser for human login.oauth-refresh.tshandles OAuth refresh_token flows.src/orchestration/—browse.tsis the high-level "just get me the data" pipeline (cache → disk → discover → replay).cache.tsis an in-memory session cache for the MCP server.src/cli.ts— Hand-rolled arg parser, all CLI commands. No framework (no yargs/commander).src/mcp.ts— MCP server (12 tools) using@modelcontextprotocol/sdk. All responses from external APIs are wrapped withuntrusted: truemetadata.src/plugin.ts— Lightweight non-MCP plugin interface (search + replay + batch tools).src/serve.ts— Serves a single skill file as a dedicated MCP server where each endpoint becomes its own tool.
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.
- 1mo ago Changed · +54 tokens per session 631ad6624bf2
- 1mo ago Changed · +2 lines · +185 tokens per session 3ab0cfb0ed3f
- 2mo ago First seen · 82 lines · 1,683 tokens per session scan A b40a23a03e8d
apitap CLAUDE.md is an instructions file published in the GitHub repository n1byn1kt/apitap (131 stars, last pushed 17d ago), licensed Apache-2.0. It adds 1,922 tokens to every session, about $0.0077 per session on Opus 5.5. A static security scan graded it A with 1 finding (makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
apitap CLAUDE.md compared with instructions from other repositories
| Mod | Type | Stars | Last push | Licence | Scan | Tokens | Works with |
|---|---|---|---|---|---|---|---|
| apitap CLAUDE.mdn1byn1kt/apitap | Instructions file | 131 | 17d ago | Apache-2.0 | A | 1,922 | Claude Code |
| qmax-mcp copilot-instructions.mdQuality-Max/qmax-mcp | Instructions file | 4 | 4d ago | MIT | A | 451 | GitHub Copilot |
| 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 |