dissid-audit-mcp

dissid-audit-mcp

Wraps three deterministic audit scripts (funnel, accessibility, LLM visibility) as MCP tools, returning honest markdown reports with no fabricated results.

Category
Visit Server

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. With LEMONSQUEEZY_VALIDATE=1 the 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=1 path 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

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.

Official
Featured
TypeScript
Magic Component Platform (MCP)

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.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

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.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

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.

Official
Featured
TypeScript
Kagi MCP Server

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.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

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.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured