Skip to main content
Glama

AI Slop Meter

Türkçe · English

Measure the AI slop on any website. Then fix it.

AI Slop Meter scores a website or a web project for slop: generic copy, the default AI-builder look, and unfinished details.

  • It shows the evidence behind every point, down to the file and line.

  • It turns the result into a calm, step-by-step plan.

  • Your own AI (Claude, Cursor, Gemini CLI and others) can then carry out that plan in your code.

It runs on your machine as an MCP server and a CLI. No API keys, no account, nothing sent anywhere except the request to the site you asked it to scan.

Quick start (2 minutes)

  1. Have Node.js 20 or newer installed.

  2. In Claude Code, paste:

    claude mcp add aislopmeter -- npx -y github:omergocmen/aislopmeter mcp

    For Claude Desktop, Cursor and others, see Install as an MCP server.

  3. Ask your AI: "Scan https://my-site.com for AI slop and show me what to fix."

To try it without installing anything:

npx -y github:omergocmen/aislopmeter https://my-site.com --open

Before: 83 / 100, pure slop

After: 1 / 100, clean

Before

After

Both pages are in examples/novaflow. The "after" page was rewritten using the owner's answers to the rescue plan's questions (FACTS.md). The product and its numbers are fictional.

Related MCP server: PureRank MCP Server

What it does

  1. Scans a whole website, a project folder (Next.js, Vite/React, Astro, Vue, Svelte, plain HTML, Markdown content…) or a single .html file. For a website it finds the pages through sitemap.xml and internal links (respecting robots.txt), scans up to 30 by default (--pages all for up to 200) and gives every page its own score and to-do list. A problem that repeats across pages is shown once, with the list of pages it is on.

  2. Scores five areas, with research-based checks (criteria and sources):

    • Substance: concrete facts, claims you can check, real proof

    • Language patterns: clichés, "not just X, but Y", empty importance claims

    • Template design: purple gradients, glow and glass, emoji icons, identical cards

    • Unfinished details: lorem ipsum, href="#", "Vite + React + TS", chatbot leftovers

    • Builder traces: Lovable, Bolt, v0, Replit, Base44 (information only)

  3. Plans the rescue:

    • questions for the owner (so the AI never invents facts)

    • quick clean-ups

    • copy rewrites

    • a design direction

    • trust fixes

    Each step carries a time estimate and its expected score drop.

  4. Tells you what to do about every finding, not only what is wrong:

    • a one-line fix right under the title;

    • numbered steps and the exact file:line places to change;

    • a before/after example for copy problems, and a "done when" check;

    • a Copy as a prompt for your AI button that hands that one problem to Claude, Cursor or Lovable.

  5. Shows it in a two-screen visual report. The Report screen has the score and the findings. The What to do screen has a checklist that starts with three quick wins, and boxes for answering the owner questions. For site scans, a Pages screen lists every page, worst first, with its own score and findings.

  6. Re-measures after each change and prints a before/after table.

Report

What to do

Report screen

What-to-do screen

Every finding opens to the same "what to do" box:

A finding with steps, a before/after example, the exact lines and a copy-as-prompt button

Install as an MCP server

You need Node.js 20 or newer.

For now the package runs straight from GitHub (github:omergocmen/aislopmeter). The first run downloads and installs it, which takes a few seconds.

Claude Code

claude mcp add aislopmeter -- npx -y github:omergocmen/aislopmeter mcp

Claude Desktop: add this to claude_desktop_config.json:

{
  "mcpServers": {
    "aislopmeter": { "command": "npx", "args": ["-y", "github:omergocmen/aislopmeter", "mcp"] }
  }
}

Cursor (.cursor/mcp.json), Gemini CLI (~/.gemini/settings.json), Windsurf and others: use the same mcpServers block. VS Code (.vscode/mcp.json): use "servers": { "aislopmeter": { "type": "stdio", "command": "npx", "args": ["-y", "github:omergocmen/aislopmeter", "mcp"] } }.

Use it

Just ask your AI:

Scan my project for AI slop and show me what to fix. Rescue https://my-site.com from slop. Open the report when you're done. Sitemi slop'tan kurtar, bitince raporu tarayıcımda aç.

