The indexing MCP server for your coding agent
Ask Claude, ChatGPT, Claude Code, Cursor or VS Code which pages Google hasn't indexed and why, then let it notify search engines and queue indexing requests after you ship. The IndexCyborg MCP server is remote and stateless, speaks Streamable HTTP at https://indexcyborg.com/api/mcp, and takes a sign-in from Claude.ai and ChatGPT or the same scoped API keys as the REST API.
1Connect your client
Claude.ai and ChatGPT sign in with your IndexCyborg account, no key needed. Coding agents use an API key: create one in the dashboard under Settings → API keys. Keys look like ic_ followed by 48 hex characters and are shown once.
Claude.ai and ChatGPT
- Claude (web, desktop and mobile): Settings → Connectors → Add custom connector, paste
https://indexcyborg.com/api/mcpand click Connect. ChatGPT: turn on developer mode in Settings, then add an app with the same URL and OAuth authentication. - Sign in to IndexCyborg in the window that opens.
- On the consent screen, choose what the app may do: read, notify and manage are on by default; admin (API keys, removing websites, disconnecting Google) is off unless you tick it. Then click Allow.
- Ask away, for example “Which pages on example.com aren't indexed by Google, and why?” You can disconnect an app at any time in Settings → Connected apps.
Apps connected this way get every tool except the two billing links: plans are bought on the website.
Claude Code
claude mcp add --transport http indexcyborg https://indexcyborg.com/api/mcp \
--header "Authorization: Bearer ic_your_key"Cursor
{
"mcpServers": {
"indexcyborg": {
"url": "https://indexcyborg.com/api/mcp",
"headers": {
"Authorization": "Bearer ${env:INDEXCYBORG_API_KEY}"
}
}
}
}VS Code
{
"inputs": [
{
"type": "promptString",
"id": "indexcyborg-key",
"description": "IndexCyborg API key",
"password": true
}
],
"servers": {
"indexcyborg": {
"type": "http",
"url": "https://indexcyborg.com/api/mcp",
"headers": {
"Authorization": "Bearer ${input:indexcyborg-key}"
}
}
}
}Other clients
{
"mcpServers": {
"indexcyborg": {
"url": "https://indexcyborg.com/api/mcp",
"headers": { "Authorization": "Bearer ic_your_key" }
}
}
}Check your client's documentation for its exact format. It needs remote servers over Streamable HTTP and a custom Authorization header.
236 tools, scoped per key
Everything the dashboard does is a tool. Read tools answer questions. Notify tools queue work, and only for domains you have verified. Manage tools set websites up. Admin tools run the account. A key without the right scope gets a clear insufficient_scope error instead of a silent failure.
| Tool | Scope | What it does |
|---|---|---|
| get_overview | read | The dashboard's Overview across your websites: totals, coverage over the inspected pages, pages needing attention. |
| get_coverage_history | read | Daily index-status snapshots over time, the Overview chart. |
| list_urls | read | The Pages view: the URL inventory filtered by website, status or text, with paging. |
| get_activity | read | The Activity feed: discoveries, notifications, status changes and issues. |
| list_sitemaps | read | A website's sitemaps with status and entry counts. |
| get_job | read | Progress of any queued job: queued, running, completed or failed. |
| list_websites | read | Websites this key can access, with verification, IndexNow and Search Console state. |
| get_indexing_status | read | Google's verbatim URL Inspection result for one URL, or a site-level summary. |
| get_unindexed_pages | read | Pages Google inspected and reports as not indexed. Never includes uninspected pages. |
| get_indexing_issues | read | Open technical and indexing issues, each with the evidence observed. |
| check_technical_seo | read | Latest technical check for a URL (status, robots, canonical, title); a fresh check needs notify. |
| generate_indexing_report | read | Inventory, status breakdown, coverage over the inspected population, open issues. |
| get_google_indexing_requests | read | Today's Request indexing budget, the queue and Search Console's answers. |
| discover_urls | notify | Queues a sitemap discovery scan. Finds URLs; submits nothing. |
| notify_search_engines | notify | Queues an IndexNow notification for up to 1,000 URLs. Accepted is not crawled. |
| request_google_indexing | notify | Queues up to 50 URLs for Request indexing through the Chrome extension, within 10 per property per 24 h. |
| inspect_urls | notify | Queues Search Console URL Inspection for up to 50 URLs. Reads status; requests nothing. |
| run_technical_checks | notify | Queues fresh technical checks (status, redirects, robots, noindex, canonical) for up to 100 URLs. |
| add_website | manage | Connects a website and queues its first sitemap scan. |
| register_urls | manage | Adds on-site URLs the sitemap doesn't list to the inventory. |
| get_website_setup | manage | The DNS record, files and IndexNow key to publish, and which setup steps are done. |
| verify_domain | manage | Checks the DNS TXT record or hosted file and marks the website verified. |
| verify_indexnow_key | manage | Checks the hosted IndexNow key file and turns notifications on. |
| link_search_console_property | manage | Finds and links the Search Console property in your connected Google account. |
| update_monitoring | manage | Turns automatic monitoring on or off and sets the scan interval. |
| add_sitemap | manage | Registers an extra sitemap and queues it for parsing. |
| get_account | admin | Account email, billing and page balance, Google connection, Chrome extension budgets. |
| list_api_keys | admin | Every key on the account: scopes, restriction, last use. Never the secrets. |
| create_api_key | admin | Creates a key, no stronger than the calling key, and returns its secret once. |
| rotate_api_key | admin | Swaps a key's secret; the old one stops working immediately. |
| revoke_api_key | admin | Revokes a key; requests with it fail from then on. |
| delete_api_key | admin | Deletes a key's record. |
| create_checkout_link | admin | Returns a Stripe Checkout link for a plan or page pack. You pay on Stripe. API keys only. |
| create_billing_portal_link | admin | Returns a link to Stripe's customer portal: plan, card, invoices, cancellation. API keys only. |
| disconnect_google | admin | Disconnects your Google account and unlinks every Search Console property. |
| remove_website | admin | Deletes a website and all its tracked data, once the domain is repeated to confirm. |
Keys carry any of four scopes: read, notify, manage and admin. Manage registers and sets up websites; with it, request_google_indexing also adds on-site URLs that aren't in the inventory yet. Admin covers the account: API keys, billing links, disconnecting Google and removing websites. A key can mint or rotate only keys no stronger than itself, and admin tools need a key that isn't limited to specific websites. A key can be limited to specific websites, so an agent working on a client's site sees only that site.
Three things stay with you because only a person can do them: connecting Google on its consent screen, paying on Stripe (the tools only return the link) and installing the Chrome extension.
3The same gates as the dashboard
An agent can't do anything through MCP that you couldn't do by hand. These checks run on every call.
| Gate | What it means for the agent |
|---|---|
| Verified domain | IndexNow notifications and indexing requests are refused until you prove ownership with a DNS TXT record or a hosted HTML file. |
| Verified IndexNow key | notify_search_engines also needs the key file hosted on your site and verified. |
| Google's quotas | 2,000 URL inspections per property per day, 100 of them kept for API and MCP calls. |
| Request indexing cap | 10 requests per property per rolling 24 h, enforced by the API, the database and the extension. |
| Rate limit | 60 requests per minute per key, shared with the REST API. |
4What you can ask
You talk to your agent; it picks the tools. A few requests and the tools they typically lead to.
| You ask | Tools the agent calls |
|---|---|
| “Which pages on example.com aren't indexed, and why?” | get_unindexed_pages, then get_indexing_status per URL |
| “I just shipped /pricing. Tell the search engines.” | notify_search_engines, then request_google_indexing |
| “Is the new docs page blocked by anything?” | check_technical_seo with a fresh check |
| “Write me this week's indexing summary.” | generate_indexing_report |
| “Add example.com and tell me what to publish.” | add_website, then get_website_setup |
| “I published the DNS record. Is the site verified?” | verify_domain, then verify_indexnow_key |
| “Re-check every page that returned an error.” | list_urls, then run_technical_checks |
| “Create a read-only key for our reporting bot.” | create_api_key |
A queued indexing request waits for the Chrome extension, which clicks Request indexing in your own Search Console session. When Google accepts it, the page is in Google's crawl queue: requested, not crawled and not indexed. Your agent reads the answer later with get_google_indexing_requests.
For the wider picture of Search Console and MCP, read our guide to the Google Search Console MCP landscape. There are setup walkthroughs for Claude Code MCP and Cursor MCP, and a worked example of checking indexing status from your coding agent. Prefer plain HTTP? The same operations are in the REST API.
Free tools, no account needed
5Frequently asked questions
- What is an indexing MCP server?
- An MCP server that gives an AI agent tools for search indexing: reading a site's index status, finding unindexed pages and their reasons, notifying search engines and queueing indexing requests. IndexCyborg's runs remotely over Streamable HTTP and uses the same data and gates as its dashboard.
- Which clients can connect to the IndexCyborg MCP server?
- Claude (web, desktop and mobile) and ChatGPT connect with OAuth: you sign in to IndexCyborg and choose the permissions. Coding agents such as Claude Code, Cursor and VS Code, and any client that supports remote servers over Streamable HTTP with a custom Authorization header, connect with an API key. The server is stateless, so no session setup is needed.
- Can my coding agent get pages indexed through MCP?
- No tool can force Google to index a page, and neither can an agent. Through MCP it can notify the IndexNow engines, queue pages for Search Console's Request indexing and read what Google reports back. Accepted, requested, crawled and indexed are reported as separate states.
- Is the MCP server different from the REST API?
- They share the API keys, verification gates and rate limit, and the MCP server covers everything the dashboard does, including website setup and account tools that the REST API doesn't have. MCP suits agents that pick tools themselves; the REST API suits scripts, CI jobs and your own automation.
- Does it use the Google Indexing API?
- No. Index status comes from Search Console's URL Inspection API for properties you link. Indexing requests go through the Chrome extension, which clicks Request indexing in your own Search Console session.
Give your agent the indexing workflow
Create an account, verify a website, generate an API key and paste one of the configs above. Starter is $5 a month for one website, Pro is $15 a month for every website you run, or pay once from 1,000 pages for $5. Every plan has the whole workflow, the REST API and the MCP server.
Billing isn't live yet. During early access nothing is charged and every account has Pro limits.