Skip to main content
Glama
zizzfizzix

Bing Webmaster Tools MCP Server

by zizzfizzix

mcp-server-bwt

Bing ウェブマスター ツール用の MCP サーバー

このMCP(モデルコンテキストプロトコル)サーバーは、ClaudeやCursorなどのサポートされているAIアシスタントとBingウェブマスターツールAPI間の橋渡しを提供します。bing bing-webmaster-tools経由で利用可能なBingウェブマスターツールのすべての機能をMCPツールとして公開し、AIアシスタントがBingウェブマスターツールアカウントと連携できるようにします。

クロードとの使用例

設定が完了すると、Claude で MCP サーバーを使用して Bing ウェブマスター ツール アカウントとやり取りできるようになります。プロンプトの例を以下に示します。

  • 「Bingウェブマスターツールで確認済みのサイトをすべて一覧表示する」

  • 「ホームページをインデックスに登録してください」

  • 「ウェブサイトのトラフィック統計を取得する」

  • 「サイトのクロールに関する問題がないか確認する」

  • 「「私の商品」のキーワード統計情報を取得する」

Claude は適切な MCP ツールを使用してお客様のリクエストを満たします。

Related MCP server: mcp-server-bing-webmaster

要件

インストール

プロジェクトの依存関係をインストールするには、次のコマンドを実行します。

make install

MCP クライアント構成例 (Claude、Cursor など)

Claude またはその他の MCP クライアントの場合、設定でサーバーを構成できます。

{
  "mcpServers": {
    "bwtServer": {
      "command": "/PATH/TO/mcp-server-bwt/.venv/bin/python",
      "args": ["/PATH/TO/mcp-server-bwt/mcp_server_bwt/main.py"],
      "env": {
        "BING_WEBMASTER_API_KEY": "YOUR_API_KEY_HERE"
      }
    }
  }
}

利用可能なツール

サーバーは、次の Bing Webmaster Tools API 機能を提供します (詳細については、 API ドキュメントを参照してください)。

サイト管理

  • get_sites : Bing Webmaster Tools アカウントで確認済みのサイトをすべて一覧表示します

  • add_site : アカウントに新しいサイトを追加する

  • verify_site : サイトの所有権を確認する

  • remove_site : アカウントからサイトを削除する

  • get_site_roles : 特定のサイトのロールを取得する

  • add_site_roles : サイトにロールを追加する

  • remove_site_role : サイトからロールを削除する

  • get_site_moves : サイト移転に関する情報を取得する

  • submit_site_move : サイト移転リクエストを送信する

URLの送信

  • submit_url : インデックス登録用の単一のURLを送信する

  • submit_url_batch : 複数の URL を一括してインデックス登録する

  • submit_content : インデックス登録のためにコンテンツを送信する

  • submit_feed : インデックス登録用のフィードを送信する

  • get_feeds : 送信されたすべてのフィードを取得する

  • get_feed_details : 特定のフィードの詳細を取得する

  • remove_feed : アカウントからフィードを削除します

  • get_url_submission_quota : URL送信クォータを確認する

  • get_content_submission_quota : コンテンツ送信クォータを確認する

  • fetch_url : インデックス用のURLを取得する

  • get_fetched_urls : 取得したすべての URL を取得する

  • get_fetched_url_details : 特定のフェッチされた URL の詳細を取得する

トラフィック分析

  • get_query_stats : 検索クエリの統計情報を取得する

  • get_query_traffic_stats : 検索クエリのトラフィック統計を取得する

  • get_query_page_stats : 検索クエリのページ統計を取得する

  • get_query_page_detail_stats : 検索クエリの詳細なページ統計情報を取得する

  • get_page_stats : ページの統計情報を取得する

  • get_page_query_stats : ページのクエリ統計を取得する

  • get_rank_and_traffic_stats : ランクとトラフィックの統計情報を取得する

這う

  • get_crawl_stats : クロール統計を取得する

  • get_crawl_settings : クロール設定を取得する

  • save_crawl_settings : クロール設定を保存する

  • get_crawl_issues : クロールの問題を取得する

キーワード分析

  • get_keyword : キーワードに関する情報を取得する

  • get_keyword_stats : キーワードの統計情報を取得する

  • get_related_keywords : 関連キーワードを取得する

リンク分析

  • get_link_counts : リンク数を取得する

  • get_url_links : URLのリンクを取得する

  • get_deep_link : ディープリンク情報を取得する

  • get_deep_link_blocks : ディープリンクブロックを取得する

  • add_deep_link_block : ディープリンクブロックを追加する

  • remove_deep_link_block : ディープリンクブロックを削除する

  • update_deep_link : ディープリンクを更新する

  • get_deep_link_algo_urls : ディープリンクアルゴリズムの URL を取得する

  • get_connected_pages : 接続されたページを取得する

  • add_connected_page : 接続されたページを追加する

コンテンツ管理

  • get_url_info : URLに関する情報を取得する

  • get_url_traffic_info : URL のトラフィック情報を取得する

  • get_children_url_info : 子 URL に関する情報を取得する

  • get_children_url_traffic_info : 子 URL のトラフィック情報を取得する

コンテンツブロッキング

  • get_blocked_urls : ブロックされた URL を取得する

  • add_blocked_url : ブロックリストにURLを追加する

  • remove_blocked_url : ブロックリストからURLを削除する

  • get_active_page_preview_blocks : アクティブなページプレビューブロックを取得する

  • add_page_preview_block : ページプレビューブロックを追加する

  • remove_page_preview_block : ページプレビューブロックを削除する

地域設定

  • get_country_region_settings : 国/地域の設定を取得する

  • add_country_region_settings : 国/地域設定を追加する

  • remove_country_region_settings : 国/地域設定を削除する

URL管理

  • get_query_parameters : クエリパラメータを取得する

  • add_query_parameter : クエリパラメータを追加する

  • remove_query_parameter : クエリパラメータを削除する

  • enable_disable_query_parameter : クエリパラメータを有効または無効にする

発達

すべてのテストを実行するには:

make test

アプリをビルドするには:

make build

プロジェクトを lint するには:

make lint

プロジェクトをフォーマットするには:

make format

環境変数

次の環境変数が必要です。

  • BING_WEBMASTER_API_KEY : BingウェブマスターツールのAPIキー

サーバーの起動

MCP サーバーを起動するには:

make start

MCP検査官

MCP インスペクターを使用してサーバーをテストできます。

make mcp_inspector

ライセンス

マサチューセッツ工科大学

Available Tools

62 tools
add_blocked_urlB

Add a blocked URL to a site.

Args: site_url: The URL of the site blocked_url: The URL to be blocked entity_type: The type of entity to block (Page or Directory) request_type: The type of request (CacheOnly or FullRemoval) date: The date the URL was blocked (default: minimum datetime)

Raises: BingWebmasterError: If URL cannot be blocked

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNo
site_urlYes
blocked_urlYes
entity_typeNo
request_typeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. For a mutation tool it only offers a minimal Raises clause (BingWebmasterError on failure) and omits what happens on success, reversibility, or permission requirements. With zero annotation coverage this is a significant gap.

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

Conciseness4/5

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

The docstring format front-loads a one-line purpose followed by an informative Args list and a compact Raises note. It is well-structured with no filler; the only low-value element is the minimal Raises clause, but it does not bloat the description.

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?

An output schema exists, so return-value explanation is not required. Parameters are thoroughly covered, but the description omits usage context and behavioral detail that a write operation with no annotations should supply, leaving the agent without guidance on when to call it.

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

Parameters4/5

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

Schema description coverage is 0%, and the description fully compensates by documenting all 5 parameters, including the enum semantics (Page or Directory for entity_type, CacheOnly or FullRemoval for request_type) and the date default (minimum datetime). This adds meaning the schema itself does not provide.

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?

"Add a blocked URL to a site" states a specific verb and resource, and the parameter list clarifies the domain (Bing Webmaster URL blocking). It is distinguishable from sibling tools remove_blocked_url and get_blocked_urls by its operation, though it never names those siblings explicitly.

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?

There is no when-to-use or when-not-to-use guidance, no prerequisites, and no mention of alternatives. The description is purely declarative and leaves the agent to infer when blocking a URL is appropriate versus using remove_blocked_url.

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

add_connected_pageC

Add a page which has a link to your website.

Args: site_url: The URL of your site master_url: The URL of the page to be connected

Raises: BingWebmasterError: If page cannot be connected

ParametersJSON Schema
NameRequiredDescriptionDefault
site_urlYes
master_urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It discloses that the operation adds a page and raises BingWebmasterError on failure, but doesn't mention whether the operation is idempotent, whether it requires prior site verification, or what happens if the page is already connected. The error mention is useful but minimal.

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

Conciseness4/5

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

The description is compact and front-loaded with the core purpose. The Args and Raises sections are standard and efficient. No wasted words, though the Raises section is somewhat generic.

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 and no output schema details, the description is thin. It doesn't explain return values, idempotency, prerequisites, or failure modes beyond a generic exception. An agent would need to infer a lot about how to call this correctly.

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. It lists both parameters with brief definitions ('The URL of your site', 'The URL of the page to be connected'), which adds some meaning beyond the bare schema. However, it doesn't clarify URL formats, whether master_url must be on the same domain, or any constraints.

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 states a specific verb and resource: 'Add a page which has a link to your website.' This clearly identifies the action and target. It doesn't explicitly distinguish from siblings like add_deep_link_block or add_page_preview_block, but the resource (connected page) is distinct enough.

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 on when to use this tool versus alternatives. It doesn't mention prerequisites like verifying the site first, or contrast with get_connected_pages or other add tools. The context is implied by the name and description but not explicit.

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

add_country_region_settingsC

Add country/region settings for a specific site.

Args: site_url: The URL of the site settings: The country/region settings to add

Raises: BingWebmasterError: If settings cannot be added

ParametersJSON Schema
NameRequiredDescriptionDefault
settingsYes
site_urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations, the description carries the full burden. It discloses that it raises BingWebmasterError on failure (useful), but does not mention potential side effects, idempotency, whether it overwrites existing settings, or required permissions. As an add operation, the mutating nature is inferred but not explicitly stated, and no response format is described despite having an output schema.

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

Conciseness4/5

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

The description is compact: a one-line purpose and a short Args section. Each sentence earns its place; no fluff. However, it could be improved by adding brief value mentions of key fields, but it's not verbose.

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?

Given the tool's moderate complexity (nested settings object, required fields, enum), the description is under-specified. No example, no return value explanation (though output schema exists, the description doesn't confirm what to expect), no error handling details beyond naming the error type. For a mutating operation with no annotations, more context is needed for correct invocation.

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

Parameters1/5

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

Schema description coverage is 0%, and the description only repeats parameter names: 'site_url: The URL of the site' and 'settings: The country/region settings to add'. This adds no meaning beyond the schema's parameter titles. The nested CountryRegionSettings object is not explained; the agent must infer its required fields from the schema, which does provide them, but the description doesn't help interpret the enum values of 'Type' or the meaning of 'TwoLetterIsoCountryCode'.

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?

States a specific verb ('Add') and resource ('country/region settings') for a specific site. Distinguishes from siblings like get_country_region_settings and remove_country_region_settings by naming the operation explicitly, though it doesn't name them.

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 on when to use this tool versus alternatives. It doesn't mention that get_country_region_settings is for retrieval or remove_country_region_settings for deletion, nor does it specify prerequisites like verifying site ownership first. The description implies usage via 'Add' but doesn't provide context.

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

add_page_preview_blockC

Add a page preview block.

Args: site_url: The URL of the site url: The URL to block from page preview reason: The reason for blocking the page preview

Raises: BingWebmasterError: If preview block cannot be added

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
reasonYes
site_urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

Annotations are absent, so the description carries the full burden. It only mentions raising BingWebmasterError on failure, but doesn't disclose side effects, idempotency, reversibility, or what happens if the block already exists. For a mutation tool, this is insufficient behavioral disclosure.

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

Conciseness4/5

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

The description is concise and well-structured with an Args/Raises format. It is easy to parse and front-loads the action. However, the brevity contributes to missing details in other dimensions; conciseness itself is good.

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?

The tool has 3 parameters with an enum, no annotations, and a minimal description. It lacks usage context, enum semantics, return value details, and any mention of prerequisites like site verification. Given the complexity of the Bing Webmaster domain, this description is incomplete.

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?

The description provides one-line meanings for each parameter: site_url, url, and reason. However, it doesn't explain the enum values for reason (1-4) as defined in the schema. Since schema description coverage is 0%, the description partially compensates but leaves the enum semantics ambiguous.

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 states 'Add a page preview block' with a clear verb and resource. It lists the three parameters with brief meanings, making the action specific. However, it doesn't explicitly differentiate from sibling tools like add_blocked_url or add_deep_link_block, and could clarify what a page preview block actually does in the Bing Webmaster context.

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 such as add_blocked_url or add_deep_link_block. The description simply states the action without context, exclusions, or mention of scenarios where this tool is preferred. An agent would need to infer based on tool names alone.

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

add_query_parameterC

Add a URL normalization parameter for a site.

Args: site_url: The URL of the site query_parameter: The query parameter to add

Raises: BingWebmasterError: If parameter cannot be added

ParametersJSON Schema
NameRequiredDescriptionDefault
site_urlYes
query_parameterYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description carries full responsibility for behavioral disclosure. It states that a BingWebmasterError is raised if the parameter cannot be added, which is useful, but it does not disclose side effects, idempotency, authorization needs, or how the normalization parameter is applied.

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

Conciseness4/5

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

The opening sentence is a concise, front-loaded description. The Args and Raises sections add useful information without marketing fluff. The format is slightly verbose due to headings and blank lines, but it remains short and scannable.

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?

This is a mutating tool with no annotations and no output schema, yet the description does not explain prerequisites, effects on existing normalization rules, idempotency, or what happens when the parameter already exists. It only names the inputs and a generic failure condition, so an agent lacks enough context to predict the tool's behavior.

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?

The Args section largely restates the parameter names: 'site_url: The URL of the site' and 'query_parameter: The query parameter to add.' It adds almost no meaning beyond the input schema, which already requires those values and constrains query_parameter with a regex pattern. There is no example, no format clarification, and no relation to URL normalization behavior.

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 opens with a clear verb and object: 'Add a URL normalization parameter for a site.' This states exactly what the tool does and is specific enough to distinguish it from obvious siblings like remove_query_parameter or get_query_parameters. It does not explicitly contrast with other parameter-related tools such as enable_disable_query_parameter, so it stops short of full sibling differentiation.

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 given about when to use this tool versus alternatives like enable_disable_query_parameter or remove_query_parameter. The description provides no context about prerequisites, such as whether the site must already exist or be verified, and does not mention any exclusions.

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

add_siteC

Add a new site to Bing Webmaster Tools.

Args: site_url: The URL of the site to add

Raises: BingWebmasterError: If the site cannot be added

ParametersJSON Schema
NameRequiredDescriptionDefault
site_urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations, the description carries the full burden. It discloses that a BingWebmasterError is raised if the site cannot be added, but it does not describe side effects, duplicate behavior, verification requirements, authentication needs, or whether the site is immediately usable.

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

Conciseness4/5

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

The description is compact and front-loaded with the main action. The Args and Raises sections are clear, though the Args line is somewhat redundant with the schema. Overall, it is concise without wasted words.

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?

The tool is simple with one required parameter and an output schema, so the core usage is conveyed. However, important context is missing, such as whether verification is needed after adding a site and what happens if the site already exists. The error clause helps but does not fully compensate for the absent behavioral and usage details.

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. It only repeats 'The URL of the site to add,' which adds little beyond the schema's 'Site Url' title. It lacks URL format guidance, examples, or constraints such as protocol requirements or trailing-slash normalization.

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 states a specific action and resource: 'Add a new site to Bing Webmaster Tools.' It clearly identifies the tool's function and distinguishes it from remove_site and verify_site, though it does not explicitly name those alternatives.

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 given on when to use this tool versus alternatives like verify_site or remove_site. There is no mention of prerequisites, ordering, or exclusions, so the agent must infer usage solely from the verb 'Add.'

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

add_site_rolesC

Delegate site access to a user.

Args: site_url: The URL of your site delegated_url: The URL being delegated user_email: The email of the user to delegate access to authentication_code: The authentication code is_administrator: Whether the user should have administrator privileges is_read_only: Whether the user should have read-only access

Raises: BingWebmasterError: If the role assignment fails

ParametersJSON Schema
NameRequiredDescriptionDefault
site_urlYes
user_emailYes
is_read_onlyYes
delegated_urlYes
is_administratorYes
authentication_codeYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description must disclose side effects. It only mentions that a BingWebmasterError is raised on failure knthu and that it delegates access. It fails to explain whether existing roles are overwritten, whether both admin and read-only can be true, or what happens on partial failure.

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

Conciseness4/5

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

The docstring is compact, front-loads the purpose, and separates parameter definitions from a Raises section. It earns a solid score for brevity and readability.

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?

The description covers the basic action, all six parameters, and the error type. However, it omits context about the semantics of delegating (e.g., whether roles are additive, how the delegated_url relates to site_url, and whether both boolean flags can be true). An output schema exists, so return values need not be described.

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?

The Arg list gives a one-line gloss for each parameter (e.g., 'user_email: The email of the user to delegate access to'), but these largely restate the parameter names and don't clarify ambiguous fields like delegated_url or the relationship between is_administrator and is_read_only. Schema descriptions are absent, so the description partially compensates but remains shallow.

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 opening line, 'Delegate site access to a user,' clearly identifies the action and target. It is specific enough to convey the tool's primary function, though it does not distinguish it from related tools like remove_site_roles.

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 sibling tools (e.g., get_site_roles, remove_site_roles). The description does not explain prerequisites, typical scenarios, or how roles interact.

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

enable_disable_query_parameterA

Enable or disable a URL normalization parameter for a site.

Args: site_url: The URL of the site query_parameter: The query parameter to enable/disable is_enabled: True to enable, False to disable

Raises: BingWebmasterError: If parameter state cannot be updated

ParametersJSON Schema
NameRequiredDescriptionDefault
site_urlYes
is_enabledYes
query_parameterYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It indicates a mutating operation ('enable or disable') and mentions a Raises clause for BingWebmasterError on failure. However, it does not disclose side effects, reversibility, idempotency, permissions, or prerequisites. For a mutation tool with zero annotation coverage, this is a significant gap.

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 concise and well-structured. It opens with a single, front-loaded purpose sentence, then lists the arguments with clear definitions, and ends with a raises clause. There is no redundant or verbose text; every sentence earns its place.

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?

For a simple tool with three primitive parameters and an output schema, the description covers the core action, arguments, and error condition. However, it lacks usage context (when to prefer this over siblings), does not explain the concept of 'URL normalization parameter', and omits any prerequisites like site verification. This is adequate but not complete given the wide range of sibling tools.

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

Parameters4/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. It defines each argument: site_url as 'The URL of the site', query_parameter as 'The query parameter to enable/disable', and is_enabled as 'True to enable, False to disable'. This adds meaning beyond the bare schema types and titles, though it could include format hints or domain-specific explanations (e.g., what qualifies as a query parameter).

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?

The description clearly states the action: 'Enable or disable a URL normalization parameter for a site.' This specifies the verb (enable/disable), the resource (URL normalization parameter), and the scope (for a site). It distinguishes itself from sibling tools like add_query_parameter, remove_query_parameter, and get_query_parameters by focusing on toggling state rather than creation, removal, or retrieval.

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?

The description provides no guidance on when to use this tool versus alternatives. It does not mention that this should be used for existing parameters or that add/remove are for adding/removing. There are no exclusions or explicit context for selecting this over siblings like get_query_parameters or add_query_parameter.

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

fetch_urlC

Request Bing to fetch a specific URL immediately.

Args: site_url: The URL of the site url: The URL to fetch

Raises: BingWebmasterError: If URL cannot be fetched

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
site_urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It only states that it fetches a URL and raises an error if it cannot be fetched. It does not disclose side effects (e.g., triggering a crawl), authentication requirements, rate limits, or whether it's a write operation. This is minimal disclosure for an action tool.

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

Conciseness4/5

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

