postfast-mcp: Instructions file for Claude Code

CLAUDE.md

postfast-mcp CLAUDE.md is an instructions file for Claude Code from peturgeorgievv-factory/postfast-mcp. It costs 2,012 tokens per session, scanned A, original, MIT.

Repository instructions for postfast-mcp, a server that lets AI agents use PostFast's REST API through a standard connection. They also describe how the project's shared tool catalogue and releases are managed.

In plain words
What is it for?
Use them when changing tools, schemas, descriptions, compatibility checks, or the release process in this repository.
Why use it?
They help contributors keep tool descriptions, API details, and releases consistent across the local server and its remote counterpart.

Instructions file for Claude Code

Written for Claude Code: the file is CLAUDE.md. Also seen: mentions .claude-plugin; mentions CLAUDE.md; mentions Claude Code.

This is peturgeorgievv-factory/postfast-mcp's own configuration. It tells Claude Code how to work on postfast-mcp itself, so it is not a mod to install elsewhere. Copy it as a starting point and replace the rules that are about this project. Everything postfast-mcp configures →

Reuse

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.

Copy the file
curl -O https://raw.githubusercontent.com/peturgeorgievv-factory/postfast-mcp/main/CLAUDE.md
Clone the repo
git clone --depth 1 https://github.com/peturgeorgievv-factory/postfast-mcp

Made for: Claude Code.

Wrote 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.

agentmods badge for postfast-mcp CLAUDE.md

README.md
[![agentmods](https://agentmods.dev/badge/instructions/peturgeorgievv-factory/postfast-mcp/claude-md/github.svg)](https://agentmods.dev/instructions/peturgeorgievv-factory/postfast-mcp/claude-md)
Your own site
<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.

agentmods 80×15 button for postfast-mcp CLAUDE.md

Your own site · 80×15
<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>
Per session 2,012 This file is loaded in full into every session.
When invoked 2,012 The same file — it is already loaded in full.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

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.

ModelPer sessionOnce 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

Measured yesterday against content hash 0725c51476d1, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

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.

CLAUDE.md · 25 lines

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 — its docs/periphery.md holds 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.mjs diffs 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, and test/confirm-gate.test.mjs checks the remote wording and the one-operation-per-tool rule. The host must pass confirmGate (without it the six comment tools are left out and a log line says so). test/remote-surface.test.mjs pins instructions + tools/list to test/snapshots/remote-surface.json; any change fails until UPDATE_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 as securitySchemes at 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.mjs pins the table, so a new tool or a backend scope change updates it. With RegisterToolsOptions.scopeChallenge, an InsufficientScopeError thrown by the port becomes an insufficient_scope challenge in the result's _meta["mcp/www_authenticate"], asking for the token's granted scopes (from the request's authInfo) plus the tool's.
  • Calendar app (opt-in, remote only): src/core/app.ts, src/core/tools/app.ts and the view in view/ (vite single-file build to dist/view/index.html, read at runtime). A host turns it on with BuildToolsOptions.app (for every hosted session; its tools are app-only, hidden from the model); without it every surface stays byte-identical, and test/app.test.mjs checks that. @openai/mcp-extensions and @modelcontextprotocol/ext-apps are devDependencies only (type-only imports checked with satisfies, 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. Tool icons (and every remote tool's top-level securitySchemes) reach tools/list by wrapping the SDK's tools/list handler, so re-check them on SDK bumps. scripts/app-preview.mjs serves 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 after npm run build.
  • Directory plugin plugins/postfast/: skills plus a .mcp.json pointing 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.mjs fails until it does. The skills name no client app (other clients' packages ship the same skills/ folder); the test enforces that too. Character limits live only in skills/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. Its version is 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 the postfast-plugin-v* tag set as its tracked tag in the developer portal, so merging to main alone 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 root plugin.json, so this file decides what Cursor loads from the repository root. It launches the same pinned server as the Claude Code plugin, declares POSTFAST_API_KEY as a variable that Cursor asks for at install, and uses the root skills/ and assets/logo.png; test/cursor-plugin.test.mjs keeps it in step. A root Agent Plugins plugin.json would 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 a pull_request_target workflow 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.

Read the full file on GitHub · 25 lines

Changes

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.

  1. yesterday Changed · +1 lines · +250 tokens per session 0725c51476d1
  2. 24d ago Changed · +49 tokens per session 91a5c219651f
  3. 25d ago Changed · +2 lines · +460 tokens per session c854b4fced23
  4. 29d ago Changed · +2 lines · +343 tokens per session 25d611638635
  5. 1mo ago Changed · +1 lines · +223 tokens per session 301d8254f072
  6. 1mo ago First seen · 19 lines · 687 tokens per session scan A ead21e62a2f7

Subscribe to this mod's changes

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.

Related

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).

microsoft/vscode · 9,715 tokens

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.

vercel/next.js · 7,786 tokens

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).

microsoft/vscode · 5,262 tokens

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.

langchain-ai/langchain · 4,680 tokens

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).

microsoft/vscode · 2,731 tokens

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.

denoland/deno · 3,077 tokens