Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,536Letters: 14Defects: 1,322counted 2 min ago
teppi

Server definition

Hash
sha256:fa1b1a9f82630b9bf3eb213334e93ce91f75544dd8e25450da84d2b863ecf342
What it is
What a remote MCP server returned when asked what it offers: 7 tools

The blob, as servednamed by its sha256

{ "instructions": "Start with pokeapi_get_pokemon for a Pokémon profile with stats, abilities, evolution, and sprites. Use pokeapi_get_type_matchups for type effectiveness and pokeapi_find_pokemon to filter by generation, type, pokédex, or egg group. Read pokeapi://pokemon/{identifier} or pokeapi://type/{typeName} for injectable Pokémon or type context.", "tools": [ { "description": "Filter Pokémon by generation, type, regional pokédex, or egg group. Returns names and PokéAPI IDs; every returned name works as a pokeapi_get_pokemon identifier, where a species name resolves to its default variety. At least one of generation, type, pokedex, or egg_group is required; the ones provided are combined with AND logic, and query adds strict token matching on name within them. A call with no category filter, with or without query, returns an empty result and a notice naming the requirement.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "egg_group": { "description": "Egg group name (e.g. \"monster\", \"fairy\", \"dragon\"). Filters to Pokémon in this egg group.", "type": "string" }, "generation": { "description": "Generation name (e.g. \"generation-i\", \"generation-iii\"). Filters to Pokémon introduced in this generation.", "type": "string" }, "limit": { "default": 50, "description": "Maximum results to return. Positive integer; defaults to 50.", "exclusiveMinimum": 0, "maximum": 9007199254740991, "type": "integer" }, "offset": { "default": 0, "description": "Offset into the filtered result set for pagination. Non-negative integer; defaults to 0.", "maximum": 9007199254740991, "minimum": 0, "type": "integer" }, "pokedex": { "description": "Regional pokédex name (e.g. \"kanto\", \"hoenn\", \"galar\"). Filters to entries in that dex.", "type": "string" }, "query": { "description": "Strict token match on name. \"chu\" matches \"pikachu\" and \"raichu\". Case-insensitive. At most 100 characters; whitespace separates tokens, and every token must match.", "maxLength": 100, "type": "string" }, "type": { "description": "Type name (e.g. \"fire\", \"psychic\"). Filters to Pokémon of this type.", "type": "string" } }, "type": "object" }, "name": "pokeapi_find_pokemon", "outputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "anyOf": [ { "not": { "required": [ "error" ] }, "required": [ "pokemon", "totalCount", "shown", "appliedFilters" ] }, { "required": [ "error" ] } ], "properties": { "appliedFilters": { "additionalProperties": false, "description": "Effective nonblank filters and pagination controls for this response.", "properties": { "egg_group": { "description": "Normalized egg-group filter, when applied.", "type": "string" }, "generation": { "description": "Normalized generation filter, when applied.", "type": "string" }, "limit": { "description": "Accepted page size, including the default of 50.", "exclusiveMinimum": 0, "maximum": 9007199254740991, "type": "integer" }, "offset": { "description": "Accepted page offset, including the default of 0.", "maximum": 9007199254740991, "minimum": 0, "type": "integer" }, "pokedex": { "description": "Normalized pokédex filter, when applied.", "type": "string" }, "query": { "description": "Applied lowercase query tokens joined with single spaces. Omitted without a category filter.", "type": "string" }, "type": { "description": "Normalized type filter, when applied.", "type": "string" } }, "required": [ "limit", "offset" ], "type": "object" }, "error": { "additionalProperties": {}, "description": "Present when the call failed. Absent on success.", "properties": { "code": { "description": "JSON-RPC error code for this failure.", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "data": { "additionalProperties": {}, "properties": { "reason": { "description": "Machine-readable failure mode. Declared by this tool: `invalid_filter`: An unrecognized generation, type, pokédex, or egg-group name was provided. Other values are possible when a failure originates below the handler.", "examples": [ "invalid_filter" ], "type": "string" }, "recovery": { "additionalProperties": {}, "description": "Actionable next step for the caller.", "properties": { "hint": { "type": "string" } }, "required": [ "hint" ], "type": "object" }, "retryable": { "description": "Whether retrying may succeed.", "type": "boolean" } }, "type": "object" }, "message": { "description": "Human-readable description of what went wrong.", "type": "string" } }, "required": [ "code", "message" ], "type": "object" }, "notice": { "description": "Guidance for missing category filters, zero matches, or an offset beyond the results.", "type": "string" }, "pokemon": { "description": "Matching Pokémon entries.", "items": { "additionalProperties": false, "description": "Pokémon entry with PokéAPI ID and name.", "properties": { "id": { "description": "PokéAPI ID: Pokémon record for type filters, species record for generation, pokedex, or egg_group filters. Form IDs are not National Pokédex numbers.", "type": "number" }, "name": { "description": "Pokémon name.", "type": "string" } }, "required": [ "id", "name" ], "type": "object" }, "type": "array" }, "shown": { "description": "Number of results in this response.", "type": "number" }, "totalCount": { "description": "Total matching Pokémon before limit/offset.", "type": "number" } }, "type": "object" } }, { "description": "Get ability details by name or numeric ID — full English effect text, short effect text, generation introduced, and the list of Pokémon that have the ability (including hidden-ability flag and slot). Ability names are returned by pokeapi_get_pokemon in the abilities array.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "identifier": { "description": "Ability name in lowercase hyphenated form (e.g. \"overgrow\", \"speed-boost\") or numeric ID as a string.", "type": "string" } }, "required": [ "identifier" ], "type": "object" }, "name": "pokeapi_get_ability", "outputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "anyOf": [ { "not": { "required": [ "error" ] }, "required": [ "id", "name", "effectText", "shortEffectText", "generation", "pokemon" ] }, { "required": [ "error" ] } ], "properties": { "effectText": { "description": "Full English effect description. Null when unavailable.", "type": [ "string", "null" ] }, "error": { "additionalProperties": {}, "description": "Present when the call failed. Absent on success.", "properties": { "code": { "description": "JSON-RPC error code for this failure.", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "data": { "additionalProperties": {}, "properties": { "reason": { "description": "Machine-readable failure mode. Declared by this tool: `not_found`: The identifier resolves to no ability in PokéAPI. Other values are possible when a failure originates below the handler.", "examples": [ "not_found" ], "type": "string" }, "recovery": { "additionalProperties": {}, "description": "Actionable next step for the caller.", "properties": { "hint": { "type": "string" } }, "required": [ "hint" ], "type": "object" }, "retryable": { "description": "Whether retrying may succeed.", "type": "boolean" } }, "type": "object" }, "message": { "description": "Human-readable description of what went wrong.", "type": "string" } }, "required": [ "code", "message" ], "type": "object" }, "generation": { "description": "Generation in which the ability was introduced.", "type": "string" }, "id": { "description": "Ability ID.", "type": "number" }, "name": { "description": "Ability name in hyphenated lowercase.", "type": "string" }, "pokemon": { "description": "Pokémon that have this ability.", "items": { "additionalProperties": false, "description": "Pokémon entry with ability slot and hidden-ability flag.", "properties": { "isHidden": { "description": "True when this is the hidden ability for the Pokémon.", "type": "boolean" }, "name": { "description": "Pokémon name.", "type": "string" }, "slot": { "description": "Ability slot (1, 2, or 3).", "type": "number" } }, "required": [ "name", "isHidden", "slot" ], "type": "object" }, "type": "array" }, "shortEffectText": { "description": "Short English effect summary. Null when unavailable.", "type": [ "string", "null" ] } }, "type": "object" } }, { "description": "Get item details by name or numeric ID — effect text, category, versioned purchase and sell prices, fling power, item attributes (holdable, consumable, etc.), sprite URL, and Pokémon that commonly hold it.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "identifier": { "description": "Item name in lowercase hyphenated form (e.g. \"choice-specs\", \"leftovers\") or numeric ID as a string.", "type": "string" } }, "required": [ "identifier" ], "type": "object" }, "name": "pokeapi_get_item", "outputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "anyOf": [ { "not": { "required": [ "error" ] }, "required": [ "id", "name", "category", "cost", "prices", "flingPower", "effectText", "shortEffectText", "attributes", "heldByPokemon", "spriteUrl" ] }, { "required": [ "error" ] } ], "properties": { "attributes": { "description": "Item attributes (e.g. \"holdable\", \"consumable\", \"usable-in-battle\").", "items": { "type": "string" }, "type": "array" }, "category": { "description": "Item category (e.g. \"held-items\", \"medicine\").", "type": "string" }, "cost": { "description": "Legacy Pokédollar cost when supplied. Null when unavailable; zero is a literal amount. Independent of versioned prices.", "type": [ "number", "null" ] }, "effectText": { "description": "Full English effect description. Null when unavailable.", "type": [ "string", "null" ] }, "error": { "additionalProperties": {}, "description": "Present when the call failed. Absent on success.", "properties": { "code": { "description": "JSON-RPC error code for this failure.", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "data": { "additionalProperties": {}, "properties": { "reason": { "description": "Machine-readable failure mode. Declared by this tool: `not_found`: The identifier resolves to no item in PokéAPI. Other values are possible when a failure originates below the handler.", "examples": [ "not_found" ], "type": "string" }, "recovery": { "additionalProperties": {}, "description": "Actionable next step for the caller.", "properties": { "hint": { "type": "string" } }, "required": [ "hint" ], "type": "object" }, "retryable": { "description": "Whether retrying may succeed.", "type": "boolean" } }, "type": "object" }, "message": { "description": "Human-readable description of what went wrong.", "type": "string" } }, "required": [ "code", "message" ], "type": "object" }, "flingPower": { "description": "Fling move base power when this item is flung. Null if not throwable.", "type": [ "number", "null" ] }, "heldByPokemon": { "description": "Pokémon that commonly hold this item in the wild.", "items": { "type": "string" }, "type": "array" }, "id": { "description": "Item ID.", "type": "number" }, "name": { "description": "Item name in hyphenated lowercase.", "type": "string" }, "prices": { "description": "All supplied price records in upstream order. Empty when no records are available.", "items": { "additionalProperties": false, "description": "One version and currency price record.", "properties": { "currency": { "description": "Currency name for both prices.", "type": "string" }, "purchasePrice": { "description": "Purchase price in this currency and version group. Null means not purchasable; zero is a literal amount.", "type": [ "number", "null" ] }, "sellPrice": { "description": "Sell price in this currency and version group. Null means not sellable; zero is a literal amount.", "type": [ "number", "null" ] }, "versionGroup": { "description": "Version group these prices apply to.", "type": "string" } }, "required": [ "versionGroup", "currency", "purchasePrice", "sellPrice" ], "type": "object" }, "type": "array" }, "shortEffectText": { "description": "Short English effect summary. Null when unavailable.", "type": [ "string", "null" ] }, "spriteUrl": { "description": "Item sprite URL. Null when no sprite is available.", "type": [ "string", "null" ] } }, "type": "object" } }, { "description": "Get move details by name or numeric ID — type, damage class, power, accuracy, PP, priority, target, stat changes, status-effect chance, and full English effect text. Set include_learners=true to include the list of Pokémon that can learn the move. Move names are available from pokeapi_get_pokemon when include_moves=true.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "identifier": { "description": "Move name in lowercase hyphenated form (e.g. \"flamethrower\", \"close-combat\") or numeric ID as a string.", "type": "string" }, "include_learners": { "default": false, "description": "Include the list of Pokémon that can learn this move. Defaults to false as the list can be large.", "type": "boolean" } }, "required": [ "identifier" ], "type": "object" }, "name": "pokeapi_get_move", "outputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "anyOf": [ { "not": { "required": [ "error" ] }, "required": [ "id", "name", "type", "damageClass", "power", "accuracy", "pp", "priority", "effectChance", "effectText", "shortEffectText", "target", "statChanges", "learnedByPokemon", "learnersIncluded" ] }, { "required": [ "error" ] } ], "properties": { "accuracy": { "description": "Accuracy percentage (0–100). Null for moves that always hit.", "type": [ "number", "null" ] }, "damageClass": { "description": "Damage class: physical, special, or status. Null when unavailable.", "type": [ "string", "null" ] }, "effectChance": { "description": "Secondary effect chance percentage. Null when not applicable.", "type": [ "number", "null" ] }, "effectText": { "description": "Full English effect description. Null when unavailable.", "type": [ "string", "null" ] }, "error": { "additionalProperties": {}, "description": "Present when the call failed. Absent on success.", "properties": { "code": { "description": "JSON-RPC error code for this failure.", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "data": { "additionalProperties": {}, "properties": { "reason": { "description": "Machine-readable failure mode. Declared by this tool: `not_found`: The identifier resolves to no move in PokéAPI. Other values are possible when a failure originates below the handler.", "examples": [ "not_found" ], "type": "string" }, "recovery": { "additionalProperties": {}, "description": "Actionable next step for the caller.", "properties": { "hint": { "type": "string" } }, "required": [ "hint" ], "type": "object" }, "retryable": { "description": "Whether retrying may succeed.", "type": "boolean" } }, "type": "object" }, "message": { "description": "Human-readable description of what went wrong.", "type": "string" } }, "required": [ "code", "message" ], "type": "object" }, "id": { "description": "Move ID.", "type": "number" }, "learnedByPokemon": { "description": "Pokémon names that can learn this move (populated when include_learners=true).", "items": { "type": "string" }, "type": "array" }, "learnersIncluded": { "description": "True when the learner list was requested, including when no learners are known.", "type": "boolean" }, "name": { "description": "Move name in hyphenated lowercase.", "type": "string" }, "power": { "description": "Base power. Null for status moves.", "type": [ "number", "null" ] }, "pp": { "description": "Base PP. Null when unavailable.", "type": [ "number", "null" ] }, "priority": { "description": "Priority bracket (positive = higher priority, negative = lower).", "type": "number" }, "shortEffectText": { "description": "Short English effect summary. Null when unavailable.", "type": [ "string", "null" ] }, "statChanges": { "description": "Stat stage changes caused by this move.", "items": { "additionalProperties": false, "description": "Stat stage change entry — affected stat and magnitude.", "properties": { "change": { "description": "Stat stage change (positive = buff, negative = debuff).", "type": "number" }, "stat": { "description": "Stat name.", "type": "string" } }, "required": [ "stat", "change" ], "type": "object" }, "type": "array" }, "target": { "description": "Target selection (e.g. \"selected-pokemon\", \"all-opponents\").", "type": "string" }, "type": { "description": "Elemental type (e.g. \"fire\").", "type": "string" } }, "type": "object" } }, { "description": "Get nature details — the stat boosted (+10%), stat reduced (-10%), and preferred/disliked berry flavors. Omit the identifier to list all 25 natures at once. Natures are critical for competitive team-building: every non-neutral nature modifies two stats by ±10%.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "identifier": { "description": "Nature name (e.g. \"modest\", \"jolly\") or ID 1–25 as a string. Omit to list all 25 natures.", "type": "string" } }, "type": "object" }, "name": "pokeapi_get_nature", "outputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "anyOf": [ { "not": { "required": [ "error" ] }, "required": [ "natures", "isListAll" ] }, { "required": [ "error" ] } ], "properties": { "error": { "additionalProperties": {}, "description": "Present when the call failed. Absent on success.", "properties": { "code": { "description": "JSON-RPC error code for this failure.", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "data": { "additionalProperties": {}, "properties": { "reason": { "description": "Machine-readable failure mode. Declared by this tool: `not_found`: The identifier resolves to no nature in PokéAPI. Other values are possible when a failure originates below the handler.", "examples": [ "not_found" ], "type": "string" }, "recovery": { "additionalProperties": {}, "description": "Actionable next step for the caller.", "properties": { "hint": { "type": "string" } }, "required": [ "hint" ], "type": "object" }, "retryable": { "description": "Whether retrying may succeed.", "type": "boolean" } }, "type": "object" }, "message": { "description": "Human-readable description of what went wrong.", "type": "string" } }, "required": [ "code", "message" ], "type": "object" }, "isListAll": { "description": "True when all 25 natures are returned (no identifier provided).", "type": "boolean" }, "natures": { "description": "One or all 25 natures depending on whether identifier was provided.", "items": { "additionalProperties": false, "description": "Nature entry with stat modifiers and flavor preferences.", "properties": { "decreasedStat": { "description": "Stat reduced by 10%. Null for neutral natures.", "type": [ "string", "null" ] }, "hatesFlavor": { "description": "Berry flavor the Pokémon dislikes. Null for neutral natures.", "type": [ "string", "null" ] }, "id": { "description": "Nature ID (1–25).", "type": "number" }, "increasedStat": { "description": "Stat boosted by 10%. Null for neutral natures.", "type": [ "string", "null" ] }, "likesFlavor": { "description": "Berry flavor the Pokémon prefers. Null for neutral natures.", "type": [ "string", "null" ] }, "name": { "description": "Nature name (e.g. \"modest\").", "type": "string" } }, "required": [ "id", "name", "increasedStat", "decreasedStat", "likesFlavor", "hatesFlavor" ], "type": "object" }, "type": "array" } }, "type": "object" } }, { "description": "Get a fully denormalized Pokémon dossier in a single call — base stats, types, abilities (with full English effect text), height/weight, resolved evolution chain, sprite URLs including official artwork, species flavor text, variety list, capture rate, growth rate, gender rate, legendary/mythical flags, egg groups, and (optionally) a summarized learnable-move list. Accepts a name (lowercase, hyphens for spaces, e.g. \"bulbasaur\", \"mr-mime\") or PokéAPI Pokémon-record ID. A species name with no Pokémon record of its own (e.g. \"deoxys\") resolves to the default variety of that species (\"deoxys-normal\"), reported in resolvedFromSpecies. Set include_moves=true to include the move summary (large); defaults to false. Use game_version to select flavor text from a specific game (e.g. \"sword\", \"red\"); falls back to the most recent English entry when the version is not found. Use pokeapi_find_pokemon to discover Pokémon by type, generation, or egg group before calling this tool.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "game_version": { "description": "PokéAPI version name to filter flavor text (e.g. \"sword\", \"red\", \"scarlet\"). Falls back to the most recent English entry when the version is not found.", "type": "string" }, "identifier": { "description": "Pokémon name (lowercase hyphenated, e.g. \"bulbasaur\", \"charizard-mega-x\") or PokéAPI Pokémon-record ID as a string (e.g. \"1\", \"10034\"). A species name (e.g. \"deoxys\") resolves to its default variety.", "type": "string" }, "include_moves": { "default": false, "description": "Include the full learnable-move summary. Defaults to false because the list is large (100–200+ moves).", "type": "boolean" } }, "required": [ "identifier" ], "type": "object" }, "name": "pokeapi_get_pokemon", "outputSchema": { "$defs": { "__schema0": { "additionalProperties": false, "properties": { "condition": { "description": "Compatibility summary of the first alternative; evolutionDetails contains the complete methods.", "type": [ "string", "null" ] }, "evolutionDetails": { "description": "All alternative methods in upstream order; empty for a base stage. Requirements apply within each method, never across alternatives.", "items": { "additionalProperties": false, "description": "One complete alternative evolution method.", "properties": { "allowedNatures": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "description": "Allowed nature names. Empty lists are preserved; null when unspecified." }, "conditionExpression": { "anyOf": [ { "additionalProperties": false, "properties": { "expression": { "description": "Verbatim upstream RPN condition expression; not evaluated.", "type": "string" }, "percentageChance": { "description": "Upstream chance percentage, including zero.", "type": "number" }, "variables": { "description": "Names of expression variables in upstream order.", "items": { "type": "string" }, "type": "array" } }, "required": [ "expression", "percentageChance", "variables" ], "type": "object" }, { "type": "null" } ], "description": "Variable-dependent condition supplied by PokéAPI. Null when unspecified." }, "evolvedPokemonForm": { "description": "Resulting form. Null when unspecified.", "type": [ "string", "null" ] }, "gender": { "description": "Required gender ID. Null when unspecified.", "type": [ "number", "null" ] }, "heldItem": { "description": "Required held item. Null when unspecified.", "type": [ "string", "null" ] }, "isDefault": { "description": "Whether this is the expected main-series evolution for its variety. Null when unspecified.", "type": [ "boolean", "null" ] }, "item": { "description": "Item used for evolution. Null when unspecified.", "type": [ "string", "null" ] }, "knownMove": { "description": "Required known move. Null when unspecified.", "type": [ "string", "null" ] }, "knownMoveType": { "description": "Type of a required known move. Null when unspecified.", "type": [ "string", "null" ] }, "location": { "description": "Required location. Null when unspecified.", "type": [ "string", "null" ] }, "minAffection": { "description": "Minimum affection. Null when unspecified.", "type": [ "number", "null" ] }, "minBeauty": { "description": "Minimum beauty. Null when unspecified.", "type": [ "number", "null" ] }, "minDamageTaken": { "description": "Minimum damage taken. Null when unspecified.", "type": [ "number", "null" ] }, "minHappiness": { "description": "Minimum happiness. Null when unspecified.", "type": [ "number", "null" ] }, "minLevel": { "description": "Minimum level. Null when unspecified.", "type": [ "number", "null" ] }, "minMoveCount": { "description": "Minimum move uses. Null when unspecified.", "type": [ "number", "null" ] }, "minSteps": { "description": "Minimum steps. Null when unspecified.", "type": [ "number", "null" ] }, "nearSpecialRock": { "description": "Whether proximity to a Moss Rock or Icy Rock is required. Null when unspecified.", "type": [ "boolean", "null" ] }, "needsMultiplayer": { "description": "Whether multiplayer link play is required. Null when unspecified.", "type": [ "boolean", "null" ] }, "needsOverworldRain": { "description": "Whether overworld rain is required. Null when unspecified.", "type": [ "boolean", "null" ] }, "partySpecies": { "description": "Species required in the party. Null when unspecified.", "type": [ "string", "null" ] }, "partyType": { "description": "Type required in the party. Null when unspecified.", "type": [ "string", "null" ] }, "region": { "description": "Required region. Null when unspecified.", "type": [ "string", "null" ] }, "relativePhysicalStats": { "description": "Required Attack relative to Defense: 1 greater, 0 equal, -1 less. Null when unspecified.", "type": [ "number", "null" ] }, "requiredPokemonForm": { "description": "Required starting form. Null when unspecified.", "type": [ "string", "null" ] }, "timeOfDay": { "description": "Required time of day. Empty string is preserved; null when unspecified.", "type": [ "string", "null" ] }, "tradeSpecies": { "description": "Species to trade for. Null when unspecified.", "type": [ "string", "null" ] }, "trigger": { "description": "Event that triggers this alternative.", "type": "string" }, "turnUpsideDown": { "description": "Whether the device must be upside down. Null when unspecified.", "type": [ "boolean", "null" ] }, "usedMove": { "description": "Move that must be used. Null when unspecified.", "type": [ "string", "null" ] }, "versionGroup": { "description": "Version group that introduced this method. Null when unspecified.", "type": [ "string", "null" ] } }, "required": [ "versionGroup", "isDefault", "requiredPokemonForm", "evolvedPokemonForm", "trigger", "item", "gender", "heldItem", "knownMove", "knownMoveType", "location", "minLevel", "minHappiness", "minBeauty", "minAffection", "nearSpecialRock", "needsMultiplayer", "needsOverworldRain", "partySpecies", "partyType", "relativePhysicalStats", "timeOfDay", "tradeSpecies", "turnUpsideDown", "region", "usedMove", "minMoveCount", "minSteps", "minDamageTaken", "allowedNatures", "conditionExpression" ], "type": "object" }, "type": "array" }, "evolvesTo": { "description": "Further evolutions from this stage.", "items": { "$ref": "#/$defs/__schema0" }, "type": "array" }, "item": { "description": "First alternative evolution item. Null when unspecified.", "type": [ "string", "null" ] }, "minLevel": { "description": "First alternative minimum level. Null when unspecified.", "type": [ "number", "null" ] }, "species": { "description": "Species name.", "type": "string" }, "trigger": { "description": "First alternative trigger, or base for the root stage.", "type": "string" } }, "required": [ "species", "trigger", "minLevel", "item", "condition", "evolutionDetails", "evolvesTo" ], "type": "object" } }, "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "anyOf": [ { "not": { "required": [ "error" ] }, "required": [ "id", "name", "resolvedFromSpecies", "heightDm", "weightHg", "types", "stats", "abilities", "sprites", "moves", "moveCount", "speciesFlavorText", "genus", "captureRate", "growthRate", "genderRate", "isLegendary", "isMythical", "evolutionChain", "varieties", "generation", "eggGroups" ] }, { "required": [ "error" ] } ], "properties": { "abilities": { "description": "Abilities with full effect text.", "items": { "additionalProperties": false, "description": "Ability entry with effect text and hidden-ability flag.", "properties": { "effectText": { "description": "Full English effect description. Null when unavailable.", "type": [ "string", "null" ] }, "isHidden": { "description": "True when this is the hidden ability.", "type": "boolean" }, "name": { "description": "Ability name in hyphenated lowercase (e.g. \"overgrow\").", "type": "string" }, "shortEffectText": { "description": "Short English effect description. Null when unavailable.", "type": [ "string", "null" ] }, "slot": { "description": "Ability slot (1, 2, or 3).", "type": "number" } }, "required": [ "name", "isHidden", "slot", "effectText", "shortEffectText" ], "type": "object" }, "type": "array" }, "captureRate": { "description": "Base capture rate (0–255).", "type": "number" }, "eggGroups": { "description": "Egg group names.", "items": { "type": "string" }, "type": "array" }, "error": { "additionalProperties": {}, "description": "Present when the call failed. Absent on success.", "properties": { "code": { "description": "JSON-RPC error code for this failure.", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "data": { "additionalProperties": {}, "properties": { "reason": { "description": "Machine-readable failure mode. Declared by this tool: `not_found`: The identifier matches no Pokémon record and no species. Other values are possible when a failure originates below the handler.", "examples": [ "not_found" ], "type": "string" }, "recovery": { "additionalProperties": {}, "description": "Actionable next step for the caller.", "properties": { "hint": { "type": "string" } }, "required": [ "hint" ], "type": "object" }, "retryable": { "description": "Whether retrying may succeed.", "type": "boolean" } }, "type": "object" }, "message": { "description": "Human-readable description of what went wrong.", "type": "string" } }, "required": [ "code", "message" ], "type": "object" }, "evolutionChain": { "anyOf": [ { "$ref": "#/$defs/__schema0" }, { "type": "null" } ], "description": "Evolution tree rooted at the base species." }, "genderRate": { "description": "Gender ratio: -1 genderless, 0 always male, 8 always female, 1–7 fraction (eighths) female.", "type": "number" }, "generation": { "description": "Generation introduced (e.g. \"generation-i\").", "type": "string" }, "genus": { "description": "English genus (e.g. \"Seed Pokémon\"). Null when unavailable.", "type": [ "string", "null" ] }, "growthRate": { "description": "Growth rate name (e.g. \"medium-slow\").", "type": "string" }, "heightDm": { "description": "Height in decimetres.", "type": "number" }, "id": { "description": "PokéAPI Pokémon-record ID. Form IDs are not National Pokédex numbers.", "type": "number" }, "isLegendary": { "description": "True for legendary Pokémon.", "type": "boolean" }, "isMythical": { "description": "True for mythical Pokémon.", "type": "boolean" }, "moveCount": { "description": "Total number of learnable moves regardless of include_moves.", "type": "number" }, "moves": { "description": "Learnable moves (populated when include_moves=true, empty otherwise).", "items": { "additionalProperties": false, "description": "Move summary entry — name, learn method, and level.", "properties": { "learnMethod": { "description": "How the move is learned (level-up, machine, egg, tutor).", "type": "string" }, "levelLearnedAt": { "description": "Level at which the move is learned. Zero for non-level-up methods.", "type": "number" }, "name": { "description": "Move name.", "type": "string" } }, "required": [ "name", "learnMethod", "levelLearnedAt" ], "type": "object" }, "type": "array" }, "name": { "description": "Canonical Pokémon name in hyphenated lowercase.", "type": "string" }, "resolvedFromSpecies": { "description": "Species name the identifier matched when it named no Pokémon record; this dossier is the default variety of that species. Null when the identifier named a Pokémon record directly.", "type": [ "string", "null" ] }, "speciesFlavorText": { "description": "Flavor text from the selected (or most recent) game version. Null when none available.", "type": [ "string", "null" ] }, "sprites": { "additionalProperties": false, "description": "Sprite URLs.", "properties": { "frontDefault": { "description": "Front default sprite URL.", "type": [ "string", "null" ] }, "frontShiny": { "description": "Front shiny sprite URL.", "type": [ "string", "null" ] }, "officialArtwork": { "description": "High-quality official artwork URL.", "type": [ "string", "null" ] } }, "required": [ "frontDefault", "frontShiny", "officialArtwork" ], "type": "object" }, "stats": { "description": "Base stats.", "items": { "additionalProperties": false, "description": "Individual base stat entry.", "properties": { "baseStat": { "description": "Base stat value.", "type": "number" }, "effort": { "description": "Effort value (EV) yield.", "type": "number" }, "name": { "description": "Stat name (hp, attack, defense, special-attack, special-defense, speed).", "type": "string" } }, "required": [ "name", "baseStat", "effort" ], "type": "object" }, "type": "array" }, "types": { "description": "Type names ordered by slot (e.g. [\"fire\", \"flying\"]).", "items": { "type": "string" }, "type": "array" }, "varieties": { "description": "All forms and variants of this species.", "items": { "additionalProperties": false, "description": "Form or variant entry with name and default flag.", "properties": { "isDefault": { "description": "True for the canonical form.", "type": "boolean" }, "name": { "description": "Variety/form name (e.g. \"pikachu-alola-cap\").", "type": "string" } }, "required": [ "name", "isDefault" ], "type": "object" }, "type": "array" }, "weightHg": { "description": "Weight in hectograms.", "type": "number" } }, "type": "object" } }, { "description": "Get the full offensive and defensive type effectiveness breakdown. Provide either a type name (e.g. \"fire\", \"psychic\") or a Pokémon identifier (name or PokéAPI Pokémon-record ID). For dual-type Pokémon, the defensive multipliers are correctly composed (e.g. Fire/Flying vs Rock = 4× because both types are weak to Rock). Exactly one of type or pokemon must be provided.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "pokemon": { "description": "Pokémon name or PokéAPI Pokémon-record ID. The server resolves the types automatically. Provide this or type, not both.", "type": "string" }, "type": { "description": "Type name in lowercase (e.g. \"fire\", \"water\", \"psychic\"). Provide this or pokemon, not both.", "type": "string" } }, "type": "object" }, "name": "pokeapi_get_type_matchups", "outputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "anyOf": [ { "not": { "required": [ "error" ] }, "required": [ "queryType", "resolvedTypes", "offensiveRelations", "defensiveMatchups", "composedMultipliers" ] }, { "required": [ "error" ] } ], "properties": { "composedMultipliers": { "additionalProperties": { "type": "number" }, "description": "Multiplier (0, 0.25, 0.5, 1, 2, 4) for every attacking type touched by at least one of the resolved defending type(s), including net-neutral 1× entries where a dual type composes to a cancellation (e.g. Fire/Flying vs Ice: 0.5× then 2× = 1×). A type absent from this map relates to neither defending type and also deals 1× damage.", "propertyNames": { "type": "string" }, "type": "object" }, "defensiveMatchups": { "additionalProperties": false, "description": "Defensive matchups — composed correctly for dual-type Pokémon.", "properties": { "immuneTo": { "description": "Attacking types that deal 0× damage.", "items": { "type": "string" }, "type": "array" }, "resists": { "description": "Attacking types that deal 0.5× or less damage (but not immune).", "items": { "type": "string" }, "type": "array" }, "weakTo": { "description": "Attacking types that deal 2× or more damage.", "items": { "type": "string" }, "type": "array" } }, "required": [ "weakTo", "resists", "immuneTo" ], "type": "object" }, "error": { "additionalProperties": {}, "description": "Present when the call failed. Absent on success.", "properties": { "code": { "description": "JSON-RPC error code for this failure.", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "data": { "additionalProperties": {}, "properties": { "reason": { "description": "Machine-readable failure mode. Declared by this tool: `not_found`: The type name or Pokémon identifier was not found in PokéAPI. `invalid_input`: Neither type nor pokemon was provided, or both were provided simultaneously. Other values are possible when a failure originates below the handler.", "examples": [ "not_found", "invalid_input" ], "type": "string" }, "recovery": { "additionalProperties": {}, "description": "Actionable next step for the caller.", "properties": { "hint": { "type": "string" } }, "required": [ "hint" ], "type": "object" }, "retryable": { "description": "Whether retrying may succeed.", "type": "boolean" } }, "type": "object" }, "message": { "description": "Human-readable description of what went wrong.", "type": "string" } }, "required": [ "code", "message" ], "type": "object" }, "offensiveRelations": { "anyOf": [ { "additionalProperties": false, "properties": { "noEffectTo": { "description": "Types this type deals 0× damage to (immune).", "items": { "type": "string" }, "type": "array" }, "notVeryEffectiveTo": { "description": "Types this type deals 0.5× damage to.", "items": { "type": "string" }, "type": "array" }, "superEffectiveTo": { "description": "Types this type deals 2× damage to.", "items": { "type": "string" }, "type": "array" } }, "required": [ "superEffectiveTo", "notVeryEffectiveTo", "noEffectTo" ], "type": "object" }, { "type": "null" } ], "description": "Offensive effectiveness (populated for single-type queries; null for dual-type Pokémon where per-type breakdown does not compose cleanly)." }, "queryType": { "description": "How the query was resolved: \"type\" for a direct type query, \"pokemon\" for a Pokémon lookup.", "type": "string" }, "resolvedTypes": { "description": "The type name(s) the query resolved to.", "items": { "type": "string" }, "type": "array" } }, "type": "object" } } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:fa1b1a9f82630b9bf3eb213334e93ce91f75544dd8e25450da84d2b863ecf342 | sha256sum