Skip to main content
Glama

iGods GEO Visibility Tool

Server Details

Onsite technical GEO visibility tests, score trends, sitemap discovery, and domain monitoring to ensure AI crawlers can access your site.

Ownership verified
Status
Healthy
Uptime
99.9% over 22 days
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A4.4/5.0

Scored across 19 tools

Disambiguation4/5

Most tools target distinct resources/actions, and the descriptions explicitly disambiguate similar-looking retrieval tools such as baseline vs latest vs trend and single vs batch. However, several closely related history/snapshot readers (gvt_get_baseline, gvt_get_latest, gvt_get_score_trend, gvt_get_test_results, gvt_list_baselines) could still be conflated by an agent despite the guidance.

Naming Consistency5/5

All names follow a consistent gvt_verb_noun snake_case pattern, with predictable verbs such as get, list, run, delete, set, and schedule. There is no camelCase or mixed naming convention.

Tool Count3/5

At 19 tools, the surface falls into the heavy 16–25 range, with multiple specialized readers plus knowledge/prompt helpers. Many tools are justified by the platform's breadth, but the set could likely be consolidated to reduce cognitive load.

Completeness5/5

The set covers the core GEO visibility lifecycle: running single and batch tests, polling batch status, retrieving results and summaries, comparing baselines and trends, managing schedules, discovering sitemap URLs, reading fix/knowledge content, and controlling test visibility. No obvious dead-end operation is missing for the stated domain.

Available Tools

19 tools
gvt_delete_testDelete a testA
DestructiveIdempotent
Inspect

Permanently delete a test session and all its associated results. This action cannot be undone. Use gvt_set_test_visibility instead if you only want to hide a test from public view. Deleting a test does not delete its schedule (if one exists): recurring runs continue until removed via gvt_schedule_test delete mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
tidYesThe 8-character test ID of the test to delete.

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNoHuman-readable confirmation
successNoTrue when the test was deleted

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already indicate destructive and non-read-only behavior, but the description adds significant context: the action cannot be undone, associated results are deleted, and existing schedules are preserved. These are non-obvious behaviors that the agent cannot infer from the schema or annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences with no wasted words. The first sentence states the core action and scope, the second flags permanence, and the third covers both the alternative and the schedule caveat. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is complete for a destructive single-parameter tool. It covers the action, side effects, reversibility, and alternative routing. An output schema exists, so explaining return values is unnecessary, and the annotation profile already covers safety semantics.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter 'tid' is already fully documented in the schema as 'The 8-character test ID of the test to delete.' The description does not add further meaning about the parameter beyond what the schema provides, so the baseline score applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific action, resource, and scope: 'Permanently delete a test session and all its associated results.' It explicitly distinguishes itself from the sibling gvt_set_test_visibility, leaving no ambiguity about what this tool does.

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

Usage Guidelines5/5

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

The description says exactly when to choose an alternative: 'Use gvt_set_test_visibility instead if you only want to hide a test from public view.' It also clarifies the boundary with scheduled tests, telling agents that recurring runs continue unless removed via gvt_schedule_test delete mode.

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

gvt_get_baselineGet baseline snapshotA
Read-onlyIdempotent
Inspect

Get the oldest baseline test snapshot for a single URL, including expired tests. For pre-computed baseline-vs-latest deltas without fetching full snapshots, use gvt_get_score_trend instead; for baselines across many URLs in one call, use gvt_list_baselines. Use with gvt_get_latest to compare baseline vs current when you need the full snapshot detail on both ends. The url must be passed exactly as the test was run — matching is exact string equality (scheme, host, path, trailing slash), not nearest-match. When unsure of the recorded form, discover it with gvt_list_tests first.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe URL to look up (must match the URL used when the test was run).

Output Schema

ParametersJSON Schema
NameRequiredDescription
tidNoTest ID of the snapshot
urlNoThe URL this snapshot analyzed
oldestNoNull when no test exists for the URL
statusNoSnapshot status (completed, failed, etc.)
messageNoPresent only in the no-test case
isPublicNoWhether this test is publicly visible
testTypeNoThe type of the test run
createdAtNoISO 8601 instant this snapshot was created
expiresAtNoISO 8601 instant this snapshot will expire
updatedAtNoISO 8601 instant this snapshot was last updated
shareableTidNoPublic share ID, non-null when shareable
analysisSummaryNoAggregate scores for this test
findingSentenceNoPre-generated natural language verdict for this snapshot

TDQS

A4.9/5.0
Behavior5/5

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

Beyond the readOnly/idempotent/non-destructive annotations, the description discloses important behavior: it returns the oldest baseline, includes expired tests, and uses exact string equality matching on scheme, host, path, and trailing slash. This materially affects correct invocation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Every sentence earns its place: purpose, alternative tools, companion usage, and exact matching caveat. It is front-loaded with the core action and remains tightly organized without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a single required parameter, high schema coverage, an output schema, and annotations covering safety, the description supplies all needed selection and invocation context. It also routes to appropriate sibling tools for related use cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already documents the url parameter, so the baseline is 3. The description adds value by specifying exact string-equality semantics and trailing-slash sensitivity, going beyond the schema's 'must match the URL used when the test was run.'

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Get the oldest baseline test snapshot for a single URL, including expired tests.' It clearly distinguishes this tool from related siblings by naming what it is not and how it differs.

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

Usage Guidelines5/5

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

The description gives explicit alternatives: use gvt_get_score_trend for pre-computed deltas, gvt_list_baselines for many URLs, and gvt_get_latest for comparison. It also advises discovering the exact URL form with gvt_list_tests when uncertain.

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

gvt_get_batch_statusGet batch statusA
Read-onlyIdempotent
Inspect

Retrieves the current progress, state, and test IDs (tids) of an ongoing or completed visibility testing batch. Poll this tool with the batchId returned by gvt_run_visibility_batch until status is completed or failed. A tid appears on each URL entry only after its test completes — then call gvt_get_batch_summary for the compact per-page scores and top shared issues, or gvt_get_test_results for a single test. Batch records are retained for the lifetime of the account (no automated pruning); an unknown, pruned, or foreign batchId returns 404. Read-only: consumes rate limit, never test credits. Duplicate URLs in a batch are collapsed, so counts always sum to totalUrls.

ParametersJSON Schema
NameRequiredDescriptionDefault
batchIdYesThe UUID of the batch to check, returned by gvt_run_visibility_batch.

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlsNoOne entry per submitted URL, in submission order
countsNoPer-URL test state counts; the four fields always sum to totalUrls
statusNoAggregate batch state; completed means every per-URL test reached a terminal state
batchIdNoThe batch that was queried
totalUrlsNoURLs in the batch after duplicate collapsing
completedAtNoISO 8601 instant when the batch reached a terminal state, null while in flight
submittedAtNoISO 8601 instant of batch submission

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already cover readOnly/idempotent/non-destructive, but the description goes further: rate-limit consumption without test credits, 404 on unknown/pruned/foreign batchId, account-lifetime retention with no pruning, and deduplication so counts sum to totalUrls. These are non-obvious behaviors an agent needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads purpose, then polling loop, then routing, then edge-case behaviors. Every sentence contributes distinct, actionable information with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists, so return values need no explanation. For an async batch-polling tool the description still covers the full lifecycle: polling termination, follow-up routing, retention, error handling, and counting semantics.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single batchId param is fully documented there, so the description's restatement that it comes from gvt_run_visibility_batch adds little. Baseline 3 is appropriate when the schema carries the parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (retrieves) and resource (visibility testing batch) plus the exact payload (progress, state, tids). It is clearly distinguished from sibling readers like gvt_get_batch_summary and gvt_get_test_results, which it explicitly routes to.

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

Usage Guidelines5/5

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

Gives an explicit polling loop: call with the batchId from gvt_run_visibility_batch until status is completed or failed. It also names the follow-up tools and the condition (tid present after a test completes) that selects each, leaving nothing to inference.

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

gvt_get_batch_summaryGet batch summaryA
Read-onlyIdempotent
Inspect

Compact per-page results and pre-computed aggregates for a completed visibility testing batch: per-URL overall and category scores, findingSentence, average overall score, strongest and weakest categories, best and worst scoring pages, and the top shared issue types with their fixIds. One call replaces one gvt_get_test_results call per URL for audit and status-report workflows — a 10-URL batch drops from roughly 1.6 MB to a few KB of context. The batch must be completed (poll gvt_get_batch_status first); an in-flight batch returns its current status without per-page data. Read-only: consumes rate limit, never test credits. For element-level detail on a single page, call gvt_get_test_results with that page's tid.

ParametersJSON Schema
NameRequiredDescriptionDefault
batchIdYesThe UUID of the completed batch to summarize, returned by gvt_run_visibility_batch.

Output Schema

ParametersJSON Schema
NameRequiredDescription
pagesNoOne compact entry per URL, in batch order. Failed tests appear with status failed and null scores; they are excluded from the aggregates.
countsNoPer-URL test state counts; the four fields always sum to totalUrls
statusNoAggregate batch state; pages and summary are present only when completed
batchIdNoThe batch that was summarized
messageNoPolling guidance, present when the batch is not completed
summaryNoAggregates computed over the completed pages
totalUrlsNoURLs in the batch after duplicate collapsing

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already cover the read-only/idempotent safety profile, and the description adds substantial non-obvious behavior: in-flight batches silently return status without per-page data, the call consumes rate limit but never test credits, and it quantifies context savings (~1.6 MB to a few KB for 10 URLs).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the payload description before the routing and prerequisite notes, and every clause carries distinct information. The sentences are long and comma-chained, which costs some readability, but nothing is padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read tool with an existing output schema and full annotation coverage, the description covers purpose, prerequisites, cost, edge-case behavior, and sibling routing. An agent has everything needed to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter with 100% schema description coverage, so the schema already documents batchId and its provenance. The description adds no additional syntax or format detail beyond what the schema states, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Compact per-page results and pre-computed aggregates for a completed visibility testing batch') and enumerates exactly what is returned. It clearly distinguishes itself from siblings gvt_get_test_results (element-level detail) and gvt_get_batch_status (polling).

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

Usage Guidelines5/5

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

Names the workflows it serves (audit, status reports), the alternative it replaces (one gvt_get_test_results per URL), the prerequisite (batch must be completed, poll gvt_get_batch_status first), and the fallback for element-level detail. Explicit when-to-use and when-not-to-use.

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

gvt_get_fixRead a fix recordA
Read-onlyIdempotent
Inspect

Read the canonical fix record for one GVT issue type: severity range, impact, scoring weight, plain-language description, and the recommended remediation. Issue IDs come from the fixId field on issues in gvt_get_test_results output. The same content is served as the gvt://knowledge/fixes/{issue_id} resource template for resource-capable clients. Copy fixId verbatim from the results output — unknown or mistyped IDs return not-found rather than a fuzzy match. Responses are static reference content and cacheable.

ParametersJSON Schema
NameRequiredDescriptionDefault
issue_idYesStable issue identifier, e.g. og_title_missing or color-contrast. Matches the fixId field in gvt_get_test_results output.

Output Schema

ParametersJSON Schema
NameRequiredDescription
ttlMsNoSuggested client cache lifetime in milliseconds
impactNoPlain-language statement of what the issue costs
weightNoScoring weight
categoryNoAnalysis category the issue belongs to
issue_idNoStable issue identifier, e.g. og_title_missing
resourceUriNoThe gvt:// resource this record was read from
subcategoryNoFiner-grained grouping within the category
recommendationNoThe recommended remediation
severity_rangeNoSeverity levels this issue can take
human_descriptionNoHuman-readable description of the issue

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already establish read-only, idempotent, non-destructive behavior. The description adds meaningful behavioral detail beyond annotations: responses are static reference content, cacheable, and lookups are exact-match only with no fuzzy fallback. This materially informs the agent's invocation and caching expectations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded: the primary purpose and content list appear first, followed by ID provenance, resource-template equivalence, exact-match warning, and cacheability. Each sentence contributes distinct operational value with no filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With one well-documented parameter, an output schema present, and annotations covering safety, the description is complete for selection and invocation. It explains where the ID comes from, how to handle it, and the response characteristics, leaving no critical gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with issue_id already documented as a stable identifier matching the fixId field. The description adds extra operational semantics beyond the schema: 'Copy fixId verbatim from the results output' and the not-found behavior for unknown or mistyped IDs. This enriches the parameter's meaning beyond the schema baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Read the canonical fix record for one GVT issue type,' and enumerates the record's contents (severity range, impact, scoring weight, plain-language description, recommended remediation). This makes the tool's function unmistakable and distinct from generic knowledge or list tools among siblings.

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

Usage Guidelines4/5

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

The description gives clear usage context: issue IDs come from the fixId field in gvt_get_test_results outputcars, and IDs must be copied verbatim because unknown or mistyped IDs return not-found. It does not explicitly name alternative tools or state when not to use this tool, but the guidance is sufficient for an agent to invoke it correctly.

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

gvt_get_knowledgeRead GVT knowledgeA
Read-onlyIdempotent
Inspect

Read GVT reference knowledge: how scoring works, score bands and category weights, what each analysis category checks, or GEO glossary definitions. Use it to interpret test results and scores correctly instead of guessing. The topic is matched exactly and case-sensitively (Methodology will not match methodology); unrecognized values fail fast with the valid list. The same content is served as MCP resources at gvt://knowledge/app/* for resource-capable clients.

ParametersJSON Schema
NameRequiredDescriptionDefault
topicNoWhich knowledge topic to read: methodology (how GVT analyzes pages), scoring (score bands and category weights), categories (what each of the six categories checks), glossary (GEO term definitions), or all (complete knowledge base).all

