Sitelemetry
Server Details
OAuth website audits: security, SEO, AI visibility, integrations, accessibility and performance.
- Status
- Healthy
- Uptime
- 87.3% over 39 days
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 7 tools
Each audit tool targets a clearly named domain (accessibility, AI visibility, integrations, performance, security, SEO), and descriptions elaborate on distinct scopes. Overlap is minimal but exists: audit_full encompasses the others by design, and audit_seo/audit_ai_visibility both touch AI-crawler policy, which could cause minor confusion.
All tools follow the exact `audit_<domain>` pattern with a consistent prefix, making the set highly predictable. The sole deviation is `audit_ai_visibility` using camelCase within the descriptor, but this does not break the overall convention.
Seven tools is a well-scoped size for a site auditing server. Each named audit covers a distinct pillar, and the `audit_full` meta-tool adds value without bloating the surface.
The tool surface covers six major audit dimensions plus a comprehensive full-audit option, which fully addresses the stated domain of website auditing. No obvious missing operations are apparent; the built-in polling via the same tools handles long-running jobs.
Available Tools
7 toolsaudit_accessibilityAccessibility (WCAG) auditAInspect
Static WCAG 2.2 accessibility audit from the DOM: image alt text, form labels, heading structure, landmarks, color-contrast signals, language attribute, duplicate ids, iframe titles. Returns violations 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.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Report language (default en): en, tr, es, de, fr, pt, it, ja, zh. | |
| jobId | No | 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. | |
| target | No | Target website URL or domain you own / are authorized to audit (e.g. https://example.com). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description reveals important behavioral traits beyond the annotations: audits can be asynchronous, may return status running with jobId, and polling reuses the same audit without consuming more quota. It explicitly instructs clients not to treat running as completed and not to launch a replacement audit. This is far more transparency than the sparse annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence front-loads the tool's purpose and audit scope, and the following polling instructions are dense but relevant. Some of the polling guidance partially repeats the schema's jobId description, which prevents a perfect score, but no sentence is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the full async lifecycle: starting, polling, waiting on retryAfterMs, preserving quota, and avoiding duplicate audits. Since an output schema exists, the description does not need to explain return values in detail. For a three-parameter tool with a rich schema, this is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers all parameters with descriptions, including detailed jobId semantics, so the baseline is 3. The description adds value by clarifying the role split: target starts an audit while jobId polls a running one, and pollArguments must be copied unchanged. This role distinction is not fully explicit in the target parameter's schema description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies a specific resource and scope: a 'Static WCAG 2.2 accessibility audit from the DOM' with a concrete list of checkable areas (alt text, form labels, landmarks, duplicate ids, iframe titles). This clearly differentiates it from sibling audit tools like audit_security, audit_performance, and audit_seo. The outcome, 'returns violations with fixes,' is also explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear operational procedure: supply a target to start, or a jobId to poll; handle a running status by waiting retryAfterMs and reusing pollArguments unchanged. It also warns against starting a replacement audit while one is running. It does not explicitly contrast with the sibling audit tools, but the accessibility scope makes the intended usage clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audit_ai_visibilityAI visibility (GEO/AEO) auditAInspect
Assess how visible and citable a site is to AI search and LLMs (ChatGPT/Claude/Perplexity/Google AI): entity clarity, answerability, prompt coverage, source signals, llms.txt/AI-crawler policy. Returns 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.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Report language (default en): en, tr, es, de, fr, pt, it, ja, zh. | |
| brand | No | Optional expected brand name; otherwise inferred from the website. | |
| jobId | No | 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. | |
| target | No | Target website URL or domain you own / are authorized to audit (e.g. https://example.com). | |
| prompts | No | Optional questions to assess against the site content. These are content-readiness checks, not live AI-provider queries. | |
| maxPages | No | Maximum pages per crawl. Defaults to the connected plan maximum, bounded by remaining allowance. | |
| competitors | No | Optional competitor names for comparison-content assessment. | |
| promptLimit | No | Maximum content-readiness prompts, capped by account and remaining allowance. Defaults to the account maximum. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only signal non-read-only, open-world, non-destructive behavior. The description adds crucial context: audits may be long, return 'status: running' with a jobId, require polling with pollArguments, and polling does not start another scan or consume more quota. These details go well beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is longer than average, but every sentence carries necessary operational information: purpose, findings, async behavior, polling protocol, quota implications, and client compatibility. It is front-loaded with purpose and avoids filler, though slightly verbose due to the polling instructions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex async tool with 8 parameters and an output schema, the description covers what an agent needs: how to start, when to poll, how to poll, quota implications, and what not to do. The output schema removes the need to describe return values in detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and each parameter is well described, so the baseline is 3. The description adds workflow-level semantics: target starts an audit, jobId polls a running one, pollArguments must be copied unchanged, and prompts are content-readiness checks rather than live AI queries.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Assess') and resource ('how visible and citable a site is to AI search and LLMs'), explicitly naming AI platforms and GEO/AEO concepts. This clearly distinguishes it from sibling audit_* tools focused on SEO, performance, accessibility, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear start-vs-poll instructions: 'Provide target to start an audit, or jobId to poll a running one,' plus explicit warnings against replacing a running audit or treating 'running' as completed. It does not explicitly contrast with sibling tools, but the operation modes are fully specified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audit_fullFull audit (all pillars, one score)AInspect
Run all six audit pillars with the connected account’s complete security module scope and page/prompt allowances. Optional selections can narrow the scope. Returns detailed evidence and fixes without omitting findings; measurement limits and unavailable engines are explicit. 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.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Report language (default en): en, tr, es, de, fr, pt, it, ja, zh. | |
| brand | No | Optional expected brand name; otherwise inferred from the website. | |
| jobId | No | 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. | |
| ports | No | Optional port selection: top, common, all, or comma-separated ports/ranges. Account limits apply; default top. | |
| target | No | Target website URL or domain you own / are authorized to audit (e.g. https://example.com). | |
| modules | No | Optional explicit security module selection. Omit to use the plan scope. Protected checks require current target ownership; unavailable engines are reported as unmeasured. | |
| profile | No | Optional security profile included in the account. Omit to run all security modules included in the connected plan. | |
| prompts | No | Optional questions to assess against the site content. These are content-readiness checks, not live AI-provider queries. | |
| maxPages | No | Maximum pages per crawl. Defaults to the connected plan maximum, bounded by remaining allowance. | |
| strategy | No | PageSpeed device strategy (default mobile); field data is included when available. | |
| competitors | No | Optional competitor names for comparison-content assessment. | |
| promptLimit | No | Maximum content-readiness prompts, capped by account and remaining allowance. Defaults to the account maximum. | |
| searchConsoleDays | No | Search Console reporting window in days (default 28). | |
| includeSearchConsole | No | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=false, destructiveHint=false), the description discloses the async running state, retryAfterMs, pollArguments, quota reuse, and instructs not to present running as completed or start a replacement audit. This is exemplary behavioral disclosure with no contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but front-loaded with purpose and every sentence carries operational importance. The polling sequence, quota caveat, and anti-duplication warning are essential behavioral details, not padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the asynchronous polling lifecycle, 14 optional parameters, and an output schema, the description covers scope limits, authorization, unavailable engines, measurement limits, polling, and quota behavior. Nothing critical needed to invoke this tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The tool description adds real workflow value by explaining how target, jobId, and pollArguments work togetherhopping and warning not to add scan options. This exceeds the schema, though there is some overlap with the existing jobId parameter description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Run all six audit pillars,' clearly stating the verb, resource, and scope. This distinguishes audit_full from the sibling single-pillar audit tools (audit_seo, audit_security, etc.) without any ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear starting conditions ('Provide target to start an audit, or jobId to poll a running one') and detailed polling behavior. It does not explicitly name sibling tools as alternatives, but the 'all six pillars' scope and sibling names make the intended use obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audit_integrationsAnalytics & tracking auditAInspect
Detect and audit the analytics/tag/marketing-pixel/verification/consent stack from the site HTML + headers: GA4, GTM, Meta Pixel, TikTok/LinkedIn pixels, Search Console/Bing verification, Hotjar/Clarity, consent/CMP, and PII-in-dataLayer leaks. Returns gaps + 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.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Report language (default en): en, tr, es, de, fr, pt, it, ja, zh. | |
| jobId | No | 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. | |
| target | No | Target website URL or domain you own / are authorized to audit (e.g. https://example.com). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses important asynchronous behavior: long audits may return status running with a jobId, polling retrieves the same audit without starting a new scan or reserving more quota, and running should not be presented as completed. This goes well beyond what annotations provide and prevents common polling misuses.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the tool's purpose and then gives dense, practical usage instructions. Although it is longer than average, every sentence conveys a distinct operational warning or requirement, with no filler or redundant restating of schema fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers start, poll, resume, quota, authorization, and failure-prevention behaviors. Since an output schema exists, return values do not need to be described here. Nothing essential is missing for correctly invoking and polling this asynchronous audit tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents all three parameters at 100% coverage, so the baseline is 3. The description adds meaningful semantics: target must be an owned/authorized URL, target starts an audit while jobId polls, pollArguments must be copied unchanged, and jobId must never be invented. This extra guidance raises it above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verbs 'Detect and audit' and names a clearly bounded resource: the analytics/tag/marketing-pixel/verification/consent stack. It lists concrete item types like GA4, GTM, Meta Pixel, Hotjar, CMP, and dataLayer PII leaks, and states it returns gaps and fixes. This clearly differentiates it from sibling audit_* tools by subject matter.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives detailed operating guidance: provide target to start, jobId to poll, wait retryAfterMs, copy pollArguments unchanged, and do not start a replacement audit while running. It does not explicitly contrast with sibling audit tools, but the scope is clear enough for an agent to select this tool for analytics/tracking/consent audits.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audit_performancePerformance & Core Web Vitals auditAInspect
Measure performance via Google PageSpeed Insights (Lighthouse lab + CrUX field data): LCP, INP, CLS, FCP, TTFB, and the top improvement opportunities. Returns findings with fixes. (Uses the operator PAGESPEED_API_KEY when set.) 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.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Report language (default en): en, tr, es, de, fr, pt, it, ja, zh. | |
| jobId | No | 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. | |
| target | No | Target website URL or domain you own / are authorized to audit (e.g. https://example.com). | |
| strategy | No | Device strategy (default mobile). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say readOnlyHint=false and destructiveHint=false, so the description carries the burden of explaining actual behavior. It does this richly: long audits return 'status: running with a jobId', polling retrieves the same audit 'without starting another scan or reserving more quota', and it warns not to present running as completed. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is longer than average but every sentence serves a purpose, especially around the asynchronous polling workflow. It is front-loaded with the core purpose and metrics, then moves logically into usage and warnings. Slight redundancy with the jobId schema description keeps it from a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the full lifecycle: starting, polling, waiting via retryAfterMs, preserving pollArguments, quota behavior, and the operator API key. The input schema fully documents parameters and an output schema exists, so return values do not need elaboration. For a tool with async behavior and quota implications, this is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 parameter interplay: target starts an audit, jobId polls, and returned pollArguments must be copied unchanged including target and jobId. This clarifies how the parameters relate beyond their individual schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Measure performance via Google PageSpeed Insights' and enumerates concrete metrics (LCP, INP, CLS, FCP, TTFB) plus return value ('findings with fixes'). This clearly differentiates it from sibling audit tools focused on other domains like accessibility or security.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear, explicit usage context for both starting an audit and polling a running one: 'Provide target to start an audit, or jobId to poll a running one.' It also instructs not to start a replacement audit while running. It doesn't explicitly contrast with sibling audit tools, but the start/poll workflow is thoroughly specified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audit_securitySecurity auditAInspect
Audit the website with every security module included in the connected account by default. A default Free audit on an unverified site runs its public security checks and explains the additional checks unlocked by ownership verification. Explicit protected selections require verification. Explicit profile, module and port selections are supported within the account entitlement. Returns all observed findings and identifies unavailable measurements or engines. 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.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Report language (default en): en, tr, es, de, fr, pt, it, ja, zh. | |
| jobId | No | 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. | |
| ports | No | Optional port selection: top, common, all, or comma-separated ports/ranges. Account limits apply; default top. | |
| target | No | Target website URL or domain you own / are authorized to audit (e.g. https://example.com). | |
| modules | No | Optional explicit security module selection. Omit to use the plan scope. Protected checks require current target ownership; unavailable engines are reported as unmeasured. | |
| profile | No | Optional security profile included in the account. Omit to run all security modules included in the connected plan. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses important behavioral traits beyond the annotations: audits can be asynchronous and return 'status: running' with a jobId, polling returns the same audit without consuming extra quota, pollArguments must be copied unchanged, and ownership verification gates protected checks. This prevents the agent from misinterpreting a running status as complete or starting duplicate scans.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but every sentence earns its place: it front-loads the core purpose, then covers verification, selection scope, return values, and the crucial polling protocol. There is no filler or redundant restatement of schema fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists and input schema coverage is complete, the description covers the full operational lifecycle: starting an audit, handling asynchronous results, polling, quota behavior, verification requirements, and reported findings. No critical context for calling this tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameter details already exist in the schema. The description adds operational meaning beyond the schema by explaining how target and jobId interact in the polling workflow, and by clarifying that profile/module/port selections are subject to account entitlement and that protected selections require verification.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Audit'), resource ('the website'), and scope ('every security module included in the connected account by default'). It clearly distinguishes the security audit from sibling tools like audit_seo or audit_performance, and the title 'Security audit' is expanded with concrete behavior rather than repeated as a tautology.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides detailed usage guidance: start with target, poll with jobId, wait retryAfterMs, copy pollArguments unchanged, and do not start a replacement audit while one is running. It does not explicitly name sibling alternatives or say 'for accessibility use audit_accessibility', but the security-specific scope and the start/poll lifecycle are made clear enough for an agent to select and use the tool correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audit_seoTechnical SEO auditAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Report language (default en): en, tr, es, de, fr, pt, it, ja, zh. | |
| jobId | No | 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. | |
| target | No | Target website URL or domain you own / are authorized to audit (e.g. https://example.com). | |
| maxPages | No | Maximum pages per crawl. Defaults to the connected plan maximum, bounded by remaining allowance. | |
| searchConsoleDays | No | Search Console reporting window in days (default 28). | |
| includeSearchConsole | No | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
7 tool updates
- Changed
audit_accessibility1 field changed- removed
Input schema / anyOfRemoved value: -[ - { - "required": [ - "target" - ] - }, - { - "required": [ - "jobId" - ] - } -]
- Changed
audit_ai_visibility1 field changed- removed
Input schema / anyOfRemoved value: -[ - { - "required": [ - "target" - ] - }, - { - "required": [ - "jobId" - ] - } -]
- Changed
audit_full1 field changed- removed
Input schema / anyOfRemoved value: -[ - { - "required": [ - "target" - ] - }, - { - "required": [ - "jobId" - ] - } -]
- Changed
audit_integrations1 field changed- removed
Input schema / anyOfRemoved value: -[ - { - "required": [ - "target" - ] - }, - { - "required": [ - "jobId" - ] - } -]
- Changed
audit_performance1 field changed- removed
Input schema / anyOfRemoved value: -[ - { - "required": [ - "target" - ] - }, - { - "required": [ - "jobId" - ] - } -]
- Changed
audit_security1 field changed- removed
Input schema / anyOfRemoved value: -[ - { - "required": [ - "target" - ] - }, - { - "required": [ - "jobId" - ] - } -]
- Changed
audit_seo1 field changed- removed
Input schema / anyOfRemoved value: -[ - { - "required": [ - "target" - ] - }, - { - "required": [ - "jobId" - ] - } -]
7 tool updates
- Changed
audit_accessibility3 fields changed- changed
Input schema / anyOfPrevious value: -[ - { - "required": [ - "target" - ] - }, - { - "maxProperties": 1, - "required": [ - "jobId" - ] - } -]New value: +[ + { + "required": [ + "target" + ] + }, + { + "required": [ + "jobId" + ] + } +] - changed
Input schema / properties / jobId / descriptionPrevious 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." - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
audit_ai_visibility3 fields changed- changed
Input schema / anyOfPrevious value: -[ - { - "required": [ - "target" - ] - }, - { - "maxProperties": 1, - "required": [ - "jobId" - ] - } -]New value: +[ + { + "required": [ + "target" + ] + }, + { + "required": [ + "jobId" + ] + } +] - changed
Input schema / properties / jobId / descriptionPrevious 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." - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
audit_full3 fields changed- changed
Input schema / anyOfPrevious value: -[ - { - "required": [ - "target" - ] - }, - { - "maxProperties": 1, - "required": [ - "jobId" - ] - } -]New value: +[ + { + "required": [ + "target" + ] + }, + { + "required": [ + "jobId" + ] + } +] - changed
Input schema / properties / jobId / descriptionPrevious 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." - changed
Output schema / oneOfPrevious value: -[ - { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "auditDetails": { - "additionalProperties": true, - "description": "Complete available scope, check states and measurement evidence; unmeasured checks are not passes.", - "type": "object" - }, - "blended": { - "description": "Weighted score across measured pillars, or null when no pillar could be measured.", - "type": [ - "number", - "null" - ] - }, - "complete": { - "description": "Compatibility field: every requested pillar runner returned. Consult coverageStatus and auditDetails for unmeasured modules and metrics.", - "type": "boolean" - }, - "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" - }, - "failedPillars": { - "description": "Pillars that could not be measured and their sanitized errors.", - "items": { - "additionalProperties": false, - "properties": { - "error": { - "description": "Sanitized failure reason.", - "type": "string" - }, - "pillar": { - "description": "Audit pillar that failed.", - "type": "string" - } - }, - "required": [ - "pillar", - "error" - ], - "type": "object" - }, - "type": "array" - }, - "findings": { - "description": "Prioritized findings across every completed audit pillar.", - "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" - }, - "pillar": { - "description": "Audit pillar that produced the finding.", - "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": [ - "pillar", - "findingKey", - "severity", - "title", - "evidence", - "impact", - "remediation", - "category" - ], - "type": "object" - }, - "type": "array" - }, - "findingsTruncated": { - "description": "True when additional findings exist outside this response.", - "type": "boolean" - }, - "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" - }, - "pillar": { - "description": "Audit pillar that produced the finding.", - "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": [ - "pillar", - "findingKey", - "severity", - "title", - "evidence", - "impact", - "remediation", - "category" - ], - "type": "object" - }, - "type": "array" - }, - "pillars": { - "additionalProperties": { - "additionalProperties": false, - "properties": { - "findings": { - "description": "Number of findings in this pillar.", - "minimum": 0, - "type": "integer" - }, - "score": { - "description": "Pillar score, or null when unavailable.", - "type": [ - "number", - "null" - ] - } - }, - "required": [ - "score", - "findings" - ], - "type": "object" - }, - "description": "Per-pillar score and finding-count summary.", - "type": "object" - }, - "returnedFindings": { - "description": "Number of cross-pillar findings included.", - "minimum": 0, - "type": "integer" - }, - "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 cross-pillar findings before response truncation.", - "minimum": 0, - "type": "integer" - } - }, - "required": [ - "target", - "blended", - "pillars", - "counts", - "total", - "returnedFindings", - "findingsTruncated", - "findings", - "complete", - "failedPillars" - ], - "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": false, + "properties": { + "auditDetails": { + "additionalProperties": true, + "description": "Complete available scope, check states and measurement evidence; unmeasured checks are not passes.", + "type": "object" + }, + "blended": { + "description": "Weighted score across measured pillars, or null when no pillar could be measured.", + "type": [ + "number", + "null" + ] + }, + "complete": { + "description": "Compatibility field: every requested pillar runner returned. Consult coverageStatus and auditDetails for unmeasured modules and metrics.", + "type": "boolean" + }, + "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" + }, + "failedPillars": { + "description": "Pillars that could not be measured and their sanitized errors.", + "items": { + "additionalProperties": false, + "properties": { + "error": { + "description": "Sanitized failure reason.", + "type": "string" + }, + "pillar": { + "description": "Audit pillar that failed.", + "type": "string" + } + }, + "required": [ + "pillar", + "error" + ], + "type": "object" + }, + "type": "array" + }, + "findings": { + "description": "Prioritized findings across every completed audit pillar.", + "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" + }, + "pillar": { + "description": "Audit pillar that produced the finding.", + "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": [ + "pillar", + "findingKey", + "severity", + "title", + "evidence", + "impact", + "remediation", + "category" + ], + "type": "object" + }, + "type": "array" + }, + "findingsTruncated": { + "description": "True when additional findings exist outside this response.", + "type": "boolean" + }, + "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" + }, + "pillar": { + "description": "Audit pillar that produced the finding.", + "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": [ + "pillar", + "findingKey", + "severity", + "title", + "evidence", + "impact", + "remediation", + "category" + ], + "type": "object" + }, + "type": "array" + }, + "pillars": { + "additionalProperties": { + "additionalProperties": false, + "properties": { + "findings": { + "description": "Number of findings in this pillar.", + "minimum": 0, + "type": "integer" + }, + "score": { + "description": "Pillar score, or null when unavailable.", + "type": [ + "number", + "null" + ] + } + }, + "required": [ + "score", + "findings" + ], + "type": "object" + }, + "description": "Per-pillar score and finding-count summary.", + "type": "object" + }, + "returnedFindings": { + "description": "Number of cross-pillar findings included.", + "minimum": 0, + "type": "integer" + }, + "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 cross-pillar findings before response truncation.", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "target", + "blended", + "pillars", + "counts", + "total", + "returnedFindings", + "findingsTruncated", + "findings", + "complete", + "failedPillars" + ], + "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" + } +]
- Changed
audit_integrations3 fields changed- changed
Input schema / anyOfPrevious value: -[ - { - "required": [ - "target" - ] - }, - { - "maxProperties": 1, - "required": [ - "jobId" - ] - } -]New value: +[ + { + "required": [ + "target" + ] + }, + { + "required": [ + "jobId" + ] + } +] - changed
Input schema / properties / jobId / descriptionPrevious 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." - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
audit_performance3 fields changed- changed
Input schema / anyOfPrevious value: -[ - { - "required": [ - "target" - ] - }, - { - "maxProperties": 1, - "required": [ - "jobId" - ] - } -]New value: +[ + { + "required": [ + "target" + ] + }, + { + "required": [ + "jobId" + ] + } +] - changed
Input schema / properties / jobId / descriptionPrevious 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." - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
audit_security3 fields changed- changed
Input schema / anyOfPrevious value: -[ - { - "required": [ - "target" - ] - }, - { - "maxProperties": 1, - "required": [ - "jobId" - ] - } -]New value: +[ + { + "required": [ + "target" + ] + }, + { + "required": [ + "jobId" + ] + } +] - changed
Input schema / properties / jobId / descriptionPrevious 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." - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
audit_seo3 fields changed- changed
Input schema / anyOfPrevious value: -[ - { - "required": [ - "target" - ] - }, - { - "maxProperties": 1, - "required": [ - "jobId" - ] - } -]New value: +[ + { + "required": [ + "target" + ] + }, + { + "required": [ + "jobId" + ] + } +] - changed
Input schema / properties / jobId / descriptionPrevious 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." - changed
Output schema / oneOfPrevious 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" + } +]
7 tool updates
- Changed
audit_accessibility1 field changed- changed
Output schema / oneOfPrevious 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" + } +]
- Changed
audit_ai_visibility1 field changed- changed
Output schema / oneOfPrevious 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" + } +]
- Changed
audit_full1 field changed- changed
Output schema / oneOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "auditDetails": { - "additionalProperties": true, - "description": "Complete available scope, check states and measurement evidence; unmeasured checks are not passes.", - "type": "object" - }, - "blended": { - "description": "Weighted score across measured pillars, or null when no pillar could be measured.", - "type": [ - "number", - "null" - ] - }, - "complete": { - "description": "Compatibility field: every requested pillar runner returned. Consult coverageStatus and auditDetails for unmeasured modules and metrics.", - "type": "boolean" - }, - "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" - }, - "failedPillars": { - "description": "Pillars that could not be measured and their sanitized errors.", - "items": { - "additionalProperties": false, - "properties": { - "error": { - "description": "Sanitized failure reason.", - "type": "string" - }, - "pillar": { - "description": "Audit pillar that failed.", - "type": "string" - } - }, - "required": [ - "pillar", - "error" - ], - "type": "object" - }, - "type": "array" - }, - "findings": { - "description": "Prioritized findings across every completed audit pillar.", - "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" - }, - "pillar": { - "description": "Audit pillar that produced the finding.", - "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": [ - "pillar", - "findingKey", - "severity", - "title", - "evidence", - "impact", - "remediation", - "category" - ], - "type": "object" - }, - "type": "array" - }, - "findingsTruncated": { - "description": "True when additional findings exist outside this response.", - "type": "boolean" - }, - "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" - }, - "pillar": { - "description": "Audit pillar that produced the finding.", - "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": [ - "pillar", - "findingKey", - "severity", - "title", - "evidence", - "impact", - "remediation", - "category" - ], - "type": "object" - }, - "type": "array" - }, - "pillars": { - "additionalProperties": { - "additionalProperties": false, - "properties": { - "findings": { - "description": "Number of findings in this pillar.", - "minimum": 0, - "type": "integer" - }, - "score": { - "description": "Pillar score, or null when unavailable.", - "type": [ - "number", - "null" - ] - } - }, - "required": [ - "score", - "findings" - ], - "type": "object" - }, - "description": "Per-pillar score and finding-count summary.", - "type": "object" - }, - "returnedFindings": { - "description": "Number of cross-pillar findings included.", - "minimum": 0, - "type": "integer" - }, - "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 cross-pillar findings before response truncation.", - "minimum": 0, - "type": "integer" - } - }, - "required": [ - "target", - "blended", - "pillars", - "counts", - "total", - "returnedFindings", - "findingsTruncated", - "findings", - "complete", - "failedPillars" - ], - "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": false, + "properties": { + "auditDetails": { + "additionalProperties": true, + "description": "Complete available scope, check states and measurement evidence; unmeasured checks are not passes.", + "type": "object" + }, + "blended": { + "description": "Weighted score across measured pillars, or null when no pillar could be measured.", + "type": [ + "number", + "null" + ] + }, + "complete": { + "description": "Compatibility field: every requested pillar runner returned. Consult coverageStatus and auditDetails for unmeasured modules and metrics.", + "type": "boolean" + }, + "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" + }, + "failedPillars": { + "description": "Pillars that could not be measured and their sanitized errors.", + "items": { + "additionalProperties": false, + "properties": { + "error": { + "description": "Sanitized failure reason.", + "type": "string" + }, + "pillar": { + "description": "Audit pillar that failed.", + "type": "string" + } + }, + "required": [ + "pillar", + "error" + ], + "type": "object" + }, + "type": "array" + }, + "findings": { + "description": "Prioritized findings across every completed audit pillar.", + "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" + }, + "pillar": { + "description": "Audit pillar that produced the finding.", + "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": [ + "pillar", + "findingKey", + "severity", + "title", + "evidence", + "impact", + "remediation", + "category" + ], + "type": "object" + }, + "type": "array" + }, + "findingsTruncated": { + "description": "True when additional findings exist outside this response.", + "type": "boolean" + }, + "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" + }, + "pillar": { + "description": "Audit pillar that produced the finding.", + "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": [ + "pillar", + "findingKey", + "severity", + "title", + "evidence", + "impact", + "remediation", + "category" + ], + "type": "object" + }, + "type": "array" + }, + "pillars": { + "additionalProperties": { + "additionalProperties": false, + "properties": { + "findings": { + "description": "Number of findings in this pillar.", + "minimum": 0, + "type": "integer" + }, + "score": { + "description": "Pillar score, or null when unavailable.", + "type": [ + "number", + "null" + ] + } + }, + "required": [ + "score", + "findings" + ], + "type": "object" + }, + "description": "Per-pillar score and finding-count summary.", + "type": "object" + }, + "returnedFindings": { + "description": "Number of cross-pillar findings included.", + "minimum": 0, + "type": "integer" + }, + "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 cross-pillar findings before response truncation.", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "target", + "blended", + "pillars", + "counts", + "total", + "returnedFindings", + "findingsTruncated", + "findings", + "complete", + "failedPillars" + ], + "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" + } +]
- Changed
audit_integrations1 field changed- changed
Output schema / oneOfPrevious 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" + } +]
- Changed
audit_performance1 field changed- changed
Output schema / oneOfPrevious 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" + } +]
- Changed
audit_security1 field changed- changed
Output schema / oneOfPrevious 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" + } +]
- Changed
audit_seo1 field changed- changed
Output schema / oneOfPrevious 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" + } +]
7 tool updates
- Changed
audit_accessibility7 fields changed- added
Input schema / anyOfAdded value: +[ + { + "required": [ + "target" + ] + }, + { + "maxProperties": 1, + "required": [ + "jobId" + ] + } +] - added
Input schema / properties / jobIdAdded 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" +} - removed
Input schema / requiredRemoved value: -[ - "target" -] - removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / oneOfAdded 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" + } +] - removed
Output schema / propertiesRemoved 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" - } -} - removed
Output schema / requiredRemoved value: -[ - "target", - "kind", - "score", - "grade", - "counts", - "total", - "returnedFindings", - "findingsTruncated", - "passingChecks", - "findings" -]
- Changed
audit_ai_visibility7 fields changed- added
Input schema / anyOfAdded value: +[ + { + "required": [ + "target" + ] + }, + { + "maxProperties": 1, + "required": [ + "jobId" + ] + } +] - added
Input schema / properties / jobIdAdded 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" +} - removed
Input schema / requiredRemoved value: -[ - "target" -] - removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / oneOfAdded 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" + } +] - removed
Output schema / propertiesRemoved 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" - } -} - removed
Output schema / requiredRemoved value: -[ - "target", - "kind", - "score", - "grade", - "counts", - "total", - "returnedFindings", - "findingsTruncated", - "passingChecks", - "findings" -]
- Changed
audit_full7 fields changed- added
Input schema / anyOfAdded value: +[ + { + "required": [ + "target" + ] + }, + { + "maxProperties": 1, + "required": [ + "jobId" + ] + } +] - added
Input schema / properties / jobIdAdded 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" +} - removed
Input schema / requiredRemoved value: -[ - "target" -] - removed
Output schema / additionalPropertiesRemoved value: -false - added
Output schema / oneOfAdded value: +[ + { + "additionalProperties": false, + "properties": { + "auditDetails": { + "additionalProperties": true, + "description": "Complete available scope, check states and measurement evidence; unmeasured checks are not passes.", + "type": "object" + }, + "blended": { + "description": "Weighted score across measured pillars, or null when no pillar could be measured.", + "type": [ + "number", + "null" + ] + }, + "complete": { + "description": "Compatibility field: every requested pillar runner returned. Consult coverageStatus and auditDetails for unmeasured modules and metrics.", + "type": "boolean" + }, + "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" + }, + "failedPillars": { + "description": "Pillars that could not be measured and their sanitized errors.", + "items": { + "additionalProperties": false, + "properties": { + "error": { + "description": "Sanitized failure reason.", + "type": "string" + }, + "pillar": { + "description": "Audit pillar that failed.", + "type": "string" + } + }, + "required": [ + "pillar", + "error" + ], + "type": "object" + }, + "type": "array" + }, + "findings": { + "description": "Prioritized findings across every completed audit pillar.", + "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" + }, + "pillar": { + "description": "Audit pillar that produced the finding.", + "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": [ + "pillar", + "findingKey", + "severity", + "title", + "evidence", + "impact", + "remediation", + "category" + ], + "type": "object" + }, + "type": "array" + }, + "findingsTruncated": { + "description": "True when additional findings exist outside this response.", + "type": "boolean" + }, + "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" + }, + "pillar": { + "description": "Audit pillar that produced the finding.", + "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": [ + "pillar", + "findingKey", + "severity", + "title", + "evidence", + "impact", + "remediation", + "category" + ], + "type": "object" + }, + "type": "array" + }, + "pillars": { + "additionalProperties": { + "additionalProperties": false, + "properties": { + "findings": { + "description": "Number of findings in this pillar.", + "minimum": 0, + "type": "integer" + }, + "score": { + "description": "Pillar score, or null when unavailable.", + "type": [ + "number", + "null" + ] + } + }, + "required": [ + "score", + "findings" + ], + "type": "object" + }, + "description": "Per-pillar score and finding-count summary.", + "type": "object" + }, + "returnedFindings": { + "description": "Number of cross-pillar findings included.", + "minimum": 0, + "type": "integer" + }, + "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 cross-pillar findings before response truncation.", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "target", + "blended", + "pillars", + "counts", + "total", + "returnedFindings", + "findingsTruncated", + "findings", + "complete", + "failedPillars" + ], + "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" + } +] - removed
Output schema / propertiesRemoved value: -{ - "auditDetails": { - "additionalProperties": true, - "description": "Complete available scope, check states and measurement evidence; unmeasured checks are not passes.", - "type": "object" - }, - "blended": { - "description": "Weighted score across measured pillars, or null when no pillar could be measured.", - "type": [ - "number", - "null" - ] - }, - "complete": { - "description": "Compatibility field: every requested pillar runner returned. Consult coverageStatus and auditDetails for unmeasured modules and metrics.", - "type": "boolean" - }, - "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" - }, - "failedPillars": { - "description": "Pillars that could not be measured and their sanitized errors.", - "items": { - "additionalProperties": false, - "properties": { - "error": { - "description": "Sanitized failure reason.", - "type": "string" - }, - "pillar": { - "description": "Audit pillar that failed.", - "type": "string" - } - }, - "required": [ - "pillar", - "error" - ], - "type": "object" - }, - "type": "array" - }, - "findings": { - "description": "Prioritized findings across every completed audit pillar.", - "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" - }, - "pillar": { - "description": "Audit pillar that produced the finding.", - "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": [ - "pillar", - "findingKey", - "severity", - "title", - "evidence", - "impact", - "remediation", - "category" - ], - "type": "object" - }, - "type": "array" - }, - "findingsTruncated": { - "description": "True when additional findings exist outside this response.", - "type": "boolean" - }, - "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" - }, - "pillar": { - "description": "Audit pillar that produced the finding.", - "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": [ - "pillar", - "findingKey", - "severity", - "title", - "evidence", - "impact", - "remediation", - "category" - ], - "type": "object" - }, - "type": "array" - }, - "pillars": { - "additionalProperties": { - "additionalProperties": false, - "properties": { - "findings": { - "description": "Number of findings in this pillar.", - "minimum": 0, - "type": "integer" - }, - "score": { - "description": "Pillar score, or null when unavailable.", - "type": [ - "number", - "null" - ] - } - }, - "required": [ - "score", - "findings" - ], - "type": "object" - }, - "description": "Per-pillar score and finding-count summary.", - "type": "object" - }, - "returnedFindings": { - "description": "Number of cross-pillar findings included.", - "minimum": 0, - "type": "integer" - }, - "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 cross-pillar findings before response truncation.", - "minimum": 0, - "type": "integer" - } -} - removed
Output schema / requiredRemoved value: -[ - "target", - "blended", - "pillars", - "counts", - "total", - "returnedFindings", - "findingsTruncated", - "findings", - "complete", - "failedPillars" -]
- Changed
audit_integrations7 fields changed- added
Input schema / anyOfAdded value: +[ + { + "required": [ + "target" + ] + }, + { + "maxProperties": 1, + "required": [ + "jobId" + ] + } +] - added
Input schema / properties / jobIdAdded 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" +} - removed
Input schema / requiredRemoved value: -[ - "target" -] - removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / oneOfAdded 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" + } +] - removed
Output schema / propertiesRemoved 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" - } -} - removed
Output schema / requiredRemoved value: -[ - "target", - "kind", - "score", - "grade", - "counts", - "total", - "returnedFindings", - "findingsTruncated", - "passingChecks", - "findings" -]
- Changed
audit_performance7 fields changed- added
Input schema / anyOfAdded value: +[ + { + "required": [ + "target" + ] + }, + { + "maxProperties": 1, + "required": [ + "jobId" + ] + } +] - added
Input schema / properties / jobIdAdded 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" +} - removed
Input schema / requiredRemoved value: -[ - "target" -] - removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / oneOfAdded 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" + } +] - removed
Output schema / propertiesRemoved 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" - } -} - removed
Output schema / requiredRemoved value: -[ - "target", - "kind", - "score", - "grade", - "counts", - "total", - "returnedFindings", - "findingsTruncated", - "passingChecks", - "findings" -]
- Changed
audit_security7 fields changed- added
Input schema / anyOfAdded value: +[ + { + "required": [ + "target" + ] + }, + { + "maxProperties": 1, + "required": [ + "jobId" + ] + } +] - added
Input schema / properties / jobIdAdded 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" +} - removed
Input schema / requiredRemoved value: -[ - "target" -] - removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / oneOfAdded 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" + } +] - removed
Output schema / propertiesRemoved 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" - } -} - removed
Output schema / requiredRemoved value: -[ - "target", - "kind", - "score", - "grade", - "counts", - "total", - "returnedFindings", - "findingsTruncated", - "passingChecks", - "findings" -]
- Changed
audit_seo7 fields changed- added
Input schema / anyOfAdded value: +[ + { + "required": [ + "target" + ] + }, + { + "maxProperties": 1, + "required": [ + "jobId" + ] + } +] - added
Input schema / properties / jobIdAdded 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" +} - removed
Input schema / requiredRemoved value: -[ - "target" -] - removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / oneOfAdded 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" + } +] - removed
Output schema / propertiesRemoved 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" - } -} - removed
Output schema / requiredRemoved value: -[ - "target", - "kind", - "score", - "grade", - "counts", - "total", - "returnedFindings", - "findingsTruncated", - "passingChecks", - "findings" -]
7 tool updates
- Changed
audit_accessibility5 fields changed- changed
Output schema / properties / auditDetails / descriptionPrevious 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." - added
Output schema / properties / coverageStatusAdded 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" +} - added
Output schema / properties / executionCompleteAdded value: +{ + "description": "Whether all requested pillar runners returned. This is separate from measurement coverage.", + "type": "boolean" +} - added
Output schema / properties / passingFindingsAdded 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" +} - added
Output schema / properties / statusAdded value: +{ + "description": "Completed when requested measurements are available; partial when a requested runner or measurement is unavailable.", + "enum": [ + "completed", + "partial" + ], + "type": "string" +}
- Changed
audit_ai_visibility10 fields changed- added
Input schema / properties / brandAdded value: +{ + "description": "Optional expected brand name; otherwise inferred from the website.", + "maxLength": 200, + "minLength": 1, + "type": "string" +} - added
Input schema / properties / competitorsAdded value: +{ + "description": "Optional competitor names for comparison-content assessment.", + "items": { + "maxLength": 200, + "minLength": 1, + "type": "string" + }, + "maxItems": 8, + "type": "array" +} - added
Input schema / properties / maxPagesAdded value: +{ + "description": "Maximum pages per crawl. Defaults to the connected plan maximum, bounded by remaining allowance.", + "maximum": 30, + "minimum": 1, + "type": "integer" +} - added
Input schema / properties / promptLimitAdded value: +{ + "description": "Maximum content-readiness prompts, capped by account and remaining allowance. Defaults to the account maximum.", + "maximum": 24, + "minimum": 1, + "type": "integer" +} - added
Input schema / properties / promptsAdded value: +{ + "description": "Optional questions to assess against the site content. These are content-readiness checks, not live AI-provider queries.", + "items": { + "maxLength": 500, + "minLength": 1, + "type": "string" + }, + "maxItems": 24, + "minItems": 1, + "type": "array" +} - changed
Output schema / properties / auditDetails / descriptionPrevious 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." - added
Output schema / properties / coverageStatusAdded 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" +} - added
Output schema / properties / executionCompleteAdded value: +{ + "description": "Whether all requested pillar runners returned. This is separate from measurement coverage.", + "type": "boolean" +} - added
Output schema / properties / passingFindingsAdded 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" +} - added
Output schema / properties / statusAdded value: +{ + "description": "Completed when requested measurements are available; partial when a requested runner or measurement is unavailable.", + "enum": [ + "completed", + "partial" + ], + "type": "string" +}
- Changed
audit_full17 fields changed- added
Input schema / properties / brandAdded value: +{ + "description": "Optional expected brand name; otherwise inferred from the website.", + "maxLength": 200, + "minLength": 1, + "type": "string" +} - added
Input schema / properties / competitorsAdded value: +{ + "description": "Optional competitor names for comparison-content assessment.", + "items": { + "maxLength": 200, + "minLength": 1, + "type": "string" + }, + "maxItems": 8, + "type": "array" +} - added
Input schema / properties / includeSearchConsoleAdded 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" +} - added
Input schema / properties / maxPagesAdded value: +{ + "description": "Maximum pages per crawl. Defaults to the connected plan maximum, bounded by remaining allowance.", + "maximum": 30, + "minimum": 1, + "type": "integer" +} - added
Input schema / properties / modulesAdded value: +{ + "description": "Optional explicit security module selection. Omit to use the plan scope. Protected checks require current target ownership; unavailable engines are reported as unmeasured.", + "items": { + "enum": [ + "dns", + "dns-email", + "rdap", + "tls", + "http-headers", + "mitm-posture", + "tech-fingerprint", + "http-methods", + "exposure", + "api-exposure", + "auth-surface", + "supply-chain", + "wordpress", + "ports", + "port-intel", + "sql-injection", + "ddos-resilience", + "secret-exposure", + "subdomain-takeover", + "cors-audit", + "injection-canary", + "transport-delivery", + "pentest-suite", + "engine-nmap", + "engine-nuclei", + "engine-zap", + "engine-wpscan" + ], + "type": "string" + }, + "maxItems": 27, + "minItems": 1, + "type": "array", + "uniqueItems": true +} - added
Input schema / properties / portsAdded value: +{ + "description": "Optional port selection: top, common, all, or comma-separated ports/ranges. Account limits apply; default top.", + "maxLength": 512, + "type": "string" +} - added
Input schema / properties / profileAdded value: +{ + "description": "Optional security profile included in the account. Omit to run all security modules included in the connected plan.", + "enum": [ + "passive", + "baseline", + "deep", + "all" + ], + "type": "string" +} - added
Input schema / properties / promptLimitAdded value: +{ + "description": "Maximum content-readiness prompts, capped by account and remaining allowance. Defaults to the account maximum.", + "maximum": 24, + "minimum": 1, + "type": "integer" +} - added
Input schema / properties / promptsAdded value: +{ + "description": "Optional questions to assess against the site content. These are content-readiness checks, not live AI-provider queries.", + "items": { + "maxLength": 500, + "minLength": 1, + "type": "string" + }, + "maxItems": 24, + "minItems": 1, + "type": "array" +} - added
Input schema / properties / searchConsoleDaysAdded value: +{ + "description": "Search Console reporting window in days (default 28).", + "enum": [ + 7, + 28, + 90 + ], + "type": "integer" +} - added
Input schema / properties / strategyAdded value: +{ + "description": "PageSpeed device strategy (default mobile); field data is included when available.", + "enum": [ + "mobile", + "desktop" + ], + "type": "string" +} - changed
Output schema / properties / auditDetails / descriptionPrevious value: -"Per-pillar assessment scope, check states and available measurement evidence."New value: +"Complete available scope, check states and measurement evidence; unmeasured checks are not passes." - changed
Output schema / properties / complete / descriptionPrevious value: -"True only when every requested pillar completed successfully."New value: +"Compatibility field: every requested pillar runner returned. Consult coverageStatus and auditDetails for unmeasured modules and metrics." - added
Output schema / properties / coverageStatusAdded 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" +} - added
Output schema / properties / executionCompleteAdded value: +{ + "description": "Whether all requested pillar runners returned. This is separate from measurement coverage.", + "type": "boolean" +} - added
Output schema / properties / passingFindingsAdded 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" + }, + "pillar": { + "description": "Audit pillar that produced the finding.", + "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": [ + "pillar", + "findingKey", + "severity", + "title", + "evidence", + "impact", + "remediation", + "category" + ], + "type": "object" + }, + "type": "array" +} - added
Output schema / properties / statusAdded value: +{ + "description": "Completed when requested measurements are available; partial when a requested runner or measurement is unavailable.", + "enum": [ + "completed", + "partial" + ], + "type": "string" +}
- Changed
audit_integrations5 fields changed- changed
Output schema / properties / auditDetails / descriptionPrevious 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." - added
Output schema / properties / coverageStatusAdded 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" +} - added
Output schema / properties / executionCompleteAdded value: +{ + "description": "Whether all requested pillar runners returned. This is separate from measurement coverage.", + "type": "boolean" +} - added
Output schema / properties / passingFindingsAdded 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" +} - added
Output schema / properties / statusAdded value: +{ + "description": "Completed when requested measurements are available; partial when a requested runner or measurement is unavailable.", + "enum": [ + "completed", + "partial" + ], + "type": "string" +}
- Changed
audit_performance5 fields changed- changed
Output schema / properties / auditDetails / descriptionPrevious 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." - added
Output schema / properties / coverageStatusAdded 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" +} - added
Output schema / properties / executionCompleteAdded value: +{ + "description": "Whether all requested pillar runners returned. This is separate from measurement coverage.", + "type": "boolean" +} - added
Output schema / properties / passingFindingsAdded 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" +} - added
Output schema / properties / statusAdded value: +{ + "description": "Completed when requested measurements are available; partial when a requested runner or measurement is unavailable.", + "enum": [ + "completed", + "partial" + ], + "type": "string" +}
- Changed
audit_security10 fields changed- changed
Input schema / properties / modules / descriptionPrevious value: -"Optional security modules. The default uses public posture signals only. Explicit protected modules require verified-target authorization and remain subject to account and hosted active-scan policy."New value: +"Optional explicit security module selection. Omit to use the plan scope. Protected checks require current target ownership; unavailable engines are reported as unmeasured." - added
Input schema / properties / modules / minItemsAdded value: +1 - added
Input schema / properties / portsAdded value: +{ + "description": "Optional port selection: top, common, all, or comma-separated ports/ranges. Account limits apply; default top.", + "maxLength": 512, + "type": "string" +} - changed
Input schema / properties / profile / descriptionPrevious value: -"Scan depth. Depth selection (passive/deep/all) is available only on a self-hosted server; the hosted transport runs a fixed non-intrusive baseline."New value: +"Optional security profile included in the account. Omit to run all security modules included in the connected plan." - changed
Input schema / properties / profile / enumPrevious value: -[ - "baseline" -]New value: +[ + "passive", + "baseline", + "deep", + "all" +] - changed
Output schema / properties / auditDetails / descriptionPrevious 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." - added
Output schema / properties / coverageStatusAdded 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" +} - added
Output schema / properties / executionCompleteAdded value: +{ + "description": "Whether all requested pillar runners returned. This is separate from measurement coverage.", + "type": "boolean" +} - added
Output schema / properties / passingFindingsAdded 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" +} - added
Output schema / properties / statusAdded value: +{ + "description": "Completed when requested measurements are available; partial when a requested runner or measurement is unavailable.", + "enum": [ + "completed", + "partial" + ], + "type": "string" +}
- Changed
audit_seo8 fields changed- added
Input schema / properties / includeSearchConsoleAdded 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" +} - changed
Input schema / properties / maxPages / descriptionPrevious value: -"Pages to crawl (default 8)."New value: +"Maximum pages per crawl. Defaults to the connected plan maximum, bounded by remaining allowance." - added
Input schema / properties / searchConsoleDaysAdded value: +{ + "description": "Search Console reporting window in days (default 28).", + "enum": [ + 7, + 28, + 90 + ], + "type": "integer" +} - changed
Output schema / properties / auditDetails / descriptionPrevious 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." - added
Output schema / properties / coverageStatusAdded 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" +} - added
Output schema / properties / executionCompleteAdded value: +{ + "description": "Whether all requested pillar runners returned. This is separate from measurement coverage.", + "type": "boolean" +} - added
Output schema / properties / passingFindingsAdded 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" +} - added
Output schema / properties / statusAdded value: +{ + "description": "Completed when requested measurements are available; partial when a requested runner or measurement is unavailable.", + "enum": [ + "completed", + "partial" + ], + "type": "string" +}
7 tool updates
- Changed
audit_accessibility2 fields changed- added
Output schema / properties / auditDetailsAdded value: +{ + "additionalProperties": true, + "description": "Bounded assessment scope, check states and available measurement evidence; unmeasured checks are not passes.", + "type": "object" +} - added
Output schema / properties / findings / items / properties / locationAdded value: +{ + "description": "Observed URL or path with credentials and query secrets removed, when available.", + "type": "string" +}
- Changed
audit_ai_visibility2 fields changed- added
Output schema / properties / auditDetailsAdded value: +{ + "additionalProperties": true, + "description": "Bounded assessment scope, check states and available measurement evidence; unmeasured checks are not passes.", + "type": "object" +} - added
Output schema / properties / findings / items / properties / locationAdded value: +{ + "description": "Observed URL or path with credentials and query secrets removed, when available.", + "type": "string" +}
- Changed
audit_full2 fields changed- added
Output schema / properties / auditDetailsAdded value: +{ + "additionalProperties": true, + "description": "Per-pillar assessment scope, check states and available measurement evidence.", + "type": "object" +} - added
Output schema / properties / findings / items / properties / locationAdded value: +{ + "description": "Observed URL or path with credentials and query secrets removed, when available.", + "type": "string" +}
- Changed
audit_integrations2 fields changed- added
Output schema / properties / auditDetailsAdded value: +{ + "additionalProperties": true, + "description": "Bounded assessment scope, check states and available measurement evidence; unmeasured checks are not passes.", + "type": "object" +} - added
Output schema / properties / findings / items / properties / locationAdded value: +{ + "description": "Observed URL or path with credentials and query secrets removed, when available.", + "type": "string" +}
- Changed
audit_performance2 fields changed- added
Output schema / properties / auditDetailsAdded value: +{ + "additionalProperties": true, + "description": "Bounded assessment scope, check states and available measurement evidence; unmeasured checks are not passes.", + "type": "object" +} - added
Output schema / properties / findings / items / properties / locationAdded value: +{ + "description": "Observed URL or path with credentials and query secrets removed, when available.", + "type": "string" +}
- Changed
audit_security2 fields changed- added
Output schema / properties / auditDetailsAdded value: +{ + "additionalProperties": true, + "description": "Bounded assessment scope, check states and available measurement evidence; unmeasured checks are not passes.", + "type": "object" +} - added
Output schema / properties / findings / items / properties / locationAdded value: +{ + "description": "Observed URL or path with credentials and query secrets removed, when available.", + "type": "string" +}
- Changed
audit_seo2 fields changed- added
Output schema / properties / auditDetailsAdded value: +{ + "additionalProperties": true, + "description": "Bounded assessment scope, check states and available measurement evidence; unmeasured checks are not passes.", + "type": "object" +} - added
Output schema / properties / findings / items / properties / locationAdded value: +{ + "description": "Observed URL or path with credentials and query secrets removed, when available.", + "type": "string" +}
7 tool updates
- First observed
audit_accessibility - First observed
audit_ai_visibility - First observed
audit_full - First observed
audit_integrations - First observed
audit_performance - First observed
audit_security - First observed
audit_seo
Publisher details
- Operator
- EGENİL TELEFERİK MÜHENDİSLİK TEKNİK İŞLETME DANIŞMANLIK LİMİTED ŞİRKETİ · Publisher source
- Operator website
- https://sitelemetry.com · Publisher source
- Vendor relationship
- First-party · Publisher source
- Documentation
- https://sitelemetry.com/mcp-guide · Publisher source
- Trust center
- Not available
- Restrictions
- Requires a Sitelemetry account with a verified email address and browser-based OAuth sign-in; no API key is needed. Free accounts can connect and use the checks included in their plan. Available audit modules and usage quotas depend on the selected plan. Only assess websites you own or are authorized to test. Domain verification is required for protected checks; the Claude-specific endpoint requires an exact verified HTTPS target for every audit. · Publisher source
Related MCP Connectors
AI website growth audits: SEO, performance, AI readiness (GEO), conversion, a11y, security.
AI website audit: security, SEO, performance, UX and accessibility checks with actionable fixes.
- seegeoOAuthcom.see-geo
Audit any website for AI visibility: graded report, findings with fixes, AI crawler access check.
Website, local SEO, performance and conversion audits with human-confirmed checkout.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceAudits any website for SEO issues, providing scored health checks, schema validation, and performance analysis through AI assistants.-
- AlicenseAqualityDmaintenanceAudit any website for privacy, security, accessibility, and performance issues — with scores, grades, and actionable fix instructions. No account required.34 npmMIT
- FlicenseNot gradedqualityNot gradedmaintenanceProvides comprehensive website auditing for SEO, performance, accessibility, and security using AI-powered analysis. It enables users to generate detailed audit reports and actionable improvement suggestions for any given URL.-

@metricspot/mcp-serverofficial
AlicenseNot gradedqualityFmaintenanceExposes SEO and AI-readability audit tools to AI agents, enabling one-shot anonymous audits or full authenticated audits with PDF reports and organic traffic data.39 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.