Skip to main content
Glama

indexnow_submit

Submit URLs to search engines for instant indexing using the IndexNow protocol. Supports batch submission of up to 10,000 URLs to Bing, Yandex, Naver, and Seznam.

Instructions

Submit URLs to IndexNow for instant indexing on Bing, Yandex, Naver, Seznam. Supports batch submission of up to 10,000 URLs.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
urlsYesList of URLs to submit (max 10,000)
api_keyYesYour IndexNow API key (any UUID-like string you generate)
hostYesYour website hostname (e.g., example.com)
key_locationNoURL where your API key file is hosted (optional)
enginesNoSearch engines to submit to (default: all)

Implementation Reference

  • The 'indexnow_submit' tool handler, which validates input parameters and calls 'submitToIndexNow' to perform the actual HTTP requests to IndexNow endpoints.
    server.tool(
      "indexnow_submit",
      "Submit URLs to IndexNow for instant indexing on Bing, Yandex, Naver, Seznam. Supports batch submission of up to 10,000 URLs.",
      {
        urls: z.array(z.string().url()).describe("List of URLs to submit (max 10,000)"),
        api_key: z.string().describe("Your IndexNow API key (any UUID-like string you generate)"),
        host: z.string().describe("Your website hostname (e.g., example.com)"),
        key_location: z.string().optional().describe("URL where your API key file is hosted (optional)"),
        engines: z
          .array(z.enum(["bing", "yandex", "naver", "seznam", "indexnow"]))
          .optional()
          .describe("Search engines to submit to (default: all)"),
      },
      async ({ urls, api_key, host, key_location, engines }) => {
        if (urls.length > 10000) {
          return {
            content: [
              {
                type: "text" as const,
                text: "Error: Maximum 10,000 URLs per submission. Split into batches.",
              },
            ],
          };
        }
    
        const results = await submitToIndexNow(urls, api_key, host, key_location, engines);
        const successful = results.filter((r) => r.success).length;
    
        let output = `## IndexNow Submission Results\n\n`;
        output += `**URLs submitted:** ${urls.length}\n`;
        output += `**Engines contacted:** ${results.length}\n`;
        output += `**Successful:** ${successful}/${results.length}\n\n`;
    
        output += `| Engine | Status | Result |\n|--------|--------|--------|\n`;
        for (const r of results) {
          output += `| ${r.engine} | ${r.status} | ${r.success ? "Success" : "Failed"} - ${r.message} |\n`;
        }
    
        if (urls.length <= 10) {
          output += `\n### URLs Submitted\n`;
          for (const url of urls) {
            output += `- ${url}\n`;
          }
        } else {
          output += `\n*${urls.length} URLs submitted (list truncated)*\n`;
        }
    
        return { content: [{ type: "text" as const, text: output }] };
      }
    );
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. Adds valuable operational constraints ('instant indexing', 'up to 10,000 URLs') but omits critical behavioral details: return value format, idempotency guarantees, rate limiting, error handling patterns, or confirmation that this is a non-destructive write operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly constructed sentences. First establishes action and beneficiaries; second provides batch constraint. Zero redundancy, front-loaded with core functionality, appropriately sized for the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for basic invocation given rich input schema, but gaps remain due to missing output schema and annotations. Description should ideally disclose return value structure or success indicators for this external API submission tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, providing detailed parameter documentation (UUID format for api_key, URI format for urls, default behavior for engines). Description reinforces the 10,000 URL limit and lists target engines, but adds minimal semantic depth beyond what the comprehensive schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description provides specific verb ('Submit'), clear resource ('URLs to IndexNow'), and scope ('instant indexing on Bing, Yandex, Naver, Seznam'). Explicitly mentions the 10,000 URL batch limit, distinguishing operational scope from siblings like indexnow_submit_sitemap and google_indexing_submit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies usage context by listing target search engines (Bing, Yandex vs Google), but lacks explicit when-to-use guidance comparing it to sibling indexnow_submit_sitemap or google_indexing_submit. No mention of prerequisites like API key generation (though sibling indexnow_generate_key exists).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/sharozdawa/indexnow-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server