Skip to main content
Glama

Audit a website

audit_website
Read-onlyIdempotent

Run the full 216-check audit of a website and return the overall score, every category score, and the ranked list of what to fix first. Use this when the user asks a broad question about a site: "how is my website", "what is wrong with it", "is this site any good", or when you need grounding before advising on changes. Takes roughly 2-8 seconds. If the user only cares about one area, check_category is faster and returns less.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "url": "<url>"
    },
    "name": "audit_website"
  }
}

Input Schema

NameRequiredDescriptionDefault
urlYesThe website to inspect. A bare domain works: "example.com" is treated as https://example.com.
detailNosummary: scores plus priority actions (default, best for most answers). markdown: the whole report as prose written for a model to read. full: the complete JSON including every check, link, script and email found.summary

Output Schema

NameRequiredDescriptionDefault
urlYesThe URL that was measured, after redirects.
gradeYesLetter grade from A+ to F.
scoreYesOverall score out of 100.
countsYesChecks by status. The last five are undetermined states and are never scored as passes.
categoriesYesEvery category with its own score.
undeterminedNoCheck ids that reached no verdict. Never treat these as passes.
priorityActionsNoFindings ranked by points recovered per unit of effort.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / url / description
      Previous value: -"The website to inspect. A bare domain works — \"example.com\" is treated as https://example.com."New value: +"The website to inspect. A bare domain works: \"example.com\" is treated as https://example.com."
  2. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "categories": {
      +      "description": "Every category with its own score.",
      +      "items": {
      +        "properties": {
      +          "id": {
      +            "type": "string"
      +          },
      +          "name": {
      +            "type": "string"
      +          },
      +          "score": {
      +            "description": "Null when no check in the category reached a verdict.",
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "counts": {
      +      "description": "Checks by status. The last five are undetermined states and are never scored as passes.",
      +      "properties": {
      +        "blocked": {
      +          "type": "integer"
      +        },
      +        "fail": {
      +          "type": "integer"
      +        },
      +        "inconclusive": {
      +          "type": "integer"
      +        },
      +        "info": {
      +          "type": "integer"
      +        },
      +        "na": {
      +          "type": "integer"
      +        },
      +        "pass": {
      +          "type": "integer"
      +        },
      +        "requires_browser": {
      +          "type": "integer"
      +        },
      +        "timeout": {
      +          "type": "integer"
      +        },
      +        "unknown": {
      +          "type": "integer"
      +        },
      +        "warn": {
      +          "type": "integer"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "grade": {
      +      "description": "Letter grade from A+ to F.",
      +      "type": "string"
      +    },
      +    "priorityActions": {
      +      "description": "Findings ranked by points recovered per unit of effort.",
      +      "items": {
      +        "properties": {
      +          "action": {
      +            "type": "string"
      +          },
      +          "category": {
      +            "type": "string"
      +          },
      +          "pointsIfFixed": {
      +            "description": "Arithmetic from the weights that produced the score, not an estimate.",
      +            "type": "number"
      +          },
      +          "rank": {
      +            "type": "integer"
      +          },
      +          "severity": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "title": {
      +            "type": "string"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "score": {
      +      "description": "Overall score out of 100.",
      +      "type": "number"
      +    },
      +    "undetermined": {
      +      "description": "Check ids that reached no verdict. Never treat these as passes.",
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "url": {
      +      "description": "The URL that was measured, after redirects.",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "url",
      +    "score",
      +    "grade",
      +    "counts",
      +    "categories"
      +  ],
      +  "type": "object"
      +}
  3. First observed

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context with the 2-8 second runtime estimate, though it does not discuss auth, rate limits, or other operational constraints.

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 front-loaded with the core action and output, then moves to usage guidance, runtime, and the sibling alternative. Every sentence contributes useful selection or expectation-setting information without waste.

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?

Given the output schema, rich annotations, and fully described input schema, the description supplies what an agent needs: purpose, when to use it, expected output category, runtime, and alternative routing. Nothing critical for correct invocation 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 input schema already documents both url and detail, including the detail enum meanings. The description does not add parameter-level information beyond what the schema provides, 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 states a specific verb and resource: run a full 216-check audit of a website. It also states the return shape (overall score, category scores, ranked fixes) and explicitly distinguishes this from check_category when the user cares about only one area.

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?

It gives explicit user-intent examples for when to use this tool, such as broad questions about a website, and names the alternative check_category for narrower needs. This is clear when-to-use and when-to-use-something-else guidance.

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.

Resources