The rescue prompt runs the whole loop. In Claude Code it is /mcp__aislopmeter__rescue. The AI will:

  1. ask once whether to open the report in your browser when it finishes, so you can walk away;

  2. scan the target and summarise the three findings that matter most;

  3. build the plan and ask you the owner questions in one message;

  4. apply the plan phase by phase. In a project it edits the exact file:line locations. For a live URL it hands you rewritten copy, a design spec and a prompt for your builder;

  5. re-scan after each phase until the target score (default 20);

  6. write the visual report, open it if you agreed, and summarise before/after.

Prefer small steps? The fix prompt (/mcp__aislopmeter__fix) fixes only the most important problem, re-scans, shows what changed and offers the next one.

Tools

Tool

What it does

slop_scan

Scan a website (crawls up to pages, default 30, max 200), a folder or an .html file. Writes the visual report; open_report opens it. Re-scans compare automatically.

slop_scan_html

Scan pasted or generated HTML.

slop_rescue_plan

Turn a scan into a phased plan, with keep for things the owner wants untouched and target_score.

slop_page

The full report for one page of a site scan, with its own findings and steps.

slop_fix

Step-by-step instructions for one finding: what to change, where (file:line), an example and a done-when check. Without finding_id it picks the most important one and lists the rest.

slop_report

Write or open the visual report for a scan.

slop_compare

Before/after for two scan ids.

slop_guide

Read the guides: criteria, playbook, copy, design, interview.