The description is concise and well-structured with clear sections for purpose, arguments, and exceptions. It avoids fluff and front-loads the action. However, it is extremely terse and omits useful context, which affects other dimensions, but for pure conciseness it is appropriately sized.

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 tool with no annotations and minimal description, the information is incomplete for safe and correct use. It lacks details about prerequisites (e.g., site must be verified), potential side effects, return behavior (though output schema exists, it's not referenced), and how it differs from submit_url. An agent would not know when to invoke this tool with confidence.

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. It lists 'site_url: The URL of the site' and 'url: The URL to fetch', which adds a basic distinction but does not clarify the relationship (e.g., site_url is the verified site root, url is the specific page). No format, constraints, or examples are given.

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 states a clear action: 'Request Bing to fetch a specific URL immediately.' It identifies the resource (URL) and the operation (fetch). It doesn't differentiate from sibling tools like submit_url or get_fetched_urls, but the purpose is unambiguous on its own.

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?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention conditions, exclusions, or refer to any sibling tool. The agent is left to infer that it's for immediate fetching, but no explicit context is given.

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

get_active_page_preview_blocksB

Get active page preview blocks for a site.

Args: site_url: The URL of the site

Returns: List[PagePreview]: List of active page preview blocks

Raises: BingWebmasterError: If preview blocks cannot be retrieved

Returns at most limit rows (default 50, max 500). When the result reports a next_offset, call again with offset=next_offset to get more rows.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of rows to return.
offsetNoIndex of the first row.
site_urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations provided, the description carries the burden of behavioral disclosure. It discloses pagination behavior (limit, offset, next_offset) and error behavior (BingWebmasterError), which is useful. However, it does not mention whether this is a read-only operation, rate limits, or what 'active' means in terms of filtering. The pagination and error details add value beyond the schema.

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

Conciseness4/5

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

The description is concise and front-loaded with the core purpose. The Args/Returns/Raises structure is clear and scannable. The pagination note is placed at the end, which is appropriate. No wasted words, though the format could be slightly more compact.

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?

The tool has an output schema (List[PagePreview]) and 3 parameters, so the description doesn't need to explain return values in detail. However, with no annotations, the description should disclose more about the operation's safety (read-only vs. mutating) and any prerequisites. The pagination and error details are good, but the lack of usage context relative to siblings leaves a gap.

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 67%, with limit and offset already described in the schema. The description adds the site_url parameter context ('The URL of the site') but that is minimal. The pagination explanation in the description adds meaning to limit and offset beyond the schema's basic descriptions, but it doesn't fully compensate for the missing site_url schema description.

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 states a specific verb and resource: 'Get active page preview blocks for a site.' This clearly identifies the operation and the resource. It is distinguishable from siblings like add_page_preview_block and remove_page_preview_block, though it doesn't explicitly name them.

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?

The description implies usage by stating it retrieves active page preview blocks for a site, and the pagination instructions provide context for repeated calls. However, it does not explicitly state when to use this tool versus alternatives like get_deep_link_blocks or add_page_preview_block, nor does it mention any prerequisites.

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

get_blocked_urlsA

Get a list of blocked pages/directories for a site.

Args: site_url: The URL of the site

Returns: List[BlockedUrl]: List of blocked URLs and their settings

Raises: BingWebmasterError: If blocked URLs cannot be retrieved

Returns at most limit rows (default 50, max 500). When the result reports a next_offset, call again with offset=next_offset to get more rows.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of rows to return.
offsetNoIndex of the first row.
site_urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses pagination behavior ('Returns at most limit rows... call again with offset=next_offset') and the error type (BingWebmasterError), but does not mention permissions, rate limits, or side effects. As a read operation, this is adequate.

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 organized into Args, Returns, Raises, and a pagination note, with no redundant text. It is front-loaded with the primary purpose and uses clear formatting.

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

Completeness4/5

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

The description covers purpose, parameters, return type, error, and pagination, which is sufficient for a read-only list tool with an output schema. It doesn't mention prerequisites like site ownership or verification, but these are likely common to all site tools and not critical for a basic call.

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

Parameters4/5

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

The schema covers limit and offset with descriptions, but site_url lacks a schema description. The description's Args section defines site_url as 'The URL of the site', and the pagination note clarifies offset usage, adding value beyond the schema.

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?

The description states 'Get a list of blocked pages/directories for a site' with a specific verb and resource, clearly distinguishing it from sibling tools like add_blocked_url and remove_blocked_url. The return type is also specified.

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?

The description implies its use for retrieving blocked URLs but does not explicitly contrast with add_blocked_url or remove_blocked_url. No when-to-use or when-not-to-use guidance is provided, leaving the agent to infer from the tool name.

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

get_children_url_infoA

Retrieve information for child URLs of a specific URL.

Args: site_url: The URL of the site url: The parent URL to get child URL information for page: The page number of results to retrieve filter_properties: Properties to filter the results

Returns: List[UrlInfo]: List of URL information for child URLs

Raises: BingWebmasterError: If child URL information cannot be retrieved

Returns at most limit rows (default 50, max 500). When the result reports a next_offset, call again with offset=next_offset to get more rows.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
pageNo
limitNoMaximum number of rows to return.
offsetNoIndex of the first row.
site_urlYes
filter_propertiesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It discloses pagination behavior ('Returns at most limit rows... call again with offset=next_offset') and error handling (BingWebmasterError). It does not mention auth, rate limits, or other side effects, but given this is a read operation, the disclosed behavior is sufficient for basic use. It adds value beyond the schema.

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 well-organized: a one-line purpose, a compact Args list, Returns and Raises sections, and a crucial pagination note. It is front-loaded and every sentence adds value. No redundancy or fluff.

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

Completeness4/5

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

Given the 6-parameter surface, a nested filter object, and an output schema, the description covers the essential purpose, parameter meanings, pagination, and error. The output schema defines return structure, and the filter details are in the schema. It only lacks usage-selection context, which is already scored under usage_guidelines, so for the tool's calling mechanics it is sufficiently complete.

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

Parameters4/5

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

Schema description coverage is only 33% (limit and offset have descriptions). The description explicitly explains site_url, url, page, and filter_properties in an Args block, compensating for the undocumented parameters. It gives concise meanings for each, though filter_properties is only described at a high level without detailing the nested structure. This is valuable addition beyond the schema.

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 states a clear, specific verb+resource: 'Retrieve information for child URLs of a specific URL.' This differentiates it from siblings like get_url_info (single URL) and get_children_url_traffic_info (traffic-specific) by focusing on child URLs and general info. It does not explicitly name alternatives, but the purpose is unambiguous.

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?

The description provides no guidance on when to use this tool versus alternatives such as get_url_info or get_children_url_traffic_info. It only explains how to paginate once called, not the selection criteria for choosing this tool. This omission leaves the agent to infer from the name and siblings.

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

get_children_url_traffic_infoA

Get traffic details for child URLs of a directory.

Args: site_url: The URL of the site url: The URL of the directory page: The page number of results to retrieve

Returns: List[UrlTrafficInfo]: List of traffic information for child URLs

Raises: BingWebmasterError: If child traffic information cannot be retrieved

Returns at most limit rows (default 50, max 500). When the result reports a next_offset, call again with offset=next_offset to get more rows.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
pageNo
limitNoMaximum number of rows to return.
offsetNoIndex of the first row.
site_urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are provided, so the description must carry the burden. It discloses pagination behavior (limit, offset, next_offset), return type, and error conditions (BingWebmasterError). It does not mention rate limits, authentication, or that it is read-only, but the core behavioral aspects are covered. The absence of annotation contradictions supports this score.

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

Conciseness4/5

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

The description is well-structured with clear sections (Args, Returns, Raises) and front-loads the primary purpose. It includes necessary details about pagination and errors without excessive verbosity. The only minor redundancy is repeating 'Returns' twice, but overall it is efficient.

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

Completeness4/5

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

For a 5-parameter tool with no annotations and an output schema (though not shown), the description covers purpose, all parameters, pagination, and error handling. It does not mention authentication or rate limits, but these may be implicit for the API. It is complete enough for an agent to invoke correctly, with minor gaps.

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

Parameters5/5

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

Schema coverage is only 40% (limit and offset have descriptions), but the description compensates fully. The Args section explains site_url, url, and page, while the later text explains limit and offset with defaults and max values. Every parameter is meaningfully described, adding significant value beyond the schema.

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?

The opening sentence clearly states the specific action ('Get traffic details') and resource ('child URLs of a directory'). This distinguishes it from sibling tools like get_url_traffic_info (single URL) and get_children_url_info (likely without traffic) by explicitly mentioning 'traffic'. The purpose is unambiguous and action-oriented.

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?

The description explains pagination usage ('call again with offset=next_offset') but does not explicitly state when to use this tool versus alternatives such as get_url_traffic_info or get_children_url_info. It provides context that it is for a directory's children, but does not name alternatives or exclusions. This is a clear gap for tool selection.

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

get_connected_pagesA

Get a list of pages connected to the site.

Args: site_url: The URL of the site

Returns: List[ConnectedSite]: List of connected sites

Raises: BingWebmasterError: If connected pages cannot be retrieved

Returns at most limit rows (default 50, max 500). When the result reports a next_offset, call again with offset=next_offset to get more rows.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of rows to return.
offsetNoIndex of the first row.
site_urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden. It discloses the limit behavior, default/max limits, the next_offset continuation pattern, and that BingWebmasterError is raised on failure. This goes beyond a bare getter, though it does not cover prerequisite or authentication conditions.

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 compact and front-loaded: a one-sentence summary, a concise args/returns/raises docstring, and a short pagination note. Every sentence contributes, and there is no filler.

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

Completeness4/5

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

For a paginated read operation, the description gives the required site_url, optional limit/offset, pagination pattern, and error behavior, while the output schema covers the return shape. It is slightly incomplete about what 'connected pages' means and what makes a site eligible, but the core calling contract is fully specified.

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

Parameters4/5

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

Schema coverage is 67%, and the description compensates by defining the otherwise undocumented site_url parameter ('The URL of the site'). It also explains how offset relates to pagination, adding meaning beyond the schema's 'Index of the first row.' The limit default/max is redundant with the schema, but the missing parameter is covered.

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 opening sentence names a specific operation and resource: 'Get a list of pages connected to the site.' It clearly signals a read operation and is distinguishable from write-oriented siblings like add_connected_page. However, it does not explicitly differentiate itself from similar getters, and the return type 'List[ConnectedSite]' introduces minor pages-vs-sites ambiguity.

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?

The description implies use whenever connected pages are needed and gives clear pagination guidance ('call again with offset=next_offset'). However, it provides no when-not-to-use conditions or alternatives, so usage is mostly implied rather than explicitly scoped against sibling tools.

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

get_content_submission_quotaC

Get information about content submission quota and usage.

Args: site_url: The URL of the site

Returns: ContentSubmissionQuota: Current quota information

Raises: BingWebmasterError: If quota information cannot be retrieved

ParametersJSON Schema
NameRequiredDescriptionDefault
site_urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
__typeYes
DailyQuotaYes
MonthlyQuotaYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It only repeats the action ('Get information') without stating that it is read-only, idempotent, or requires specific authentication/permissions. It does not mention any side effects or rate limits, which is a gap for a getter.

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 extremely concise, with a clear purpose statement and well-organized Args, Returns, and Raises sections. Every line is functional and there is no filler, earning high marks for structure and economy.

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?

The tool has a single parameter and an output schema that presumably defines ContentSubmissionQuota, so return structure is covered. However, the description does not clarify the relationship to get_url_submission_quota or the exact meaning of 'content submission', leaving a potential ambiguity for an agent selecting among similar quota tools.

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 coverage is 0%, so the description must add meaning to the site_url parameter. It provides only 'The URL of the site' – a generic phrase that doesn't clarify format (e.g., full URL vs. domain), required scheme, or whether the site must already be verified. The description does not compensate for the schema's lack of detail.

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 states a clear verb ('Get') and a specific resource ('content submission quota and usage'). It distinguishes from the sibling get_url_submission_quota by naming the resource type, but it doesn't explicitly contrast the two, so an agent might wonder how they differ.

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?

The description gives no guidance on when to use this tool versus the very similar get_url_submission_quota. There is no mention of typical invocation context, prerequisites, or exclusions, leaving the agent to infer usage from the name alone.

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

get_country_region_settingsA

Retrieve country/region settings for a specific site.

Args: site_url: The URL of the site to get settings for

Returns: List[CountryRegionSettings]: List of country/region settings

Raises: BingWebmasterError: If settings cannot be retrieved

Returns at most limit rows (default 50, max 500). When the result reports a next_offset, call again with offset=next_offset to get more rows.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of rows to return.
offsetNoIndex of the first row.
site_urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure, and it performs well: it documents pagination mechanics (next_offset, offset-based continuation), default/max limits, the returned type, and raises BingWebmasterError on failure. It stops short of disclosing auth requirements or what specific setting fields are returned, but coverage is strong.

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

Conciseness4/5

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

Organized docstring with Args/Returns/Raises sections plus a focused pagination note. Each line earns its place and the most behaviorally important constraint (limit/pagination) is front-loaded. Slightly verbose only in restating site_url in Args.

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

Completeness4/5

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

Complete for a list-retrieval tool: output schema exists (List[CountryRegionSettings]), error behavior is stated, and pagination instructions are explicit. The only minor gap is not describing what fields each CountryRegionSettings entry contains, which the output schema likely handles.

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

Parameters4/5

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

Schema coverage is 67%, and the description compensates by explaining the pagination contract referencing limit and offset explicitly, including defaults (50) and cap (500). site_url is only restated as 'URL of the site', but the pagination detail adds real meaning beyond the bare schema.

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?

States a specific verb ('Retrieve') and resource ('country/region settings for a specific site'), clearly distinguishing it from the add_ and remove_ sibling variants. The purpose is unambiguous, though it doesn't explicitly name its siblings like some top-tier descriptions do.

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?

Gives context that it operates 'for a specific site' and implies a read-only contrast to the add/remove counterparts in the sibling list, but never explicitly states when to use this tool versus add_country_region_settings or remove_country_region_settings. No exclusions or alternative routing is provided.

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

get_crawl_issuesA

Get a list of URLs with crawl issues for a specific site.

This helps identify pages that Bing's crawler had trouble accessing or processing.

Args: site_url: The URL of the site

Returns: List[UrlWithCrawlIssues]: List of URLs with their associated crawl issues

Raises: BingWebmasterError: If issues cannot be retrieved

Returns at most limit rows (default 50, max 500). When the result reports a next_offset, call again with offset=next_offset to get more rows.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of rows to return.
offsetNoIndex of the first row.
site_urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description carries the full behavioral burden. It discloses pagination behavior ('Returns at most limit rows... call again with offset=next_offset'), the default and maximum limit, and the error type raised. This goes beyond a simple description and helps the agent anticipate response handling.

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 well-structured and front-loaded with the core purpose. Each section (Args, Returns, Raises, pagination note) earns its place and adds useful information without repetition or filler.

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

Completeness5/5

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

The description is complete for a tool of this complexity: it identifies the required parameter, explains pagination, notes the error type, and describes the return concept. With an output schema present, the description does not need to fully detail return fields, and nothing essential is missing for correct invocation.

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

Parameters4/5

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

The input schema documents limit and offset with descriptions, but site_url lacks a schema description. The description compensates by specifying 'site_url: The URL of the site.' It also explains the relationship between limit, offset, and next_offset, adding meaning beyond the raw schema fields.

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?

The description clearly states a specific verb and resource: 'Get a list of URLs with crawl issues for a specific site.' It explains what the tool identifies (pages Bing's crawler had trouble accessing or processing), and this is distinct from sibling tools like get_crawl_stats or get_crawl_settings.

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

Usage Guidelines4/5

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

The description gives clear context on when to use the tool: to identify pages that Bing's crawler had trouble accessing or processing. It does not explicitly name alternative tools or state when not to use it, but the use case is clear enough for an agent to select it appropriately among siblings.

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

get_crawl_settingsB

Retrieve crawl settings for a specific site.

Args: site_url: The URL of the site to get crawl settings for

Returns: CrawlSettings: The current crawl settings for the site

Raises: BingWebmasterError: If settings cannot be retrieved

ParametersJSON Schema
NameRequiredDescriptionDefault
site_urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
__typeNo
CrawlRateYes
CrawlBoostEnabledYes
CrawlBoostAvailableYes

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description makes the read-only nature clear via 'Retrieve' and 'current crawl settings,' and it discloses that failures surface as BingWebmasterError. It stops short of explaining side effects, ownership/prerequisite checks, or response details, but those are less critical for a simple getter.

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 main action appears in the first sentence with no filler. The Args/Returns/Raises sections are compact and front-loaded, making it easy for an agent to scan.

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

Completeness4/5

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

For a one-parameter getter, the description covers purpose, the parameter, the return type, and a failure mode, which is sufficient for most invocation scenarios. It is only missing optional context like site verification requirements or how this relates to save_crawl_settings.

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?

The Args section defines site_url as 'the URL of the site,' which clarifies the single parameter despite the schema having no descriptions. It still largely paraphrases the parameter name and adds no format, scope, or validation details.

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 opens with 'Retrieve crawl settings for a specific site,' providing a clear verb, object, and scope. It distinguishes itself from the read/write sibling save_crawl_settings by the explicit retrieval framing, though it does not directly name that alternative.

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?

There is no guidance on when to prefer this tool over related settings tools or what conditions must be true before calling it. The name and verb imply a read operation, but no context, prerequisites, or typical workflow is offered.

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

get_crawl_statsB

Retrieve crawl statistics for a specific site within a date range.

Args: site_url: The URL of the site

Returns: List[CrawlStats]: List of daily crawl statistics

Raises: BingWebmasterError: If statistics cannot be retrieved

Returns at most limit rows (default 50, max 500). When the result reports a next_offset, call again with offset=next_offset to get more rows.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of rows to return.
offsetNoIndex of the first row.
site_urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

Without annotations, the description must carry behavioral disclosure. It does disclose return type, the BingWebmasterError, and the next_offset pagination loop, which are valuable. However, it claims the tool retrieves stats 'within a date range' while the schema provides no date-range parameters, so the agent is misled about an apparently core capability.

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

Conciseness4/5

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

The description is front-loaded with the purpose and uses a conventional Args/Returns/Raises structure. The pagination sentence is useful, though it partially repeats schema-provided default/max values; overall it's tight.

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?

The output schema and error/pagination disclosures cover much of the return behavior, but the date-range capability promised in the first line has no corresponding parameters, leaving a critical gap in how to invoke the tool for that stated scope. There is also no guidance on how site_url is validated or whether any auth is needed, despite annotations being absent.

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?

The schema already describes limit and offset (67% coverage), so the description doesn't need to re-explain them; it adds value by spelling out the next_offset pagination pattern. But site_url only gets a trivial gloss ('The URL of the site') and the unsupported date-range assertion adds confusion rather than semantic detail.

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 states a specific verb ('Retrieve') and resource ('crawl statistics') for a specific site, and the resource name distinguishes it from sibling tools like get_crawl_settings and get_crawl_issues. However, the clause 'within a date range' is unsupported by the input schema, which lacks date parameters, adding ambiguity to the actual scope.

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?

It gives clear operational guidance about pagination (limit/offset/next_offset), but it does not state when to choose this over sibling tools or any exclusions. Usage context is implied ('crawl statistics' vs settings/issues) rather than explicitly routing the agent.

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

get_feed_detailsA

Get detailed information about a specific feed.

Args: site_url: The URL of the site feed_url: The URL of the feed

Returns: List[Feed]: Detailed feed information

Raises: BingWebmasterError: If feed details cannot be retrieved

Returns at most limit rows (default 50, max 500). When the result reports a next_offset, call again with offset=next_offset to get more rows.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of rows to return.
offsetNoIndex of the first row.
feed_urlYes
site_urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden. It discloses pagination behavior (limit, offset, next_offset), the return type, and the error type. It does not mention side effects, but the operation is clearly a read, and the pagination detail adds meaningful transparency.

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

Conciseness4/5

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

The description is well-structured with clear Args, Returns, Raises, and pagination sections. It is concise and avoids filler, though the Args section partially duplicates schema information.

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

Completeness4/5

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

For a read-only tool with no annotations, the description covers purpose, arguments, return type, error behavior, and pagination. It lacks explicit usage guidance and details about the Feed object, but the presence of an output schema reduces the need to explain return structure.

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 coverage is only 50%, so the description must compensate for site_url and feed_url, but it only restates their names ('The URL of the site' and 'The URL of the feed'). It does add useful pagination semantics for offset via the next_offset note, but the core parameters remain under-explained.

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 states a specific verb and resource: 'Get detailed information about a specific feed.' This clearly distinguishes it from list-style siblings like get_feeds by emphasizing 'specific feed,' though it does not explicitly name alternatives.

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?

The description implies it is for retrieving details about a single feed rather than listing feeds, but it gives no explicit guidance on when to prefer this tool over get_feeds or other feed-related tools. No exclusions or alternative routing are provided.

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

get_feedsA

Get all sitemap feeds for a site.

Args: site_url: The URL of the site

Returns: List[Feed]: List of feed information

Raises: BingWebmasterError: If feeds cannot be retrieved

Returns at most limit rows (default 50, max 500). When the result reports a next_offset, call again with offset=next_offset to get more rows.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of rows to return.
offsetNoIndex of the first row.
site_urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the burden of behavioral disclosure. It clearly explains pagination behavior (next_offset, offset), limits, and error raising, which goes beyond the schema. It does not mention read-only status, but 'get' implies it.

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

Conciseness4/5

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

The description is well-structured with a clear purpose up front and concise Args/Returns/Raises sections. The pagination note is direct and useful, though the Args section for site_url adds little beyond the schema.

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

Completeness4/5

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

Given the output schema exists, the description covers the essential call sequence, pagination, and error handling. It lacks ordering/filtering details, but these are not critical for a basic list endpoint.

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?

The schema already describes limit and offset, but site_url has no schema description. The description's mention of site_url as 'The URL of the site' is trivial and does not add meaningful constraints. With 67% schema coverage, the baseline 3 is appropriate.

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?

The description clearly states the action ('Get all sitemap feeds') and the resource scope ('for a site'). It is distinct from sibling tools like get_feed_details or submit_feed, which have different purposes.

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?

Provides useful context on pagination and limits, but does not explicitly state when to use this tool versus alternatives like get_feed_details for a single feed. No when-not guidance is given.

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

get_fetched_url_detailsB

Get detailed information about a specific fetched URL.

Args: site_url: The URL of the site url: The specific URL to get details for

Returns: FetchedUrlDetails: Detailed information about the fetch status

Raises: BingWebmasterError: If URL details cannot be retrieved

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
site_urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
UrlYes
DateYes
StatusYes
__typeYes
HeadersYes
DocumentYes

TDQS

B3.3/5.0
Behavior3/5

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

The description states what the tool returns (FetchedUrlDetails) and that it raises BingWebmasterError, adding some behavioral transparency. However, with no annotations, it does not disclose side effects, permission requirements, rate limits, or what 'fetched' status implies. It is a read operation by name but this is not explicitly stated.

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 compact: one summary sentence, then Args, Returns, and Raises sections, each with a single line. No filler or repetition beyond the weak site_url text.

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?

With an output schema absent and many sibling tools present, the description does not explain how this relates to fetch_url or get_fetched_urls, nor what conditions must hold (e.g., URL must have been fetched). It gives the essentials but leaves relationship and return-structure details unsaid.

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 coverage is 0%, so the description must compensate. It lists both args but site_url's description ('The URL of the site') is nearly tautological jew and url's ('The specific URL to get details for') merely restates the tool's purpose. Basic placeholder semantics, not enough to resolve ambiguity.

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 'Get detailed information about a specific fetched URL' gives a clear verb and resource. It is distinct from siblings like fetch_url and get_fetched_urls, though it does not explicitly call out that distinction. Overall purpose is unambiguous.

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 about when to use this tool versus related siblings (fetch_url, get_fetched_urls). There is no mention of prerequisites, such as the URL needing to have been previously fetched or being associated with the given site_url.

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

get_fetched_urlsA

Get a list of URLs that have been submitted for fetching.

Args: site_url: The URL of the site

Returns: List[FetchedUrl]: List of fetched URLs and their status

Raises: BingWebmasterError: If fetched URLs cannot be retrieved

Returns at most limit rows (default 50, max 500). When the result reports a next_offset, call again with offset=next_offset to get more rows.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of rows to return.
offsetNoIndex of the first row.
site_urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations provided, the description carries the full behavioral burden. It discloses the pagination contract (limit, max, next_offset), the return type with status, and a Raises clause for error conditions. It does not explicitly state read-only behavior, but the verb 'Get' makes non-mutation reasonably clear.

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

Conciseness4/5

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

The description is well-structured with a one-sentence purpose, compact Args/Returns/Raises sections, and a crucial pagination note. The Args section redundantly lists only one of three parameters, which is a minor inconsistency, but overall every element earns its place with no fluff.

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

Completeness4/5

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

The output schema covers return-value structure, and the description covers pagination and error behavior, so agents have what they need to invoke and iterate. The main gaps are that it doesn't mention that site_url must be a verified site or explicitly route users to get_fetched_url_details for single-URL details.

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 coverage is 67%; limit and offset already have clear schema descriptions, so the description adds little there. For site_url, it only says 'The URL of the site,' which is minimally more than the schema's title. The next_offset/offset interplay is behavioral guidance rather than new parameter semantics.

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 starts with a clear verb-resource pair: 'Get a list of URLs that have been submitted for fetching.' This is specific enough to convey the tool's core function. It doesn't explicitly name or distinguish from the sibling get_fetched_url_details, but 'list' versus 'details' creates reasonable separation.

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?

The description provides concrete usage guidance for pagination: 'call again with offset=next_offset to get more rows.' However, it does not state when to choose this tool over alternatives like get_fetched_url_details or submit_url, leaving the selection context implied rather than explicit.

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

get_keywordB

Get keyword impressions for a selected period.

Args: query: The keyword query country: The country code language: The language code start_date: The start date of the period end_date: The end date of the period

Returns: Optional[Keyword]: Keyword impression data, or None if no data available

Raises: BingWebmasterError: If keyword data cannot be retrieved

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
countryYes
end_dateYes
languageYes
start_dateYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior3/5

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

With no annotations, the description carries the full transparency burden. It does disclose return behavior ('Optional[Keyword]' and 'None if no data available') and the BingWebmasterTools exception, which is useful. However, it does not mention whether this operation has side effects, requires special permissions, or any peculiarities of the returned keyword impression data.

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

Conciseness4/5

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

The description is compact and front-loaded, with a one-sentence summary followed by clearly separated Args/Returns/Raises sections. It avoids redundancy and is easy to parse, though it could be more concise in the parameter descriptions.

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?

The description covers the inputs, return type, and failure behavior, which is adequate for a simple lookup tool. However, it does not explain when to prefer this over similar keyword/query tools, nor does it clarify any prerequisites or expected input formats beyond the schema, leaving some contextual ambiguity.

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?

The schema has no descriptions, so the Args section carries the burden. It explains each of the five parameters, but only superficially: 'The country code' and 'The language code' add some meaning, while 'query' and the date parameters are near-tautological and lack format or constraint details such as expected date formats or language code standards.

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 first sentence clearly states the operation ('Get keyword impressions') and the primary scope ('for a selected period'). It is clear enough on its own but does not distinguish itself from the many sibling tools like get_keyword_stats or get_related_keywords.

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 about when to use this tool versus alternatives such as get_keyword_stats, get_related_keywords, or get_query_stats. The description simply restates the function rather than explaining its specific use case.

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

get_keyword_statsA

Retrieve keyword statistics for a specific query.

Args: query: The keyword query country: The country code (i.e. gb) language: The language and country code (i.e. en-GB)

Returns: List[KeywordStats]: List of keyword statistics

Raises: BingWebmasterError: If statistics cannot be retrieved

Returns at most limit rows (default 50, max 500). When the result reports a next_offset, call again with offset=next_offset to get more rows.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of rows to return.
queryYes
offsetNoIndex of the first row.
countryYes
languageYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior4/5

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

No annotations are provided, so the description carries the behavioral burden. It discloses pagination semantics (limit default 50, max 500, next_offset/offset loop) and the BingWebmasterError raise. It does not mention auth or rate limits, which prevents a 5.

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

Conciseness4/5

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

The description is well-structured with Args, Returns, Raises, and pagination note. It is concise and front-loads the core purpose, though the Args block somewhat overlaps with the input schema.

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?

The description is usable for a simple read operation with an output schema, covering pagination and errors. However, it does not distinguish this tool from the many sibling keyword/query statistics tools, leaving the agent without enough selection context.

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

Parameters4/5

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

Schema description coverage is only 40%, but the description compensates by explaining query, country (example 'gb'), and language (example 'en-GB'). Limit and offset are already documented in the schema, and the pagination note adds contextual meaning.

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?

States a clear verb and resource: 'Retrieve keyword statistics for a specific query.' However, it doesn't clarify how this differs from sibling tools like get_query_stats or get_keyword, so it stops short of full sibling differentiation.

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?

The description provides no explicit when-to-use guidance or alternatives. While 'for a specific query' implies a use case, the many sibling statistics tools make the lack of routing guidance a real gap.

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

get_page_query_statsA

Get detailed traffic statistics for a specific page.

Args: site_url: The URL of the site page: The specific page URL to get statistics for

Returns: List[QueryStats]: List of query statistics for the specified page

Raises: BingWebmasterError: If statistics cannot be retrieved

Returns at most limit rows (default 50, max 500). When the result reports a next_offset, call again with offset=next_offset to get more rows.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageYes
limitNoMaximum number of rows to return.
offsetNoIndex of the first row.
site_urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does disclose the pagination contract (limit default/max, offset continuation via next_offset), the return type, and a raised error. It doesn't cover auth, data freshness, or exact URL requirements, but the core call behavior is transparent.

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

Conciseness4/5

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

Purpose is front-loaded and the docstring is compact with clear Args/Returns/Raises sections. The Args section partly duplicates the schema, but the pagination note earns its place.

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

Completeness4/5

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

For a paginated read tool with an output schema, the description covers required params, pagination, and error behavior. It is slightly incomplete on sibling differentiation and on what 'detailed traffic statistics' concretely contain, but the output schema fills the return-shape gap.

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

Parameters4/5

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

The description adds meaning for the two required params that lack schema descriptions (site_url, page), and explains how limit/offset interact with next_offset. Schema already describes limit/offset, so the incremental value is moderate but real.

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?

States a specific verb ('Get') and resource ('detailed traffic statistics for a specific page'), and the return type clarifies it returns query-level stats for one page. It doesn't explicitly distinguish itself from sibling tools like get_query_page_stats or get_page_stats, so not a 5.

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 from the tool name and one-line purpose, and provides concrete pagination instructions (use offset=next_offset when next_offset is reported). It gives no guidance on when to choose this over sibling stats tools or any exclusions, so it stops at implied usage.

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

get_page_statsB

Get detailed traffic statistics for top pages.

Args: site_url: The URL of the site

Returns: List[QueryStats]: List of query statistics for top pages

Raises: BingWebmasterError: If statistics cannot be retrieved

Returns at most limit rows (default 50, max 500). When the result reports a next_offset, call again with offset=next_offset to get more rows.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of rows to return.
offsetNoIndex of the first row.
site_urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses pagination behavior (limit, offset, next_offset) and the BingWebmasterError exception, which is useful. However, it does not mention potential rate limits, permission requirements, or any side effects, and it does not clarify what 'top pages' means.

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

Conciseness4/5

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

The description is well-structured with Args/Returns/Raises sections and a clear one-line purpose. It includes necessary pagination details without unnecessary elaboration, though the formatting is a bit formal.

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

Completeness4/5

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

Given the tool's simplicity, an output schema, and three parameters, the description covers the essential usage: pagination, error handling, and parameter semantics. It is sufficient to call the tool correctly, though it could mention what constitutes 'top pages' or any prerequisites.

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

Parameters4/5

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

The schema describes limit and offset, but the description adds meaning by explaining how offset works with next_offset for pagination and the default/max limits. It also provides a description for site_url, which is missing from the schema, thus compensating for the 67% coverage gap.

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 verb 'Get' and the resource 'detailed traffic statistics for top pages'. It is specific enough to distinguish from many sibling tools that focus on query-level or crawl stats, though it does not explicitly name alternatives.

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?

There is no guidance on when to use this tool versus alternatives such as get_query_stats or get_rank_and_traffic_stats. No conditions, exclusions, or alternative references are provided, leaving the selection entirely to the agent's inference.

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

get_query_page_detail_statsA

Get detailed statistics for a specific query and page combination.

Args: site_url: The URL of the site query: The search query page: The specific page URL

Returns: List[DetailedQueryStats]: List of detailed statistics

Raises: BingWebmasterError: If statistics cannot be retrieved

Returns at most limit rows (default 50, max 500). When the result reports a next_offset, call again with offset=next_offset to get more rows.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageYes
limitNoMaximum number of rows to return.
queryYes
offsetNoIndex of the first row.
site_urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior4/5

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

With no annotations provided, the description carries the behavioral disclosure burden. It clearly explains the pagination loop with `limit`, `offset`, and `next_offset`, and documents that a `BingWebmasterError` can be raised. This adds useful behavioral context beyond the raw schema.

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

Conciseness4/5

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

The description is well organized with Args, Returns, and Raises sections, and the pagination behavior is front-loaded after the initial purpose. It is a bit longer than strictly necessary but each sentence contributes meaningful operational detail.

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?

The description covers the essential call patterns, pagination, and error behavior. With output schema present, return-field details are not required. However, given the large set of closely named statistics siblings, the definition would be stronger if it explained how this tool differs from `get_query_page_stats` or when to prefer one over the other.

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 only 40%, so the description must compensate. It clarifies that `page` is a page URL and explains the pagination behavior for `limit` and `offset`. However, `site_url` and `query` are only restated with minimal elaboration, so the gap is only partially filled.

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 states a specific verb and resource: 'Get detailed statistics for a specific query and page combination.' This clearly identifies what the tool does, though it does not explicitly distinguish it from the similar sibling tools like get_query_page_stats or get_page_query_stats.

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?

The description implies the tool is for retrieving detailed stats for a specific query and page URL, but it gives no explicit guidance about when to choose this over the many similar query/page statistic tools in the sibling list. No exclusions or alternatives are named.

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

get_query_page_statsA

Get detailed traffic statistics for pages matching a specific query.

Args: site_url: The URL of the site query: The search query to get statistics for

Returns: List[QueryStats]: List of page statistics for the query

Raises: BingWebmasterError: If statistics cannot be retrieved

Returns at most limit rows (default 50, max 500). When the result reports a next_offset, call again with offset=next_offset to get more rows.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of rows to return.
queryYes
offsetNoIndex of the first row.
site_urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden. It discloses the return type (List[QueryStats]), the raised exception (BingWebmasterError), row limits (default 50, max 500), and pagination via next_offset/offset. It does not state explicit read-only semantics or define 'detailed traffic statistics,' but key operational behaviors are well covered.

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 compact and well-structured: a one-line summary followed by Args/Returns/Raises sections and a concise pagination note. Every sentence contributes useful information, with no redundancy or fluff.

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?

Invocation details such as parameters, return type, error behavior, and pagination are reasonably complete, and an output schema likely covers the return structure. However, the dense cluster of sibling tools and absence of selection guidance leaves the agent at risk of confusing this tool with similar ones, especially with no annotations to fill the gap.

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 coverage is 50%, with site_url and query lacking schema descriptions. The description adds short glosses ('The URL of the site', 'The search query to get statistics for'), but these are largely obvious from the parameter names and add limited semantic detail. Optional limit and offset are already described in the schema.

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 and resource: 'Get detailed traffic statistics for pages matching a specific query.' This distinguishes it as a page-level stats tool for a query, but it does not explicitly differentiate it from close siblings like get_query_page_detail_stats or get_page_query_stats, so it misses the full sibling differentiation.

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 given on when to use this tool versus the many similar siblings (get_query_stats, get_query_traffic_stats, get_page_stats, get_query_page_detail_stats). The description only provides pagination instructions, not selection criteria or alternatives, so an agent has no help choosing among overlapping tools.

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

get_query_parametersA

Get a list of URL normalization parameters for a site.

URL parameters are used to identify which URL parameters should be considered for URL normalization (e.g., sorting, filtering parameters that don't change the content).

Args: site_url: The URL of the site

Returns: List[QueryParameter]: List of query parameters configuration

Raises: BingWebmasterError: If parameters cannot be retrieved

Returns at most limit rows (default 50, max 500). When the result reports a next_offset, call again with offset=next_offset to get more rows.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of rows to return.
offsetNoIndex of the first row.
site_urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description carries the behavioral disclosure burden. It discloses the failure mode via 'Raises: BingWebmasterError' and the pagination contract with 'next_offset', which goes beyond the input schema. It does not explicitly state read-only or authentication requirements, but 'Get' plus a Returns section make the non-mutating nature clear.

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

Conciseness4/5

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

The description is well organized with a front-loaded purpose, an Args/Returns/Raises section, and a pagination note. The middle explanation about URL parameters is slightly repetitive with the first sentence ('URL parameters' twice), but overall every major section contributes useful information without excessive fluff.

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

Completeness4/5

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

Given the low-to-moderate complexity, an output schema, and schema descriptions for limit/offset, the description is largely complete: it covers return type, failure behavior, and pagination. It lacks explicit guidance about when to choose the modifying siblings instead, but for a simple read operation this is a minor gap.

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

Parameters4/5

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

The schema documents limit and offset, and the description adds value by explaining that offset should be set from a returned next_offset when paginating, and by restating site_url in Args. The site_url parameter lacks a schema description, so the description at least minimally fills that gap, though it does not specify URL format requirements.

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?

The description opens with a specific verb and resource: 'Get a list of URL normalization parameters for a site.' This clearly distinguishes it from mutation siblings like add_query_parameter, remove_query_parameter, and enable_disable_query_parameter. The additional sentence about sorting/filtering parameters clarifies what the resource represents.

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

Usage Guidelines4/5

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

The description provides clear context that this is the read/retrieval operation for URL normalization parameters, and it gives practical pagination instructions for handling large result sets. It does not explicitly name the modifying sibling tools as alternatives, but the get-versus-mutate contrast is strongly implied by the description and tool names.

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

get_query_statsB

Get detailed traffic statistics for top queries.

Args: site_url: The URL of the site

Returns: List[QueryStats]: List of statistics for top queries

Raises: BingWebmasterError: If statistics cannot be retrieved

Returns at most limit rows (default 50, max 500). When the result reports a next_offset, call again with offset=next_offset to get more rows.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of rows to return.
offsetNoIndex of the first row.
site_urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral disclosure burden. It does add useful behavior: pagination via next_offset/offset, a default and maximum limit, and error type. However, it does not describe data scope, permissions, or what 'top queries' specifically means.

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

Conciseness4/5

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

The description is well-structured with Args, Returns, and Raises sections, plus a concise pagination note. There is minimal redundancy; the only slight overlap is between the opening sentence and the Returns line. Overall, every sentence contributes.

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

Completeness4/5

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

For a simple 3-parameter paginated query tool, the description covers the call pattern, return type, error raising, and pagination. The presence of an output schema likely covers return value details. It lacks tool-selection context and permission prerequisites, but is otherwise reasonably complete.

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?

The schema already documents limit and offset well. The description adds slightly to site_url by calling it 'The URL of the site' and explains how offset relates to next_offset. With 67% schema coverage, the description partially compensates but still does not clarify site_url format or constraints.

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 a specific action and resource: 'Get detailed traffic statistics for top queries.' This is unambiguous as a verb+resource statement, but it does not explicitly differentiate itself from similar siblings like get_query_traffic_stats or get_query_page_stats, so it loses a point.

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?

The description provides no guidance on when to use this tool versus alternatives such as get_query_traffic_stats or get_keyword_stats. It mentions how pagination works, but that is an invocation detail, not a selection criterion or context for choosing this tool.

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

get_query_traffic_statsA

Get detailed traffic statistics for a specific query.

Args: site_url: The URL of the site query: The search query to get statistics for

Returns: List[RankAndTrafficStats]: List of traffic statistics for the query

Raises: BingWebmasterError: If statistics cannot be retrieved

Returns at most limit rows (default 50, max 500). When the result reports a next_offset, call again with offset=next_offset to get more rows.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of rows to return.
queryYes
offsetNoIndex of the first row.
site_urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior4/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It states the return type, raises BingWebmasterError on failure, and explains limit/offset pagination semantics including the next_offset pattern. It does not mention rate limits or authentication, but for a read-only statistics tool the disclosed behavior is substantial.

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 well-structured and compact: a clear purpose sentence, an Args section, a Returns section, a Raises section, and a pagination note. Every sentence adds meaningful information without unnecessary verbosity.

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

Completeness4/5

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

The description is largely complete for invoking the tool: required inputs, return type, error behavior, and pagination are all covered. An output schema exists, so return field details are not required. The main gap is the lack of explicit routing guidance among the many query-stats sibling tools.

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 only 50%, so the description must compensate. It provides minimal semantics for site_url and query ('URL of the site', 'search query'), and it adds useful pagination semantics for limit and offset via the next_offset explanation. However, the required parameters lack deeper format or usage detail.

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 and resource: 'Get detailed traffic statistics for a specific query.' It is specific about needing site_url and query. However, it does not explicitly differentiate itself from siblings like get_query_stats or get_rank_and_traffic_stats, which also appear relevant based on their names.

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?

The description provides no guidance on when to choose this tool over the many sibling tools, such as get_query_stats, get_query_page_stats, or get_rank_and_traffic_stats. It does explain pagination usage, but that is operational guidance rather than tool-selection guidance.

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

get_rank_and_traffic_statsA

Get ranking and traffic statistics for a site.

Args: site_url: The URL of the site

Returns: List[RankAndTrafficStats]: List of ranking and traffic statistics

Raises: BingWebmasterError: If statistics cannot be retrieved

Returns at most limit rows (default 50, max 500). When the result reports a next_offset, call again with offset=next_offset to get more rows.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of rows to return.
offsetNoIndex of the first row.
site_urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses that it returns a list, supports pagination with limit and offset, and raises an error. This covers key behaviors, but it does not mention whether it is a read-only operation or any side effects, though none are indicated. Still, it provides useful context beyond the schema.

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 concise and well-structured, starting with a clear one-sentence summary followed by parameter and return details. It front-loads the core action and includes only essential information. No fluff.

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

Completeness4/5

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

Given the tool's moderate complexity (pagination, return list), the description covers the essential usage. It explains the pagination workflow clearly. However, it does not elaborate on the return object structure, but the output schema exists. It also lacks differentiation from siblings, but that is a usage guideline issue. Overall, it is adequate.

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 coverage is 67% (limit and offset are documented, site_url is not). The description adds minimal detail on site_url (just 'The URL of the site'), which adds little beyond the parameter name. For a tool where site_url is the key input, more context (e.g., format or examples) would be helpful.

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 states a clear verb and resource: 'Get ranking and traffic statistics for a site.' It identifies the site as the subject and mentions the type of data. However, it does not differentiate from several similar sibling tools like get_query_traffic_stats, get_page_stats, or get_url_traffic_info, which could confuse an agent.

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?

The description implies usage by asking for a site URL and explaining pagination, but it does not explicitly state when to use this tool over the many related sibling tools (e.g., 'for site-level stats, use this; for page-level, use that'). There is no exclusionary guidance.

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

get_site_movesB

Get site move information for a specific site.

Args: site_url: The URL of the site

Returns: List[SiteMoveSettings]: List of site move settings

Raises: BingWebmasterError: If the site move information cannot be retrieved

Returns at most limit rows (default 50, max 500). When the result reports a next_offset, call again with offset=next_offset to get more rows.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of rows to return.
offsetNoIndex of the first row.
site_urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

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

No annotations exist, so the description carries the full burden. It discloses the return type (List[SiteMoveSettings]), the error raised (BingWebmasterError), and pagination semantics (next_offset to continue), which is solid for a retrieval tool. However, it never explicitly states this is a read-only, non-destructive operation, and provides no detail about what a 'site move' entails or behavior on invalid site_url.

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

Conciseness4/5

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

The text is compact and front-loaded: purpose first, then Args/Returns/Raises, with the high-value pagination note last. Every sentence earns its place with little waste. The Docstring-style Args/Returns sections are slightly verbose but defensible. It is efficient without being under-specified.

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

Completeness4/5

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

For a low-complexity read tool with an output schema and moderate schema coverage, the description is nearly complete: it covers purpose, the required parameter, return type, error type, and pagination. The main missing piece is usage guidance relative to siblings and an explicit statement of read-only behavior, but nothing an agent needs to invoke the call correctly is absent.

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 coverage is 67% (limit and offset are described in the schema; site_url is not). The description adds minimal meaning for site_url ('The URL of the site') and, more valuably, explains the limit/offset relationship via next_offset — genuinely beyond the schema's standalone param descriptions. Since coverage is moderate, the description compensates reasonably but does not fully document site_url semantics.

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 states a specific verb ('Get') plus a resource ('site move information') and a clear scope ('for a specific site' via site_url). This is unambiguous and distinct from the actual write counterpart among siblings (submit_site_move). However, it does not explicitly name or disambiguate against siblings such as get_sites or submit_site_move, so it stops short of the top tier.

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?

There is no guidance on when to use this tool versus alternatives. It never distinguishes itself from get_sites, submit_site_move, or other retrieval tools, and offers no exclusions or conditions. The pagination note is operational behavior, not usage-vs-alternative direction, so an agent gets no help choosing this over a sibling.

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

get_site_rolesA

Get all roles assigned for a specific site.

Args: site_url: The URL of the site include_all_subdomains: Whether to include roles for all subdomains

Returns: List[SiteRole]: List of role assignments for the site

Raises: BingWebmasterError: If the roles cannot be retrieved

Returns at most limit rows (default 50, max 500). When the result reports a next_offset, call again with offset=next_offset to get more rows.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of rows to return.
offsetNoIndex of the first row.
site_urlYes
include_all_subdomainsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are provided, so the description carries full burden. It discloses pagination semantics (limit default/max, next_offset loop), the error type (BingWebmasterError), and the return type. This goes beyond the schema and provides useful behavioral context.

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

Conciseness4/5

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

Well-structured with clear sections for purpose, args, returns, raises, and pagination. Each sentence earns its place, though the return type is also present in the output schema, making that part slightly redundant.

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

Completeness5/5

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

Given no annotations, the description covers the tool's purpose, all parameters (via Args and the pagination note), return type, error behavior, and the pagination loop. An agent has enough information to select and invoke the tool correctly.

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

Parameters4/5

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

Schema description coverage is 50% and only covers limit/offset. The description's Args section adds meaning to site_url and include_all_subdomains, compensating for the gap. It also adds pagination context to limit/offset, which the schema does not fully convey.

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?

States a specific verb (Get), resource (roles), and scope (specific site). Clearly distinguishes from sibling add_site_roles/remove_site_role as a read operation.

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?

Does not explicitly state when to use this tool vs alternatives. The read-only nature is implied by the verb, but there is no mention of sibling add_site_roles/remove_site_role or any exclusion context. For a simple getter the context is reasonable, but guidance is only implied.

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

get_sitesA

Retrieve all sites in the user's Bing Webmaster Tools account.

Returns: List[Site]: List of sites associated with the account

Raises: BingWebmasterError: If the API request fails

Returns at most limit rows (default 50, max 500). When the result reports a next_offset, call again with offset=next_offset to get more rows.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of rows to return.
offsetNoIndex of the first row.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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

No annotations are provided, so the description carries the full behavioral burden. It discloses pagination limits (default 50, max 500), the next_offset continuation pattern, and the error type raised on API failure. This gives an agent a clear contract for iterating over the full site list.

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 compact and front-loaded: purpose first, then return/error behavior, then pagination. Every sentence earns its place and there is no redundant repetition of schema details.

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

Completeness5/5

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

With an output schema, error behavior, and pagination details provided, the description is complete for this tool. The only non-obvious operational detail, the next_offset loop, is explicitly explained.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds value by explaining the pagination protocol: 'call again with offset=next_offset to get more rows', which goes beyond the schema's basic descriptions of 'limit' and 'offset'.

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?

The opening line 'Retrieve all sites in the user's Bing Webmaster Tools account' names a specific verb and resource and defines the account scope. This is distinct from sibling tools like add_site, remove_site, and get_site_roles, none of which list all sites.

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

Usage Guidelines4/5

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

The description gives clear context: use this tool to retrieve all sites in the account, with explicit pagination guidance for getting more rows. It does not explicitly name alternatives or state when not to use it, but no sibling directly competes with this listing operation.

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

get_url_infoB

Retrieve detailed information for a specific URL.

Args: site_url: The URL of the site url: The specific URL to get information for

Returns: UrlInfo: Detailed information about the URL

Raises: BingWebmasterError: If URL information cannot be retrieved

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
site_urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
UrlYes
IsPageYes
__typeYes
HttpStatusYes
AnchorCountYes
DocumentSizeYes
DiscoveryDateYes
LastCrawledDateYes
TotalChildUrlCountYes

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the transparency burden. It does disclose the return type (UrlInfo) and a failure mode (BingWebmasterError), and the verb 'Retrieve' implies a read-only operation. However, it provides no context about permissions, rate limits, or what specific aspects of the URL are covered.

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

Conciseness4/5

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

The description is concise and well-structured with clear Args/Returns/Raises sections. Every section adds necessary information, and there is no redundant or filler content. The format makes the tool easy to parse quickly.

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?

The output schema covers return values, so the description does not need to restate those. However, the description lacks guidance on when to use this tool over alternatives and does not clarify the difference between 'detailed information' and the more specific sibling tools, leaving some ambiguity for agents in a large toolset.

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 0%, so the description must compensate. It provides brief glosses for both parameters, distinguishing site_url from url, but lacks format details, examples, or clarification of how the two parameters interact. This is minimal but sufficient for basic invocation.

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 a specific action ('Retrieve detailed information') applied to a specific resource ('a specific URL'). This distinguishes it from broader site-level tools, but it does not explicitly differentiate it from closely related siblings like get_url_traffic_info or get_children_url_info.

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 only explains what the tool does and its parameters, leaving an agent to infer appropriate usage from the name and sibling list.

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

get_url_submission_quotaB

Get information about URL submission quota and usage.

Args: site_url: The URL of the site

Returns: UrlSubmissionQuota: Current quota information

Raises: BingWebmasterError: If quota information cannot be retrieved

ParametersJSON Schema
NameRequiredDescriptionDefault
site_urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
__typeYes
DailyQuotaYes
MonthlyQuotaYes

TDQS

B3/5.0
Behavior3/5

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

Given no annotations, the description carries the burden of behavioral disclosure. It implies a read-only operation ('Get information'), and it mentions an error type ('Raises: BingWebmasterError') which adds some transparency. However, it does not explicitly state that it is non-destructive, does not describe any side effects, rate limits, or failure conditions beyond the generic error. This is minimal but provides basic clarity.

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

Conciseness4/5

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

The description is compact, front-loaded with the main purpose, and uses a clear Args/Returns/Raises structure. Every section is relevant and there is no fluff. It earns a high score for efficiency, though it could be more informative without losing conciseness.

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?

For a simple tool with one parameter and an output schema, the description covers the basic return and error. However, it does not mention when to use this quota tool versus the sibling 'get_content_submission_quota', and it does not explain the meaning of the returned quota in context. Given the simplicity of the tool, it is adequate but not fully complete.

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 for the parameter 'site_url'. The description only states 'The URL of the site', which is essentially a restatement of the parameter name and lacks details such as required format (e.g., protocol, domain), validation rules, or examples. For a single parameter with no schema guidance, this is insufficient.

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: 'Get information about URL submission quota and usage.' The verb 'Get' and the resource 'URL submission quota' are specific and unambiguous. It distinguishes from broader site management tools but does not explicitly differentiate from the sibling 'get_content_submission_quota', which is a similar quota-retrieval tool for content, so a small deduction.

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?

There is no guidance on when to use this tool versus alternatives. The description does not mention any context, prerequisites, or tell the agent when to pick this over 'get_content_submission_quota' or other quota-related tools. It merely states the function, leaving the agent to infer usage.

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

get_url_traffic_infoC

Get traffic details for a single page.

Args: site_url: The URL of the site url: The specific URL to get traffic info for

Returns: UrlTrafficInfo: Traffic information for the URL

Raises: BingWebmasterError: If traffic information cannot be retrieved

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
site_urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
UrlYes
ClicksYes
IsPageYes
__typeYes
ImpressionsYes

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It implies a read-only operation via 'Get', but does not explicitly state that it has no side effects, does not mention authentication requirements, rate limits, or what happens when the URL is invalid or not found. The Raises clause only mentions error handling, not behavioral traits.

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

Conciseness3/5

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

The description is concise and well-structured with clear Args/Returns/Raises sections, which is good. However, the content within those sections is repetitive with the schema and provides little additional value. It is not overlong, but it does not use its brevity effectively to convey essential distinctions.

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?

Given the tool's complexity and the existence of an output schema, the description still lacks crucial context. It does not specify what traffic metrics are returned (e.g., clicks, impressions, position), whether a date range is involved, or how this differs from get_page_stats and get_rank_and_traffic_stats. Without this, an agent cannot confidently select or correctly invoke the tool.

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. The Args section provides brief explanations ('site_url: The URL of the site', 'url: The specific URL to get traffic info for'), but these are largely tautological, restating the parameter names without adding format constraints, required patterns, or relationships. The description adds minimal meaning beyond the schema.

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 states 'Get traffic details for a single page' which is a clear verb+resource. It identifies the tool as fetching traffic information for one URL. However, it does not differentiate from many siblings like get_page_stats, get_rank_and_traffic_stats, or get_url_info, which also target single pages, so it lacks the specificity needed to distinguish it in this crowded space.

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?

There is no guidance on when to use this tool versus its many siblings. It does not mention alternatives, exclusions, or context for selection. The description only restates the purpose without indicating scenarios where this tool is preferred, leaving an agent to guess among dozens of similar tools.

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

remove_blocked_urlA

Remove a blocked URL from a site.

Args: site_url: The URL of the site blocked_url: The URL to be unblocked entity_type: The type of entity to unblock (Page or Directory) request_type: The type of request (CacheOnly or FullRemoval) date: The date the URL was blocked

Raises: BingWebmasterError: If URL cannot be unblocked

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNo
site_urlYes
blocked_urlYes
entity_typeNo
request_typeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses that a BingWebmasterError is raised if the URL cannot be unblocked, which is useful. However, it does not mention the destructive nature explicitly, success behavior, or any side effects beyond removal. It is partially transparent but lacks depth.

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 concise and well-structured: a one-line purpose, a clear argument list, and a Raises section. It is front-loaded and each element earns its place without redundancy.

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?

Given there is an output schema (not shown) and the tool is relatively simple, the description covers the arguments and errors. However, it does not explain the practical differences between CacheOnly and FullRemoval, nor any prerequisites like site verification. For correct invocation, an agent might need more context, so completeness is moderate.

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

Parameters4/5

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

Schema coverage is 0%, so the description must explain the parameters. It does: site_url and blocked_url are straightforward, and entity_type and request_type are given labels (Page/Directory, CacheOnly/FullRemoval) that the schema lacks (only integer enums). date is described but its role is ambiguous. This meaningfully adds to the schema, though not exhaustively.

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?

The description clearly states the tool's purpose: 'Remove a blocked URL from a site.' This is a specific verb+resource combination that immediately distinguishes it from sibling tools like add_blocked_url and get_blocked_urls. The list of arguments further clarifies the operation.

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?

The description implies usage (remove instead of add), but it does not explicitly state when to use this tool versus alternatives. There is no mention of prerequisites, such as the URL must already be blocked, or when to use a different removal method. The guidance is adequate but not explicit.

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

remove_country_region_settingsB

Remove country/region settings from a specific site.

Args: site_url: The URL of the site settings: The country/region settings to remove

Raises: BingWebmasterError: If settings cannot be removed

ParametersJSON Schema
NameRequiredDescriptionDefault
settingsYes
site_urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden. It mentions `Raises: BingWebmasterError` but does not disclose other behavioral aspects: whether removal is permanent, if there are side effects, rate limits, or required permissions. It also doesn't describe the return value, which is crucial for a mutation operation.

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

Conciseness4/5

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

The description is concise with a docstring format, listing parameters and exceptions. It's appropriately sized for the tool's complexity. However, the parameter descriptions are minimal, and the Raises section could be more informative, but overall it's efficient.

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?

Given the tool has a nested object parameter (`settings` with a defined schema) and no annotations, the description is incomplete. It doesn't explain the structure of `settings` or how to construct it for removal, nor does it describe the return value or side effects. The output schema exists but is not referenced. It's adequate but has gaps.

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 0%, so the description must compensate. The description lists the two parameters (site_url, settings) but provides no additional detail beyond their names. The schema defines `settings` as a complex object with a required structure, but the description does not explain how to specify the settings to remove, such as whether partial objects are accepted or which fields are needed.

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 states the verb 'Remove' and the resource 'country/region settings from a specific site', which is clear. It is distinguishable from siblings like 'add_country_region_settings' and 'get_country_region_settings' by the verb. However, it does not explicitly differentiate from other 'remove_' tools, but the resource is specific enough.

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?

The description implies it is used to remove settings, but provides no explicit guidance on when to use this tool versus alternatives like 'add_country_region_settings' or 'get_country_region_settings'. It lacks context on prerequisites, such as whether the site must be verified or settings must exist.

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

remove_feedC

Remove a previously submitted sitemap feed.

Args: site_url: The URL of the site feed_url: The URL of the feed to remove

Raises: BingWebmasterError: If feed cannot be removed

ParametersJSON Schema
NameRequiredDescriptionDefault
feed_urlYes
site_urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full responsibility for disclosing behavior. It only states the action and that an error is raised on failure, but does not mention side effects, idempotency, permission requirements, or impact on other data. This is insufficient for a destructive operation.

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

Conciseness4/5

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

The description is concise and well-structured with an Args and Raises section. It front-loads the purpose and includes only relevant information. No extraneous content.

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 destructive operation with no annotations and no output schema details, the description is incomplete. It omits prerequisites (site must be verified, feed must exist), potential side effects, and return behavior. An agent would lack information needed to call it safely and correctly.

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?

The schema provides zero description coverage, so the description must define the parameters. It does give one-line definitions for both site_url and feed_url, which clarifies their purpose, but lacks detail on format or validation. It adds some meaning but does not fully compensate for the schema gap.

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 ('Remove') and the resource ('previously submitted sitemap feed'), making the purpose unambiguous. It does not explicitly differentiate from sibling tools like remove_site or remove_blocked_url, but the resource is specific enough to avoid confusion.

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?

The description gives no guidance on when to use this tool versus alternatives, nor any prerequisites (e.g., the site must be verified, the feed must have been submitted via submit_feed). It simply states the action without context.

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

remove_page_preview_blockB

Remove a page preview block.

Args: site_url: The URL of the site url: The URL to remove the page preview block from

Raises: BingWebmasterError: If preview block cannot be removed

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
site_urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are present, so the description carries the full burden of behavioral disclosure. It acknowledges the destructive 'Remove' action and mentions a BingWebmasterError, but it does not disclose prerequisites such as site ownership, whether the block must already exist, or whether removal is reversible.

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 concise and front-loaded, with a one-sentence summary followed directly by the Args and Raises sections. There is no redundant or filler content; every line serves a clear purpose.

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?

The description gives the operation, both required arguments, and an error condition, which is adequate for a simple two-parameter removal call. However, it omits usage context, permissions, and any connection to related preview-block tools, so an agent must infer operational context.

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 0%, so the parameter descriptions in the tool description are the only source of meaning. They distinguish site_url as 'the URL of the site' and url as the page from which to remove the preview block, but they provide no format, examples, or URL conventions, which leaves some ambiguity.

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 uses a specific verb ('Remove') and explicit resource ('page preview block'), so the core operation is unambiguous. It does not explicitly differentiate itself from sibling tools like remove_deep_link_block or add_page_preview_block, but the resource name and arguments make the intent clear.

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?

The description implies the tool is used when a page preview block should be removed, but it provides no explicit when-to-use or when-not-to-use guidance. No alternatives are mentioned, leaving the agent to infer the appropriate selection from the tool name and sibling list.

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

remove_query_parameterC

Remove a URL normalization parameter from a site.

Args: site_url: The URL of the site query_parameter: The query parameter to remove

Raises: BingWebmasterError: If parameter cannot be removed

ParametersJSON Schema
NameRequiredDescriptionDefault
site_urlYes
query_parameterYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description must carry disclosure. It mentions a Raises condition but doesn't cover whether removal is permanent, whether the parameter must first exist, or any side effects. For a mutating operation this is thin.

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

Conciseness4/5

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

Single-sentence purpose then Args/Raises blocks. No fluff; the action sentence is front-loaded.

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?

Two required parameters, no output schema, no annotations. The description doesn't state what counts as a valid site_url or what 'remove' does to existing crawl data, and the Raises line lacks conditions beyond failure.

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?

The Args section just restates the parameter names with trivial glosses; with 0% schema coverage the description was expected to compensate with concrete formats or examples, and it doesn't.

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 identifies the action ('Remove') and resource ('a URL normalization parameter from a site'), making the core purpose unambiguous. It doesn't explicitly differentiate from the sibling enable_disable_query_parameter, but the verb 'remove' distinguishes it well enough in most contexts.

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 on when to use removal versus toggling via enable_disable_query_parameter, or what prerequisites exist (e.g., site must be added/verified). The usage context is only implied by the verb 'remove'.

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

remove_siteA

Remove a site from Bing Webmaster Tools.

Args: site_url: The URL of the site to remove

Raises: BingWebmasterError: If the site cannot be removed

ParametersJSON Schema
NameRequiredDescriptionDefault
site_urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

No annotations are present, so the description carries the full burden. It does disclose that a BingWebmasterError is raised if removal fails, which adds behavioral context. However, it does not mention whether removal is irreversible, whether site verification is required, or what associated data (e.g., roles, feeds, blocks) might be affected.

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 compact and front-loaded with the purpose, followed by parameter and error details in clean sections. No superfluous text exists; every line adds needed information.

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

Completeness4/5

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

For a one-parameter removal operation with an output schema present, the description covers the purpose, parameter, and error condition. It does not mention preconditions like site existence/verification or consequences of removal, but the operation is simple enough that an agent can call it correctly with the given information.

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

Parameters4/5

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

Schema description coverage is 0%, so the description's 'Args' section is essential. It clearly defines site_url as 'The URL of the site to remove,' giving the single parameter meaningful semantics beyond the schema's bare 'Site Url' title. It lacks format or example values, but for a simple URL string this is sufficient.

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?

The description uses a specific verb ('Remove') and a specific resource ('a site from Bing Webmaster Tools'), making the tool's core purpose unambiguous. It also differentiates from siblings like remove_site_role, remove_feed, and remove_blocked_url by referring to the site-level resource.

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?

The intended use is implied from 'Remove a site from Bing Webmaster Tools,' but there is no explicit guidance on when to choose this over alternatives, no prerequisites, and no mention of when not to use it. The sibling list suggests many removal/role tools, yet no differentiation is provided.

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

remove_site_roleB

Remove a user's site access.

Args: site_url: The URL of the site site_role: The site role to remove

Raises: BingWebmasterError: If the role cannot be removed

ParametersJSON Schema
NameRequiredDescriptionDefault
site_urlYes
site_roleYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

There are no annotations, so the description carries the full burden for surfacing side effectscor. It discloses only that a BingWebmasterError is raised when removal fails. It does not state whether removal is destructive/permanent, whether the role object must match an existing role exactly, or how the user is identified (e.g., by Email in the site_role object).

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 front-loaded sentence followed by compact docstring fields. There is no redundancy or fluff; all lines serve a purpose (summary, args, raised error).

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?

The description omits essential context for a destructive operation: how to construct/pass site_role, whether to fetch it first via get_site_roles, what success/failure responses look like, and whether this permanently removes the user's access. With no output schema and no annotations, an agent is left with an under-specified call contract.

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?

The 'Args' section merely restates the parameter names: 'site_url: The URL of the site' and 'site_role: The site role to remove'. It does not explain the required shape of the SiteRole object (fields like Email, Role, Site), which is especially confusing since site_role is typed as a complex object in the schema. The description adds almost no meaning beyond what an agent can infer from names.

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?

The description uses a specific verb and object: 'Remove a user's site role.' This clearly distinguishes the tool from its sibling tools get_site_roles and add_site_roles without needing to read further.

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 given on when to use this operation versus alternatives like add_site_roles, nor any prerequisites (e.g., fetching the role via get_site_roles first). The only implied usage is the action word 'remove', which is not enough for an agent to safely choose and invoke this tool.

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

save_crawl_settingsC

Save new crawl settings for a specific site.

Args: site_url: The URL of the site crawl_settings: The new crawl settings to apply

Raises: BingWebmasterError: If settings cannot be saved

ParametersJSON Schema
NameRequiredDescriptionDefault
site_urlYes
crawl_settingsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description must carry the behavioral disclosure burden. It only says settings are saved and that a BingWebmasterError may be raised; it does not state whether existing settings are overwritten, whether the site must already exist, or any authorization prerequisites.

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

Conciseness4/5

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

The description is compact and well-structured as a docstring with Args and Raises sections, with the purpose front-loaded and no filler. It loses a point only because the Args lines add little beyond the parameter names.

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 a nested parameter object and no annotations, this description is incomplete. It lacks usage context, an explanation of the crawl_settings structure, and behavioral caveats; the output schema does not compensate for these selection and invocation gaps.

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 it only restates the parameter names ('The URL of the site', 'The new crawl settings to apply'). It fails to explain the required CrawlSettings shape, such as the 24-element CrawlRate integer array or the boolean flags.

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?

States precisely that it saves crawl settings for a specific site, with a clear verb (save) and resource (crawl settings). It naturally distinguishes itself from sibling get_crawl_settings as the write counterpart, and no other sibling shares the 'save' verb.

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 on when to use this tool instead of alternatives like get_crawl_settings, nor any preconditions such as site verification. An agent must infer its role purely from the name, since the description only restates the purpose and arguments.

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

submit_contentB

Submit content for a specific URL.

Args: site_url: Site url E.g.: http://example.com url: Url to submit E.g.: http://example.com/url1.html http_message: HTTP message (base64 encoded) structured_data: Structured Data (base64 encoded) dynamic_serving: Device targeting (0-5). {none = 0, PC-laptop = 1, mobile = 2, AMP = 3, tablet = 4, non-visual browser = 5}

Raises: BingWebmasterError: If content cannot be submitted

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
site_urlYes
http_messageYes
dynamic_servingYes
structured_dataYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It mentions that a BingWebmasterError is raised on failure, which is useful, but it does not disclose whether the operation is destructive, whether it overwrites existing content, whether it requires special permissions, or what the response contains. For a mutation tool with zero annotation coverage, this is a significant gap.

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

Conciseness4/5

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

The description is compact and front-loaded with the core action. The parameter list is organized and the dynamic_serving mapping is clearly formatted. The Raises section adds useful error information. It is slightly verbose with the full parameter list repeated from the schema, but overall it earns its place.

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?

The tool has 5 required parameters, no annotations, and an output schema exists but the description does not explain return values. The description covers the action, parameters, and error behavior, but lacks guidance on when to use it, what the response looks like, and any side effects. For a content submission tool with no annotations, this is adequate but not complete.

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 0%, so the description must compensate. It does add meaning for dynamic_serving by listing the enum-like mapping (0-5 with device names), which is valuable. However, http_message and structured_data are only described as 'base64 encoded' with no further context on format or required structure, and site_url/url are only given examples. The description partially compensates but leaves several parameters under-explained.

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 states a clear verb and resource: 'Submit content for a specific URL.' This distinguishes it from sibling tools like submit_url and submit_feed, which submit URLs or feeds rather than content payloads. However, it doesn't explicitly contrast with those siblings, so it loses a point for not naming the differentiation.

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?

The description implies usage by listing required parameters and the action, but it does not state when to use this tool versus alternatives like submit_url or submit_feed. There is no explicit when/when-not guidance, so an agent must infer that this is for content submission rather than URL-only submission.

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

submit_feedB

Submit a sitemap feed for indexing.

Args: site_url: The URL of the site feed_url: The URL of the sitemap feed

Raises: BingWebmasterError: If feed cannot be submitted

ParametersJSON Schema
NameRequiredDescriptionDefault
feed_urlYes
site_urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It does disclose the error condition via the Raises section (BingWebmasterError if feed cannot be submitted), which is useful. However, it omits side effects (e.g., whether submitting an existing feed replaces it), idempotency, rate limits, or auth requirements. The Raises note adds some value but the mutation's side-effect profile is unaddressed.

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

Conciseness4/5

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

The description is compact and well-structured: a one-sentence purpose up front, followed by an Args block and a Raises block. The front-loaded purpose sentence makes the tool's role immediately clear, and each section (args, error) earns its place. Some brevity comes at the cost of missing guidance, but structurally it is efficient and well-ordered.

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?

This is a mutation-style tool with no annotations, 0% schema coverage, and an output schema present but not described. For an agent to invoke it correctly it would benefit from knowing side effects, idempotency, prerequisites (site ownership/verification), and whether re-submission overwrites an existing feed. None of this is covered. The two parameters are documented at a basic level, but the broader behavioral context is missing, making this incomplete for a mutation tool with zero annotation support.

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 0%, so the description must compensate. The Args section adds basic meaning beyond the bare schema: site_url is 'The URL of the site' and feed_url is 'The URL of the sitemap feed.' This is minimal but genuinely clarifies the role of each parameter versus the schema alone. It doesn't specify URL formats, whether site_url must be a verified/owned site, or feed format constraints, so it's adequate but not rich.

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 states a clear action: 'Submit a sitemap feed for indexing' — a specific verb (submit) plus resource (sitemap feed) plus purpose (for indexing). This distinguishes it from sibling retrieval tools (get_feeds, get_feed_details) and deletion tools (remove_feed), and the resource type separates it from submit_url and submit_content. It doesn't explicitly name any sibling, but the action+resource is specific enough to differentiate.

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?

There is no guidance on when to use this tool versus alternatives. Among siblings there are several submission tools (submit_url, submit_url_batch, submit_content) and feed-management tools (get_feeds, remove_feed) that an agent could confuse it with, but the description offers no selection criteria, prerequisites (e.g., site must be verified/owned), or conditions that would make this the right choice.

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

submit_site_moveC

Submit a site move request.

Args: site_url: The URL of the site settings: The site move settings containing move configuration

Raises: BingWebmasterError: If the site move submission fails

ParametersJSON Schema
NameRequiredDescriptionDefault
settingsYes
site_urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It does disclose that a BingWebmasterError is raised on failure, but it does not reveal the mutating nature of a site move, potential side effects, or any ownership/authorization requirements. This is a significant transparency gap for a 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.

Conciseness4/5

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

The description is short, front-loaded with the core purpose, and uses a clean Args/Raises structure. Every line is brief, though some content is not especially informative.

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 a complex nested settings object and opaque enum values, the description is incomplete. An agent would need the schema to discover required fields, and even then the enum semantics are unexplained. The Raises clause adds a small amount of context but does not fill the gap.

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 needed to compensate, but it mostly restates the parameter names: 'The URL of the site' and 'The site move settings containing move configuration' add little beyond the schema titles. It fails to document the required fields inside SiteMoveSettings or the meaning of the numeric MoveType/MoveScope enums.

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 states a clear verb and resource: 'Submit a site move request.' This distinguishes it from read-style siblings like get_site_moves, though it does not explain any context beyond the bare operation.

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 given on when to use this tool versus alternatives, when not to use it, or what prerequisites exist (e.g., site verification, valid move scope). Usage is only implied by the name and verb, so the agent must infer the appropriate context.

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

submit_urlA

Submit a single URL for indexing.

It is possible to submit only limited number of url. get_url_submission_quota should be called to determine how much urls can be submitted.

Args: site_url: The URL of the site url: The specific URL to submit

Raises: BingWebmasterError: If URL cannot be submitted

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
site_urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries full disclosure responsibility. It does disclose the limited-quota behavior and documents a Raises case for BingWebmasterError. However, it does not explain whether submission is asynchronous, whether duplicate/resubmission is allowed, or what a successful submission implies beyond the return value covered by the output schema.

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

Conciseness4/5

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

The description is compact and logically ordered: purpose, quota prerequisite, args, and exceptions. The purpose sentence is front-loaded and effective. Minor grammar issues like 'limited number of url' and 'how much urls' slightly reduce polish but do not hurt clarity.

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

Completeness4/5

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

For a simple two-parameter submission tool, the description covers the essential action, the quota check, parameter roles, and the error path. The output schema presumably documents the return value, so that is not a gap. It could be more complete by naming the bulk alternative explicitly or giving URL examples, but nothing essential for invoking the tool is missing.

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?

The schema provides zero parameter descriptions (0% coverage), so the description must compensate. The Args section gives each parameter a basic role: site_url is the URL of the site and url is the specific URL to submit. This adds minimal meaning beyond the schema, but it omits format details, URL format expectations, and the exact relationship between the two required URLs.

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?

The description opens with a specific verb and object: 'Submit a single URL for indexing.' This clearly defines both the action and the resource. The word 'single' also distinguishes it from the sibling tool submit_url_batch, so an agent can tell them apart immediately.

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

Usage Guidelines4/5

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

The description gives a clear, actionable prerequisite: call get_url_submission_quota to determine how many URLs can be submitted. It does not explicitly name alternatives like submit_url_batch for bulk submissions or state when not to use this tool, so it stops short of full exclusion guidance.

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

submit_url_batchB

Submit multiple URLs for indexing in a single request.

The max number of urls that can be submitted in a batch is 500 unless it exceeds the available quota. get_url_submission_quota should be called to determine how much urls can be submitted.

Args: site_url: The URL of the site url_list: List of URLs to submit

Raises: BingWebmasterError: If URLs cannot be submitted

ParametersJSON Schema
NameRequiredDescriptionDefault
site_urlYes
url_listYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions the 500 URL max, the quota check, and an error case, but does not disclose whether the batch is atomic, how partial failures are handled, or any side effects. This is insufficient for a 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.

Conciseness4/5

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

The description is concise and well-structured, front-loading the primary purpose, then adding the limit, quota note, args, and error. It avoids unnecessary detail and is easy to parse.

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?

The description covers the core action, batch limit, quota dependency, and error behavior. However, it omits prerequisites like site verification, whether the operation is synchronous, and any success response semantics (though output schema exists, so return format is not required). It is adequate but not complete.

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?

With 0% schema description coverage, the description is the only source for parameter meaning. It provides only trivial descriptions ('The URL of the site' and 'List of URLs to submit') that essentially restate the parameter names without adding constraints, URL format, or prerequisites.

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 it submits multiple URLs for indexing in a single request, which directly distinguishes it from the single-URL submit_url sibling. The verb and resource are specific, though it doesn't explicitly name the alternative.

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?

It provides a clear usage guideline by advising to call get_url_submission_quota to determine the allowable number of URLs, which is a concrete step. However, it does not explicitly state when to prefer this over submit_url or other submission tools, nor any exclusions.

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

verify_siteB

Attempt to verify ownership of a site.

Args: site_url: The URL of the site to verify

Returns: bool: True if verification was successful

Raises: BingWebmasterError: If verification fails

ParametersJSON Schema
NameRequiredDescriptionDefault
site_urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description must carry the full burden of behavioral disclosure. It mentions the return type (bool) and that it raises BingWebmasterError, but does not state whether the operation is read-only, whether it has side effects, or whether it is idempotent. For a verification tool, it should clarify that it does not modify state, which is missing.

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

Conciseness4/5

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

The description is concise and well-structured with Args, Returns, and Raises sections. The opening sentence is clear and front-loaded. There is no fluff, and each line serves a purpose. A minor deduction for not including usage guidance, but overall it is efficient.

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?

Given the existence of an output schema (bool return) and a single parameter, the description is minimal. It does not mention prerequisites, such as the site needing to be added first, nor does it explain what 'verification' entails in the broader site-management workflow. This leaves gaps for an agent to call it incorrectly.

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?

The schema coverage is 0%, so the description must compensate. It provides an Args section with a brief explanation for site_url: 'The URL of the site to verify.' This adds a little context beyond the schema's 'Site Url' title, but does not specify format, validation, or examples. It meets a baseline but does not fully enrich the parameter meaning.

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?

The description clearly states the tool's purpose: 'Attempt to verify ownership of a site.' This specifies a verb (verify), a resource (ownership of a site), and distinguishes it from sibling tools like add_site or get_sites. The 'Attempt' nuance adds appropriate uncertainty without clouding the core function.

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 given on when to use this tool versus alternatives. It does not mention that verification likely follows adding a site, nor does it contrast with any sibling. The description gives no context about the typical workflow or prerequisites, leaving the agent to infer usage.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 62 tool updatesv0.2.0
    • Changedadd_blocked_url2 fields changed
      • removedInput schema / properties / self
        Removed value: -{
        -  "title": "self",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "self",
        -  "site_url",
        -  "blocked_url"
        -]New value: +[
        +  "site_url",
        +  "blocked_url"
        +]
    • Changedadd_connected_page2 fields changed
      • removedInput schema / properties / self
        Removed value: -{
        -  "title": "self",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "self",
        -  "site_url",
        -  "master_url"
        -]New value: +[
        +  "site_url",
        +  "master_url"
        +]
    • Changedadd_country_region_settings2 fields changed
      • removedInput schema / properties / self
        Removed value: -{
        -  "title": "self",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "self",
        -  "site_url",
        -  "settings"
        -]New value: +[
        +  "site_url",
        +  "settings"
        +]
    • Changedadd_deep_link_block2 fields changed
      • removedInput schema / properties / self
        Removed value: -{
        -  "title": "self",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "self",
        -  "site_url",
        -  "market",
        -  "search_url",
        -  "deep_link_url"
        -]New value: +[
        +  "site_url",
        +  "market",
        +  "search_url",
        +  "deep_link_url"
        +]
    • Changedadd_page_preview_block2 fields changed
      • removedInput schema / properties / self
        Removed value: -{
        -  "title": "self",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "self",
        -  "site_url",
        -  "url",
        -  "reason"
        -]New value: +[
        +  "site_url",
        +  "url",
        +  "reason"
        +]
    • Changedadd_query_parameter2 fields changed
      • removedInput schema / properties / self
        Removed value: -{
        -  "title": "self",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "self",
        -  "site_url",
        -  "query_parameter"
        -]New value: +[
        +  "site_url",
        +  "query_parameter"
        +]
    • Changedadd_site2 fields changed
      • removedInput schema / properties / self
        Removed value: -{
        -  "title": "self",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "self",
        -  "site_url"
        -]New value: +[
        +  "site_url"
        +]
    • Changedadd_site_roles2 fields changed
      • removedInput schema / properties / self
        Removed value: -{
        -  "title": "self",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "self",
        -  "site_url",
        -  "delegated_url",
        -  "user_email",
        -  "authentication_code",
        -  "is_administrator",
        -  "is_read_only"
        -]New value: +[
        +  "site_url",
        +  "delegated_url",
        +  "user_email",
        +  "authentication_code",
        +  "is_administrator",
        +  "is_read_only"
        +]
    • Changedenable_disable_query_parameter2 fields changed
      • removedInput schema / properties / self
        Removed value: -{
        -  "title": "self",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "self",
        -  "site_url",
        -  "query_parameter",
        -  "is_enabled"
        -]New value: +[
        +  "site_url",
        +  "query_parameter",
        +  "is_enabled"
        +]
    • Changedfetch_url2 fields changed
      • removedInput schema / properties / self
        Removed value: -{
        -  "title": "self",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "self",
        -  "site_url",
        -  "url"
        -]New value: +[
        +  "site_url",
        +  "url"
        +]
    • Changedget_active_page_preview_blocks4 fields changed
      • addedInput schema / properties / limit
        Added value: +{
        +  "default": 50,
        +  "description": "Maximum number of rows to return.",
        +  "maximum": 500,
        +  "minimum": 1,
        +  "title": "Limit",
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "description": "Index of the first row.",
        +  "minimum": 0,
        +  "title": "Offset",
        +  "type": "integer"
        +}
      • removedInput schema / properties / self
        Removed value: -{
        -  "title": "self",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "self",
        -  "site_url"
        -]New value: +[
        +  "site_url"
        +]
    • Changedget_blocked_urls4 fields changed
      • addedInput schema / properties / limit
        Added value: +{
        +  "default": 50,
        +  "description": "Maximum number of rows to return.",
        +  "maximum": 500,
        +  "minimum": 1,
        +  "title": "Limit",
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "description": "Index of the first row.",
        +  "minimum": 0,
        +  "title": "Offset",
        +  "type": "integer"
        +}
      • removedInput schema / properties / self
        Removed value: -{
        -  "title": "self",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "self",
        -  "site_url"
        -]New value: +[
        +  "site_url"
        +]
    • Changedget_children_url_info4 fields changed
      • addedInput schema / properties / limit
        Added value: +{
        +  "default": 50,
        +  "description": "Maximum number of rows to return.",
        +  "maximum": 500,
        +  "minimum": 1,
        +  "title": "Limit",
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "description": "Index of the first row.",
        +  "minimum": 0,
        +  "title": "Offset",
        +  "type": "integer"
        +}
      • removedInput schema / properties / self
        Removed value: -{
        -  "title": "self",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "self",
        -  "site_url",
        -  "url"
        -]New value: +[
        +  "site_url",
        +  "url"
        +]
    • Changedget_children_url_traffic_info4 fields changed
      • addedInput schema / properties / limit
        Added value: +{
        +  "default": 50,
        +  "description": "Maximum number of rows to return.",
        +  "maximum": 500,
        +  "minimum": 1,
        +  "title": "Limit",
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "description": "Index of the first row.",
        +  "minimum": 0,
        +  "title": "Offset",
        +  "type": "integer"
        +}
      • removedInput schema / properties / self
        Removed value: -{
        -  "title": "self",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "self",
        -  "site_url",
        -  "url"
        -]New value: +[
        +  "site_url",
        +  "url"
        +]
    • Changedget_connected_pages4 fields changed
      • addedInput schema / properties / limit
        Added value: +{
        +  "default": 50,
        +  "description": "Maximum number of rows to return.",
        +  "maximum": 500,
        +  "minimum": 1,
        +  "title": "Limit",
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "description": "Index of the first row.",
        +  "minimum": 0,
        +  "title": "Offset",
        +  "type": "integer"
        +}
      • removedInput schema / properties / self
        Removed value: -{
        -  "title": "self",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "self",
        -  "site_url"
        -]New value: +[
        +  "site_url"
        +]
    • Changedget_content_submission_quota2 fields changed
      • removedInput schema / properties / self
        Removed value: -{
        -  "title": "self",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "self",
        -  "site_url"
        -]New value: +[
        +  "site_url"
        +]
    • Changedget_country_region_settings4 fields changed
      • addedInput schema / properties / limit
        Added value: +{
        +  "default": 50,
        +  "description": "Maximum number of rows to return.",
        +  "maximum": 500,
        +  "minimum": 1,
        +  "title": "Limit",
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "description": "Index of the first row.",
        +  "minimum": 0,
        +  "title": "Offset",
        +  "type": "integer"
        +}
      • removedInput schema / properties / self
        Removed value: -{
        -  "title": "self",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "self",
        -  "site_url"
        -]New value: +[
        +  "site_url"
        +]
    • Changedget_crawl_issues4 fields changed
      • addedInput schema / properties / limit
        Added value: +{
        +  "default": 50,
        +  "description": "Maximum number of rows to return.",
        +  "maximum": 500,
        +  "minimum": 1,
        +  "title": "Limit",
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "description": "Index of the first row.",
        +  "minimum": 0,
        +  "title": "Offset",
        +  "type": "integer"
        +}
      • removedInput schema / properties / self
        Removed value: -{
        -  "title": "self",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "self",
        -  "site_url"
        -]New value: +[
        +  "site_url"
        +]
    • Changedget_crawl_settings2 fields changed
      • removedInput schema / properties / self
        Removed value: -{
        -  "title": "self",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "self",
        -  "site_url"
        -]New value: +[
        +  "site_url"
        +]
    • Changedget_crawl_stats4 fields changed
      • addedInput schema / properties / limit
        Added value: +{
        +  "default": 50,
        +  "description": "Maximum number of rows to return.",
        +  "maximum": 500,
        +  "minimum": 1,
        +  "title": "Limit",
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "description": "Index of the first row.",
        +  "minimum": 0,
        +  "title": "Offset",
        +  "type": "integer"
        +}
      • removedInput schema / properties / self
        Removed value: -{
        -  "title": "self",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "self",
        -  "site_url"
        -]New value: +[
        +  "site_url"
        +]
    • Changedget_deep_link4 fields changed
      • addedInput schema / properties / limit
        Added value: +{
        +  "default": 50,
        +  "description": "Maximum number of rows to return.",
        +  "maximum": 500,
        +  "minimum": 1,
        +  "title": "Limit",
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "description": "Index of the first row.",
        +  "minimum": 0,
        +  "title": "Offset",
        +  "type": "integer"
        +}
      • removedInput schema / properties / self
        Removed value: -{
        -  "title": "self",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "self",
        -  "site_url",
        -  "url"
        -]New value: +[
        +  "site_url",
        +  "url"
        +]
    • Changedget_deep_link_algo_urls4 fields changed
      • addedInput schema / properties / limit
        Added value: +{
        +  "default": 50,
        +  "description": "Maximum number of rows to return.",
        +  "maximum": 500,
        +  "minimum": 1,
        +  "title": "Limit",
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "description": "Index of the first row.",
        +  "minimum": 0,
        +  "title": "Offset",
        +  "type": "integer"
        +}
      • removedInput schema / properties / self
        Removed value: -{
        -  "title": "self",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "self",
        -  "site_url"
        -]New value: +[
        +  "site_url"
        +]
    • Changedget_deep_link_blocks4 fields changed
      • addedInput schema / properties / limit
        Added value: +{
        +  "default": 50,
        +  "description": "Maximum number of rows to return.",
        +  "maximum": 500,
        +  "minimum": 1,
        +  "title": "Limit",
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "description": "Index of the first row.",
        +  "minimum": 0,
        +  "title": "Offset",
        +  "type": "integer"
        +}
      • removedInput schema / properties / self
        Removed value: -{
        -  "title": "self",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "self",
        -  "site_url"
        -]New value: +[
        +  "site_url"
        +]
    • Changedget_feed_details4 fields changed
      • addedInput schema / properties / limit
        Added value: +{
        +  "default": 50,
        +  "description": "Maximum number of rows to return.",
        +  "maximum": 500,
        +  "minimum": 1,
        +  "title": "Limit",
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "description": "Index of the first row.",
        +  "minimum": 0,
        +  "title": "Offset",
        +  "type": "integer"
        +}
      • removedInput schema / properties / self
        Removed value: -{
        -  "title": "self",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "self",
        -  "site_url",
        -  "feed_url"
        -]New value: +[
        +  "site_url",
        +  "feed_url"
        +]
    • Changedget_feeds4 fields changed
      • addedInput schema / properties / limit
        Added value: +{
        +  "default": 50,
        +  "description": "Maximum number of rows to return.",
        +  "maximum": 500,
        +  "minimum": 1,
        +  "title": "Limit",
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "description": "Index of the first row.",
        +  "minimum": 0,
        +  "title": "Offset",
        +  "type": "integer"
        +}
      • removedInput schema / properties / self
        Removed value: -{
        -  "title": "self",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "self",
        -  "site_url"
        -]New value: +[
        +  "site_url"
        +]
    • Changedget_fetched_url_details2 fields changed
      • removedInput schema / properties / self
        Removed value: -{
        -  "title": "self",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "self",
        -  "site_url",
        -  "url"
        -]New value: +[
        +  "site_url",
        +  "url"
        +]
    • Changedget_fetched_urls4 fields changed
      • addedInput schema / properties / limit
        Added value: +{
        +  "default": 50,
        +  "description": "Maximum number of rows to return.",
        +  "maximum": 500,
        +  "minimum": 1,
        +  "title": "Limit",
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "description": "Index of the first row.",
        +  "minimum": 0,
        +  "title": "Offset",
        +  "type": "integer"
        +}
      • removedInput schema / properties / self
        Removed value: -{
        -  "title": "self",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "self",
        -  "site_url"
        -]New value: +[
        +  "site_url"
        +]
    • Changedget_keyword2 fields changed
      • removedInput schema / properties / self
        Removed value: -{
        -  "title": "self",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "self",
        -  "query",
        -  "country",
        -  "language",
        -  "start_date",
        -  "end_date"
        -]New value: +[
        +  "query",
        +  "country",
        +  "language",
        +  "start_date",
        +  "end_date"
        +]
    • Changedget_keyword_stats4 fields changed
      • addedInput schema / properties / limit
        Added value: +{
        +  "default": 50,
        +  "description": "Maximum number of rows to return.",
        +  "maximum": 500,
        +  "minimum": 1,
        +  "title": "Limit",
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "description": "Index of the first row.",
        +  "minimum": 0,
        +  "title": "Offset",
        +  "type": "integer"
        +}
      • removedInput schema / properties / self
        Removed value: -{
        -  "title": "self",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "self",
        -  "query",
        -  "country",
        -  "language"
        -]New value: +[
        +  "query",
        +  "country",
        +  "language"
        +]
    • Changedget_link_counts2 fields changed
      • removedInput schema / properties / self
        Removed value: -{
        -  "title": "self",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "self",
        -  "site_url"
        -]New value: +[
        +  "site_url"
        +]
    • Changedget_page_query_stats4 fields changed
      • addedInput schema / properties / limit
        Added value: +{
        +  "default": 50,
        +  "description": "Maximum number of rows to return.",
        +  "maximum": 500,
        +  "minimum": 1,
        +  "title": "Limit",
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "description": "Index of the first row.",
        +  "minimum": 0,
        +  "title": "Offset",
        +  "type": "integer"
        +}
      • removedInput schema / properties / self
        Removed value: -{
        -  "title": "self",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "self",
        -  "site_url",
        -  "page"
        -]New value: +[
        +  "site_url",
        +  "page"
        +]
    • Changedget_page_stats4 fields changed
      • addedInput schema / properties / limit
        Added value: +{
        +  "default": 50,
        +  "description": "Maximum number of rows to return.",
        +  "maximum": 500,
        +  "minimum": 1,
        +  "title": "Limit",
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "description": "Index of the first row.",
        +  "minimum": 0,
        +  "title": "Offset",
        +  "type": "integer"
        +}
      • removedInput schema / properties / self
        Removed value: -{
        -  "title": "self",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "self",
        -  "site_url"
        -]New value: +[
        +  "site_url"
        +]
    • Changedget_query_page_detail_stats4 fields changed
      • addedInput schema / properties / limit
        Added value: +{
        +  "default": 50,
        +  "description": "Maximum number of rows to return.",
        +  "maximum": 500,
        +  "minimum": 1,
        +  "title": "Limit",
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "description": "Index of the first row.",
        +  "minimum": 0,
        +  "title": "Offset",
        +  "type": "integer"
        +}
      • removedInput schema / properties / self
        Removed value: -{
        -  "title": "self",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "self",
        -  "site_url",
        -  "query",
        -  "page"
        -]New value: +[
        +  "site_url",
        +  "query",
        +  "page"
        +]
    • Changedget_query_page_stats4 fields changed
      • addedInput schema / properties / limit
        Added value: +{
        +  "default": 50,
        +  "description": "Maximum number of rows to return.",
        +  "maximum": 500,
        +  "minimum": 1,
        +  "title": "Limit",
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "description": "Index of the first row.",
        +  "minimum": 0,
        +  "title": "Offset",
        +  "type": "integer"
        +}
      • removedInput schema / properties / self
        Removed value: -{
        -  "title": "self",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "self",
        -  "site_url",
        -  "query"
        -]New value: +[
        +  "site_url",
        +  "query"
        +]
    • Changedget_query_parameters4 fields changed
      • addedInput schema / properties / limit
        Added value: +{
        +  "default": 50,
        +  "description": "Maximum number of rows to return.",
        +  "maximum": 500,
        +  "minimum": 1,
        +  "title": "Limit",
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "description": "Index of the first row.",
        +  "minimum": 0,
        +  "title": "Offset",
        +  "type": "integer"
        +}
      • removedInput schema / properties / self
        Removed value: -{
        -  "title": "self",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "self",
        -  "site_url"
        -]New value: +[
        +  "site_url"
        +]
    • Changedget_query_stats4 fields changed
      • addedInput schema / properties / limit
        Added value: +{
        +  "default": 50,
        +  "description": "Maximum number of rows to return.",
        +  "maximum": 500,
        +  "minimum": 1,
        +  "title": "Limit",
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "description": "Index of the first row.",
        +  "minimum": 0,
        +  "title": "Offset",
        +  "type": "integer"
        +}
      • removedInput schema / properties / self
        Removed value: -{
        -  "title": "self",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "self",
        -  "site_url"
        -]New value: +[
        +  "site_url"
        +]
    • Changedget_query_traffic_stats4 fields changed
      • addedInput schema / properties / limit
        Added value: +{
        +  "default": 50,
        +  "description": "Maximum number of rows to return.",
        +  "maximum": 500,
        +  "minimum": 1,
        +  "title": "Limit",
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "description": "Index of the first row.",
        +  "minimum": 0,
        +  "title": "Offset",
        +  "type": "integer"
        +}
      • removedInput schema / properties / self
        Removed value: -{
        -  "title": "self",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "self",
        -  "site_url",
        -  "query"
        -]New value: +[
        +  "site_url",
        +  "query"
        +]
    • Changedget_rank_and_traffic_stats4 fields changed
      • addedInput schema / properties / limit
        Added value: +{
        +  "default": 50,
        +  "description": "Maximum number of rows to return.",
        +  "maximum": 500,
        +  "minimum": 1,
        +  "title": "Limit",
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "description": "Index of the first row.",
        +  "minimum": 0,
        +  "title": "Offset",
        +  "type": "integer"
        +}
      • removedInput schema / properties / self
        Removed value: -{
        -  "title": "self",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "self",
        -  "site_url"
        -]New value: +[
        +  "site_url"
        +]
    • Changedget_related_keywords4 fields changed
      • addedInput schema / properties / limit
        Added value: +{
        +  "default": 50,
        +  "description": "Maximum number of rows to return.",
        +  "maximum": 500,
        +  "minimum": 1,
        +  "title": "Limit",
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "description": "Index of the first row.",
        +  "minimum": 0,
        +  "title": "Offset",
        +  "type": "integer"
        +}
      • removedInput schema / properties / self
        Removed value: -{
        -  "title": "self",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "self",
        -  "query",
        -  "country",
        -  "language",
        -  "start_date",
        -  "end_date"
        -]New value: +[
        +  "query",
        +  "country",
        +  "language",
        +  "start_date",
        +  "end_date"
        +]
    • Changedget_site_moves4 fields changed
      • addedInput schema / properties / limit
        Added value: +{
        +  "default": 50,
        +  "description": "Maximum number of rows to return.",
        +  "maximum": 500,
        +  "minimum": 1,
        +  "title": "Limit",
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "description": "Index of the first row.",
        +  "minimum": 0,
        +  "title": "Offset",
        +  "type": "integer"
        +}
      • removedInput schema / properties / self
        Removed value: -{
        -  "title": "self",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "self",
        -  "site_url"
        -]New value: +[
        +  "site_url"
        +]
    • Changedget_site_roles4 fields changed
      • addedInput schema / properties / limit
        Added value: +{
        +  "default": 50,
        +  "description": "Maximum number of rows to return.",
        +  "maximum": 500,
        +  "minimum": 1,
        +  "title": "Limit",
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "description": "Index of the first row.",
        +  "minimum": 0,
        +  "title": "Offset",
        +  "type": "integer"
        +}
      • removedInput schema / properties / self
        Removed value: -{
        -  "title": "self",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "self",
        -  "site_url"
        -]New value: +[
        +  "site_url"
        +]
    • Changedget_sites4 fields changed
      • addedInput schema / properties / limit
        Added value: +{
        +  "default": 50,
        +  "description": "Maximum number of rows to return.",
        +  "maximum": 500,
        +  "minimum": 1,
        +  "title": "Limit",
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "description": "Index of the first row.",
        +  "minimum": 0,
        +  "title": "Offset",
        +  "type": "integer"
        +}
      • removedInput schema / properties / self
        Removed value: -{
        -  "title": "self",
        -  "type": "string"
        -}
      • removedInput schema / required
        Removed value: -[
        -  "self"
        -]
    • Changedget_url_info2 fields changed
      • removedInput schema / properties / self
        Removed value: -{
        -  "title": "self",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "self",
        -  "site_url",
        -  "url"
        -]New value: +[
        +  "site_url",
        +  "url"
        +]
    • Changedget_url_links2 fields changed
      • removedInput schema / properties / self
        Removed value: -{
        -  "title": "self",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "self",
        -  "site_url",
        -  "link"
        -]New value: +[
        +  "site_url",
        +  "link"
        +]
    • Changedget_url_submission_quota2 fields changed
      • removedInput schema / properties / self
        Removed value: -{
        -  "title": "self",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "self",
        -  "site_url"
        -]New value: +[
        +  "site_url"
        +]
    • Changedget_url_traffic_info2 fields changed
      • removedInput schema / properties / self
        Removed value: -{
        -  "title": "self",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "self",
        -  "site_url",
        -  "url"
        -]New value: +[
        +  "site_url",
        +  "url"
        +]
    • Changedremove_blocked_url2 fields changed
      • removedInput schema / properties / self
        Removed value: -{
        -  "title": "self",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "self",
        -  "site_url",
        -  "blocked_url"
        -]New value: +[
        +  "site_url",
        +  "blocked_url"
        +]
    • Changedremove_country_region_settings2 fields changed
      • removedInput schema / properties / self
        Removed value: -{
        -  "title": "self",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "self",
        -  "site_url",
        -  "settings"
        -]New value: +[
        +  "site_url",
        +  "settings"
        +]
    • Changedremove_deep_link_block2 fields changed
      • removedInput schema / properties / self
        Removed value: -{
        -  "title": "self",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "self",
        -  "site_url",
        -  "market",
        -  "search_url",
        -  "deep_link_url"
        -]New value: +[
        +  "site_url",
        +  "market",
        +  "search_url",
        +  "deep_link_url"
        +]
    • Changedremove_feed2 fields changed
      • removedInput schema / properties / self
        Removed value: -{
        -  "title": "self",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "self",
        -  "site_url",
        -  "feed_url"
        -]New value: +[
        +  "site_url",
        +  "feed_url"
        +]
    • Changedremove_page_preview_block2 fields changed
      • removedInput schema / properties / self
        Removed value: -{
        -  "title": "self",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "self",
        -  "site_url",
        -  "url"
        -]New value: +[
        +  "site_url",
        +  "url"
        +]
    • Changedremove_query_parameter2 fields changed
      • removedInput schema / properties / self
        Removed value: -{
        -  "title": "self",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "self",
        -  "site_url",
        -  "query_parameter"
        -]New value: +[
        +  "site_url",
        +  "query_parameter"
        +]
    • Changedremove_site2 fields changed
      • removedInput schema / properties / self
        Removed value: -{
        -  "title": "self",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "self",
        -  "site_url"
        -]New value: +[
        +  "site_url"
        +]
    • Changedremove_site_role2 fields changed
      • removedInput schema / properties / self
        Removed value: -{
        -  "title": "self",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "self",
        -  "site_url",
        -  "site_role"
        -]New value: +[
        +  "site_url",
        +  "site_role"
        +]
    • Changedsave_crawl_settings2 fields changed
      • removedInput schema / properties / self
        Removed value: -{
        -  "title": "self",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "self",
        -  "site_url",
        -  "crawl_settings"
        -]New value: +[
        +  "site_url",
        +  "crawl_settings"
        +]
    • Changedsubmit_content2 fields changed
      • removedInput schema / properties / self
        Removed value: -{
        -  "title": "self",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "self",
        -  "site_url",
        -  "url",
        -  "http_message",
        -  "structured_data",
        -  "dynamic_serving"
        -]New value: +[
        +  "site_url",
        +  "url",
        +  "http_message",
        +  "structured_data",
        +  "dynamic_serving"
        +]
    • Changedsubmit_feed2 fields changed
      • removedInput schema / properties / self
        Removed value: -{
        -  "title": "self",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "self",
        -  "site_url",
        -  "feed_url"
        -]New value: +[
        +  "site_url",
        +  "feed_url"
        +]
    • Changedsubmit_site_move2 fields changed
      • removedInput schema / properties / self
        Removed value: -{
        -  "title": "self",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "self",
        -  "site_url",
        -  "settings"
        -]New value: +[
        +  "site_url",
        +  "settings"
        +]
    • Changedsubmit_url2 fields changed
      • removedInput schema / properties / self
        Removed value: -{
        -  "title": "self",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "self",
        -  "site_url",
        -  "url"
        -]New value: +[
        +  "site_url",
        +  "url"
        +]
    • Changedsubmit_url_batch2 fields changed
      • removedInput schema / properties / self
        Removed value: -{
        -  "title": "self",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "self",
        -  "site_url",
        -  "url_list"
        -]New value: +[
        +  "site_url",
        +  "url_list"
        +]
    • Changedupdate_deep_link2 fields changed
      • removedInput schema / properties / self
        Removed value: -{
        -  "title": "self",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "self",
        -  "site_url",
        -  "algo_url",
        -  "deep_link",
        -  "weight"
        -]New value: +[
        +  "site_url",
        +  "algo_url",
        +  "deep_link",
        +  "weight"
        +]
    • Changedverify_site2 fields changed
      • removedInput schema / properties / self
        Removed value: -{
        -  "title": "self",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "self",
        -  "site_url"
        -]New value: +[
        +  "site_url"
        +]
  2. 62 tool updatesv1.0.0
    • Changedadd_blocked_url3 fields changed
      • addedInput schema / $defs / BlockedUrlRequestType
        Added value: +{
        +  "enum": [
        +    0,
        +    1
        +  ],
        +  "title": "BlockedUrlRequestType",
        +  "type": "integer"
        +}
      • addedInput schema / properties / request_type
        Added value: +{
        +  "$ref": "#/$defs/BlockedUrlRequestType",
        +  "default": 0
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "null"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "add_blocked_urlOutput",
        +  "type": "object"
        +}
    • Changedadd_connected_page1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "null"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "add_connected_pageOutput",
        +  "type": "object"
        +}
    • Changedadd_country_region_settings1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "null"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "add_country_region_settingsOutput",
        +  "type": "object"
        +}
    • Changedadd_deep_link_block1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "null"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "add_deep_link_blockOutput",
        +  "type": "object"
        +}
    • Changedadd_page_preview_block1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "null"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "add_page_preview_blockOutput",
        +  "type": "object"
        +}
    • Changedadd_query_parameter1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "null"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "add_query_parameterOutput",
        +  "type": "object"
        +}
    • Changedadd_site1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "null"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "add_siteOutput",
        +  "type": "object"
        +}
    • Changedadd_site_roles1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "null"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "add_site_rolesOutput",
        +  "type": "object"
        +}
    • Changedenable_disable_query_parameter1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "null"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "enable_disable_query_parameterOutput",
        +  "type": "object"
        +}
    • Changedfetch_url1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "null"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "fetch_urlOutput",
        +  "type": "object"
        +}
    • Changedget_active_page_preview_blocks1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$defs": {
        +    "BlockReason": {
        +      "enum": [
        +        1,
        +        2,
        +        3,
        +        4
        +      ],
        +      "title": "BlockReason",
        +      "type": "integer"
        +    },
        +    "PagePreview": {
        +      "properties": {
        +        "BlockDate": {
        +          "anyOf": [
        +            {
        +              "format": "date-time",
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "title": "Blockdate"
        +        },
        +        "BlockReason": {
        +          "$ref": "#/$defs/BlockReason"
        +        },
        +        "Url": {
        +          "title": "Url",
        +          "type": "string"
        +        },
        +        "__type": {
        +          "title": "Type",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "__type",
        +        "Url",
        +        "BlockReason"
        +      ],
        +      "title": "PagePreview",
        +      "type": "object"
        +    }
        +  },
        +  "properties": {
        +    "result": {
        +      "items": {
        +        "$ref": "#/$defs/PagePreview"
        +      },
        +      "title": "Result",
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "get_active_page_preview_blocksOutput",
        +  "type": "object"
        +}
    • Changedget_blocked_urls1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$defs": {
        +    "BlockedUrl": {
        +      "properties": {
        +        "Date": {
        +          "format": "date-time",
        +          "title": "Date",
        +          "type": "string"
        +        },
        +        "EntityType": {
        +          "$ref": "#/$defs/BlockedUrlEntityType"
        +        },
        +        "RequestType": {
        +          "$ref": "#/$defs/BlockedUrlRequestType"
        +        },
        +        "Url": {
        +          "title": "Url",
        +          "type": "string"
        +        },
        +        "__type": {
        +          "default": "BlockedUrl:#Microsoft.Bing.Webmaster.Api",
        +          "title": "Type",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "Date",
        +        "EntityType",
        +        "RequestType",
        +        "Url"
        +      ],
        +      "title": "BlockedUrl",
        +      "type": "object"
        +    },
        +    "BlockedUrlEntityType": {
        +      "enum": [
        +        0,
        +        1
        +      ],
        +      "title": "BlockedUrlEntityType",
        +      "type": "integer"
        +    },
        +    "BlockedUrlRequestType": {
        +      "enum": [
        +        0,
        +        1
        +      ],
        +      "title": "BlockedUrlRequestType",
        +      "type": "integer"
        +    }
        +  },
        +  "properties": {
        +    "result": {
        +      "items": {
        +        "$ref": "#/$defs/BlockedUrl"
        +      },
        +      "title": "Result",
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "get_blocked_urlsOutput",
        +  "type": "object"
        +}
    • Changedget_children_url_info1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$defs": {
        +    "UrlInfo": {
        +      "properties": {
        +        "AnchorCount": {
        +          "title": "Anchorcount",
        +          "type": "integer"
        +        },
        +        "DiscoveryDate": {
        +          "format": "date-time",
        +          "title": "Discoverydate",
        +          "type": "string"
        +        },
        +        "DocumentSize": {
        +          "title": "Documentsize",
        +          "type": "integer"
        +        },
        +        "HttpStatus": {
        +          "title": "Httpstatus",
        +          "type": "integer"
        +        },
        +        "IsPage": {
        +          "title": "Ispage",
        +          "type": "boolean"
        +        },
        +        "LastCrawledDate": {
        +          "format": "date-time",
        +          "title": "Lastcrawleddate",
        +          "type": "string"
        +        },
        +        "TotalChildUrlCount": {
        +          "title": "Totalchildurlcount",
        +          "type": "integer"
        +        },
        +        "Url": {
        +          "title": "Url",
        +          "type": "string"
        +        },
        +        "__type": {
        +          "title": "Type",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "__type",
        +        "AnchorCount",
        +        "DiscoveryDate",
        +        "DocumentSize",
        +        "HttpStatus",
        +        "IsPage",
        +        "LastCrawledDate",
        +        "TotalChildUrlCount",
        +        "Url"
        +      ],
        +      "title": "UrlInfo",
        +      "type": "object"
        +    }
        +  },
        +  "properties": {
        +    "result": {
        +      "items": {
        +        "$ref": "#/$defs/UrlInfo"
        +      },
        +      "title": "Result",
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "get_children_url_infoOutput",
        +  "type": "object"
        +}
    • Changedget_children_url_traffic_info1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$defs": {
        +    "UrlTrafficInfo": {
        +      "properties": {
        +        "Clicks": {
        +          "title": "Clicks",
        +          "type": "integer"
        +        },
        +        "Impressions": {
        +          "title": "Impressions",
        +          "type": "integer"
        +        },
        +        "IsPage": {
        +          "title": "Ispage",
        +          "type": "boolean"
        +        },
        +        "Url": {
        +          "title": "Url",
        +          "type": "string"
        +        },
        +        "__type": {
        +          "title": "Type",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "__type",
        +        "Clicks",
        +        "Impressions",
        +        "IsPage",
        +        "Url"
        +      ],
        +      "title": "UrlTrafficInfo",
        +      "type": "object"
        +    }
        +  },
        +  "properties": {
        +    "result": {
        +      "items": {
        +        "$ref": "#/$defs/UrlTrafficInfo"
        +      },
        +      "title": "Result",
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "get_children_url_traffic_infoOutput",
        +  "type": "object"
        +}
    • Changedget_connected_pages1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$defs": {
        +    "ConnectedSite": {
        +      "properties": {
        +        "SubmissionDate": {
        +          "format": "date-time",
        +          "title": "Submissiondate",
        +          "type": "string"
        +        },
        +        "Url": {
        +          "title": "Url",
        +          "type": "string"
        +        },
        +        "VerificationStatus": {
        +          "title": "Verificationstatus",
        +          "type": "string"
        +        },
        +        "VerificationStatusDetails": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "title": "Verificationstatusdetails"
        +        },
        +        "VerifiedDate": {
        +          "anyOf": [
        +            {
        +              "format": "date-time",
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "title": "Verifieddate"
        +        },
        +        "__type": {
        +          "title": "Type",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "__type",
        +        "Url",
        +        "VerificationStatus",
        +        "VerificationStatusDetails",
        +        "VerifiedDate",
        +        "SubmissionDate"
        +      ],
        +      "title": "ConnectedSite",
        +      "type": "object"
        +    }
        +  },
        +  "properties": {
        +    "result": {
        +      "items": {
        +        "$ref": "#/$defs/ConnectedSite"
        +      },
        +      "title": "Result",
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "get_connected_pagesOutput",
        +  "type": "object"
        +}
    • Changedget_content_submission_quota1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "DailyQuota": {
        +      "title": "Dailyquota",
        +      "type": "integer"
        +    },
        +    "MonthlyQuota": {
        +      "title": "Monthlyquota",
        +      "type": "integer"
        +    },
        +    "__type": {
        +      "title": "Type",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "__type",
        +    "DailyQuota",
        +    "MonthlyQuota"
        +  ],
        +  "title": "ContentSubmissionQuota",
        +  "type": "object"
        +}
    • Changedget_country_region_settings1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$defs": {
        +    "CountryRegionSettings": {
        +      "properties": {
        +        "Date": {
        +          "format": "date-time",
        +          "title": "Date",
        +          "type": "string"
        +        },
        +        "TwoLetterIsoCountryCode": {
        +          "maxLength": 2,
        +          "minLength": 2,
        +          "title": "Twoletterisocountrycode",
        +          "type": "string"
        +        },
        +        "Type": {
        +          "$ref": "#/$defs/CountryRegionSettingsType"
        +        },
        +        "Url": {
        +          "title": "Url",
        +          "type": "string"
        +        },
        +        "__type": {
        +          "default": "CountryRegionSettings:#Microsoft.Bing.Webmaster.Api",
        +          "title": "Type",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "Date",
        +        "TwoLetterIsoCountryCode",
        +        "Type",
        +        "Url"
        +      ],
        +      "title": "CountryRegionSettings",
        +      "type": "object"
        +    },
        +    "CountryRegionSettingsType": {
        +      "enum": [
        +        0,
        +        1,
        +        2,
        +        3
        +      ],
        +      "title": "CountryRegionSettingsType",
        +      "type": "integer"
        +    }
        +  },
        +  "properties": {
        +    "result": {
        +      "items": {
        +        "$ref": "#/$defs/CountryRegionSettings"
        +      },
        +      "title": "Result",
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "get_country_region_settingsOutput",
        +  "type": "object"
        +}
    • Changedget_crawl_issues1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$defs": {
        +    "CrawlIssues": {
        +      "enum": [
        +        16,
        +        1,
        +        2,
        +        4,
        +        8,
        +        32,
        +        128,
        +        64,
        +        0,
        +        256
        +      ],
        +      "title": "CrawlIssues",
        +      "type": "integer"
        +    },
        +    "UrlWithCrawlIssues": {
        +      "properties": {
        +        "HttpCode": {
        +          "title": "Httpcode",
        +          "type": "integer"
        +        },
        +        "InLinks": {
        +          "title": "Inlinks",
        +          "type": "integer"
        +        },
        +        "Issues": {
        +          "$ref": "#/$defs/CrawlIssues"
        +        },
        +        "Url": {
        +          "title": "Url",
        +          "type": "string"
        +        },
        +        "__type": {
        +          "title": "Type",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "__type",
        +        "HttpCode",
        +        "Issues",
        +        "Url",
        +        "InLinks"
        +      ],
        +      "title": "UrlWithCrawlIssues",
        +      "type": "object"
        +    }
        +  },
        +  "properties": {
        +    "result": {
        +      "items": {
        +        "$ref": "#/$defs/UrlWithCrawlIssues"
        +      },
        +      "title": "Result",
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "get_crawl_issuesOutput",
        +  "type": "object"
        +}
    • Changedget_crawl_settings1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "CrawlBoostAvailable": {
        +      "title": "Crawlboostavailable",
        +      "type": "boolean"
        +    },
        +    "CrawlBoostEnabled": {
        +      "title": "Crawlboostenabled",
        +      "type": "boolean"
        +    },
        +    "CrawlRate": {
        +      "items": {
        +        "type": "integer"
        +      },
        +      "maxItems": 24,
        +      "minItems": 24,
        +      "title": "Crawlrate",
        +      "type": "array"
        +    },
        +    "__type": {
        +      "default": "CrawlSettings:#Microsoft.Bing.Webmaster.Api",
        +      "title": "Type",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "CrawlBoostAvailable",
        +    "CrawlBoostEnabled",
        +    "CrawlRate"
        +  ],
        +  "title": "CrawlSettings",
        +  "type": "object"
        +}
    • Changedget_crawl_stats1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$defs": {
        +    "CrawlStats": {
        +      "properties": {
        +        "AllOtherCodes": {
        +          "title": "Allothercodes",
        +          "type": "integer"
        +        },
        +        "BlockedByRobotsTxt": {
        +          "title": "Blockedbyrobotstxt",
        +          "type": "integer"
        +        },
        +        "Code2xx": {
        +          "title": "Code2Xx",
        +          "type": "integer"
        +        },
        +        "Code301": {
        +          "title": "Code301",
        +          "type": "integer"
        +        },
        +        "Code302": {
        +          "title": "Code302",
        +          "type": "integer"
        +        },
        +        "Code4xx": {
        +          "title": "Code4Xx",
        +          "type": "integer"
        +        },
        +        "Code5xx": {
        +          "title": "Code5Xx",
        +          "type": "integer"
        +        },
        +        "ContainsMalware": {
        +          "title": "Containsmalware",
        +          "type": "integer"
        +        },
        +        "CrawlErrors": {
        +          "title": "Crawlerrors",
        +          "type": "integer"
        +        },
        +        "CrawledPages": {
        +          "title": "Crawledpages",
        +          "type": "integer"
        +        },
        +        "Date": {
        +          "format": "date-time",
        +          "title": "Date",
        +          "type": "string"
        +        },
        +        "InIndex": {
        +          "title": "Inindex",
        +          "type": "integer"
        +        },
        +        "InLinks": {
        +          "title": "Inlinks",
        +          "type": "integer"
        +        },
        +        "__type": {
        +          "title": "Type",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "__type",
        +        "AllOtherCodes",
        +        "BlockedByRobotsTxt",
        +        "Code2xx",
        +        "Code301",
        +        "Code302",
        +        "Code4xx",
        +        "Code5xx",
        +        "ContainsMalware",
        +        "CrawlErrors",
        +        "CrawledPages",
        +        "Date",
        +        "InIndex",
        +        "InLinks"
        +      ],
        +      "title": "CrawlStats",
        +      "type": "object"
        +    }
        +  },
        +  "properties": {
        +    "result": {
        +      "items": {
        +        "$ref": "#/$defs/CrawlStats"
        +      },
        +      "title": "Result",
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "get_crawl_statsOutput",
        +  "type": "object"
        +}
    • Changedget_deep_link1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$defs": {
        +    "DeepLink": {
        +      "properties": {
        +        "Position": {
        +          "title": "Position",
        +          "type": "integer"
        +        },
        +        "Title": {
        +          "title": "Title",
        +          "type": "string"
        +        },
        +        "Url": {
        +          "title": "Url",
        +          "type": "string"
        +        },
        +        "Weight": {
        +          "title": "Weight",
        +          "type": "integer"
        +        },
        +        "__type": {
        +          "title": "Type",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "__type",
        +        "Position",
        +        "Title",
        +        "Url",
        +        "Weight"
        +      ],
        +      "title": "DeepLink",
        +      "type": "object"
        +    }
        +  },
        +  "properties": {
        +    "result": {
        +      "items": {
        +        "$ref": "#/$defs/DeepLink"
        +      },
        +      "title": "Result",
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "get_deep_linkOutput",
        +  "type": "object"
        +}
    • Changedget_deep_link_algo_urls1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$defs": {
        +    "DeepLinkAlgoUrl": {
        +      "properties": {
        +        "DeepLinkCount": {
        +          "title": "Deeplinkcount",
        +          "type": "integer"
        +        },
        +        "Impressions": {
        +          "title": "Impressions",
        +          "type": "integer"
        +        },
        +        "Url": {
        +          "title": "Url",
        +          "type": "string"
        +        },
        +        "__type": {
        +          "title": "Type",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "__type",
        +        "DeepLinkCount",
        +        "Impressions",
        +        "Url"
        +      ],
        +      "title": "DeepLinkAlgoUrl",
        +      "type": "object"
        +    }
        +  },
        +  "properties": {
        +    "result": {
        +      "items": {
        +        "$ref": "#/$defs/DeepLinkAlgoUrl"
        +      },
        +      "title": "Result",
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "get_deep_link_algo_urlsOutput",
        +  "type": "object"
        +}
    • Changedget_deep_link_blocks1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$defs": {
        +    "DeepLinkBlock": {
        +      "properties": {
        +        "BlockDate": {
        +          "format": "date-time",
        +          "title": "Blockdate",
        +          "type": "string"
        +        },
        +        "DeepLinkUrl": {
        +          "title": "Deeplinkurl",
        +          "type": "string"
        +        },
        +        "Market": {
        +          "title": "Market",
        +          "type": "string"
        +        },
        +        "SearchUrl": {
        +          "title": "Searchurl",
        +          "type": "string"
        +        },
        +        "__type": {
        +          "title": "Type",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "__type",
        +        "Market",
        +        "SearchUrl",
        +        "DeepLinkUrl",
        +        "BlockDate"
        +      ],
        +      "title": "DeepLinkBlock",
        +      "type": "object"
        +    }
        +  },
        +  "properties": {
        +    "result": {
        +      "items": {
        +        "$ref": "#/$defs/DeepLinkBlock"
        +      },
        +      "title": "Result",
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "get_deep_link_blocksOutput",
        +  "type": "object"
        +}
    • Changedget_feed_details1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$defs": {
        +    "Feed": {
        +      "properties": {
        +        "Compressed": {
        +          "title": "Compressed",
        +          "type": "boolean"
        +        },
        +        "FileSize": {
        +          "title": "Filesize",
        +          "type": "integer"
        +        },
        +        "LastCrawled": {
        +          "format": "date-time",
        +          "title": "Lastcrawled",
        +          "type": "string"
        +        },
        +        "Status": {
        +          "title": "Status",
        +          "type": "string"
        +        },
        +        "Submitted": {
        +          "format": "date-time",
        +          "title": "Submitted",
        +          "type": "string"
        +        },
        +        "Type": {
        +          "title": "Type",
        +          "type": "string"
        +        },
        +        "Url": {
        +          "title": "Url",
        +          "type": "string"
        +        },
        +        "UrlCount": {
        +          "title": "Urlcount",
        +          "type": "integer"
        +        },
        +        "__type": {
        +          "title": "Type",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "__type",
        +        "Compressed",
        +        "FileSize",
        +        "LastCrawled",
        +        "Status",
        +        "Submitted",
        +        "Type",
        +        "Url",
        +        "UrlCount"
        +      ],
        +      "title": "Feed",
        +      "type": "object"
        +    }
        +  },
        +  "properties": {
        +    "result": {
        +      "items": {
        +        "$ref": "#/$defs/Feed"
        +      },
        +      "title": "Result",
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "get_feed_detailsOutput",
        +  "type": "object"
        +}
    • Changedget_feeds1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$defs": {
        +    "Feed": {
        +      "properties": {
        +        "Compressed": {
        +          "title": "Compressed",
        +          "type": "boolean"
        +        },
        +        "FileSize": {
        +          "title": "Filesize",
        +          "type": "integer"
        +        },
        +        "LastCrawled": {
        +          "format": "date-time",
        +          "title": "Lastcrawled",
        +          "type": "string"
        +        },
        +        "Status": {
        +          "title": "Status",
        +          "type": "string"
        +        },
        +        "Submitted": {
        +          "format": "date-time",
        +          "title": "Submitted",
        +          "type": "string"
        +        },
        +        "Type": {
        +          "title": "Type",
        +          "type": "string"
        +        },
        +        "Url": {
        +          "title": "Url",
        +          "type": "string"
        +        },
        +        "UrlCount": {
        +          "title": "Urlcount",
        +          "type": "integer"
        +        },
        +        "__type": {
        +          "title": "Type",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "__type",
        +        "Compressed",
        +        "FileSize",
        +        "LastCrawled",
        +        "Status",
        +        "Submitted",
        +        "Type",
        +        "Url",
        +        "UrlCount"
        +      ],
        +      "title": "Feed",
        +      "type": "object"
        +    }
        +  },
        +  "properties": {
        +    "result": {
        +      "items": {
        +        "$ref": "#/$defs/Feed"
        +      },
        +      "title": "Result",
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "get_feedsOutput",
        +  "type": "object"
        +}
    • Changedget_fetched_url_details1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "Date": {
        +      "format": "date-time",
        +      "title": "Date",
        +      "type": "string"
        +    },
        +    "Document": {
        +      "title": "Document",
        +      "type": "string"
        +    },
        +    "Headers": {
        +      "title": "Headers",
        +      "type": "string"
        +    },
        +    "Status": {
        +      "title": "Status",
        +      "type": "string"
        +    },
        +    "Url": {
        +      "title": "Url",
        +      "type": "string"
        +    },
        +    "__type": {
        +      "title": "Type",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "__type",
        +    "Date",
        +    "Document",
        +    "Headers",
        +    "Status",
        +    "Url"
        +  ],
        +  "title": "FetchedUrlDetails",
        +  "type": "object"
        +}
    • Changedget_fetched_urls1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$defs": {
        +    "FetchedUrl": {
        +      "properties": {
        +        "Date": {
        +          "format": "date-time",
        +          "title": "Date",
        +          "type": "string"
        +        },
        +        "Expired": {
        +          "title": "Expired",
        +          "type": "boolean"
        +        },
        +        "Fetched": {
        +          "title": "Fetched",
        +          "type": "boolean"
        +        },
        +        "Url": {
        +          "title": "Url",
        +          "type": "string"
        +        },
        +        "__type": {
        +          "title": "Type",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "__type",
        +        "Date",
        +        "Expired",
        +        "Fetched",
        +        "Url"
        +      ],
        +      "title": "FetchedUrl",
        +      "type": "object"
        +    }
        +  },
        +  "properties": {
        +    "result": {
        +      "items": {
        +        "$ref": "#/$defs/FetchedUrl"
        +      },
        +      "title": "Result",
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "get_fetched_urlsOutput",
        +  "type": "object"
        +}
    • Changedget_keyword1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$defs": {
        +    "Keyword": {
        +      "properties": {
        +        "BroadImpressions": {
        +          "title": "Broadimpressions",
        +          "type": "integer"
        +        },
        +        "Impressions": {
        +          "title": "Impressions",
        +          "type": "integer"
        +        },
        +        "Query": {
        +          "title": "Query",
        +          "type": "string"
        +        },
        +        "__type": {
        +          "title": "Type",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "__type",
        +        "BroadImpressions",
        +        "Impressions",
        +        "Query"
        +      ],
        +      "title": "Keyword",
        +      "type": "object"
        +    }
        +  },
        +  "properties": {
        +    "result": {
        +      "anyOf": [
        +        {
        +          "$ref": "#/$defs/Keyword"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "get_keywordOutput",
        +  "type": "object"
        +}
    • Changedget_keyword_stats1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$defs": {
        +    "KeywordStats": {
        +      "properties": {
        +        "BroadImpressions": {
        +          "title": "Broadimpressions",
        +          "type": "integer"
        +        },
        +        "Date": {
        +          "format": "date-time",
        +          "title": "Date",
        +          "type": "string"
        +        },
        +        "Impressions": {
        +          "title": "Impressions",
        +          "type": "integer"
        +        },
        +        "Query": {
        +          "title": "Query",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "Date",
        +        "BroadImpressions",
        +        "Impressions",
        +        "Query"
        +      ],
        +      "title": "KeywordStats",
        +      "type": "object"
        +    }
        +  },
        +  "properties": {
        +    "result": {
        +      "items": {
        +        "$ref": "#/$defs/KeywordStats"
        +      },
        +      "title": "Result",
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "get_keyword_statsOutput",
        +  "type": "object"
        +}
    • Changedget_link_counts1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$defs": {
        +    "LinkCount": {
        +      "properties": {
        +        "Count": {
        +          "title": "Count",
        +          "type": "integer"
        +        },
        +        "Url": {
        +          "title": "Url",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "Count",
        +        "Url"
        +      ],
        +      "title": "LinkCount",
        +      "type": "object"
        +    }
        +  },
        +  "properties": {
        +    "Links": {
        +      "items": {
        +        "$ref": "#/$defs/LinkCount"
        +      },
        +      "title": "Links",
        +      "type": "array"
        +    },
        +    "TotalPages": {
        +      "title": "Totalpages",
        +      "type": "integer"
        +    }
        +  },
        +  "required": [
        +    "Links",
        +    "TotalPages"
        +  ],
        +  "title": "LinkCounts",
        +  "type": "object"
        +}
    • Changedget_page_query_stats1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$defs": {
        +    "QueryStats": {
        +      "properties": {
        +        "AvgClickPosition": {
        +          "title": "Avgclickposition",
        +          "type": "integer"
        +        },
        +        "AvgImpressionPosition": {
        +          "title": "Avgimpressionposition",
        +          "type": "integer"
        +        },
        +        "Clicks": {
        +          "title": "Clicks",
        +          "type": "integer"
        +        },
        +        "Date": {
        +          "format": "date-time",
        +          "title": "Date",
        +          "type": "string"
        +        },
        +        "Impressions": {
        +          "title": "Impressions",
        +          "type": "integer"
        +        },
        +        "Query": {
        +          "title": "Query",
        +          "type": "string"
        +        },
        +        "__type": {
        +          "title": "Type",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "__type",
        +        "AvgClickPosition",
        +        "AvgImpressionPosition",
        +        "Clicks",
        +        "Date",
        +        "Impressions",
        +        "Query"
        +      ],
        +      "title": "QueryStats",
        +      "type": "object"
        +    }
        +  },
        +  "properties": {
        +    "result": {
        +      "items": {
        +        "$ref": "#/$defs/QueryStats"
        +      },
        +      "title": "Result",
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "get_page_query_statsOutput",
        +  "type": "object"
        +}
    • Changedget_page_stats1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$defs": {
        +    "QueryStats": {
        +      "properties": {
        +        "AvgClickPosition": {
        +          "title": "Avgclickposition",
        +          "type": "integer"
        +        },
        +        "AvgImpressionPosition": {
        +          "title": "Avgimpressionposition",
        +          "type": "integer"
        +        },
        +        "Clicks": {
        +          "title": "Clicks",
        +          "type": "integer"
        +        },
        +        "Date": {
        +          "format": "date-time",
        +          "title": "Date",
        +          "type": "string"
        +        },
        +        "Impressions": {
        +          "title": "Impressions",
        +          "type": "integer"
        +        },
        +        "Query": {
        +          "title": "Query",
        +          "type": "string"
        +        },
        +        "__type": {
        +          "title": "Type",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "__type",
        +        "AvgClickPosition",
        +        "AvgImpressionPosition",
        +        "Clicks",
        +        "Date",
        +        "Impressions",
        +        "Query"
        +      ],
        +      "title": "QueryStats",
        +      "type": "object"
        +    }
        +  },
        +  "properties": {
        +    "result": {
        +      "items": {
        +        "$ref": "#/$defs/QueryStats"
        +      },
        +      "title": "Result",
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "get_page_statsOutput",
        +  "type": "object"
        +}
    • Changedget_query_page_detail_stats1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$defs": {
        +    "DetailedQueryStats": {
        +      "properties": {
        +        "Clicks": {
        +          "title": "Clicks",
        +          "type": "integer"
        +        },
        +        "Date": {
        +          "format": "date-time",
        +          "title": "Date",
        +          "type": "string"
        +        },
        +        "Impressions": {
        +          "title": "Impressions",
        +          "type": "integer"
        +        },
        +        "Position": {
        +          "title": "Position",
        +          "type": "integer"
        +        },
        +        "__type": {
        +          "title": "Type",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "__type",
        +        "Clicks",
        +        "Date",
        +        "Impressions",
        +        "Position"
        +      ],
        +      "title": "DetailedQueryStats",
        +      "type": "object"
        +    }
        +  },
        +  "properties": {
        +    "result": {
        +      "items": {
        +        "$ref": "#/$defs/DetailedQueryStats"
        +      },
        +      "title": "Result",
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "get_query_page_detail_statsOutput",
        +  "type": "object"
        +}
    • Changedget_query_page_stats1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$defs": {
        +    "QueryStats": {
        +      "properties": {
        +        "AvgClickPosition": {
        +          "title": "Avgclickposition",
        +          "type": "integer"
        +        },
        +        "AvgImpressionPosition": {
        +          "title": "Avgimpressionposition",
        +          "type": "integer"
        +        },
        +        "Clicks": {
        +          "title": "Clicks",
        +          "type": "integer"
        +        },
        +        "Date": {
        +          "format": "date-time",
        +          "title": "Date",
        +          "type": "string"
        +        },
        +        "Impressions": {
        +          "title": "Impressions",
        +          "type": "integer"
        +        },
        +        "Query": {
        +          "title": "Query",
        +          "type": "string"
        +        },
        +        "__type": {
        +          "title": "Type",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "__type",
        +        "AvgClickPosition",
        +        "AvgImpressionPosition",
        +        "Clicks",
        +        "Date",
        +        "Impressions",
        +        "Query"
        +      ],
        +      "title": "QueryStats",
        +      "type": "object"
        +    }
        +  },
        +  "properties": {
        +    "result": {
        +      "items": {
        +        "$ref": "#/$defs/QueryStats"
        +      },
        +      "title": "Result",
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "get_query_page_statsOutput",
        +  "type": "object"
        +}
    • Changedget_query_parameters1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$defs": {
        +    "QueryParameter": {
        +      "properties": {
        +        "Date": {
        +          "format": "date-time",
        +          "title": "Date",
        +          "type": "string"
        +        },
        +        "IsEnabled": {
        +          "title": "Isenabled",
        +          "type": "boolean"
        +        },
        +        "Parameter": {
        +          "title": "Parameter",
        +          "type": "string"
        +        },
        +        "Source": {
        +          "title": "Source",
        +          "type": "integer"
        +        },
        +        "__type": {
        +          "title": "Type",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "__type",
        +        "Date",
        +        "IsEnabled",
        +        "Parameter",
        +        "Source"
        +      ],
        +      "title": "QueryParameter",
        +      "type": "object"
        +    }
        +  },
        +  "properties": {
        +    "result": {
        +      "items": {
        +        "$ref": "#/$defs/QueryParameter"
        +      },
        +      "title": "Result",
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "get_query_parametersOutput",
        +  "type": "object"
        +}
    • Changedget_query_stats1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$defs": {
        +    "QueryStats": {
        +      "properties": {
        +        "AvgClickPosition": {
        +          "title": "Avgclickposition",
        +          "type": "integer"
        +        },
        +        "AvgImpressionPosition": {
        +          "title": "Avgimpressionposition",
        +          "type": "integer"
        +        },
        +        "Clicks": {
        +          "title": "Clicks",
        +          "type": "integer"
        +        },
        +        "Date": {
        +          "format": "date-time",
        +          "title": "Date",
        +          "type": "string"
        +        },
        +        "Impressions": {
        +          "title": "Impressions",
        +          "type": "integer"
        +        },
        +        "Query": {
        +          "title": "Query",
        +          "type": "string"
        +        },
        +        "__type": {
        +          "title": "Type",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "__type",
        +        "AvgClickPosition",
        +        "AvgImpressionPosition",
        +        "Clicks",
        +        "Date",
        +        "Impressions",
        +        "Query"
        +      ],
        +      "title": "QueryStats",
        +      "type": "object"
        +    }
        +  },
        +  "properties": {
        +    "result": {
        +      "items": {
        +        "$ref": "#/$defs/QueryStats"
        +      },
        +      "title": "Result",
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "get_query_statsOutput",
        +  "type": "object"
        +}
    • Changedget_query_traffic_stats1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$defs": {
        +    "RankAndTrafficStats": {
        +      "properties": {
        +        "Clicks": {
        +          "title": "Clicks",
        +          "type": "integer"
        +        },
        +        "Date": {
        +          "format": "date-time",
        +          "title": "Date",
        +          "type": "string"
        +        },
        +        "Impressions": {
        +          "title": "Impressions",
        +          "type": "integer"
        +        },
        +        "__type": {
        +          "title": "Type",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "__type",
        +        "Clicks",
        +        "Date",
        +        "Impressions"
        +      ],
        +      "title": "RankAndTrafficStats",
        +      "type": "object"
        +    }
        +  },
        +  "properties": {
        +    "result": {
        +      "items": {
        +        "$ref": "#/$defs/RankAndTrafficStats"
        +      },
        +      "title": "Result",
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "get_query_traffic_statsOutput",
        +  "type": "object"
        +}
    • Changedget_rank_and_traffic_stats1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$defs": {
        +    "RankAndTrafficStats": {
        +      "properties": {
        +        "Clicks": {
        +          "title": "Clicks",
        +          "type": "integer"
        +        },
        +        "Date": {
        +          "format": "date-time",
        +          "title": "Date",
        +          "type": "string"
        +        },
        +        "Impressions": {
        +          "title": "Impressions",
        +          "type": "integer"
        +        },
        +        "__type": {
        +          "title": "Type",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "__type",
        +        "Clicks",
        +        "Date",
        +        "Impressions"
        +      ],
        +      "title": "RankAndTrafficStats",
        +      "type": "object"
        +    }
        +  },
        +  "properties": {
        +    "result": {
        +      "items": {
        +        "$ref": "#/$defs/RankAndTrafficStats"
        +      },
        +      "title": "Result",
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "get_rank_and_traffic_statsOutput",
        +  "type": "object"
        +}
    • Changedget_related_keywords1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$defs": {
        +    "Keyword": {
        +      "properties": {
        +        "BroadImpressions": {
        +          "title": "Broadimpressions",
        +          "type": "integer"
        +        },
        +        "Impressions": {
        +          "title": "Impressions",
        +          "type": "integer"
        +        },
        +        "Query": {
        +          "title": "Query",
        +          "type": "string"
        +        },
        +        "__type": {
        +          "title": "Type",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "__type",
        +        "BroadImpressions",
        +        "Impressions",
        +        "Query"
        +      ],
        +      "title": "Keyword",
        +      "type": "object"
        +    }
        +  },
        +  "properties": {
        +    "result": {
        +      "items": {
        +        "$ref": "#/$defs/Keyword"
        +      },
        +      "title": "Result",
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "get_related_keywordsOutput",
        +  "type": "object"
        +}
    • Changedget_site_moves1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$defs": {
        +    "SiteMoveScope": {
        +      "enum": [
        +        0,
        +        1,
        +        2
        +      ],
        +      "title": "SiteMoveScope",
        +      "type": "integer"
        +    },
        +    "SiteMoveSettings": {
        +      "properties": {
        +        "Date": {
        +          "format": "date-time",
        +          "title": "Date",
        +          "type": "string"
        +        },
        +        "MoveScope": {
        +          "$ref": "#/$defs/SiteMoveScope"
        +        },
        +        "MoveType": {
        +          "$ref": "#/$defs/SiteMoveType"
        +        },
        +        "SourceUrl": {
        +          "pattern": "^https?://",
        +          "title": "Sourceurl",
        +          "type": "string"
        +        },
        +        "TargetUrl": {
        +          "pattern": "^https?://",
        +          "title": "Targeturl",
        +          "type": "string"
        +        },
        +        "__type": {
        +          "default": "SiteMoveSettings:#Microsoft.Bing.Webmaster.Api",
        +          "title": "Type",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "Date",
        +        "MoveScope",
        +        "MoveType",
        +        "SourceUrl",
        +        "TargetUrl"
        +      ],
        +      "title": "SiteMoveSettings",
        +      "type": "object"
        +    },
        +    "SiteMoveType": {
        +      "enum": [
        +        0,
        +        1
        +      ],
        +      "title": "SiteMoveType",
        +      "type": "integer"
        +    }
        +  },
        +  "properties": {
        +    "result": {
        +      "items": {
        +        "$ref": "#/$defs/SiteMoveSettings"
        +      },
        +      "title": "Result",
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "get_site_movesOutput",
        +  "type": "object"
        +}
    • Changedget_site_roles1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$defs": {
        +    "SiteRole": {
        +      "properties": {
        +        "Date": {
        +          "format": "date-time",
        +          "title": "Date",
        +          "type": "string"
        +        },
        +        "DelegatedCode": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "title": "Delegatedcode"
        +        },
        +        "DelegatedCodeOwnerEmail": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "title": "Delegatedcodeowneremail"
        +        },
        +        "DelegatorEmail": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "title": "Delegatoremail"
        +        },
        +        "Email": {
        +          "title": "Email",
        +          "type": "string"
        +        },
        +        "Expired": {
        +          "title": "Expired",
        +          "type": "boolean"
        +        },
        +        "Role": {
        +          "$ref": "#/$defs/UserRole"
        +        },
        +        "Site": {
        +          "title": "Site",
        +          "type": "string"
        +        },
        +        "VerificationSite": {
        +          "title": "Verificationsite",
        +          "type": "string"
        +        },
        +        "__type": {
        +          "title": "Type",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "__type",
        +        "Date",
        +        "Email",
        +        "Expired",
        +        "Role",
        +        "Site",
        +        "VerificationSite"
        +      ],
        +      "title": "SiteRole",
        +      "type": "object"
        +    },
        +    "UserRole": {
        +      "enum": [
        +        0,
        +        1,
        +        2
        +      ],
        +      "title": "UserRole",
        +      "type": "integer"
        +    }
        +  },
        +  "properties": {
        +    "result": {
        +      "items": {
        +        "$ref": "#/$defs/SiteRole"
        +      },
        +      "title": "Result",
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "get_site_rolesOutput",
        +  "type": "object"
        +}
    • Changedget_sites1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$defs": {
        +    "Site": {
        +      "properties": {
        +        "AuthenticationCode": {
        +          "title": "Authenticationcode",
        +          "type": "string"
        +        },
        +        "DnsVerificationCode": {
        +          "title": "Dnsverificationcode",
        +          "type": "string"
        +        },
        +        "IsVerified": {
        +          "title": "Isverified",
        +          "type": "boolean"
        +        },
        +        "Url": {
        +          "title": "Url",
        +          "type": "string"
        +        },
        +        "__type": {
        +          "title": "Type",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "__type",
        +        "AuthenticationCode",
        +        "DnsVerificationCode",
        +        "IsVerified",
        +        "Url"
        +      ],
        +      "title": "Site",
        +      "type": "object"
        +    }
        +  },
        +  "properties": {
        +    "result": {
        +      "items": {
        +        "$ref": "#/$defs/Site"
        +      },
        +      "title": "Result",
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "get_sitesOutput",
        +  "type": "object"
        +}
    • Changedget_url_info1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "AnchorCount": {
        +      "title": "Anchorcount",
        +      "type": "integer"
        +    },
        +    "DiscoveryDate": {
        +      "format": "date-time",
        +      "title": "Discoverydate",
        +      "type": "string"
        +    },
        +    "DocumentSize": {
        +      "title": "Documentsize",
        +      "type": "integer"
        +    },
        +    "HttpStatus": {
        +      "title": "Httpstatus",
        +      "type": "integer"
        +    },
        +    "IsPage": {
        +      "title": "Ispage",
        +      "type": "boolean"
        +    },
        +    "LastCrawledDate": {
        +      "format": "date-time",
        +      "title": "Lastcrawleddate",
        +      "type": "string"
        +    },
        +    "TotalChildUrlCount": {
        +      "title": "Totalchildurlcount",
        +      "type": "integer"
        +    },
        +    "Url": {
        +      "title": "Url",
        +      "type": "string"
        +    },
        +    "__type": {
        +      "title": "Type",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "__type",
        +    "AnchorCount",
        +    "DiscoveryDate",
        +    "DocumentSize",
        +    "HttpStatus",
        +    "IsPage",
        +    "LastCrawledDate",
        +    "TotalChildUrlCount",
        +    "Url"
        +  ],
        +  "title": "UrlInfo",
        +  "type": "object"
        +}
    • Changedget_url_links1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$defs": {
        +    "LinkDetail": {
        +      "properties": {
        +        "AnchorText": {
        +          "title": "Anchortext",
        +          "type": "string"
        +        },
        +        "Url": {
        +          "title": "Url",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "AnchorText",
        +        "Url"
        +      ],
        +      "title": "LinkDetail",
        +      "type": "object"
        +    }
        +  },
        +  "properties": {
        +    "Details": {
        +      "items": {
        +        "$ref": "#/$defs/LinkDetail"
        +      },
        +      "title": "Details",
        +      "type": "array"
        +    },
        +    "TotalPages": {
        +      "title": "Totalpages",
        +      "type": "integer"
        +    }
        +  },
        +  "required": [
        +    "Details",
        +    "TotalPages"
        +  ],
        +  "title": "LinkDetails",
        +  "type": "object"
        +}
    • Changedget_url_submission_quota1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "DailyQuota": {
        +      "title": "Dailyquota",
        +      "type": "integer"
        +    },
        +    "MonthlyQuota": {
        +      "title": "Monthlyquota",
        +      "type": "integer"
        +    },
        +    "__type": {
        +      "title": "Type",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "__type",
        +    "DailyQuota",
        +    "MonthlyQuota"
        +  ],
        +  "title": "UrlSubmissionQuota",
        +  "type": "object"
        +}
    • Changedget_url_traffic_info1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "Clicks": {
        +      "title": "Clicks",
        +      "type": "integer"
        +    },
        +    "Impressions": {
        +      "title": "Impressions",
        +      "type": "integer"
        +    },
        +    "IsPage": {
        +      "title": "Ispage",
        +      "type": "boolean"
        +    },
        +    "Url": {
        +      "title": "Url",
        +      "type": "string"
        +    },
        +    "__type": {
        +      "title": "Type",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "__type",
        +    "Clicks",
        +    "Impressions",
        +    "IsPage",
        +    "Url"
        +  ],
        +  "title": "UrlTrafficInfo",
        +  "type": "object"
        +}
    • Changedremove_blocked_url3 fields changed
      • addedInput schema / $defs / BlockedUrlRequestType
        Added value: +{
        +  "enum": [
        +    0,
        +    1
        +  ],
        +  "title": "BlockedUrlRequestType",
        +  "type": "integer"
        +}
      • addedInput schema / properties / request_type
        Added value: +{
        +  "$ref": "#/$defs/BlockedUrlRequestType",
        +  "default": 1
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "null"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "remove_blocked_urlOutput",
        +  "type": "object"
        +}
    • Changedremove_country_region_settings1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "null"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "remove_country_region_settingsOutput",
        +  "type": "object"
        +}
    • Changedremove_deep_link_block1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "null"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "remove_deep_link_blockOutput",
        +  "type": "object"
        +}
    • Changedremove_feed1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "null"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "remove_feedOutput",
        +  "type": "object"
        +}
    • Changedremove_page_preview_block1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "null"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "remove_page_preview_blockOutput",
        +  "type": "object"
        +}
    • Changedremove_query_parameter1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "null"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "remove_query_parameterOutput",
        +  "type": "object"
        +}
    • Changedremove_site1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "null"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "remove_siteOutput",
        +  "type": "object"
        +}
    • Changedremove_site_role1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "null"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "remove_site_roleOutput",
        +  "type": "object"
        +}
    • Changedsave_crawl_settings1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "null"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "save_crawl_settingsOutput",
        +  "type": "object"
        +}
    • Changedsubmit_content1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "null"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "submit_contentOutput",
        +  "type": "object"
        +}
    • Changedsubmit_feed1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "null"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "submit_feedOutput",
        +  "type": "object"
        +}
    • Changedsubmit_site_move1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "null"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "submit_site_moveOutput",
        +  "type": "object"
        +}
    • Changedsubmit_url1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "null"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "submit_urlOutput",
        +  "type": "object"
        +}
    • Changedsubmit_url_batch1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "null"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "submit_url_batchOutput",
        +  "type": "object"
        +}
    • Changedupdate_deep_link1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "null"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "update_deep_linkOutput",
        +  "type": "object"
        +}
    • Changedverify_site1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "boolean"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "verify_siteOutput",
        +  "type": "object"
        +}
  3. 62 tool updates
    • First observedadd_blocked_url
    • First observedadd_connected_page
    • First observedadd_country_region_settings
    • First observedadd_deep_link_block
    • First observedadd_page_preview_block
    • First observedadd_query_parameter
    • First observedadd_site
    • First observedadd_site_roles
    • First observedenable_disable_query_parameter
    • First observedfetch_url
    • First observedget_active_page_preview_blocks
    • First observedget_blocked_urls
    • First observedget_children_url_info
    • First observedget_children_url_traffic_info
    • First observedget_connected_pages
    • First observedget_content_submission_quota
    • First observedget_country_region_settings
    • First observedget_crawl_issues
    • First observedget_crawl_settings
    • First observedget_crawl_stats
    • First observedget_deep_link
    • First observedget_deep_link_algo_urls
    • First observedget_deep_link_blocks
    • First observedget_feed_details
    • First observedget_feeds
    • First observedget_fetched_url_details
    • First observedget_fetched_urls
    • First observedget_keyword
    • First observedget_keyword_stats
    • First observedget_link_counts
    • First observedget_page_query_stats
    • First observedget_page_stats
    • First observedget_query_page_detail_stats
    • First observedget_query_page_stats
    • First observedget_query_parameters
    • First observedget_query_stats
    • First observedget_query_traffic_stats
    • First observedget_rank_and_traffic_stats
    • First observedget_related_keywords
    • First observedget_site_moves
    • First observedget_site_roles
    • First observedget_sites
    • First observedget_url_info
    • First observedget_url_links
    • First observedget_url_submission_quota
    • First observedget_url_traffic_info
    • First observedremove_blocked_url
    • First observedremove_country_region_settings
    • First observedremove_deep_link_block
    • First observedremove_feed
    • First observedremove_page_preview_block
    • First observedremove_query_parameter
    • First observedremove_site
    • First observedremove_site_role
    • First observedsave_crawl_settings
    • First observedsubmit_content
    • First observedsubmit_feed
    • First observedsubmit_site_move
    • First observedsubmit_url
    • First observedsubmit_url_batch
    • First observedupdate_deep_link
    • First observedverify_site

TDQS

C2.7/5.0

Scored across 62 tools

Disambiguation2/5

There are many near-identical analytics tools (get_query_stats, get_query_traffic_stats, get_query_page_stats, get_page_query_stats, get_page_stats, get_url_traffic_info) whose boundaries are subtle and likely to be confused. The CRUD groups are mostly clear, but the overlapping stats getters make tool selection hazardous.

Naming Consistency4/5

Almost all tools follow a clear verb_noun snake_case pattern (get_*, add_*, remove_*, submit_*). Minor inconsistencies like add_site_roles vs remove_site_role, get_query_page_stats vs get_page_query_stats, and get_deep_link_algo_urls keep it from being perfectly uniform.

Tool Count2/5

62 tools is far too many for a coherent MCP surface, even for a broad API; many analytics getters could be consolidated. The count heavily outweighs the typical 3-15 well-scoped set and will impose a large selection burden on agents.

Completeness4/5

The tool surface covers most Webmaster Tools workflows: site verification, roles, feed/URL submission, crawl stats/issues, traffic stats, blocks, and settings. Minor gaps like no remove_connected_page and some deprecated deep-link endpoints prevent a perfect score.

Maintenance

ActivityMaintained
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    A
    maintenance
    Model Context Protocol (MCP) server that provides AI agents with access to Google Search Console data.
    25
    927 npm
    297
    MIT
  • F
    license
    Not graded
    quality
    Not graded
    maintenance
    A Model Context Protocol server that provides AI-grounded Bing search capabilities using the Azure AI Project Client. It enables intelligent web searches with automated citation tracking and URL extraction for seamless AI integration.
    -