MCP server demonstrating ratchet-based access control for tools with session management, token validation, and observability
Four tools with minimal descriptions (20-50 chars) and no visible input parameter schemas in the source. Tool names follow verb_noun convention (greet, get_user_name, get_time, get_date), but descriptions lack actionable context for LLM selection. No parameter descriptions visible. No output schemas documented. No error handling guidance. The code shows tool registration via mcp.AddTool() but parameter schemas are inferred from struct tags (jsonschema) rather than explicitly defined in the tool registration, making them difficult to verify. This is a demo/example server with minimal production-grade tooling.
Returns the current date (for demo purposes, returns a fixed date)
Returns the current time (for demo purposes, returns a fixed time)
Returns the current user's name (for demo purposes, returns 'DemoUser')
Returns a greeting message for the given name
No input parameter descriptions. The 'greet' tool accepts a 'name' parameter but provides no guidance on format, length, or constraints. LLMs cannot infer whether to pass 'John', '[email protected]', or a user ID.
No output schemas documented. Tools return text content but do not specify the structure or fields of responses. LLMs cannot plan downstream tool calls or extract structured data.
Descriptions are too short (20-50 chars) and lack context. 'Returns the current user's name (for demo purposes, returns 'DemoUser')' is a statement, not a selection guide. No explanation of WHEN to call this tool or what it enables.
No error handling guidance. If 'greet' receives an empty name or invalid input, the tool provides no recovery path. LLMs cannot self-correct.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 43 | 2026-07-28+ | v2 |
Input schemas inferred from struct tags rather than explicitly registered. Parameter type information is not directly visible in tool registration, making it difficult for clients to validate inputs or for LLMs to understand constraints.