A comprehensive workshop for mastering AI agent development with Strands framework, featuring D&D-themed agents for dice rolling, character management, rules lookup, and game orchestration using MCP integration
This server has critical definition gaps. Tool schemas are either missing or inferred from code rather than explicitly registered. Descriptions vary widely, some are adequate (roll_dice, query_dnd_rules), others are vague or incomplete (http_request, python_repl, file_write). Parameter descriptions are sparse or absent. No documented output schemas. Error handling is minimal. The codebase shows tutorial/workshop code with TODO comments, not production-grade tool definitions. Tool registration appears to rely on the Strands framework's @tool decorator, but explicit schema validation is not visible in the provided source.
Character details respecting the GameCharacters object fields. Roll a dice to generate the stats_dic (ability scores). When rolling ability scores, remember the traditional method: roll 4d6, drop the lowest die.
Built-in tool for writing files
Find a character by name
Built-in tool for making HTTP requests to websites
List all characters in the database
Built-in tool for executing Python code
Fast D&D rule lookup. Returns brief rule with page reference.
No input schemas visible for http_request, python_repl, file_write, list_all_characters.
Descriptions for http_request, python_repl, and file_write are under 20 characters or missing detail.
No documented output schemas for any tool. LLMs cannot plan downstream calls or extract required fields without knowing return structure.
Destructive/irreversible tools (python_repl, file_write, create_character) lack error handling guidance, confirmation steps, or dry-run support. No recovery paths documented.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 50 | <=2025-11-25 | v2 |
🎲 Roll multiple dice with a specified number of faces.
🎲 Roll a dice with a specified number of faces.
Parameter descriptions are sparse or missing. E.g., find_character_by_name has only 'The character's name to search for' with no format/length constraints. create_character's stats_dict lacks field documentation.