Skip to main content
Glama

Audit page themes and contrast

audit_theme
Read-onlyIdempotent

Run a read-only theme audit on a public HTTP(S) page, free in full. Fetches but never modifies the page, then checks inline style CSS for brace errors, token gaps, incomplete dark themes, missing body backgrounds, and WCAG body-text contrast. External stylesheets are counted but not fetched. Use audit_endpoint instead for MCP, CORS, discovery, and payment readiness.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
urlYesPublic HTTP(S) page to fetch and inspect. Direct localhost, .local, loopback, private IPv4, and IPv6-literal targets are rejected. Inline style CSS is analyzed; external stylesheets are not fetched.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
noteNoAudit coverage and inline-style limitation.
specNo
errorNoMachine-readable target or fetch failure.
gradeNoOverall grade derived from the check counts.
checksNoEvery inline-CSS theme, token, background, and contrast finding.
detailNoFetch failure detail.
reasonNoWhy the target URL was rejected.
targetNoCanonical page URL inspected.
summaryNo
checkedAtNo

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. Changed13 schema fields changed
    • addedInput schema / additionalProperties
      Added value: +false
    • changedInput schema / properties / url / description
      Previous value: -"Page URL to audit, e.g. https://your-page.example.com"New value: +"Public HTTP(S) page to fetch and inspect. Direct localhost, .local, loopback, private IPv4, and IPv6-literal targets are rejected. Inline style CSS is analyzed; external stylesheets are not fetched."
    • changedOutput schema / additionalProperties
      Previous value: -trueNew value: +false
    • addedOutput schema / properties / checkedAt
      Added value: +{
      +  "format": "date-time",
      +  "type": "string"
      +}
    • addedOutput schema / properties / checks
      Added value: +{
      +  "description": "Every inline-CSS theme, token, background, and contrast finding.",
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "check": {
      +        "type": "string"
      +      },
      +      "detail": {
      +        "type": "string"
      +      },
      +      "remediation": {
      +        "type": "string"
      +      },
      +      "status": {
      +        "enum": [
      +          "pass",
      +          "warn",
      +          "fail",
      +          "na"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "check",
      +      "status",
      +      "detail"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • changedOutput schema / properties / detail / description
      Previous value: -"Human-readable error or status detail."New value: +"Fetch failure detail."
    • changedOutput schema / properties / error / description
      Previous value: -"Machine-readable error code, when the operation did not complete."New value: +"Machine-readable target or fetch failure."
    • addedOutput schema / properties / grade
      Added value: +{
      +  "description": "Overall grade derived from the check counts.",
      +  "enum": [
      +    "ready",
      +    "mostly-ready",
      +    "needs-work"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / note
      Added value: +{
      +  "description": "Audit coverage and inline-style limitation.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / reason
      Added value: +{
      +  "description": "Why the target URL was rejected.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / spec
      Added value: +{
      +  "enum": [
      +    "knownfix-theme-audit/0.1"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / summary
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "fail": {
      +      "minimum": 0,
      +      "type": "integer"
      +    },
      +    "na": {
      +      "minimum": 0,
      +      "type": "integer"
      +    },
      +    "pass": {
      +      "minimum": 0,
      +      "type": "integer"
      +    },
      +    "warn": {
      +      "minimum": 0,
      +      "type": "integer"
      +    }
      +  },
      +  "required": [
      +    "pass",
      +    "warn",
      +    "fail",
      +    "na"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / target
      Added value: +{
      +  "description": "Canonical page URL inspected.",
      +  "format": "uri",
      +  "type": "string"
      +}
  2. Changed2 schema fields changed
    • addedInput schema / properties / url / format
      Added value: +"uri"
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": true,
      +  "properties": {
      +    "detail": {
      +      "description": "Human-readable error or status detail.",
      +      "type": "string"
      +    },
      +    "error": {
      +      "description": "Machine-readable error code, when the operation did not complete.",
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
  3. Added

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already mark the tool as read-only, idempotent, open-world, and non-destructive, but the description adds valuable behavioral context: it fetches the page, never modifies it, analyzes inline style CSS, only counts external stylesheets without fetching them, and rejects certain target types. This goes beyond what annotations provide and clarifies the tool's actual runtime behavior.

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 three sentences with no wasted words: it front-loads the core action, details the checks and fetch behavior, and closes with a sibling-tool pointer. Every sentence contributes to correct tool selection and use.

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 one well-documented parameter, rich annotations, an output schema, explicit target restrictions, and a clear sibling alternative, the description fully covers what an agent needs to invoke the tool correctly. There are no significant missing details about side effects, scope, or selection.

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%, and the schema's url parameter already explains the target restrictions and CSS analysis behavior. The description reinforces the same points but adds little new semantic detail beyond the schema, so the baseline score of 3 is appropriate.

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 opens with a specific verb and resource: 'Run a read-only theme audit on a public HTTP(S) page.' It then enumerates concrete audit checks such as brace errors, token gaps, incomplete dark themes, missing body backgrounds, and WCAG body-text contrast, making the tool's function unambiguous and distinct from its siblings.

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?

The description clearly states when to use this tool versus audit_endpoint: 'Use audit_endpoint instead for MCP, CORS, discovery, and payment readiness.' It also implies the appropriate use case (theme/contrast/CSS auditing) and notes URL restrictions, giving an agent enough context to select between alternatives.

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.

TDQS

A4.4/5.0
Disambiguation4/5

Most tools target clearly distinct resources or actions, and cross-references like 'use get_fix instead' sharply reduce confusion. A minor source of ambiguity is the cluster of redemption/offer tools (get_fix, get_skill, get_offer) and the three status-check tools, but their descriptions disambiguate them well.

Naming Consistency5/5

All tools follow a consistent lowercase snake_case verb_noun pattern: audit_, check_, get_, list_, order_, request_, search_, submit_. The naming style is uniform and predictable across different domains.

Tool Count4/5

At 17 tools, the surface is slightly above the ideal 3-15 range but remains justified given the server's broad scope: catalog browsing, paid redemption, audits, services, requests, submissions, and checkout support. It is dense but not bloated.

Completeness4/5

The lifecycle coverage is strong: discover, get, request, submit, check status, order, pay, and redeem are all represented. Minor gaps exist, such as no cancellation/refund path, no way to update a submitted fix, and merch ordering delegated entirely to an external storefront.