Skip to main content
Glama

DESIGN.md Linter & Extractor

Lint a DESIGN.md file with the official linter

lint_design_md
Read-onlyIdempotent

Lints one DESIGN.md file with the official @google/design.md 0.4.0 linter, the same check as npx @google/design.md lint DESIGN.md. Best for: checking a DESIGN.md file the user pasted before it goes to a coding agent. Pass the whole file contents in text, including the YAML front matter between the --- lines; a file path or URL will not work, so ask the user to paste the file. Returns: each finding with its severity, rule and token path (broken token references, low text contrast, missing primary color, unused colors, section order, unknown keys), the error, warning and note counts, the sections found and the token counts. The file is valid when it has no errors. Front matter that is not valid YAML comes back as a finding, not an error. Do not use for: comparing two versions (use diff_design_md) or reading a website (use extract_design_md).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
textYesThe whole DESIGN.md file contents, up to 60000 characters: the YAML front matter between --- lines, then the ## sections. Not a file path or URL. Example: "--- name: Paper colors: primary: "#1D1D1B" --- ## Overview ..."

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
validYesTrue when there are no errors, which is when `npx @google/design.md lint` exits 0
countsYes
linterYes
summaryYes
findingsYes
sectionsYesThe ## section headings found, in order
tokenCountsYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, and the description adds real behavioral context beyond them: input must be pasted text (no paths/URLs), the validity criterion (no errors), and the non-obvious rule that invalid YAML front matter surfaces as a finding rather than an error. It also enumerates the finding categories returned.

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?

Front-loaded with the core action and linter identity, then cleanly segmented into 'Best for', 'Returns', and 'Do not use for'. Despite its length, every sentence carries distinct information with no redundancy.

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, yet the description still summarizes findings and counts usefully. Combined with full annotation coverage and a fully documented single parameter, an agent has everything needed to invoke 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 100% and the schema already states the 'not a file path or URL' constraint, so baseline is 3. The description goes slightly further by emphasizing that the whole file including the YAML front matter between the --- lines must be passed and instructing the agent to ask the user to paste it, which adds actionable meaning for the single required parameter.

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 (one DESIGN.md file), names the exact linter and version, and gives the equivalent CLI command. It clearly distinguishes itself from siblings by naming diff_design_md and extract_design_md in the exclusion list.

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?

Explicit 'Best for' context (checking a pasted file before handing it to a coding agent) and an explicit 'Do not use for' clause routing to diff_design_md and extract_design_md. When-to-use, when-not, and alternatives are all present.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.