Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add cyanheads/stackexchange-mcp-server --skill stackexchange-guidegit clone --depth 1 https://github.com/cyanheads/stackexchange-mcp-serverWrote 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/cyanheads/stackexchange-mcp-server/stackexchange-guide)<a href="https://agentmods.dev/skills/cyanheads/stackexchange-mcp-server/stackexchange-guide"><img src="https://agentmods.dev/badge/skills/cyanheads/stackexchange-mcp-server/stackexchange-guide/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/cyanheads/stackexchange-mcp-server/stackexchange-guide"><img src="https://agentmods.dev/badge/skills/cyanheads/stackexchange-mcp-server/stackexchange-guide.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.00075 | $0.01713 |
| Opus 5.5 | $0.00030 | $0.00685 |
| Sonnet 5.5 | $0.00015 | $0.00343 |
| Haiku 4.5 | $0.00007 | $0.00171 |
Grade A, and why
stackexchange-guide 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 today.
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 — 70 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Scope
Live, read-only Stack Exchange API v2.3 across the network: Stack Overflow, Super User, Server Fault, Unix & Linux, Mathematics, TeX, and the rest. Question search, full threads with answers and optional comments, a tag's FAQ list, and user profiles. Every call targets one site; there is no network-wide search, so a question that could live on several sites takes one search per site.
Reach for it for community answers: error messages, how-to and practice questions, what a tag's community treats as canonical. Not for official documentation or changelogs, not for behavior newer than the answers you find, and not for anything outside the Stack Exchange network.
Identifiers
Every ID is scoped to its site. The same number on another site is a different post or account, or nothing, so carry the site alongside every ID.
| Identifier | Where it comes from |
|---|---|
| site | api_site_parameter from stackexchange_list_sites, or the host of a Stack Exchange URL passed as-is (unix.stackexchange.com), which skips the list call |
| question ID | Search and tag FAQ results, or the number after /questions/ in a URL |
| answer ID | Answers in stackexchange_get_thread; its permalink is https://<site host>/a/<answerId> |
| user ID | authorUserId on a thread's question and answers. Comments carry only authorLink, whose path is /users/<id>/<name>. Deleted and anonymous authors have no ID and cannot be looked up |
| tag | tags on any question, or a user's topTags. stackexchange_get_tag_faq resolves a tag synonym (js → javascript) |
Gates
- A question URL carries its site; a bare ID does not. Pass a full URL to stackexchange_get_thread and leave
siteout: the question is read from the URL's host. Asitenaming a different site is ignored; a URL whose host is not a Stack Exchange site, such as a translation proxy, is read fromsitewhen you pass one and fails withinvalid_sitewhen you don't.siteConflictin the response says which of the two was used. A bare question ID is read fromsite, which defaults tostackoverflow, so an ID from any other site needs itssite; without it the call returns an unrelated question, orquestion_not_found. - Look a user up on the site they posted on. A Stack Overflow user ID sent with another site returns
user_not_foundor a different account. - Don't present
answers[0]as the top answer. The accepted answer comes first because the asker chose it; the rest follow by score, so a higher-voted answer can sit below it. Compare scores and dates, and say which one you are quoting: accepted, highest-voted, or both. - Check dates before relaying advice. Every question and answer carries
creationDateandlastActivityDate. When an answer predates the version the user is on, fetch the thread with comments, where corrections usually land, before relying on it. - Attribute what you quote. Content is CC BY-SA 4.0: name the author and link the post, using the answer permalink above or the question
link. - Closed and duplicate status is not reported. A search hit can be a question closed as a duplicate of the real canonical, and its answers still come back normally. When a hit looks thin, look for the canonical in the tag FAQ.
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.
- today First seen · 70 lines · 75 tokens per session scan A 07e7c86cfe95
stackexchange-guide is a skill published in the GitHub repository cyanheads/stackexchange-mcp-server (2 stars, last pushed yesterday), licensed Apache-2.0. It adds 75 tokens to every session and 1,713 once invoked, about $0.0003 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-29.
Other skills, from other repositories
internet-archive-guide
Use ia tools to investigate historical web pages or Internet Archive books and documents. Resolve capture and item identities, compare the captures actually served, and check coverage before claiming content absent or fully read.
release-and-publish
Ship a release end-to-end across every registry the project targets (npm, MCP Registry, GitHub Releases for .mcpb bundles, GHCR). Runs the final verification gate, fast-forwards main when the release rode a release PR, creates the annotated tag on the commit main now points at, pushes commits and tags, then publishes…
add-tool
Scaffold a new MCP tool definition. Use when the user asks to add a tool, create a new tool, or implement a new capability for the server.
design-mcp-server
Design the tool surface, resources, and service layer for a new MCP server. Use when starting a new server, planning a major feature expansion, or when the user describes a domain/API they want to expose via MCP. Produces a design doc at docs/design.md that drives implementation.
api-context
Canonical reference for the unified Context object passed to every tool and resource handler in @cyanheads/mcp-ts-core. Covers the full interface, its RequestContext base, all sub-APIs (ctx.log, ctx.state, ctx.requestInput, ctx.inputs, ctx.clientCapabilities, ctx.enrich, ctx.content), and when to use each.
api-errors
McpError constructor, JsonRpcErrorCode reference, and error handling patterns for @cyanheads/mcp-ts-core. Use when looking up error codes, understanding where errors should be thrown vs. caught, or using ErrorHandler.tryCatch in services.