beyond-mcp: Instructions file for Claude Code

CLAUDE.md

beyond-mcp CLAUDE.md is an instructions file for Claude Code from eschatus/beyond-mcp. It costs 1,915 tokens per session, scanned A, original, MIT.

Repository instructions for a read-only D&D Beyond lookup server. D&D Beyond is an online service for Dungeons & Dragons characters, monsters, and campaigns; an MCP server lets an agent use connected tools.

In plain words
What is it for?
Use them when developing or reviewing this server, especially its character, monster, campaign, and game-log lookup behavior.
Why use it?
They define the server’s safety rules, supported data, optional writing behavior, and required development checks so changes do not break its intended use.

Instructions file for Claude Code

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

This is eschatus/beyond-mcp's own configuration. It tells Claude Code how to work on beyond-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 beyond-mcp configures →

Reuse

Borrowing it

Nothing to install: this file belongs to eschatus/beyond-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/eschatus/beyond-mcp/main/CLAUDE.md
Clone the repo
git clone --depth 1 https://github.com/eschatus/beyond-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 beyond-mcp CLAUDE.md

README.md
[![agentmods](https://agentmods.dev/badge/instructions/eschatus/beyond-mcp/claude-md/github.svg)](https://agentmods.dev/instructions/eschatus/beyond-mcp/claude-md)
Your own site
<a href="https://agentmods.dev/instructions/eschatus/beyond-mcp/claude-md"><img src="https://agentmods.dev/badge/instructions/eschatus/beyond-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 beyond-mcp CLAUDE.md

Your own site · 80×15
<a href="https://agentmods.dev/instructions/eschatus/beyond-mcp/claude-md"><img src="https://agentmods.dev/badge/instructions/eschatus/beyond-mcp/claude-md.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 1,915 This file is loaded in full into every session.
When invoked 1,915 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.01915 $0.01915
Opus 5.5 $0.00766 $0.00766
Sonnet 5.5 $0.00383 $0.00383
Haiku 4.5 $0.00192 $0.00192

Measured 21d ago against content hash b7456cd3e5a5, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

beyond-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 21d 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.

CLAUDE.md · 115 lines

How it starts

The opening of the file, as written. The whole thing — 115 lines — stays where its author put it; the contents beside it link to each section on GitHub.

CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

What this is

Read-only D&D Beyond lookup MCP server, extracted from roll20-dm-mcp (its issue #171: reduce that repo to Roll20 primitives, put DDB behind its own seam). Consumers: the dm-whisper gem (live sessions) and Claude Code via the module-ingest skill (prep time). It serves character /monster/campaign lookups and captures live game-log dice rolls into a drainable buffer.

Invariants — do not violate

  • Reads are always on; writes are opt-in and are primitives. This server can effect changes on D&D Beyond (Adam's call, 2026-08-25, reversing the earlier read-only stance). Write tools register ONLY when DDB_WRITES=enabled, so prep-time / default installs stay read-only. The write layer (src/bridge/ddb-write.ts, src/tools/ddbWrite.ts) is a primitive surface: it effects exactly the change asked on whatever character id it's given, with NO policy about who owns the sheet or how the server is used upstream — the caller owns intent (this is a general MCP server, ignorant of its consumers). DM-authority model: DDB PC HP is also driven by Beyond20 and the player's own edits, so writes race those (last-writer-wins) — they are deliberate acts, never an automation loop on PC HP. Every write route's body shape is verified live against character-service before its tool ships (contract-probe with an empty body; the 400 names required fields) — never add a wrapper for an unverified route.
  • Homebrew creation rides the same gate (src/bridge/ddb-homebrew.ts, src/tools/ddbHomebrew.ts). There is no homebrew API: it drives www's server-rendered builder forms over plain HTTP (rtSiteSession cookie jar, html-form.ts parse/fill/encode) — still no browser. Rules that are easy to break: address controls by stable element id (names are hashed per render), match selects by label only (values collide with labels — CR "5" is value 9), treat a redirect to /error as failure, and verify every write by read-back (edit form + monster-service + baked label tables). A new homebrew type ships only after a live round-trip on a throwaway private creation. Builder reads lag writes: verify through settle(), confirm deletes by a repeat delete answering 404, resolve edit paths with resolveEditPath. Deletes are SOFT (creations stay listed as Deleted in My Creations), so name test creations zz beyond-mcp …. Option-id escape for ambiguous labels is { value } everywhere (never a bare number). Protocol: docs/ddb-homebrew-protocol.md; per-type notes: docs/ddb-homebrew-types.md.
  • Never open a browser. The CobaltSession cookie is consumed from DDB_COBALT or <data dir>/ddb-cobalt.json; the interactive harvest UX lives in the gem. When the cookie is absent/expired, fail loudly with re-harvest instructions (CobaltUnavailableError in ddb-rt.ts) — never add a silent fallback or a Playwright dependency.
  • No VTT knowledge. Nothing Roll20- (or Foundry-) specific belongs here. The roll pump buffers raw game-log messages; rendering into a VTT (e.g. post_roll_as_character in roll20-dm-mcp) is the consumer's job. Keep helpers VTT-neutral (summarizeRoll).
  • Tool shapes are a contract. ddb_get_character / ddb_get_monster / campaign listing default outputs match roll20-dm-mcp's originals so callers migrate seamlessly. Extend additively (like the full flags), never reshape defaults.
  • Rolls captured by the pump carry DDB's actual dice values — consumers must mirror them, never re-roll. Keep tool descriptions saying so.
  • Version is a consumer contract. ddb_ping and MCP serverInfo both announce src/version.ts's VERSION; consumers pin a ref and floor the version against it (the gem's EXPECTED_DDB_MCP_VERSION). So: bump VERSION and package.json together on any consumer-visible change, and cut a vX.Y.Z git tag on the release commit (roll20-dm-mcp convention) so consumers pin #vX.Y.Z, not a bare SHA. Adding a tool is a minor bump. git push does NOT push tags — git push origin vX.Y.Z explicitly.

Read the full file on GitHub · 115 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. 21d ago Changed · +22 lines · +439 tokens per session b7456cd3e5a5
  2. 2mo ago First seen · 93 lines · 1,476 tokens per session scan A 45e194f7e04a

Subscribe to this mod's changes

beyond-mcp CLAUDE.md is an instructions file published in the GitHub repository eschatus/beyond-mcp (0 stars, last pushed 19d ago), licensed MIT. It adds 1,915 tokens to every session, about $0.0077 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

beyond-mcp CLAUDE.md compared with instructions from other repositories

beyond-mcp CLAUDE.md next to 6 instructions from other repositories
ModTypeStarsLast pushLicenceScanTokensWorks with
beyond-mcp CLAUDE.mdeschatus/beyond-mcpInstructions file019d agoMITA1,915Claude Code
vscode buildNext.instructions.mdmicrosoft/vscodeInstructions file195kyesterdayMITA9,719GitHub Copilot
next.js AGENTS.mdvercel/next.jsInstructions file143kyesterdayMITA7,461Codex, OpenCode
langchain AGENTS.mdlangchain-ai/langchainInstructions file149kyesterdayMITA4,680Codex, OpenCode
vscode oss-third-party-notices.instructions.mdmicrosoft/vscodeInstructions file195kyesterdayMITA5,516GitHub Copilot
vscode copilot-instructions.mdmicrosoft/vscodeInstructions file195kyesterdayMITA3,093GitHub Copilot
deepseek-harness AGENTS.mddeepseek-ai/deepseek-harnessInstructions file274k2d agoMITA4,313Codex, OpenCode