Skip to main content
Glama
Grinv

AniList MCP Server

Favourite/unfavourite an anime, manga, character, staff member, or studio

toggle_favourite

Toggles an anime, manga, character, staff member, or studio in a logged-in user's AniList favourites; call again on the same kind and ID to remove it.

Instructions

[Requires login] Toggle an anime, manga, character, staff member, or studio in the authenticated user's AniList favourites. Calling it again on the same kind+id un-favourites it. Read isFavourite for the outcome: true = now favourited, false = now removed, null = can't tell (the list runs past the first 50 returned, and a newly added favourite goes to its end). favourites holds the first page (up to 50, id-only) of the toggled kind, under its key (anime/manga/characters/staff/studios). Resolve id first via search_media/get_media (kind: ANIME/MANGA), search_character/get_character, search_staff/get_staff, or search_studio/get_studio, matching kind. Confirmed live: AniList does NOT validate that id actually belongs to the given kind — e.g. passing an anime's ID with kind: CHARACTER succeeds silently instead of erroring, favouriting a nonexistent character. Always resolve id from the tool matching kind rather than reusing an ID you already have on hand. Note: immediately re-checking with get_media/get_character/get_staff/get_studio's own isFavourite can briefly still show the pre-toggle value — a confirmed AniList-side read-after-write lag, not a bug in this call; this tool's own isFavourite already reflects the new state.

Input Schema

NameRequiredDescriptionDefault
idYesAniList ID of that anime/manga/character/staff/studio.
kindYesWhich kind of entity `id` refers to.

Output Schema

