Skip to main content
Glama

Check the site for invented content

check_honesty
Read-onlyIdempotent

Scan a website for unearned claims like fake testimonials, placeholder text, and misattributed quotes. Get file:line reports so you can verify and fix them.

Instructions

Scans a site for content that claims something nobody earned: testimonials, star ratings, "as seen in", customer counts, lorem ipsum, placeholder brand names and contact details, and quotations that carry an attribution.

The attribution check is the one a generic linter misses. A name set on its own line under a quotation is an attribution even with no "said" and no dash, and a misattributed quote is a false statement about a real person. Report it, find a source, and record the source in .honesty.json to silence it. An entry with no source silences nothing.

Reports file:line for everything. status is "fail" only when there are errors; warnings are things to verify, not things that are definitely wrong.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
ignoreNoFolder or file names to skip. Defaults cover node_modules, .git, dist, build and friends.
ledgerNoPath to the verified-quotations ledger. Default: <directory>/.honesty.json
strictNoTreat warnings as failures too. Default false.
directoryYesFull path to the site folder, for example /Users/brian/Sites/chess-lessons.
extensionsNoFile extensions to scan. Default: .html .htm .md .markdown .txt .jsx .tsx .vue .svelte .astro

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
fixNo
whyNo
toolYesWhich tool produced this.
countsNo
ledgerNo
statusYespass = checked and clean. fail = checked and found problems. skipped = nothing was measured. error = the tool could not run.
problemNo
findingsNo
headlineYesOne sentence verdict, safe to show a non-technical user.
directoryNo
error_codeNoSet only when status is "error".
files_scannedNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv2.0.0

TDQS

A3.9/5.0
Behavior5/5

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

Beyond the readOnly and idempotent annotations, the description adds meaningful behavior: it reports file:line, defines the 'fail' status as error-only, explains warnings as items to verify, and describes how entries in .honesty.json silence findings. This gives the agent a clear model of tool behavior without contradicting the annotations.

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?

The description is organized into three purposeful paragraphs: what is scanned, the attribution nuance, and the reporting/status behavior. Every sentence adds relevant information, and the most important scoping details are front-loaded.

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?

Together with the fully described schema, annotations, and output schema, the description covers the scan scope, the subtle attribution heuristic, the ledger workflow, and the output status semantics. Nothing essential for invoking the tool correctly is missing, apart from sibling routing, which is captured separately.

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?

The input schema covers all five parameters with descriptions, so the schema already carries the parameter meaning. The description references the ledger and directory behavior but does not need to add per-parameter detail. The baseline of 3 applies because the description does not materially enrich parameter semantics.

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?

The description names a specific verb and resource: it scans a site for content claiming something nobody earned, with concrete examples like testimonials, star ratings, 'as seen in', and attributed quotations. This is clear and not tautological, but it does not explicitly distinguish itself from sibling tools such as check_copy or check_single_source.

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

Usage Guidelines2/5

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

The description gives no explicit guidance about when to use this tool versus alternatives. The closest is the claim that the attribution check is one a generic linter misses, which implies a comparative advantage but does not state when to choose this tool over sibling tools or what to use instead.

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