{"serverId":"mcp-registry/com.secdim/mcp","tools":[{"name":"fetch","fixed":{"name":"fetch","description":"\n    Fetch detailed content for a specific SecDim Play lab (hands-on, scored challenge).\n\n    Args:\n        id: Lab ID in format \"lab:slug\" (e.g., \"lab:xss-dom\")\n\n    Returns:\n        Dictionary containing:\n        - id: The lab ID\n        - title: Lab title\n        - content: Detailed content in markdown format\n        - metadata: Additional lab information\n    ","inputSchema":{"type":"object","title":"fetchArguments","required":["id"],"properties":{"id":{"type":"string","title":"Id"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":150,"tokensAfter":150},{"name":"get_learn_course","fixed":{"name":"get_learn_course","description":"\n    Get a SecDim Learn course's details, including its syllabus of topics.\n\n    Args:\n        course_slug: The course's slug, as returned by search_learn_courses\n            (e.g. \"owasp-top-10\")\n\n    Returns:\n        Dictionary with the course's title, description, image, slug, \"difficulty\"\n        label and a \"topics\" list. Each topic includes its title, description,\n        category, slug, kind (e.g. text/video/lab), level, subscription tier,\n        duration and completion status.\n        U","inputSchema":{"type":"object","title":"get_learn_courseArguments","required":["course_slug"],"properties":{"course_slug":{"type":"string","title":"Course Slug"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":202,"tokensAfter":202},{"name":"get_learn_topic","fixed":{"name":"get_learn_topic","description":"\n    Get a SecDim Learn topic's content.\n\n    Args:\n        course_slug: The course's slug, as returned by search_learn_courses\n            (e.g. \"owasp-top-10\")\n        topic_slug: The topic's slug, as returned by get_learn_course\n            (e.g. \"introduction-secure-coding\")\n\n    Returns:\n        Dictionary with the topic's title, description, category, kind, level,\n        subscription tier, duration, completion status and \"file_content\" (the\n        topic's content in AsciiDoc format).\n   ","inputSchema":{"type":"object","title":"get_learn_topicArguments","required":["course_slug","topic_slug"],"properties":{"topic_slug":{"type":"string","title":"Topic Slug"},"course_slug":{"type":"string","title":"Course Slug"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":220,"tokensAfter":220},{"name":"get_secdim_profile","fixed":{"name":"get_secdim_profile","description":"\n    Fetch a SecDim player's profile: scores, completed challenges, skills,\n    security interests and an experience estimate.\n\n    Use this tool to understand a player's demonstrated secure coding ability\n    before building a learning pathway. The profile includes actual challenge\n    completion data (by difficulty level) and security topics the player has\n    practised — weight this demonstrated performance over a user's self-reported\n    level when deciding what difficulty and topics to reco","inputSchema":{"type":"object","title":"get_secdim_profileArguments","required":["secdim_username"],"properties":{"secdim_username":{"type":"string","title":"Secdim Username"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":204,"tokensAfter":204},{"name":"search","fixed":{"name":"search","description":"\n    Search for SecDim Play secure coding labs (hands-on, scored challenges).\n\n    This tool searches across SecDim Play's hands-on secure coding labs based on the\n    search query. The backend API handles parsing of vulnerability names, CWE IDs, and OWASP IDs.\n\n    Language can be specified using the format \"lang:javascript\".\n\n    Args:\n        query: Search query that may include:\n               - Vulnerability names (e.g., \"XSS\", \"SQL injection\")\n               - CWE IDs (e.g., \"79\")\n        ","inputSchema":{"type":"object","title":"searchArguments","required":["query"],"properties":{"query":{"type":"string","title":"Query"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":192,"tokensAfter":192},{"name":"search_learn_courses","fixed":{"name":"search_learn_courses","description":"\n    Search SecDim Learn courses.\n\n    SecDim Learn provides tutorial-based courses (mixing video, text and hands-on\n    lab topics) covering secure coding, secure design, vibe coding security, devsecops,\n    and cloud security. Many courses are complementary or prerequisite to hands-on,\n    scored SecDim Play challenges/labs.\n\n    Use this tool to:\n    - Browse the SecDim Learn course catalogue\n    - Find courses related to a topic, language, or technology (e.g. \"OWASP Top 10\",\n      \"fuzzing\",","inputSchema":{"type":"object","title":"search_learn_coursesArguments","properties":{"search":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search","default":null}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":205,"tokensAfter":205},{"name":"search_play_challenges","fixed":{"name":"search_play_challenges","description":"\n    Return a list of hands-on SecDim Play secure coding challenges (labs) related to a detected or suspected vulnerability.\n\n    SecDim Play challenges are scored, hands-on labs: find and fix a real vulnerability\n    in running code to earn points and badges.\n\n    Use this tool to:\n    - Find hands-on SecDim Play labs for specific vulnerabilities like XSS, SQL Injection, etc.\n    - Explore OWASP Top 10 vulnerabilities and related labs\n    - Provide additional resources and guides to help develo","inputSchema":{"type":"object","title":"search_play_challengesArguments","required":["search"],"properties":{"cwe":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Cwe","default":null},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type","default":null},"mitre":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mitre","default":null},"owasp":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Owasp","default":null},"search":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"},"language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language","default":null},"difficulty":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Difficulty","default":null},"technology":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Technology","default":null}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":378,"tokensAfter":378}],"toolsChanged":7,"tokensSaved":0,"todo":[{"tool":"fetch","params":["id"]},{"tool":"get_learn_course","params":["course_slug"]},{"tool":"get_learn_topic","params":["topic_slug","course_slug"]},{"tool":"get_secdim_profile","params":["secdim_username"]},{"tool":"search","params":["query"]},{"tool":"search_learn_courses","params":["search"]},{"tool":"search_play_challenges","params":["cwe","type","mitre","owasp","search","language","difficulty","technology"]}],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}