Output Schema

ParametersJSON Schema
NameRequiredDescription
uriNoThe gvt:// resource the content came from
topicNoThe topic that was served
ttlMsNoSuggested client cache lifetime in milliseconds
knowledgeNoReference content for the requested topic

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive. The description adds valuable behavioral detail: exact case-sensitive matching, failure behavior (fail fast with valid list), and the service as MCP resources. This provides extra context beyond annotations without contradicting them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences with no wasted words. The main purpose is front-loaded, followed by important matching details and resource alternative. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The output schema exists, so return values are covered. The description covers purpose, usage, matching behavior, and failure handling. It's complete for a simple read-only knowledge tool with one optional parameter.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description covers 100% of parameters, so baseline 3 is appropriate. The description mentions exact matching and case-sensitivity, which reinforces the enum behavior, but doesn't add additional semantics beyond what the schema already explains.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool reads GVT reference knowledge, listing specific content areas (scoring, bands, weights, categories, glossary). It distinguishes itself from sibling tools that run tests or get results, making selection unambiguous.

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

Usage Guidelines4/5

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

The description gives clear context: use it to interpret test results instead of guessing. It doesn't explicitly name alternative tools, but given the tool's unique read-only knowledge role among siblings (e.g., gvt_get_test_results), the usage context is clear enough. Lacks explicit when-not conditions.

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

gvt_get_latestGet latest snapshotA
Read-onlyIdempotent
Inspect

Get the most recent non-expired test snapshot for a single URL. For pre-computed baseline-vs-latest deltas without fetching full snapshots, use gvt_get_score_trend instead. Use with gvt_get_baseline to compare baseline vs current when you need the full snapshot detail on both ends. The url must be passed exactly as the test was run — matching is exact string equality, not nearest-match; an unrecorded URL returns 404. Considers only the authenticated caller's own non-expired tests.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe URL to look up (must match the URL used when the test was run).

Output Schema

ParametersJSON Schema
NameRequiredDescription
tidNoTest ID of the snapshot
urlNoThe URL this snapshot analyzed
latestNoNull when no test exists for the URL
statusNoSnapshot status (completed, failed, etc.)
messageNoPresent only in the no-test case
isPublicNoWhether this test is publicly visible
testTypeNoThe type of the test run
createdAtNoISO 8601 instant this snapshot was created
expiresAtNoISO 8601 instant this snapshot will expire
updatedAtNoISO 8601 instant this snapshot was last updated
shareableTidNoPublic share ID, non-null when shareable
analysisSummaryNoAggregate scores for this test
findingSentenceNoPre-generated natural language verdict for this snapshot

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false. The description adds valuable specifics: exact string equality matching (not nearest-match), 404 on unrecorded URL, and scoping to the caller's own non-expired tests. While it doesn't detail response contents, the output schema exists to cover that. It goes beyond the annotations without contradicting them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise—four sentences, each serving a purpose: primary function, alternative tool, combination usage, and matching constraint. Information is front-loaded, and there is no redundant phrasing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read-only tool with a full output schema and safety annotations, the description covers all necessary operational details: what it returns (latest non-expired snapshot), how to invoke it correctly (exact URL match), what errors to expect (404), and scope (own tests). No critical gap remains.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% (the url parameter description matches the intent), and the description adds the exact-match requirement and 404 behavior, which the schema does not specify. It also clarifies the operation is for a single URL. This adds meaningful context beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the operation: 'Get the most recent non-expired test snapshot for a single URL.' It distinguishes itself from the sibling gvt_get_score_trend by noting that tool is for pre-computed deltas, and also references gvt_get_baseline for full snapshot comparison. This is a specific verb+resource with explicit sibling differentiation.

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

Usage Guidelines5/5

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

Explicitly names when to use gvt_get_score_trend instead ('For pre-computed baseline-vs-latest deltas without fetching full snapshots') and when to combine with gvt_get_baseline ('when you need the full snapshot detail on both ends'). It also provides a critical constraint: URL must match exactly, with 404 on mismatch. This gives clear, actionable selection guidance.

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

gvt_get_promptRender a prompt workflowA
Read-onlyIdempotent
Inspect

Render a GVT prompt workflow with concrete argument values, returning the complete step-by-step instruction text ready to follow. Also returns the effective arguments that were bound (provided values plus defaults for omitted optionals). Prompt names and their arguments come from gvt_list_prompts; an unknown name or argument key errors rather than guessing. The rendered text references GVT tools by name — call them as instructed.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesPrompt name from gvt_list_prompts, e.g. gvt_setup_domain_monitoring.
argumentsNoArgument values for the prompt, keyed by argument name (e.g. {"domain": "example.com", "frequency": "weekly"}). Omit optional arguments to use their defaults.

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameNoThe prompt name that was rendered
textNoFully interpolated instruction text referencing GVT tools by name
argumentsNoEffective arguments after binding defaults
descriptionNoThe prompt catalog description

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare idempotentHint=true, readOnlyHint=true, and destructiveHint=false, so no contradiction. The description adds value beyond annotations by disclosing that it errors on unknown names/arguments rather than guessing, and that it returns effective arguments with defaults applied. It also states the output includes step-by-step instruction text, which is not in annotations. Minor gap: no mention of output format beyond being text, but with an output schema present, that is acceptable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences: the first gives the core purpose and output, the second explains source and error behavior, and the third instructs how to use the output. It is tightly written with no filler, though it front-loads the purpose but leaves the error caveat until the second sentence. Slightly more wordy than ideal but efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given two parameters with full schema coverage and an output schema present, the description is complete for invoking the tool. It covers argument binding default behavior and error handling. One minor gap: it doesn't explicitly say that the returned steps might require additional context from gvt_list_prompts, but that is strong enough. The output schema likely details the return structure, so this is sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%: the name parameter description is clear and provides an example, and arguments is described with a key-value example. The description adds value by clarifying that omitted optional arguments use defaults and that it returns effective arguments, but this is about behavior rather than parameter format. The schema already explains both parameters well, so description doesn't add significant new meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool renders a GVT prompt workflow with concrete arguments and returns the instruction text plus bound arguments. It distinguishes itself from sibling tools like gvt_list_prompts by referencing it as the source of prompt names/arguments, and from other get_* tools by focusing on prompt rendering rather than retrieving data.

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

Usage Guidelines5/5

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

Explicitly states when to use: when you need a rendered prompt workflow. It references sibling gvt_list_prompts for obtaining valid prompt names/argumentsages, and warns that unknown names/arguments cause errors, guiding the agent to check that list first. It also instructs to call the GVT tools referenced in the rendered text, avoiding misuse.

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

gvt_get_score_trendGet score trendA
Read-onlyIdempotent
Inspect

Compare the oldest baseline vs the latest non-expired test for a single URL or an entire domain, with pre-computed per-category deltas (latest minus baseline). Provide exactly one of url or domain. Domain mode matches the exact domain, www., and subdomains (alphabetical, capped by limit). Page through the whole domain with offset: offset=0 for the first page, offset=limit for the second, following hasMore/nextOffset. Returns scores and deltas only, not full snapshot detail; for complete snapshots of one URL use gvt_get_baseline and gvt_get_latest. This replaces paging the full test history and computing comparisons client-side, one call per site.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoSingle URL scope (XOR with domain).
limitNoCap on returned records in domain mode (max 100, default 25).
domainNoDomain scope — matches the domain, www.<domain>, and subdomains (XOR with url).
offsetNoNumber of matched URLs to skip in domain mode (row skip, not a page number). Use offset=0 for the first page, offset=limit for the second. Ignored in single-URL mode.

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlNoThe compared URL in url mode, else null
limitNoMax records per page in domain mode
scopeNoWhich mode the comparison ran in
ttlMsNoSuggested client cache lifetime in milliseconds
domainNoThe compared domain in domain mode, else null
offsetNoRow offset applied to this page
trendsNoOne row per matched URL, baseline vs latest with deltas
compareNoComparison window settings used
hasMoreNoTrue when more pages exist
returnedNoRecords in this page
urlCountNoTotal matched URLs before pagination
truncatedNoDeprecated. Use `hasMore` instead.
nextOffsetNoOffset for the next page, null on the last page
windowSummaryNoSummary of window comparison results
includeSubdomainsNoWhether subdomains were included in the domain search

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the read-only/idempotent annotations, it discloses meaningful behavior: only non-expired tests are considered, deltas are pre-computed, results are limited to scores/deltas (not full snapshots), domain mode is alphabetical and capped by limit, and pagination follows hasMore/nextOffset. No contradictions 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core comparison, then logically moves through scope, pagination, return scope, and alternatives. Every sentence has a purpose, though the pagination explanation partly duplicates the schema and could be tightened.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the two-mode behavior, pagination, and likely domain expansion, the description covers all operational essentials: what the call does, how to constrain scope, how to page, what is returned, and which sibling to use for full snapshots. The output schema and annotations handle the remaining detail.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description reinforces the XOR relationship and pagination flow, but most of that detail already exists in the input schema (offset is a row skip, ignored in single-URL mode, default limit 25, max 100). It adds clarity but not much new semantic information.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('Compare'), a clear resource (oldest baseline vs latest non-expired test), and precise scope (single URL or domain). It also distinguishes itself from siblings by stating it returns scores and deltas only, and that full snapshots belong to gvt_get_baseline and gvt_get_latest.

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

Usage Guidelines5/5

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

It gives explicit usage rules: provide exactly one of url or domain, describes domain-mode matching and pagination, and tells the agent when to prefer siblings ('for complete snapshots of one URL use gvt_get_baseline and gvt_get_latest'). This is actionable, not merely implied.

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

gvt_get_test_resultsGet test resultsA
Read-onlyIdempotent
Inspect

Get results for a visibility test by tid: overall scores, findingSentence, shareableTid, and per-category resultData. The tid is an opaque 8-character HashID — copy it verbatim from gvt_run_visibility_test, gvt_list_tests, or gvt_get_batch_status; partial or reformatted values will not match, and results are scoped to the caller's own tests. If status is "pending" or "running", wait and retry. findingSentence is a pre-generated natural-language verdict; use it as the primary summary. shareableTid is non-null when the result is public and linkable. detail selects the payload shape: "summary" (recommended for reporting workflows) returns analysisSummary plus the top issues per category without the semantic tree, per-element markup, or the nojs_rendered duplicate pass; "full" (the default) returns complete per-category resultData for all 7 analysis types (heading, semantic, accessibility, schema, javascript, nojs, social). For compact per-page scores across a whole completed batch, prefer gvt_get_batch_summary instead of one call per tid.

ParametersJSON Schema
NameRequiredDescriptionDefault
tidYesOpaque 8-character hash ID returned by gvt_run_visibility_test or gvt_list_tests. Not an integer.
detailNoPayload shape. summary: analysisSummary plus the top issues per category (deduplicated by type, capped at 10, sorted by severity then weight) — no semantic tree, per-element markup, or nojs_rendered pass. full: complete resultData for all analysis types (previous behavior, the default).full

Output Schema

ParametersJSON Schema
NameRequiredDescription
tidNoThe test ID that was polled
urlNoThe URL that was analyzed
detailNoPresent with value "summary" when detail=summary was requested; omitted from full responses so existing callers see no change
statusNoPending and running mean poll again; completed means full results are present
resultsNoPer-category result records. detail=full: each carries analysisType and complete resultData (semantic tree, per-element issues); issues carry fixId for gvt_get_fix. detail=summary: each carries analysisType, score, and the top issues deduplicated by type (capped at 10 per category); the nojs_rendered duplicate pass is omitted — analysisSummary.categoryIssueCounts keeps the true totals.
isPublicNoWhether this test result is publicly accessible
testTypeNoType of test performed (e.g., URL or direct HTML paste)
createdAtNoISO 8601 instant of test creation
expiresAtNoISO 8601 instant when this test session and its results will expire and be deleted
updatedAtNoISO 8601 instant of the last update to this test session
shareableTidNoNon-null when the result is publicly shareable. Public share identifier for this session. Equal to tid when the session is shareable; null when the session is private. Presence of a value is the indicator that share links may be generated.
analysisSummaryNoAggregate scores for one test session
findingSentenceNoPre-generated natural language verdict; use as the primary summary

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already cover read-only/idempotent/non-destructive, but the description adds real context beyond them: results are scoped to the caller's own tests, pending/running states require a wait-and-retry, shareableTid signals public linkability, and the two detail modes have different payload contents. It stops short of pagination/size limits or output-shape guarantees.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One dense paragraph, front-loaded with the returned fields before constraints and mode selection; every sentence carries information. It is longer than strictly needed (repeats some detail-enum content already in the schema), which keeps it from a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, yet the description still characterizes key return fields and the pending/running lifecycle, leaving no ambiguity about when the call is useful or how to interpret its results. Complete for a 2-parameter read tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3; however, the description adds meaning beyond the schema by warning that tid must be copied verbatim (partial/reformatted values fail to match) and by recommending the 'summary' mode for reporting versus the 'full' default.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Get results for a visibility test by tid') and enumerates what is returned (overall scores, findingSentence, shareableTid, per-category resultData). It also distinguishes itself from siblings by naming gvt_get_batch_summary for batch-level scores and citing gvt_run_visibility_test/gvt_list_tests as tid sources.

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

Usage Guidelines5/5

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

Explicitly routes the agent away from one-call-per-tid to gvt_get_batch_summary for compact per-page batch scores, and gives the retry condition when status is pending/running. It also advises which detail mode suits reporting workflows, so alternatives and conditions are both covered.

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

gvt_list_baselinesList baselines (batch)A
Read-onlyIdempotent
Inspect

