Skip to main content
Glama
drewsungg

Pokemon Showdown MCP Server

by drewsungg

list_dangerous_abilities

Identify abilities that impact Pokemon battle outcomes by filtering categories like immunities, damage reduction, status reflection, damage boosts, and move priority.

Instructions

List abilities that can significantly affect battle outcomes (immunities, damage reduction, status reflection, etc.)

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
categoryNoCategory of abilities: 'immunity' (type immunities), 'defense' (damage reduction), 'reflect' (status reflection), 'offense' (damage boosts), 'priority' (move order), 'all' (default)all

Implementation Reference

  • Registers the 'list_dangerous_abilities' tool, including its description and input schema for the optional 'category' parameter.
    Tool( name="list_dangerous_abilities", description="List abilities that can significantly affect battle outcomes (immunities, damage reduction, status reflection, etc.)", inputSchema={ "type": "object", "properties": { "category": { "type": "string", "description": "Category of abilities: 'immunity' (type immunities), 'defense' (damage reduction), 'reflect' (status reflection), 'offense' (damage boosts), 'priority' (move order), 'all' (default)", "default": "all" } } } ),
  • The execution logic for the 'list_dangerous_abilities' tool. Hardcodes a dictionary of dangerous abilities by category and generates a formatted markdown list based on the input category (or all).
    elif name == "list_dangerous_abilities": category = arguments.get("category", "all").lower() DANGEROUS_ABILITIES = { "immunity": { "Levitate": "Immune to Ground moves", "Flash Fire": "Immune to Fire moves, boosts own Fire attacks", "Volt Absorb": "Immune to Electric, heals instead", "Water Absorb": "Immune to Water, heals instead", "Dry Skin": "Immune to Water (heals), weak to Fire", "Lightning Rod": "Immune to Electric, boosts Sp.Atk", "Motor Drive": "Immune to Electric, boosts Speed", "Storm Drain": "Immune to Water, boosts Sp.Atk", "Sap Sipper": "Immune to Grass, boosts Attack", "Earth Eater": "Immune to Ground, heals instead", "Wonder Guard": "Only super effective moves deal damage!", }, "defense": { "Fur Coat": "Doubles Defense (halves physical damage)", "Ice Scales": "Halves Special damage", "Fluffy": "Halves contact damage (but 2x Fire damage)", "Multiscale": "Halves damage at full HP", "Shadow Shield": "Halves damage at full HP", "Sturdy": "Survives any hit at full HP with 1 HP", "Filter": "Reduces super effective damage by 25%", "Solid Rock": "Reduces super effective damage by 25%", "Prism Armor": "Reduces super effective damage by 25%", "Thick Fat": "Halves Fire and Ice damage", "Heatproof": "Halves Fire damage", "Water Bubble": "Halves Fire damage, doubles Water attacks", "Unaware": "Ignores opponent's stat boosts", "Marvel Scale": "1.5x Defense when statused", }, "reflect": { "Magic Bounce": "Reflects status moves (Stealth Rock, Thunder Wave, etc.)", }, "offense": { "Huge Power": "Doubles Attack stat!", "Pure Power": "Doubles Attack stat!", "Adaptability": "STAB becomes 2x instead of 1.5x", "Technician": "1.5x boost to moves with 60 BP or less", "Tinted Lens": "Doubles 'not very effective' damage", "Protean": "Changes type to match used move (always STAB)", "Libero": "Changes type to match used move (always STAB)", }, "priority": { "Prankster": "+1 priority to status moves", "Gale Wings": "+1 priority to Flying moves at full HP", }, "contact": { "Rough Skin": "1/8 damage to attacker on contact", "Iron Barbs": "1/8 damage to attacker on contact", "Flame Body": "30% chance to burn on contact", "Static": "30% chance to paralyze on contact", "Poison Point": "30% chance to poison on contact", } } lines = ["## Dangerous Abilities\n"] categories_to_show = [category] if category != "all" else list(DANGEROUS_ABILITIES.keys()) for cat in categories_to_show: if cat in DANGEROUS_ABILITIES: lines.append(f"### {cat.title()}\n") for ability_name, desc in DANGEROUS_ABILITIES[cat].items(): lines.append(f"- **{ability_name}**: {desc}") lines.append("") if len(lines) == 1: return [TextContent(type="text", text=f"Unknown category: {category}. Use 'immunity', 'defense', 'reflect', 'offense', 'priority', 'contact', or 'all'.")] return [TextContent(type="text", text="\n".join(lines))]

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/drewsungg/mcpkmn-showdown'

If you have feedback or need assistance with the MCP directory API, please join our Discord server