Google Search Console

Live

OAUTH 2.0

SEARCH

Search

Google Search Console gives your agent authenticated access to search analytics, sitemaps, and URL inspection for the properties each user verifies.

  • Per-user credentials: each call uses the actual user's token, never a shared bot.
  • Encrypted per-tenant vault: AES-256, resolved at request time, never in LLM context.
  • Scoped before every call: pre-call scope check, 90-day SIEM-exportable audit chain.
Google Search Console
agent · Acme Q3
Run
Which queries lost the most clicks this month?
S
googlesearchconsole_query_search_analytics
118ms
Search agent
3 queries down sharply. "agent auth" lost 412 clicks, position 4.1 to 8.6. Two others slipped off page one.
Sources: 1 property, Jul 15 to Aug 14
googlesearchconsole
1 property
18:29
Message Claude...

Tools your agent reaches for on Google Search Console, scoped per user.

CALL ANY TOOL
Query search analytics, submit and inspect sitemaps, and run URL inspection against the verified sites the signed-in user owns.
googlesearchconsole_add_site
Add site
Adds a site (property) to the set of the authorized user's sites in Search Console. The site is added with the caller as owner if verification is already established, otherwise it is added as an unverified site pending verification. Requires the webmasters (full-access) scope. NOTE: this API requires siteUrl as a single percent-encoded path segment — Scalekit does not auto-encode path values, so you must pass siteUrl already percent-encoded (replace ':' with %3A and every '/' with %2F). Returns an empty response on success.
Parameters
Name
Type
Required
Description
siteUrl
string
Required
Required. The percent-encoded URL of the site to add, e.g. 'https://www.example.com/' percent-encoded to 'https%3A%2F%2Fwww.example.com%2F', or 'sc-domain:example.com' percent-encoded to 'sc-domain%3Aexample.com'.
googlesearchconsole_delete_site
Delete site
googlesearchconsole_delete_sitemap
Delete sitemap
googlesearchconsole_get_site
Get site
googlesearchconsole_get_sitemap
Get sitemap
googlesearchconsole_inspect_url
Inspect url
googlesearchconsole_list_sitemaps
List sitemaps
googlesearchconsole_list_sites
List sites
googlesearchconsole_query_search_analytics
Query search analytics
googlesearchconsole_submit_sitemap
Submit sitemap
Build your Agent
Same auth pattern across LangChain, OpenAI, Anthropic, and Google ADK.
Python · LlamaIndex
import { ScalekitClient } from "@scalekit-sdk/node";
import { createReactAgent } from "@langchain/langgraph/prebuilt";

const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);

// Google Search Console tools scoped to this user
const { tools } = await sk.tools.listScopedTools("user_123", {
  filter: { connectionNames: ["googlesearchconsole"], toolNames: [
    "googlesearchconsole_add_site",
    "googlesearchconsole_delete_site",
    "googlesearchconsole_delete_sitemap"] },
  pageSize: 100,
});

const agent = createReactAgent({ llm, tools });
await agent.invoke({ messages: [{ role: "user", content: "Is the Salesforce sync healthy?" }] });
import OpenAI from "openai";
import { ScalekitClient } from "@scalekit-sdk/node";

const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);
const openai = new OpenAI();

const { tools } = await sk.tools.listScopedTools("user_123", {
  filter: { connectionNames: ["googlesearchconsole"] }, pageSize: 100,
});

const res = await openai.chat.completions.create({
  model: "gpt-5",
  messages: [{ role: "user", content: "Which data sources are connected?" }],
  tools,
});

// Execute the tool call with the user's vaulted Google Search Console credential
await sk.tools.executeTool(res.choices[0].message.tool_calls[0], "user_123");
import Anthropic from "@anthropic-ai/sdk";
import { ScalekitClient } from "@scalekit-sdk/node";

const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);
const anthropic = new Anthropic();

const { tools } = await sk.tools.listScopedTools("user_123", {
  filter: { connectionNames: ["googlesearchconsole"] }, pageSize: 100,
});

const msg = await anthropic.messages.create({
  model: "claude-sonnet-5",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Pull open Zendesk tickets created this week." }],
  tools,
});

// Tool call runs with the user's vaulted Google Search Console credential
await sk.tools.executeTool(msg.content, "user_123");
import { Agent } from "@google/adk/agents";
import { ScalekitClient } from "@scalekit-sdk/node";

const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);

const { tools } = await sk.tools.listScopedTools("user_123", {
  filter: { connectionNames: ["googlesearchconsole"] }, pageSize: 100,
});

const agent = new Agent({
  name: "googlesearchconsole_agent",
  model: "gemini-2.5-pro",
  instruction: "Work with Google Search Console for the signed-in user.",
  tools,
});

