A Rust SDK for building Model Context Protocol (MCP) servers and clients with support for HTTP, stdio transports, OAuth authentication, and multiple framework integrations
Scoring was not performed
9 out of 18 tools have missing or undocumented descriptions. Tools like 'remote_tool', 'get_file_info', 'trace_tool', 'greeter', 'hello_world', 'validate_resource', 'long_running_task', 'admin_tool', 'roots_request', 'generate_business_card', and 'pay_a_bill' have no description field visible in the source data.
Many parameter descriptions are minimal or missing. The rubric requires parameters like 'command', 'uri', 'res', 'name' (in multiple tools) to have detailed descriptions explaining what values are accepted, the format expected, and when to use them. Most parameters lack this guidance.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 31 | <=2025-11-25 | v2 |
| 2026-03-09 | D | 53 | 2024-11-05+ | v1 |
No output schemas documented for the majority of tools. Only say_json and say_out_json have explicit output_schema definitions in the source. Tools like long_running_task (which is marked WRITE risk) do not document what they return, making it impossible for agents to chain them or extract results.
Three tools marked with WRITE risk (long_running_task, generate_business_card, pay_a_bill) lack explicit descriptions of their side effects. The rubric requires that modifying tools MUST explicitly state what they do to prevent accidental invocation. No recovery guidance or dry-run/confirmation patterns are evident.
Generic tool names without clear verb-noun pattern. 'trace_tool', 'admin_tool', 'hello_world', 'remote_tool' do not follow the recommended verb_noun_resource naming convention (get_*, create_*, update_*, etc.). This makes it harder for LLMs to infer intent from the name alone.
Parameter types are present in schemas but descriptions for what those parameters mean are often missing or cryptic. For example, 'long_running_task' accepts 'command' but does not explain what commands are valid, what format they expect, or what happens if an invalid command is passed.