MCP server implementation for Bing Search API integration
Three tools with complete input schemas and descriptions, but descriptions are generic and lack LLM-optimized guidance. All tools are read-only search operations with similar structure. Parameters are typed and constrained (count 1-50, market codes, freshness enum), but descriptions lack actionable context about when to use each tool vs. alternatives. No output schema documentation. Error handling returns plain strings without recovery guidance. Rate limiting is implemented server-side but not exposed to the agent.
Searches for images using Bing Image Search API for visual content.
Searches for news articles using Bing News Search API for current events and timely information.
Performs a web search using the Bing Search API for general information and websites.
Output schema not documented. Tools return plain text concatenation of results; LLMs cannot parse structured fields or plan downstream operations. Should return JSON with typed fields (title, url, description, date, provider, etc.).
Descriptions lack LLM-optimized guidance. Generic 'Performs a web search' does not explain WHEN to use web_search vs. news_search vs. image_search. Should include decision criteria: 'Use for general information and websites; prefer news_search for current events, image_search for visual content.'
Error responses are plain strings without recovery guidance. 'Error communicating with Bing API: <error>' tells the agent nothing actionable. Should categorize errors (retryable, user-fixable, fatal) and suggest next steps.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 67 | 2026-07-28+ | v2 |
Rate limiting is server-side and opaque to the agent. When rate limit is hit, error message 'Rate limit exceeded' provides no guidance on retry timing or backoff strategy. Should return Retry-After or suggest exponential backoff.
Parameter 'freshness' in bing_news_search lacks enum constraint in schema. Description says 'Day, Week, Month' but schema shows type string with no enum. LLMs may pass invalid values like 'daily' or 'weekly'.