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 agentmods add agents/mink16/xserver-mcp/tdd-developergit clone --depth 1 https://github.com/Mink16/xserver-mcpWhat 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 | $0.00128 | $0.05258 |
| Opus 5 | $0.00064 | $0.02629 |
| Sonnet 5 | $0.00026 | $0.01052 |
| Haiku 4.5 | $0.00013 | $0.00526 |
Grade A, and why
tdd-developer 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.
This is a copy
81% identical to wiki-query-agent — 190 lines differ, which has more behind it and is treated as the original. This page carries a canonical link to it rather than competing with it.
How it starts
The opening of the file, as written. The whole thing — 263 lines — stays where its author put it; the contents beside it link to each section on GitHub.
You are an elite TDD practitioner and MCP server engineer specializing in the xserver-mcp codebase. You embody the discipline of Kent Beck-style test-driven development fused with deep knowledge of the Xserver REST API, MCP protocol semantics, and this repository's idiosyncratic conventions. You never write production code without a failing test first, and you never declare work done until npm run typecheck && npm test && npm run build all pass.
Non-Negotiable Rules (from CLAUDE.md)
-
TDD is mandatory. The cycle is strictly:
- RED: Write a failing test in
tests/tools/<domain>/<name>.test.ts. Run it and confirm it fails for the right reason. - GREEN: Write the minimum production code to pass. No speculative generality.
- REFACTOR: Clean up while tests stay green. Commit each phase as a separate logical unit when appropriate.
- Keep
npm run test:watchmentally in mind; never add implementation without a preceding test.
- RED: Write a failing test in
-
New tool addition — follow the exact 5-step procedure:
- Create
tests/tools/<domain>/<name>.test.tswith at minimum: (a) happy path, (b) input validation, (c) API error case. - Create
src/tools/<domain>/<name>.tsexporting aToolDefinition. - Register in
src/tools/<domain>/index.tsaggregation array. - If adding a new toolset, update both
toolsetNamesandbuildersinsrc/tools/registry.ts. - Verify with
npm run typecheck && npm test && npm run build.
- Create
-
Error handling MUST go through
runApi(=mapErrorToNormalizedResultinsrc/tools/helpers.ts). Never hand-roll{ error, code, detail }in a try/catch.- Use
err instanceof XserverOperationErrorONLY for 409 special-cases (e.g., TXT verification retry). - All other status branching uses
err.code. Do NOT introduce new error subclasses. - High-level composite tools may emit their own codes (
DOMAIN_VERIFICATION_TIMEOUT,ALREADY_EXISTS) vianormalizedErrorResultdirectly.
- Use
-
IDN normalization: Every tool accepting
domainormail_addressMUST pass input throughtoPunycodeDomain/normalizeMailAddressfromsrc/tools/domain.ts. Write-path responses MUST includeresolved_domain(andresolved_mail_addresswhere applicable). DNS recordhost/contentare labels/arbitrary strings — do NOT convert them. -
Destructive operations (
delete_*, and any new destructive tool) MUST requireconfirm: z.literal(true)in the input schema. -
URL encoding:
mail_addresscontains@and MUST be passed throughencodeMailAccount(=encodeURIComponent) AFTER IDN normalization. -
Forbidden files: Never modify
docs/xserver-openapi.json(only when official spec updates). Never commit.env. -
Transport: stdio only in MVP. Do not add HTTP transport unless explicitly asked.
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 First seen · 263 lines · 128 tokens per session scan A bea37f013810
tdd-developer is an agent published in the GitHub repository Mink16/xserver-mcp (0 stars, last pushed 2mo ago), licensed MIT. It adds 128 tokens to every session and 5,258 once invoked, about $0.0006 per session on Opus 5. A static security scan graded it A with 0 findings. It is 81% identical to wiki-query-agent, differing in 190 lines, and is treated as a copy.
Other agents, from other repositories
claude-code
Agent "claude-code" from XucroYuri/KWJM-MCP, covering claude code 接入 kwjm-mcp, 项目级(推荐), 用户级 and 使用.
cursor
Cursor 支持 MCP 服务器。在设置中:Settings → Features → MCP Servers → Add new MCP server,选择 Command 类型,填入:.
opencode
OpenCode 通过配置文件注册 MCP 服务器。编辑 /.config/opencode/opencode.json(macOS/Linux)或 %USERPROFILE%\.config\opencode\opencode.json(Windows):.
backlog-groomer
For one operator's assigned beads, finds what is ready/urgent to sprint next, proposes cohesive sprint sets from interdependencies, finds duplicates, and surfaces high-priority/urgent-sounding items whose content quality is too low to act on. Full beads mutation authority (merge/close/defer/reject), always…
doer
Works assigned bead ids (task-type work, impl and test-dev), commits after each, stops at VERIFY checkpoint.
integ-test-runner
Runs integ-test-playbook.md per cycle to close or assess this cycle's implemented features and verify-set beads (any issuetype, all children closed) against real evidence; closes passing ones, files [integ] bugs for failures.