MCP server for Microsoft Learn API documentation and keyword search.
Two tools with basic verb-noun naming (search_apis, get_api_page_content). Both have descriptions present but lack depth and actionable guidance. search_apis description is 180 chars (within baseline 194 avg but generic); get_api_page_content is 156 chars. Input schemas are minimal: single string parameters with descriptions present. No output schemas documented. No error handling guidance, no parameter constraints (enums, ranges), no pagination support despite search returning lists. No tool annotations (readOnlyHint, etc.). Composition is reasonable (two-step search→fetch pattern), but missing critical details for LLM planning.
Fetch the full HTML and text content of a Microsoft Learn documentation page, with structured parsing of parameters, members, return values, remarks, and related links.
Search for Windows documentation, or technical internals.If you are asked to search for something about technical internals of Windows, always start with a search_apis query if you don't have the name of an API or struct to start with. Once you have a list of pages, use get_api_page_content with the returned URLs for detailed information
No output schemas documented. LLMs cannot plan downstream calls or extract structured data. search_apis returns a list of dicts with id/title/url/snippet/category/last_updated, but this is inferred from code, not declared in tool definition.
No pagination support. search_apis returns up to 10 results (hardcoded $top=10) but accepts no limit/offset/page parameters. If results exceed 10, LLM cannot fetch more without re-querying with different keywords.
Error handling returns raw exceptions as dicts: {"error": str(e)}. No guidance on recovery, no categorization (retryable vs fatal), no actionable next steps for LLM.
No tool annotations. Both tools are read-only but lack readOnlyHint annotation. Agents cannot infer safety/idempotency from tool definition alone.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 51 | <=2025-11-25 | v2 |
Descriptions lack dependency hints and prerequisites. search_apis description mentions 'use get_api_page_content with returned URLs' but get_api_page_content description does not explain it expects URLs from search_apis. No guidance on when to call each tool.