Skip to main content
Glama

lint_cv

Check a CV or cover-letter HTML draft against your configurable anti-fabrication rules before PDF rendering, optionally verify page count and PDF staleness afterward.

Instructions

Read-only — never modifies html_path, pdf_path, or any other file. Lints a CV/cover-letter HTML file against YOUR OWN configurable rule set (banned phrases, skills-section bans, achievement-weight overclaims, title/GDPR/link checks, page-count limits), read from LINT_RULES_PATH (an env var, not a parameter here; defaults to a bundled generic example). Mechanical matching only — cannot catch semantic fabrication (two true facts combined into a false-sounding one), which still needs a human or independent review. Call before render_pdf while iterating on a draft (cheap, no Chrome, HTML-only checks); call again after render_pdf with pdf_path to also check page count and staleness — render_pdf itself runs none of this.

Input Schema

NameRequiredDescriptionDefault
pdf_pathNoOptional. Omit to run only the HTML-based checks (content, skills, weight, title, links). Pass the already-rendered PDF's path to ALSO check its page count against your configured page_limits and confirm it isn't older than html_path — this tool never renders a PDF itself; call render_pdf first if pdf_path doesn't exist yet.
html_pathYesPath to the HTML file to lint, as currently saved on disk.

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / html_path / description
      Previous value: -"Path to the HTML file to lint."New value: +"Path to the HTML file to lint, as currently saved on disk."
    • changedInput schema / properties / pdf_path / description
      Previous value: -"If given, also checks page count and freshness."New value: +"Optional. Omit to run only the HTML-based checks (content, skills, weight, title, links). Pass the already-rendered PDF's path to ALSO check its page count against your configured page_limits and confirm it isn't older than html_path — this tool never renders a PDF itself; call render_pdf first if pdf_path doesn't exist yet."
  2. First observedv0.1.0

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden and does so: it declares read-only/non-mutating behavior, discloses that rules come from LINT_RULES_PATH rather than a parameter, states the tool is cheap and HTML-only (no Chrome), and openly scopes the limitation to mechanical matching that cannot catch semantic fabrication.

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-loads the most important guarantee (read-only) and every sentence carries information: purpose, config source, limitation, and call timing. It is dense and somewhat run-on across five clauses, but no sentence is filler.

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?

An output schema exists so return format need not be explained; the description covers everything else an agent needs — mutation safety, configuration source and defaults, the draft-vs-post-render workflow, and the honest boundary of what linting can detect.

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 100%, so the schema baseline is 3; the description adds real value by explaining what omitting pdf_path loses, what passing it enables (page count vs configured page_limits, staleness vs html_path), and by documenting the out-of-band LINT_RULES_PATH configuration that the schema cannot express.

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 ('Lints') and resource (a CV/cover-letter HTML file), then enumerates the rule categories checked (banned phrases, skills bans, overclaims, title/GDPR/link, page limits). It is clearly distinguishable from siblings like render_pdf, which it explicitly says runs none of this.

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 explicit when-to-use sequencing: call before render_pdf while iterating on a draft, and again after render_pdf with pdf_path to add page-count and staleness checks. It also names render_pdf as the complementary tool and clarifies it does not itself lint.

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