Skip to main content
Glama

Technical SEO audit

audit_seo

Crawl a site and audit technical SEO: crawlability, indexation, titles/meta, headings, canonical, structured data, broken internal links, redirect chains, AI-crawler policy. Returns prioritized findings with fixes. Provide target to start an audit, or jobId to poll a running one. Long audits may return status: running with a jobId. Wait retryAfterMs, then call the same tool using the returned pollArguments, including target and jobId, until it returns the final result. Copy pollArguments unchanged; do not add scan options. Clients that support jobId alone may also use it. Polling retrieves the same audit without starting another scan or reserving more quota. Do not present running as completed and do not start a replacement audit while it is running.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
langNoReport language (default en): en, tr, es, de, fr, pt, it, ja, zh.
jobIdNoResume an existing audit by polling this same tool with the returned pollArguments. Keep target and jobId unchanged. If repeating scan options, supply every original argument unchanged. Never invent a jobId.
targetNoTarget website URL or domain you own / are authorized to audit (e.g. https://example.com).
maxPagesNoMaximum pages per crawl. Defaults to the connected plan maximum, bounded by remaining allowance.
searchConsoleDaysNoSearch Console reporting window in days (default 28).
includeSearchConsoleNoInclude available Search Console evidence from the account’s existing Google connection, subject to its keyword allowance. Missing access does not stop the website audit.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • removedInput schema / anyOf
      Removed value: -[
      -  {
      -    "required": [
      -      "target"
      -    ]
      -  },
      -  {
      -    "required": [
      -      "jobId"
      -    ]
      -  }
      -]
  2. Changed3 schema fields changed
    • changedInput schema / anyOf
      Previous value: -[
      -  {
      -    "required": [
      -      "target"
      -    ]
      -  },
      -  {
      -    "maxProperties": 1,
      -    "required": [
      -      "jobId"
      -    ]
      -  }
      -]New value: +[
      +  {
      +    "required": [
      +      "target"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "jobId"
      +    ]
      +  }
      +]
    • changedInput schema / properties / jobId / description
      Previous value: -"Resume an existing audit by polling this same tool with its returned jobId. Prefer jobId alone; if repeating other arguments, supply every original argument unchanged. Never invent a jobId."New value: +"Resume an existing audit by polling this same tool with the returned pollArguments. Keep target and jobId unchanged. If repeating scan options, supply every original argument unchanged. Never invent a jobId."
    • changedOutput schema / oneOf
      Previous value: -[
      -  {
      -    "oneOf": [
      -      {
      -        "additionalProperties": true,
      -        "properties": {
      -          "auditDetails": {
      -            "additionalProperties": true,
      -            "description": "Complete available scope, check states and measurement evidence; unmeasured checks are not passes.",
      -            "type": "object"
      -          },
      -          "counts": {
      -            "additionalProperties": false,
      -            "description": "Finding totals grouped by normalized severity.",
      -            "properties": {
      -              "critical": {
      -                "description": "Number of critical findings.",
      -                "minimum": 0,
      -                "type": "integer"
      -              },
      -              "high": {
      -                "description": "Number of high-severity findings.",
      -                "minimum": 0,
      -                "type": "integer"
      -              },
      -              "info": {
      -                "description": "Number of informational findings.",
      -                "minimum": 0,
      -                "type": "integer"
      -              },
      -              "low": {
      -                "description": "Number of low-severity findings.",
      -                "minimum": 0,
      -                "type": "integer"
      -              },
      -              "medium": {
      -                "description": "Number of medium-severity findings.",
      -                "minimum": 0,
      -                "type": "integer"
      -              }
      -            },
      -            "required": [
      -              "critical",
      -              "high",
      -              "medium",
      -              "low",
      -              "info"
      -            ],
      -            "type": "object"
      -          },
      -          "coverageStatus": {
      -            "description": "Availability of measurements within the requested methods and account scope; not a claim to test every possible website behavior.",
      -            "enum": [
      -              "measured",
      -              "partial",
      -              "unavailable",
      -              "not_applicable"
      -            ],
      -            "type": "string"
      -          },
      -          "executionComplete": {
      -            "description": "Whether all requested pillar runners returned. This is separate from measurement coverage.",
      -            "type": "boolean"
      -          },
      -          "findings": {
      -            "description": "Prioritized findings with evidence, impact, and remediation.",
      -            "items": {
      -              "additionalProperties": false,
      -              "properties": {
      -                "category": {
      -                  "description": "Stable audit category for grouping related findings.",
      -                  "type": "string"
      -                },
      -                "evidence": {
      -                  "description": "Bounded observation that supports the finding.",
      -                  "type": "string"
      -                },
      -                "findingKey": {
      -                  "description": "Deterministic pillar-scoped identity for before/after comparison.",
      -                  "maxLength": 512,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "impact": {
      -                  "description": "Why the finding matters to the audited website.",
      -                  "type": "string"
      -                },
      -                "location": {
      -                  "description": "Observed URL or path with credentials and query secrets removed, when available.",
      -                  "type": "string"
      -                },
      -                "remediation": {
      -                  "description": "Concrete recommended fix or mitigation.",
      -                  "type": "string"
      -                },
      -                "severity": {
      -                  "description": "Normalized finding severity: critical, high, medium, low, or info.",
      -                  "type": "string"
      -                },
      -                "title": {
      -                  "description": "Short human-readable finding title.",
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "findingKey",
      -                "severity",
      -                "title",
      -                "evidence",
      -                "impact",
      -                "remediation",
      -                "category"
      -              ],
      -              "type": "object"
      -            },
      -            "type": "array"
      -          },
      -          "findingsTruncated": {
      -            "description": "True when additional findings exist outside this response.",
      -            "type": "boolean"
      -          },
      -          "grade": {
      -            "description": "Human-readable grade, or null when unavailable.",
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "kind": {
      -            "description": "Audit pillar represented by this result.",
      -            "type": "string"
      -          },
      -          "passingChecks": {
      -            "description": "Number of checks that passed or reported protection.",
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "passingFindings": {
      -            "description": "Positive observations retained with their complete evidence.",
      -            "items": {
      -              "additionalProperties": false,
      -              "properties": {
      -                "category": {
      -                  "description": "Stable audit category for grouping related findings.",
      -                  "type": "string"
      -                },
      -                "evidence": {
      -                  "description": "Bounded observation that supports the finding.",
      -                  "type": "string"
      -                },
      -                "findingKey": {
      -                  "description": "Deterministic pillar-scoped identity for before/after comparison.",
      -                  "maxLength": 512,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "impact": {
      -                  "description": "Why the finding matters to the audited website.",
      -                  "type": "string"
      -                },
      -                "location": {
      -                  "description": "Observed URL or path with credentials and query secrets removed, when available.",
      -                  "type": "string"
      -                },
      -                "remediation": {
      -                  "description": "Concrete recommended fix or mitigation.",
      -                  "type": "string"
      -                },
      -                "severity": {
      -                  "description": "Normalized finding severity: critical, high, medium, low, or info.",
      -                  "type": "string"
      -                },
      -                "title": {
      -                  "description": "Short human-readable finding title.",
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "findingKey",
      -                "severity",
      -                "title",
      -                "evidence",
      -                "impact",
      -                "remediation",
      -                "category"
      -              ],
      -              "type": "object"
      -            },
      -            "type": "array"
      -          },
      -          "returnedFindings": {
      -            "description": "Number of findings included in this response.",
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "score": {
      -            "description": "Measured score from 0 to 100, or null when unavailable.",
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "status": {
      -            "description": "Completed when requested measurements are available; partial when a requested runner or measurement is unavailable.",
      -            "enum": [
      -              "completed",
      -              "partial"
      -            ],
      -            "type": "string"
      -          },
      -          "target": {
      -            "description": "Canonical audited target.",
      -            "type": "string"
      -          },
      -          "total": {
      -            "description": "Total findings produced before response truncation.",
      -            "minimum": 0,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "target",
      -          "kind",
      -          "score",
      -          "grade",
      -          "counts",
      -          "total",
      -          "returnedFindings",
      -          "findingsTruncated",
      -          "passingChecks",
      -          "findings"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "additionalProperties": false,
      -        "properties": {
      -          "executionComplete": {
      -            "const": false,
      -            "description": "False until the entire audit result is ready for delivery.",
      -            "type": "boolean"
      -          },
      -          "jobId": {
      -            "description": "Opaque temporary job identifier bound to this account, tool and MCP surface.",
      -            "pattern": "^mj_[A-Za-z0-9_-]{32}$",
      -            "type": "string"
      -          },
      -          "nextAction": {
      -            "const": "poll_same_tool",
      -            "description": "Call this same tool again with pollArguments.",
      -            "type": "string"
      -          },
      -          "pollArguments": {
      -            "additionalProperties": false,
      -            "description": "Arguments for retrieving this existing audit without starting another scan.",
      -            "properties": {
      -              "jobId": {
      -                "description": "The same opaque audit job identifier.",
      -                "pattern": "^mj_[A-Za-z0-9_-]{32}$",
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "jobId"
      -            ],
      -            "type": "object"
      -          },
      -          "retryAfterMs": {
      -            "description": "Suggested delay in milliseconds before polling this job again.",
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "status": {
      -            "const": "running",
      -            "description": "The audit is still executing or completing durable delivery.",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "status",
      -          "jobId",
      -          "executionComplete",
      -          "nextAction",
      -          "pollArguments",
      -          "retryAfterMs"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "additionalProperties": false,
      -        "properties": {
      -          "auditExecuted": {
      -            "const": false,
      -            "description": "This request did not execute a new audit.",
      -            "type": "boolean"
      -          },
      -          "reason": {
      -            "description": "The recoverable job request prerequisite.",
      -            "enum": [
      -              "audit_job_busy",
      -              "audit_job_unavailable",
      -              "audit_job_argument_mismatch",
      -              "audit_job_invalid_arguments"
      -            ],
      -            "type": "string"
      -          },
      -          "status": {
      -            "const": "action_required",
      -            "description": "This request did not start a new audit.",
      -            "type": "string"
      -          },
      -          "usageConsumed": {
      -            "const": false,
      -            "description": "This request did not consume additional audit allowance.",
      -            "type": "boolean"
      -          }
      -        },
      -        "required": [
      -          "status",
      -          "reason",
      -          "auditExecuted",
      -          "usageConsumed"
      -        ],
      -        "type": "object"
      -      }
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "auditExecuted": {
      -        "const": false,
      -        "type": "boolean"
      -      },
      -      "reason": {
      -        "enum": [
      -          "entitlement_required",
      -          "target_verification_required",
      -          "target_reverification_required",
      -          "verification_scope_required",
      -          "usage_limit_reached",
      -          "authorization_consent_required"
      -        ],
      -        "type": "string"
      -      },
      -      "status": {
      -        "const": "action_required",
      -        "type": "string"
      -      },
      -      "usageConsumed": {
      -        "const": false,
      -        "type": "boolean"
      -      }
      -    },
      -    "required": [
      -      "status",
      -      "reason",
      -      "auditExecuted",
      -      "usageConsumed"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "oneOf": [
      +      {
      +        "additionalProperties": true,
      +        "properties": {
      +          "auditDetails": {
      +            "additionalProperties": true,
      +            "description": "Complete available scope, check states and measurement evidence; unmeasured checks are not passes.",
      +            "type": "object"
      +          },
      +          "counts": {
      +            "additionalProperties": false,
      +            "description": "Finding totals grouped by normalized severity.",
      +            "properties": {
      +              "critical": {
      +                "description": "Number of critical findings.",
      +                "minimum": 0,
      +                "type": "integer"
      +              },
      +              "high": {
      +                "description": "Number of high-severity findings.",
      +                "minimum": 0,
      +                "type": "integer"
      +              },
      +              "info": {
      +                "description": "Number of informational findings.",
      +                "minimum": 0,
      +                "type": "integer"
      +              },
      +              "low": {
      +                "description": "Number of low-severity findings.",
      +                "minimum": 0,
      +                "type": "integer"
      +              },
      +              "medium": {
      +                "description": "Number of medium-severity findings.",
      +                "minimum": 0,
      +                "type": "integer"
      +              }
      +            },
      +            "required": [
      +              "critical",
      +              "high",
      +              "medium",
      +              "low",
      +              "info"
      +            ],
      +            "type": "object"
      +          },
      +          "coverageStatus": {
      +            "description": "Availability of measurements within the requested methods and account scope; not a claim to test every possible website behavior.",
      +            "enum": [
      +              "measured",
      +              "partial",
      +              "unavailable",
      +              "not_applicable"
      +            ],
      +            "type": "string"
      +          },
      +          "executionComplete": {
      +            "description": "Whether all requested pillar runners returned. This is separate from measurement coverage.",
      +            "type": "boolean"
      +          },
      +          "findings": {
      +            "description": "Prioritized findings with evidence, impact, and remediation.",
      +            "items": {
      +              "additionalProperties": false,
      +              "properties": {
      +                "category": {
      +                  "description": "Stable audit category for grouping related findings.",
      +                  "type": "string"
      +                },
      +                "evidence": {
      +                  "description": "Bounded observation that supports the finding.",
      +                  "type": "string"
      +                },
      +                "findingKey": {
      +                  "description": "Deterministic pillar-scoped identity for before/after comparison.",
      +                  "maxLength": 512,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "impact": {
      +                  "description": "Why the finding matters to the audited website.",
      +                  "type": "string"
      +                },
      +                "location": {
      +                  "description": "Observed URL or path with credentials and query secrets removed, when available.",
      +                  "type": "string"
      +                },
      +                "remediation": {
      +                  "description": "Concrete recommended fix or mitigation.",
      +                  "type": "string"
      +                },
      +                "severity": {
      +                  "description": "Normalized finding severity: critical, high, medium, low, or info.",
      +                  "type": "string"
      +                },
      +                "title": {
      +                  "description": "Short human-readable finding title.",
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "findingKey",
      +                "severity",
      +                "title",
      +                "evidence",
      +                "impact",
      +                "remediation",
      +                "category"
      +              ],
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          "findingsTruncated": {
      +            "description": "True when additional findings exist outside this response.",
      +            "type": "boolean"
      +          },
      +          "grade": {
      +            "description": "Human-readable grade, or null when unavailable.",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "kind": {
      +            "description": "Audit pillar represented by this result.",
      +            "type": "string"
      +          },
      +          "passingChecks": {
      +            "description": "Number of checks that passed or reported protection.",
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "passingFindings": {
      +            "description": "Positive observations retained with their complete evidence.",
      +            "items": {
      +              "additionalProperties": false,
      +              "properties": {
      +                "category": {
      +                  "description": "Stable audit category for grouping related findings.",
      +                  "type": "string"
      +                },
      +                "evidence": {
      +                  "description": "Bounded observation that supports the finding.",
      +                  "type": "string"
      +                },
      +                "findingKey": {
      +                  "description": "Deterministic pillar-scoped identity for before/after comparison.",
      +                  "maxLength": 512,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "impact": {
      +                  "description": "Why the finding matters to the audited website.",
      +                  "type": "string"
      +                },
      +                "location": {
      +                  "description": "Observed URL or path with credentials and query secrets removed, when available.",
      +                  "type": "string"
      +                },
      +                "remediation": {
      +                  "description": "Concrete recommended fix or mitigation.",
      +                  "type": "string"
      +                },
      +                "severity": {
      +                  "description": "Normalized finding severity: critical, high, medium, low, or info.",
      +                  "type": "string"
      +                },
      +                "title": {
      +                  "description": "Short human-readable finding title.",
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "findingKey",
      +                "severity",
      +                "title",
      +                "evidence",
      +                "impact",
      +                "remediation",
      +                "category"
      +              ],
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          "returnedFindings": {
      +            "description": "Number of findings included in this response.",
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "score": {
      +            "description": "Measured score from 0 to 100, or null when unavailable.",
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "status": {
      +            "description": "Completed when requested measurements are available; partial when a requested runner or measurement is unavailable.",
      +            "enum": [
      +              "completed",
      +              "partial"
      +            ],
      +            "type": "string"
      +          },
      +          "target": {
      +            "description": "Canonical audited target.",
      +            "type": "string"
      +          },
      +          "total": {
      +            "description": "Total findings produced before response truncation.",
      +            "minimum": 0,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "target",
      +          "kind",
      +          "score",
      +          "grade",
      +          "counts",
      +          "total",
      +          "returnedFindings",
      +          "findingsTruncated",
      +          "passingChecks",
      +          "findings"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "additionalProperties": false,
      +        "properties": {
      +          "executionComplete": {
      +            "const": false,
      +            "description": "False until the entire audit result is ready for delivery.",
      +            "type": "boolean"
      +          },
      +          "jobId": {
      +            "description": "Opaque temporary job identifier bound to this account, tool and MCP surface.",
      +            "pattern": "^mj_[A-Za-z0-9_-]{32}$",
      +            "type": "string"
      +          },
      +          "nextAction": {
      +            "const": "poll_same_tool",
      +            "description": "Call this same tool again with pollArguments.",
      +            "type": "string"
      +          },
      +          "pollArguments": {
      +            "additionalProperties": false,
      +            "description": "Copy these arguments unchanged to retrieve this existing audit without starting another scan. The public target supports clients that require a target on every call.",
      +            "properties": {
      +              "jobId": {
      +                "description": "The same opaque audit job identifier.",
      +                "pattern": "^mj_[A-Za-z0-9_-]{32}$",
      +                "type": "string"
      +              },
      +              "target": {
      +                "description": "Public polling target for this job, without URL credentials, query or fragment. It does not change the original scan target.",
      +                "maxLength": 2048,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "jobId"
      +            ],
      +            "type": "object"
      +          },
      +          "retryAfterMs": {
      +            "description": "Suggested delay in milliseconds before polling this job again.",
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "status": {
      +            "const": "running",
      +            "description": "The audit is still executing or completing durable delivery.",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "status",
      +          "jobId",
      +          "executionComplete",
      +          "nextAction",
      +          "pollArguments",
      +          "retryAfterMs"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "additionalProperties": false,
      +        "properties": {
      +          "auditExecuted": {
      +            "const": false,
      +            "description": "This request did not execute a new audit.",
      +            "type": "boolean"
      +          },
      +          "reason": {
      +            "description": "The recoverable job request prerequisite.",
      +            "enum": [
      +              "audit_job_busy",
      +              "audit_job_unavailable",
      +              "audit_job_argument_mismatch",
      +              "audit_job_invalid_arguments"
      +            ],
      +            "type": "string"
      +          },
      +          "status": {
      +            "const": "action_required",
      +            "description": "This request did not start a new audit.",
      +            "type": "string"
      +          },
      +          "usageConsumed": {
      +            "const": false,
      +            "description": "This request did not consume additional audit allowance.",
      +            "type": "boolean"
      +          }
      +        },
      +        "required": [
      +          "status",
      +          "reason",
      +          "auditExecuted",
      +          "usageConsumed"
      +        ],
      +        "type": "object"
      +      }
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "auditExecuted": {
      +        "const": false,
      +        "type": "boolean"
      +      },
      +      "reason": {
      +        "enum": [
      +          "entitlement_required",
      +          "target_verification_required",
      +          "target_reverification_required",
      +          "verification_scope_required",
      +          "usage_limit_reached",
      +          "authorization_consent_required"
      +        ],
      +        "type": "string"
      +      },
      +      "status": {
      +        "const": "action_required",
      +        "type": "string"
      +      },
      +      "usageConsumed": {
      +        "const": false,
      +        "type": "boolean"
      +      }
      +    },
      +    "required": [
      +      "status",
      +      "reason",
      +      "auditExecuted",
      +      "usageConsumed"
      +    ],
      +    "type": "object"
      +  }
      +]
  3. Changed1 schema field changed
    • changedOutput schema / oneOf
      Previous value: -[
      -  {
      -    "additionalProperties": true,
      -    "properties": {
      -      "auditDetails": {
      -        "additionalProperties": true,
      -        "description": "Complete available scope, check states and measurement evidence; unmeasured checks are not passes.",
      -        "type": "object"
      -      },
      -      "counts": {
      -        "additionalProperties": false,
      -        "description": "Finding totals grouped by normalized severity.",
      -        "properties": {
      -          "critical": {
      -            "description": "Number of critical findings.",
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "high": {
      -            "description": "Number of high-severity findings.",
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "info": {
      -            "description": "Number of informational findings.",
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "low": {
      -            "description": "Number of low-severity findings.",
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "medium": {
      -            "description": "Number of medium-severity findings.",
      -            "minimum": 0,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "critical",
      -          "high",
      -          "medium",
      -          "low",
      -          "info"
      -        ],
      -        "type": "object"
      -      },
      -      "coverageStatus": {
      -        "description": "Availability of measurements within the requested methods and account scope; not a claim to test every possible website behavior.",
      -        "enum": [
      -          "measured",
      -          "partial",
      -          "unavailable",
      -          "not_applicable"
      -        ],
      -        "type": "string"
      -      },
      -      "executionComplete": {
      -        "description": "Whether all requested pillar runners returned. This is separate from measurement coverage.",
      -        "type": "boolean"
      -      },
      -      "findings": {
      -        "description": "Prioritized findings with evidence, impact, and remediation.",
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "category": {
      -              "description": "Stable audit category for grouping related findings.",
      -              "type": "string"
      -            },
      -            "evidence": {
      -              "description": "Bounded observation that supports the finding.",
      -              "type": "string"
      -            },
      -            "findingKey": {
      -              "description": "Deterministic pillar-scoped identity for before/after comparison.",
      -              "maxLength": 512,
      -              "minLength": 1,
      -              "type": "string"
      -            },
      -            "impact": {
      -              "description": "Why the finding matters to the audited website.",
      -              "type": "string"
      -            },
      -            "location": {
      -              "description": "Observed URL or path with credentials and query secrets removed, when available.",
      -              "type": "string"
      -            },
      -            "remediation": {
      -              "description": "Concrete recommended fix or mitigation.",
      -              "type": "string"
      -            },
      -            "severity": {
      -              "description": "Normalized finding severity: critical, high, medium, low, or info.",
      -              "type": "string"
      -            },
      -            "title": {
      -              "description": "Short human-readable finding title.",
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "findingKey",
      -            "severity",
      -            "title",
      -            "evidence",
      -            "impact",
      -            "remediation",
      -            "category"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "findingsTruncated": {
      -        "description": "True when additional findings exist outside this response.",
      -        "type": "boolean"
      -      },
      -      "grade": {
      -        "description": "Human-readable grade, or null when unavailable.",
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "kind": {
      -        "description": "Audit pillar represented by this result.",
      -        "type": "string"
      -      },
      -      "passingChecks": {
      -        "description": "Number of checks that passed or reported protection.",
      -        "minimum": 0,
      -        "type": "integer"
      -      },
      -      "passingFindings": {
      -        "description": "Positive observations retained with their complete evidence.",
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "category": {
      -              "description": "Stable audit category for grouping related findings.",
      -              "type": "string"
      -            },
      -            "evidence": {
      -              "description": "Bounded observation that supports the finding.",
      -              "type": "string"
      -            },
      -            "findingKey": {
      -              "description": "Deterministic pillar-scoped identity for before/after comparison.",
      -              "maxLength": 512,
      -              "minLength": 1,
      -              "type": "string"
      -            },
      -            "impact": {
      -              "description": "Why the finding matters to the audited website.",
      -              "type": "string"
      -            },
      -            "location": {
      -              "description": "Observed URL or path with credentials and query secrets removed, when available.",
      -              "type": "string"
      -            },
      -            "remediation": {
      -              "description": "Concrete recommended fix or mitigation.",
      -              "type": "string"
      -            },
      -            "severity": {
      -              "description": "Normalized finding severity: critical, high, medium, low, or info.",
      -              "type": "string"
      -            },
      -            "title": {
      -              "description": "Short human-readable finding title.",
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "findingKey",
      -            "severity",
      -            "title",
      -            "evidence",
      -            "impact",
      -            "remediation",
      -            "category"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "returnedFindings": {
      -        "description": "Number of findings included in this response.",
      -        "minimum": 0,
      -        "type": "integer"
      -      },
      -      "score": {
      -        "description": "Measured score from 0 to 100, or null when unavailable.",
      -        "type": [
      -          "number",
      -          "null"
      -        ]
      -      },
      -      "status": {
      -        "description": "Completed when requested measurements are available; partial when a requested runner or measurement is unavailable.",
      -        "enum": [
      -          "completed",
      -          "partial"
      -        ],
      -        "type": "string"
      -      },
      -      "target": {
      -        "description": "Canonical audited target.",
      -        "type": "string"
      -      },
      -      "total": {
      -        "description": "Total findings produced before response truncation.",
      -        "minimum": 0,
      -        "type": "integer"
      -      }
      -    },
      -    "required": [
      -      "target",
      -      "kind",
      -      "score",
      -      "grade",
      -      "counts",
      -      "total",
      -      "returnedFindings",
      -      "findingsTruncated",
      -      "passingChecks",
      -      "findings"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "executionComplete": {
      -        "const": false,
      -        "description": "False until the entire audit result is ready for delivery.",
      -        "type": "boolean"
      -      },
      -      "jobId": {
      -        "description": "Opaque temporary job identifier bound to this account, tool and MCP surface.",
      -        "pattern": "^mj_[A-Za-z0-9_-]{32}$",
      -        "type": "string"
      -      },
      -      "nextAction": {
      -        "const": "poll_same_tool",
      -        "description": "Call this same tool again with pollArguments.",
      -        "type": "string"
      -      },
      -      "pollArguments": {
      -        "additionalProperties": false,
      -        "description": "Arguments for retrieving this existing audit without starting another scan.",
      -        "properties": {
      -          "jobId": {
      -            "description": "The same opaque audit job identifier.",
      -            "pattern": "^mj_[A-Za-z0-9_-]{32}$",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "jobId"
      -        ],
      -        "type": "object"
      -      },
      -      "retryAfterMs": {
      -        "description": "Suggested delay in milliseconds before polling this job again.",
      -        "minimum": 0,
      -        "type": "integer"
      -      },
      -      "status": {
      -        "const": "running",
      -        "description": "The audit is still executing or completing durable delivery.",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "status",
      -      "jobId",
      -      "executionComplete",
      -      "nextAction",
      -      "pollArguments",
      -      "retryAfterMs"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "auditExecuted": {
      -        "const": false,
      -        "description": "This request did not execute a new audit.",
      -        "type": "boolean"
      -      },
      -      "reason": {
      -        "description": "The recoverable job request prerequisite.",
      -        "enum": [
      -          "audit_job_busy",
      -          "audit_job_unavailable",
      -          "audit_job_argument_mismatch",
      -          "audit_job_invalid_arguments"
      -        ],
      -        "type": "string"
      -      },
      -      "status": {
      -        "const": "action_required",
      -        "description": "This request did not start a new audit.",
      -        "type": "string"
      -      },
      -      "usageConsumed": {
      -        "const": false,
      -        "description": "This request did not consume additional audit allowance.",
      -        "type": "boolean"
      -      }
      -    },
      -    "required": [
      -      "status",
      -      "reason",
      -      "auditExecuted",
      -      "usageConsumed"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "oneOf": [
      +      {
      +        "additionalProperties": true,
      +        "properties": {
      +          "auditDetails": {
      +            "additionalProperties": true,
      +            "description": "Complete available scope, check states and measurement evidence; unmeasured checks are not passes.",
      +            "type": "object"
      +          },
      +          "counts": {
      +            "additionalProperties": false,
      +            "description": "Finding totals grouped by normalized severity.",
      +            "properties": {
      +              "critical": {
      +                "description": "Number of critical findings.",
      +                "minimum": 0,
      +                "type": "integer"
      +              },
      +              "high": {
      +                "description": "Number of high-severity findings.",
      +                "minimum": 0,
      +                "type": "integer"
      +              },
      +              "info": {
      +                "description": "Number of informational findings.",
      +                "minimum": 0,
      +                "type": "integer"
      +              },
      +              "low": {
      +                "description": "Number of low-severity findings.",
      +                "minimum": 0,
      +                "type": "integer"
      +              },
      +              "medium": {
      +                "description": "Number of medium-severity findings.",
      +                "minimum": 0,
      +                "type": "integer"
      +              }
      +            },
      +            "required": [
      +              "critical",
      +              "high",
      +              "medium",
      +              "low",
      +              "info"
      +            ],
      +            "type": "object"
      +          },
      +          "coverageStatus": {
      +            "description": "Availability of measurements within the requested methods and account scope; not a claim to test every possible website behavior.",
      +            "enum": [
      +              "measured",
      +              "partial",
      +              "unavailable",
      +              "not_applicable"
      +            ],
      +            "type": "string"
      +          },
      +          "executionComplete": {
      +            "description": "Whether all requested pillar runners returned. This is separate from measurement coverage.",
      +            "type": "boolean"
      +          },
      +          "findings": {
      +            "description": "Prioritized findings with evidence, impact, and remediation.",
      +            "items": {
      +              "additionalProperties": false,
      +              "properties": {
      +                "category": {
      +                  "description": "Stable audit category for grouping related findings.",
      +                  "type": "string"
      +                },
      +                "evidence": {
      +                  "description": "Bounded observation that supports the finding.",
      +                  "type": "string"
      +                },
      +                "findingKey": {
      +                  "description": "Deterministic pillar-scoped identity for before/after comparison.",
      +                  "maxLength": 512,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "impact": {
      +                  "description": "Why the finding matters to the audited website.",
      +                  "type": "string"
      +                },
      +                "location": {
      +                  "description": "Observed URL or path with credentials and query secrets removed, when available.",
      +                  "type": "string"
      +                },
      +                "remediation": {
      +                  "description": "Concrete recommended fix or mitigation.",
      +                  "type": "string"
      +                },
      +                "severity": {
      +                  "description": "Normalized finding severity: critical, high, medium, low, or info.",
      +                  "type": "string"
      +                },
      +                "title": {
      +                  "description": "Short human-readable finding title.",
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "findingKey",
      +                "severity",
      +                "title",
      +                "evidence",
      +                "impact",
      +                "remediation",
      +                "category"
      +              ],
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          "findingsTruncated": {
      +            "description": "True when additional findings exist outside this response.",
      +            "type": "boolean"
      +          },
      +          "grade": {
      +            "description": "Human-readable grade, or null when unavailable.",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "kind": {
      +            "description": "Audit pillar represented by this result.",
      +            "type": "string"
      +          },
      +          "passingChecks": {
      +            "description": "Number of checks that passed or reported protection.",
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "passingFindings": {
      +            "description": "Positive observations retained with their complete evidence.",
      +            "items": {
      +              "additionalProperties": false,
      +              "properties": {
      +                "category": {
      +                  "description": "Stable audit category for grouping related findings.",
      +                  "type": "string"
      +                },
      +                "evidence": {
      +                  "description": "Bounded observation that supports the finding.",
      +                  "type": "string"
      +                },
      +                "findingKey": {
      +                  "description": "Deterministic pillar-scoped identity for before/after comparison.",
      +                  "maxLength": 512,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "impact": {
      +                  "description": "Why the finding matters to the audited website.",
      +                  "type": "string"
      +                },
      +                "location": {
      +                  "description": "Observed URL or path with credentials and query secrets removed, when available.",
      +                  "type": "string"
      +                },
      +                "remediation": {
      +                  "description": "Concrete recommended fix or mitigation.",
      +                  "type": "string"
      +                },
      +                "severity": {
      +                  "description": "Normalized finding severity: critical, high, medium, low, or info.",
      +                  "type": "string"
      +                },
      +                "title": {
      +                  "description": "Short human-readable finding title.",
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "findingKey",
      +                "severity",
      +                "title",
      +                "evidence",
      +                "impact",
      +                "remediation",
      +                "category"
      +              ],
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          "returnedFindings": {
      +            "description": "Number of findings included in this response.",
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "score": {
      +            "description": "Measured score from 0 to 100, or null when unavailable.",
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "status": {
      +            "description": "Completed when requested measurements are available; partial when a requested runner or measurement is unavailable.",
      +            "enum": [
      +              "completed",
      +              "partial"
      +            ],
      +            "type": "string"
      +          },
      +          "target": {
      +            "description": "Canonical audited target.",
      +            "type": "string"
      +          },
      +          "total": {
      +            "description": "Total findings produced before response truncation.",
      +            "minimum": 0,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "target",
      +          "kind",
      +          "score",
      +          "grade",
      +          "counts",
      +          "total",
      +          "returnedFindings",
      +          "findingsTruncated",
      +          "passingChecks",
      +          "findings"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "additionalProperties": false,
      +        "properties": {
      +          "executionComplete": {
      +            "const": false,
      +            "description": "False until the entire audit result is ready for delivery.",
      +            "type": "boolean"
      +          },
      +          "jobId": {
      +            "description": "Opaque temporary job identifier bound to this account, tool and MCP surface.",
      +            "pattern": "^mj_[A-Za-z0-9_-]{32}$",
      +            "type": "string"
      +          },
      +          "nextAction": {
      +            "const": "poll_same_tool",
      +            "description": "Call this same tool again with pollArguments.",
      +            "type": "string"
      +          },
      +          "pollArguments": {
      +            "additionalProperties": false,
      +            "description": "Arguments for retrieving this existing audit without starting another scan.",
      +            "properties": {
      +              "jobId": {
      +                "description": "The same opaque audit job identifier.",
      +                "pattern": "^mj_[A-Za-z0-9_-]{32}$",
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "jobId"
      +            ],
      +            "type": "object"
      +          },
      +          "retryAfterMs": {
      +            "description": "Suggested delay in milliseconds before polling this job again.",
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "status": {
      +            "const": "running",
      +            "description": "The audit is still executing or completing durable delivery.",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "status",
      +          "jobId",
      +          "executionComplete",
      +          "nextAction",
      +          "pollArguments",
      +          "retryAfterMs"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "additionalProperties": false,
      +        "properties": {
      +          "auditExecuted": {
      +            "const": false,
      +            "description": "This request did not execute a new audit.",
      +            "type": "boolean"
      +          },
      +          "reason": {
      +            "description": "The recoverable job request prerequisite.",
      +            "enum": [
      +              "audit_job_busy",
      +              "audit_job_unavailable",
      +              "audit_job_argument_mismatch",
      +              "audit_job_invalid_arguments"
      +            ],
      +            "type": "string"
      +          },
      +          "status": {
      +            "const": "action_required",
      +            "description": "This request did not start a new audit.",
      +            "type": "string"
      +          },
      +          "usageConsumed": {
      +            "const": false,
      +            "description": "This request did not consume additional audit allowance.",
      +            "type": "boolean"
      +          }
      +        },
      +        "required": [
      +          "status",
      +          "reason",
      +          "auditExecuted",
      +          "usageConsumed"
      +        ],
      +        "type": "object"
      +      }
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "auditExecuted": {
      +        "const": false,
      +        "type": "boolean"
      +      },
      +      "reason": {
      +        "enum": [
      +          "entitlement_required",
      +          "target_verification_required",
      +          "target_reverification_required",
      +          "verification_scope_required",
      +          "usage_limit_reached",
      +          "authorization_consent_required"
      +        ],
      +        "type": "string"
      +      },
      +      "status": {
      +        "const": "action_required",
      +        "type": "string"
      +      },
      +      "usageConsumed": {
      +        "const": false,
      +        "type": "boolean"
      +      }
      +    },
      +    "required": [
      +      "status",
      +      "reason",
      +      "auditExecuted",
      +      "usageConsumed"
      +    ],
      +    "type": "object"
      +  }
      +]
  4. Changed7 schema fields changed
    • addedInput schema / anyOf
      Added value: +[
      +  {
      +    "required": [
      +      "target"
      +    ]
      +  },
      +  {
      +    "maxProperties": 1,
      +    "required": [
      +      "jobId"
      +    ]
      +  }
      +]
    • addedInput schema / properties / jobId
      Added value: +{
      +  "description": "Resume an existing audit by polling this same tool with its returned jobId. Prefer jobId alone; if repeating other arguments, supply every original argument unchanged. Never invent a jobId.",
      +  "pattern": "^mj_[A-Za-z0-9_-]{32}$",
      +  "type": "string"
      +}
    • removedInput schema / required
      Removed value: -[
      -  "target"
      -]
    • removedOutput schema / additionalProperties
      Removed value: -true
    • addedOutput schema / oneOf
      Added value: +[
      +  {
      +    "additionalProperties": true,
      +    "properties": {
      +      "auditDetails": {
      +        "additionalProperties": true,
      +        "description": "Complete available scope, check states and measurement evidence; unmeasured checks are not passes.",
      +        "type": "object"
      +      },
      +      "counts": {
      +        "additionalProperties": false,
      +        "description": "Finding totals grouped by normalized severity.",
      +        "properties": {
      +          "critical": {
      +            "description": "Number of critical findings.",
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "high": {
      +            "description": "Number of high-severity findings.",
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "info": {
      +            "description": "Number of informational findings.",
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "low": {
      +            "description": "Number of low-severity findings.",
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "medium": {
      +            "description": "Number of medium-severity findings.",
      +            "minimum": 0,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "critical",
      +          "high",
      +          "medium",
      +          "low",
      +          "info"
      +        ],
      +        "type": "object"
      +      },
      +      "coverageStatus": {
      +        "description": "Availability of measurements within the requested methods and account scope; not a claim to test every possible website behavior.",
      +        "enum": [
      +          "measured",
      +          "partial",
      +          "unavailable",
      +          "not_applicable"
      +        ],
      +        "type": "string"
      +      },
      +      "executionComplete": {
      +        "description": "Whether all requested pillar runners returned. This is separate from measurement coverage.",
      +        "type": "boolean"
      +      },
      +      "findings": {
      +        "description": "Prioritized findings with evidence, impact, and remediation.",
      +        "items": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "category": {
      +              "description": "Stable audit category for grouping related findings.",
      +              "type": "string"
      +            },
      +            "evidence": {
      +              "description": "Bounded observation that supports the finding.",
      +              "type": "string"
      +            },
      +            "findingKey": {
      +              "description": "Deterministic pillar-scoped identity for before/after comparison.",
      +              "maxLength": 512,
      +              "minLength": 1,
      +              "type": "string"
      +            },
      +            "impact": {
      +              "description": "Why the finding matters to the audited website.",
      +              "type": "string"
      +            },
      +            "location": {
      +              "description": "Observed URL or path with credentials and query secrets removed, when available.",
      +              "type": "string"
      +            },
      +            "remediation": {
      +              "description": "Concrete recommended fix or mitigation.",
      +              "type": "string"
      +            },
      +            "severity": {
      +              "description": "Normalized finding severity: critical, high, medium, low, or info.",
      +              "type": "string"
      +            },
      +            "title": {
      +              "description": "Short human-readable finding title.",
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "findingKey",
      +            "severity",
      +            "title",
      +            "evidence",
      +            "impact",
      +            "remediation",
      +            "category"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "findingsTruncated": {
      +        "description": "True when additional findings exist outside this response.",
      +        "type": "boolean"
      +      },
      +      "grade": {
      +        "description": "Human-readable grade, or null when unavailable.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "kind": {
      +        "description": "Audit pillar represented by this result.",
      +        "type": "string"
      +      },
      +      "passingChecks": {
      +        "description": "Number of checks that passed or reported protection.",
      +        "minimum": 0,
      +        "type": "integer"
      +      },
      +      "passingFindings": {
      +        "description": "Positive observations retained with their complete evidence.",
      +        "items": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "category": {
      +              "description": "Stable audit category for grouping related findings.",
      +              "type": "string"
      +            },
      +            "evidence": {
      +              "description": "Bounded observation that supports the finding.",
      +              "type": "string"
      +            },
      +            "findingKey": {
      +              "description": "Deterministic pillar-scoped identity for before/after comparison.",
      +              "maxLength": 512,
      +              "minLength": 1,
      +              "type": "string"
      +            },
      +            "impact": {
      +              "description": "Why the finding matters to the audited website.",
      +              "type": "string"
      +            },
      +            "location": {
      +              "description": "Observed URL or path with credentials and query secrets removed, when available.",
      +              "type": "string"
      +            },
      +            "remediation": {
      +              "description": "Concrete recommended fix or mitigation.",
      +              "type": "string"
      +            },
      +            "severity": {
      +              "description": "Normalized finding severity: critical, high, medium, low, or info.",
      +              "type": "string"
      +            },
      +            "title": {
      +              "description": "Short human-readable finding title.",
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "findingKey",
      +            "severity",
      +            "title",
      +            "evidence",
      +            "impact",
      +            "remediation",
      +            "category"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "returnedFindings": {
      +        "description": "Number of findings included in this response.",
      +        "minimum": 0,
      +        "type": "integer"
      +      },
      +      "score": {
      +        "description": "Measured score from 0 to 100, or null when unavailable.",
      +        "type": [
      +          "number",
      +          "null"
      +        ]
      +      },
      +      "status": {
      +        "description": "Completed when requested measurements are available; partial when a requested runner or measurement is unavailable.",
      +        "enum": [
      +          "completed",
      +          "partial"
      +        ],
      +        "type": "string"
      +      },
      +      "target": {
      +        "description": "Canonical audited target.",
      +        "type": "string"
      +      },
      +      "total": {
      +        "description": "Total findings produced before response truncation.",
      +        "minimum": 0,
      +        "type": "integer"
      +      }
      +    },
      +    "required": [
      +      "target",
      +      "kind",
      +      "score",
      +      "grade",
      +      "counts",
      +      "total",
      +      "returnedFindings",
      +      "findingsTruncated",
      +      "passingChecks",
      +      "findings"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "executionComplete": {
      +        "const": false,
      +        "description": "False until the entire audit result is ready for delivery.",
      +        "type": "boolean"
      +      },
      +      "jobId": {
      +        "description": "Opaque temporary job identifier bound to this account, tool and MCP surface.",
      +        "pattern": "^mj_[A-Za-z0-9_-]{32}$",
      +        "type": "string"
      +      },
      +      "nextAction": {
      +        "const": "poll_same_tool",
      +        "description": "Call this same tool again with pollArguments.",
      +        "type": "string"
      +      },
      +      "pollArguments": {
      +        "additionalProperties": false,
      +        "description": "Arguments for retrieving this existing audit without starting another scan.",
      +        "properties": {
      +          "jobId": {
      +            "description": "The same opaque audit job identifier.",
      +            "pattern": "^mj_[A-Za-z0-9_-]{32}$",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "jobId"
      +        ],
      +        "type": "object"
      +      },
      +      "retryAfterMs": {
      +        "description": "Suggested delay in milliseconds before polling this job again.",
      +        "minimum": 0,
      +        "type": "integer"
      +      },
      +      "status": {
      +        "const": "running",
      +        "description": "The audit is still executing or completing durable delivery.",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "status",
      +      "jobId",
      +      "executionComplete",
      +      "nextAction",
      +      "pollArguments",
      +      "retryAfterMs"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "auditExecuted": {
      +        "const": false,
      +        "description": "This request did not execute a new audit.",
      +        "type": "boolean"
      +      },
      +      "reason": {
      +        "description": "The recoverable job request prerequisite.",
      +        "enum": [
      +          "audit_job_busy",
      +          "audit_job_unavailable",
      +          "audit_job_argument_mismatch",
      +          "audit_job_invalid_arguments"
      +        ],
      +        "type": "string"
      +      },
      +      "status": {
      +        "const": "action_required",
      +        "description": "This request did not start a new audit.",
      +        "type": "string"
      +      },
      +      "usageConsumed": {
      +        "const": false,
      +        "description": "This request did not consume additional audit allowance.",
      +        "type": "boolean"
      +      }
      +    },
      +    "required": [
      +      "status",
      +      "reason",
      +      "auditExecuted",
      +      "usageConsumed"
      +    ],
      +    "type": "object"
      +  }
      +]
    • removedOutput schema / properties
      Removed value: -{
      -  "auditDetails": {
      -    "additionalProperties": true,
      -    "description": "Complete available scope, check states and measurement evidence; unmeasured checks are not passes.",
      -    "type": "object"
      -  },
      -  "counts": {
      -    "additionalProperties": false,
      -    "description": "Finding totals grouped by normalized severity.",
      -    "properties": {
      -      "critical": {
      -        "description": "Number of critical findings.",
      -        "minimum": 0,
      -        "type": "integer"
      -      },
      -      "high": {
      -        "description": "Number of high-severity findings.",
      -        "minimum": 0,
      -        "type": "integer"
      -      },
      -      "info": {
      -        "description": "Number of informational findings.",
      -        "minimum": 0,
      -        "type": "integer"
      -      },
      -      "low": {
      -        "description": "Number of low-severity findings.",
      -        "minimum": 0,
      -        "type": "integer"
      -      },
      -      "medium": {
      -        "description": "Number of medium-severity findings.",
      -        "minimum": 0,
      -        "type": "integer"
      -      }
      -    },
      -    "required": [
      -      "critical",
      -      "high",
      -      "medium",
      -      "low",
      -      "info"
      -    ],
      -    "type": "object"
      -  },
      -  "coverageStatus": {
      -    "description": "Availability of measurements within the requested methods and account scope; not a claim to test every possible website behavior.",
      -    "enum": [
      -      "measured",
      -      "partial",
      -      "unavailable",
      -      "not_applicable"
      -    ],
      -    "type": "string"
      -  },
      -  "executionComplete": {
      -    "description": "Whether all requested pillar runners returned. This is separate from measurement coverage.",
      -    "type": "boolean"
      -  },
      -  "findings": {
      -    "description": "Prioritized findings with evidence, impact, and remediation.",
      -    "items": {
      -      "additionalProperties": false,
      -      "properties": {
      -        "category": {
      -          "description": "Stable audit category for grouping related findings.",
      -          "type": "string"
      -        },
      -        "evidence": {
      -          "description": "Bounded observation that supports the finding.",
      -          "type": "string"
      -        },
      -        "findingKey": {
      -          "description": "Deterministic pillar-scoped identity for before/after comparison.",
      -          "maxLength": 512,
      -          "minLength": 1,
      -          "type": "string"
      -        },
      -        "impact": {
      -          "description": "Why the finding matters to the audited website.",
      -          "type": "string"
      -        },
      -        "location": {
      -          "description": "Observed URL or path with credentials and query secrets removed, when available.",
      -          "type": "string"
      -        },
      -        "remediation": {
      -          "description": "Concrete recommended fix or mitigation.",
      -          "type": "string"
      -        },
      -        "severity": {
      -          "description": "Normalized finding severity: critical, high, medium, low, or info.",
      -          "type": "string"
      -        },
      -        "title": {
      -          "description": "Short human-readable finding title.",
      -          "type": "string"
      -        }
      -      },
      -      "required": [
      -        "findingKey",
      -        "severity",
      -        "title",
      -        "evidence",
      -        "impact",
      -        "remediation",
      -        "category"
      -      ],
      -      "type": "object"
      -    },
      -    "type": "array"
      -  },
      -  "findingsTruncated": {
      -    "description": "True when additional findings exist outside this response.",
      -    "type": "boolean"
      -  },
      -  "grade": {
      -    "description": "Human-readable grade, or null when unavailable.",
      -    "type": [
      -      "string",
      -      "null"
      -    ]
      -  },
      -  "kind": {
      -    "description": "Audit pillar represented by this result.",
      -    "type": "string"
      -  },
      -  "passingChecks": {
      -    "description": "Number of checks that passed or reported protection.",
      -    "minimum": 0,
      -    "type": "integer"
      -  },
      -  "passingFindings": {
      -    "description": "Positive observations retained with their complete evidence.",
      -    "items": {
      -      "additionalProperties": false,
      -      "properties": {
      -        "category": {
      -          "description": "Stable audit category for grouping related findings.",
      -          "type": "string"
      -        },
      -        "evidence": {
      -          "description": "Bounded observation that supports the finding.",
      -          "type": "string"
      -        },
      -        "findingKey": {
      -          "description": "Deterministic pillar-scoped identity for before/after comparison.",
      -          "maxLength": 512,
      -          "minLength": 1,
      -          "type": "string"
      -        },
      -        "impact": {
      -          "description": "Why the finding matters to the audited website.",
      -          "type": "string"
      -        },
      -        "location": {
      -          "description": "Observed URL or path with credentials and query secrets removed, when available.",
      -          "type": "string"
      -        },
      -        "remediation": {
      -          "description": "Concrete recommended fix or mitigation.",
      -          "type": "string"
      -        },
      -        "severity": {
      -          "description": "Normalized finding severity: critical, high, medium, low, or info.",
      -          "type": "string"
      -        },
      -        "title": {
      -          "description": "Short human-readable finding title.",
      -          "type": "string"
      -        }
      -      },
      -      "required": [
      -        "findingKey",
      -        "severity",
      -        "title",
      -        "evidence",
      -        "impact",
      -        "remediation",
      -        "category"
      -      ],
      -      "type": "object"
      -    },
      -    "type": "array"
      -  },
      -  "returnedFindings": {
      -    "description": "Number of findings included in this response.",
      -    "minimum": 0,
      -    "type": "integer"
      -  },
      -  "score": {
      -    "description": "Measured score from 0 to 100, or null when unavailable.",
      -    "type": [
      -      "number",
      -      "null"
      -    ]
      -  },
      -  "status": {
      -    "description": "Completed when requested measurements are available; partial when a requested runner or measurement is unavailable.",
      -    "enum": [
      -      "completed",
      -      "partial"
      -    ],
      -    "type": "string"
      -  },
      -  "target": {
      -    "description": "Canonical audited target.",
      -    "type": "string"
      -  },
      -  "total": {
      -    "description": "Total findings produced before response truncation.",
      -    "minimum": 0,
      -    "type": "integer"
      -  }
      -}
    • removedOutput schema / required
      Removed value: -[
      -  "target",
      -  "kind",
      -  "score",
      -  "grade",
      -  "counts",
      -  "total",
      -  "returnedFindings",
      -  "findingsTruncated",
      -  "passingChecks",
      -  "findings"
      -]
  5. Changed8 schema fields changed
    • addedInput schema / properties / includeSearchConsole
      Added value: +{
      +  "description": "Include available Search Console evidence from the account’s existing Google connection, subject to its keyword allowance. Missing access does not stop the website audit.",
      +  "type": "boolean"
      +}
    • changedInput schema / properties / maxPages / description
      Previous value: -"Pages to crawl (default 8)."New value: +"Maximum pages per crawl. Defaults to the connected plan maximum, bounded by remaining allowance."
    • addedInput schema / properties / searchConsoleDays
      Added value: +{
      +  "description": "Search Console reporting window in days (default 28).",
      +  "enum": [
      +    7,
      +    28,
      +    90
      +  ],
      +  "type": "integer"
      +}
    • changedOutput schema / properties / auditDetails / description
      Previous value: -"Bounded assessment scope, check states and available measurement evidence; unmeasured checks are not passes."New value: +"Complete available scope, check states and measurement evidence; unmeasured checks are not passes."
    • addedOutput schema / properties / coverageStatus
      Added value: +{
      +  "description": "Availability of measurements within the requested methods and account scope; not a claim to test every possible website behavior.",
      +  "enum": [
      +    "measured",
      +    "partial",
      +    "unavailable",
      +    "not_applicable"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / executionComplete
      Added value: +{
      +  "description": "Whether all requested pillar runners returned. This is separate from measurement coverage.",
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / passingFindings
      Added value: +{
      +  "description": "Positive observations retained with their complete evidence.",
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "category": {
      +        "description": "Stable audit category for grouping related findings.",
      +        "type": "string"
      +      },
      +      "evidence": {
      +        "description": "Bounded observation that supports the finding.",
      +        "type": "string"
      +      },
      +      "findingKey": {
      +        "description": "Deterministic pillar-scoped identity for before/after comparison.",
      +        "maxLength": 512,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "impact": {
      +        "description": "Why the finding matters to the audited website.",
      +        "type": "string"
      +      },
      +      "location": {
      +        "description": "Observed URL or path with credentials and query secrets removed, when available.",
      +        "type": "string"
      +      },
      +      "remediation": {
      +        "description": "Concrete recommended fix or mitigation.",
      +        "type": "string"
      +      },
      +      "severity": {
      +        "description": "Normalized finding severity: critical, high, medium, low, or info.",
      +        "type": "string"
      +      },
      +      "title": {
      +        "description": "Short human-readable finding title.",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "findingKey",
      +      "severity",
      +      "title",
      +      "evidence",
      +      "impact",
      +      "remediation",
      +      "category"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / status
      Added value: +{
      +  "description": "Completed when requested measurements are available; partial when a requested runner or measurement is unavailable.",
      +  "enum": [
      +    "completed",
      +    "partial"
      +  ],
      +  "type": "string"
      +}
  6. Changed2 schema fields changed
    • addedOutput schema / properties / auditDetails
      Added value: +{
      +  "additionalProperties": true,
      +  "description": "Bounded assessment scope, check states and available measurement evidence; unmeasured checks are not passes.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / findings / items / properties / location
      Added value: +{
      +  "description": "Observed URL or path with credentials and query secrets removed, when available.",
      +  "type": "string"
      +}
  7. First observed

TDQS

A4.6/5.0
Behavior5/5

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

The description thoroughly discloses async behavior: long audits may return status running, callers must wait retryAfterMs, pass pollArguments unchanged, and avoid starting a replacement audit. It also clarifies that polling reuses the same audit and does not consume additional quota, which aligns with the annotations and adds significant value beyond them.

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?

The description is longer than average, but the length is justified by the async polling contract and quota guidance. It opens with the purpose, then moves to return behavior and invocation rules, so the structure is logical. A few repetitions around jobId and pollArguments could be tightened, keeping it from a 5.

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 tool's async behavior, optional parameters, and output schema, the description covers everything needed to call it correctly: how to start, how to poll, what not to do while running, and quota implications. The output schema handles return values, so no further description is required.

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 baseline is 3, but the description adds meaningful coupling between parameters: target starts an audit, jobId polls, and pollArguments must be copied unchanged without adding scan options. It also notes that jobId-alone callers are supported, which is extra semantic guidance beyond the schema.

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: 'Crawl a site and audit technical SEO' and enumerates concrete checks (crawlability, indexation, titles/meta, canonical, structured data, broken links, redirect chains, AI-crawler policy). This makes the tool's purpose unambiguous and largely distinguishes it from sibling audits like accessibility, performance, or security.

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

Usage Guidelines4/5

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

The description gives clear context for when to invoke the tool and how to use it, including starting with a target and polling with a jobId. It does not explicitly name sibling alternatives or state when not to use this tool, so it stops short of a 5, but the scope is clear enough for an agent to select it.

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