Build and validate IndexNow payloads, check key files, and diff sitemaps into a submission list.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Validates a key and URL list against the IndexNow spec and returns the exact JSON POST body, the endpoint, a ready-to-run curl command, and the reason for every URL it dropped. Enforces the same-host rule, the 10000-URL batch limit, https/http consistency, fragment stripping and de-duplication.
The IndexNow key, 8-128 characters of [a-zA-Z0-9-].
Absolute URLs to submit. All must be on the same host.
The host, e.g. example.com. Inferred from the first URL if omitted.
indexnow (default), bing, yandex, seznam or naver.
Optional URL of the key file if it is not at https://host/<key>.txt.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Validates a key and URL list against the IndexNow spec and returns the exact JSON POST body, the endpoint, a ready-to-run curl command, and the reason for every URL it dropped. Enforces the same-host rule, the 10000-URL batch limit, https/http consistency, fragment stripping and de-duplication.
| Argument | Type | Description |
|---|---|---|
| key* | string | The IndexNow key, 8-128 characters of [a-zA-Z0-9-]. |
| host | string | The host, e.g. example.com. Inferred from the first URL if omitted. |
| engine | string | indexnow (default), bing, yandex, seznam or naver. |
| urlList* | array | Absolute URLs to submit. All must be on the same host. |
| keyLocation | string | Optional URL of the key file if it is not at https://host/<key>.txt. |
{
"type": "object",
"required": [
"key",
"urlList"
],
"properties": {
"key": {
"type": "string",
"description": "The IndexNow key, 8-128 characters of [a-zA-Z0-9-]."
},
"host": {
"type": "string",
"description": "The host, e.g. example.com. Inferred from the first URL if omitted."
},
"engine": {
"type": "string",
"description": "indexnow (default), bing, yandex, seznam or naver."
},
"urlList": {
"type": "array",
"items": {
"type": "string"
},
"description": "Absolute URLs to submit. All must be on the same host."
},
"keyLocation": {
"type": "string",
"description": "Optional URL of the key file if it is not at https://host/<key>.txt."
}
}
}Parses two sitemap documents (urlset XML, sitemapindex XML, or a newline-delimited URL list) and reports added, removed and lastmod-changed URLs. Returns only the URLs worth submitting to IndexNow. Pass a key to also get the finished, validated POST body.
| Argument | Type | Description |
|---|---|---|
| key | string | Optional IndexNow key; supplying it returns a ready-to-send payload. |
| engine | string | Optional target endpoint name. |
| keyLocation | string | Optional key file URL. |
| current_sitemap* | string | The current sitemap document. |
| include_removed | boolean | Include removed URLs in the submission list. Default false. |
| previous_sitemap* | string | The earlier sitemap document. |
{
"type": "object",
"required": [
"previous_sitemap",
"current_sitemap"
],
"properties": {
"key": {
"type": "string",
"description": "Optional IndexNow key; supplying it returns a ready-to-send payload."
},
"engine": {
"type": "string",
"description": "Optional target endpoint name."
},
"keyLocation": {
"type": "string",
"description": "Optional key file URL."
},
"current_sitemap": {
"type": "string",
"description": "The current sitemap document."
},
"include_removed": {
"type": "boolean",
"description": "Include removed URLs in the submission list. Default false."
},
"previous_sitemap": {
"type": "string",
"description": "The earlier sitemap document."
}
}
}Checks an IndexNow key against the protocol schema (length, character set) and, given a host, returns the exact URL the key file must be served from, the exact contents it must have, and the curl command to verify it. Most 403 rejections are a key file that returns an HTML 404 page with a 200 status.
| Argument | Type | Description |
|---|---|---|
| key* | string | The key to check. |
| host | string | Optional host, e.g. example.com, to compute the key file URL. |
{
"type": "object",
"required": [
"key"
],
"properties": {
"key": {
"type": "string",
"description": "The key to check."
},
"host": {
"type": "string",
"description": "Optional host, e.g. example.com, to compute the key file URL."
}
}
}