Get the oldest baseline test snapshots for a batch of URLs (up to 100) in a single call. Each result includes the URL and its oldest test object (null if no test exists for that URL). For a single URL use gvt_get_baseline; for pre-computed baseline-vs-latest deltas use gvt_get_score_trend. This bulk form is ideal for monthly/periodic batch comparisons: fetch baselines in bulk here, then call gvt_get_latest per URL. One call replaces up to 100 gvt_get_baseline calls; split larger URL sets into consecutive calls of at most 100. Order of results follows the submitted order.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlsYesArray of URLs to look up (max 100).

Output Schema

ParametersJSON Schema
NameRequiredDescription
foundNoURLs that had at least one test
ttlMsNoSuggested client cache lifetime in milliseconds
resultsNoOne entry per requested URL, in request order
requestedNoNumber of URLs requested

TDQS

A4.7/5.0
Behavior4/5

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

The description adds behavioral details beyond the annotations: it states that results include the URL and its oldest test object (or null if no test exists), that results follow the submitted order, and that the batch limit is 100. While the annotations already cover read-only, idempotency, and open-world hints, the description provides useful additional constraints about batch limits and null handling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured: it opens with the core functionality, then explains output structure, differentiators, use cases, batching guidance, and ordering – all in a few sentences. Every sentence adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (one parameter, clear output structure, batch limits), the description covers everything needed: purpose, output shape, limitations, alternatives, and usage patterns. The presence of an output schema reduces the need to detail return values, and the description fills the remaining gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already documents the 'urls' parameter with a description, but the tool description adds significant context: it explains that the URLs are used for baseline lookups, that the batch supports up to 100 items, and prescribes how to handle larger sets ('split larger URL sets into consecutive calls of at most 100'). This goes beyond the schema's basic description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool's function: retrieving the oldest baseline test snapshots for a batch of URLs in a single call. It explicitly distinguishes it from similar tools like gvt_get_baseline (single URL) and gvt_get_score_trend (pre-computed deltas), making the purpose unmistakable.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool: for bulk operations and monthly/periodic batch comparisons(via 'ideal for monthly/periodic batch comparisons'), when to use alternatives ('For a single URL use gvt_get_baseline'), and notes that it replaces up to 100 single calls, with clear batch size limits. It also suggests a follow-up step('then call gvt_get_latest per URL').

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

gvt_list_promptsList prompt workflowsA
Read-onlyIdempotent
Inspect

List the GVT prompt workflows: user-invocable recipes that chain GVT tools into complete tasks (check a page, review a monthly batch, analyze regressions, verify fixes, set up domain monitoring, report client status). Each entry lists its arguments. Use gvt_get_prompt to render a prompt with concrete argument values, then follow the rendered instructions to run the workflow. This catalog is static and costs nothing to call on every session start — it never queues tests or consumes credits.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
ttlMsNoSuggested client cache lifetime in milliseconds
promptsNoThe prompt workflow catalog
promptCountNoNumber of prompt workflows in the catalog

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already indicate readOnlyHint, idempotentHint, and destructiveHint are all true/false appropriately sums up safety. The description adds value by stating the catalog is static, costs nothing, never queues tests or consumes credits, which goes beyond what annotations provide. This is exactly the kind of behavioral transparency that helps an agent know side-effect-free it is.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, all packed with useful information: what it lists, what the entries contain, how to use the result, and the cost/static nature. No fluff. The most critical information (listing workflows and how to render them) is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, read-only catalog tool, the description covers everything an agent needs: what it returns, how to act on it, and the fact it's free. The output schema likely lists the structure, so return values are covered. The description is complete for a tool of this simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the schema is complete. The description doesn't add param-specific semantics because there are none. It does explain what each entry in the returned list contains ('Each entry lists its arguments'), which adds context about the output beyond just the schema. Given 0 params, a baseline of 4 is appropriate, and the description meets it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists GVT prompt workflows and explains what those are (user-invocable recipes that chain tools into tasks), with examples of the types of workflows. It distinguishes this from siblings like gvt_get_prompt, which renders a specific prompt. The verb 'list' and resource 'GVT prompt workflows' are specific and unambiguous.

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

Usage Guidelines5/5

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

The description explicitly says when to use this tool: to get a catalog of workflows, and then use gvt_get_prompt to render a specific one. It also states that it costs nothing and can be called on every session start, implying it's appropriate as an initial step. It does not explicitly say when not to use it, but the routing to gvt_get_prompt is clear, and the context of siblings makes the alternative obvious.

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

gvt_list_schedulesList schedulesA
Read-onlyIdempotent
Inspect

Retrieves the paginated roster of the authenticated caller's test monitoring schedules, allowing filtering by domain, frequency, and status. This is the only way to discover existing schedules and their schids, which the pause/resume/cancel/change_frequency modes of gvt_schedule_test require. Completed one-off rows are hidden by default: batch runs create a throwaway once row per queued URL, so include them only with includeCompletedOnce true. The row's tid is deliberately not surfaced (it is often stale); use gvt_list_tests or gvt_get_latest for test result lookups. Read-only: consumes rate limit, never test credits.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoThe maximum number of schedules requested for this page.
domainNoFilter to schedules matching this domain substring.
offsetNoThe number of skipped items from the beginning of the result set.
statusNoFilter by the derived overall state of the schedule.
frequencyNoFilter by repetition interval.
sortDirectionNoSort order by creation time; desc is newest first.desc
includeSubdomainsNoWhether subdomains should be included in the domain filter match.
includeCompletedOnceNoWhether to include completed one-off schedules in the results. Hidden by default because batch runs create a throwaway once row per queued URL; include them only when investigating batch history.

Output Schema

ParametersJSON Schema
NameRequiredDescription
limitNoPage size applied to this response
totalNoTotal schedules matching the filters, across all pages
domainNoThe applied domain filter, null when unfiltered
offsetNoOffset applied to this response
statusNoThe applied status filter, null when unfiltered
hasMoreNoTrue when more results exist beyond this page
frequencyNoThe applied frequency filter, null when unfiltered
schedulesNoOne entry per schedule, newest first by creation time
nextOffsetNoOffset for the next page, null when hasMore is false
includeSubdomainsNoThe applied subdomain-inclusion setting
allowedFrequenciesNoFrequencies the caller may set when creating schedules
maxActiveSchedulesNoThe caller's cap on active schedules; add mode enforces this limit
includeCompletedOnceNoWhether completed one-off rows were included in this response

TDQS

A4.7/5.0
Behavior5/5

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

Annotations declare readOnly, idempotent, and non-destructive, and the description adds meaningful behavioral detail beyond those: pagination, hidden completed one-off rows due to batch-run throwaway entries, the deliberate omission of tid because it is often stale, and the distinction that it consumes rate limit but never test credits. This is rich, honest context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Five sentences, each carrying a distinct piece of necessary information: function, unique purpose, hidden-row caveat, tid caveat with alternative routing, and read-only/rate-limit behavior. It is front-loaded with the core purpose and contains no filler or repetition of schema content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter, 0-required, read-only list tool with an output schema, the description covers purpose, alternatives, behavioral caveats, and parameter edge cases. The output schema handles return-value details. Nothing an agent needs to invoke this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema coverage is 100%, with each parameter already having a solid description, so the description does not need to restate them. The description does add useful context for includeCompletedOnce (why it is hidden by default and when to include it), but that is a marginal enhancement over an already complete schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Retrieves'), resource ('paginated roster of the authenticated caller's test monitoring schedules'), and capabilities (filtering by domain, frequency, status). It also distinguishes itself as the only way to discover schedules and schids, clearly separating it from sibling list tools like gvt_list_tests.

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

Usage Guidelines5/5

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