The same guides are also exposed as MCP resources (aislopmeter://guide/...).

Command line

npx -y github:omergocmen/aislopmeter https://example.com                # whole site, up to 30 pages
npx -y github:omergocmen/aislopmeter https://example.com --pages all    # up to 200 pages
npx -y github:omergocmen/aislopmeter https://example.com --pages 1      # only this page
npx -y github:omergocmen/aislopmeter ./my-app --plan --lang tr          # project folder, plus the rescue plan in Turkish
npx -y github:omergocmen/aislopmeter ./my-app --open                    # write the visual report and open it
npx -y github:omergocmen/aislopmeter ./dist/index.html --fail-above 40  # fail CI when the score is above 40
npx -y github:omergocmen/aislopmeter ./my-app --json                    # raw result

Reports are written to ~/.aislopmeter/reports/. Set AISLOPMETER_REPORT_DIR to change that.

Folder scans skip node_modules, hidden folders and the ready-made primitives in components/ui. At the top of the scanned folder they also skip dist, build, out, test, docs, examples and repo documents such as README, CHANGELOG and LICENSE. To scan one of these, point AI Slop Meter at that folder or file directly. Use --ignore path1,path2 to leave out anything else.

In CI (GitHub Actions):

- run: npx -y github:omergocmen/aislopmeter ./ --fail-above 40

Pages built with JavaScript

Some servers send an empty client-rendered shell. In that case AI Slop Meter renders the page with the Chrome or Edge already installed on your computer, through playwright-core, which downloads no browser. If neither browser is found, set AISLOPMETER_CHROME to a browser path, or scan the project folder instead. Folder scans read the source and give file:line locations.

How the score works

Each finding adds points, and each category has a cap:

Category

Max

Substance

30

Language

22

Design

28

Unfinished details

15

Builder traces

5

Signs that a real business stands behind the page lower the score: a real address, named people, prices, legal details, links to independent reviews.

A high score needs problems in several areas: with only one area the score is capped at 35, with two at 60. A purple brand colour alone is never heavy slop. For websites the page's own style.css and scripts are read too.

Bands:

Score

Band

0–19

clean

20–39

trace amounts

40–59

noticeable

60–79

heavy

80–100

pure slop

Why rules and not an AI judge? In the largest study so far, LLMs asked "is this slop?" agreed with human editors at κ ≈ 0. Density and relevance predicted the human verdict best. So AI Slop Meter measures with explainable rules and uses your AI only to fix things (details).

What it is not

  • Not an AI-authorship detector. A page made entirely with AI can score clean, and a hand-written page can score high.

  • Not a ranking oracle. The checks follow Google's helpful-content and spam guidance, but the score is not a search ranking.

  • The Turkish lists are not measured yet. They are compiled from Turkish sources and from known English tells. Calibration help is welcome.

Privacy

Everything runs locally.

  • URL scans: AI Slop Meter fetches only pages of the site you point it at, follows robots.txt, and stops at the page limit.

  • Folder scans: files are only read, never changed.

  • Reports: written only to your own computer, in ~/.aislopmeter/reports/.

  • No telemetry.

  • Your AI client sees the report text, as it does with any tool output.

Contributing

Issues and pull requests are welcome. Most useful right now:

  • false positives on real hand-made sites;

  • Turkish and other-language lexicons measured against pre-2023 web text;

  • more builder fingerprints.

Run the tests with npm test.

License

MIT

Available Tools

8 tools
slop_compareCompare two scansA
Read-only

Show the before/after difference between two scans: score change, resolved findings, remaining and new ones.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoReport language. Use the language the user is writing in. Default: en.
after_idYes
before_idYes

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnlyHint=true and openWorldHint=false, and the description adds meaningful non-obvious context about the returned result: it computes a score delta and classifies findings into resolved, remaining, and new. With no output schema, this return-shape disclosure carries real weight, though it omits error/edge behavior for mismatched or missing scans.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with a colon-delimited enumeration of the diff components. Zero filler, and the core purpose is stated before the detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity read-only comparison tool, the description covers purpose and output categories, which is close to sufficient. Gaps remain: no statement of prerequisites (both scans must exist, plausibly from the same project), no behavior when the scans are unrelated or an id is invalid, and no routing guidance against the report/scan siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 33% (only `lang` is documented), so the description must compensate. The before/after framing maps onto `before_id`/`after_id` and confirms ordering semantics (which scan is the baseline), but it adds little beyond what the parameter names already convey and says nothing about id format or same-project requirements.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clear specific verb+resource ('Compare two scans') plus an enumeration of what the diff contains (score change, resolved, remaining, new). It never distinguishes itself from siblings like slop_report (single-scan report) or slop_scan, so an agent must infer the difference from the name alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the before/after framing — compare an earlier scan with a later one after fixes. However, there is no explicit when-to-use guidance, no stated prerequisite that both scan ids must exist (and presumably belong to the same project), and no routing to alternatives such as slop_report when only one scan is of interest.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

slop_fixInstructions to fix one findingA
Read-only

Concrete, step-by-step instructions for one finding of a scan: what to change, the exact file:line places, a before/after example and a "done when" check. Without finding_id it picks the most important open finding and lists the others. Use it to work through a scan one problem at a time.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoReport language. Use the language the user is writing in. Default: en.
pageNoSite scans only: a page path ("/pricing") to get the instructions for that page alone. Omit for the site-wide item with all its pages.
scan_idYesScan id, e.g. "s1"
finding_idNoFinding id from the report, e.g. "lexicon" or "dead-links". Omit for the next most important one.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered. The description adds genuinely non-obvious behavior: omitting finding_id selects the most important open finding and lists the others, and the response shape (before/after, done-when check) is disclosed despite there being no output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no filler, and the deliverable is front-loaded before the fallback behavior and usage note. Every clause carries information an agent needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only, single-parameter-required tool with no output schema, the description covers the deliverable content, the default selection behavior, and the calling context. Nothing an agent needs to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description mentions finding_id omission and the site-wide page behavior, but those are already spelled out in the schema's own parameter descriptions, so it adds little semantic value beyond the structured fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific deliverable: step-by-step fix instructions for one finding, including what to change, exact file:line locations, a before/after example, and a 'done when' check. That is far more concrete than the title and clearly separates this action tool from reporting/summary siblings like slop_report.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a clear usage mode ("work through a scan one problem at a time") and explains the no-finding_id fallback. It does not, however, name alternatives such as slop_rescue_plan or slop_report, nor state when not to reach for this tool, so it stops short of full routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

slop_guideRead an AI Slop Meter guideA
Read-only

Read the reference guides behind AI Slop Meter: "criteria" (every check, its threshold and sources), "playbook" (the full rescue method), "copy" (rewriting rules with examples), "design" (how to leave the template look behind), "interview" (questions that get real facts from the owner).

ParametersJSON Schema
NameRequiredDescriptionDefault
topicYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds useful context about what each guide contains, but says nothing about the size, structure, or return format of the content it pulls back.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with a colon-delimited list; every clause maps to a parameter value and carries information. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter documentation lookup with read-only annotations and no output schema, the description covers purpose and per-topic content adequately. Only the return format/size of the guide text is unaddressed, which is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and there is only one parameter, but the description compensates by explaining what each enum value actually yields (e.g., 'criteria' = every check with threshold and sources; 'playbook' = the full rescue method). That adds meaning beyond the bare enum list.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (read) and resource (the reference guides behind AI Slop Meter), and enumerates the five distinct topics. An agent can immediately tell this apart from siblings like slop_scan, slop_rescue_plan, or slop_fix, which act on content rather than returning documentation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The enumeration of guide contents implies when each topic is useful, but there is no explicit when-to-use or when-not-to-use guidance relative to siblings (e.g., read 'criteria' before scanning, or 'playbook' before rescuing). Usage is inferred rather than directed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

slop_pageReport for one page of a site scanA
Read-only

The full report for a single page of a site scan: its own score, categories and findings, each with steps and a done-when check. Use it to work through a site page by page.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoReport language. Use the language the user is writing in. Default: en.
pageYesPage path as listed in the scan ("/pricing") or its full URL
scan_idYesId of a site scan, e.g. "s1"

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds that the payload includes per-finding remediation steps and a done-when check, but says nothing about prerequisites (scan_id must reference an existing scan) or what happens when the page path is not in the scan. Adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no filler, with the content enumeration front-loaded before the usage hint. Efficient, though the second sentence is thin enough that it could have carried more routing value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description usefully enumerates the return shape (score, categories, findings, steps, done-when check). For a read-only, single-object retrieval tool with fully documented parameters, that covers most of what an agent needs; only error/precondition behavior is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so scan_id, page, and lang are fully documented in the schema, including the enum and the default for lang. The description adds no parameter-level meaning beyond that, which is the expected baseline when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete noun+scope: 'the full report for a single page of a site scan,' and enumerates what it contains (score, categories, findings, steps, done-when check). It implicitly contrasts with the site-wide sibling slop_report via 'a single page,' but never names an alternative, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use it to work through a site page by page' gives a workflow hint, which is more than nothing, but there is no explicit when-not condition and no named alternative (e.g., use slop_report for the whole site, slop_fix to act on findings). Usage is implied rather than specified.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

slop_reportWrite or open the visual reportA

Write the visual HTML report for a scan (a Report screen with the score and findings, and a calm What-to-do screen with a checklist, time estimates and the owner questions) and optionally open it in the user's browser. Use it at the end of a rescue so the user finds the result waiting when they return. Pass open: true only if the user agreed to have it opened.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoReport language. Use the language the user is writing in. Default: en.
openNoOpen it in the default browser. Only with the user's permission. Default false.
scan_idYesScan id, e.g. "s3". Use the latest scan to show the final state.
target_scoreNo

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations mark it as a write operation (readOnlyHint=false) that is not open-world, and the description adds useful behavior beyond that: it writes an HTML file and may launch the user's browser, and browser launch requires prior user consent. It does not mention where the file lands, overwrite behavior, or failure modes, but the consent gating is meaningful added context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core verb and resource, followed by two short sentences covering timing and the consent rule. The parenthetical screen inventory is slightly verbose but it earns its place by describing report contents.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a write tool with no output schema, the description covers what is produced, when to call it, and the one side-effectful parameter's consent requirement. The only notable gap is the undocumented target_score parameter, which an agent would have to infer.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 75%, so the schema carries most parameter meaning; the description reinforces the permission condition on 'open' but adds nothing about 'lang'. Most notably 'target_score' has no description in either the schema or the description, leaving its effect on the report unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Write the visual HTML report for a scan') and even enumerates the report's screens, so an agent knows exactly what gets produced. It does not, however, differentiate itself from the sibling slop_scan_html, which by name also appears to emit HTML, leaving a real ambiguity unresolved.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear timing guidance ('at the end of a rescue so the user finds the result waiting') and a conditional rule for the open parameter ('only if the user agreed'). No explicit when-not or named alternative is given, so the sibling routing question from slop_scan_html remains unanswered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

slop_rescue_planBuild a rescue planA
Read-only

Turn a scan into a prioritised, site-specific transformation plan: which facts to ask the owner for, quick clean-ups, copy rewrites, a design direction and trust fixes, each tied to findings, file:line locations and an estimated score gain. Follow the plan, then call slop_scan again to measure the change.

ParametersJSON Schema
NameRequiredDescriptionDefault
keepNoWhat the owner wants to keep no matter what (brand colours, logo, tone, sections).
langNoReport language. Use the language the user is writing in. Default: en.
scan_idYesThe scan id from a slop_scan report, e.g. "s1".
target_scoreNoScore to aim for. Default 20.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint and openWorldHint=false, so the description usefully adds that the output is a prescriptive, finding-linked plan with estimated score gains rather than raw analysis. It does not disclose cost, latency, whether it re-scans the site, or any limits on scan_id age, leaving the heavier behavioral burden partly unmet.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the transformation and its outputs, closing with the follow-up loop. Every clause carries information and nothing is padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description does the work of explaining what the caller receives — a prioritised plan with findings, file:line references, and estimated score gain — which is exactly what an agent needs to decide whether the result is usable. Only the ambiguity about how this differs from sibling report/guide tools remains.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with clear per-parameter docs (keep, lang, scan_id with an example, target_score with a default), so the schema already carries parameter meaning. The description adds no extra syntax or semantics for these parameters, which is the expected baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific transformation (scan → prioritised, site-specific plan) and enumerates the concrete artifacts produced (quick clean-ups, copy rewrites, design direction, trust fixes), each tied to findings and file:line locations. This clearly distinguishes it from slop_scan (which produces the input) and the other report/guide siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states the position in the workflow — turn a scan into a plan, then call slop_scan again to measure — which implies this runs after a scan. However, it gives no guidance on when to prefer this over slop_report, slop_fix, slop_guide, or slop_compare, which is the actual selection problem among eight siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

slop_scanScan for AI slopA

Scan a website URL, a local project folder (Next.js, Vite/React, Astro, Vue, Svelte, plain HTML, Markdown content…) or a single .html file for AI slop: generic copy, cliché phrasing, template "vibe-coded" design, placeholder leftovers and missing trust signals. Returns a 0-100 slop score, five category scores and findings ranked by impact, each with evidence, a fix and (for folders) file:line locations to edit. Re-scanning the same target automatically shows a before/after comparison. Prefer scanning the project folder when the user is working on the site's code; scan the URL for live sites.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoReport language. Use the language the user is writing in. Default: en.
pagesNoURL only: how many pages of the site to scan. The site is crawled from sitemap.xml and internal links (robots.txt respected), spread across sections; every page gets its own score and findings. Default 30. Use 1 for only the given page.
ignoreNoFolder only: sub-paths to skip, relative to the folder (e.g. ["docs", "src/legacy"]).
renderNoURL only: render with the locally installed Chrome/Edge. "auto" renders only when the server returns an empty JavaScript shell. Default auto.
targetYesA URL (https://example.com, localhost:3000), an absolute or relative project folder path, or a path to an .html file.
compareNoShow a before/after comparison with the previous scan of the same target in this session. Default true.
open_reportNoOpen the visual HTML report in the user's browser when the scan finishes. Only pass true if the user agreed to this. Default false; the report file is written either way.
include_ui_primitivesNoFolder only: also scan components/ui (shadcn primitives). Default false.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds real behavior beyond the annotations: crawling from sitemap.xml with robots.txt respected, optional local Chrome/Edge rendering, automatic before/after comparison on re-scan, and the fact that a report file is written even when the browser is not opened. It does not contradict readOnlyHint=false/destructiveHint=false, though it could say more about runtime cost and network scope for an openWorldHint tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose and return shape, then a concrete usage rule. The one long sentence with the framework list is dense but earns its place by defining scan scope; overall no filler sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 8 parameters, no output schema, and no return-value documentation in the schema, the description compensates by spelling out the return payload (score, five category scores, ranked findings with evidence, fix, and file:line) and covering the folder/URL/file scoping rules. An agent has what it needs to call this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 100%, but the description adds interpretation the schema lacks: which target forms count as a 'folder' (Next.js, Vite/React, Astro, Vue, Svelte, plain HTML, Markdown) and the folder-vs-URL-vs-file distinction that drives which parameters apply. That framing is genuinely additive rather than a restatement of the schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (scan) and the exact resources it accepts (URL, project folder with framework list, single .html file) plus what it detects (generic copy, cliché phrasing, placeholder leftovers, missing trust signals). The enumeration of supported project types and the description of the returned artifacts (0-100 score, five category scores, ranked findings) leave no ambiguity about what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the agent: 'Prefer scanning the project folder when the user is working on the site's code; scan the URL for live sites', and open_report adds a consent condition ('Only pass true if the user agreed'). It does not, however, distinguish itself from the closely-named sibling slop_scan_html, which an agent must resolve when the input is raw HTML rather than a file path.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

slop_scan_htmlScan pasted HTML for AI slopA

Scan raw HTML (for example a page the user pasted, or HTML you generated) for AI slop. Same report as slop_scan. Use slop_scan for URLs and folders.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoThe page URL, if known (helps detect builder domains).
htmlYesThe full HTML of the page.
langNoReport language. Use the language the user is writing in. Default: en.
labelNoA name for this page, used to pair before/after scans (e.g. "landing v2").

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds real behavioral value by stating the output is the 'same report as slop_scan', which lets an agent reason about return shape without an output schema. However, it does not reconcile readOnlyHint=false with what is nominally a pure analysis operation, nor does it mention side effects, caching, or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the core action and the disambiguation rule immediately after. No filler, no restating of the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a four-parameter, single-required-input tool with no output schema, the description covers purpose, input routing, and output equivalence with a sibling. The only mild gap is the absence of any note about how large an HTML payload can be handled or what the caller should do with the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so url, html, lang, and label are all documented in the schema (including the enum default and the before/after pairing use of label). The description adds no parameter-level detail beyond what the schema already provides, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (scan raw HTML for AI slop) and scopes the input modality to pasted or self-generated HTML. It explicitly distinguishes itself from the sibling slop_scan by naming which input types belong to each.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit routing rule: use this tool for raw HTML, use slop_scan for URLs and folders. Both the 'when to use' and the named alternative are stated, leaving nothing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 8 tool updatesv0.1.0
    • First observedslop_compare
    • First observedslop_fix
    • First observedslop_guide
    • First observedslop_page
    • First observedslop_report
    • First observedslop_rescue_plan
    • First observedslop_scan
    • First observedslop_scan_html

TDQS

A4/5.0

Scored across 8 tools

Disambiguation4/5

Most tools target distinct actions: scanning (slop_scan/slop_scan_html), planning (slop_rescue_plan), comparing (slop_compare), guiding (slop_guide) and fixing (slop_fix). The only mild overlap is between slop_report (whole-scan visual report), slop_page (per-page report) and slop_fix (per-finding steps), but the descriptions clearly differentiate scope.

Naming Consistency5/5

Every tool uses a consistent snake_case 'slop_' prefix with a clear action noun (slop_scan, slop_guide, slop_compare, slop_report, slop_page, slop_fix). The single variant slop_scan_html is a readable, predictable extension of the base verb.

Tool Count5/5

Eight tools is well-scoped for a scan-and-rescue workflow, with each tool covering a distinct stage (scan, guide, plan, compare, report, page, fix). No redundant or filler tools.

Completeness4/5

The surface covers the full lifecycle: scanning (URL/folder/HTML), reference guides, prioritised planning, comparison, reporting and per-finding fixes, so no obvious dead ends. Minor gap: no explicit scan history or listing tool, though re-scan before/after and slop_compare largely compensate.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to score drafts for AI-content-spam risk before publishing and scan entire sites, providing a pre-publish QA gate with pass/warn/fail verdicts.
    2 npm
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables users to scan any website for AI search visibility, producing AEO, GEO, agent readiness, and mention-readiness scores along with AI identity and business profile insights. Paid tools extend this to competitive comparisons, detailed audits, and generated fixes.
    4
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI coding agents to score any live domain for visibility in AI answer engines and then generate and apply paste-ready fixes — robots.txt, llms.txt, JSON-LD, titles and meta — either directly to project files or as click-by-click admin steps for hosted platforms like Squarespace, Wix and Shopify. It also re-checks edits, reads server access logs to confirm which crawlers actually arrived and whether they were genuine, and offers hosted tools for citation testing, score history, drift and competitor comparison.
    81 npm
    MIT