FastMCP is a Python framework for building Model Context Protocol applications, which connect language models with tools and data through servers and clients. Developers use it to expose Python functions as tools, connect to local or remote MCP servers, and build interactive tool interfaces. The catalogue includes eight skills, three instructions, two rules, one setting, and one hook for FastMCP.
Borrowing it
Nothing to install: this file belongs to PrefectHQ/fastmcp. 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/PrefectHQ/fastmcp/main/.agents/skills/adversarial-review/SKILL.mdgit clone --depth 1 https://github.com/PrefectHQ/fastmcpWrote 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/skills/prefecthq/fastmcp/adversarial-review)<a href="https://agentmods.dev/skills/prefecthq/fastmcp/adversarial-review"><img src="https://agentmods.dev/badge/skills/prefecthq/fastmcp/adversarial-review/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/skills/prefecthq/fastmcp/adversarial-review"><img src="https://agentmods.dev/badge/skills/prefecthq/fastmcp/adversarial-review.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.00046 | $0.01473 |
| Opus 5.5 | $0.00018 | $0.00589 |
| Sonnet 5.5 | $0.00009 | $0.00295 |
| Haiku 4.5 | $0.00005 | $0.00147 |
Grade A, and why
adversarial-review 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 6d 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 — 62 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Adversarially review a triage outcome
You did not make this decision. Try to refute it. The triage workflow loads this file on every run, from the pinned base revision, so changing it on main changes the reviewer's standards. Output format, field rules, and write restrictions live in the workflow's role prompt.
Every outcome except operational failures reaches you: reproductions, contribution reviews, evidence requests, closure candidates, maintainer questions, and skips. Leaving an issue unchanged is a decision too.
What to challenge
- The contract. Establish what FastMCP promises from the protocol, released docs, history, and maintainer decisions. Existing code and tests show behavior, not intent. A surprising result is not automatically a bug.
- The evidence. Prove the observed failure is the reported bug and not setup. For a reproduction, apply the exact regression patch in a clean checkout, then run the focused regression and a neighboring control. Machine patch validation proves the test materializes, not that it is correct.
- Existing contributions. Judge the exact verified head, its regressions, and the bot discussion. Recommend the next specific review or repair instead of a competing fix. An old review or a closed, gate-rejected PR is not current implementation evidence.
- Maintainer questions. Is the question real, concrete, and unresolved after investigation? Ordinary uncertainty that more reading would settle is not a maintainer decision.
- Evidence requests. Is the request fair to the reporter and precise enough to answer? An environment failure is operational work, never a request that someone reproduce the bug for us.
- Skips. Is leaving the issue alone justified, or is there a sound contribution, a duplicate, or a fix that already landed?
- Closures. A merged reference alone does not establish resolution. Check for partial fixes and reverts, verify duplicate equivalence, and distinguish fixed on main from released. Duplicate automation keeps its own cooldown; human interventions need a maintainer.
- Competing PRs. An established maintainer choice outranks whichever PR is newest. Respect the reporter's first claim and existing contributor credit, and compare coverage, not titles or labels. An open canonical PR does not block consolidation, but closing the issue while other contributions are active still needs coordination.
- Assignments. Establish worthwhile scope, the supported contract, the reporter's first claim, prior discussion, and a brief public history per review-issue. Sparse profiles and AI assistance alone are not grounds to reject. Platform eligibility is a separate live check.
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.
- 6d ago First seen · 62 lines · 46 tokens per session scan A 7851eb2b1e5f
adversarial-review is a skill published in the GitHub repository PrefectHQ/fastmcp (28,322 stars, last pushed today), licensed Apache-2.0. It adds 46 tokens to every session and 1,473 once invoked, about $0.0002 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-10-31.
adversarial-review compared with skills from other repositories
| Mod | Type | Stars | Last push | Licence | Scan | Tokens | Works with |
|---|---|---|---|---|---|---|---|
| adversarial-reviewPrefectHQ/fastmcp | Skill | 28k | today | Apache-2.0 | A | 46 | Claude Code, Codex |
| mcp-apps-builderShubhamsaboo/awesome-llm-apps | Skill | 144k | yesterday | Apache-2.0 | A | 139 | Claude Code, Codex |
| iterate-implementationhumanlayer/humanlayer | Skill | 13k | yesterday | Apache-2.0 | A | 16 | Claude Code, Codex |
| md-auditchaitanyagiri/munder-difflin | Skill | 9.3k | 6d ago | MIT | A | 85 | Claude Code |
| resolve-review-promnigent-ai/omnigent | Skill | 11k | today | Apache-2.0 | A | 23 | Claude Code, Codex |
| oraclesteipete/oracle | Skill | 4.1k | yesterday | MIT | A | 18 | Claude Code, Codex |
| describe-prhumanlayer/humanlayer | Skill | 13k | yesterday | Apache-2.0 | A | 15 | Claude Code, Codex |