Skip to main content
Glama
Grinv

AniList MCP Server

Get studio

get_studio
Read-only

Fetch a studio's profile and filmography by AniList ID or name, with paginated titles sorted by popularity and an option to split main animation credits from producer-only credits.

Instructions

Get a studio's profile (name, whether it's an animation studio) and the titles it's credited on (media, most popular first), by AniList studio ID or by name. media is paginated (page/perPage, max 25) — check media.pageInfo.hasNextPage before treating it as the studio's full catalog. By default it mixes titles the studio animated with ones it's only credited on (e.g. as a producer); set isMain to split them. Confirmed live: name already does AniList's own fuzzy search (same mechanism as search_studio), so a partial name (e.g. "Kyoto Anim") resolves directly — reach for search_studio instead only when you need to browse multiple candidates rather than take the closest match. If both id and name are given, id takes precedence and name is ignored.

Input Schema

NameRequiredDescriptionDefault
idNoAniList studio ID. Provide this or `name`.
nameNoStudio name to look up. Provide this or `id`.
pageNoPage number for pagination. AniList's paginated connections (search results, a title's characters/staff/reviews, activity feeds, forum comments) reject a page whose page × perPage exceeds ~5000 entries with an upstream error, so paging that deep fails rather than returning more results.
isMainNotrue: only titles where this was the main animation studio. false: only titles it's credited on without being the main studio (e.g. as a producer). Omit for both. Confirmed live: Aniplex has 1 main-studio title but many more producer credits.
onListNo[Requires login] Restrict the filmography to (true) or exclude (false) titles already on the authenticated user's own list. Omit to ignore list status entirely. Errors if not logged in (AniList would otherwise silently ignore it and return the unfiltered filmography).
perPageNoResults per page (max 25, AniList's own ceiling — it silently clamps anything higher).

Output Schema

NameRequiredDescriptionDefault
studioYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 schema fields changedv0.11.0
    • addedInput schema / additionalProperties
      Added value: +false
    • addedInput schema / properties / isMain
      Added value: +{
      +  "description": "true: only titles where this was the main animation studio. false: only titles it's credited on without being the main studio (e.g. as a producer). Omit for both. Confirmed live: Aniplex has 1 main-studio title but many more producer credits.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / onList
      Added value: +{
      +  "description": "[Requires login] Restrict the filmography to (true) or exclude (false) titles already on the authenticated user's own list. Omit to ignore list status entirely. Errors if not logged in (AniList would otherwise silently ignore it and return the unfiltered filmography).",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / page
      Added value: +{
      +  "default": 1,
      +  "description": "Page number for pagination. AniList's paginated connections (search results, a title's characters/staff/reviews, activity feeds, forum comments) reject a page whose page × perPage exceeds ~5000 entries with an upstream error, so paging that deep fails rather than returning more results.",
      +  "exclusiveMinimum": 0,
      +  "maximum": 9007199254740991,
      +  "type": "integer"
      +}
    • addedInput schema / properties / perPage
      Added value: +{
      +  "default": 25,
      +  "description": "Results per page (max 25, AniList's own ceiling — it silently clamps anything higher).",
      +  "exclusiveMinimum": 0,
      +  "maximum": 25,
      +  "type": "integer"
      +}
    • changedOutput schema / properties / studio / properties / media / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": {},
      -    "properties": {
      -      "nodes": {
      -        "anyOf": [
      -          {
      -            "items": {
      -              "additionalProperties": {},
      -              "properties": {
      -                "id": {
      -                  "exclusiveMinimum": 0,
      -                  "maximum": 2147483647,
      -                  "type": "integer"
      -                },
      -                "title": {
      -                  "anyOf": [
      -                    {
      -                      "additionalProperties": false,
      -                      "properties": {
      -                        "english": {
      -                          "type": [
      -                            "string",
      -                            "null"
      -                          ]
      -                        },
      -                        "romaji": {
      -                          "type": [
      -                            "string",
      -                            "null"
      -                          ]
      -                        }
      -                      },
      -                      "type": "object"
      -                    },
      -                    {
      -                      "type": "null"
      -                    }
      -                  ]
      -                }
      -              },
      -              "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"
      +                },
      +                "title": {
      +                  "anyOf": [
      +                    {
      +                      "additionalProperties": false,
      +                      "properties": {
      +                        "english": {
      +                          "type": [
      +                            "string",
      +                            "null"
      +                          ]
      +                        },
      +                        "romaji": {
      +                          "type": [
      +                            "string",
      +                            "null"
      +                          ]
      +                        }
      +                      },
      +                      "type": "object"
      +                    },
      +                    {
      +                      "type": "null"
      +                    }
      +                  ]
      +                }
      +              },
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "pageInfo": {
      +        "additionalProperties": {},
      +        "properties": {
      +          "currentPage": {
      +            "anyOf": [
      +              {
      +                "maximum": 9007199254740991,
      +                "minimum": -9007199254740991,
      +                "type": "integer"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "hasNextPage": {
      +            "type": [
      +              "boolean",
      +              "null"
      +            ]
      +          },
      +          "lastPage": {
      +            "anyOf": [
      +              {
      +                "maximum": 9007199254740991,
      +                "minimum": -9007199254740991,
      +                "type": "integer"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ],
      +            "description": "Not currently accurate (a known AniList performance limitation) — use `hasNextPage` instead to decide whether to fetch another page."
      +          },
      +          "perPage": {
      +            "anyOf": [
      +              {
      +                "maximum": 9007199254740991,
      +                "minimum": -9007199254740991,
      +                "type": "integer"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "total": {
      +            "anyOf": [
      +              {
      +                "maximum": 9007199254740991,
      +                "minimum": -9007199254740991,
      +                "type": "integer"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ],
      +            "description": "Not currently accurate (a known AniList performance limitation) — don't rely on it to decide whether to fetch more pages."
      +          }
      +        },
      +        "type": "object"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  2. Changed5 schema fields changedv0.9.0
    • removedOutput schema / properties / studio / properties / isAnimationStudio / anyOf
      Removed value: -[
      -  {
      -    "type": "boolean"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / studio / properties / isAnimationStudio / type
      Added value: +[
      +  "boolean",
      +  "null"
      +]
    • removedOutput schema / properties / studio / properties / isFavourite / anyOf
      Removed value: -[
      -  {
      -    "type": "boolean"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / studio / properties / isFavourite / type
      Added value: +[
      +  "boolean",
      +  "null"
      +]
    • changedOutput schema / properties / studio / properties / media / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": {},
      -    "properties": {
      -      "nodes": {
      -        "anyOf": [
      -          {
      -            "items": {
      -              "additionalProperties": {},
      -              "properties": {
      -                "id": {
      -                  "exclusiveMinimum": 0,
      -                  "maximum": 2147483647,
      -                  "type": "integer"
      -                },
      -                "title": {
      -                  "anyOf": [
      -                    {
      -                      "additionalProperties": false,
      -                      "properties": {
      -                        "english": {
      -                          "anyOf": [
      -                            {
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "romaji": {
      -                          "anyOf": [
      -                            {
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "type": "object"
      -                    },
      -                    {
      -                      "type": "null"
      -                    }
      -                  ]
      -                }
      -              },
      -              "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"
      +                },
      +                "title": {
      +                  "anyOf": [
      +                    {
      +                      "additionalProperties": false,
      +                      "properties": {
      +                        "english": {
      +                          "type": [
      +                            "string",
      +                            "null"
      +                          ]
      +                        },
      +                        "romaji": {
      +                          "type": [
      +                            "string",
      +                            "null"
      +                          ]
      +                        }
      +                      },
      +                      "type": "object"
      +                    },
      +                    {
      +                      "type": "null"
      +                    }
      +                  ]
      +                }
      +              },
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      }
      +    },
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  3. Changed8 schema fields changedv0.7.1
    • addedInput schema / properties / id / exclusiveMinimum
      Added value: +0
    • removedInput schema / properties / id / minimum
      Removed value: --2147483648
    • addedOutput schema / properties / studio / properties / id / exclusiveMinimum
      Added value: +0
    • changedOutput schema / properties / studio / properties / id / maximum
      Previous value: -9007199254740991New value: +2147483647
    • removedOutput schema / properties / studio / properties / id / minimum
      Removed value: --9007199254740991
    • addedOutput schema / properties / studio / properties / isFavourite / description
      Added value: +"[Requires login] Whether this studio is in the caller's favourites. Has a brief read-after-write lag on AniList's own backend — confirmed live, a re-check right after toggle_favourite can briefly still show the pre-toggle value."
    • changedOutput schema / properties / studio / properties / media / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": {},
      -    "properties": {
      -      "nodes": {
      -        "anyOf": [
      -          {
      -            "items": {
      -              "additionalProperties": {},
      -              "properties": {
      -                "id": {
      -                  "maximum": 9007199254740991,
      -                  "minimum": -9007199254740991,
      -                  "type": "integer"
      -                },
      -                "title": {
      -                  "anyOf": [
      -                    {
      -                      "additionalProperties": false,
      -                      "properties": {
      -                        "english": {
      -                          "anyOf": [
      -                            {
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "romaji": {
      -                          "anyOf": [
      -                            {
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "type": "object"
      -                    },
      -                    {
      -                      "type": "null"
      -                    }
      -                  ]
      -                }
      -              },
      -              "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"
      +                },
      +                "title": {
      +                  "anyOf": [
      +                    {
      +                      "additionalProperties": false,
      +                      "properties": {
      +                        "english": {
      +                          "anyOf": [
      +                            {
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "romaji": {
      +                          "anyOf": [
      +                            {
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "type": "object"
      +                    },
      +                    {
      +                      "type": "null"
      +                    }
      +                  ]
      +                }
      +              },
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      }
      +    },
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / studio / properties / siteUrl / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "format": "uri",
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  4. Addedv0.3.0
  5. Removedv0.3.0
  6. Addedv0.2.0

TDQS

A4.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint/openWorldHint, and the description adds genuinely useful behavior: a 25-result pagination ceiling, the hasNextPage caveat before treating media as a full catalog, and that media mixes main-studio and producer credits by default. It does not mention the login requirement or error behavior of onList (only the schema does), so it adds context but not a complete behavioral picture.

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

Conciseness5/5

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

Purpose and return shape are front-loaded, followed by pagination, filtering, and routing caveats in that order. Every sentence carries new information; nothing restates the title or schema verbatim.

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?

With six optional params, an output schema, and full schema coverage, the description supplies the missing decision layer: default-vs-filter semantics, pagination limits, fuzzy-name behavior, and precedence. An agent can call this correctly without further discovery.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3; the description goes beyond it by explaining the default mixing of main/non-main credits and the isMain split, plus the id-takes-precedence rule that the schema leaves ambiguous ('Provide this or name'). It adds nothing extra for page/onList beyond what the schema already documents.

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+resource ('Get a studio's profile') and enumerates what comes back (name, isAnimationStudio, credited media sorted by popularity), keyed by AniList studio ID or name. The final sentence routes the agent away from search_studio, so it is distinguishable from its closest sibling without opening schemas.

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 says when to reach for search_studio ('only when you need to browse multiple candidates rather than take the closest match') and confirms partial names resolve via AniList fuzzy search. It also states the id-over-name precedence rule and when to toggle isMain, leaving nothing to inference.

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