MCPサーバー

iGods GEO Visibility Tool (GVT)

com.igods/gvt

このMCPでできること

Runs and monitors GEO visibility tests for websites, evaluates technical and content categories, compares score trends, and provides remediation guidance.

gvt_delete_test
Delete a test
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.
破壊的操作あり 外部アクセスあり 冪等
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['tid'], 'properties': {'tid': {'type': 'string', 'description': 'The 8-character test ID of the test to delete.'}}}
出力スキーマ
{'type': 'object', 'properties': {'message': {'type': 'string', 'description': 'Human-readable confirmation'}, 'success': {'type': 'boolean', 'description': 'True when the test was deleted'}}}
gvt_get_baseline
Get baseline snapshot
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.
読み取り専用 外部アクセスあり 冪等
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['url'], 'properties': {'url': {'type': 'string', 'description': 'The URL to look up (must match the URL used when the test was run).'}}}
出力スキーマ
{'type': 'object', 'properties': {'tid': {'type': 'string', 'description': 'Test ID of the snapshot'}, 'url': {'type': 'string', 'description': 'The URL this snapshot analyzed'}, 'oldest': {'type': ['object', 'null'], 'description': 'Null when no test exists for the URL'}, 'status': {'type': 'string', 'description': 'Snapshot status (completed, failed, etc.)'}, 'message': {'type': 'string', 'description': 'Present only in the no-test case'}, 'isPublic': {'type': 'boolean', 'description': 'Whether this test is publicly visible'}, 'testType': {'enum': ['url', 'html_paste'], 'type': 'string', 'description': 'The type of the test run'}, 'createdAt': {'type': 'string', 'description': 'ISO 8601 instant this snapshot was created'}, 'expiresAt': {'type': ['string', 'null'], 'description': 'ISO 8601 instant this snapshot will expire'}, 'updatedAt': {'type': 'string', 'description': 'ISO 8601 instant this snapshot was last updated'}, 'shareableTid': {'type': ['string', 'null'], 'description': 'Public share ID, non-null when shareable'}, 'analysisSummary': {'type': 'object', 'properties': {'timestamp': {'type': 'string', 'description': 'ISO 8601 instant of the analysis'}, 'totalIssues': {'type': 'integer', 'description': 'Total open issues across all categories'}, 'overallScore': {'type': 'number', 'description': 'Overall GEO visibility score (0-100)'}, 'categoryScores': {'type': 'object', 'properties': {'nojs': {'type': 'number', 'description': 'No-JS rendering score (0-100)'}, 'schema': {'type': 'number', 'description': 'schema.org markup score (0-100)'}, 'social': {'type': 'number', 'description': 'Social tags score (0-100)'}, 'headings': {'type': 'number', 'description': 'Heading structure score (0-100)'}, 'semantic': {'type': 'number', 'description': 'Semantic HTML5 score (0-100)'}, 'javascript': {'type': 'number', 'description': 'JavaScript dependency score (0-100)'}, 'accessibility': {'type': 'number', 'description': 'Accessibility score (0-100)'}}, 'description': 'Score per analysis category (0-100)'}, 'jsDependencySource': {'enum': ['measured', 'estimated', 'unavailable'], 'type': 'string', 'description': 'How the JS dependency score was derived'}, 'categoryIssueCounts': {'type': 'object', 'properties': {'nojs': {'type': 'integer', 'description': 'Number of open No-JS rendering issues'}, 'schema': {'type': 'integer', 'description': 'Number of open schema.org markup issues'}, 'social': {'type': 'integer', 'description': 'Number of open social tag issues'}, 'headings': {'type': 'integer', 'description': 'Number of open heading structure issues'}, 'semantic': {'type': 'integer', 'description': 'Number of open semantic HTML5 issues'}, 'javascript': {'type': 'integer', 'description': 'Number of open JavaScript dependency issues'}, 'accessibility': {'type': 'integer', 'description': 'Number of open accessibility issues'}}, 'description': 'Open issue count per analysis category'}}, 'description': 'Aggregate scores for this test'}, 'findingSentence': {'type': ['string', 'null'], 'description': 'Pre-generated natural language verdict for this snapshot'}}, '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 }.'}
gvt_get_batch_status
Get batch status
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.
読み取り専用 外部アクセスあり 冪等
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['batchId'], 'properties': {'batchId': {'type': 'string', 'format': 'uuid', 'description': 'The UUID of the batch to check, returned by gvt_run_visibility_batch.'}}}
出力スキーマ
{'type': 'object', 'properties': {'urls': {'type': 'array', 'items': {'type': 'object', 'properties': {'tid': {'type': ['string', 'null'], 'description': 'Test ID once that test completed, null while queued, running, or failed'}, 'url': {'type': 'string', 'description': 'The submitted URL'}, 'status': {'enum': ['queued', 'running', 'completed', 'failed'], 'type': 'string', 'description': 'This URL test state'}}}, 'description': 'One entry per submitted URL, in submission order'}, 'counts': {'type': 'object', 'properties': {'failed': {'type': 'integer', 'description': 'Tests that failed or were skipped'}, 'queued': {'type': 'integer', 'description': 'Tests not yet started'}, 'running': {'type': 'integer', 'description': 'Tests currently executing'}, 'completed': {'type': 'integer', 'description': 'Tests that completed successfully'}}, 'description': 'Per-URL test state counts; the four fields always sum to totalUrls'}, 'status': {'enum': ['queued', 'running', 'completed', 'failed'], 'type': 'string', 'description': 'Aggregate batch state; completed means every per-URL test reached a terminal state'}, 'batchId': {'type': 'string', 'description': 'The batch that was queried'}, 'totalUrls': {'type': 'integer', 'description': 'URLs in the batch after duplicate collapsing'}, 'completedAt': {'type': ['string', 'null'], 'description': 'ISO 8601 instant when the batch reached a terminal state, null while in flight'}, 'submittedAt': {'type': 'string', 'description': 'ISO 8601 instant of batch submission'}}, 'description': 'Batch progress and per-URL state. Poll until status is completed or failed.'}
gvt_get_batch_summary
Get batch summary
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.
読み取り専用 外部アクセスあり 冪等
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['batchId'], 'properties': {'batchId': {'type': 'string', 'format': 'uuid', 'description': 'The UUID of the completed batch to summarize, returned by gvt_run_visibility_batch.'}}}
出力スキーマ
{'type': 'object', 'properties': {'pages': {'type': 'array', 'items': {'type': 'object', 'properties': {'tid': {'type': 'string', 'description': 'Test ID, for gvt_get_test_results deep dives'}, 'url': {'type': 'string', 'description': 'The tested URL'}, 'status': {'type': 'string', 'description': 'This URL test state'}, 'overallScore': {'type': ['number', 'null'], 'description': 'Overall GEO visibility score (0-100), null when the test failed'}, 'categoryScores': {'type': ['object', 'null'], 'description': 'Score per analysis category (0-100)'}, 'findingSentence': {'type': ['string', 'null'], 'description': 'Pre-generated natural language verdict'}}}, 'description': 'One compact entry per URL, in batch order. Failed tests appear with status failed and null scores; they are excluded from the aggregates.'}, 'counts': {'type': 'object', 'description': 'Per-URL test state counts; the four fields always sum to totalUrls'}, 'status': {'enum': ['queued', 'running', 'completed', 'failed'], 'type': 'string', 'description': 'Aggregate batch state; pages and summary are present only when completed'}, 'batchId': {'type': 'string', 'description': 'The batch that was summarized'}, 'message': {'type': 'string', 'description': 'Polling guidance, present when the batch is not completed'}, 'summary': {'type': 'object', 'properties': {'bestPage': {'type': ['object', 'null'], 'description': 'Highest scoring page: url and overallScore'}, 'worstPage': {'type': ['object', 'null'], 'description': 'Lowest scoring page: url and overallScore'}, 'topIssueTypes': {'type': 'array', 'items': {'type': 'object', 'properties': {'type': {'type': 'string', 'description': 'Issue type identifier'}, 'count': {'type': 'integer', 'description': 'Pages carrying this issue type'}, 'fixId': {'type': ['string', 'null'], 'description': 'fixId for gvt_get_fix, when the issue type is mapped'}, 'severity': {'type': 'string', 'description': 'Highest severity observed for this issue type'}}}, 'description': 'Up to five issue types shared across pages (error and warning severities, counted once per page), each with its fixId for gvt_get_fix'}, 'weakestCategory': {'type': ['string', 'null'], 'description': 'Category with the lowest average score'}, 'categoryAverages': {'type': 'object', 'description': 'Mean score per category across completed pages'}, 'strongestCategory': {'type': ['string', 'null'], 'description': 'Category with the highest average score'}, 'averageOverallScore': {'type': ['number', 'null'], 'description': 'Mean overall score across completed pages, rounded to one decimal'}}, 'description': 'Aggregates computed over the completed pages'}, 'totalUrls': {'type': 'integer', 'description': 'URLs in the batch after duplicate collapsing'}}, 'description': 'Compact per-page results and pre-computed aggregates for a completed batch. An in-flight or failed batch returns its status and counts without per-page data.'}
gvt_get_fix
Read a fix record
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.
読み取り専用 冪等
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['issue_id'], 'properties': {'issue_id': {'type': 'string', 'description': 'Stable issue identifier, e.g. og_title_missing or color-contrast. Matches the fixId field in gvt_get_test_results output.'}}}
出力スキーマ
{'type': 'object', 'properties': {'ttlMs': {'type': 'integer', 'description': 'Suggested client cache lifetime in milliseconds'}, 'impact': {'type': 'string', 'description': 'Plain-language statement of what the issue costs'}, 'weight': {'type': 'number', 'description': 'Scoring weight'}, 'category': {'type': 'string', 'description': 'Analysis category the issue belongs to'}, 'issue_id': {'type': 'string', 'description': 'Stable issue identifier, e.g. og_title_missing'}, 'resourceUri': {'type': 'string', 'description': 'The gvt:// resource this record was read from'}, 'subcategory': {'type': 'string', 'description': 'Finer-grained grouping within the category'}, 'recommendation': {'type': 'string', 'description': 'The recommended remediation'}, 'severity_range': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Severity levels this issue can take'}, 'human_description': {'type': 'string', 'description': 'Human-readable description of the issue'}}, 'description': 'Canonical fix record for one issue type'}
gvt_get_knowledge
Read GVT knowledge
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.
読み取り専用 冪等
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': [], 'properties': {'topic': {'enum': ['all', 'methodology', 'scoring', 'categories', 'glossary'], 'type': 'string', 'default': 'all', 'description': 'Which 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).'}}}
出力スキーマ
{'type': 'object', 'properties': {'uri': {'type': 'string', 'description': 'The gvt:// resource the content came from'}, 'topic': {'enum': ['all', 'methodology', 'scoring', 'categories', 'glossary'], 'type': 'string', 'description': 'The topic that was served'}, 'ttlMs': {'type': 'integer', 'description': 'Suggested client cache lifetime in milliseconds'}, 'knowledge': {'type': 'object', 'description': 'Reference content for the requested topic'}}}
gvt_get_latest
Get latest snapshot
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.
読み取り専用 外部アクセスあり 冪等
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['url'], 'properties': {'url': {'type': 'string', 'description': 'The URL to look up (must match the URL used when the test was run).'}}}
出力スキーマ
{'type': 'object', 'properties': {'tid': {'type': 'string', 'description': 'Test ID of the snapshot'}, 'url': {'type': 'string', 'description': 'The URL this snapshot analyzed'}, 'latest': {'type': ['object', 'null'], 'description': 'Null when no test exists for the URL'}, 'status': {'type': 'string', 'description': 'Snapshot status (completed, failed, etc.)'}, 'message': {'type': 'string', 'description': 'Present only in the no-test case'}, 'isPublic': {'type': 'boolean', 'description': 'Whether this test is publicly visible'}, 'testType': {'enum': ['url', 'html_paste'], 'type': 'string', 'description': 'The type of the test run'}, 'createdAt': {'type': 'string', 'description': 'ISO 8601 instant this snapshot was created'}, 'expiresAt': {'type': ['string', 'null'], 'description': 'ISO 8601 instant this snapshot will expire'}, 'updatedAt': {'type': 'string', 'description': 'ISO 8601 instant this snapshot was last updated'}, 'shareableTid': {'type': ['string', 'null'], 'description': 'Public share ID, non-null when shareable'}, 'analysisSummary': {'type': 'object', 'properties': {'timestamp': {'type': 'string', 'description': 'ISO 8601 instant of the analysis'}, 'totalIssues': {'type': 'integer', 'description': 'Total open issues across all categories'}, 'overallScore': {'type': 'number', 'description': 'Overall GEO visibility score (0-100)'}, 'categoryScores': {'type': 'object', 'properties': {'nojs': {'type': 'number', 'description': 'No-JS rendering score (0-100)'}, 'schema': {'type': 'number', 'description': 'schema.org markup score (0-100)'}, 'social': {'type': 'number', 'description': 'Social tags score (0-100)'}, 'headings': {'type': 'number', 'description': 'Heading structure score (0-100)'}, 'semantic': {'type': 'number', 'description': 'Semantic HTML5 score (0-100)'}, 'javascript': {'type': 'number', 'description': 'JavaScript dependency score (0-100)'}, 'accessibility': {'type': 'number', 'description': 'Accessibility score (0-100)'}}, 'description': 'Score per analysis category (0-100)'}, 'jsDependencySource': {'enum': ['measured', 'estimated', 'unavailable'], 'type': 'string', 'description': 'How the JS dependency score was derived'}, 'categoryIssueCounts': {'type': 'object', 'properties': {'nojs': {'type': 'integer', 'description': 'Number of open No-JS rendering issues'}, 'schema': {'type': 'integer', 'description': 'Number of open schema.org markup issues'}, 'social': {'type': 'integer', 'description': 'Number of open social tag issues'}, 'headings': {'type': 'integer', 'description': 'Number of open heading structure issues'}, 'semantic': {'type': 'integer', 'description': 'Number of open semantic HTML5 issues'}, 'javascript': {'type': 'integer', 'description': 'Number of open JavaScript dependency issues'}, 'accessibility': {'type': 'integer', 'description': 'Number of open accessibility issues'}}, 'description': 'Open issue count per analysis category'}}, 'description': 'Aggregate scores for this test'}, 'findingSentence': {'type': ['string', 'null'], 'description': 'Pre-generated natural language verdict for this snapshot'}}, '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 }.'}
gvt_get_prompt
Render a prompt workflow
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.
読み取り専用 冪等
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['name'], 'properties': {'name': {'type': 'string', 'description': 'Prompt name from gvt_list_prompts, e.g. gvt_setup_domain_monitoring.'}, 'arguments': {'type': 'object', 'description': 'Argument values for the prompt, keyed by argument name (e.g. {"domain": "example.com", "frequency": "weekly"}). Omit optional arguments to use their defaults.', 'additionalProperties': {'type': 'string'}}}}
出力スキーマ
{'type': 'object', 'properties': {'name': {'type': 'string', 'description': 'The prompt name that was rendered'}, 'text': {'type': 'string', 'description': 'Fully interpolated instruction text referencing GVT tools by name'}, 'arguments': {'type': 'object', 'description': 'Effective arguments after binding defaults'}, 'description': {'type': 'string', 'description': 'The prompt catalog description'}}}
gvt_get_score_trend
Get score trend
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.<domain>, 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.
読み取り専用 外部アクセスあり 冪等
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'url': {'type': 'string', 'description': 'Single URL scope (XOR with domain).'}, 'limit': {'type': 'integer', 'default': 25, 'maximum': 100, 'description': 'Cap on returned records in domain mode (max 100, default 25).'}, 'domain': {'type': 'string', 'description': 'Domain scope — matches the domain, www.<domain>, and subdomains (XOR with url).'}, 'offset': {'type': 'integer', 'default': 0, 'minimum': 0, 'description': 'Number 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.'}}}
出力スキーマ
{'type': 'object', 'properties': {'url': {'type': ['string', 'null'], 'description': 'The compared URL in url mode, else null'}, 'limit': {'type': 'integer', 'description': 'Max records per page in domain mode'}, 'scope': {'enum': ['url', 'domain'], 'type': 'string', 'description': 'Which mode the comparison ran in'}, 'ttlMs': {'type': 'integer', 'description': 'Suggested client cache lifetime in milliseconds'}, 'domain': {'type': ['string', 'null'], 'description': 'The compared domain in domain mode, else null'}, 'offset': {'type': 'integer', 'description': 'Row offset applied to this page'}, 'trends': {'type': 'array', 'items': {'type': 'object', 'properties': {'url': {'type': 'string', 'description': 'The URL this trend row describes'}, 'deltas': {'type': ['object', 'null'], 'properties': {'overall': {'type': ['number', 'null'], 'description': 'Overall score change, latest minus baseline'}, 'categories': {'type': 'object', 'properties': {'nojs': {'type': 'number', 'description': 'No-JS rendering score (0-100)'}, 'schema': {'type': 'number', 'description': 'schema.org markup score (0-100)'}, 'social': {'type': 'number', 'description': 'Social tags score (0-100)'}, 'headings': {'type': 'number', 'description': 'Heading structure score (0-100)'}, 'semantic': {'type': 'number', 'description': 'Semantic HTML5 score (0-100)'}, 'javascript': {'type': 'number', 'description': 'JavaScript dependency score (0-100)'}, 'accessibility': {'type': 'number', 'description': 'Accessibility score (0-100)'}}, 'description': 'Per-category score change, latest minus baseline'}}, 'description': 'Latest minus baseline'}, 'latest': {'type': ['object', 'null'], 'properties': {'tid': {'type': 'string', 'description': 'Test ID of this snapshot'}, 'createdAt': {'type': 'string', 'description': 'ISO 8601 instant of this snapshot'}, 'overallScore': {'type': ['number', 'null'], 'description': 'Overall GEO visibility score (0-100), null when the test failed'}, 'categoryScores': {'type': 'object', 'properties': {'nojs': {'type': 'number', 'description': 'No-JS rendering score (0-100)'}, 'schema': {'type': 'number', 'description': 'schema.org markup score (0-100)'}, 'social': {'type': 'number', 'description': 'Social tags score (0-100)'}, 'headings': {'type': 'number', 'description': 'Heading structure score (0-100)'}, 'semantic': {'type': 'number', 'description': 'Semantic HTML5 score (0-100)'}, 'javascript': {'type': 'number', 'description': 'JavaScript dependency score (0-100)'}, 'accessibility': {'type': 'number', 'description': 'Accessibility score (0-100)'}}, 'description': 'Score per analysis category (0-100)'}}, 'description': 'One test snapshot: tid, createdAt, overallScore, categoryScores'}, 'baseline': {'type': ['object', 'null'], 'properties': {'tid': {'type': 'string', 'description': 'Test ID of this snapshot'}, 'createdAt': {'type': 'string', 'description': 'ISO 8601 instant of this snapshot'}, 'overallScore': {'type': ['number', 'null'], 'description': 'Overall GEO visibility score (0-100), null when the test failed'}, 'categoryScores': {'type': 'object', 'properties': {'nojs': {'type': 'number', 'description': 'No-JS rendering score (0-100)'}, 'schema': {'type': 'number', 'description': 'schema.org markup score (0-100)'}, 'social': {'type': 'number', 'description': 'Social tags score (0-100)'}, 'headings': {'type': 'number', 'description': 'Heading structure score (0-100)'}, 'semantic': {'type': 'number', 'description': 'Semantic HTML5 score (0-100)'}, 'javascript': {'type': 'number', 'description': 'JavaScript dependency score (0-100)'}, 'accessibility': {'type': 'number', 'description': 'Accessibility score (0-100)'}}, 'description': 'Score per analysis category (0-100)'}}, 'description': 'One test snapshot: tid, createdAt, overallScore, categoryScores'}, 'testCount': {'type': 'integer', 'description': 'Total tests ever run for this URL'}, 'isSameTest': {'type': 'boolean', 'description': 'True when baseline and latest are the same test (no movement yet)'}}}, 'description': 'One row per matched URL, baseline vs latest with deltas'}, 'compare': {'type': ['object', 'null'], 'description': 'Comparison window settings used'}, 'hasMore': {'type': 'boolean', 'description': 'True when more pages exist'}, 'returned': {'type': 'integer', 'description': 'Records in this page'}, 'urlCount': {'type': 'integer', 'description': 'Total matched URLs before pagination'}, 'truncated': {'type': 'boolean', 'deprecated': True, 'description': 'Deprecated. Use `hasMore` instead.'}, 'nextOffset': {'type': ['integer', 'null'], 'description': 'Offset for the next page, null on the last page'}, 'windowSummary': {'type': ['object', 'null'], 'description': 'Summary of window comparison results'}, 'includeSubdomains': {'type': 'boolean', 'description': 'Whether subdomains were included in the domain search'}}, 'description': 'Baseline vs latest comparison with pre-computed deltas, scoped to one URL or a whole domain'}
gvt_get_test_results
Get test results
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.
読み取り専用 外部アクセスあり 冪等
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['tid'], 'properties': {'tid': {'type': 'string', 'description': 'Opaque 8-character hash ID returned by gvt_run_visibility_test or gvt_list_tests. Not an integer.'}, 'detail': {'enum': ['summary', 'full'], 'type': 'string', '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).'}}}
出力スキーマ
{'type': 'object', 'properties': {'tid': {'type': 'string', 'description': 'The test ID that was polled'}, 'url': {'type': ['string', 'null'], 'description': 'The URL that was analyzed'}, 'detail': {'enum': ['summary'], 'type': 'string', 'description': 'Present with value "summary" when detail=summary was requested; omitted from full responses so existing callers see no change'}, 'status': {'enum': ['pending', 'processing', 'completed', 'failed'], 'type': 'string', 'description': 'Pending and running mean poll again; completed means full results are present'}, 'results': {'type': 'array', 'items': {'type': 'object', 'properties': {'score': {'type': 'number', 'description': 'Category score (0-100), present in summary mode when the category reports one'}, 'issues': {'type': 'array', '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)'}, 'analysisType': {'enum': ['heading', 'semantic', 'accessibility', 'schema', 'javascript', 'nojs', 'social'], 'type': 'string', 'description': 'Which analysis category this record holds'}}}, 'description': '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.'}, 'isPublic': {'type': ['boolean', 'null'], 'description': 'Whether this test result is publicly accessible'}, 'testType': {'enum': ['url', 'html_paste'], 'type': 'string', 'description': 'Type of test performed (e.g., URL or direct HTML paste)'}, 'createdAt': {'type': 'string', 'description': 'ISO 8601 instant of test creation'}, 'expiresAt': {'type': ['string', 'null'], 'description': 'ISO 8601 instant when this test session and its results will expire and be deleted'}, 'updatedAt': {'type': 'string', 'description': 'ISO 8601 instant of the last update to this test session'}, 'shareableTid': {'type': ['string', 'null'], 'description': '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.'}, 'analysisSummary': {'type': 'object', 'properties': {'timestamp': {'type': 'string', 'description': 'ISO 8601 instant of the analysis'}, 'totalIssues': {'type': 'integer', 'description': 'Total open issues across all categories'}, 'overallScore': {'type': 'number', 'description': 'Overall GEO visibility score (0-100)'}, 'categoryScores': {'type': 'object', 'properties': {'nojs': {'type': 'number', 'description': 'No-JS rendering score (0-100)'}, 'schema': {'type': 'number', 'description': 'schema.org markup score (0-100)'}, 'social': {'type': 'number', 'description': 'Social tags score (0-100)'}, 'headings': {'type': 'number', 'description': 'Heading structure score (0-100)'}, 'semantic': {'type': 'number', 'description': 'Semantic HTML5 score (0-100)'}, 'javascript': {'type': 'number', 'description': 'JavaScript dependency score (0-100)'}, 'accessibility': {'type': 'number', 'description': 'Accessibility score (0-100)'}}, 'description': 'Score per analysis category (0-100)'}, 'jsDependencySource': {'enum': ['measured', 'estimated', 'unavailable'], 'type': 'string', 'description': 'How the JS dependency score was derived'}, 'categoryIssueCounts': {'type': 'object', 'properties': {'nojs': {'type': 'integer', 'description': 'Number of open No-JS rendering issues'}, 'schema': {'type': 'integer', 'description': 'Number of open schema.org markup issues'}, 'social': {'type': 'integer', 'description': 'Number of open social tag issues'}, 'headings': {'type': 'integer', 'description': 'Number of open heading structure issues'}, 'semantic': {'type': 'integer', 'description': 'Number of open semantic HTML5 issues'}, 'javascript': {'type': 'integer', 'description': 'Number of open JavaScript dependency issues'}, 'accessibility': {'type': 'integer', 'description': 'Number of open accessibility issues'}}, 'description': 'Open issue count per analysis category'}}, 'description': 'Aggregate scores for one test session'}, 'findingSentence': {'type': ['string', 'null'], 'description': 'Pre-generated natural language verdict; use as the primary summary'}}, 'description': '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.'}
gvt_list_baselines
List baselines (batch)
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.
読み取り専用 外部アクセスあり 冪等
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['urls'], 'properties': {'urls': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 100, 'minItems': 1, 'description': 'Array of URLs to look up (max 100).'}}}
出力スキーマ
{'type': 'object', 'properties': {'found': {'type': 'integer', 'description': 'URLs that had at least one test'}, 'ttlMs': {'type': 'integer', 'description': 'Suggested client cache lifetime in milliseconds'}, 'results': {'type': 'array', 'items': {'type': 'object', 'properties': {'url': {'type': 'string', 'description': 'The URL this record describes'}, 'oldest': {'type': ['object', 'null'], 'properties': {'tid': {'type': 'string', 'description': 'Test ID of this snapshot'}, 'createdAt': {'type': 'string', 'description': 'ISO 8601 instant of this snapshot'}, 'overallScore': {'type': ['number', 'null'], 'description': 'Overall GEO visibility score (0-100), null when the test failed'}, 'categoryScores': {'type': 'object', 'properties': {'nojs': {'type': 'number', 'description': 'No-JS rendering score (0-100)'}, 'schema': {'type': 'number', 'description': 'schema.org markup score (0-100)'}, 'social': {'type': 'number', 'description': 'Social tags score (0-100)'}, 'headings': {'type': 'number', 'description': 'Heading structure score (0-100)'}, 'semantic': {'type': 'number', 'description': 'Semantic HTML5 score (0-100)'}, 'javascript': {'type': 'number', 'description': 'JavaScript dependency score (0-100)'}, 'accessibility': {'type': 'number', 'description': 'Accessibility score (0-100)'}}, 'description': 'Score per analysis category (0-100)'}}, 'description': 'One test snapshot: tid, createdAt, overallScore, categoryScores'}}}, 'description': 'One entry per requested URL, in request order'}, 'requested': {'type': 'integer', 'description': 'Number of URLs requested'}}, 'description': 'Oldest baseline snapshots for a batch of URLs (up to 100)'}
gvt_list_prompts
List prompt workflows
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.
読み取り専用 冪等
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {}}
出力スキーマ
{'type': 'object', 'properties': {'ttlMs': {'type': 'integer', 'description': 'Suggested client cache lifetime in milliseconds'}, 'prompts': {'type': 'array', 'items': {'type': 'object', 'properties': {'name': {'type': 'string', 'description': 'Prompt name for gvt_get_prompt'}, 'title': {'type': 'string', 'description': 'Human-readable display name'}, 'arguments': {'type': 'array', 'items': {'type': 'object', 'properties': {'name': {'type': 'string', 'description': 'Argument name'}, 'required': {'type': 'boolean', 'description': 'True when the argument must be supplied'}, 'description': {'type': 'string', 'description': 'What the argument controls'}}}, 'description': 'Arguments the prompt accepts'}, 'description': {'type': 'string', 'description': 'What the prompt workflow does'}}}, 'description': 'The prompt workflow catalog'}, 'promptCount': {'type': 'integer', 'description': 'Number of prompt workflows in the catalog'}}}
gvt_list_schedules
List schedules
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.
読み取り専用 外部アクセスあり 冪等
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'limit': {'type': 'integer', 'default': 25, 'maximum': 100, 'minimum': 1, 'description': 'The maximum number of schedules requested for this page.'}, 'domain': {'type': 'string', 'description': 'Filter to schedules matching this domain substring.'}, 'offset': {'type': 'integer', 'default': 0, 'minimum': 0, 'description': 'The number of skipped items from the beginning of the result set.'}, 'status': {'enum': ['active', 'paused', 'completed'], 'type': 'string', 'description': 'Filter by the derived overall state of the schedule.'}, 'frequency': {'enum': ['daily', 'weekly', 'monthly', 'once'], 'type': 'string', 'description': 'Filter by repetition interval.'}, 'sortDirection': {'enum': ['asc', 'desc'], 'type': 'string', 'default': 'desc', 'description': 'Sort order by creation time; desc is newest first.'}, 'includeSubdomains': {'type': 'boolean', 'default': True, 'description': 'Whether subdomains should be included in the domain filter match.'}, 'includeCompletedOnce': {'type': 'boolean', 'default': False, 'description': 'Whether 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.'}}}
出力スキーマ
{'type': 'object', 'properties': {'limit': {'type': 'integer', 'description': 'Page size applied to this response'}, 'total': {'type': 'integer', 'description': 'Total schedules matching the filters, across all pages'}, 'domain': {'type': ['string', 'null'], 'description': 'The applied domain filter, null when unfiltered'}, 'offset': {'type': 'integer', 'description': 'Offset applied to this response'}, 'status': {'type': ['string', 'null'], 'description': 'The applied status filter, null when unfiltered'}, 'hasMore': {'type': 'boolean', 'description': 'True when more results exist beyond this page'}, 'frequency': {'type': ['string', 'null'], 'description': 'The applied frequency filter, null when unfiltered'}, 'schedules': {'type': 'array', 'items': {'type': 'object', 'properties': {'url': {'type': 'string', 'description': 'The monitored URL'}, 'schid': {'type': 'string', 'description': 'Opaque 8-character schedule identifier, accepted by the gvt_schedule_test pause/resume/cancel/change_frequency modes'}, 'status': {'enum': ['active', 'paused', 'completed'], 'type': 'string', 'description': 'Derived overall state; cancelled schedules are deleted outright and never appear here'}, 'isPaused': {'type': 'boolean', 'description': 'True when the schedule is paused; a paused schedule retains its schid and its nextRunAt'}, 'wpPostId': {'type': ['string', 'null'], 'description': 'WordPress post ID when the schedule was created from the WordPress plugin, null otherwise'}, 'createdAt': {'type': 'string', 'description': 'ISO 8601 instant the schedule was created'}, 'frequency': {'enum': ['daily', 'weekly', 'monthly', 'once'], 'type': 'string', 'description': 'How often the test recurs; once is a one-off scheduled run'}, 'lastRunAt': {'type': ['string', 'null'], 'description': 'ISO 8601 instant of the most recent completed run, null when it has not run yet'}, 'nextRunAt': {'type': ['string', 'null'], 'description': 'ISO 8601 instant of the next queued run. Retained while paused (it fires on resume); null for completed one-off runs or when nothing is scheduled yet'}, 'updatedAt': {'type': ['string', 'null'], 'description': 'ISO 8601 instant of the most recent schedule change, null when never modified'}, 'autoPauseReason': {'type': ['string', 'null'], 'description': 'Reason the schedule was automatically paused, null when not auto-paused'}, 'consecutiveFailureCount': {'type': 'integer', 'description': 'Number of consecutive failed runs; a high count precedes auto-pause'}}}, 'description': 'One entry per schedule, newest first by creation time'}, 'nextOffset': {'type': ['integer', 'null'], 'description': 'Offset for the next page, null when hasMore is false'}, 'includeSubdomains': {'type': 'boolean', 'description': 'The applied subdomain-inclusion setting'}, 'allowedFrequencies': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Frequencies the caller may set when creating schedules'}, 'maxActiveSchedules': {'type': 'integer', 'description': "The caller's cap on active schedules; add mode enforces this limit"}, 'includeCompletedOnce': {'type': 'boolean', 'description': 'Whether completed one-off rows were included in this response'}}, 'description': "Paginated roster of the caller's monitoring schedules with applied filters echoed back."}
gvt_list_sitemap_urls
List sitemap URLs
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).
読み取り専用 外部アクセスあり 冪等
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['url'], 'properties': {'url': {'type': 'string', 'description': 'The target website URL or an explicit sitemap .xml URL.'}, 'sort': {'enum': ['significance', 'lastmod', 'alphabetical', 'document'], 'type': 'string', 'default': 'significance', 'description': "How to sort the discovered URLs. 'significance' uses SEO heuristics."}, 'limit': {'type': 'integer', 'default': 10, 'maximum': 500, 'minimum': 1, 'description': 'Maximum number of URLs to return (default 10).'}, 'exclude': {'type': 'array', 'items': {'type': 'string'}, 'description': "Wildcard patterns to reject (e.g., '*archive*')."}, 'include': {'type': 'array', 'items': {'type': 'string'}, 'description': "Wildcard patterns to require (e.g., '*blog*'). Only '*' wildcards are supported."}, 'legalPages': {'enum': ['include', 'exclude', 'only'], 'type': 'string', 'default': 'include', 'description': 'Tri-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.'}, 'excludeTested': {'type': 'boolean', 'default': False, 'description': 'If true, omits URLs the user has already tested.'}, 'excludeScheduled': {'type': 'boolean', 'default': False, 'description': 'If true, omits URLs currently in the testing queue.'}, 'excludeDisallowed': {'type': 'boolean', 'default': False, 'description': 'If true, silently drops URLs that are blocked by robots.txt.'}}}
出力スキーマ
{'type': 'object', 'properties': {'sort': {'enum': ['significance', 'lastmod', 'alphabetical', 'document'], 'type': 'string', 'description': 'The sort actually applied to the results'}, 'urls': {'type': 'array', 'items': {'type': 'object', 'properties': {'url': {'type': 'string', 'description': 'The discovered URL'}, 'lastmod': {'type': ['string', 'null'], 'description': 'Last-modified timestamp from the sitemap, when present'}, 'priority': {'type': ['number', 'null'], 'description': 'Sitemap priority hint, when present'}, 'legalPage': {'type': 'boolean', 'description': 'True when detected as legal/policy boilerplate'}, 'pathDepth': {'type': 'integer', 'description': 'Path depth from the site root (1 = homepage)'}, 'changefreq': {'type': ['string', 'null'], 'description': 'Sitemap change frequency hint, when present'}, 'alreadyTested': {'type': 'boolean', 'description': 'True when the caller has an existing test for this URL'}, 'alreadyScheduled': {'type': 'boolean', 'description': 'True when this URL is already in the testing queue'}, 'significanceScore': {'type': 'number', 'description': 'SEO significance score used for the default ranking'}, 'disallowedByRobots': {'type': 'boolean', 'description': 'True when robots.txt disallows crawling this URL'}}}, 'description': 'Discovered URLs, ranked per the sort setting'}, 'limit': {'type': 'integer', 'description': 'Effective result cap'}, 'errors': {'type': 'array', 'items': {'type': 'object'}, 'description': 'Per-sitemap fetch or parse failures; non-empty means discovery was partial'}, 'hasMore': {'type': 'boolean', 'description': 'True when the filtered set was cut short by the limit'}, 'matched': {'type': 'integer', 'description': 'URLs remaining after include/exclude and legalPages filters'}, 'returned': {'type': 'integer', 'description': 'URLs actually returned after the limit'}, 'truncated': {'type': 'boolean', 'description': 'True if the underlying sitemap parser hit its 5000-URL cap during fetching.'}, 'legalPages': {'enum': ['include', 'exclude', 'only'], 'type': 'string', 'description': 'The legal-page filter actually applied'}, 'bulkUrlLimit': {'type': 'integer', 'description': "How many of these URLs the caller's tier permits in one batch-analyze call."}, 'requestedUrl': {'type': 'string', 'description': 'The URL or sitemap URL that was resolved'}, 'sitemapCount': {'type': 'integer', 'description': 'Number of sitemaps parsed'}, 'robotsTxtFound': {'type': 'boolean', 'description': 'Whether a robots.txt was found and consulted'}, 'legalPagesFound': {'type': 'integer', 'description': 'How many of the URLs discovered across all sitemaps were detected as legal/policy boilerplate, counted BEFORE any filtering or limiting is applied.'}, 'totalDiscovered': {'type': 'integer', 'description': 'Raw URL count discovered before filtering'}, 'resolvedSitemaps': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Sitemap URLs actually parsed'}}, 'description': 'Ranked URL discovery from a domain XML sitemaps'}
gvt_list_tests
List tests
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.
読み取り専用 外部アクセスあり 冪等
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'url': {'type': 'string', 'description': 'URL to filter tests by; matched per urlMode (contains by default).'}, 'limit': {'type': 'integer', 'default': 10, 'maximum': 100, 'minimum': 1, 'description': 'Max results to return (default 10, max 100)'}, 'domain': {'type': 'string', 'description': 'Domain to filter tests by, e.g. example.com. Subdomains are included unless includeSubdomains is false.'}, 'offset': {'type': 'integer', 'default': 0, 'minimum': 0, 'description': 'Number 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.'}, 'status': {'enum': ['pending', 'processing', 'completed', 'failed'], 'type': 'string', 'description': 'Test status to filter by: pending, processing, completed, or failed.'}, 'urlMode': {'enum': ['exact', 'contains'], 'type': 'string', 'default': 'contains', 'description': 'How the url filter matches: "exact" for full-URL equality, "contains" for substring match.'}, 'testType': {'enum': ['url', 'html', 'html_paste'], 'type': 'string', 'description': 'Test type to filter by: url, html, or html_paste.'}, 'createdTo': {'type': 'string', 'description': 'Exclusive creation-date upper bound. YYYY-MM-DD (UTC midnight) or full ISO 8601 instant.'}, 'createdFrom': {'type': 'string', 'description': 'Inclusive creation-date lower bound. YYYY-MM-DD (UTC midnight) or full ISO 8601 instant.'}, 'sortDirection': {'enum': ['asc', 'desc'], 'type': 'string', 'default': 'desc', 'description': 'Sort direction by creation date: desc (newest first, default) or asc (oldest first).'}, 'includeSubdomains': {'type': 'boolean', 'default': True, 'description': 'If true (the default), includes tests for subdomains of the given domain. Set false to match the exact domain only.'}}}
出力スキーマ
{'type': 'object', 'properties': {'limit': {'type': 'integer', 'description': 'Page size actually applied'}, 'tests': {'type': 'array', 'items': {'type': 'object', 'description': 'Test session summaries (tid, url, status, analysisSummary, createdAt)'}, 'description': 'The matching test sessions on this page'}, 'total': {'type': 'integer', 'description': 'Total matching tests before pagination'}, 'ttlMs': {'type': 'integer', 'description': 'Suggested client cache lifetime in milliseconds'}, 'domain': {'type': ['string', 'null'], 'description': 'The domain filter actually applied, if any'}, 'offset': {'type': 'integer', 'description': 'Row offset applied to this page'}, 'hasMore': {'type': 'boolean', 'description': 'True when more pages exist'}, 'createdTo': {'type': ['string', 'null'], 'description': 'Effective upper creation-date bound, if any'}, 'nextOffset': {'type': ['integer', 'null'], 'description': 'Offset for the next page, null on the last page'}, 'createdFrom': {'type': ['string', 'null'], 'description': 'Effective lower creation-date bound, if any'}, 'includeSubdomains': {'type': 'boolean', 'description': 'Whether subdomains were included in the domain filter'}}, 'description': 'Filtered, paginated test history, newest first'}
gvt_run_visibility_batch
Run batch tests
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.
外部アクセスあり
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['urls'], 'properties': {'urls': {'type': 'array', 'items': {'type': 'object', 'required': ['url'], 'properties': {'url': {'type': 'string', 'description': 'The URL to analyze'}, 'wpPostId': {'type': 'string', 'description': 'Optional WordPress post ID for association'}, 'addToSchedule': {'type': 'object', 'required': ['frequency'], 'properties': {'frequency': {'enum': ['daily', 'weekly', 'monthly'], 'type': 'string', 'description': 'How often to re-run the test'}}}}}, 'maxItems': 500, 'minItems': 1, 'description': 'Array of URL objects to test (max 500)'}, 'webhookUrl': {'type': 'string', 'description': 'Optional HTTPS URL to receive a batch completion webhook'}}}
出力スキーマ
{'type': 'object', 'properties': {'status': {'enum': ['queued'], 'type': 'string', 'description': 'Always queued at submission time'}, 'batchId': {'type': 'string', 'description': 'UUID for tracking the batch'}, 'totalUrls': {'type': 'integer', 'description': 'URLs accepted into the batch'}, 'webhookSecret': {'type': ['string', 'null'], 'description': 'HMAC secret for verifying the webhook, null when no webhook'}, 'webhookConfigured': {'type': 'boolean', 'description': 'True when a completion webhook URL was supplied'}}, 'description': 'Batch acknowledgement. Poll gvt_get_batch_status with the batchId until status is completed or failed, then retrieve results via gvt_get_test_results.'}
gvt_run_visibility_test
Run a visibility test
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").
外部アクセスあり
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['url'], 'properties': {'url': {'type': 'string', 'description': 'The URL to analyze'}, 'waitForJs': {'type': 'boolean', 'default': True, 'description': 'Wait for JavaScript rendering before analysis. Set to false to skip JS rendering (faster, but may miss dynamically injected content).'}}}
出力スキーマ
{'type': 'object', 'properties': {'tid': {'type': 'string', 'description': '8-character test ID to poll with'}, 'next': {'type': 'object', 'properties': {'tool': {'enum': ['gvt_get_test_results'], 'type': 'string', 'description': 'The tool to call next'}, 'arguments': {'type': 'object', 'properties': {'tid': {'type': 'string', 'description': 'The tid to poll with'}}, 'description': 'Arguments for the next call'}}, 'description': 'The suggested next call'}, 'status': {'enum': ['pending'], 'type': 'string', 'description': 'Always pending at queue time'}, 'message': {'type': 'string', 'description': 'Human-readable acknowledgement with polling guidance'}}, 'description': 'Async acknowledgement. Poll gvt_get_test_results with the returned tid until status is not pending or running.'}
gvt_schedule_test
Manage schedules
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.
破壊的操作あり 外部アクセスあり
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': [], 'properties': {'mode': {'enum': ['add', 'delete', 'reset', 'pause', 'resume', 'cancel', 'change_frequency'], 'type': 'string', 'default': 'add', 'description': 'Schedule operation mode. add/delete/reset operate on URLs (require urls array). pause/resume/cancel/change_frequency operate on a single schedule (require schid).'}, 'urls': {'type': 'array', 'items': {'type': 'object', 'required': [], 'properties': {'url': {'type': 'string', 'description': 'The URL to schedule (required for add mode; optional in delete mode if schid is provided)'}, 'schid': {'type': 'string', 'description': 'Schedule ID (required for delete/reset modes)'}, 'wpPostId': {'type': 'string', 'description': 'Optional WordPress post ID for association'}, 'addToSchedule': {'type': 'object', 'required': ['frequency'], 'properties': {'frequency': {'enum': ['daily', 'weekly', 'monthly'], 'type': 'string', 'description': 'How often to re-run the test'}}}}}, 'minItems': 1, 'description': 'Array of URL/schedule objects. Required for add, delete, and reset modes.'}, 'schid': {'type': 'string', 'description': 'Schedule ID. Required for pause, resume, cancel, and change_frequency modes.'}, 'domain': {'type': 'string', 'description': 'Domain 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.'}, 'frequency': {'enum': ['daily', 'weekly', 'monthly'], 'type': 'string', 'description': 'New frequency for the schedule. Required for change_frequency mode.'}}}
出力スキーマ
{'type': 'object', 'properties': {'success': {'type': 'boolean', 'description': 'True when the requested mode completed'}, 'scheduled': {'type': 'array', 'items': {'type': 'object', 'properties': {'url': {'type': 'string', 'description': 'The URL placed on schedule'}, 'schid': {'type': 'string', 'description': 'Schedule ID for later pause/resume/cancel calls'}, 'wpPostId': {'type': ['string', 'null'], 'description': 'Associated WordPress post ID, when provided'}}}, 'description': 'Schedules now in effect (add/reset modes)'}, 'deletedByUrl': {'type': 'array', 'items': {'type': 'object', 'properties': {'url': {'type': 'string', 'description': 'The URL whose schedules were deleted'}, 'count': {'type': 'integer', 'description': 'Number of schedule entries deleted for this URL'}, 'frequencies': {'type': 'array', 'items': {'enum': ['daily', 'weekly', 'monthly', 'once'], 'type': 'string'}, 'description': 'Frequencies that were removed for this URL'}}}, 'description': 'Per-URL breakdown of deleted schedules (delete mode). Present on delete mode responses, including schid-based deletes; omitted for reset mode.'}, 'deletedCount': {'type': 'integer', 'description': 'Schedule entries removed (delete/reset modes)'}, 'upsertedCount': {'type': 'integer', 'description': 'Schedules created or updated (add/reset modes)'}}, 'description': 'Result varies by mode: add/reset return upsertedCount and scheduled; delete returns deletedCount and deletedByUrl'}
gvt_set_test_visibility
Set test visibility
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.
外部アクセスあり 冪等
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['tid', 'is_public'], 'properties': {'tid': {'type': 'string', 'description': 'The 8-character test ID returned by gvt_run_visibility_test.'}, 'is_public': {'type': 'boolean', 'description': 'true to make the test publicly shareable, false to make it private.'}}}
出力スキーマ
{'type': 'object', 'properties': {'tid': {'type': 'string', 'description': 'The test that was modified'}, 'success': {'type': 'boolean', 'description': 'True when the visibility change was applied'}, 'is_public': {'type': 'boolean', 'description': 'The new public visibility state'}, 'share_url': {'type': ['string', 'null'], 'description': 'Public share URL, present when is_public is true; the recipient needs no authentication. Null when sharing failed or the test is private'}}}
追加
gvt_get_prompt
2026年9月17日12:35
追加
gvt_list_prompts
2026年9月17日12:35
追加
gvt_get_fix
2026年9月17日12:35
追加
gvt_get_knowledge
2026年9月17日12:35
追加
gvt_schedule_test
2026年9月17日12:35
追加
gvt_list_schedules
2026年9月17日12:35
追加
gvt_get_batch_summary
2026年9月17日12:35
追加
gvt_get_batch_status
2026年9月17日12:35
追加
gvt_run_visibility_batch
2026年9月17日12:35
追加
gvt_delete_test
2026年9月17日12:35
追加
gvt_set_test_visibility
2026年9月17日12:35
追加
gvt_list_sitemap_urls
2026年9月17日12:35
追加
gvt_get_score_trend
2026年9月17日12:35
追加
gvt_list_baselines
2026年9月17日12:35
追加
gvt_get_latest
2026年9月17日12:35
追加
gvt_get_baseline
2026年9月17日12:35
追加
gvt_list_tests
2026年9月17日12:35
追加
gvt_get_test_results
2026年9月17日12:35
追加
gvt_run_visibility_test
2026年9月17日12:35