NameRequiredDescriptionDefault
favouritesYes
isFavouriteYestrue: now a favourite; false: no longer one; null: undetermined (the toggled id isn't in the first 50 returned and the list continues).

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed8 schema fields changedv0.11.0
    • addedInput schema / additionalProperties
      Added value: +false
    • changedOutput schema / properties / favourites / properties / anime / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": {},
      -    "properties": {
      -      "nodes": {
      -        "anyOf": [
      -          {
      -            "items": {
      -              "additionalProperties": {},
      -              "properties": {
      -                "id": {
      -                  "exclusiveMinimum": 0,
      -                  "maximum": 2147483647,
      -                  "type": "integer"
      -                }
      -              },
      -              "required": [
      -                "id"
      -              ],
      -              "type": "object"
      -            },
      -            "type": "array"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      }
      -    },
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": {},
      +    "properties": {
      +      "nodes": {
      +        "anyOf": [
      +          {
      +            "items": {
      +              "additionalProperties": {},
      +              "properties": {
      +                "id": {
      +                  "exclusiveMinimum": 0,
      +                  "maximum": 2147483647,
      +                  "type": "integer"
      +                }
      +              },
      +              "required": [
      +                "id"
      +              ],
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "pageInfo": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": {},
      +            "properties": {
      +              "hasNextPage": {
      +                "type": [
      +                  "boolean",
      +                  "null"
      +                ]
      +              }
      +            },
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      }
      +    },
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / favourites / properties / characters / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": {},
      -    "properties": {
      -      "nodes": {
      -        "anyOf": [
      -          {
      -            "items": {
      -              "additionalProperties": {},
      -              "properties": {
      -                "id": {
      -                  "exclusiveMinimum": 0,
      -                  "maximum": 2147483647,
      -                  "type": "integer"
      -                }
      -              },
      -              "required": [
      -                "id"
      -              ],
      -              "type": "object"
      -            },
      -            "type": "array"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      }
      -    },
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": {},
      +    "properties": {
      +      "nodes": {
      +        "anyOf": [
      +          {
      +            "items": {
      +              "additionalProperties": {},
      +              "properties": {
      +                "id": {
      +                  "exclusiveMinimum": 0,
      +                  "maximum": 2147483647,
      +                  "type": "integer"
      +                }
      +              },
      +              "required": [
      +                "id"
      +              ],
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "pageInfo": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": {},
      +            "properties": {
      +              "hasNextPage": {
      +                "type": [
      +                  "boolean",
      +                  "null"
      +                ]
      +              }
      +            },
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      }
      +    },
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / favourites / properties / manga / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": {},
      -    "properties": {
      -      "nodes": {
      -        "anyOf": [
      -          {
      -            "items": {
      -              "additionalProperties": {},
      -              "properties": {
      -                "id": {
      -                  "exclusiveMinimum": 0,
      -                  "maximum": 2147483647,
      -                  "type": "integer"
      -                }
      -              },
      -              "required": [
      -                "id"
      -              ],
      -              "type": "object"
      -            },
      -            "type": "array"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      }
      -    },
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": {},
      +    "properties": {
      +      "nodes": {
      +        "anyOf": [
      +          {
      +            "items": {
      +              "additionalProperties": {},
      +              "properties": {
      +                "id": {
      +                  "exclusiveMinimum": 0,
      +                  "maximum": 2147483647,
      +                  "type": "integer"
      +                }
      +              },
      +              "required": [
      +                "id"
      +              ],
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "pageInfo": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": {},
      +            "properties": {
      +              "hasNextPage": {
      +                "type": [
      +                  "boolean",
      +                  "null"
      +                ]
      +              }
      +            },
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      }
      +    },
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / favourites / properties / staff / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": {},
      -    "properties": {
      -      "nodes": {
      -        "anyOf": [
      -          {
      -            "items": {
      -              "additionalProperties": {},
      -              "properties": {
      -                "id": {
      -                  "exclusiveMinimum": 0,
      -                  "maximum": 2147483647,
      -                  "type": "integer"
      -                }
      -              },
      -              "required": [
      -                "id"
      -              ],
      -              "type": "object"
      -            },
      -            "type": "array"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      }
      -    },
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": {},
      +    "properties": {
      +      "nodes": {
      +        "anyOf": [
      +          {
      +            "items": {
      +              "additionalProperties": {},
      +              "properties": {
      +                "id": {
      +                  "exclusiveMinimum": 0,
      +                  "maximum": 2147483647,
      +                  "type": "integer"
      +                }
      +              },
      +              "required": [
      +                "id"
      +              ],
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "pageInfo": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": {},
      +            "properties": {
      +              "hasNextPage": {
      +                "type": [
      +                  "boolean",
      +                  "null"
      +                ]
      +              }
      +            },
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      }
      +    },
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / favourites / properties / studios / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": {},
      -    "properties": {
      -      "nodes": {
      -        "anyOf": [
      -          {
      -            "items": {
      -              "additionalProperties": {},
      -              "properties": {
      -                "id": {
      -                  "exclusiveMinimum": 0,
      -                  "maximum": 2147483647,
      -                  "type": "integer"
      -                }
      -              },
      -              "required": [
      -                "id"
      -              ],
      -              "type": "object"
      -            },
      -            "type": "array"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      }
      -    },
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": {},
      +    "properties": {
      +      "nodes": {
      +        "anyOf": [
      +          {
      +            "items": {
      +              "additionalProperties": {},
      +              "properties": {
      +                "id": {
      +                  "exclusiveMinimum": 0,
      +                  "maximum": 2147483647,
      +                  "type": "integer"
      +                }
      +              },
      +              "required": [
      +                "id"
      +              ],
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "pageInfo": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": {},
      +            "properties": {
      +              "hasNextPage": {
      +                "type": [
      +                  "boolean",
      +                  "null"
      +                ]
      +              }
      +            },
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      }
      +    },
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedOutput schema / properties / isFavourite
      Added value: +{
      +  "description": "true: now a favourite; false: no longer one; null: undetermined (the toggled id isn't in the first 50 returned and the list continues).",
      +  "type": [
      +    "boolean",
      +    "null"
      +  ]
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "favourites"
      -]New value: +[
      +  "favourites",
      +  "isFavourite"
      +]
  2. Changed7 schema fields changedv0.7.1
    • addedInput schema / properties / id / exclusiveMinimum
      Added value: +0
    • removedInput schema / properties / id / minimum
      Removed value: --2147483648
    • changedOutput schema / properties / favourites / properties / anime / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": {},
      -    "properties": {
      -      "nodes": {
      -        "anyOf": [
      -          {
      -            "items": {
      -              "additionalProperties": {},
      -              "properties": {
      -                "id": {
      -                  "maximum": 9007199254740991,
      -                  "minimum": -9007199254740991,
      -                  "type": "integer"
      -                }
      -              },
      -              "required": [
      -                "id"
      -              ],
      -              "type": "object"
      -            },
      -            "type": "array"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      }
      -    },
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": {},
      +    "properties": {
      +      "nodes": {
      +        "anyOf": [
      +          {
      +            "items": {
      +              "additionalProperties": {},
      +              "properties": {
      +                "id": {
      +                  "exclusiveMinimum": 0,
      +                  "maximum": 2147483647,
      +                  "type": "integer"
      +                }
      +              },
      +              "required": [
      +                "id"
      +              ],
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      }
      +    },
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / favourites / properties / characters / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": {},
      -    "properties": {
      -      "nodes": {
      -        "anyOf": [
      -          {
      -            "items": {
      -              "additionalProperties": {},
      -              "properties": {
      -                "id": {
      -                  "maximum": 9007199254740991,
      -                  "minimum": -9007199254740991,
      -                  "type": "integer"
      -                }
      -              },
      -              "required": [
      -                "id"
      -              ],
      -              "type": "object"
      -            },
      -            "type": "array"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      }
      -    },
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": {},
      +    "properties": {
      +      "nodes": {
      +        "anyOf": [
      +          {
      +            "items": {
      +              "additionalProperties": {},
      +              "properties": {
      +                "id": {
      +                  "exclusiveMinimum": 0,
      +                  "maximum": 2147483647,
      +                  "type": "integer"
      +                }
      +              },
      +              "required": [
      +                "id"
      +              ],
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      }
      +    },
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / favourites / properties / manga / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": {},
      -    "properties": {
      -      "nodes": {
      -        "anyOf": [
      -          {
      -            "items": {
      -              "additionalProperties": {},
      -              "properties": {
      -                "id": {
      -                  "maximum": 9007199254740991,
      -                  "minimum": -9007199254740991,
      -                  "type": "integer"
      -                }
      -              },
      -              "required": [
      -                "id"
      -              ],
      -              "type": "object"
      -            },
      -            "type": "array"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      }
      -    },
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": {},
      +    "properties": {
      +      "nodes": {
      +        "anyOf": [
      +          {
      +            "items": {
      +              "additionalProperties": {},
      +              "properties": {
      +                "id": {
      +                  "exclusiveMinimum": 0,
      +                  "maximum": 2147483647,
      +                  "type": "integer"
      +                }
      +              },
      +              "required": [
      +                "id"
      +              ],
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      }
      +    },
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / favourites / properties / staff / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": {},
      -    "properties": {
      -      "nodes": {
      -        "anyOf": [
      -          {
      -            "items": {
      -              "additionalProperties": {},
      -              "properties": {
      -                "id": {
      -                  "maximum": 9007199254740991,
      -                  "minimum": -9007199254740991,
      -                  "type": "integer"
      -                }
      -              },
      -              "required": [
      -                "id"
      -              ],
      -              "type": "object"
      -            },
      -            "type": "array"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      }
      -    },
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": {},
      +    "properties": {
      +      "nodes": {
      +        "anyOf": [
      +          {
      +            "items": {
      +              "additionalProperties": {},
      +              "properties": {
      +                "id": {
      +                  "exclusiveMinimum": 0,
      +                  "maximum": 2147483647,
      +                  "type": "integer"
      +                }
      +              },
      +              "required": [
      +                "id"
      +              ],
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      }
      +    },
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / favourites / properties / studios / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": {},
      -    "properties": {
      -      "nodes": {
      -        "anyOf": [
      -          {
      -            "items": {
      -              "additionalProperties": {},
      -              "properties": {
      -                "id": {
      -                  "maximum": 9007199254740991,
      -                  "minimum": -9007199254740991,
      -                  "type": "integer"
      -                }
      -              },
      -              "required": [
      -                "id"
      -              ],
      -              "type": "object"
      -            },
      -            "type": "array"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      }
      -    },
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": {},
      +    "properties": {
      +      "nodes": {
      +        "anyOf": [
      +          {
      +            "items": {
      +              "additionalProperties": {},
      +              "properties": {
      +                "id": {
      +                  "exclusiveMinimum": 0,
      +                  "maximum": 2147483647,
      +                  "type": "integer"
      +                }
      +              },
      +              "required": [
      +                "id"
      +              ],
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      }
      +    },
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  3. Addedv0.4.0

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare non-readonly, non-idempotent, non-destructive; the description adds far more: the toggle reversal behavior, a confirmed AniList-side lack of kind/id validation that causes silent mis-favouriting, and a documented read-after-write lag in sibling tools. These are exactly the non-obvious behavioral traits an agent could not infer from structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose and toggle behavior, then outcome semantics, then caveats. Every sentence carries information, but the closing read-after-write note is long and somewhat repetitive in its restatement of which fields to check.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite an output schema existing, the description explains how to interpret `isFavourite` (including the null case tied to the 50-item list cap) and what `favourites` contains. Combined with the ID-resolution warning and lag note, an agent has everything needed to call and interpret it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description goes well beyond it by specifying how `id` must be sourced (a search/get tool matching `kind`) and by warning that `id` is not validated against `kind` server-side. That converts a generic integer into a parameter with real resolution rules.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Toggle') plus the exact resource set (anime/manga/character/staff/studio) within 'the authenticated user's AniList favourites'. The toggle semantics and the kind+id key make it trivially distinguishable from sibling mutation tools like add_list_entry or remove_list_entry.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states the login requirement, explains that a repeated call reverses the operation, and routes the agent to the exact sibling resolution tools per kind (search_media/get_media for ANIME/MANGA, search_character/get_character, etc.). It even tells the agent what NOT to do: don't reuse an ID you already have on hand.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.