await agent.run("What auth does the Shopify connector need?");
Try these prompts
Paste any prompt into your agent to get started.
Search performance
Copy the prompt
Copied
Which queries lost the most clicks in the last 28 days?
Copy the prompt
Copied
Show me pages that rank between position 5 and 15.
Copy the prompt
Copied
Compare mobile and desktop click-through rate this month.
Indexing
Copy the prompt
Copied
Inspect this URL and tell me if it is indexed.
Copy the prompt
Copied
List the sitemaps submitted for this property.
Copy the prompt
Copied
Submit the updated sitemap and confirm it was accepted.
Site management
Copy the prompt
Copied
List every site I have verified.
Copy the prompt
Copied
Get the details for this property.
Copy the prompt
Copied
Delete the stale sitemap from last year.
SEE HOW AUTH WORKS
Your users connect Search Console once. Their credentials stay vaulted, every call is scope checked, and every inspection is logged.
1
Authorize
Your user connects
Google Search Console
once. We tie it to their identity and the meetings they approved — no shared bot account, no org-wide access
Who:
user ‘A’
when:
Once per user
access:
Limited to user
2
Store
Their
Google Search Console
token lives in a vault scoped to them. User A's meetings are never reachable by an agent acting for user B, even on the same connection
vault:
encrypted
scope:
per-user
tokens:
auto-refreshed
3
Resolve
When your agent calls a
Google Search Console
tool, we fetch the right token server-side. It never touches your agent, never appears in the LLM context, never shows up in your logs
speed:
~40ms
check:
before every call
seen by:
nobody
4
Audit
Every
Google Search Console
tool call is logged — who triggered it, which meeting was fetched, what came back. 90 days of history, tied to the user who authorized it
history:
90 days
export:
SIEM-ready
logged:
every call
Test other agents
See the same per-user auth pattern across other connectors.
GTM and RevOps Teams
Competitive intelligence briefing agent
Scans Gong calls for competitor mentions, matches each one to its Notion battlecard, and DMs every affected rep a single Slack digest per cycle. Every call runs as the PMM who owns the briefing, never a shared bot.
GTM and RevOps Teams
Revenue forecast commentary
Pulls open pipeline from Salesforce and HubSpot, calculates coverage against quota, flags at-risk stages, posts commentary to Slack, and logs every snapshot to Google Sheets.
GTM and RevOps Teams
Deal intelligence agent
Pulls recent Gong calls, scores deal risk with an LLM, cross-references the record in Attio, and DMs each owner their at-risk deals in Slack. Every read is scoped to that rep's own access.
GTM and RevOps Teams
CRM AI agent
Reads the Granola transcript after every call, extracts next steps and updates the HubSpot record, drafts the follow-up in Gmail, and confirms in Slack, all on the rep's own delegated OAuth.
Test other agents
See the same per-user auth pattern across other connectors.
GTM
Competitive intelligence briefing agent
Scan Gong calls for competitor mentions, match each one to its Notion battlecard, and DM every affected rep a single Slack digest.
GTM
Revenue forecast agent
Score pipeline coverage against quota across Salesforce and HubSpot, post forecast commentary to Slack, log snapshots to Sheets.
SALES
Deal intelligence agent
Score Gong call risk with an LLM, cross-reference the Attio record, and DM each owner their at-risk deals in Slack.
GTM
CRM AI agent
Turn each Granola call transcript into a HubSpot record update, a drafted Gmail follow-up, and a Slack recap.
Why Scalekit
Secure your agent's access. Connectors ship in minutes
01.
Shared tokens break per-user analytics
A shared Google Search Console token looks fine in a demo. In production every action looks like one service account, and you cannot tell who wired a source or ran a query. Scalekit resolves the credential of the actual user who triggered the agent, never a shared bot.
// shared token
audit → bot_service_account

// scalekit
audit → user_abc ✓
02.
Authentication is not authorization
03.
Multi-tenancy is architectural
04.
Google Search Console today. Ten connectors tomorrow.
“Our agents act across Salesforce, Gong, Google Drive, and more, on behalf of every customer. Scalekit behind the scenes meant we can keep adding tools without ever rebuilding how credentials or tool calling work.”
Venu Madhav Kattagoni
Head of Engineering / Von
FAQs
Frequently Asked Questions
Can the agent see properties the user has not verified?
No. Search Console evaluates the user's own verification status at request time, so the agent's reach matches the person who triggered it.
Is URL inspection rate limited?
Google rate limits inspection per property. Scalekit surfaces the API error rather than silently retrying, so your agent can back off deliberately.
Can I allow reporting but block sitemap submission?
Yes. Scope the connection to the query and list tools. Submit and delete stay unavailable, enforced before the call.
How many tools does this connector expose?
10, covering sites, sitemaps, URL inspection, and search analytics.
How are credentials isolated between customers?
Per tenant and per user in an encrypted vault, resolved at request time and never placed in LLM context.
Start in your coding agent
Up and running in one command
Install the Scalekit skill in your editor of choice. Connector, auth, tools, prompt, all wired up
Claude Code REPL
/plugin marketplace add scalekit-inc/claude-code-authstack
/plugin install agentkit@scalekit-auth-stack
Cursor Code REPL
# ~/.cursor/mcp.json
{
""mcpServers"": {
""googlesearchconsole"": {
""url"": ""https://mcp.scalekit.com/googlesearchconsole"",
""headers"": { ""Authorization"": ""Bearer $SCALEKIT_TOKEN"" }
}
}
}
Codex Code REPL
# ~/.codex/config.toml
[mcp_servers.googlesearchconsole]
url = ""https://mcp.scalekit.com/googlesearchconsole""
auth_env = ""SCALEKIT_TOKEN""
Copilot Code REPL
# .vscode/mcp.json
{
""servers"": {
""googlesearchconsole"": {
""url"": ""https://mcp.scalekit.com/googlesearchconsole"",
""type"": ""http""
}
}
}