A template MCP server implementation in C# / .NET demonstrating tool registration and HTTP transport
Three simple tools with basic descriptions and schemas. All tools have descriptions (10-60 chars, below the 194-char baseline) and input schemas with typed parameters. However, descriptions lack depth, they state WHAT but not WHEN or WHY to use each tool. No output schemas documented. No error handling guidance. No parameter constraints (enums, ranges). Tools are trivial (echo, reverse, add) and do not reflect production patterns like pagination, chaining IDs, or recovery guidance. Naming is clear (verb_noun) but tools lack the sophistication expected in production agents.
Add two integers and return their sum.
Echo a message back unchanged. A simple check that the server is reachable.
Reverse the characters in a piece of text.
Descriptions are too brief (10-60 chars vs. 194-char baseline). They state WHAT but not WHEN to use or any prerequisites. LLMs cannot determine when to select these tools over alternatives.
No output schemas documented. LLMs cannot plan downstream tool calls or extract structured data. Responses are bare strings/integers with no field documentation.
No error handling or recovery guidance. If a tool fails, the LLM has no actionable next step. No validation of input ranges or constraints.
Parameters lack constraints. 'message' and 'text' accept any string; 'a' and 'b' accept any integer. No min/max bounds, no format hints, no enum alternatives.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | 2026-07-28+ | v2 |
Tools are trivial examples (echo, reverse, add). No production patterns demonstrated: no pagination, no chaining IDs, no batch operations, no idempotency hints.