Borrowing it
Nothing to install: this file belongs to peturgeorgievv-factory/postfast-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/peturgeorgievv-factory/postfast-mcp/main/CLAUDE.mdgit clone --depth 1 https://github.com/peturgeorgievv-factory/postfast-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/peturgeorgievv-factory/postfast-mcp/claude-md)<a href="https://agentmods.dev/instructions/peturgeorgievv-factory/postfast-mcp/claude-md"><img src="https://agentmods.dev/badge/instructions/peturgeorgievv-factory/postfast-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/peturgeorgievv-factory/postfast-mcp/claude-md"><img src="https://agentmods.dev/badge/instructions/peturgeorgievv-factory/postfast-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.02012 | $0.02012 |
| Opus 5.5 | $0.00805 | $0.00805 |
| Sonnet 5.5 | $0.00402 | $0.00402 |
| Haiku 4.5 | $0.00201 | $0.00201 |
Grade A, and why
postfast-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 yesterday.
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 — 25 lines — stays where its author put it; the contents beside it link to each section on GitHub.
CLAUDE.md
Public stdio MCP server (npm: postfast-mcp) over PostFast's pf-api-key REST API — and the home of the shared tool catalog (src/core, exported as postfast-mcp/core). The deployed remote twin ../social-schedule-mcp (mcp.postfa.st) consumes the catalog too — its adapter landed 2026-08-05 (src/mcp/mcp.service.ts + gateway.adapter.ts import postfast-mcp/core), and a release here auto-bumps it (Release step 3).
Rules
- Source of truth is the backend:
../social-schedule-service— itsdocs/periphery.mdholds the constellation map (repos, verify commands, release channels). - Tool descriptions ARE the API — models discover fields only from descriptions/schemas, so wording changes are behavior changes. Keep them accurate against the BE REST responses.
- The catalog IS the single source: every tool (schema + description + title + annotations + outputSchema + binding) lives ONLY in
src/core/tools/. Never author tool text anywhere else; both bindings render from it. - stdio surface stability:
scripts/parity-diff.mjsdiffs a published version against the local build (initialize + tools/list over real stdio). Run it before any release that touches the catalog. - One remote surface, always confirm-gated: every hosted session, whatever the client, gets the same catalogue. Posts are created held and publish only through
approve_posts. Each comment operation is its own pair of tools, a read-only preview and the tool that carries it out with a token from that preview only, each after the user's yes:preview_comment_reply→reply_to_comment,preview_private_reply→send_private_reply,preview_comment_deletion→delete_comment. No remote tool picks between operations with a parameter. There is no ungated remote variant of any description, schema, annotation or server instruction: text that lets a model publish, approve, reply, delete, hide or email without the user's yes exists only on stdio, andtest/confirm-gate.test.mjschecks the remote wording and the one-operation-per-tool rule. The host must passconfirmGate(without it the six comment tools are left out and a log line says so).test/remote-surface.test.mjspins instructions + tools/list totest/snapshots/remote-surface.json; any change fails untilUPDATE_SNAPSHOT=1 npm test, and the snapshot diff belongs in the PR, since it is what every hosted client and every directory reviewer sees. - OAuth scopes (remote only): every remote tool declares
scopes, exactly what the backend's MCP gateway checks for its call (../social-schedule-service/src/mcp-gateway/mcp-gateway.controller.ts, through the gateway command the host sends), and lists them assecuritySchemesat the top level of tools/list and in_meta.securitySchemes. They are a hint for clients; the backend enforces scopes on every call.test/oauth-scopes.test.mjspins the table, so a new tool or a backend scope change updates it. WithRegisterToolsOptions.scopeChallenge, anInsufficientScopeErrorthrown by the port becomes aninsufficient_scopechallenge in the result's_meta["mcp/www_authenticate"], asking for the token's granted scopes (from the request'sauthInfo) plus the tool's. - Calendar app (opt-in, remote only):
src/core/app.ts,src/core/tools/app.tsand the view inview/(vite single-file build todist/view/index.html, read at runtime). A host turns it on withBuildToolsOptions.app(for every hosted session; its tools are app-only, hidden from the model); without it every surface stays byte-identical, andtest/app.test.mjschecks that.@openai/mcp-extensionsand@modelcontextprotocol/ext-appsare devDependencies only (type-only imports checked withsatisfies, and bundled into the view). Never make them runtime dependencies: the host's pnpm release-age gate rejects fresh versions even as transitive dependencies, and the OpenAI package needs Node 22 and pins zod exactly. Toolicons(and every remote tool's top-levelsecuritySchemes) reach tools/list by wrapping the SDK's tools/list handler, so re-check them on SDK bumps.scripts/app-preview.mjsserves the app with fixture data for ext-apps' basic-host (scenarios include several workspaces, a "many" one with 30 workspaces and 40 accounts, and a "single" one);appViewHtml()reads the view once, so restart the preview afternpm run build. - Directory plugin
plugins/postfast/: skills plus a.mcp.jsonpointing at the hosted connector (https://mcp.postfa.st/mcp), listed in the Claude directory separately from the root plugin. Its skills are written for the remote surface, so a catalog change that renames or removes a tool, or changes a limit in the server instructions, updates the skills in the same PR;test/directory-plugin.test.mjsfails until it does. The skills name no client app (other clients' packages ship the sameskills/folder); the test enforces that too. Character limits live only inskills/schedule-posts/references/platform-rules.md. The folder is outside the npm package (files) and the.mcpb(.mcpbignore), so a plugin-only change needs no changeset or npm release. Itsversionis independent of the package version and not stamped: raise it by hand on every change to the folder. The directory reads only this folder, from thepostfast-plugin-v*tag set as its tracked tag in the developer portal, so merging tomainalone publishes nothing there (Release step 4). - Cursor plugin
.cursor-plugin/plugin.json: Cursor looks for.cursor-plugin/plugin.json, then.claude-plugin/plugin.json, then a rootplugin.json, so this file decides what Cursor loads from the repository root. It launches the same pinned server as the Claude Code plugin, declaresPOSTFAST_API_KEYas a variable that Cursor asks for at install, and uses the rootskills/andassets/logo.png;test/cursor-plugin.test.mjskeeps it in step. A root Agent Pluginsplugin.jsonwould be shadowed by the Claude manifest in Cursor, and the Agent Plugins spec has no way to pass an API key to a stdio server. - Workflow security:
release.yml's dispatch authenticates as the release-bot GitHub App (RELEASE_BOT_APP_ID+RELEASE_BOT_PRIVATE_KEY; the private key is the critical credential) — it mints a short-lived token scoped to social-schedule-mcp only. Reference secrets ONLY on the step that uses them, never job/workflow level. This repo must NEVER gain apull_request_targetworkflow that checks out PR code, and no secret-bearing workflow may interpolate PR-controlled strings (titles, branch names, bodies). - Never commit with AI/Claude attribution or Co-authored-by.
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.
- yesterday Changed · +1 lines · +250 tokens per session 0725c51476d1
- 24d ago Changed · +49 tokens per session 91a5c219651f
- 25d ago Changed · +2 lines · +460 tokens per session c854b4fced23
- 29d ago Changed · +2 lines · +343 tokens per session 25d611638635
- 1mo ago Changed · +1 lines · +223 tokens per session 301d8254f072
- 1mo ago First seen · 19 lines · 687 tokens per session scan A ead21e62a2f7
postfast-mcp CLAUDE.md is an instructions file published in the GitHub repository peturgeorgievv-factory/postfast-mcp (7 stars, last pushed 2d ago), licensed MIT. It adds 2,012 tokens to every session, about $0.0080 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.
Other instructions, from other repositories
vscode buildNext.instructions.md
Working notes and architecture documentation for the new esbuild-based build system in build/next. Use when making changes to the new build pipeline (transpile/bundle commands, NLS plugin, source-map handling, resource copying, or self-hosting watch tasks).
next.js AGENTS.md
AGENTS.md instructions for vercel/next.js, covering next.js development guide, codebase structure, monorepo overview, core package: packages/next and other important packages.
vscode oss-third-party-notices.instructions.md
Instructions for microsoft/vscode, covering vs code oss third-party-notices pipeline, architecture, pipeline flow in ci, cache eligibility and rollout and applying the notice (cutover).
langchain AGENTS.md
AGENTS.md instructions for langchain-ai/langchain, covering global development guidelines for the langchain monorepo, corridor security analysis, project architecture and context, monorepo structure and development tools & commands.
vscode copilot-instructions.md
Copilot instructions for microsoft/vscode, covering vs code copilot instructions, project overview, root folders, core architecture (src/ folder) and built-in extensions (extensions/ folder).
deno copilot-instructions.md
Copilot instructions for denoland/deno, covering deno development guide for github copilot, network access, high level overview, key directories and key files to understand first.