dissid-audit-mcp
Wraps three deterministic audit scripts (funnel, accessibility, LLM visibility) as MCP tools, returning honest markdown reports with no fabricated results.
README
dissid-audit-mcp
DISSID's deterministic audit engine, packaged as an MCP server (G3). Three tools wrap the existing audit scripts — the server shells out to them and returns their markdown reports verbatim. It never reimplements a scan and never fabricates a result.
| Tool | Wraps | Status on a fresh host |
|---|---|---|
funnel_audit(domain) |
funnel-audit.sh (G5) |
shipped with ~/.claude/scripts |
a11y_audit(domain) |
a11y-audit.sh (G11) |
on branch feat/g11-a11y-audit of the ~/.claude repo — tool returns an honest "not installed" error if the script is absent |
llm_visibility_audit(domain) |
llm-visibility-audit.sh (G4) |
on branch feat/g4-llm-visibility-audit — same honest-error behavior |
Honesty floors (inherited from the scripts, not weakened here)
- Reports state only what the scan proved;
UNKNOWN != ABSENT(JS-rendered pages get UNKNOWN). - Missing script → "tool not installed" error, never a fake report.
- Scan timeout (default 120s) → explicit timeout error; a timeout is not a finding.
- Corrupt usage counter → fail closed (treated as limit reached, user told why).
- The server never phones home except the optional Lemon Squeezy license validation below.
Install
Runtime: bun (≥1.1). No npm/npx anywhere.
git clone <this-repo> ~/dev/dissid-audit-mcp
cd ~/dev/dissid-audit-mcp
bun install
bun test # 11 tests, network-free
Wire into Claude Code
claude mcp add dissid-audit -- bun run ~/dev/dissid-audit-mcp/src/index.ts
Or in .mcp.json / ~/.claude.json:
{
"mcpServers": {
"dissid-audit": {
"command": "bun",
"args": ["run", "/Users/<you>/dev/dissid-audit-mcp/src/index.ts"]
}
}
}
Configuration (env)
| Var | Default | Meaning |
|---|---|---|
DISSID_SCRIPTS_DIR |
~/.claude/scripts |
where the audit scripts live (test seam) |
DISSID_AUDIT_STATE_DIR |
~/.dissid-audit-mcp |
free-tier counter location (usage.json) |
DISSID_AUDIT_FREE_LIMIT |
3 |
free scans per UTC day |
DISSID_AUDIT_TIMEOUT_MS |
120000 |
per-scan hard timeout |
DISSID_AUDIT_LICENSE_KEY |
— | Lemon Squeezy license key → unmetered |
LEMONSQUEEZY_VALIDATE |
unset | 1 = verify the key against https://api.lemonsqueezy.com/v1/licenses/validate (public endpoint, no API auth). Unset = accept-any-key stub, clearly labeled unverified in every response |
LEMONSQUEEZY_VALIDATE_URL |
LS public endpoint | override exists only so tests run network-free |
Metering model
- Free tier: 3 scans per UTC day, persisted in
usage.json({day, count}, atomic write, UTC rollover). Corrupt file = fail closed. - Licensed: set
DISSID_AUDIT_LICENSE_KEY. WithLEMONSQUEEZY_VALIDATE=1the key is validated per scan against Lemon Squeezy (invalid/unreachable → fail closed, no scan). Without it, the stub accepts any key and says so in the output.
Pricing plan (sketch)
- Free: 3 scans/day — enough to try every tool on your own domain.
- Pro: $19/mo, unlimited scans — license key sold via Lemon Squeezy (merchant-of-record handles global sales tax/VAT).
⚠️ Blocker before any sale: the DISSID Lemon Squeezy store currently has 0 products. Sid must create the store product (subscription with license keys enabled) before a key can ever validate. Until then, paying customers cannot exist; the
LEMONSQUEEZY_VALIDATE=1path is wired and tested against a mock.
Development
bun test # full suite (registration, metering, license seam, honest errors)
bunx tsc --noEmit # typecheck
bun run src/index.ts # serve on stdio
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.