Skip to main content
Glama
Grinv

AniList MCP Server

Get the anime airing schedule

get_anime_schedule
Read-only

Retrieve upcoming or past anime episode air times by title, date window, or site-wide schedule, so you can see what airs next or what already aired.

Instructions

Get upcoming (or a specific title's) episode air times, soonest-airing first (confirmed live) — or, with notYetAired: false, already-aired ones newest first. Omit mediaId for the site-wide upcoming schedule, or pass it (from search_media/get_media) to get one title's next-episode air time. Set airingAfter/airingBefore for a date window instead (e.g. what airs this week, or what aired yesterday). Anime only — manga has no airing schedule; a manga id (like any non-anime id) is rejected as not-found rather than silently returning an empty schedule, though that error reads the same as a nonexistent id and doesn't single out the manga/anime mismatch.

Input Schema

NameRequiredDescriptionDefault
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.
mediaIdNoRestrict to this AniList anime ID (not manga).
perPageNoResults per page (max 50, AniList's own ceiling — it silently clamps anything higher).
airingAfterNoOnly episodes airing after this instant — ISO 8601 with a timezone, e.g. "2026-10-20T00:00:00Z" or "2026-10-20T09:00:00+09:00".
notYetAiredNotrue: only not-yet-aired episodes; false: only already-aired ones (confirmed live: false swaps to a past-only result set, it doesn't add past episodes to the upcoming ones). Omitted, it defaults to true — unless `airingAfter`/`airingBefore` is set, in which case the window alone decides, so a window spanning now returns both aired and upcoming episodes.
airingBeforeNoOnly episodes airing before this instant (same format as `airingAfter`). Pair the two for a window, e.g. this week's episodes.

Output Schema

NameRequiredDescriptionDefault
scheduleYes
hasNextPageNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changedv0.11.0
    • addedInput schema / additionalProperties
      Added value: +false
    • addedInput schema / properties / airingAfter
      Added value: +{
      +  "description": "Only episodes airing after this instant — ISO 8601 with a timezone, e.g. \"2026-10-20T00:00:00Z\" or \"2026-10-20T09:00:00+09:00\".",
      +  "format": "date-time",
      +  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
      +  "type": "string"
      +}
    • addedInput schema / properties / airingBefore
      Added value: +{
      +  "description": "Only episodes airing before this instant (same format as `airingAfter`). Pair the two for a window, e.g. this week's episodes.",
      +  "format": "date-time",
      +  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
      +  "type": "string"
      +}
    • removedInput schema / properties / notYetAired / default
      Removed value: -true
    • changedInput schema / properties / notYetAired / description
      Previous value: -"Set false to instead list only already-aired episodes (confirmed live: this swaps to a past-only result set, it doesn't add past episodes to the still-upcoming ones)."New value: +"true: only not-yet-aired episodes; false: only already-aired ones (confirmed live: false swaps to a past-only result set, it doesn't add past episodes to the upcoming ones). Omitted, it defaults to true — unless `airingAfter`/`airingBefore` is set, in which case the window alone decides, so a window spanning now returns both aired and upcoming episodes."
  2. Changed7 schema fields changedv0.9.0
    • changedInput schema / properties / perPage / description
      Previous value: -"Results per page (max 25)."New value: +"Results per page (max 50, AniList's own ceiling — it silently clamps anything higher)."
    • changedInput schema / properties / perPage / maximum
      Previous value: -25New value: +50
    • removedOutput schema / properties / hasNextPage / anyOf
      Removed value: -[
      -  {
      -    "type": "boolean"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / hasNextPage / type
      Added value: +[
      +  "boolean",
      +  "null"
      +]
    • changedOutput schema / properties / schedule / items / properties / media / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": {},
      -    "properties": {
      -      "id": {
      -        "exclusiveMinimum": 0,
      -        "maximum": 2147483647,
      -        "type": "integer"
      -      },
      -      "siteUrl": {
      -        "anyOf": [
      -          {
      -            "format": "uri",
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "title": {
      -        "anyOf": [
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "english": {
      -                "anyOf": [
      -                  {
      -                    "type": "string"
      -                  },
      -                  {
      -                    "type": "null"
      -                  }
      -                ]
      -              },
      -              "romaji": {
      -                "anyOf": [
      -                  {
      -                    "type": "string"
      -                  },
      -                  {
      -                    "type": "null"
      -                  }
      -                ]
      -              }
      -            },
      -            "type": "object"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      }
      -    },
      -    "required": [
      -      "id"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": {},
      +    "properties": {
      +      "id": {
      +        "exclusiveMinimum": 0,
      +        "maximum": 2147483647,
      +        "type": "integer"
      +      },
      +      "siteUrl": {
      +        "anyOf": [
      +          {
      +            "format": "uri",
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "title": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "english": {
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              },
      +              "romaji": {
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              }
      +            },
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      }
      +    },
      +    "required": [
      +      "id"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedOutput schema / properties / schedule / items / properties / timeUntilAiring / anyOf
      Removed value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / schedule / items / properties / timeUntilAiring / type
      Added value: +[
      +  "number",
      +  "null"
      +]
  3. Changed11 schema fields changedv0.7.1
    • changedInput schema / properties / mediaId / description
      Previous value: -"Restrict to this AniList anime ID."New value: +"Restrict to this AniList anime ID (not manga)."
    • addedInput schema / properties / mediaId / exclusiveMinimum
      Added value: +0
    • removedInput schema / properties / mediaId / minimum
      Removed value: --2147483648
    • changedInput schema / properties / notYetAired / description
      Previous value: -"Set false to include already-aired episodes too."New value: +"Set false to instead list only already-aired episodes (confirmed live: this swaps to a past-only result set, it doesn't add past episodes to the still-upcoming ones)."
    • changedInput schema / properties / page / description
      Previous value: -"Page number for pagination."New value: +"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."
    • addedInput schema / properties / perPage / exclusiveMinimum
      Added value: +0
    • removedInput schema / properties / perPage / minimum
      Removed value: -1
    • addedOutput schema / properties / hasNextPage
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "boolean"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • changedOutput schema / properties / schedule / items / properties / airingAt / anyOf
      Previous value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "minimum": 0,
      +    "type": "number"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / schedule / items / properties / episode / anyOf
      Previous value: -[
      -  {
      -    "maximum": 9007199254740991,
      -    "minimum": -9007199254740991,
      -    "type": "integer"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "maximum": 9007199254740991,
      +    "minimum": 0,
      +    "type": "integer"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / schedule / items / properties / media / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": {},
      -    "properties": {
      -      "id": {
      -        "maximum": 9007199254740991,
      -        "minimum": -9007199254740991,
      -        "type": "integer"
      -      },
      -      "siteUrl": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "title": {
      -        "anyOf": [
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "english": {
      -                "anyOf": [
      -                  {
      -                    "type": "string"
      -                  },
      -                  {
      -                    "type": "null"
      -                  }
      -                ]
      -              },
      -              "romaji": {
      -                "anyOf": [
      -                  {
      -                    "type": "string"
      -                  },
      -                  {
      -                    "type": "null"
      -                  }
      -                ]
      -              }
      -            },
      -            "type": "object"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      }
      -    },
      -    "required": [
      -      "id"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": {},
      +    "properties": {
      +      "id": {
      +        "exclusiveMinimum": 0,
      +        "maximum": 2147483647,
      +        "type": "integer"
      +      },
      +      "siteUrl": {
      +        "anyOf": [
      +          {
      +            "format": "uri",
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "title": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "english": {
      +                "anyOf": [
      +                  {
      +                    "type": "string"
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ]
      +              },
      +              "romaji": {
      +                "anyOf": [
      +                  {
      +                    "type": "string"
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ]
      +              }
      +            },
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      }
      +    },
      +    "required": [
      +      "id"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  4. Addedv0.2.0

TDQS

A4.8/5.0
Behavior5/5

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

Goes well beyond the readOnly/openWorld annotations: it discloses the live-verified default of notYetAired=true, that false swaps to a past-only result set rather than appending past episodes, and that a date window overrides the default so a window spanning now returns both. It also discloses the error behavior for manga/non-anime ids (rejected as not-found, indistinguishable from a nonexistent id) which is exactly the kind of failure mode an agent needs.

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?

Purpose and ordering are front-loaded, and every clause carries real information (no filler). However, it is written as a dense run-on with several em-dash asides, making the error-behavior and window semantics harder to scan than they need to be.

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?

For a six-parameter read tool with rich schema coverage, an output schema, and readOnly annotations, nothing an agent needs is missing: defaults, sort order, mode selection, and the manga-id failure mode are all covered.

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 the baseline is 3; the description adds value by explaining mediaId's sourcing and the site-wide interpretation, and by framing the airing window as an alternative mode of use. Some of the notYetAired/window interaction restates the schema text, so it is not fully additive, but it clarifies how the parameters combine in practice.

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 and resource (episode air times), plus the exact ordering (soonest-airing first, or newest-first when notYetAired=false) and scope (anime only, site-wide vs. single title). This clearly separates it from siblings like get_media or get_media_statistics.

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 tells the agent when to omit mediaId (site-wide schedule), when to pass it and where to get it (search_media/get_media), and when to switch to airingAfter/airingBefore for a date window, with concrete examples (this week, yesterday). It also states the negative case: manga has no airing schedule.

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