Skip to main content
Glama
isiahw1

mcp-server-bing-webmaster

submit_url

Submit URLs to Bing Webmaster Tools for indexing to improve search visibility and ensure content is crawled promptly.

Instructions

Submit a single URL for indexing.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
site_urlYes
urlYes

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Implementation Reference

  • The complete handler function for the 'submit_url' MCP tool, including registration decorator, input schema via type annotations, and logic to submit a URL to the Bing Webmaster Tools API for indexing.
    @mcp.tool(name="submit_url", description="Submit a single URL for indexing.")
    async def submit_url(
        site_url: Annotated[str, "The URL of the site"],
        url: Annotated[str, "The specific URL to submit"],
    ) -> Dict[str, str]:
        """
        Submit a single URL for indexing.
    
        Args:
            site_url: The URL of the site
            url: The specific URL to submit
    
        Returns:
            Success message
        """
        async with api:
            await api._make_request("SubmitUrl", "POST", {"siteUrl": site_url, "url": url})
            return {"message": f"URL {url} submitted successfully"}
  • The _make_request helper method in BingWebmasterAPI class used by submit_url to perform the actual API call to 'SubmitUrl' endpoint.
    async def _make_request(
        self,
        endpoint: str,
        method: str = "GET",
        json_data: Optional[Dict[str, Any]] = None,
        params: Optional[Dict[str, Any]] = None,
    ) -> Any:
        """Make a request to the Bing API and handle OData responses."""
        if not self.client:
            raise RuntimeError(
                "API client not initialized. Use 'async with api:' context manager."
            )
    
        headers = {"Content-Type": "application/json; charset=utf-8"}
    
        # Build URL with API key
        if "?" in endpoint:
            url = f"{self.base_url}/{endpoint}&apikey={self.api_key}"
        else:
            url = f"{self.base_url}/{endpoint}?apikey={self.api_key}"
    
        # Add additional parameters if provided
        if params:
            for key, value in params.items():
                url += f"&{key}={value}"
    
        try:
            if method == "GET":
                response = await self.client.get(url, headers=headers)
            else:
                response = await self.client.request(
                    method, url, headers=headers, json=json_data
                )
    
            if response.status_code != 200:
                error_text = response.text
                logger.error(f"API error {response.status_code}: {error_text}")
                raise Exception(f"API error {response.status_code}: {error_text}")
    
            data = response.json()
    
            # Handle OData response format
            if "d" in data:
                return data["d"]
            return data
    
        except httpx.TimeoutException:
            logger.error(f"Request timeout for {endpoint}")
            raise Exception("Request timed out")
        except Exception as e:
            logger.error(f"Request failed: {str(e)}")
            raise
Behavior2/5

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

With no annotations provided, the description carries full burden but offers minimal behavioral insight. It states the action is 'submit for indexing' which implies a write operation, but doesn't disclose permissions needed, rate limits, whether the submission is synchronous/asynchronous, or what happens if the URL is already indexed. This leaves significant gaps for a mutation tool.

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?

The description is a single, efficient sentence that gets straight to the point with zero wasted words. It's appropriately sized for a simple tool and front-loads the essential information.

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

Completeness2/5

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

For a mutation tool with no annotations, 0% schema coverage, and two required parameters, the description is insufficient. While an output schema exists (which helps), the description doesn't address key behavioral aspects like what 'indexing' entails, success/failure conditions, or how this differs from similar tools in the context.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate but provides no parameter information. It doesn't explain what 'site_url' versus 'url' parameters represent, their relationship, format requirements, or examples. With two required parameters completely undocumented, this is inadequate.

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

Purpose4/5

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

The description clearly states the action ('submit') and resource ('a single URL for indexing'), making the purpose understandable. It distinguishes from sibling tools like 'submit_url_batch' by specifying 'single URL', but doesn't explicitly differentiate from other submission tools like 'submit_content' or 'submit_sitemap'.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. The description doesn't mention sibling tools like 'submit_url_batch' for multiple URLs, 'fetch_url' for retrieval, or 'submit_content' for other submission types, leaving the agent without contextual usage instructions.

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/isiahw1/mcp-server-bing-webmaster'

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