Explicitly identifies when to use this tool (discovering existing schedules and schids for gvt_schedule_test's pause/resume/cancel/change_frequency modes) and when not to (for test result lookups, pointing to gvt_list_tests or gvt_get_latest). It also clarifies the edge case around includeCompletedOnce, leaving no ambiguity about selection.

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

gvt_list_sitemap_urlsList sitemap URLsA
Read-onlyIdempotent
Inspect

Discovers and ranks URLs from a domain's XML sitemaps to find the most significant pages (homepages, product pages, recently updated content) before analyzing them. Supports URL-pattern filtering and automatically flags robots.txt-blocked and already-tested pages. Legal/policy boilerplate (privacy, terms, cookies, disclaimers, refunds) is flagged legalPage:true with a -25 significance penalty; use the legalPages filter to drop it (exclude) or isolate it for a policy-coverage audit (only). Parameters group into three jobs: discovery (url), ranking and paging (limit, sort), and filtering (include and exclude URL patterns, excludeDisallowed, excludeTested, excludeScheduled, legalPages).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe target website URL or an explicit sitemap .xml URL.
sortNoHow to sort the discovered URLs. 'significance' uses SEO heuristics.significance
limitNoMaximum number of URLs to return (default 10).
excludeNoWildcard patterns to reject (e.g., '*archive*').
includeNoWildcard patterns to require (e.g., '*blog*'). Only '*' wildcards are supported.
legalPagesNoTri-state filter for legal/policy boilerplate pages (privacy, terms, cookies, disclaimers, refund policies, etc). "include" keeps them (default), "exclude" drops them, and "only" returns just the legal/policy pages — useful for auditing a site's policy coverage.include
excludeTestedNoIf true, omits URLs the user has already tested.
excludeScheduledNoIf true, omits URLs currently in the testing queue.
excludeDisallowedNoIf true, silently drops URLs that are blocked by robots.txt.

Output Schema

ParametersJSON Schema
NameRequiredDescription
sortNoThe sort actually applied to the results
urlsNoDiscovered URLs, ranked per the sort setting
limitNoEffective result cap
errorsNoPer-sitemap fetch or parse failures; non-empty means discovery was partial
hasMoreNoTrue when the filtered set was cut short by the limit
matchedNoURLs remaining after include/exclude and legalPages filters
returnedNoURLs actually returned after the limit
truncatedNoTrue if the underlying sitemap parser hit its 5000-URL cap during fetching.
legalPagesNoThe legal-page filter actually applied
bulkUrlLimitNoHow many of these URLs the caller's tier permits in one batch-analyze call.
requestedUrlNoThe URL or sitemap URL that was resolved
sitemapCountNoNumber of sitemaps parsed
robotsTxtFoundNoWhether a robots.txt was found and consulted
legalPagesFoundNoHow many of the URLs discovered across all sitemaps were detected as legal/policy boilerplate, counted BEFORE any filtering or limiting is applied.
totalDiscoveredNoRaw URL count discovered before filtering
resolvedSitemapsNoSitemap URLs actually parsed

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false. The description goes beyond these by revealing concrete behaviors: it 'automatically flags robots.txt-blocked and already-tested pages', applies a '-25 significance penalty' to legal pages, and groups parameters into three jobs (discovery, ranking/paging, filtering). This adds substantive behavioral context that the annotations do not convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is about 100 words—informative without being bloated. It front-loads the core purpose and then systematically covers flags and parameter grouping. While it could be tightened slightly, every sentence contributes useful information and no schema detail is needlessly repeated.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 9 parameters, an output schema, and rich annotations, the description is remarkably complete. It covers the purpose, the parameter organization, the specific behavioral flags, and the legalPages tri-state use case. The existence of an output schema covers return-value details, so no major gaps remain for an agent to call the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so each parameter is already documented. The description adds a valuable organizational layer by grouping the nine parameters into three conceptual jobs (discovery, ranking/paging, filtering) and explaining the purpose of the legalPages filter. This helps an agent understand parameter relationships beyond the flat schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('discovers and ranks URLs') and a clear resource ('from a domain's XML sitemaps'), and explains the goal ('to find the most significant pages before analyzing them'). This is distinct from all sibling tools, which concern tests, baselines, prompts, and schedules—no other tool targets sitemap discovery. The purpose is unambiguous.

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

Usage Guidelines4/5

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

The description positions the tool as a precursor to analysis ('before analyzing them') and gives explicit guidance on the legalPages filter for either dropping legal boilerplate or isolating it for a policy-coverage audit. It doesn't explicitly name alternative tools or state when not to use it, but the sibling set is clearly different, so the use case is well implied.

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

gvt_list_testsList testsA
Read-onlyIdempotent
Inspect

List visibility tests for the authenticated user, newest first. Supports filtering by domain (optionally including subdomains), by URL (exact or contains match), by creation date range, by status, and by test type. This is the tid and history discovery surface: use it to find the exact recorded URL string and tids that gvt_get_baseline, gvt_get_latest, and gvt_get_test_results require, and use gvt_get_score_trend instead when you only need baseline-vs-latest deltas — it skips the paging entirely.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoURL to filter tests by; matched per urlMode (contains by default).
limitNoMax results to return (default 10, max 100)
domainNoDomain to filter tests by, e.g. example.com. Subdomains are included unless includeSubdomains is false.
offsetNoNumber of records to skip before returning results (not a page number). Use offset=0 for the first page, offset=limit for the second page, etc.
statusNoTest status to filter by: pending, processing, completed, or failed.
urlModeNoHow the url filter matches: "exact" for full-URL equality, "contains" for substring match.contains
testTypeNoTest type to filter by: url, html, or html_paste.
createdToNoExclusive creation-date upper bound. YYYY-MM-DD (UTC midnight) or full ISO 8601 instant.
createdFromNoInclusive creation-date lower bound. YYYY-MM-DD (UTC midnight) or full ISO 8601 instant.
sortDirectionNoSort direction by creation date: desc (newest first, default) or asc (oldest first).desc
includeSubdomainsNoIf true (the default), includes tests for subdomains of the given domain. Set false to match the exact domain only.

Output Schema

ParametersJSON Schema
NameRequiredDescription
limitNoPage size actually applied
testsNoThe matching test sessions on this page
totalNoTotal matching tests before pagination
ttlMsNoSuggested client cache lifetime in milliseconds
domainNoThe domain filter actually applied, if any
offsetNoRow offset applied to this page
hasMoreNoTrue when more pages exist
createdToNoEffective upper creation-date bound, if any
nextOffsetNoOffset for the next page, null on the last page
createdFromNoEffective lower creation-date bound, if any
includeSubdomainsNoWhether subdomains were included in the domain filter

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, non-destructive behavior, and the description does not contradict them. It adds contextual value by framing the tool as a discovery surface and stating the default ordering (newest first), which supplements the safety profile without duplicating it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is structured with the primary purpose front-loaded, a concise list of filter capabilities, and a valuable routing note at the end. Every sentence earns its place, and the length is appropriate for an 11-parameter tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description fully complements the rich schema and output schema. It explains the tool's role in the workflow, tells the agent exactly how to use it to obtain tids and URL strings for sibling tools, and provides an alternative for simpler needs. Nothing an agent needs to call or route correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the schema already documents all 11 parameters including defaults and enums. The description mentions filter options (domain, URL, date range, status, test type) but adds no new parametric detail beyond what the schema covers; it is a baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists visibility tests for the authenticated user, newest first. It further positions it as the 'tid and history discovery surface' and distinguishes it from gvt_get_score_trend, making its purpose specific and unambiguous.

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

Usage Guidelines5/5

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

The description explicitly tells when to use this tool (to find tids and URL strings needed by related tools) and when not to (use gvt_get_score_trend for deltas). It names the alternative and the condition that selects it, leaving no ambiguity.

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

gvt_run_visibility_batchRun batch testsAInspect

Queue up to 500 URLs for batch GEO visibility testing. Returns a batch ID for tracking progress. Optionally add URLs to recurring schedules (daily, weekly, monthly) during the same call. Poll gvt_get_batch_status with the batchId until status is completed or failed; then get the compact per-page score summary with gvt_get_batch_summary, or individual results with gvt_get_test_results. This tool queues paid test runs and consumes credits; for score interpretation, methodology, or reference knowledge, use gvt_get_knowledge instead — it never runs tests. A webhook URL can be provided to receive a completion notification; when set, the response returns webhookSecret, an HMAC key for verifying that the notification genuinely came from GVT. Duplicate URLs in the submitted array are collapsed, so totalUrls may be smaller than the array you sent.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlsYesArray of URL objects to test (max 500)
webhookUrlNoOptional HTTPS URL to receive a batch completion webhook

Output Schema

ParametersJSON Schema
NameRequiredDescription
statusNoAlways queued at submission time
batchIdNoUUID for tracking the batch
totalUrlsNoURLs accepted into the batch
webhookSecretNoHMAC secret for verifying the webhook, null when no webhook
webhookConfiguredNoTrue when a completion webhook URL was supplied

TDQS

A4.8/5.0
Behavior5/5

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

Annotations cover the safety profile (readOnlyHint=false, idempotentHint=false, openWorldHint=true), and the description adds substantial context beyond them: it queues paid runs that consume credits, operates asynchronously with a batch ID, supports an optional webhook that returns an HMAC webhookSecret for verification, and collapses duplicate URLs so totalUrls may be smaller than the input array. This is exactly the extra behavioral detail the annotations cannot convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose, then workflow, then cost, then webhook and dedupe caveats. Every sentence carries information, though the paragraph is dense and could be split for scannability. No filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values needn't be described, and the description still covers the async workflow, credit cost, webhook verification, and dedupe caveat. Nothing an agent needs to queue and track a batch correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning beyond the schema: webhookUrl's effect (completion notification + returned webhookSecret for HMAC verification), the dedupe behavior affecting totalUrls, and the recurring-schedule option embedded in each URL object. Only the exact addToSchedule semantics remain schema-only.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (queue) and resource (up to 500 URLs for batch GEO visibility testing) with explicit scope. It cleanly distinguishes itself from the single-URL sibling and from the read-side batch tools it hands off to. An agent can identify the tool's role without opening any schema.

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

Usage Guidelines5/5

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

Explicit workflow routing: poll gvt_get_batch_status until completed/failed, then use gvt_get_batch_summary or gvt_get_test_results. It also carves out the when-not case by directing interpretation/methodology needs to gvt_get_knowledge. Alternatives and conditions are named rather than inferred.

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

gvt_run_visibility_testRun a visibility testAInspect

Run a GEO visibility test on a URL. Analyzes 7 categories: JavaScript dependencies (js), no-JS rendering (nojs), semantic HTML5, heading structure, schema.org markup, social tags, and accessibility. This is an async operation — it returns a tid immediately. Pass that tid to gvt_get_test_results to retrieve scores and issues once the test completes (poll until status is not "pending" or "running").

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe URL to analyze
waitForJsNoWait for JavaScript rendering before analysis. Set to false to skip JS rendering (faster, but may miss dynamically injected content).

Output Schema

ParametersJSON Schema
NameRequiredDescription
tidNo8-character test ID to poll with
nextNoThe suggested next call
statusNoAlways pending at queue time
messageNoHuman-readable acknowledgement with polling guidance

TDQS

A4.7/5.0
Behavior5/5

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

Pipelines the async nature explicitly: it says 'returns a tid immediately' and that results are retrieved separately by passing tid to gvt_get_test_results, with polling instructions. This behavior isn't implied by annotations (readOnlyHint=false, no idempotentHint), so the description carries the burden and does so thoroughly. 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Concise but information-dense. Two sentences: first defines the tool's function and scope, second addresses the async behavior and next steps. No filler; every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given an output schema exists (though not detailed here), the description need not explain return values. It covers the core: what the tool does (analyzes 7 categories), the async contract, and how to proceed (poll until status changes). For a tool of moderate complexity with a well-covered schema, this is complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, both parameters (url and waitForJs) already have clear descriptions in the schema. The description adds marginal value beyond the schema—it doesn't mention parameters at all, but the schema is sufficient. Baseline 3 applies because the description adds no extra parameter context but doesn't need to.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States the specific action (run a GEO visibility test on a URL), lists the 7 categories it analyzes (js, nojs, semantic HTML5, heading structure, schema.org markup, social tags, accessibility), and differentiates itself from siblings like gvt_run_visibility_batch (batch) and gvt_schedule_test (scheduled). The purpose is unambiguous.

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

Usage Guidelines5/5

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

Explicitly instructs when to use this tool: to run a single visibility test on a URLichelses immediate asynchronous result. It contrasts with gvt_get_test_results (retrieve results by tid) and implies not for batch (run_visibility_batch). It provides clear workflow guidance: pass the tid to gvt_get_test_results and poll until status changes.

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

gvt_schedule_testManage schedulesA
Destructive
Inspect

Manage recurring GVT test schedules: add, delete, reset, pause, resume, cancel, and change_frequency. Discover existing schedules and their schids via gvt_list_schedules; control modes require a schid. For one-off tests use gvt_run_visibility_test; for queued batches without recurrence use gvt_run_visibility_batch. Modes: "add" upserts schedules for the provided urls without duplicating; "delete" permanently removes schedule entries by schid or url (test results are never deleted by any mode); "reset" is destructive — deletes all matching schedules first (domain-scoped when provided, otherwise ALL account-wide), then upserts the provided urls; "pause" halts reversibly; "resume" restarts a paused schedule and clears auto-pause reasons and failure counts; "cancel" permanently ends the schedule (schid unusable); "change_frequency" updates the recurrence interval. Management modes (add/delete/reset) require urls; control modes require schid. Subscription-tier enforcement applies.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoSchedule operation mode. add/delete/reset operate on URLs (require urls array). pause/resume/cancel/change_frequency operate on a single schedule (require schid).add
urlsNoArray of URL/schedule objects. Required for add, delete, and reset modes.
schidNoSchedule ID. Required for pause, resume, cancel, and change_frequency modes.
domainNoDomain to scope a reset operation (reset mode only). e.g. "example.com". Matches https://, http://, with/without www., with/without trailing path. Omit to reset ALL schedules.
frequencyNoNew frequency for the schedule. Required for change_frequency mode.

Output Schema

ParametersJSON Schema
NameRequiredDescription
successNoTrue when the requested mode completed
scheduledNoSchedules now in effect (add/reset modes)
deletedByUrlNoPer-URL breakdown of deleted schedules (delete mode). Present on delete mode responses, including schid-based deletes; omitted for reset mode.
deletedCountNoSchedule entries removed (delete/reset modes)
upsertedCountNoSchedules created or updated (add/reset modes)

TDQS

A5/5.0
Behavior5/5

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

The description goes well beyond the annotations by detailing consequences: delete permanently removes entries but never deletes test results; reset is destructive and deletes all matching schedules before upserting; pause is reversible; resume clears auto-pause reasons and failure counts; cancel makes the schid unusable. The destructiveHint annotation is confirmed and enriched with mode-specific scope and side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but every sentence earns its place: it starts with the primary purpose, then immediately routes to sibling tools, then defines each mode with its behavioral consequence. The mode definitions are compact yet complete, and the requirement summary sentence is a useful checklist.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's multi-mode complexity and zero required fields in the schema, the description fully compensates by specifying mode-specific argument requirements, destructive behavior, domain scoping, and the relationship to schedule discovery. The presence of an output schema means return-value details are already covered elsewhere, so nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Even though the schema covers all parameters, the description adds crucial operational meaning: 'add' upserts without duplicating, 'delete' can target schid or url, 'reset' is domain-scoped or account-wide, and 'change_frequency' requires a new frequency. This clarifies how the optional-looking schema fields (all non-required) actually combine per mode, which the schema alone does not convey.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Manage recurring GVT test schedules,' then enumerates the seven supported modes (add, delete, reset, pause, resume, cancel, change_frequency). It differentiates from sibling tools by explicitly naming gvt_list_schedules, gvt_run_visibility_test, and gvt_run_visibility_batch as alternatives for discovery and non-recurring runs.

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

Usage Guidelines5/5

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

The description gives explicit routing guidance: use gvt_list_schedules to discover schids, use gvt_run_visibility_test for one-off tests, and use gvt_run_visibility_batch for queued non-recurring batches. It also states mode-specific requirements, such as 'Management modes (add/delete/reset) require urls; control modes require schid,' so an agent knows exactly when to invoke this tool versus siblings.

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

gvt_set_test_visibilitySet test visibilityA
Idempotent
Inspect

Toggle the public visibility of a test session. Set is_public to true to make the test shareable and receive its public share URL, or false to make it private. The response confirms the new state and, when making a test public, includes the share_url the recipient can visit without any authentication. is_public is the only lever: true both publishes and yields the link in this same response; false revokes access to any previously issued share_url immediately. This is the only way to control who can view a test result without requiring MCP authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault
tidYesThe 8-character test ID returned by gvt_run_visibility_test.
is_publicYestrue to make the test publicly shareable, false to make it private.

Output Schema

ParametersJSON Schema
NameRequiredDescription
tidNoThe test that was modified
successNoTrue when the visibility change was applied
is_publicNoThe new public visibility state
share_urlNoPublic share URL, present when is_public is true; the recipient needs no authentication. Null when sharing failed or the test is private

TDQS

A4.7/5.0
Behavior5/5

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

The description goes well beyond the annotations, detailing response behavior (confirmation, share_url), authentication-free recipient access, immediate revocation of prior share URLs, and that is_public is the only control lever. This aligns with idempotentHint and destructiveHint and adds meaningful non-obvious behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core action, and every subsequent sentence contributes either behavioral nuance or usage context. There is no filler or repetition of what annotations already provide.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With only two required parameters, a complete schema, and an output schema, the description covers all operational essentials: state change, response contents, share URL behavior, no-auth access, and revocation. No critical information is missing for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds extra meaning by explaining the consequences of true vs false (publishing and returning share_url vs revoking access) and reinforcing that is_public is the only lever. tid's source is already fully documented in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific action and resource: 'Toggle the public visibility of a test session.' It then explains the two states and their outcomes, and closes by positioning this as the only way to control who can view a test result, distinguishing it from the sibling list.

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

Usage Guidelines4/5

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

It clearly states when to use the tool: when you want to share or privatize a test session ('This is the only way to control who can view a test result...'). It does not explicitly name sibling alternatives, but the 'only way' framing gives a strong selection signal.

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.

  1. 2 tool updates
    • Addedgvt_get_batch_summary
    • Changedgvt_get_test_results6 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "full",
        +  "description": "Payload shape. summary: analysisSummary plus the top issues per category (deduplicated by type, capped at 10, sorted by severity then weight) — no semantic tree, per-element markup, or nojs_rendered pass. full: complete resultData for all analysis types (previous behavior, the default).",
        +  "enum": [
        +    "summary",
        +    "full"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / description
        Previous value: -"Full results for one test. While status is pending or running, results are incomplete — wait and retry."New value: +"Results for one test. While status is pending or running, results are incomplete — wait and retry. detail=summary returns the compact shape; detail=full (the default) returns complete per-category resultData."
      • addedOutput schema / properties / detail
        Added value: +{
        +  "description": "Present with value \"summary\" when detail=summary was requested; omitted from full responses so existing callers see no change",
        +  "enum": [
        +    "summary"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / properties / results / description
        Previous value: -"Per-category result records. Each carries analysisType and resultData; issues carry fixId for gvt_get_fix."New value: +"Per-category result records. detail=full: each carries analysisType and complete resultData (semantic tree, per-element issues); issues carry fixId for gvt_get_fix. detail=summary: each carries analysisType, score, and the top issues deduplicated by type (capped at 10 per category); the nojs_rendered duplicate pass is omitted — analysisSummary.categoryIssueCounts keeps the true totals."
      • addedOutput schema / properties / results / items / properties / issues
        Added value: +{
        +  "description": "Issue records; in summary mode each carries type, severity, impact, weight, element, description, and fixId (remediation comes from gvt_get_fix, not the payload)",
        +  "type": "array"
        +}
      • addedOutput schema / properties / results / items / properties / score
        Added value: +{
        +  "description": "Category score (0-100), present in summary mode when the category reports one",
        +  "type": "number"
        +}
  2. 1 tool update
    • Addedgvt_list_schedules
  3. 9 tool updates
    • Addedgvt_get_baseline
    • Removedgvt_get_oldest
    • Removedgvt_get_oldest_list
    • Removedgvt_get_sitemap_urls
    • Addedgvt_list_baselines
    • Addedgvt_list_sitemap_urls
    • Changedgvt_run_visibility_batch1 field changed
      • changedOutput schema / description
        Previous value: -"Batch acknowledgement. Poll gvt_get_test_results per URL once the batch completes."New value: +"Batch acknowledgement. Poll gvt_get_batch_status with the batchId until status is completed or failed, then retrieve results via gvt_get_test_results."
    • Changedgvt_set_test_visibility1 field changed
      • addedOutput schema / properties / share_url
        Added value: +{
        +  "description": "Public share URL, present when is_public is true; the recipient needs no authentication. Null when sharing failed or the test is private",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
    • Removedgvt_share_test
  4. 1 tool update
    • Addedgvt_get_batch_status
  5. 6 tool updates
    • Changedgvt_get_latest19 fields changed
      • changedOutput schema / properties / analysisSummary / description
        Previous value: -"Aggregate scores for one test session"New value: +"Aggregate scores for this test"
      • changedOutput schema / properties / analysisSummary / properties / categoryIssueCounts / properties / accessibility / description
        Previous value: -"Accessibility score (0-100)"New value: +"Number of open accessibility issues"
      • changedOutput schema / properties / analysisSummary / properties / categoryIssueCounts / properties / accessibility / type
        Previous value: -"number"New value: +"integer"
      • changedOutput schema / properties / analysisSummary / properties / categoryIssueCounts / properties / headings / description
        Previous value: -"Heading structure score (0-100)"New value: +"Number of open heading structure issues"
      • changedOutput schema / properties / analysisSummary / properties / categoryIssueCounts / properties / headings / type
        Previous value: -"number"New value: +"integer"
      • changedOutput schema / properties / analysisSummary / properties / categoryIssueCounts / properties / javascript / description
        Previous value: -"JavaScript dependency score (0-100)"New value: +"Number of open JavaScript dependency issues"
      • changedOutput schema / properties / analysisSummary / properties / categoryIssueCounts / properties / javascript / type
        Previous value: -"number"New value: +"integer"
      • changedOutput schema / properties / analysisSummary / properties / categoryIssueCounts / properties / nojs / description
        Previous value: -"No-JS rendering score (0-100)"New value: +"Number of open No-JS rendering issues"
      • changedOutput schema / properties / analysisSummary / properties / categoryIssueCounts / properties / nojs / type
        Previous value: -"number"New value: +"integer"
      • changedOutput schema / properties / analysisSummary / properties / categoryIssueCounts / properties / schema / description
        Previous value: -"schema.org markup score (0-100)"New value: +"Number of open schema.org markup issues"
      • changedOutput schema / properties / analysisSummary / properties / categoryIssueCounts / properties / schema / type
        Previous value: -"number"New value: +"integer"
      • changedOutput schema / properties / analysisSummary / properties / categoryIssueCounts / properties / semantic / description
        Previous value: -"Semantic HTML5 score (0-100)"New value: +"Number of open semantic HTML5 issues"
      • changedOutput schema / properties / analysisSummary / properties / categoryIssueCounts / properties / semantic / type
        Previous value: -"number"New value: +"integer"
      • changedOutput schema / properties / analysisSummary / properties / categoryIssueCounts / properties / social / description
        Previous value: -"Social tags score (0-100)"New value: +"Number of open social tag issues"
      • changedOutput schema / properties / analysisSummary / properties / categoryIssueCounts / properties / social / type
        Previous value: -"number"New value: +"integer"
      • addedOutput schema / properties / expiresAt
        Added value: +{
        +  "description": "ISO 8601 instant this snapshot will expire",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / isPublic
        Added value: +{
        +  "description": "Whether this test is publicly visible",
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / testType
        Added value: +{
        +  "description": "The type of the test run",
        +  "enum": [
        +    "url",
        +    "html_paste"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / updatedAt
        Added value: +{
        +  "description": "ISO 8601 instant this snapshot was last updated",
        +  "type": "string"
        +}
    • Changedgvt_get_oldest19 fields changed
      • changedOutput schema / properties / analysisSummary / description
        Previous value: -"Aggregate scores for one test session"New value: +"Aggregate scores for this test"
      • changedOutput schema / properties / analysisSummary / properties / categoryIssueCounts / properties / accessibility / description
        Previous value: -"Accessibility score (0-100)"New value: +"Number of open accessibility issues"
      • changedOutput schema / properties / analysisSummary / properties / categoryIssueCounts / properties / accessibility / type
        Previous value: -"number"New value: +"integer"
      • changedOutput schema / properties / analysisSummary / properties / categoryIssueCounts / properties / headings / description
        Previous value: -"Heading structure score (0-100)"New value: +"Number of open heading structure issues"
      • changedOutput schema / properties / analysisSummary / properties / categoryIssueCounts / properties / headings / type
        Previous value: -"number"New value: +"integer"
      • changedOutput schema / properties / analysisSummary / properties / categoryIssueCounts / properties / javascript / description
        Previous value: -"JavaScript dependency score (0-100)"New value: +"Number of open JavaScript dependency issues"
      • changedOutput schema / properties / analysisSummary / properties / categoryIssueCounts / properties / javascript / type
        Previous value: -"number"New value: +"integer"
      • changedOutput schema / properties / analysisSummary / properties / categoryIssueCounts / properties / nojs / description
        Previous value: -"No-JS rendering score (0-100)"New value: +"Number of open No-JS rendering issues"
      • changedOutput schema / properties / analysisSummary / properties / categoryIssueCounts / properties / nojs / type
        Previous value: -"number"New value: +"integer"
      • changedOutput schema / properties / analysisSummary / properties / categoryIssueCounts / properties / schema / description
        Previous value: -"schema.org markup score (0-100)"New value: +"Number of open schema.org markup issues"
      • changedOutput schema / properties / analysisSummary / properties / categoryIssueCounts / properties / schema / type
        Previous value: -"number"New value: +"integer"
      • changedOutput schema / properties / analysisSummary / properties / categoryIssueCounts / properties / semantic / description
        Previous value: -"Semantic HTML5 score (0-100)"New value: +"Number of open semantic HTML5 issues"
      • changedOutput schema / properties / analysisSummary / properties / categoryIssueCounts / properties / semantic / type
        Previous value: -"number"New value: +"integer"
      • changedOutput schema / properties / analysisSummary / properties / categoryIssueCounts / properties / social / description
        Previous value: -"Social tags score (0-100)"New value: +"Number of open social tag issues"
      • changedOutput schema / properties / analysisSummary / properties / categoryIssueCounts / properties / social / type
        Previous value: -"number"New value: +"integer"
      • addedOutput schema / properties / expiresAt
        Added value: +{
        +  "description": "ISO 8601 instant this snapshot will expire",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / isPublic
        Added value: +{
        +  "description": "Whether this test is publicly visible",
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / testType
        Added value: +{
        +  "description": "The type of the test run",
        +  "enum": [
        +    "url",
        +    "html_paste"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / updatedAt
        Added value: +{
        +  "description": "ISO 8601 instant this snapshot was last updated",
        +  "type": "string"
        +}
    • Changedgvt_get_score_trend4 fields changed
      • addedOutput schema / properties / compare
        Added value: +{
        +  "description": "Comparison window settings used",
        +  "type": [
        +    "object",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / includeSubdomains
        Added value: +{
        +  "description": "Whether subdomains were included in the domain search",
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / truncated
        Added value: +{
        +  "deprecated": true,
        +  "description": "Deprecated. Use `hasMore` instead.",
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / windowSummary
        Added value: +{
        +  "description": "Summary of window comparison results",
        +  "type": [
        +    "object",
        +    "null"
        +  ]
        +}
    • Changedgvt_get_sitemap_urls3 fields changed
      • changedOutput schema / properties / bulkUrlLimit / description
        Previous value: -"How many of these URLs the caller tier permits in one batch call"New value: +"How many of these URLs the caller's tier permits in one batch-analyze call."
      • changedOutput schema / properties / legalPagesFound / description
        Previous value: -"Legal/policy pages detected before filtering"New value: +"How many of the URLs discovered across all sitemaps were detected as legal/policy boilerplate, counted BEFORE any filtering or limiting is applied."
      • changedOutput schema / properties / truncated / description
        Previous value: -"True when the sitemap parser hit its 5000-URL cap"New value: +"True if the underlying sitemap parser hit its 5000-URL cap during fetching."
    • Changedgvt_get_test_results19 fields changed
      • changedOutput schema / properties / analysisSummary / properties / categoryIssueCounts / properties / accessibility / description
        Previous value: -"Accessibility score (0-100)"New value: +"Number of open accessibility issues"
      • changedOutput schema / properties / analysisSummary / properties / categoryIssueCounts / properties / accessibility / type
        Previous value: -"number"New value: +"integer"
      • changedOutput schema / properties / analysisSummary / properties / categoryIssueCounts / properties / headings / description
        Previous value: -"Heading structure score (0-100)"New value: +"Number of open heading structure issues"
      • changedOutput schema / properties / analysisSummary / properties / categoryIssueCounts / properties / headings / type
        Previous value: -"number"New value: +"integer"
      • changedOutput schema / properties / analysisSummary / properties / categoryIssueCounts / properties / javascript / description
        Previous value: -"JavaScript dependency score (0-100)"New value: +"Number of open JavaScript dependency issues"
      • changedOutput schema / properties / analysisSummary / properties / categoryIssueCounts / properties / javascript / type
        Previous value: -"number"New value: +"integer"
      • changedOutput schema / properties / analysisSummary / properties / categoryIssueCounts / properties / nojs / description
        Previous value: -"No-JS rendering score (0-100)"New value: +"Number of open No-JS rendering issues"
      • changedOutput schema / properties / analysisSummary / properties / categoryIssueCounts / properties / nojs / type
        Previous value: -"number"New value: +"integer"
      • changedOutput schema / properties / analysisSummary / properties / categoryIssueCounts / properties / schema / description
        Previous value: -"schema.org markup score (0-100)"New value: +"Number of open schema.org markup issues"
      • changedOutput schema / properties / analysisSummary / properties / categoryIssueCounts / properties / schema / type
        Previous value: -"number"New value: +"integer"
      • changedOutput schema / properties / analysisSummary / properties / categoryIssueCounts / properties / semantic / description
        Previous value: -"Semantic HTML5 score (0-100)"New value: +"Number of open semantic HTML5 issues"
      • changedOutput schema / properties / analysisSummary / properties / categoryIssueCounts / properties / semantic / type
        Previous value: -"number"New value: +"integer"
      • changedOutput schema / properties / analysisSummary / properties / categoryIssueCounts / properties / social / description
        Previous value: -"Social tags score (0-100)"New value: +"Number of open social tag issues"
      • changedOutput schema / properties / analysisSummary / properties / categoryIssueCounts / properties / social / type
        Previous value: -"number"New value: +"integer"
      • addedOutput schema / properties / expiresAt
        Added value: +{
        +  "description": "ISO 8601 instant when this test session and its results will expire and be deleted",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / isPublic
        Added value: +{
        +  "description": "Whether this test result is publicly accessible",
        +  "type": [
        +    "boolean",
        +    "null"
        +  ]
        +}
      • changedOutput schema / properties / shareableTid / description
        Previous value: -"Non-null when the result is publicly shareable"New value: +"Non-null when the result is publicly shareable. Public share identifier for this session. Equal to tid when the session is shareable; null when the session is private. Presence of a value is the indicator that share links may be generated."
      • addedOutput schema / properties / testType
        Added value: +{
        +  "description": "Type of test performed (e.g., URL or direct HTML paste)",
        +  "enum": [
        +    "url",
        +    "html_paste"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / updatedAt
        Added value: +{
        +  "description": "ISO 8601 instant of the last update to this test session",
        +  "type": "string"
        +}
    • Changedgvt_schedule_test1 field changed
      • changedOutput schema / properties / deletedByUrl / description
        Previous value: -"Per-URL breakdown of deleted schedules (delete mode)"New value: +"Per-URL breakdown of deleted schedules (delete mode). Present on delete mode responses, including schid-based deletes; omitted for reset mode."
  6. 17 tool updates
    • Changedgvt_delete_test2 fields changed
      • addedOutput schema / properties / message / description
        Added value: +"Human-readable confirmation"
      • addedOutput schema / properties / success / description
        Added value: +"True when the test was deleted"
    • Changedgvt_get_fix9 fields changed
      • addedOutput schema / properties / category / description
        Added value: +"Analysis category the issue belongs to"
      • addedOutput schema / properties / human_description / description
        Added value: +"Human-readable description of the issue"
      • addedOutput schema / properties / impact / description
        Added value: +"Plain-language statement of what the issue costs"
      • addedOutput schema / properties / issue_id / description
        Added value: +"Stable issue identifier, e.g. og_title_missing"
      • addedOutput schema / properties / recommendation / description
        Added value: +"The recommended remediation"
      • addedOutput schema / properties / resourceUri / description
        Added value: +"The gvt:// resource this record was read from"
      • addedOutput schema / properties / severity_range / description
        Added value: +"Severity levels this issue can take"
      • addedOutput schema / properties / subcategory / description
        Added value: +"Finer-grained grouping within the category"
      • addedOutput schema / properties / ttlMs / description
        Added value: +"Suggested client cache lifetime in milliseconds"
    • Changedgvt_get_knowledge2 fields changed
      • addedOutput schema / properties / topic / description
        Added value: +"The topic that was served"
      • addedOutput schema / properties / ttlMs / description
        Added value: +"Suggested client cache lifetime in milliseconds"
    • Changedgvt_get_latest10 fields changed
      • addedOutput schema / properties / analysisSummary / properties / categoryIssueCounts / description
        Added value: +"Open issue count per analysis category"
      • addedOutput schema / properties / analysisSummary / properties / categoryScores / description
        Added value: +"Score per analysis category (0-100)"
      • addedOutput schema / properties / analysisSummary / properties / jsDependencySource / description
        Added value: +"How the JS dependency score was derived"
      • addedOutput schema / properties / createdAt / description
        Added value: +"ISO 8601 instant this snapshot was created"
      • addedOutput schema / properties / findingSentence / description
        Added value: +"Pre-generated natural language verdict for this snapshot"
      • addedOutput schema / properties / message / description
        Added value: +"Present only in the no-test case"
      • addedOutput schema / properties / shareableTid / description
        Added value: +"Public share ID, non-null when shareable"
      • addedOutput schema / properties / status / description
        Added value: +"Snapshot status (completed, failed, etc.)"
      • addedOutput schema / properties / tid / description
        Added value: +"Test ID of the snapshot"
      • addedOutput schema / properties / url / description
        Added value: +"The URL this snapshot analyzed"
    • Changedgvt_get_oldest10 fields changed
      • addedOutput schema / properties / analysisSummary / properties / categoryIssueCounts / description
        Added value: +"Open issue count per analysis category"
      • addedOutput schema / properties / analysisSummary / properties / categoryScores / description
        Added value: +"Score per analysis category (0-100)"
      • addedOutput schema / properties / analysisSummary / properties / jsDependencySource / description
        Added value: +"How the JS dependency score was derived"
      • addedOutput schema / properties / createdAt / description
        Added value: +"ISO 8601 instant this snapshot was created"
      • addedOutput schema / properties / findingSentence / description
        Added value: +"Pre-generated natural language verdict for this snapshot"
      • addedOutput schema / properties / message / description
        Added value: +"Present only in the no-test case"
      • addedOutput schema / properties / shareableTid / description
        Added value: +"Public share ID, non-null when shareable"
      • addedOutput schema / properties / status / description
        Added value: +"Snapshot status (completed, failed, etc.)"
      • addedOutput schema / properties / tid / description
        Added value: +"Test ID of the snapshot"
      • addedOutput schema / properties / url / description
        Added value: +"The URL this snapshot analyzed"
    • Changedgvt_get_oldest_list9 fields changed
      • addedOutput schema / properties / found / description
        Added value: +"URLs that had at least one test"
      • addedOutput schema / properties / requested / description
        Added value: +"Number of URLs requested"
      • addedOutput schema / properties / results / description
        Added value: +"One entry per requested URL, in request order"
      • addedOutput schema / properties / results / items / properties / oldest / properties / categoryScores / description
        Added value: +"Score per analysis category (0-100)"
      • addedOutput schema / properties / results / items / properties / oldest / properties / createdAt / description
        Added value: +"ISO 8601 instant of this snapshot"
      • addedOutput schema / properties / results / items / properties / oldest / properties / overallScore / description
        Added value: +"Overall GEO visibility score (0-100), null when the test failed"
      • addedOutput schema / properties / results / items / properties / oldest / properties / tid / description
        Added value: +"Test ID of this snapshot"
      • addedOutput schema / properties / results / items / properties / url / description
        Added value: +"The URL this record describes"
      • addedOutput schema / properties / ttlMs / description
        Added value: +"Suggested client cache lifetime in milliseconds"
    • Changedgvt_get_prompt2 fields changed
      • addedOutput schema / properties / description / description
        Added value: +"The prompt catalog description"
      • addedOutput schema / properties / name / description
        Added value: +"The prompt name that was rendered"
    • Changedgvt_get_score_trend23 fields changed
      • addedOutput schema / properties / domain / description
        Added value: +"The compared domain in domain mode, else null"
      • addedOutput schema / properties / hasMore / description
        Added value: +"True when more pages exist"
      • addedOutput schema / properties / limit / description
        Added value: +"Max records per page in domain mode"
      • addedOutput schema / properties / nextOffset / description
        Added value: +"Offset for the next page, null on the last page"
      • addedOutput schema / properties / offset / description
        Added value: +"Row offset applied to this page"
      • addedOutput schema / properties / returned / description
        Added value: +"Records in this page"
      • addedOutput schema / properties / scope / description
        Added value: +"Which mode the comparison ran in"
      • addedOutput schema / properties / trends / description
        Added value: +"One row per matched URL, baseline vs latest with deltas"
      • addedOutput schema / properties / trends / items / properties / baseline / properties / categoryScores / description
        Added value: +"Score per analysis category (0-100)"
      • addedOutput schema / properties / trends / items / properties / baseline / properties / createdAt / description
        Added value: +"ISO 8601 instant of this snapshot"
      • addedOutput schema / properties / trends / items / properties / baseline / properties / overallScore / description
        Added value: +"Overall GEO visibility score (0-100), null when the test failed"
      • addedOutput schema / properties / trends / items / properties / baseline / properties / tid / description
        Added value: +"Test ID of this snapshot"
      • addedOutput schema / properties / trends / items / properties / deltas / properties / categories / description
        Added value: +"Per-category score change, latest minus baseline"
      • addedOutput schema / properties / trends / items / properties / deltas / properties / overall / description
        Added value: +"Overall score change, latest minus baseline"
      • addedOutput schema / properties / trends / items / properties / latest / properties / categoryScores / description
        Added value: +"Score per analysis category (0-100)"
      • addedOutput schema / properties / trends / items / properties / latest / properties / createdAt / description
        Added value: +"ISO 8601 instant of this snapshot"
      • addedOutput schema / properties / trends / items / properties / latest / properties / overallScore / description
        Added value: +"Overall GEO visibility score (0-100), null when the test failed"
      • addedOutput schema / properties / trends / items / properties / latest / properties / tid / description
        Added value: +"Test ID of this snapshot"
      • addedOutput schema / properties / trends / items / properties / testCount / description
        Added value: +"Total tests ever run for this URL"
      • addedOutput schema / properties / trends / items / properties / url / description
        Added value: +"The URL this trend row describes"
      • addedOutput schema / properties / ttlMs / description
        Added value: +"Suggested client cache lifetime in milliseconds"
      • addedOutput schema / properties / url / description
        Added value: +"The compared URL in url mode, else null"
      • addedOutput schema / properties / urlCount / description
        Added value: +"Total matched URLs before pagination"
    • Changedgvt_get_sitemap_urls23 fields changed
      • addedOutput schema / properties / errors / description
        Added value: +"Per-sitemap fetch or parse failures; non-empty means discovery was partial"
      • addedOutput schema / properties / hasMore / description
        Added value: +"True when the filtered set was cut short by the limit"
      • addedOutput schema / properties / legalPages / description
        Added value: +"The legal-page filter actually applied"
      • addedOutput schema / properties / limit / description
        Added value: +"Effective result cap"
      • addedOutput schema / properties / matched / description
        Added value: +"URLs remaining after include/exclude and legalPages filters"
      • addedOutput schema / properties / requestedUrl / description
        Added value: +"The URL or sitemap URL that was resolved"
      • addedOutput schema / properties / resolvedSitemaps / description
        Added value: +"Sitemap URLs actually parsed"
      • addedOutput schema / properties / returned / description
        Added value: +"URLs actually returned after the limit"
      • addedOutput schema / properties / robotsTxtFound / description
        Added value: +"Whether a robots.txt was found and consulted"
      • addedOutput schema / properties / sitemapCount / description
        Added value: +"Number of sitemaps parsed"
      • addedOutput schema / properties / sort / description
        Added value: +"The sort actually applied to the results"
      • addedOutput schema / properties / totalDiscovered / description
        Added value: +"Raw URL count discovered before filtering"
      • addedOutput schema / properties / urls / description
        Added value: +"Discovered URLs, ranked per the sort setting"
      • addedOutput schema / properties / urls / items / properties / alreadyScheduled / description
        Added value: +"True when this URL is already in the testing queue"
      • addedOutput schema / properties / urls / items / properties / alreadyTested / description
        Added value: +"True when the caller has an existing test for this URL"
      • addedOutput schema / properties / urls / items / properties / changefreq / description
        Added value: +"Sitemap change frequency hint, when present"
      • addedOutput schema / properties / urls / items / properties / disallowedByRobots / description
        Added value: +"True when robots.txt disallows crawling this URL"
      • addedOutput schema / properties / urls / items / properties / lastmod / description
        Added value: +"Last-modified timestamp from the sitemap, when present"
      • addedOutput schema / properties / urls / items / properties / legalPage / description
        Added value: +"True when detected as legal/policy boilerplate"
      • addedOutput schema / properties / urls / items / properties / pathDepth / description
        Added value: +"Path depth from the site root (1 = homepage)"
      • addedOutput schema / properties / urls / items / properties / priority / description
        Added value: +"Sitemap priority hint, when present"
      • addedOutput schema / properties / urls / items / properties / significanceScore / description
        Added value: +"SEO significance score used for the default ranking"
      • addedOutput schema / properties / urls / items / properties / url / description
        Added value: +"The discovered URL"
    • Changedgvt_get_test_results8 fields changed
      • addedOutput schema / properties / analysisSummary / properties / categoryIssueCounts / description
        Added value: +"Open issue count per analysis category"
      • addedOutput schema / properties / analysisSummary / properties / categoryScores / description
        Added value: +"Score per analysis category (0-100)"
      • addedOutput schema / properties / analysisSummary / properties / jsDependencySource / description
        Added value: +"How the JS dependency score was derived"
      • addedOutput schema / properties / createdAt / description
        Added value: +"ISO 8601 instant of test creation"
      • addedOutput schema / properties / results / items / properties / analysisType / description
        Added value: +"Which analysis category this record holds"
      • addedOutput schema / properties / status / description
        Added value: +"Pending and running mean poll again; completed means full results are present"
      • addedOutput schema / properties / tid / description
        Added value: +"The test ID that was polled"
      • addedOutput schema / properties / url / description
        Added value: +"The URL that was analyzed"
    • Changedgvt_list_prompts10 fields changed
      • addedOutput schema / properties / promptCount / description
        Added value: +"Number of prompt workflows in the catalog"
      • addedOutput schema / properties / prompts / description
        Added value: +"The prompt workflow catalog"
      • addedOutput schema / properties / prompts / items / properties / arguments / description
        Added value: +"Arguments the prompt accepts"
      • addedOutput schema / properties / prompts / items / properties / arguments / items / properties / description / description
        Added value: +"What the argument controls"
      • addedOutput schema / properties / prompts / items / properties / arguments / items / properties / name / description
        Added value: +"Argument name"
      • addedOutput schema / properties / prompts / items / properties / arguments / items / properties / required / description
        Added value: +"True when the argument must be supplied"
      • addedOutput schema / properties / prompts / items / properties / description / description
        Added value: +"What the prompt workflow does"
      • addedOutput schema / properties / prompts / items / properties / name / description
        Added value: +"Prompt name for gvt_get_prompt"
      • addedOutput schema / properties / prompts / items / properties / title / description
        Added value: +"Human-readable display name"
      • addedOutput schema / properties / ttlMs / description
        Added value: +"Suggested client cache lifetime in milliseconds"
    • Changedgvt_list_tests11 fields changed
      • addedOutput schema / properties / createdFrom / description
        Added value: +"Effective lower creation-date bound, if any"
      • addedOutput schema / properties / createdTo / description
        Added value: +"Effective upper creation-date bound, if any"
      • addedOutput schema / properties / domain / description
        Added value: +"The domain filter actually applied, if any"
      • addedOutput schema / properties / hasMore / description
        Added value: +"True when more pages exist"
      • addedOutput schema / properties / includeSubdomains / description
        Added value: +"Whether subdomains were included in the domain filter"
      • addedOutput schema / properties / limit / description
        Added value: +"Page size actually applied"
      • addedOutput schema / properties / nextOffset / description
        Added value: +"Offset for the next page, null on the last page"
      • addedOutput schema / properties / offset / description
        Added value: +"Row offset applied to this page"
      • addedOutput schema / properties / tests / description
        Added value: +"The matching test sessions on this page"
      • addedOutput schema / properties / total / description
        Added value: +"Total matching tests before pagination"
      • addedOutput schema / properties / ttlMs / description
        Added value: +"Suggested client cache lifetime in milliseconds"
    • Changedgvt_run_visibility_batch4 fields changed
      • addedOutput schema / properties / status / description
        Added value: +"Always queued at submission time"
      • addedOutput schema / properties / totalUrls / description
        Added value: +"URLs accepted into the batch"
      • addedOutput schema / properties / webhookConfigured / description
        Added value: +"True when a completion webhook URL was supplied"
      • addedOutput schema / properties / webhookSecret / description
        Added value: +"HMAC secret for verifying the webhook, null when no webhook"
    • Changedgvt_run_visibility_test5 fields changed
      • addedOutput schema / properties / message / description
        Added value: +"Human-readable acknowledgement with polling guidance"
      • addedOutput schema / properties / next / properties / arguments / description
        Added value: +"Arguments for the next call"
      • addedOutput schema / properties / next / properties / arguments / properties / tid / description
        Added value: +"The tid to poll with"
      • addedOutput schema / properties / next / properties / tool / description
        Added value: +"The tool to call next"
      • addedOutput schema / properties / status / description
        Added value: +"Always pending at queue time"
    • Changedgvt_schedule_test11 fields changed
      • addedOutput schema / properties / deletedByUrl / description
        Added value: +"Per-URL breakdown of deleted schedules (delete mode)"
      • addedOutput schema / properties / deletedByUrl / items / properties / count / description
        Added value: +"Number of schedule entries deleted for this URL"
      • addedOutput schema / properties / deletedByUrl / items / properties / frequencies / description
        Added value: +"Frequencies that were removed for this URL"
      • addedOutput schema / properties / deletedByUrl / items / properties / url / description
        Added value: +"The URL whose schedules were deleted"
      • addedOutput schema / properties / deletedCount / description
        Added value: +"Schedule entries removed (delete/reset modes)"
      • addedOutput schema / properties / scheduled / description
        Added value: +"Schedules now in effect (add/reset modes)"
      • addedOutput schema / properties / scheduled / items / properties / schid / description
        Added value: +"Schedule ID for later pause/resume/cancel calls"
      • addedOutput schema / properties / scheduled / items / properties / url / description
        Added value: +"The URL placed on schedule"
      • addedOutput schema / properties / scheduled / items / properties / wpPostId / description
        Added value: +"Associated WordPress post ID, when provided"
      • addedOutput schema / properties / success / description
        Added value: +"True when the requested mode completed"
      • addedOutput schema / properties / upsertedCount / description
        Added value: +"Schedules created or updated (add/reset modes)"
    • Changedgvt_set_test_visibility3 fields changed
      • addedOutput schema / properties / is_public / description
        Added value: +"The new public visibility state"
      • addedOutput schema / properties / success / description
        Added value: +"True when the visibility change was applied"
      • addedOutput schema / properties / tid / description
        Added value: +"The test that was modified"
    • Changedgvt_share_test3 fields changed
      • addedOutput schema / properties / is_public / description
        Added value: +"The test public visibility state after the call"
      • addedOutput schema / properties / success / description
        Added value: +"True when sharing was enabled"
      • addedOutput schema / properties / tid / description
        Added value: +"The test that was shared"
  7. 17 tool updates
    • Changedgvt_delete_test1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "message": {
        +      "type": "string"
        +    },
        +    "success": {
        +      "type": "boolean"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedgvt_get_fix1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "description": "Canonical fix record for one issue type",
        +  "properties": {
        +    "category": {
        +      "type": "string"
        +    },
        +    "human_description": {
        +      "type": "string"
        +    },
        +    "impact": {
        +      "type": "string"
        +    },
        +    "issue_id": {
        +      "type": "string"
        +    },
        +    "recommendation": {
        +      "type": "string"
        +    },
        +    "resourceUri": {
        +      "type": "string"
        +    },
        +    "severity_range": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "subcategory": {
        +      "type": "string"
        +    },
        +    "ttlMs": {
        +      "type": "integer"
        +    },
        +    "weight": {
        +      "description": "Scoring weight",
        +      "type": "number"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedgvt_get_knowledge1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "knowledge": {
        +      "description": "Reference content for the requested topic",
        +      "type": "object"
        +    },
        +    "topic": {
        +      "enum": [
        +        "all",
        +        "methodology",
        +        "scoring",
        +        "categories",
        +        "glossary"
        +      ],
        +      "type": "string"
        +    },
        +    "ttlMs": {
        +      "type": "integer"
        +    },
        +    "uri": {
        +      "description": "The gvt:// resource the content came from",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedgvt_get_latest1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "description": "Most recent non-expired snapshot for one URL. On success the snapshot fields sit at the top level; when no test exists the response is { url, latest: null, message }.",
        +  "properties": {
        +    "analysisSummary": {
        +      "description": "Aggregate scores for one test session",
        +      "properties": {
        +        "categoryIssueCounts": {
        +          "properties": {
        +            "accessibility": {
        +              "description": "Accessibility score (0-100)",
        +              "type": "number"
        +            },
        +            "headings": {
        +              "description": "Heading structure score (0-100)",
        +              "type": "number"
        +            },
        +            "javascript": {
        +              "description": "JavaScript dependency score (0-100)",
        +              "type": "number"
        +            },
        +            "nojs": {
        +              "description": "No-JS rendering score (0-100)",
        +              "type": "number"
        +            },
        +            "schema": {
        +              "description": "schema.org markup score (0-100)",
        +              "type": "number"
        +            },
        +            "semantic": {
        +              "description": "Semantic HTML5 score (0-100)",
        +              "type": "number"
        +            },
        +            "social": {
        +              "description": "Social tags score (0-100)",
        +              "type": "number"
        +            }
        +          },
        +          "type": "object"
        +        },
        +        "categoryScores": {
        +          "properties": {
        +            "accessibility": {
        +              "description": "Accessibility score (0-100)",
        +              "type": "number"
        +            },
        +            "headings": {
        +              "description": "Heading structure score (0-100)",
        +              "type": "number"
        +            },
        +            "javascript": {
        +              "description": "JavaScript dependency score (0-100)",
        +              "type": "number"
        +            },
        +            "nojs": {
        +              "description": "No-JS rendering score (0-100)",
        +              "type": "number"
        +            },
        +            "schema": {
        +              "description": "schema.org markup score (0-100)",
        +              "type": "number"
        +            },
        +            "semantic": {
        +              "description": "Semantic HTML5 score (0-100)",
        +              "type": "number"
        +            },
        +            "social": {
        +              "description": "Social tags score (0-100)",
        +              "type": "number"
        +            }
        +          },
        +          "type": "object"
        +        },
        +        "jsDependencySource": {
        +          "enum": [
        +            "measured",
        +            "estimated",
        +            "unavailable"
        +          ],
        +          "type": "string"
        +        },
        +        "overallScore": {
        +          "description": "Overall GEO visibility score (0-100)",
        +          "type": "number"
        +        },
        +        "timestamp": {
        +          "description": "ISO 8601 instant of the analysis",
        +          "type": "string"
        +        },
        +        "totalIssues": {
        +          "description": "Total open issues across all categories",
        +          "type": "integer"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "createdAt": {
        +      "type": "string"
        +    },
        +    "findingSentence": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "latest": {
        +      "description": "Null when no test exists for the URL",
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "message": {
        +      "type": "string"
        +    },
        +    "shareableTid": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "status": {
        +      "type": "string"
        +    },
        +    "tid": {
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedgvt_get_oldest1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "description": "Oldest baseline snapshot for one URL, including expired tests. On success the snapshot fields sit at the top level; when no test exists the response is { url, oldest: null, message }.",
        +  "properties": {
        +    "analysisSummary": {
        +      "description": "Aggregate scores for one test session",
        +      "properties": {
        +        "categoryIssueCounts": {
        +          "properties": {
        +            "accessibility": {
        +              "description": "Accessibility score (0-100)",
        +              "type": "number"
        +            },
        +            "headings": {
        +              "description": "Heading structure score (0-100)",
        +              "type": "number"
        +            },
        +            "javascript": {
        +              "description": "JavaScript dependency score (0-100)",
        +              "type": "number"
        +            },
        +            "nojs": {
        +              "description": "No-JS rendering score (0-100)",
        +              "type": "number"
        +            },
        +            "schema": {
        +              "description": "schema.org markup score (0-100)",
        +              "type": "number"
        +            },
        +            "semantic": {
        +              "description": "Semantic HTML5 score (0-100)",
        +              "type": "number"
        +            },
        +            "social": {
        +              "description": "Social tags score (0-100)",
        +              "type": "number"
        +            }
        +          },
        +          "type": "object"
        +        },
        +        "categoryScores": {
        +          "properties": {
        +            "accessibility": {
        +              "description": "Accessibility score (0-100)",
        +              "type": "number"
        +            },
        +            "headings": {
        +              "description": "Heading structure score (0-100)",
        +              "type": "number"
        +            },
        +            "javascript": {
        +              "description": "JavaScript dependency score (0-100)",
        +              "type": "number"
        +            },
        +            "nojs": {
        +              "description": "No-JS rendering score (0-100)",
        +              "type": "number"
        +            },
        +            "schema": {
        +              "description": "schema.org markup score (0-100)",
        +              "type": "number"
        +            },
        +            "semantic": {
        +              "description": "Semantic HTML5 score (0-100)",
        +              "type": "number"
        +            },
        +            "social": {
        +              "description": "Social tags score (0-100)",
        +              "type": "number"
        +            }
        +          },
        +          "type": "object"
        +        },
        +        "jsDependencySource": {
        +          "enum": [
        +            "measured",
        +            "estimated",
        +            "unavailable"
        +          ],
        +          "type": "string"
        +        },
        +        "overallScore": {
        +          "description": "Overall GEO visibility score (0-100)",
        +          "type": "number"
        +        },
        +        "timestamp": {
        +          "description": "ISO 8601 instant of the analysis",
        +          "type": "string"
        +        },
        +        "totalIssues": {
        +          "description": "Total open issues across all categories",
        +          "type": "integer"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "createdAt": {
        +      "type": "string"
        +    },
        +    "findingSentence": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "message": {
        +      "type": "string"
        +    },
        +    "oldest": {
        +      "description": "Null when no test exists for the URL",
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "shareableTid": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "status": {
        +      "type": "string"
        +    },
        +    "tid": {
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedgvt_get_oldest_list1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "description": "Oldest baseline snapshots for a batch of URLs (up to 100)",
        +  "properties": {
        +    "found": {
        +      "type": "integer"
        +    },
        +    "requested": {
        +      "type": "integer"
        +    },
        +    "results": {
        +      "items": {
        +        "properties": {
        +          "oldest": {
        +            "description": "One test snapshot: tid, createdAt, overallScore, categoryScores",
        +            "properties": {
        +              "categoryScores": {
        +                "properties": {
        +                  "accessibility": {
        +                    "description": "Accessibility score (0-100)",
        +                    "type": "number"
        +                  },
        +                  "headings": {
        +                    "description": "Heading structure score (0-100)",
        +                    "type": "number"
        +                  },
        +                  "javascript": {
        +                    "description": "JavaScript dependency score (0-100)",
        +                    "type": "number"
        +                  },
        +                  "nojs": {
        +                    "description": "No-JS rendering score (0-100)",
        +                    "type": "number"
        +                  },
        +                  "schema": {
        +                    "description": "schema.org markup score (0-100)",
        +                    "type": "number"
        +                  },
        +                  "semantic": {
        +                    "description": "Semantic HTML5 score (0-100)",
        +                    "type": "number"
        +                  },
        +                  "social": {
        +                    "description": "Social tags score (0-100)",
        +                    "type": "number"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "createdAt": {
        +                "type": "string"
        +              },
        +              "overallScore": {
        +                "type": [
        +                  "number",
        +                  "null"
        +                ]
        +              },
        +              "tid": {
        +                "type": "string"
        +              }
        +            },
        +            "type": [
        +              "object",
        +              "null"
        +            ]
        +          },
        +          "url": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "ttlMs": {
        +      "type": "integer"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedgvt_get_prompt1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "arguments": {
        +      "description": "Effective arguments after binding defaults",
        +      "type": "object"
        +    },
        +    "description": {
        +      "type": "string"
        +    },
        +    "name": {
        +      "type": "string"
        +    },
        +    "text": {
        +      "description": "Fully interpolated instruction text referencing GVT tools by name",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedgvt_get_score_trend1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "description": "Baseline vs latest comparison with pre-computed deltas, scoped to one URL or a whole domain",
        +  "properties": {
        +    "domain": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "hasMore": {
        +      "type": "boolean"
        +    },
        +    "limit": {
        +      "type": "integer"
        +    },
        +    "nextOffset": {
        +      "type": [
        +        "integer",
        +        "null"
        +      ]
        +    },
        +    "offset": {
        +      "type": "integer"
        +    },
        +    "returned": {
        +      "type": "integer"
        +    },
        +    "scope": {
        +      "enum": [
        +        "url",
        +        "domain"
        +      ],
        +      "type": "string"
        +    },
        +    "trends": {
        +      "items": {
        +        "properties": {
        +          "baseline": {
        +            "description": "One test snapshot: tid, createdAt, overallScore, categoryScores",
        +            "properties": {
        +              "categoryScores": {
        +                "properties": {
        +                  "accessibility": {
        +                    "description": "Accessibility score (0-100)",
        +                    "type": "number"
        +                  },
        +                  "headings": {
        +                    "description": "Heading structure score (0-100)",
        +                    "type": "number"
        +                  },
        +                  "javascript": {
        +                    "description": "JavaScript dependency score (0-100)",
        +                    "type": "number"
        +                  },
        +                  "nojs": {
        +                    "description": "No-JS rendering score (0-100)",
        +                    "type": "number"
        +                  },
        +                  "schema": {
        +                    "description": "schema.org markup score (0-100)",
        +                    "type": "number"
        +                  },
        +                  "semantic": {
        +                    "description": "Semantic HTML5 score (0-100)",
        +                    "type": "number"
        +                  },
        +                  "social": {
        +                    "description": "Social tags score (0-100)",
        +                    "type": "number"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "createdAt": {
        +                "type": "string"
        +              },
        +              "overallScore": {
        +                "type": [
        +                  "number",
        +                  "null"
        +                ]
        +              },
        +              "tid": {
        +                "type": "string"
        +              }
        +            },
        +            "type": [
        +              "object",
        +              "null"
        +            ]
        +          },
        +          "deltas": {
        +            "description": "Latest minus baseline",
        +            "properties": {
        +              "categories": {
        +                "properties": {
        +                  "accessibility": {
        +                    "description": "Accessibility score (0-100)",
        +                    "type": "number"
        +                  },
        +                  "headings": {
        +                    "description": "Heading structure score (0-100)",
        +                    "type": "number"
        +                  },
        +                  "javascript": {
        +                    "description": "JavaScript dependency score (0-100)",
        +                    "type": "number"
        +                  },
        +                  "nojs": {
        +                    "description": "No-JS rendering score (0-100)",
        +                    "type": "number"
        +                  },
        +                  "schema": {
        +                    "description": "schema.org markup score (0-100)",
        +                    "type": "number"
        +                  },
        +                  "semantic": {
        +                    "description": "Semantic HTML5 score (0-100)",
        +                    "type": "number"
        +                  },
        +                  "social": {
        +                    "description": "Social tags score (0-100)",
        +                    "type": "number"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "overall": {
        +                "type": [
        +                  "number",
        +                  "null"
        +                ]
        +              }
        +            },
        +            "type": [
        +              "object",
        +              "null"
        +            ]
        +          },
        +          "isSameTest": {
        +            "description": "True when baseline and latest are the same test (no movement yet)",
        +            "type": "boolean"
        +          },
        +          "latest": {
        +            "description": "One test snapshot: tid, createdAt, overallScore, categoryScores",
        +            "properties": {
        +              "categoryScores": {
        +                "properties": {
        +                  "accessibility": {
        +                    "description": "Accessibility score (0-100)",
        +                    "type": "number"
        +                  },
        +                  "headings": {
        +                    "description": "Heading structure score (0-100)",
        +                    "type": "number"
        +                  },
        +                  "javascript": {
        +                    "description": "JavaScript dependency score (0-100)",
        +                    "type": "number"
        +                  },
        +                  "nojs": {
        +                    "description": "No-JS rendering score (0-100)",
        +                    "type": "number"
        +                  },
        +                  "schema": {
        +                    "description": "schema.org markup score (0-100)",
        +                    "type": "number"
        +                  },
        +                  "semantic": {
        +                    "description": "Semantic HTML5 score (0-100)",
        +                    "type": "number"
        +                  },
        +                  "social": {
        +                    "description": "Social tags score (0-100)",
        +                    "type": "number"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "createdAt": {
        +                "type": "string"
        +              },
        +              "overallScore": {
        +                "type": [
        +                  "number",
        +                  "null"
        +                ]
        +              },
        +              "tid": {
        +                "type": "string"
        +              }
        +            },
        +            "type": [
        +              "object",
        +              "null"
        +            ]
        +          },
        +          "testCount": {
        +            "type": "integer"
        +          },
        +          "url": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "ttlMs": {
        +      "type": "integer"
        +    },
        +    "url": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "urlCount": {
        +      "type": "integer"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedgvt_get_sitemap_urls1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "description": "Ranked URL discovery from a domain XML sitemaps",
        +  "properties": {
        +    "bulkUrlLimit": {
        +      "description": "How many of these URLs the caller tier permits in one batch call",
        +      "type": "integer"
        +    },
        +    "errors": {
        +      "items": {
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "hasMore": {
        +      "type": "boolean"
        +    },
        +    "legalPages": {
        +      "enum": [
        +        "include",
        +        "exclude",
        +        "only"
        +      ],
        +      "type": "string"
        +    },
        +    "legalPagesFound": {
        +      "description": "Legal/policy pages detected before filtering",
        +      "type": "integer"
        +    },
        +    "limit": {
        +      "type": "integer"
        +    },
        +    "matched": {
        +      "type": "integer"
        +    },
        +    "requestedUrl": {
        +      "type": "string"
        +    },
        +    "resolvedSitemaps": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "returned": {
        +      "type": "integer"
        +    },
        +    "robotsTxtFound": {
        +      "type": "boolean"
        +    },
        +    "sitemapCount": {
        +      "type": "integer"
        +    },
        +    "sort": {
        +      "enum": [
        +        "significance",
        +        "lastmod",
        +        "alphabetical",
        +        "document"
        +      ],
        +      "type": "string"
        +    },
        +    "totalDiscovered": {
        +      "type": "integer"
        +    },
        +    "truncated": {
        +      "description": "True when the sitemap parser hit its 5000-URL cap",
        +      "type": "boolean"
        +    },
        +    "urls": {
        +      "items": {
        +        "properties": {
        +          "alreadyScheduled": {
        +            "type": "boolean"
        +          },
        +          "alreadyTested": {
        +            "type": "boolean"
        +          },
        +          "changefreq": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "disallowedByRobots": {
        +            "type": "boolean"
        +          },
        +          "lastmod": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "legalPage": {
        +            "type": "boolean"
        +          },
        +          "pathDepth": {
        +            "type": "integer"
        +          },
        +          "priority": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "significanceScore": {
        +            "type": "number"
        +          },
        +          "url": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedgvt_get_test_results1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "description": "Full results for one test. While status is pending or running, results are incomplete — wait and retry.",
        +  "properties": {
        +    "analysisSummary": {
        +      "description": "Aggregate scores for one test session",
        +      "properties": {
        +        "categoryIssueCounts": {
        +          "properties": {
        +            "accessibility": {
        +              "description": "Accessibility score (0-100)",
        +              "type": "number"
        +            },
        +            "headings": {
        +              "description": "Heading structure score (0-100)",
        +              "type": "number"
        +            },
        +            "javascript": {
        +              "description": "JavaScript dependency score (0-100)",
        +              "type": "number"
        +            },
        +            "nojs": {
        +              "description": "No-JS rendering score (0-100)",
        +              "type": "number"
        +            },
        +            "schema": {
        +              "description": "schema.org markup score (0-100)",
        +              "type": "number"
        +            },
        +            "semantic": {
        +              "description": "Semantic HTML5 score (0-100)",
        +              "type": "number"
        +            },
        +            "social": {
        +              "description": "Social tags score (0-100)",
        +              "type": "number"
        +            }
        +          },
        +          "type": "object"
        +        },
        +        "categoryScores": {
        +          "properties": {
        +            "accessibility": {
        +              "description": "Accessibility score (0-100)",
        +              "type": "number"
        +            },
        +            "headings": {
        +              "description": "Heading structure score (0-100)",
        +              "type": "number"
        +            },
        +            "javascript": {
        +              "description": "JavaScript dependency score (0-100)",
        +              "type": "number"
        +            },
        +            "nojs": {
        +              "description": "No-JS rendering score (0-100)",
        +              "type": "number"
        +            },
        +            "schema": {
        +              "description": "schema.org markup score (0-100)",
        +              "type": "number"
        +            },
        +            "semantic": {
        +              "description": "Semantic HTML5 score (0-100)",
        +              "type": "number"
        +            },
        +            "social": {
        +              "description": "Social tags score (0-100)",
        +              "type": "number"
        +            }
        +          },
        +          "type": "object"
        +        },
        +        "jsDependencySource": {
        +          "enum": [
        +            "measured",
        +            "estimated",
        +            "unavailable"
        +          ],
        +          "type": "string"
        +        },
        +        "overallScore": {
        +          "description": "Overall GEO visibility score (0-100)",
        +          "type": "number"
        +        },
        +        "timestamp": {
        +          "description": "ISO 8601 instant of the analysis",
        +          "type": "string"
        +        },
        +        "totalIssues": {
        +          "description": "Total open issues across all categories",
        +          "type": "integer"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "createdAt": {
        +      "type": "string"
        +    },
        +    "findingSentence": {
        +      "description": "Pre-generated natural language verdict; use as the primary summary",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "results": {
        +      "description": "Per-category result records. Each carries analysisType and resultData; issues carry fixId for gvt_get_fix.",
        +      "items": {
        +        "properties": {
        +          "analysisType": {
        +            "enum": [
        +              "heading",
        +              "semantic",
        +              "accessibility",
        +              "schema",
        +              "javascript",
        +              "nojs",
        +              "social"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "shareableTid": {
        +      "description": "Non-null when the result is publicly shareable",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "status": {
        +      "enum": [
        +        "pending",
        +        "processing",
        +        "completed",
        +        "failed"
        +      ],
        +      "type": "string"
        +    },
        +    "tid": {
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedgvt_list_prompts1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "promptCount": {
        +      "type": "integer"
        +    },
        +    "prompts": {
        +      "items": {
        +        "properties": {
        +          "arguments": {
        +            "items": {
        +              "properties": {
        +                "description": {
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "type": "string"
        +                },
        +                "required": {
        +                  "type": "boolean"
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "description": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "title": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "ttlMs": {
        +      "type": "integer"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedgvt_list_tests1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "description": "Filtered, paginated test history, newest first",
        +  "properties": {
        +    "createdFrom": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "createdTo": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "domain": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "hasMore": {
        +      "type": "boolean"
        +    },
        +    "includeSubdomains": {
        +      "type": "boolean"
        +    },
        +    "limit": {
        +      "type": "integer"
        +    },
        +    "nextOffset": {
        +      "type": [
        +        "integer",
        +        "null"
        +      ]
        +    },
        +    "offset": {
        +      "type": "integer"
        +    },
        +    "tests": {
        +      "items": {
        +        "description": "Test session summaries (tid, url, status, analysisSummary, createdAt)",
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "total": {
        +      "type": "integer"
        +    },
        +    "ttlMs": {
        +      "type": "integer"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedgvt_run_visibility_batch1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "description": "Batch acknowledgement. Poll gvt_get_test_results per URL once the batch completes.",
        +  "properties": {
        +    "batchId": {
        +      "description": "UUID for tracking the batch",
        +      "type": "string"
        +    },
        +    "status": {
        +      "enum": [
        +        "queued"
        +      ],
        +      "type": "string"
        +    },
        +    "totalUrls": {
        +      "type": "integer"
        +    },
        +    "webhookConfigured": {
        +      "type": "boolean"
        +    },
        +    "webhookSecret": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedgvt_run_visibility_test1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "description": "Async acknowledgement. Poll gvt_get_test_results with the returned tid until status is not pending or running.",
        +  "properties": {
        +    "message": {
        +      "type": "string"
        +    },
        +    "next": {
        +      "description": "The suggested next call",
        +      "properties": {
        +        "arguments": {
        +          "properties": {
        +            "tid": {
        +              "type": "string"
        +            }
        +          },
        +          "type": "object"
        +        },
        +        "tool": {
        +          "enum": [
        +            "gvt_get_test_results"
        +          ],
        +          "type": "string"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "status": {
        +      "enum": [
        +        "pending"
        +      ],
        +      "type": "string"
        +    },
        +    "tid": {
        +      "description": "8-character test ID to poll with",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedgvt_schedule_test1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "description": "Result varies by mode: add/reset return upsertedCount and scheduled; delete returns deletedCount and deletedByUrl",
        +  "properties": {
        +    "deletedByUrl": {
        +      "items": {
        +        "properties": {
        +          "count": {
        +            "type": "integer"
        +          },
        +          "frequencies": {
        +            "items": {
        +              "enum": [
        +                "daily",
        +                "weekly",
        +                "monthly",
        +                "once"
        +              ],
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "url": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "deletedCount": {
        +      "type": "integer"
        +    },
        +    "scheduled": {
        +      "items": {
        +        "properties": {
        +          "schid": {
        +            "type": "string"
        +          },
        +          "url": {
        +            "type": "string"
        +          },
        +          "wpPostId": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "success": {
        +      "type": "boolean"
        +    },
        +    "upsertedCount": {
        +      "type": "integer"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedgvt_set_test_visibility1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "is_public": {
        +      "type": "boolean"
        +    },
        +    "success": {
        +      "type": "boolean"
        +    },
        +    "tid": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedgvt_share_test1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "is_public": {
        +      "type": "boolean"
        +    },
        +    "share_url": {
        +      "description": "Public URL, or null when sharing failed",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "success": {
        +      "type": "boolean"
        +    },
        +    "tid": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
  8. 2 tool updates
    • Removedgvt_manage_test
    • Addedgvt_set_test_visibility
  9. 2 tool updates
    • Removedgvt_batch_run_tests
    • Addedgvt_run_visibility_batch
  10. 1 tool update
    • Changedgvt_get_sitemap_urls2 fields changed
      • changedInput schema / properties / limit / default
        Previous value: -25New value: +10
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum number of URLs to return."New value: +"Maximum number of URLs to return (default 10)."
  11. 17 tool updates
    • First observedgvt_batch_run_tests
    • First observedgvt_delete_test
    • First observedgvt_get_fix
    • First observedgvt_get_knowledge
    • First observedgvt_get_latest
    • First observedgvt_get_oldest
    • First observedgvt_get_oldest_list
    • First observedgvt_get_prompt
    • First observedgvt_get_score_trend
    • First observedgvt_get_sitemap_urls
    • First observedgvt_get_test_results
    • First observedgvt_list_prompts
    • First observedgvt_list_tests
    • First observedgvt_manage_test
    • First observedgvt_run_visibility_test
    • First observedgvt_schedule_test
    • First observedgvt_share_test

Publisher details

Operator
iGods Internet Marketing Inc. · Publisher source
Vendor relationship
First-party · Publisher source
Restrictions
Pro or Enterprise plan required to use MCP. Uses Google OAuth authentication. Limits are tier based, not geographically based. · Publisher source

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources