A C# ASP.NET Core MCP server with HTTP/SSE transport that provides greeting tools and integrates with Azure OpenAI for tool decision-making via a SignalR chat hub.
This server exposes 2 tools with minimal documentation. Both tools lack parameter descriptions entirely, descriptions are extremely brief (under 30 chars), and there is no documented output schema. Tool names are non-standard (Echo, ReverseEcho instead of verb_noun patterns like greet_user, reverse_message). The implementation uses C# attributes for tool registration, which makes definitions visible in code, but parameter constraints, error handling, and composition patterns are absent. Per the rubric baseline, 100% of A+ tools have parameter descriptions, this server has 0%. Average tool description length baseline is 194 chars; these tools are 20-40 chars each.
Says Hello to a user
Echoes in reverse the message sent by the client.
Tool names do not follow verb_noun convention. 'Echo' and 'ReverseEcho' are generic and do not clearly signal action or intent. Standard conventions use verb_noun (e.g., greet_user, reverse_message) so LLMs infer purpose from the name alone.
All parameter descriptions are missing. The 'username' param in Echo and 'message' param in ReverseEcho have no descriptions in the schema. Baseline: 100% of A+ tools have parameter descriptions. This forces LLMs to guess parameter semantics.
Tool descriptions are far too brief (20-40 chars vs. baseline 194 chars). 'Says Hello to a user' and 'Echoes in reverse the message sent by the client' lack context for when to use each tool, what the output format is, and any prerequisites.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 30 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 24 | - | v1 |
No output schema documented. Neither tool declares what it returns (e.g., string format, structure, guaranteed fields). LLMs cannot plan downstream operations without knowing output shape. Baseline: 100% of A+ tools document return types.
No error handling guidance. Neither tool provides recovery hints or error categorization. If ReverseEcho fails on invalid input, the LLM has no actionable next step.
No input validation or constraints. The 'username' and 'message' params accept any string with no length limits, format requirements, or sanitization hints. This invites oversized or malicious inputs.