Search ConsoleFreeFirst-Party Ground TruthRequires Search Console OAuthActive in MCP

Inspect Indexing

inspect_indexing(domain: string, url: string)

Google's own indexing status for one URL: indexed?, canonical Google chose, rich results, last crawl.

Google's authoritative URL inspection result: index verdict, Google-selected canonical vs user-declared canonical, robots.txt status, crawl timestamp, and rich result validation.

Input Parameters

2 arguments
ParameterTypeRequirementDefault / ConstraintsDescription
domainstringrequired
none
A tracked website's primary_domain (e.g. example.com).
urlstringrequired
Exact URL belonging to this verified property
The exact URL to inspect.

Return Envelope (OFE / 1.0)

Open Fact Envelope

Every response adheres to the strict ofe/1.0 envelope schema, returning verified data, typed facts, entity references, and follow-up tool suggestions:

data Payload

Google's authoritative URL inspection result: index verdict, Google-selected canonical vs user-declared canonical, robots.txt status, crawl timestamp, and rich result validation.

coverage & Freshness

Reports returned count vs total items, observation timestamp as_of, and scope notes. Cached in KV for 4 hours.

resources (Dataset Exports)

If a query yields high row counts (e.g. >1,000 queries in Search Console), full unpaginated tables are persisted to R2 and linked as an mcpseo:// URI for follow-up retrieval via export_dataset.

next_actions

Provides suggested follow-up tool calls with pre-filled arguments so your AI agent can navigate from discovery to detailed inspection autonomously.

Emitted Facts & Entities

Knowledge Graph

Typed Facts

Facts emitted in the facts[] array with provenance receipts:

Fact TypeClaim DescriptionEmitted Data Fields
gsc.index_statusGoogle index status: verdict (PASS/FAIL), coverage state, Google canonical, user canonical, last crawl time, and crawler user-agent.
verdictcoverage_staterobots_txt_stateindexing_statepage_fetch_statelast_crawl_timecrawled_asgoogle_canonicaluser_canonical
gsc.rich_resultsRich snippets evaluation (Product, FAQ, Breadcrumbs, Article schema).
verdictdetected_items

Registered Entities

Entities registered in the entities[] array to establish subject relationships:

property

Search Console property.

page

Inspected URL entity.

Request & Response Examples

Live MCP Payloads

Exact JSON schemas transmitted over Model Context Protocol (stdio or HTTP SSE transport):

1. Client Tool Invocation

inspect_indexing request.json
{
  "tool": "inspect_indexing",
  "arguments": {
    "domain": "example.com",
    "url": "https://example.com/blog/mcp-guide"
  }
}

2. Server Envelope Response

inspect_indexing response.json
{
  "schema_version": "ofe/1.0",
  "domain": "gsc",
  "data": {
    "domain": "example.com",
    "url": "https://example.com/blog/mcp-guide",
    "inspectionResultLink": "https://search.google.com/search-console/inspect?resource_id=sc-domain%3Aexample.com&id=..."
  },
  "facts": [
    {
      "type": "gsc.index_status",
      "subject": [
        "urn:page:https%3A%2F%2Fexample.com%2Fblog%2Fmcp-guide",
        "urn:property:ws_12345"
      ],
      "data": {
        "verdict": "PASS",
        "coverage_state": "Submitted and indexed",
        "robots_txt_state": "ALLOWED",
        "indexing_state": "INDEXING_ALLOWED",
        "page_fetch_state": "SUCCESSFUL",
        "last_crawl_time": "2026-09-22T14:15:30Z",
        "crawled_as": "GOOGLEBOT_DESKTOP",
        "google_canonical": "https://example.com/blog/mcp-guide",
        "user_canonical": "https://example.com/blog/mcp-guide"
      },
      "provenance": {
        "source_class": "webmaster_console",
        "method": "searchconsole.urlInspection.index.inspect",
        "confidence": 1,
        "observed_at": "2026-09-24T00:00:00Z",
        "cache_hit": true
      }
    }
  ],
  "entities": [
    {
      "id": "urn:property:ws_12345",
      "kind": "property",
      "label": "Example Prod"
    },
    {
      "id": "urn:page:https%3A%2F%2Fexample.com%2Fblog%2Fmcp-guide",
      "kind": "page",
      "label": "https://example.com/blog/mcp-guide"
    }
  ],
  "coverage": {
    "returned": 2,
    "total": 2,
    "as_of": "2026-09-22T14:15:30Z",
    "scope_note": "Direct inspection API call cached for 4 hours."
  },
  "deltas": [],
  "resources": [],
  "next_actions": []
}

LLM Agent Workflow

Claude & Cursor Integration
Step 1

Prompt Trigger

"Why is https://example.com/blog/mcp-guide not showing up in search results?"
Step 2

Agent Decision & Reasoning

The agent calls inspect_indexing to check whether Googlebot fetched the page, whether robots.txt blocked it, and if Google picked a different canonical URL.

Step 3

Recommended Follow-up Tools

Provenance Guarantees & Error Handling

Reliability
Source Classwebmaster_console
Inspection Methodsearchconsole.urlInspection.index.inspect
OFE Calibration Score1.00 (OFE 1.0 scale)
Cache Duration4 hours

Every fact emitted by Vouched includes source_class, method, observed_at ISO timestamp, and a published confidence score. LLM agents can inspect these citations to distinguish first-party verified facts (e.g. Search Console) from modeled competitor estimates.

Billing & API Keys

Free on every plan: it reads your own Google data, so there's no per-call cost. Works the same when self-hosted.

Connection Required: Requires connecting your Google Search Console property via OAuth. Until it's connected, calls return a connection_required error saying where to connect it (Settings in the dashboard).

Error Conditions

  • ConnectionRequiredError: no Search Console site configured for domain. Add connection via /dashboard/connections.

More Search Console Tools

2 sibling tools
Self-host on GitHub (MIT)Try on Cloud plan