AniList MCP Server
AniList MCP Server connects MCP clients to AniList’s GraphQL API for read-only anime/manga/community browsing and, after one-time login, personal account and social mutations.
Search and browse anime/manga by title, filters, genres/tags, rankings, seasons, schedules, and recommendations.
Fetch media details, statistics, characters, staff, reviews, relations, and streaming/airing info.
Look up characters, staff, studios, birthdays, site statistics, users, public profiles/stats/lists, activity feeds, and forum threads/comments.
With AniList login: manage your anime/manga list, favourites, follows, notifications, and account/list settings.
With AniList login: post/update/delete your text or message activity, forum threads, and thread comments.
Use built-in prompts for multi-step flows like recommendations, seasonal overviews, hidden gems, activity catch-up, and notification checks.
Works with any MCP stdio client; read tools need no credentials, and NSFW results are included unless
sfw: trueis used.
Provides tools to search and browse anime, manga, characters, staff, studios, and user profiles, as well as manage the authenticated user's list, favorites, follows, activity, and forum threads via the AniList API.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@AniList MCP ServerSearch for the anime Frieren and show its score and synopsis."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
AniList MCP Server (Unofficial)
An MCP server for AniList. It works with any MCP-compatible client or agent (Claude Desktop/Code, Cursor, VS Code, Cline, Continue, and others). It speaks the standard MCP stdio protocol.
What it does
Talks directly to AniList's public GraphQL API (https://graphql.anilist.co):
Reads (no credentials needed). Search and browse anime/manga, characters, staff, studios; genres/tags; recommendations; forum threads; activity feeds; public/unlisted user profiles and lists.
Your own AniList account (requires a one-time login). Manage your own anime/manga list (add/update/remove entries), favourites, follows, your notifications, and post/delete your own activity and threads.
Related MCP server: ani-mcp
What you need (and what it gets you)
Nothing is required to get started, so you can skip straight to Install. Everything below is optional:
You set... | You get... |
(nothing) | Search, details, genres/tags, recommendations, threads, activity, public profiles/lists. Works immediately. |
An AniList Client ID + Client Secret (2 minutes, free →), plus running | Everything above, plus your own AniList account: manage your list, favourites, follows, activity, and threads. |
Without a login, the personal/mutation tools reply with a clear message telling you how to get one; everything else keeps working regardless.
Example queries
Once it's connected, just ask your agent in natural language.
No credentials needed:
"Search for the anime Frieren and show its score, genres and synopsis."
"What recommendations does AniList have for fans of Steins;Gate?"
"Show me today's birthday characters."
"What genres and tags does AniList use for anime?"
"Show the public profile and stats for user <username>."
"What's in <username>'s AniList anime list marked as watching?"With your AniList account (after a one-time login_anilist; see
Connect your AniList account):
"Add Frieren to my AniList plan-to-watch list."
"Set Cowboy Bebop to completed on my AniList with a score of 9."
"Follow user <username> for me."
"Post a text update to my AniList activity feed."
"What are my unread AniList notifications?"Tools
Tool | Auth |
| none |
| none |
| none |
| none |
| none |
| none |
| none |
| none |
| none |
| none |
| token |
| token |
| token |
| token |
| token |
| token |
| login |
token = needs an AniList login (run login_anilist once). A few none tools
also have a filter that does: onList on search_media/get_character/
get_staff/get_studio, isFollowing on search_activity, and
excludeInList on get_recommendations_for_media error without a login.
Prompts
Reusable multi-step plans your client can offer as one-click flows:
recommend_similar, seasonal_overview, hidden_gems, catch_up_activity,
check_notifications.
Install
The npx and from-source installs run on your own Node.js, which must be ≥ 22.18.
As an .mcpb bundle (one-click, e.g. Claude Desktop)
Download anilist-mcp-server.mcpb
(always the latest release) and open it with your MCP client. It prompts for an optional
AniList Client ID and Client Secret. Set them and run the login_anilist tool to
enable the personal-list/social tools (see
Connect your AniList account). Leave them
blank to use just the credential-free read tools.
Via npx (no install)
Published on npm as anilist-mcp-server.
Add it to your client's MCP config (Claude Desktop/Code, Cursor, VS Code, Cline, …):
{
"mcpServers": {
"anilist": {
"command": "npx",
"args": ["-y", "anilist-mcp-server"],
"env": {
"ANILIST_CLIENT_ID": "...",
"ANILIST_CLIENT_SECRET": "..."
}
}
}
}Or with the Claude Code CLI:
claude mcp add anilist -e ANILIST_CLIENT_ID=... -e ANILIST_CLIENT_SECRET=... -- npx -y anilist-mcp-serverFrom source
git clone https://github.com/Grinv/anilist-mcp-server
cd anilist-mcp-server
npm ci
npm run buildThis produces a self-contained dist/index.js. Point your client at it the same
way as above, swapping "command": "npx", "args": ["-y", "anilist-mcp-server"]
for "command": "node", "args": ["/absolute/path/to/anilist-mcp-server/dist/index.js"]
(and npx -y anilist-mcp-server for node /absolute/path/to/anilist-mcp-server/dist/index.js
in the CLI form).
The env block (shown above for both install methods) is optional: omit it to use only the credential-free read
tools; the personal/mutation tools return a clear error until you log in.
To enable them, set ANILIST_CLIENT_ID + ANILIST_CLIENT_SECRET and run the
login_anilist tool once (a one-time browser authorization; the token is
then stored and reused). The server does not read a .env file, so pass
config via this env block (or your shell environment). See
docs/auth.md for the full login walkthrough and
docs/clients.md for more clients.
Connect your AniList account
The search/browse tools work with no setup. To use the personal/mutation tools, authorize your account once. It takes about two minutes.
Step 1: Register an AniList app (one minute).
Go to https://anilist.co/settings/developer and click Create New Client.
Name: anything.
Redirect URL: enter exactly
http://localhost:8082/callback(If port 8082 is already used on your machine, pick another port here and set
ANILIST_OAUTH_PORTto the same number, see Configuration.)Save. Copy the Client ID and Client Secret.
Step 2: Give the credentials to the server.
"env": { "ANILIST_CLIENT_ID": "...", "ANILIST_CLIENT_SECRET": "..." }Restart the server/client so it picks up the values.
Step 3: Log in (one click).
In your assistant, run the login_anilist tool (or just say "log in to
AniList"). It replies with a link. Open the link, sign in to AniList, and
click Approve.
Running locally (Claude Desktop, or Claude Code on your own machine): login finishes automatically as soon as you click Approve. Confirm with "show my AniList profile" (
get_authorized_user).Running on a remote/SSH/headless host: after clicking Approve your browser lands on a page that won't load; that's expected. Copy the full address from the browser's address bar (it contains
?code=…) and give it to thesubmit_anilist_redirecttool to finish.
That's it. The token is saved locally (~/.config/anilist-mcp-server/tokens.json,
0600). AniList access tokens don't expire for about a year and there's no
refresh mechanism, so you'll need to run login_anilist again once it does.
Prefer no interactive step? Pre-set a standalone
ANILIST_ACCESS_TOKENinstead. See docs/auth.md.
Configuration
All configuration is via environment variables, all optional; without credentials the read tools still work.
Variable | Purpose |
| Your AniList app's Client ID (see Connect your AniList account). |
| Your AniList app's Client Secret, paired with the Client ID above. |
| Advanced, optional. Pre-supply a token instead of running |
| Override where the login token is saved on disk (default: your OS's config folder). |
| Only needed if port |
| How much the server logs: |
Tuning (rarely needed)
Variable | Purpose |
| Min spacing between AniList calls (default |
| TTL for the in-memory read cache (default |
| Per-request timeout (default |
| Override upstream base URLs. |
Provide these in your MCP client config's env block (the server does not
read a .env file). See docs/auth.md for how to obtain the
credentials, and docs/clients.md for client configuration
snippets.
NSFW content
NSFW (adult) results are not filtered by default; the server returns
whatever AniList provides. search_media accepts an optional sfw
parameter; set sfw: true to exclude adult entries.
Development
npm run build # type-check + bundle to dist/
npm test # node:test suite (mocked, offline)
npm run test:coverage
npm run lint
npm run format
npm run check:api # live health-check of the AniList GraphQL endpoint
npm run inspector # run under the MCP InspectorRuntime requires Node ≥ 22.18. See AGENTS.md for contributor/agent guidance, including why this server exists and how it avoids the upstream bug that motivated building it.
Updating
To be notified of new versions, click Watch → Releases on GitHub.
.mcpbbundle: download the newanilist-mcp-server.mcpbfrom the releases page and reinstall it in your client (it replaces the old version).npx: unpinned
npx -y anilist-mcp-serverfetches the latest on the next run.From source:
git pull && npm ci && npm run build.
See the CHANGELOG for what changed in each release.
Attribution and terms
This is an unofficial project and is not affiliated with or endorsed by AniList. All data comes from the public AniList GraphQL API; personal-account operations use your own AniList account and token. Use is subject to AniList's Terms of Service.
Privacy Policy
This server runs locally on your machine and has no telemetry of its own. Personal/mutation tools act on your real AniList account (list, favourites, follows, posts, account settings) using a token you supply. See PRIVACY.md for the full details on data collection, what gets sent where, caching/token storage and retention, and contact info.
Security
This is the broadest write/social tool surface of this project's sibling servers: list mutations, favourites, follows, and posting/deleting activity, threads, and comments, all on your real AniList account. See SECURITY.md for the full mutating-tool inventory, token storage/handling, credential redaction, and how to report a vulnerability.
License
MIT © Grinv
Available Tools
50 toolsadd_list_entryAdd an entry to your AniList listA
[Requires login] Add an anime/manga to the authenticated user's own AniList list. Use search_media first to resolve the title to its AniList media ID. Only set the fields you care about — everything else is left at AniList's defaults ONLY if this media isn't already on the list. AniList upserts by media ID: if an entry for it already exists (e.g. previously dropped, with its own score/notes/progress), calling this updates that entry in place instead — every field you don't set here keeps its previous value, not a default. Use get_user_list first to check for an existing entry if you need a guaranteed-fresh one. The response echoes what AniList actually stored, so check it rather than assuming the write landed verbatim. It includes customLists/advancedScores only when you set them — those are the fields AniList zeroes/replaces rather than merges, so they're worth reading back; otherwise the echo is trimmed, since a list sync is hundreds of writes.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | Free-text notes for this entry (per AniList's own schema, capped at 6000 characters). | |
| score | No | Score out of 10 (decimals allowed, e.g. 8.5), always on this scale regardless of the account's configured scoreFormat (set via update_user) — no conversion needed. | |
| repeat | No | Number of times rewatched/reread (per AniList's own schema, capped at 1000). | |
| status | No | List status. If omitted on a genuinely NEW entry, AniList defaults to CURRENT (with `startedAt` auto-set to today) — confirmed live; despite AniList's own site UI defaulting new entries to Planning, the API itself does not. If the media is already on the list, this default does NOT apply — omitting `status` on an update-in-place leaves the entry's existing status untouched. | |
| mediaId | Yes | AniList anime/manga ID to add (from search_media). | |
| private | No | Hide this entry from your public list. | |
| priority | No | List priority (higher = more important; per AniList's own schema, capped at 255). | |
| progress | No | Episodes watched / chapters read. | |
| startedAt | No | Date you started. | |
| completedAt | No | Date you completed. | |
| customLists | No | Names of custom lists to file this entry under — REPLACES this entry's full set of enabled lists, not merged: naming only a subset silently turns OFF every other list this entry was previously filed under (confirmed live), it doesn't leave them alone. Include every list name you want this entry to stay tagged with, not just the one you're adding. Also, the list must already exist on the account (update_user's `animeListOptions`/`mangaListOptions` `customLists`) — naming one that doesn't exist yet is silently a no-op, not an error. | |
| advancedScores | No | Per-category scores, 0-10 scale (e.g. {Story: 8, Characters: 9}) — errors if advanced scoring isn't enabled for this media's type, or if a key doesn't match the account's configured category list for it (anime and manga have SEPARATELY configured lists). Any of that list's categories you omit here is set to 0, not left unchanged — include every category if you don't want the others zeroed. Stored positionally, not by name: matched against the account's category order (update_user's `advancedScoring`) at READ time, not write time — if that order is later renamed/reordered, a score you write for 'Story' today can silently be read back as 'Characters' tomorrow, with no error. | |
| progressVolumes | No | Volumes read (manga only). | |
| hiddenFromStatusLists | No | Hide this entry from the public status-grouped list views (e.g. 'Watching') while still counting it in statistics — distinct from `private`, which hides the entry entirely. |
Output Schema
| Name | Required | Description |
|---|---|---|
| entry | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations declare destructiveHint=false, implying only additive updates, but the description explicitly documents destructive effects: customLists REPLACES the full set and turns OFF previously filed lists, advancedScores omitted categories are set to 0, and existing entries are updated in place. This is a direct contradiction with the destructiveHint annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long and dense, but it front-loads the login requirement and core purpose, and the detail is largely warranted for a 14-parameter upsert tool with subtle replacement behavior. Some sentences are run-on and could be structured more cleanly, but there is little obvious waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complex upsert behavior, 14 parameters, rich schema, and existing output schema, the description covers the important operational context: auth requirement, media ID resolution, existing-entry checks, default/merge behavior, and response echo interpretation. Nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the individual parameters are already well documented. The description still adds meaningful cross-parameter semantics: omitted fields use defaults only for new entries, while existing entries retain previous values, and it explains when customLists/advancedScores need read-back because they replace rather than merge.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: adding an anime/manga to the authenticated user's own AniList list, with scope and upsert behavior clarified. It is clear what the tool does, though it does not explicitly distinguish itself from sibling update_list_entry/update_list_entries beyond describing the upsert.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete prerequisites: requires login, use search_media first to resolve mediaId, and use get_user_list first when a guaranteed-fresh existing entry is needed. It also says to set only fields you care about, but it does not explicitly say when to choose this over update_list_entry or update_list_entries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_activityDelete an activity postADestructive
[Requires login] Delete an activity post the authenticated user owns. This cannot be undone, and calling it again on an already-deleted id errors as not found rather than silently succeeding.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | AniList activity ID to delete — from get_user_activity, get_user_recent_activity, search_activity, or the id returned by a previous post_text_activity/post_message_activity call. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructive=true, idempotent=false and openWorld=true, yet the description adds real value: the login requirement and the concrete failure mode (repeat calls on a deleted id error as not found rather than silently succeeding). The remaining gap is that it doesn't say whether attached replies/comments are also removed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: auth requirement and scope first, then irreversibility and repeat-call behavior. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema and rich annotations carry the safety profile, so the description only needs auth, irreversibility and error semantics — all present. It could be more complete by noting cascade effects on child comments for a destructive delete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the id field already documents its provenance (get_user_activity, search_activity, prior post_text_activity calls). The description adds nothing about the parameter, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Delete) and resource (activity post) plus the ownership constraint, which lets an agent separate it from delete_thread or remove_list_entry. It does not explicitly name an alternative, but the resource is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The '[Requires login]' tag gives an actionable prerequisite, and 'the authenticated user owns' implies you should only target your own posts. There is no explicit when-to-use vs a sibling (e.g. delete_thread_comment for comment-level removal), so routing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_threadDelete a forum threadADestructive
[Requires login] Delete a forum thread the authenticated user owns, by its ID (from search_thread, get_thread, or the id returned by post_thread). This cannot be undone, and calling it again on an already-deleted id errors as not found rather than silently succeeding.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | AniList thread ID to delete. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructive/non-idempotent/open-world, so the bar is lower, and the description still contributes real context: login and ownership requirements and the second-call not-found behavior. 'Cannot be undone' largely restates destructiveHint, so the value-add is good but not exceptional.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence with the auth requirement front-loaded, followed by the irreversible/error semantics. No filler and nothing deferred to the end that belongs at the front.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter destructive mutation with an output schema and full annotation coverage, everything an agent needs is present: auth gate, ownership constraint, ID provenance, irreversibility, and repeat-call behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and there is only one parameter, so semantics are already carried by the schema; the description adds genuine value by telling the agent where a valid ID comes from (search_thread, get_thread, post_thread).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (delete) and resource (a forum thread the authenticated user owns, by ID), which cleanly separates it from delete_thread_comment, delete_activity, and the read-only thread tools. The parenthetical naming search_thread/get_thread/post_thread as ID sources removes ambiguity about the input's origin.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear preconditions: login required and ownership required, plus a warning that repeating the call errors as not found instead of succeeding silently. It never explicitly steers to siblings like delete_thread_comment, so it stops short of a full when/when-not/alternatives statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_thread_commentDelete a comment on a forum threadADestructive
[Requires login] Delete a comment the authenticated user owns, by its ID (from get_thread_comments or the id returned by post_thread_comment). This cannot be undone, and calling it again on an already-deleted id errors as not found rather than silently succeeding.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | AniList comment ID to delete. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real information beyond the annotations: the auth requirement, the ownership precondition, and the precise repeat-call behavior (a second call errors as not found rather than silently succeeding), which sharpens the generic idempotentHint=false into actionable semantics. Combined with confirming irreversibility, this is behavior an agent cannot get from the structured fields alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short clauses, front-loaded with the auth gate and the action, then the id source, then the destructive and error semantics. No filler sentences and nothing that merely restates the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter destructive tool with a full annotation set and an output schema, everything an agent needs before invoking — login requirement, ownership, id provenance, irreversibility, repeat-call result — is present. Return values are left to the output schema appropriately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single id parameter, so baseline is 3; the description earns above that by explaining where valid ids originate (get_thread_comments, post_thread_comment) and tying the value to the caller's own comments. It adds provenance rather than type detail, which the schema already covers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Delete a comment") plus two scoping constraints: it must be owned by the authenticated user and identified by ID. That scope distinguishes it cleanly from the sibling delete_thread, which deletes a whole thread rather than a comment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives the precondition ([Requires login]), the ownership restriction, and explicitly names where the id comes from (get_thread_comments or the id returned by post_thread_comment). It stops short of saying when not to use it (e.g. use delete_thread for whole threads), so it is clear but not fully routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_activityGet an activity postARead-only
Get a single AniList activity post (list update, text post, or message) by its ID, including replyCount, likeCount, and isLiked.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | AniList activity ID — from get_user_activity, get_user_recent_activity, search_activity, or the id returned by post_text_activity/post_message_activity. |
Output Schema
| Name | Required | Description |
|---|---|---|
| activity | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so safety behavior is covered. The description adds the specific returned fields (replyCount, likeCount, isLiked), but that largely duplicates the output schema and gives no extra behavioral context such as not-found handling or auth requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that identifies the resource, the lookup key, and the returned highlights with no wasted clauses. The trailing field list is slightly redundant given the output schema but not harmful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a full output schema, complete parameter documentation, and read-only annotations, the description covers what an agent needs to call this simple lookup correctly. Only minor gaps remain, such as error/not-found behavior and explicit sibling routing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already explains that the id comes from get_user_activity, get_user_recent_activity, search_activity, or post creation. The description adds nothing about the parameter beyond what the schema provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — 'Get a single AniList activity post ... by its ID' — and enumerates the activity subtypes (list update, text post, message). The 'single ... by ID' phrasing implicitly separates it from sibling listing/search tools like get_user_activity and search_activity, though it does not name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'by its ID' framing implies this is the fetch-one-by-identifier tool, which is a reasonable usage cue. However, it never explicitly says when to prefer this over get_user_activity, get_user_recent_activity, or search_activity, and states no prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_anime_scheduleGet the anime airing scheduleARead-only
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.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | 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. | |
| mediaId | No | Restrict to this AniList anime ID (not manga). | |
| perPage | No | Results per page (max 50, AniList's own ceiling — it silently clamps anything higher). | |
| airingAfter | No | 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". | |
| notYetAired | No | 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. | |
| airingBefore | No | Only episodes airing before this instant (same format as `airingAfter`). Pair the two for a window, e.g. this week's episodes. |
Output Schema
| Name | Required | Description |
|---|---|---|
| schedule | Yes | |
| hasNextPage | No |
TDQS
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.
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.
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.
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.
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.
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.
get_authorized_userGet the logged-in user's profileARead-only
[Requires login] Get the profile of the AniList account currently authorized via login_anilist/ANILIST_ACCESS_TOKEN — use this to confirm which account is connected. Also the authoritative source to fetch BEFORE an update_user call touching options.notificationOptions/options.disabledListActivity (confirmed live: full array replace, not merge by entry) or mediaListOptions.animeList/mangaList.customLists (confirmed live: same full-replace behavior) — read the current values here first and resend them in full alongside your changes. The sibling advancedScoring array carries a related but distinct risk instead: it's positional, not name-matched, so reordering/renaming its entries silently reinterprets already-scored list entries (see update_user's own advancedScoring field for detail) — fetch it here first too before changing it.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| user | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as read-only and open-world, and the description adds important context: login is required and the tool is the authoritative pre-read source for specific full-replace update fields. It also surfaces the positional risk of advancedScoring, which is meaningful behavioral context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and login requirement are front-loaded, followed by detailed update-safety guidance. It is somewhat dense and long for a zero-parameter read tool, but the extra detail is relevant to avoiding destructive update mistakes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters, a present output schema, and useful annotations, the description covers what the agent needs: auth requirement, purpose, and the critical pre-update role. Nothing essential is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so parameter semantics are not a concern and the baseline is 4. The description correctly avoids inventing parameter details for a no-argument tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: fetching the profile of the currently authorized AniList account. It also distinguishes the tool's role from broader profile lookups by tying it to login/authorization state and account confirmation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly names when to use the tool: confirming which account is connected, and fetching current values before update_user operations on notificationOptions, disabledListActivity, customLists, and advancedScoring. The prerequisites and update-related usage are clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_characterGet character detailsARead-only
Get a character's profile by AniList character ID: name, image, description, and the anime/manga they appear in (media, most popular first, with their characterRole — MAIN/SUPPORTING/BACKGROUND — in each). Use search_character first to resolve a name to its ID. media is paginated (page/perPage, max 25): a long-running franchise character can appear in far more titles than one page holds, so check media.pageInfo.hasNextPage before treating it as the full list. Narrow it with type (anime or manga only) or onList.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | AniList character ID. | |
| page | No | 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. | |
| type | No | Only return anime (ANIME) or only manga (MANGA) in `media` — filtered by AniList before pagination, so pages stay full. Omit for both. | |
| onList | No | [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). | |
| perPage | No | Results per page (max 25, AniList's own ceiling — it silently clamps anything higher). |
Output Schema
| Name | Required | Description |
|---|---|---|
| character | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry readOnlyHint/openWorldHint, and the description adds real operational context: the pagination trap with hasNextPage, the login requirement for onList, and the errors-if-not-logged-in behavior. Some of that (perPage ceiling, page-depth limit) is already documented in the schema, so the marginal disclosure is good but partly duplicative.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and prerequisite are front-loaded in the first two sentences, and every later clause earns its place. The parentheticals and backticked identifiers make it dense and slightly run-on, but nothing is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained; the description spends its words on the one thing an agent could get wrong — treating a single media page as the full filmography — and points at media.pageInfo.hasNextPage. Nothing needed to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 connective meaning beyond the schema — that `type` is applied before pagination so pages stay full, and that omitting `onList` ignores list status rather than defaulting to either side. That is genuine semantic value on top of an already well-documented schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence names a specific verb and resource ('Get a character's profile by AniList character ID') and enumerates what comes back (name, image, description, media with characterRole). It is unmistakable against the sibling search_character, which is named explicitly as the name-resolution step.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit precondition ('Use search_character first to resolve a name to its ID') and explicit narrowing options ('Narrow it with `type` ... or `onList`'), plus the alternative of omitting the filter to get both. The when-to-use story is complete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_full_user_infoGet a user's complete profile and statsARead-only
Get an AniList user's profile AND statistics in a single call — use this instead of calling get_user_profile and get_user_stats separately. Like get_user_profile, this also returns the target's account settings (notifications, list display, etc.) regardless of who's authenticated — AniList doesn't viewer-gate those fields. Accepts an exact AniList username directly — no need to call search_user first unless you only have a partial/fuzzy name. Its embedded statistics carry the same staleness caveat as get_user_stats: AniList's own aggregation can lag and read all-zero even for an account with real list entries.
| Name | Required | Description | Default |
|---|---|---|---|
| user | Yes | AniList user ID (as a number — a digit string is read as a username), or username. |
Output Schema
| Name | Required | Description |
|---|---|---|
| user | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond readOnlyHint/openWorldHint it discloses non-obvious behavior: account settings come back regardless of who is authenticated because AniList doesn't viewer-gate those fields, and embedded stats can lag and read all-zero for accounts with real entries. The all-zero caveat is exactly the kind of failure-mode warning that prevents a wrong conclusion.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the composite purpose, then the sibling substitution, then the caveats — a sensible priority order. It is dense and runs long in a single block, with mild repetition of the get_user_profile/get_user_stats comparison, but no sentence is padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return shape needn't be described, and the description covers the remaining risk areas: auth behavior on settings fields, lookup ambiguity, and stale aggregates. Nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the ID-vs-username typing is already documented; the description still adds the operational nuance that an exact username can be passed directly while fuzzy input needs search_user. That is meaning beyond the schema, though it stops short of anything else about the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (get an AniList user's profile AND statistics) plus the composite scope that defines it. It explicitly names the two siblings it replaces (get_user_profile, get_user_stats), so an agent can distinguish it without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit routing rules: use this instead of calling get_user_profile and get_user_stats separately, and no need to call search_user first unless the name is partial/fuzzy. Both the preferred path and the exception condition are spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_genresGet genresARead-only
List every genre name AniList uses to tag anime/manga (e.g. Action, Comedy, Slice of Life). Call this before filtering search_media by genre, so you pass a name AniList actually recognizes.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| genres | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds useful behavioral context: this is a canonical reference list whose values are required for valid genre filtering. It does not discuss result size or formatting, but the output schema covers return values.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the purpose and followed immediately by the usage instruction and rationale. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter reference tool with annotations and an output schema, this is complete. An agent knows what it returns, why to call it, and when it should be used ahead of genre-filtered searches.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4; there are no parameter semantics for the description to clarify. The description appropriately focuses on the tool's role rather than inventing parameter guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb and resource: listing every genre name AniList uses to tag anime/manga. The examples (Action, Comedy, Slice of Life) and the mention of AniList's own vocabulary distinguish it from sibling tools like get_media_tags and search_media.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to call this before filtering search_media by genre and explains why: so the caller passes a name AniList actually recognizes. That gives both a trigger and the alternative context an agent needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_mediaGet anime/manga detailsARead-only
Get information about one or more anime or manga by their AniList ID(s). At the default format: "full" that means the whole card: title, format, status, episode/chapter/volume count, genres, score, synopsis, dates, and rankings — AniList's own ranking badges (e.g. "#134 highest rated all time", "#11 highest rated 2024"), one entry per rated/popular ranking window the title currently appears in. Also returns nextAiringEpisode (for currently-releasing anime), externalLinks (official sites, streaming platforms), and — [requires login] — mediaListEntry, the authenticated user's own list entry for this title, or null if it isn't on their list. Identify titles by AniList ID (ids) or by MyAnimeList ID (malIds) — exactly one of the two, and either accepts a batch. Use search_media first only when you have neither: a title search costs a call per title and can match the wrong entry, so prefer malIds whenever you already have MAL IDs. For a batch whose point is mapping IDs to titles rather than reading them, pass format: "compact" instead, which drops everything above except the identifiers, titles, type/format/status and episode/chapter counts — measured at 5KB against 125KB for the same 30-title batch. Returns a single object if you passed a single ID, or an array (same order as the IDs you passed, with null in place of any that didn't resolve to a real anime/manga) if you passed an array.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | No | A single AniList anime/manga ID, or an array of up to 50 IDs to fetch in one call (AniList's own per-page ceiling; it clamps anything higher, which would silently drop the surplus). Pass this OR `malIds`, not both. Each entry includes the full synopsis/tags/rankings, so a large batch is a large response. | |
| type | Yes | Whether the IDs refer to anime or manga. Required for `malIds` in particular: MAL numbers the two separately, so the same ID means different titles. | |
| format | No | How much of each title to return. `full` (default) is the whole card — synopsis, tags, rankings, external links and your own list entry — which is the point of looking one title up. `compact` returns only id, MAL id, type, format, status, episode/chapter count and titles — measured at 169 bytes per title against 4,182 for the full card, and what you actually want when resolving a batch of IDs to titles (notably a `malIds` batch, whose job is mapping one ID space onto the other). `compact` ignores `includeStreamingEpisodes`, which is a detail field. | full |
| malIds | No | A single MyAnimeList ID (`idMal`), or an array of up to 50, to resolve straight to AniList titles — use this instead of searching by title when you already have MAL IDs (e.g. syncing a MAL list), since a title search costs one call per title and can match the wrong entry. Pass this OR `ids`, not both. MAL numbers anime and manga separately, so the SAME ID is a different title depending on `type` — passing the wrong `type` returns the wrong title, not an error. | |
| includeStreamingEpisodes | No | Also fetch `streamingEpisodes` (per-episode streaming links). Has no effect under `format: "compact"`, which returns no detail fields at all. Kept off by default — AniList doesn't paginate this field, so a long-running title can return hundreds of entries. |
Output Schema
| Name | Required | Description |
|---|---|---|
| media | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only and open-world safety, but the description adds material context beyond them: mediaListEntry requires login, batches beyond 50 are silently clamped, unresolvable IDs come back as null placeholders in the original order, and includeStreamingEpisodes is ignored under compact and unpaginated. The only gap is that response size figures are given but no pagination/rate-limit guidance — minor since batch limits are already stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose and the IDs-or-malIds constraint are front-loaded, and every sentence carries information about format choice, batching, or return shape. It is a single dense block, though, and it re-explains ids-vs-malIds exclusivity that already lives in the schema descriptions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, yet the description still closes the one thing an agent most needs — scalar-in/scalar-out vs array-in/array-out with nulls and preserved order — plus auth-gated fields and the size cost of large batches. Nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 earns above that by quantifying the compact/full tradeoff (5KB vs 125KB for 30 titles), explaining when compact is the right choice, and stressing that the wrong `type` with malIds returns the wrong title rather than an error. Some of this restates the schema's own mutual-exclusion notes, which keeps it from a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get information about one or more anime or manga by their AniList ID(s)') and immediately enumerates what that card contains. It is clearly distinguishable from the sibling search_media, which it names and routes away from.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit decision rules: use search_media only when you have neither ID type, prefer malIds when you already hold MAL IDs, and pass format: 'compact' when the batch's purpose is ID-to-title mapping. This covers when to use, when not to, and which alternative applies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_media_charactersGet an anime/manga's charactersARead-only
List an anime/manga's characters with their role (MAIN/SUPPORTING/BACKGROUND) and, for anime, their voice actors. Use search_media first to resolve a title to its AniList ID. Grouped by role — MAIN first, then SUPPORTING, then BACKGROUND (confirmed live) — and in AniList's own relevance order within each. Voice actors come back in every dub language unless you set voiceActorLanguage; set role to list only one role (e.g. just the MAIN cast).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | AniList ID. | |
| page | No | 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. | |
| role | No | Only return characters with this role. Omit for every role. | |
| type | Yes | Whether `id` refers to anime or manga. | |
| perPage | No | Results per page (max 25, AniList's own ceiling — it silently clamps anything higher). | |
| voiceActorLanguage | No | Only return voice actors for this dub language (e.g. JAPANESE for the original cast, ENGLISH for the English dub). Omit for every language — AniList then returns all dubs per character (8 for most of Attack on Titan's main cast), which multiplies the response size. |
Output Schema
| Name | Required | Description |
|---|---|---|
| characters | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/openWorld annotations: discloses result ordering (MAIN, then SUPPORTING, then BACKGROUND, relevance order within each) and the multiplicative response-size effect of returning all dub languages unless filtered. This is exactly the kind of behavior an agent can't 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then guidance, then ordering and filter notes, with no filler sentences. It is slightly dense in a single paragraph with multiple em-dash asides, but every sentence carries an operational fact.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a 100%-covered schema and an output schema, the description only needs to supply routing, ordering, and response-size behavior — and it does all three. Nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 still adds meaning by explaining the downstream effect of `voiceActorLanguage` (all dubs returned by default, response bloat) and `role` (single-role filtering). Marginal but real value over the schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List an anime/manga's characters') and immediately enumerates the payload fields (role, voice actors). It is clearly distinguishable from siblings like get_character or get_media_staff.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent: 'Use search_media first to resolve a title to its AniList ID.' It also gives actionable conditions for optional filters (set `voiceActorLanguage` to narrow dubs, set `role` for one role). It doesn't name when to prefer get_character for a single character, but the primary prerequisite is covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_media_relationsGet a title's related mediaARead-only
Get the anime/manga related to a given title, each with its relationType: PREQUEL, SEQUEL, PARENT, SIDE_STORY, SPIN_OFF, ALTERNATIVE, SUMMARY, CHARACTER, ADAPTATION (this title adapted into another format), SOURCE (the material this title was adapted from), COMPILATION, CONTAINS, SAME_UNIVERSE or OTHER. Use search_media first to resolve a title to its AniList ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | AniList anime/manga ID. | |
| type | Yes | Whether `id` refers to anime or manga. |
Output Schema
| Name | Required | Description |
|---|---|---|
| relations | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so safety is covered. The description adds genuine value by spelling out the relationType vocabulary (PREQUEL, SEQUEL, SOURCE, ADAPTATION, etc.), which tells the agent what the returned links mean before it parses the output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded, followed by the relation vocabulary and then the prerequisite. The long relation list is dense but each term earns its place by defining output semantics; only minor trimming would be possible.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists and annotations cover the safety profile, so the description needn't explain return structure. It supplies the prerequisite and relation semantics; only a note on behavior when no relations exist (empty list vs. error) is arguably missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%: both `id` and `type` are documented in the schema with an enum for ANIME/MANGA. The description adds nothing about parameter formatting, so baseline 3 is appropriate when the schema carries the load.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("get the anime/manga related to a given title") and enumerates the exact relation types returned. This clearly separates it from siblings like get_media, get_recommendations_for_media, and get_media_characters, which cover adjacent but different data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs "Use search_media first to resolve a title to its AniList ID," which is the key prerequisite an agent would otherwise miss. No when-not-to-use exclusions are given (e.g., versus get_recommendations_for_media), but the usage context is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_media_reviewsGet an anime/manga's reviewsARead-only
List user-written reviews for an anime or manga, most-helpful-voted first (confirmed live: ordered by rating, not score — see those fields' own descriptions). Always includes summary (a short excerpt); set includeBody to also fetch each review's full text (can be long — leave it off unless you actually need the full text). Use search_media first to resolve a title to its AniList ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | AniList ID. | |
| page | No | 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. | |
| type | Yes | Whether `id` refers to anime or manga. | |
| perPage | No | Results per page (max 25, AniList's own ceiling — it silently clamps anything higher). | |
| includeBody | No | Also fetch each review's full text (`body`), not just its short `summary`. |
Output Schema
| Name | Required | Description |
|---|---|---|
| reviews | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds live-verified behavioral detail the annotations don't carry — the ordering is by `rating` not `score` — and warns that includeBody can return long text. It doesn't mention the ~5000-entry paging ceiling, though the schema does.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with purpose and ordering, then output shape, then the prerequisite lookup. Dense with nested parentheticals and backticks, which costs a little readability but every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values needn't be explained, yet the description helpfully notes that `summary` is always included. The ordering caveat, the includeBody cost, and the ID-resolution prerequisite cover what an agent needs to invoke it correctly; only the paging depth limit is left to the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 still earns a notch above by framing includeBody as a cost/benefit tradeoff (full text 'can be long') and by tying `id` to the need for a resolved AniList ID, which the schema's bare 'AniList ID' does not operationalize.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List user-written reviews for an anime or manga') plus the ordering, and it is clearly distinguishable from siblings such as get_media or get_media_statistics. The parenthetical naming the ordering field ('rating', not 'score') pins down the resource further.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent to search_media first to resolve a title to an AniList ID, and gives a use/don't-use rule for includeBody ('leave it off unless you actually need the full text'). No exclusions relative to a competing sibling, but none plausibly exists for this resource.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_media_staffGet an anime/manga's production staffARead-only
List an anime/manga's staff (director, writer, character designer, author, illustrator, etc.) with their role. Use search_media first to resolve a title to its AniList ID. No explicit ordering is requested — don't assume results are sorted by role or popularity (unlike get_staff's reverse-direction lookup, which IS popularity-sorted).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | AniList ID. | |
| page | No | 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. | |
| type | Yes | Whether `id` refers to anime or manga. | |
| perPage | No | Results per page (max 25, AniList's own ceiling — it silently clamps anything higher). |
Output Schema
| Name | Required | Description |
|---|---|---|
| staff | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint and openWorldHint already declaring the safety profile, the description contributes the non-obvious trait that results carry no guaranteed ordering — a genuine behavioral caveat an agent would otherwise mis-infer. It also flags the contrast with get_staff's sorting. It does not discuss result volume or pagination depth, but the schema already documents that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each carrying distinct information: what is returned, the ID-resolution prerequisite, and the ordering caveat. The final sentence is long but front-loads the caution ("No explicit ordering is requested") before the comparison, so it reads cleanly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter read tool with a full schema and an output schema, the description covers the only things the structured fields cannot: how to obtain the ID and that ordering is unspecified. Nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, including the pagination clamp and perPage ceiling, so the schema does the heavy lifting. The description reinforces that `type` selects anime vs manga and that `id` must come from search_media, but adds no format or edge-case detail beyond that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("List an anime/manga's staff ... with their role") and enumerates the role types returned. It explicitly distinguishes itself from get_staff by calling that tool a "reverse-direction lookup," so an agent can separate the two 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete prerequisite workflow: use search_media first to resolve a title to an AniList ID. It also sets an expectation against a sibling (get_staff is popularity-sorted, this is not). It does not address other plausible siblings such as search_staff or get_character, so it falls just short of a full when/when-not guide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_media_statisticsGet an anime/manga's score/status distributionARead-only
Get an anime/manga's watch/read-status counts (watching/completed/planning/etc.) and score distribution histogram across all AniList users. Use search_media first to resolve a title to its AniList ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | AniList ID. | |
| type | Yes | Whether `id` refers to anime or manga. |
Output Schema
| Name | Required | Description |
|---|---|---|
| statistics | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry readOnlyHint=true and openWorldHint=true, so the safety profile is covered; the description adds a genuinely useful behavioral fact by specifying the counts are aggregated 'across all AniList users' rather than scoped to the authenticated user, plus the ID-resolution prerequisite. It does not discuss data freshness or empty-distribution cases, but that is a modest gap given annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler: the capability and its scope come first, the prerequisite second. Nothing could be removed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return-value explanation is unnecessary, and the description covers purpose, aggregation scope, and ID-resolution workflow for a 2-parameter read tool. Only minor edge-case behavior (invalid ID, empty distribution) is left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters are documented there, so the schema does the heavy lifting and baseline 3 applies. The description reinforces that `id` must be an AniList ID obtained via search_media and implicitly ties `type` to whether the ID is anime or manga, but adds no syntax or constraint detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource pair ('get an anime/manga's watch/read-status counts and score distribution histogram') and scopes it to 'all AniList users', which separates it from sibling aggregations like get_site_statistics and per-media tools like get_media. An agent can distinguish this from get_user_stats and get_media 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells the agent to 'Use search_media first to resolve a title to its AniList ID', which is the key workflow prerequisite since the tool takes a numeric ID rather than a title. It stops short of naming when-not-to-use or what happens with an invalid/unresolvable ID.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_media_tagsGet media tagsARead-only
List every descriptive tag AniList uses on anime/manga (finer-grained than genres, e.g. 'Time Skip', 'Tragedy', 'Reincarnation'), with category and adult-content flag. There are ~425 tags total, so results are paginated — use page/perPage rather than expecting them all in one response. Use this to look up a tag's exact name before passing it to search_media's tag_in — tag names are case-sensitive, and an unrecognized name doesn't error, it just silently matches nothing (confirmed live).
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | 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. | |
| perPage | No | Results per page (max 50, AniList's own ceiling — it silently clamps anything higher). |
Output Schema
| Name | Required | Description |
|---|---|---|
| tags | Yes | |
| pageInfo | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, yet the description still adds real behavioral context: ~425 total tags, results paginated, and the non-obvious silent-no-match failure mode confirmed live. It does not cover rate limits or auth, so it stops just short of the top mark, but the added value over the annotations is substantial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with purpose before caveats, and every clause adds information an agent needs: tag granularity, volume/pagination, and the search_media handoff plus case-sensitivity gotcha. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no elaboration, and the description still sketches the payload ('category and adult-content flag'). For a two-optional-parameter read tool with annotations, pagination guidance and the tag-name lookup rationale cover everything needed to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters carry detailed descriptions, so the baseline is 3. The description earns a bump by explaining why pagination matters here ('~425 tags total, so results are paginated — use `page`/`perPage` rather than expecting them all in one response'), turning a mechanical parameter into a usage decision.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List every descriptive tag AniList uses on anime/manga') and immediately differentiates it from the sibling concept of genres ('finer-grained than genres'). Concrete examples ('Time Skip', 'Tragedy') and the mention of category and adult-content flag make the output shape predictable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly gives the downstream use case: look up a tag's exact name before passing it to search_media's `tag_in`. It names the sibling tool and the condition that selects this one, and warns that tag names are case-sensitive and an unrecognized name silently matches nothing rather than erroring — a precise when-to-use rationale.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_notificationsGet your AniList notificationsA
[Requires login] Get the authenticated user's AniList notifications: new episodes airing, activity likes/replies/mentions, new followers, thread replies/likes, and media/staff/character data-submission updates. Every item has id, type and a human-readable context/contexts string; the rest of the fields depend on type (e.g. an AIRING item includes media/episode, a FOLLOWING item includes user, an ACTIVITY_MESSAGE item includes message.message — the actual DM text is nested one level inside message).
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | 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. | |
| perPage | No | Results per page (max 50, AniList's own ceiling — it silently clamps anything higher). | |
| type_in | No | Restrict to these notification types. Omit to get every type. This only filters what's returned here — whether a type is generated at all is controlled separately by the account's own notificationOptions (update_user); a type disabled there simply never appears, regardless of this filter. | |
| markAsRead | No | Set true to also reset AniList's unread-notification badge count to 0, as a side effect of this call (the same effect as opening the notifications page on the site). Defaults to false so a routine check doesn't clear the badge. |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Critically, it discloses the non-obvious side effect that markAsRead clears the unread badge, which explains why readOnlyHint is false despite the 'Get' framing. It also documents that returned fields vary by notification type, including the subtle nesting of the DM text inside message.message — real behavioral detail beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the auth requirement and core purpose, then a dense but useful second sentence on item shape. Slightly long and parenthetical-heavy, but every clause conveys information an agent would otherwise have to discover empirically.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, yet the description still adds the essential insight that fields depend on type, which is exactly the kind of variability a schema alone would obscure. Auth requirement, side-effect behavior, and filter interactions are all accounted for.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 genuine value by explaining the type-dependent shape of returned items (AIRING includes media/episode, FOLLOWING includes user, ACTIVITY_MESSAGE nests text). It doesn't restate page/perPage/markAsRead semantics, which the schema already carries well.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get the authenticated user's AniList notifications') and enumerates the concrete notification categories covered, so an agent immediately knows the scope. No sibling tool overlaps this function, and the description makes that distinct role obvious.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The '[Requires login]' prefix establishes the auth precondition, and the type_in description explains the interaction with the account's notificationOptions setting. It does not explicitly say when to prefer or avoid this tool, but with no close sibling alternative there is nothing to disambiguate against.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_recommendationGet a recommendation by IDARead-only
Get a single AniList recommendation pairing (media + the media users recommend alongside it) by its AniList recommendation ID — useful for re-checking one specific pairing's current rating/userRating (e.g. after voting on it directly on anilist.co — this server has no tool to cast that vote itself) without re-paginating the whole list. Use get_recommendations_for_media instead to discover recommendation IDs for a title in the first place, or to browse/list them. Confirmed live (raw GraphQL, independent of this server): this is an AniList-side inconsistency, not a client bug — a majority of ids from get_recommendations_for_media's own nodes[].id 404 here anyway (7 of 10 tested for one title), with no correlation to that pairing's rating. A 404 on an id you just got from that tool doesn't mean the pairing doesn't exist, only that this specific lookup can't resolve it.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | AniList recommendation ID. |
Output Schema
| Name | Required | Description |
|---|---|---|
| recommendation | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say readOnly and openWorld; the description adds genuinely non-obvious behavior: a majority of IDs sourced from get_recommendations_for_media's nodes[].id 404 here (7 of 10 tested), with no correlation to rating, and that a 404 does not mean the pairing doesn't exist. That is exactly the failure-mode context an agent cannot get 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose is front-loaded in the first clause, but the single sentence is very long with nested em-dashes and parentheses carrying the voting aside, the sibling routing, and the 404 statistics. The content mostly earns its place, yet the packing makes it harder to scan than a three-sentence split would be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with an output schema, the description covers everything an agent needs: what it returns conceptually, which sibling to use instead, and the known ID-resolution failure mode. Nothing material is left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning beyond the schema: the id is an AniList-side recommendation ID whose provenance (nodes[].id from the sibling tool) and reliability (often 404) are called out. It still doesn't add format/range hints beyond the schema's own constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get a single AniList recommendation pairing ... by its AniList recommendation ID') and explicitly scopes what a recommendation is (media + the recommended-alongside media). It also names the sibling get_recommendations_for_media for the adjacent task, so an agent can tell the two apart without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit when ('re-checking one specific pairing's current rating/userRating after voting on anilist.co') and an explicit when-not/alternative ('use get_recommendations_for_media instead to discover recommendation IDs ... or to browse/list them'). It also rules out a mistaken expectation by noting this server has no vote-casting tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_recommendations_for_mediaGet recommendations for a titleARead-only
List anime/manga AniList users recommend as similar to a given title, ranked by rating (highest first). Use search_media first to resolve the title to its AniList ID. Each result's mediaRecommendation.mediaListEntry (requires login) shows whether it's already on your own list — set excludeInList: true to drop those from the fetched page instead of checking each one yourself (a local post-fetch filter: AniList's own onList filter applies to the source title, not the recommended one).
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | 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. | |
| mediaId | Yes | AniList ID of the anime/manga to get recommendations for. | |
| perPage | No | Results per page (max 25, AniList's own ceiling — it silently clamps anything higher). | |
| excludeInList | No | [Requires login] Omit recommendations already on your own list. Filtered after fetching this page, so a page can come back with fewer than `perPage` results — not an error, just fewer new ones on that page. Errors if not logged in, since there's no list to check against. |
Output Schema
| Name | Required | Description |
|---|---|---|
| recommendations | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint and openWorldHint annotations, the description discloses ranking order, login requirements for mediaListEntry, and that excludeInList is a local post-fetch filter rather than AniList's own onList filter. It also notes the consequence that a page may return fewer than perPage results, which is useful behavioral context not covered by the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three tight sentences with no filler, and the core purpose and ID-resolution prerequisite are front-loaded. The parenthetical about onList is dense but earns its place by preventing a concrete filtering mistake.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only listing tool with an output schema and full annotations, the description covers everything an agent needs: what is returned, ranking order, prerequisite ID resolution, login-dependent fields, and excludeInList gotchas. Pagination and numeric limits are already handled by the schema descriptions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3, but the description adds meaningful semantics beyond the schema by explaining that excludeInList filters after fetching and that AniList's native onList filter applies to the source title, not the recommended one. It also clarifies mediaId's role by directing the agent to search_media for resolution.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: list recommendations for a given anime/manga title, ranked by rating. It clearly separates this from search_media by instructing the agent to use search_media first for ID resolution, and the scoped wording distinguishes it from the singular get_recommendation sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear usage context by telling the agent to use search_media first to resolve a title to an AniList ID, and it explains when to set excludeInList. It does not explicitly name when not to use this tool or compare it against get_recommendation, so it falls short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_site_statisticsGet AniList site statisticsARead-only
Get AniList's own site-wide statistics (new users/anime/manga daily counts), newest first. Useful for questions about AniList's growth/activity, not for anime data. Defaults to the last 7 days; use page/perPage to go further back. Confirmed live (bypassing this tool's own 25 cap): AniList's SiteStatistics field silently caps perPage at 25 itself, so this tool's own limit doesn't lose you anything.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number for pagination. | |
| perPage | No | Results per page/series (max 25, enforced by AniList itself). |
Output Schema
| Name | Required | Description |
|---|---|---|
| statistics | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover readOnlyHint/openWorldHint, and the description adds genuinely non-obvious behavior: newest-first ordering, a 7-day default window, and the fact that AniList silently caps perPage at 25 so the tool's own cap is lossless. That upstream silent-cap disclosure is exactly the kind of context an agent can't get from structured fields. It's slightly muddled in phrasing but the substance is there.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the essential purpose and the key exclusion before the operational details. The final sentence is convoluted and partially restates the schema's perPage cap note, costing some efficiency, but no sentence is pure filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read-only listing tool with an output schema and full schema coverage, the description supplies purpose, exclusion, default behavior, ordering, pagination strategy, and the upstream cap caveat. Nothing needed to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: page/perPage are the mechanism for reaching further back than the default window, and perPage above 25 is pointless regardless of the tool's own limit. That is actionable guidance beyond the schema's 'maximum: 25'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get AniList's own site-wide statistics') and immediately enumerates what the payload contains (new users/anime/manga daily counts). The clause 'not for anime data' cleanly separates it from siblings like get_media_statistics and get_user_stats.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly frames the intended question type ('AniList's growth/activity') and states an exclusion ('not for anime data'), which is enough to route an agent correctly. It stops short of naming the specific sibling to use instead for anime data, so it doesn't quite reach the 5 bar of naming alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_staffGet staff member detailsARead-only
Get a staff member's profile by AniList staff ID: name, image, occupations, description, and the anime/manga they hold production credits on (staffMedia, most popular first, with their staffRole — e.g. Director, Character Design, Theme Song Performance — in each). Use search_staff first to resolve a name to its ID. Voice-acting roles are NOT part of staffMedia (confirmed live: Kana Hanazawa's lists only her theme/insert song credits) — for a voice actor, pass credits: "voice" to get characterMedia instead: each title with the character(s) voiced and their characterRole. Either list is paginated (page/perPage, max 25) — check its pageInfo.hasNextPage before treating it as the full list. Narrow it with onList, or type (anime or manga only; production credits only).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | AniList staff ID. | |
| page | No | 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. | |
| type | No | Only return anime (ANIME) or only manga (MANGA) in `staffMedia` — filtered by AniList before pagination, so pages stay full. Omit for both. | |
| onList | No | [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). | |
| credits | No | Which filmography to return: "production" (`staffMedia` — director, writer, theme song, …) or "voice" (`characterMedia` — voice-acting roles). One per call. | production |
| perPage | No | Results per page (max 25, AniList's own ceiling — it silently clamps anything higher). |
Output Schema
| Name | Required | Description |
|---|---|---|
| staff | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnlyHint, openWorldHint), and the description adds live-verified behavioral facts: production credits exclude voice roles, either list is paginated and must be checked via pageInfo.hasNextPage before being treated as complete, and onList errors when unauthenticated (AniList would otherwise silently ignore it). That is real context beyond the annotations, though the 5000-entry paging ceiling is left to the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, and the voice-credit caveat is well placed after the primary behavior. It is dense but mostly earns its length; the trailing 'Either list is paginated (page/perPage, max 25)' and the onList parenthetical partially duplicate schema text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter read tool with an output schema, the description covers the identity requirement, field shape differences between credits modes, pagination completeness caveat, and the auth precondition for onList. Nothing an agent needs before calling is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 still adds meaning, explaining that credits:"voice" returns characterMedia with characterRole rather than staffMedia with staffRole, and that type/onList narrow the filmography. Some content (perPage max 25, page mechanics) merely restates the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get a staff member's profile by AniList staff ID') and immediately enumerates the returned fields (name, image, occupations, description, staffMedia). It also distinguishes itself from the sibling search_staff, which resolves names to IDs rather than returning details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent: 'Use search_staff first to resolve a name to its ID', and gives a conditional rule for choosing between the two filmographies ('for a voice actor, pass credits: "voice"'). It also scopes the type and onList filters to a specific use case, leaving little inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_studioGet studioARead-only
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | AniList studio ID. Provide this or `name`. | |
| name | No | Studio name to look up. Provide this or `id`. | |
| page | No | 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. | |
| isMain | No | 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. | |
| onList | No | [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). | |
| perPage | No | Results per page (max 25, AniList's own ceiling — it silently clamps anything higher). |
Output Schema
| Name | Required | Description |
|---|---|---|
| studio | Yes |
TDQS
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.
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.
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.
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.
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.
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.
get_threadGet a forum threadARead-only
Get an AniList forum thread's title, body and metadata (including replyCount, viewCount, likeCount, isLiked) by its ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | AniList thread ID — use search_thread to find one, or pass one already known (e.g. from an AniList forum URL, anilist.co/forum/thread/<id>). |
Output Schema
| Name | Required | Description |
|---|---|---|
| thread | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds that the thread's title, body and metadata (replyCount, viewCount, likeCount, isLiked) are returned, which is modest extra context — though most of that duplicates the output schema. It says nothing about authentication (isLiked is user-relative) or error behavior for missing/deleted threads.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the verb and resource, then the returned fields. Zero padding or redundant phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema covering return values, full parameter documentation, and annotations carrying the read-only/open-world profile, the description supplies enough for correct invocation. The only gap is that it doesn't flag that this is a read sibling of delete_thread/search_thread or mention auth-sensitive fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: the single 'id' parameter is fully documented in-schema, including how to obtain one and URL examples. The description only restates 'by its ID' and adds no syntax or constraint detail beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get') and resource ('AniList forum thread') plus the retrieval key ('by its ID'), so the operation is unambiguous. It doesn't contrast itself with the sibling search_thread inside the description text, leaving sibling differentiation to the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'By its ID' implies this is a direct lookup rather than a search, which hints at when to use it versus search_thread. However, the explicit routing advice ('use search_thread to find one') lives only in the parameter schema, not the description, so the guidance in the description itself is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_thread_commentsGet comments on a forum threadARead-only
List top-level comments posted on an AniList forum thread, by the thread's ID. Replies (posted via post_thread_comment's parentCommentId) are nested under their parent's childComments rather than appearing as separate entries in this list.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | 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. | |
| perPage | No | Results per page (max 50, AniList's own ceiling — it silently clamps anything higher). | |
| threadId | Yes | AniList thread ID — use search_thread to find one, or pass one already known (e.g. from an AniList forum URL, or from get_thread). |
Output Schema
| Name | Required | Description |
|---|---|---|
| comments | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds real behavioral context beyond that: replies are not returned as separate list entries but nested under each parent's childComments field, which materially affects how the agent interprets the response shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero waste. The core action and scope come first, and the nesting caveat follows as a tightly scoped second sentence that earns its place by preventing a real misreading of results.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and full parameter documentation in the schema, the description doesn't need to explain return values or pagination. It covers scope and the one non-obvious structural behavior (nested replies); the only minor gap is nothing about ordering or page-size limits, which the schema already handles.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and each parameter (threadId, page, perPage) already carries a detailed description, including pagination ceilings and clamping behavior. The description's only added parameter framing is 'by the thread's ID', which the schema already states. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List top-level comments posted on an AniList forum thread') and explicitly names the scope ('by the thread's ID'). The 'top-level' qualifier plus the contrast with replies makes it immediately distinguishable from siblings like get_thread and post_thread_comment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes clear when this tool applies (fetching a thread's comment list) and points to post_thread_comment as the source of replies, implicitly telling the agent that posting is not this tool's job. It stops short of naming an explicit alternative for reading replies other than noting they arrive nested in the parent entry.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_todays_birthdaysGet today's birthday characters or staffARead-only
List AniList characters or staff members whose birthday (month/day) is today, most favourited first. Paginated — a single day can have well over a thousand entries, so check hasNextPage before treating a page as the full list. Returns character-shaped or staff-shaped objects for kind: CHARACTER/STAFF respectively, but a lighter fetch than get_character/get_staff: it does NOT include those tools' media/staffMedia filmography, nor each entry's bio (description) unless you set includeDescription — call get_character/get_staff by ID for an entry's full roles/works and bio, don't read a missing filmography here as 'none'.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | Whether to list characters or staff members. | |
| page | No | 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. | |
| perPage | No | Results per page (max 50, AniList's own ceiling — it silently clamps anything higher). | |
| includeDescription | No | Also fetch each result's full bio (`description`). Kept off by default — a bio can run to several thousand characters, and always including it would burn tokens on text you may not need; use get_character/get_staff for a single entry's full bio instead. |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | Yes | |
| hasNextPage | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, and the description adds material context beyond them: pagination must be checked via hasNextPage because a day can exceed a thousand entries, results are truncated relative to the singular tools, and bios are omitted by default. It also explains why includeDescription is off (token cost).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and ordering, then pagination, then result shape and the fallback to sibling tools. Dense but nearly every clause carries information; the final filmography warning is slightly repetitive with the preceding sentence but still earns its place as a misread guard.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values needn't be spelled out, yet the description still characterizes the character-shaped vs staff-shaped objects and what is absent from them. Combined with pagination and permission-free read semantics, an agent has everything needed to call correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 still adds value by explaining the default-off rationale for includeDescription and reinforcing that omitting it hides `description`, plus the pagination-limit behavior tied to `page`. It does not add new syntax or format detail beyond that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource+scope: list AniList characters or staff whose birthday (month/day) is today, ordered by favourites. It explicitly distinguishes itself from get_character/get_staff by describing the lighter shape it returns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use (birthday-by-day listing) and when-not-to (call get_character/get_staff by ID for full roles/works and bio), plus an interpretation caveat: don't read a missing filmography as 'none'. The alternative and its triggering condition are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_user_activityGet a user's activity feedARead-only
List recent AniList activity posts from a specific user, newest first — by default every activity type (list updates, text posts, and message activity they received). Narrow it server-side with type and/or a createdAfter/createdBefore window rather than paging through everything and discarding. Accepts an exact AniList username directly (it's resolved to an id with one extra internal lookup) — no need to call search_user first unless you only have a partial/fuzzy name. Use search_activity instead to browse without pinning to one user. Use get_user_recent_activity instead if you just want a quick, fixed-size (5-item) recent snapshot without paginating.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | 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. | |
| type | No | Restrict to this activity type, or pass an array to match ANY of several (e.g. ["TEXT", "MESSAGE"]). MEDIA_LIST matches both ANIME_LIST and MANGA_LIST activities; use ANIME_LIST/MANGA_LIST to restrict to just one. MESSAGE here is messages this user received. Omit for every type. | |
| user | Yes | AniList user ID, or username. An unknown ID or username errors rather than returning an empty feed. | |
| perPage | No | Results per page (max 50, AniList's own ceiling — it silently clamps anything higher). | |
| createdAfter | No | Only activities created strictly after this moment — an ISO 8601 datetime with a `Z` or ±hh:mm offset (e.g. 2026-01-01T00:00:00Z). AniList stores whole seconds; an activity at exactly this second is excluded. | |
| createdBefore | No | Only activities created strictly before this moment — same format and exclusive bound as `createdAfter`. A window where createdBefore is not after createdAfter just returns no activities, not an error. |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, and the description adds genuinely non-obvious behavior: the username is resolved to an id with one extra internal lookup, and an unknown ID/username errors rather than returning an empty feed. It does not discuss ordering guarantees across pages or rate limits, which keeps it short of a 5 given the lowered bar annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, each carrying distinct information: scope, filtering strategy, username handling, then two explicit alternative routings. Nothing is redundant and the core scope is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return-value explanation is unnecessary, and the six parameters are fully documented in the schema. The description closes the remaining gaps an agent would care about — naming semantics, error-on-unknown-user behavior, and which sibling to use instead.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 goes further by stating the default (all activity types) and by explaining the intended use of `type` and the createdAfter/createdBefore window as server-side narrowing levers rather than post-filtering. It slightly exceeds the schema's own field-level docs without duplicating them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb and resource ('List recent AniList activity posts from a specific user, newest first') plus the default scope (every activity type, with the types enumerated). An agent can distinguish this from search_activity and get_user_recent_activity without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes away from two siblings: 'Use search_activity instead to browse without pinning to one user' and 'Use get_user_recent_activity instead if you just want a quick, fixed-size (5-item) recent snapshot without paginating.' It also tells the agent to filter server-side with type/createdAfter/createdBefore rather than paging and discarding, and clarifies that calling search_user first is unnecessary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_user_listGet a user's anime or manga listARead-only
Get a user's AniList anime or manga list. Returns a compact table of one row per entry by default (format: "compact") — entry id, media id, MAL id, status, score, progress and title, which is what a sync, comparison or pick-something-to-watch task needs; switch to format: "full" only when you actually need dates, notes, custom lists, advanced scores or the status/custom-list grouping, since that response is roughly ten times larger per entry. Filter server-side with statuses rather than fetching everything and discarding — asking for just CURRENT costs a fraction of a whole-list read. Pass sort (e.g. UPDATED_TIME_DESC) to have AniList order the list before chunking, so a small perChunk returns the top entries by that key rather than an arbitrary slice. To answer "what did they finish/start in a period", use the completedAt_*/startedAt_* bounds (strict, server-side) instead of scanning the list — e.g. everything completed in 2026 is completedAt_greater: {year: 2025, month: 12, day: 31} plus completedAt_lesser: {year: 2027}; chunking then counts only the matching entries. Works for any public/unlisted user. Accepts an exact AniList username directly — no need to call search_user first unless you only have a partial/fuzzy name. Paginated by chunk/perChunk (AniList's own mechanism for this — counted across entries of ALL statuses combined, not per status), since a large list can otherwise return thousands of entries in one response; check hasNextChunk and increment chunk to keep paging. perChunk itself has no cap — AniList accepts values in the thousands, so raise it to pull a whole list in one call instead of paging through it. The collection AniList exposes here is capped at its ~11,000 most recently updated unique entries — irrelevant for virtually every account, but a hard ceiling if one is ever hit (older entries beyond it aren't retrievable through this field at all, by any chunk).
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Order AniList applies server-side; later keys break ties in earlier ones (e.g. [SCORE_DESC, UPDATED_TIME_DESC]). Applied to the whole list BEFORE chunking — `chunk` 1 with `perChunk` 10 and UPDATED_TIME_DESC is the 10 most recently updated entries across all statuses — and again within each status/custom-list group. Groups are not interleaved, so `compact` rows (concatenated group by group) are ordered within each status, not globally; filter to one status with `statuses` for a single fully ordered run. Omit for AniList's default order (oldest-added first within each group). | |
| type | Yes | Whether to get the anime or manga list. | |
| user | Yes | AniList user ID (as a number — a digit string is read as a username), or username. | |
| chunk | No | Chunk number for pagination (AniList paginates this list by chunk, not page). | |
| format | No | How much of each entry to return. `compact` (default) is a tab-separated table of entry id, media id, MAL id, status, score (0-10), progress and title, one de-duplicated row per entry — enough for syncing, comparing or choosing, at about a tenth the size. `full` returns AniList's own grouped objects with dates, notes, repeat/priority, custom lists and advanced scores; use it only when you need one of those, or when you need to know which custom list an entry is filed under (`compact` drops the grouping — every row still carries its own status). | compact |
| perChunk | No | Entries per chunk, counted across all statuses combined. Defaults to 25 so an unattended call stays small, but nothing caps it — pass a larger value (AniList accepts values in the thousands) to pull a whole list in one call instead of paging. A compact row is small (a few hundred fit easily); with `format: "full"` each entry carries its dates, notes, custom lists and advanced scores, so a few hundred entries is already a large response there. | |
| statuses | No | Only return entries with these statuses (AniList filters server-side, so this genuinely shrinks the response — prefer it over fetching the whole list and discarding). Omit for every status. Custom-list groups are still returned in `full` when their entries match. | |
| startedAt_lesser | No | Only entries started strictly BEFORE this date (AniList filters server-side; the bound date itself is excluded). An omitted month/day counts as 0, so {year: 2026} here means "up to 2025-12-31". Entries with no date recorded also pass this bound on its own — pair it with the matching `_greater` bound to exclude them. | |
| startedAt_greater | No | Only entries started strictly AFTER this date (AniList filters server-side; the bound date itself is excluded). An omitted month/day counts as 0, so {year: 2026} here means "from 2026-01-01 on". Entries with no date recorded never match. | |
| completedAt_lesser | No | Only entries completed strictly BEFORE this date (AniList filters server-side; the bound date itself is excluded). An omitted month/day counts as 0, so {year: 2026} here means "up to 2025-12-31". Entries with no date recorded also pass this bound on its own — pair it with the matching `_greater` bound to exclude them. | |
| completedAt_greater | No | Only entries completed strictly AFTER this date (AniList filters server-side; the bound date itself is excluded). An omitted month/day counts as 0, so {year: 2026} here means "from 2026-01-01 on". Entries with no date recorded never match. |
Output Schema
| Name | Required | Description |
|---|---|---|
| rows | No | `compact` only: one tab-separated row per entry, newline-separated, matching `columns`. An empty cell means AniList has no value for that field (e.g. no MAL id); a score of 0 means unscored. |
| count | No | `compact` only: how many unique entries `rows` contains. |
| lists | No | `full` only: AniList's own status/custom-list groups, with full entries. |
| format | Yes | Which shape this response is in — echoes the `format` argument. |
| columns | No | `compact` only: the tab-separated column names for `rows`, in order. |
| hasNextChunk | No | True if another `chunk` of this list is available. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnly/openWorld; the description adds substantial non-obvious behavior — full responses are ~10x larger per entry, chunking counts across all statuses combined, groups are not interleaved, `perChunk` is uncapped, and the collection is hard-capped at ~11,000 most recently updated entries beyond which data is unrecoverable by any chunk. That ceiling and the size tradeoff are exactly the context annotations cannot supply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is front-loaded correctly — default format and purpose come first — but it is a single ~250-word paragraph that restates several already-documented schema facts (perChunk has no cap, sort applies before chunking, statuses shrink the response). Those repetitions would not survive an edit that treats the schema as authoritative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and the description still covers everything else an agent needs to call this correctly: user identification form, pagination loop via hasNextChunk/chunk, response-size tradeoffs, filtering strategy, and the upstream data ceiling. Nothing material is missing for an 11-parameter read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, and much of the description's parameter talk (perChunk cap, sort-before-chunking, statuses filtering rationale) repeats what the schema already documents. It earns one step above baseline by supplying a concrete worked range example for the date bounds and by explaining cross-parameter interaction (sort + perChunk + statuses yields a ranked top-N).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get a user's AniList anime or manga list') and immediately describes the default return shape (compact one-row-per-entry table with named fields). It also distinguishes itself from the closest sibling by noting an exact username needs no prior search_user call, so an agent can pick it 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit branching guidance: use compact by default, switch to full 'only when you actually need dates, notes, custom lists...'; filter with `statuses` rather than client-side discarding; use `completedAt_*`/`startedAt_*` bounds instead of scanning. It even names the alternative tool (search_user) and the condition that makes it unnecessary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_user_profileGet a user's profileARead-only
Get an AniList user's public profile: name, about text, avatar, donator status — plus their account settings (title/name-language preferences, notification toggles, list display options). Confirmed live these settings are NOT viewer-gated, so they're included for any user, not just the authenticated caller. Accepts an exact AniList username directly — no need to call search_user first unless you only have a partial/fuzzy name and need to look up the exact one. Need statistics too? Use get_full_user_info instead of also calling get_user_stats separately.
| Name | Required | Description | Default |
|---|---|---|---|
| user | Yes | AniList user ID (as a number — a digit string is read as a username), or username. |
Output Schema
| Name | Required | Description |
|---|---|---|
| profile | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond readOnlyHint/openWorldHint, the description discloses a non-obvious behavioral fact: account settings are not viewer-gated and are returned for any user, not just the authenticated caller — this is the kind of privacy/auth behavior annotations cannot express. It also notes the 'confirmed live' verification, which raises trust in that claim.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with what it returns, then the privacy caveat, then the routing advice — a sensible order with no filler. The middle sentence runs long and packs two ideas (non-gated settings plus the implication you can inspect other users), slightly reducing scannability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Only one required parameter, fully documented by the schema, an output schema exists so return values needn't be described, and annotations cover the safety profile. The description adds the auth-visibility nuance and sibling routing, leaving nothing an agent needs missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already documents the integer-vs-string username interpretation, so the description adds little on the parameter itself. Its only value-add is procedural (don't call search_user first), which is usage guidance rather than parameter semantics. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get an AniList user's public profile') and enumerates the returned content: name, about, avatar, donator status, and account settings. It also differentiates itself from the nearest siblings by naming search_user, get_user_stats, and get_full_user_info, so an agent can route correctly 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit routing rules both directions: skip search_user when you have an exact username, use search_user only for partial/fuzzy names, and use get_full_user_info instead of also calling get_user_stats. These are concrete when-to-use and when-not-to-use statements with named alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_user_recent_activityGet a user's most recent activityARead-only
Get an AniList user's 5 most recent activity posts, with full content (not just IDs) — every activity type (list updates, text posts, and message activity they received; the underlying query applies no type filter of its own), a fixed count, not configurable; use get_user_activity for a paginated full feed instead. Accepts an exact AniList username directly — no need to call search_user first unless you only have a partial/fuzzy name (username resolution costs one extra internal lookup either way).
| Name | Required | Description | Default |
|---|---|---|---|
| user | Yes | AniList user ID, or username. An unknown ID or username errors rather than returning an empty feed. |
Output Schema
| Name | Required | Description |
|---|---|---|
| activity | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, but the description adds real behavioral context: fixed non-configurable count, no type filter applied by the underlying query, full content rather than IDs, and that username resolution costs an internal lookup either way. Covers most of the behavioral surface, though it does not mention failure modes beyond what the schema documents.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and scope, then alternatives, then parameter behavior. Dense and largely waste-free, but the long parenthetical about activity types and the lookup-cost aside make it feel heavier than a one-param read tool needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema covering return values and annotations covering safety, the description only needs to establish scope, alternatives and input behavior, and it does all three. Nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and already documents the ID-or-username union and that unknown values error. The description nonetheless adds callable-path meaning: an exact username can be passed directly without a search_user pre-call, and resolution cost is constant. That is genuine value beyond the schema, just for a single param.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb, resource and scope: the 5 most recent activity posts with full content, covering every activity type. It explicitly names the sibling it is not (get_user_activity) so an agent can route between them 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives the alternative (get_user_activity for a paginated full feed) and the condition for choosing it, plus a precondition note about when search_user is and is not needed. This is exactly the when/when-not/alternatives guidance the dimension rewards.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_user_statsGet a user's statisticsARead-only
Get an AniList user's anime/manga statistics: counts, mean score, time watched, episodes/chapters/volumes consumed. Accepts an exact AniList username directly — no need to call search_user first unless you only have a partial/fuzzy name. AniList's own stats aggregation can lag behind the account's real list — confirmed live, an account with real scored/progressed entries still read back all-zero statistics — so don't treat a zeroed result as 'this account has no list activity' without cross-checking get_user_list. Need the profile too? Use get_full_user_info instead of also calling get_user_profile separately.
| Name | Required | Description | Default |
|---|---|---|---|
| user | Yes | AniList user ID (as a number — a digit string is read as a username), or username. |
Output Schema
| Name | Required | Description |
|---|---|---|
| stats | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations' readOnly/openWorld hints, the description discloses a non-obvious AniList-specific behavior: stats aggregation can lag and return all-zero data even when the account has real activity. It tells the agent not to treat zeroed results as conclusive without checking get_user_list.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the tool's purpose and then spends its remaining sentences on actionable routing and caveats. The anecdotal detail about zeroed statistics directly supports a real invocation risk, so it earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so the description need not document return fields. For a one-parameter read-only stats tool, it covers purpose, accepted input style, alternatives, and the key reliability caveat.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is already high, but the description adds practical meaning by emphasizing that an exact username is accepted directly and that fuzzy names should route through search_user. It does not add further detail about the ID-versus-username distinction beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb and resource: gets an AniList user's anime/manga statistics, then enumerates what those statistics include. It is immediately distinguishable from siblings like get_user_profile and get_user_list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says an exact AniList username can be passed directly and that search_user is unnecessary unless the name is partial/fuzzy. It also names get_user_list for cross-checking zeroed results and get_full_user_info as the alternative when profile data is needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
login_anilistLog in to AniListA
Authorize the personal-list and social tools with your AniList account (one-time). Prerequisite: register an app at anilist.co/settings/developer with Redirect URL set to http://localhost:8082/callback (the default; override the port via ANILIST_OAUTH_PORT if 8082 is taken — it must match exactly what you register), and set ANILIST_CLIENT_ID + ANILIST_CLIENT_SECRET in the server env. Calling this returns an authorization URL: open it, log in, and click Approve. If your browser genuinely runs on the same machine as this server, login then completes automatically; otherwise copy the URL you land on and pass it to submit_anilist_redirect. auto_capture in the response is NOT a reliable detector of that — it only reflects whether this server process could bind its own localhost listener, which typically succeeds even when the server runs remotely (SSH/headless) and the browser can never reach it; you (or the user) know the actual machine layout, the response doesn't.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| auto_capture | Yes | Whether this server process could bind a local callback listener — NOT whether the browser opening authorize_url is actually on the same machine. A remote/SSH server can still bind its own loopback port successfully and read `true` here even though that browser's redirect can never reach it. |
| instructions | Yes | |
| redirect_uri | Yes | The exact localhost callback URI this login attempt used (port from ANILIST_OAUTH_PORT, default 8082) — must exactly match the Redirect URL registered for your AniList app, or the token exchange fails. |
| authorize_url | Yes | The AniList OAuth authorization URL — open it in a browser and click Approve. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond annotations: it discloses the auth flow, the external dependency (browser/AniList), required env configuration, and a non-obvious caveat that auto_capture is not a reliable remote/headless detector. That caveat is exactly the kind of behavioral insight annotations can't express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose then prerequisites then flow. The auto_capture caveat is long and slightly dense but carries real value; a small trim would improve it without losing meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists, the description needn't enumerate return fields, yet it still explains the key response element (authorization URL, auto_capture). The full multi-step flow is covered so an agent can act correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so the baseline is 4. The description usefully documents config inputs (ANILIST_CLIENT_ID, ANILIST_CLIENT_SECRET, ANILIST_OAUTH_PORT) that affect behavior, though these aren't schema parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb and resource: 'Authorize the personal-list and social tools with your AniList account (one-time)'. It is clearly distinguishable from sibling read tools and names submit_anilist_redirect as the follow-up path.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use (one-time authorization for personal-list/social tools), detailed prerequisites (developer app, exact Redirect URL, env vars), and a named alternative path via submit_anilist_redirect with the condition that selects it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_message_activityPost a message activityA
[Requires login] Post a new message-style activity to another AniList user's profile, or update an existing one by passing its id. Despite the name, this is NOT a private DM — like post_text_activity, it's publicly visible on both users' activity feeds/profiles to anyone who can view them. This is a limitation of this tool, not AniList itself: AniList's underlying mutation does accept a private argument, but this tool doesn't expose it, so every message sent through it is public. Don't use it for anything the sender expects to stay confidential.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Activity ID to update instead of creating a new post. | |
| message | Yes | The message text to post (per AniList's own schema: 2-10000 characters). | |
| recipientId | Yes | AniList numeric user ID of the message recipient (resolve a username via search_user first). |
Output Schema
| Name | Required | Description |
|---|---|---|
| activity | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-readonly, open-world, non-destructive mutation, and the description adds substantial context: login is required, posts are publicly visible on both profiles/feeds, and the tool omits AniList's underlying `private` argument. These are exactly the behavioral details an agent needs for privacy-sensitive use.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the login requirement and core action, then spends its remaining sentences on the critical public-visibility warning. There is no filler; each sentence adds either a usage constraint or a privacy clarification.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a mutation with an output schema, full parameter documentation, and annotations covering safety. The description fills the remaining critical gap — public visibility and lack of a private option — so an agent has everything needed to invoke it responsibly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents `id`, `message`, and `recipientId` thoroughly, including the username-to-ID resolution hint. The description adds the high-level update-via-`id` behavior but no new parameter-level meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: posting a message-style activity to another AniList user's profile, or updating an existing one via `id`. It explicitly distinguishes this from a private DM and from `post_text_activity`, so an agent can identify the tool without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear when-not condition: do not use it for confidential content because the output is public. It also mentions `post_text_activity` as a similar public posting tool, but does not explicitly compare when to choose one over the other.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_text_activityPost a text activityA
[Requires login] Post a new text-status update to the authenticated user's own AniList profile, or update an existing one by passing its id.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Activity ID to update instead of creating a new post. | |
| text | Yes | The text to post (per AniList's own schema: 5-10000 characters). |
Output Schema
| Name | Required | Description |
|---|---|---|
| activity | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=false, idempotent=false, openWorld=true and destructive=false. The description adds genuinely non-redundant context: authentication is required, the target is restricted to the caller's own profile (no posting to other users), and the id parameter switches the call from create to mutate semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the login prerequisite and the primary action, with the update variant following as a compact clause. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. For a 2-parameter mutation the description covers auth, target scope, and the create-vs-update branch, leaving nothing an agent needs before calling it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, including the 5-10000 character range and the id-as-update semantics, so the schema already carries parameter meaning. The description's phrasing about `id` largely restates the schema's own 'update instead of creating a new post' wording rather than adding new detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (post/update) and resource (text-status update on AniList profile) with scope clearly limited to the authenticated user's own profile. The 'text-status' qualifier distinguishes it from the sibling post_message_activity without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly splits the two modes: create a new post by default, or update an existing one by passing `id`. The '[Requires login]' prefix gives an actionable prerequisite. It stops short of naming alternatives (post_message_activity, delete_activity) for cases where the agent wants a non-text activity or removal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_threadPost a forum threadA
[Requires login] Post a new forum thread to the authenticated user's own AniList account, or update an existing one by passing its id. Use search_thread first if you want to check whether a similar thread already exists before posting a new one. Note: this tool's own response doesn't include categories/mediaCategories/isSticky/isLocked — call get_thread with the returned id afterward to confirm whether a category/sticky/locked change actually applied, especially since sticky/locked can silently no-op and categories/mediaCategories can silently drop existing values (see those fields' own descriptions below).
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Thread ID to update instead of creating a new one. | |
| body | No | Thread body (markdown; per AniList's own schema, up to 30000 characters) — REQUIRED when creating a new thread, optional when updating one via `id` (confirmed live: omitting it on an update leaves the existing body unchanged). | |
| title | No | Thread title (per AniList's own schema: 6-120 characters) — REQUIRED when creating a new thread, optional when updating one via `id` (confirmed live: omitting it on an update leaves the existing title unchanged, it isn't cleared). | |
| locked | No | Lock this thread to prevent further replies (only takes effect if you have moderator permission — confirmed live that a non-mod account's own thread silently stays unlocked). | |
| sticky | No | Pin this thread (only takes effect if you have moderator permission — confirmed live that a non-mod account's own thread silently stays unpinned). | |
| categories | No | Forum category IDs to post this thread under — REQUIRED when creating a new thread (AniList rejects the mutation otherwise), optional when updating one via `id`. When updating and you DO set this, it's a full replace, not a merge — confirmed live: an existing thread with categories [A] updated with just [B] ended up with [B] only, A silently dropped. Fetch the thread's current categories first (get_thread) and include every one you want to keep. Not independently listable by any tool; resolve one from a thread you've already read (get_thread's/search_thread's `categories` field) or from a forum URL like anilist.co/forum/recent?category=<id>. | |
| mediaCategories | No | AniList anime/manga IDs to tag this thread with, for threads about a specific title (from search_media/get_media). Optional on both create and update. When updating and you DO set this, it's a full replace, not a merge — confirmed live: an existing thread tagged with [A] updated with just [B] ended up with [B] only, A silently dropped (same behavior as `categories` above). Fetch the thread's current `mediaCategories` first (get_thread) if you need to keep an existing tag alongside a new one. |
Output Schema
| Name | Required | Description |
|---|---|---|
| thread | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (not read-only, not destructive, not idempotent, open-world), and the description adds genuinely valuable behavioral facts: sticky/locked can silently no-op without moderator permission, and categories/mediaCategories are full replaces that drop existing values silently. What holds it back from a 5 is that much of the category-drop detail is duplicated verbatim from the schema field descriptions rather than adding new information.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core create/update distinction, and every sentence carries operational weight. It's dense but a bit repetitive, restating the categories-drop caveat already present in the schema, and the parenthetical 'see those fields' own descriptions below' is mildly awkward.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter mutation with an output schema, the description covers the gaps that structured data cannot: that the response omits categories/sticky/locked and that a follow-up get_thread read is needed to confirm application. Nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 earns extra credit for summarizing the critical semantic — that `id` switches the tool from create to update mode and that create-vs-update changes which fields are required. It does, however, point to field descriptions 'below' rather than adding materially new semantics for locked/sticky.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Post a new forum thread') and clarifies dual semantics: create by default, update when `id` is supplied. It's clearly separable from siblings like delete_thread, get_thread, and search_thread.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit before/after guidance: use search_thread first to check for duplicates, and call get_thread afterward to verify category/sticky/locked changes. It also states the login requirement, which gates use entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_thread_commentPost a comment on a forum threadA
[Requires login] Post a new comment on an AniList forum thread from the authenticated user's account, or update an existing one by passing its id.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Comment ID to update instead of creating a new one. Not the comment you're replying to — that's `parentCommentId`. | |
| comment | Yes | The comment text to post (markdown; per AniList's own schema, up to 12000 characters). | |
| threadId | Yes | AniList thread ID to comment on (from get_thread/search_thread). | |
| parentCommentId | No | Reply to this specific comment instead of posting top-level (from get_thread_comments). The reply then appears nested under that comment's `childComments` in get_thread_comments, not as a new top-level entry. Not the comment being edited — that's `id`. |
Output Schema
| Name | Required | Description |
|---|---|---|
| comment | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false and openWorldHint=true, so the safety profile is covered. The description adds the genuine, non-annotated context that authentication is required and that the comment is attributed to the authenticated user. It says nothing about ownership rules for edits, notifications, or rate limits, so the added value is modest but real.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with the authentication prerequisite front-loaded and the update mode appended; no redundant restatement of the title or schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and annotations plus the auth note cover the interaction contract. It is only slightly short of complete because editing someone else's comment versus one's own is unaddressed for a mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema itself already explains `id` vs `parentCommentId`, thread IDs, and the markdown character limit in detail. The description only reinforces the `id` = update behavior already documented in the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Post a new comment on an AniList forum thread') and disambiguates the create-vs-update behavior in the same sentence. An agent can distinguish it from delete_thread_comment and post_thread without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The '[Requires login]' prefix and 'from the authenticated user's account' establish the prerequisite, and the description explicitly says to use `id` to update rather than create. It does not name a sibling alternative or state when this should be chosen over post_thread, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_list_entryRemove an entry from your AniList listADestructive
[Requires login] Delete an entry from the authenticated user's own AniList list by its list-entry ID (NOT the media id) — get it from get_user_list. This cannot be undone, and calling it again on an already-deleted id errors as not found rather than silently succeeding.
| Name | Required | Description | Default |
|---|---|---|---|
| listEntryId | Yes | The list ENTRY id to delete (not the media id). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond destructiveHint=true and idempotentHint=false, it spells out the concrete consequence: irreversible deletion, plus a second call on the same id errors as not found rather than silently succeeding. That is exactly the non-idempotent destructive behavior an agent needs to reason about retries, and the login requirement is stated up front.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact sentence front-loads the auth requirement, then the action, then the id caveat, then the irreversibility warning. No filler, and the failure-mode detail is attached to the sentence it qualifies.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return shape needn't be explained, and annotations carry the safety profile. Auth requirement, id source, irreversibility, and re-call failure behavior are all covered, leaving no meaningful gap for a one-parameter destructive tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the parameter description already says 'ENTRY id, not the media id', so baseline would be 3. The description adds provenance the schema cannot — where to obtain the id (get_user_list) — which materially reduces the risk of passing a media id.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (delete an entry from the authenticated user's own list) and explicitly contrasts list-entry ID with media ID, which separates it from add_list_entry/update_list_entry and get_media operations at a glance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives the preconditions (requires login, must be the authenticated user's own entry) and points to get_user_list as the source of a valid id. It stops short of naming the alternative to use when the goal is to change status or score rather than remove the entry (update_list_entry), so routing is clear but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_activitySearch activity feedARead-only
Search/browse AniList's activity feed (list updates, text posts, messages), optionally filtered to one user or — with isFollowing [Requires login] — to your following feed, to one or more activity types, and/or to a creation-time window. Each result already includes its full content (text/message/status, replyCount/likeCount/isLiked, the posting user, and — for list activity — the media) — no follow-up get_activity call needed unless you need to re-check one specific result's replyCount/likeCount/isLiked later (e.g. after liking it).
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | 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. | |
| type | No | Restrict to this activity type, or pass an array to match ANY of several (e.g. ["TEXT", "MESSAGE"]). MEDIA_LIST matches both ANIME_LIST and MANGA_LIST activities; use ANIME_LIST/MANGA_LIST to restrict to just one. Omit for every type. | |
| user | No | Restrict results to this AniList user — numeric ID or exact username (resolved to an id with one extra internal lookup; no need to call search_user first unless you only have a partial/fuzzy name). An unknown ID or username errors with not_found rather than silently returning an empty result. | |
| perPage | No | Results per page (max 50, AniList's own ceiling — it silently clamps anything higher). | |
| isFollowing | No | [Requires login] Set true for your following feed: activity from users the logged-in account follows plus its own (AniList's `isFollowing` filter — confirmed live: an account following nobody gets only its own activity). Without a token this errors before any request rather than returning the global feed. Can't be combined with `user`. false or omitted means no restriction. | |
| createdAfter | No | Only activity created strictly after this ISO 8601 datetime with an offset (e.g. "2026-10-01T00:00:00Z"); compared at whole-second precision. | |
| createdBefore | No | Only activity created strictly before this ISO 8601 datetime. |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the readOnlyHint/openWorldHint annotations: it discloses that each result embeds content, counts, isLiked, user and media, that isFollowing errors before any request without a token (and returns only own activity if following nobody), and that an unknown user errors with not_found rather than an empty list. These are exactly the behavioral facts an agent needs before calling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the resource and filter set, then the return-content/exclusion note. The nested parentheticals and em-dashes make it dense, but every clause carries information an agent would otherwise have to infer.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description doesn't need to restate return shape, yet it summarizes what comes back and covers auth, error, and no-follow-up-call behavior — enough to invoke correctly. The one gap is not steering the agent away from overlapping siblings when a single user's feed is the actual goal.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains pagination limits, perPage clamping, enum/array behavior for type, and the createdBefore/createdAfter precision. The description only echoes the filtering dimensions and the [Requires login] tag for isFollowing, adding little beyond structured fields. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Search/browse AniList's activity feed') and enumerates the activity subtypes (list updates, text posts, messages) plus the filterable dimensions. Scope is clear enough to distinguish it from the single-activity sibling get_activity, though it never names get_user_activity or get_user_recent_activity, leaving that separation implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives actionable routing advice: no follow-up get_activity call is needed because results carry full content, unless you later need to re-check a specific result's counts, and no search_user call is needed for exact usernames. It also states the isFollowing login precondition and that it can't combine with user. It stops short of explicitly contrasting with get_user_activity/get_user_recent_activity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_characterSearch charactersARead-only
Search AniList for characters by name. Returns AniList IDs to use with get_character. Each result's bio (description) is omitted unless you set includeDescription.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | 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. | |
| term | Yes | Character name (or part of it) to search for. | |
| perPage | No | Results per page (max 50, AniList's own ceiling — it silently clamps anything higher). | |
| includeDescription | No | Also fetch each result's full bio (`description`). Kept off by default — a bio can run to several thousand characters, and always including it would burn tokens on text you may not need; use get_character for a single entry's full bio instead. |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the description usefully builds on them by disclosing output behavior: IDs are returned for follow-up calls and each result's `description` field is withheld unless the flag is set. The token-cost rationale adds genuine context. It leaves pagination depth limits to the schema, which is a minor omission rather than a gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with no redundancy: purpose first, then the follow-up tool, then the one non-obvious output toggle. Nothing is buried or repeated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, rich annotation coverage, and 100% schema descriptions, the description only needs to orient the agent — which it does by naming the resource, the returned ID, and the omitted bio field. Nothing needed to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters are already fully documented upstream, including the perPage ceiling and the page × perPage limit. The description only restates the includeDescription default and term-by-name semantics, adding little beyond what the schema provides; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Search AniList for characters by name') and immediately contrasts with the sibling get_character by saying it returns IDs for use with it. An agent can distinguish this from search_media, search_staff, and search_studio purely from the description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly positions the tool as a discovery step feeding into get_character, and names get_character as the alternative when a single full bio is needed. It stops short of explicit 'do not use for X' exclusions, but the routing between search and fetch is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_mediaSearch anime/mangaARead-only
Search AniList for anime or manga by title and/or filters (genre, tag, format, status, season/year, country, length — most with an exclusion variant), or browse term-less by ranking (top-rated, most popular, trending — see the sort parameter) when you don't have a title to search for. Adult (NSFW) results are included unless you set sfw: true (or isAdult: false); isAdult: true returns adult titles only. Returns AniList IDs to use with get_media and other ID-based tools.
| Name | Required | Description | Default |
|---|---|---|---|
| sfw | No | Set true to exclude adult (isAdult) entries — same as `isAdult: false`. Adult results are NOT filtered by default. | |
| page | No | 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. | |
| sort | No | Sort order, most-significant key first (e.g. ["SCORE_DESC"] for highest-rated first, ["POPULARITY_DESC"] for most popular, ["TRENDING_DESC"] for what's hot right now). Defaults to relevance-ranked SEARCH_MATCH when a `term` is given; with no term and no explicit sort, results come back in AniList's own default order. Set an explicit sort for a term-less ranking/browse query (e.g. top-rated or most-popular). | |
| term | No | Free-text search term (matches title). Omit to only filter. | |
| type | Yes | Whether to search anime or manga. | |
| genres | No | Restrict to entries matching ALL of these genre names (see get_genres for valid names) — an unrecognized genre name doesn't error, it just filters out all results, same silent-mismatch behavior as `format_in`/`tag_in` below. | |
| onList | No | [Requires login] Restrict to (true) or exclude (false) entries already on the authenticated user's own list. Omit to ignore list status entirely. Errors if not logged in (confirmed live: AniList would otherwise silently ignore it and return unfiltered results). | |
| season | No | Restrict to this airing season. Works alone — matches every year's occurrence of that season, NOT just the current year (unlike anilist.co's own season filter UI, which implicitly assumes the current year when you don't also pick one). Combine with `seasonYear` for one specific season+year. | |
| tag_in | No | Restrict to entries matching ALL of these exact tag names (see get_media_tags for valid names — unlike `genres`, tag names are case-sensitive and more specific, e.g. "Time Loop" or "Tragedy"). An unrecognized tag name doesn't error, it just silently matches nothing (same behavior as `genres`/`format_in` above, confirmed live). | |
| isAdult | No | AniList's own adult-content filter: true returns ONLY adult (18+) entries, false excludes them (same as `sfw: true`). Omit to include both. No login or account setting is needed for adult results. `sfw: true` with `isAdult: true` contradict each other and are rejected. | |
| perPage | No | Results per page (max 50, AniList's own ceiling — it silently clamps anything higher). | |
| format_in | No | Restrict to these formats. Only formats valid for the `type` you're searching match anything — e.g. NOVEL/ONE_SHOT with type: ANIME, or TV/OVA/ONA with type: MANGA, will just filter out all results, not error. | |
| source_in | No | Restrict to entries adapted from these source material types. | |
| status_in | No | Restrict to these release statuses. | |
| seasonYear | No | Restrict to this airing/release year (matches any season within it). Works alone or combined with `season` for one specific season+year — neither requires the other. | |
| tag_not_in | No | Exclude entries having ANY of these exact tag names (see `tag_in`). | |
| genre_not_in | No | Exclude entries having ANY of these genres. Unlike `genres`, an unrecognized name excludes nothing (no-op, confirmed live). | |
| format_not_in | No | Exclude these formats. | |
| licensedBy_in | No | Restrict to entries licensed/streamed by ANY of these sites (names as in get_media's `externalLinks[].site`, e.g. "Crunchyroll", "Netflix"; case-insensitive). An unrecognized site name matches nothing. | |
| status_not_in | No | Exclude these release statuses. | |
| endDate_lesser | No | Restrict to entries whose end date is strictly BEFORE this date (the bound date itself is excluded). An omitted month/day counts as 0, so {year: 2020} here means "up to 2019-12-31". | |
| minimumTagRank | No | Only count a tag in `tag_in`/`tag_not_in` when its relevance rank (0-100, as in get_media's `tags[].rank`) is at least this — e.g. 90 for titles where the tag is central, not incidental. Applies to both lists (confirmed live). | |
| volumes_lesser | No | Manga only: fewer volumes than this (see above). | |
| chapters_lesser | No | Manga only: fewer chapters than this (same column as `episodes_lesser`). | |
| countryOfOrigin | No | Restrict to this country of origin, as an uppercase ISO 3166-1 alpha-2 code (e.g. "JP", "KR" for manhwa, "CN" for manhua/donghua, "TW"). An unused code matches nothing. | |
| duration_lesser | No | Anime only: episode length strictly less than this, in minutes (see above). | |
| endDate_greater | No | Restrict to entries whose end date is strictly AFTER this date (the bound date itself is excluded). An omitted month/day counts as 0, so {year: 2020} here means "from 2020-01-01 on". | |
| episodes_lesser | No | Restrict to entries with fewer episodes/chapters than this. | |
| volumes_greater | No | Manga only: more volumes than this. With type: ANIME AniList silently applies it to episode duration instead (shared column, confirmed live). | |
| chapters_greater | No | Manga only: more chapters than this. Same underlying column as `episodes_greater` — with type: ANIME it filters episode count (confirmed live). | |
| duration_greater | No | Anime only: episode length strictly greater than this, in minutes. With type: MANGA AniList silently applies it to volume count instead (shared column, confirmed live). | |
| episodes_greater | No | Restrict to entries with more episodes/chapters than this. | |
| startDate_lesser | No | Restrict to entries whose start date is strictly BEFORE this date (the bound date itself is excluded). An omitted month/day counts as 0, so {year: 2020} here means "up to 2019-12-31". | |
| popularity_lesser | No | Restrict to entries with fewer list-adds than this. | |
| startDate_greater | No | Restrict to entries whose start date is strictly AFTER this date (the bound date itself is excluded). An omitted month/day counts as 0, so {year: 2020} here means "from 2020-01-01 on". | |
| includeDescription | No | Also fetch each result's full synopsis (`description`). Kept off by default — with up to 50 results per call, always including it would burn tokens on text you may not need; use get_media for a single title's full synopsis instead. | |
| popularity_greater | No | Restrict to entries with more list-adds than this. | |
| averageScore_lesser | No | Restrict to entries with an average score strictly less than this (0-100). | |
| averageScore_greater | No | Restrict to entries with an average score strictly greater than this (0-100). |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds behavior annotations don't carry: adult/NSFW results are included by default unless `sfw: true` or `isAdult: false`, and `isAdult: true` inverts it — a genuine safety and result-set fact. It also notes exclusion-variant filters and the ranking browse mode, all beyond readOnly/openWorld hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the primary search mode, then the browse fallback, then the adult-content default, then the return type. The parentheticals are dense but each clause carries a distinct decision-relevant fact.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 39 parameters, a full input schema, an output schema, and annotations, the description covers the decisions the schema can't: which mode to use, what the safety default is, and what the tool hands back. Nothing an agent needs before calling is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 still adds value by tying `sort` to the term-less browse case and explaining the sfw/isAdult equivalence, which spans two parameters. It doesn't survey the other 35 filter params, but the schema already documents those thoroughly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb and resource ("Search AniList for anime or manga") and covers both modes: title/filter search and term-less ranking browse. It also distinguishes itself from the ID-based siblings by noting it returns AniList IDs consumed by get_media, so an agent can place it in the workflow without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to browse term-less via `sort` when you have no title, and points to get_media for a single title's synopsis and get_genres/get_media_tags for valid filter names. What's missing is a direct statement of when to prefer search_media over get_media for a lookup, but the routing is otherwise clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_staffSearch staffARead-only
Search AniList for staff members by name. Returns AniList IDs to use with get_staff. Each result's bio (description) is omitted unless you set includeDescription.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | 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. | |
| term | Yes | Staff member name (or part of it) to search for. | |
| perPage | No | Results per page (max 50, AniList's own ceiling — it silently clamps anything higher). | |
| includeDescription | No | Also fetch each result's full bio (`description`). Kept off by default — a bio can run to several thousand characters, and always including it would burn tokens on text you may not need; use get_staff for a single entry's full bio instead. |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds meaningful behavior beyond that: results' bios are omitted by default and must be opted into, which affects token cost and downstream calls.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences: purpose first, then the ID hand-off, then the one non-obvious default. No filler, and the most actionable constraint is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists and annotations cover safety, so the description needn't explain return shapes. Combined with rich parameter docs, an agent has everything needed to pick and call this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds real meaning by explaining that each result's `description` field is omitted unless `includeDescription` is set — context the schema states more tersely. It does not address pagination, but the schema covers that thoroughly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Search AniList for staff members by name') and immediately frames the output's purpose (IDs for get_staff). This cleanly distinguishes it from sibling get_staff and from search_character/search_user/search_studio.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent: use this to obtain IDs, then call get_staff, and use get_staff directly for a single entry's full bio. It gives a clear context but stops short of stating exclusions such as when not to search at all or how it compares to get_todays_birthdays-style browsing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_studioSearch studiosARead-only
Search/browse AniList's animation/production studios by name, when you want to see multiple candidates rather than take the closest match — get_studio's own name param already does this same fuzzy search directly and resolves a partial name on its own. Returns AniList IDs to use with get_studio.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | 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. | |
| term | Yes | Studio name (or part of it) to search for. | |
| perPage | No | Results per page (max 50, AniList's own ceiling — it silently clamps anything higher). |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds non-obvious workflow context by stating the output is AniList IDs meant to be fed into get_studio, which is genuine chaining guidance beyond the structured fields. Pagination limits are left entirely to the schema, which documents them thoroughly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action and scope, then the sibling disambiguation. The dense phrasing about get_studio's `name` param earns its length because it prevents a redundant call.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Read-only annotations cover safety, an output schema exists, parameters are fully documented, and the description supplies the sibling routing and the downstream chaining hint. Nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and all three parameters carry detailed descriptions, including page-depth limits and the perPage clamp, so the baseline is 3. The description only implies that `term` is a fuzzy partial match; it adds no syntax or format detail the schema doesn't already supply.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Search/browse AniList's animation/production studios by name') and immediately distinguishes itself from get_studio by framing the use case as seeing multiple candidates rather than resolving a single closest match. An agent can tell the two apart without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit when-to-use ('when you want to see multiple candidates rather than take the closest match') and names the alternative, get_studio, along with the fact that its `name` param already does the same fuzzy resolution. This is exactly the routing information an agent needs between two overlapping search tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_threadSearch forum threadsARead-only
Search/browse AniList's forum threads by title/body text and/or restrict to one category. Returns AniList thread IDs (with title/category for context) to use with get_thread, get_thread_comments, post_thread, or post_thread_comment.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | 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. | |
| term | No | Free-text search term (matches thread title/body); results are relevance-ranked. Omit to browse, most recently replied-to first. | |
| perPage | No | Results per page (max 50, AniList's own ceiling — it silently clamps anything higher). | |
| categoryId | No | Restrict to this forum category ID. Not independently listable by any tool — resolve one from a thread you've already read (its `categories` field) or from a forum URL like anilist.co/forum/recent?category=<id>. A wrong or nonexistent ID doesn't error, it silently filters to an empty result — indistinguishable from 'no threads in this category.' | |
| mediaCategoryId | No | Restrict to threads tagged with this AniList anime/manga ID (from search_media/get_media). A nonexistent ID errors as not found. |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint=true and openWorldHint=true already present, the description adds useful behavioral context: it returns AniList thread IDs plus title/category and is intended as a lookup step before get/post tools. It does not cover rate limits or auth needs, but it does not contradict the annotations and adds practical result-handling context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is two compact sentences, front-loaded with the core search/browse behavior and followed by return/usage context. Every sentence contributes useful selection or follow-up information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the full schema coverage, existing output schema, and read-only/open-world annotations, the description supplies everything an agent needs at a high level: what is searched, how browsing works, what is returned, and which tools consume the results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters are already fully documented. The description restates the high-level filtering model (title/body text and/or category), but adds little syntax or edge-case detail beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verbs (Search/browse) and a specific resource (AniList forum threads), plus scope qualifiers (title/body text, category restriction). It also distinguishes the result from direct thread retrieval by saying the returned IDs are meant for get_thread, get_thread_comments, post_thread, or post_thread_comment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly explains that omitting the term browses threads and that returned IDs feed specific follow-up tools, which gives strong usage context. It does not explicitly state when not to use this tool versus siblings like get_thread, but the path from search to retrieval is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_userSearch usersARead-only
Search AniList for users by username. Returns AniList user IDs to use with get_user_profile/get_full_user_info (profile), get_user_stats (statistics), get_user_list (their public list), or toggle_follow_user.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | 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. | |
| term | Yes | Username (or part of it) to search for. | |
| perPage | No | Results per page (max 50, AniList's own ceiling — it silently clamps anything higher). | |
| includeDescription | No | Also fetch each result's full bio (`about`). Kept off by default — a bio can run to several thousand characters, and always including it would burn tokens on text you may not need; use get_user_profile/get_full_user_info for a single entry's full bio instead. |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so safety and external-lookup behavior are covered without the description. The description adds the useful fact that results are IDs usable elsewhere, but says nothing about matching semantics (partial vs exact username), empty-result behavior, or result count — details the schema only partly touches via perPage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core action, then the return-value/consumer mapping. No filler, no restatement of the title, and every clause carries new information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, annotations cover the read-only/open-world profile, and the schema fully documents all four parameters. The description supplies the one thing none of those structured fields can: which sibling tools consume the returned IDs. Nothing an agent needs to invoke this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the parameter docs are unusually rich (page × perPage ceiling, perPage clamping at 50, includeDescription token trade-off). The description adds nothing about parameters, so the baseline 3 applies — the schema, not the description, is doing all the parameter work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Search AniList for users by username") and immediately says what comes back: AniList user IDs. It distinguishes itself from get_user_profile/get_user_stats/get_user_list/toggle_follow_user by positioning itself as the ID-resolution step that feeds those siblings, which is exactly the distinction an agent needs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly routes the agent: use this to obtain user IDs, then pass them to one of four named downstream tools, which is a concrete when-to-use rule. It lacks an explicit negative case (e.g. "if you already have a user ID, call get_user_profile directly"), so it falls one step short of full 5-level guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_anilist_redirectComplete AniList login with a pasted redirect URLA
Complete a login started with login_anilist by submitting the URL your browser was redirected to after clicking Approve (the one containing ?code=...). Use this when login didn't complete automatically — e.g. the server runs on a remote/headless host. Pass the whole URL, not just the code: its state is checked against the login attempt, so a bare code or a URL from another login is rejected. Fails if no login is in progress (e.g. the server restarted since login_anilist) — run login_anilist again.
| Name | Required | Description | Default |
|---|---|---|---|
| redirect_url | Yes | The full redirected URL (contains ?code=...&state=...). |
Output Schema
| Name | Required | Description |
|---|---|---|
| success | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing the state-validation mechanism, that a bare code or a URL from a different login is rejected, and that the call fails when no login is in progress. This is exactly the operational context an agent needs for a non-idempotent, stateful auth step, and it does not contradict the declared hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the action, then the precondition, then the failure mode and recovery. Every clause carries operational value; nothing is restated from the title or schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a single-parameter stateful auth step with an output schema, so return values need not be described. Preconditions, failure behavior, input format, and recovery path are all covered, leaving no gap an agent would need to guess at.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and already documents redirect_url, but the description adds real meaning the schema does not: the whole URL rather than just the code, and the reason (state is checked against the login attempt). That rationale is what prevents the most likely invocation error.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action (complete a login) tied to a specific sibling (login_anilist) and names the exact input artifact (the redirected URL containing ?code=...). An agent can immediately distinguish this from login_anilist without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use (login didn't complete automatically, remote/headless host), an explicit when-it-fails condition (no login in progress, e.g. server restart), and the remedy (run login_anilist again). The selection boundary against the sibling is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
toggle_favouriteFavourite/unfavourite an anime, manga, character, staff member, or studioA
[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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | AniList ID of that anime/manga/character/staff/studio. | |
| kind | Yes | Which kind of entity `id` refers to. |
Output Schema
| Name | Required | Description |
|---|---|---|
| favourites | Yes | |
| isFavourite | Yes | true: now a favourite; false: no longer one; null: undetermined (the toggled id isn't in the first 50 returned and the list continues). |
TDQS
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.
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.
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.
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.
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.
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.
toggle_follow_userFollow/unfollow a userA
[Requires login] Toggle following another AniList user from the authenticated user's account. Calling it again on the same user unfollows them.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | AniList numeric user ID to follow/unfollow — this mutation has no username form; resolve one via search_user or get_user_profile first. |
Output Schema
| Name | Required | Description |
|---|---|---|
| user | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already indicate a non-read-only, non-idempotent, open-world mutation. The description adds useful context beyond that by stating login is required and explaining that a second call on the same user unfollows them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly written sentences with no waste. The login requirement is front-loaded, and the toggle behavior is immediately clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter toggle mutation with annotations and an output schema, the definition is complete enough. Authentication, mutation behavior, and repeat-call semantics are all covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the schema itself explains that the id is a numeric AniList user ID with no username form. The description adds no parameter meaning beyond what the schema already provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: toggling following for another AniList user from the authenticated account. It is easy to distinguish from read-only user tools and from other mutations in the sibling list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly establishes the usage context: login is required, and the toggle applies to another AniList user from the authenticated account. It notes repeat-call behavior but does not explicitly name alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_list_entriesUpdate many entries on your AniList list at onceAIdempotent
[Requires login] Apply ONE set of values to many entries on the authenticated user's own AniList list in a single request — e.g. mark thirty titles COMPLETED, or set the same score on a batch. Use this instead of calling update_list_entry in a loop whenever the entries share the values you're writing; use update_list_entry when each entry needs DIFFERENT values (this tool cannot vary them per entry), or when you need to set customLists/advancedScores, which this tool deliberately doesn't accept. Takes list-ENTRY ids (not media ids) — get them from get_user_list. The whole call is all-or-nothing: if any id is unknown or isn't yours, AniList rejects the request and applies NOTHING, so there is never a half-applied batch to clean up — but the error does not say which id was at fault, so re-check the ids against get_user_list. Returns a summary (how many were updated, and their ids), not the full entries.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | New free-text notes, written to every listed entry (per AniList's own schema, capped at 6000 characters). | |
| score | No | New score out of 10 (decimals allowed), applied to every listed entry. Always on this scale regardless of the account's configured scoreFormat. | |
| repeat | No | New rewatch/reread count (per AniList's own schema, capped at 1000). | |
| status | No | New list status, applied to every listed entry. | |
| private | No | Hide/unhide every listed entry. | |
| priority | No | New list priority (higher = more important; per AniList's own schema, capped at 255). | |
| progress | No | New episodes watched / chapters read, applied to every listed entry — only meaningful when they genuinely share a progress value. | |
| startedAt | No | New start date for every listed entry. | |
| completedAt | No | New completion date for every listed entry. | |
| listEntryIds | Yes | The list ENTRY ids to update (not media ids), from get_user_list. Every id must exist and belong to you — one bad id fails the entire call without changing anything. | |
| progressVolumes | No | New volumes read (manga only). | |
| hiddenFromStatusLists | No | Hide/unhide every listed entry from the public status-grouped list views. |
Output Schema
| Name | Required | Description |
|---|---|---|
| updated | Yes | How many entries AniList reported as updated. |
| listEntryIds | Yes | The list-entry ids AniList reported as updated. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond annotations by disclosing the all-or-nothing atomicity contract, the fact that the error omits the offending id, and the recovery procedure (re-check ids against get_user_list). It also states the return shape. Minor gap: it doesn't restate that repeated calls with the same payload are harmless, though annotations already supply idempotentHint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the login requirement and the core batch semantics, and every sentence carries decision-relevant information (alternatives, exclusions, id type, failure mode). It is dense but long for a single paragraph; splitting the failure-mode guidance out would improve scanability slightly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 12-parameter nested-object mutation, it covers auth, id provenance, atomicity, excluded fields, alternatives and return summary — everything needed to call it correctly. An output schema exists, so the brief return summary is more than sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 earns more by emphasizing that listEntryIds are ENTRY ids not media ids and by flagging that per-entry variation is impossible — a semantic constraint the schema cannot express. It doesn't mention that omitted fields are left unchanged for most params (only the date schemas say this).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (apply one set of values), resource (many list entries on the authenticated user's AniList list) and batch scope in one request. The example ('mark thirty titles COMPLETED') makes the operation concrete and immediately distinguishes it from the single-entry sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit routing: use this instead of update_list_entry in a loop when entries share values; use update_list_entry when values differ per entry or when customLists/advancedScores are needed. It also states the login prerequisite and points to get_user_list as the id source.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_list_entryUpdate an entry on your AniList listAIdempotent
[Requires login] Update an existing entry on the authenticated user's own AniList list by its list-entry ID (NOT the media ID — get it from get_user_list, or from add_list_entry's response). Only set the fields you want to change. Updating MANY entries to the SAME values? Use update_list_entries instead — one request rather than one per entry. The response echoes what AniList actually stored, so check it rather than assuming the write landed verbatim. It includes customLists/advancedScores only when you set them — those are the fields AniList zeroes/replaces rather than merges; otherwise the echo is trimmed.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | New free-text notes (per AniList's own schema, capped at 6000 characters). | |
| score | No | New score out of 10 (decimals allowed), always on this scale regardless of the account's configured scoreFormat (set via update_user) — no conversion needed. | |
| repeat | No | New rewatch/reread count (per AniList's own schema, capped at 1000). | |
| status | No | New list status. | |
| private | No | Hide/unhide this entry from your public list. | |
| priority | No | New list priority (higher = more important; per AniList's own schema, capped at 255). | |
| progress | No | New episodes watched / chapters read. | |
| startedAt | No | New start date. | |
| completedAt | No | New completion date. | |
| customLists | No | New set of custom lists for this entry — REPLACES this entry's full set of enabled lists, not merged: naming only a subset silently turns OFF every other list this entry was previously filed under (confirmed live for add_list_entry's identical field; this tool writes the same underlying value), it doesn't leave them alone. Include every list name you want this entry to stay tagged with, not just the one you're changing. Also, the list must already exist on the account (update_user's `animeListOptions`/`mangaListOptions` `customLists`) — naming one that doesn't exist yet is silently a no-op, not an error. | |
| listEntryId | Yes | The list ENTRY id to update (not the media id). | |
| advancedScores | No | New per-category scores, keyed and error-checked the same way as add_list_entry (errors if advanced scoring is disabled, or a key doesn't match a configured category). Unlike this tool's other fields, this one is NOT a true partial update: any configured category you omit is set to 0, not left at its previous value — pass every category if you're only changing one. Also stored positionally, not by name — same read-time reinterpretation risk as add_list_entry's `advancedScores` if the account's category order (update_user's `advancedScoring`) is later renamed/reordered. | |
| progressVolumes | No | New volumes read (manga only). | |
| hiddenFromStatusLists | No | Hide/unhide this entry from the public status-grouped list views (e.g. 'Watching') while still counting it in statistics — distinct from `private`, which hides the entry entirely. |
Output Schema
| Name | Required | Description |
|---|---|---|
| entry | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnlyHint=false, idempotentHint=true, destructiveHint=false), and the description still adds real value: a login requirement, the fact that the response echoes what AniList actually stored rather than the request, and that customLists/advancedScores are replaced/zeroed rather than merged. No contradiction with the non-destructive, idempotent hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the login requirement and ID sourcing, then batch alternative, then response caveats. Every sentence carries information, though the final clause about the trimmed echo is densely packed and takes a second read.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers auth, ID provenance, partial-update behavior, bulk alternative, and known data-loss traps. An output schema exists so return values needn't be spelled out, but the description still explains the echo's shape; little is missing for a 14-parameter mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds the governing partial-update contract ('only set the fields you want to change') and flags the two exception fields whose semantics differ from the rest, which the per-parameter schema text alone makes easy to miss.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource+scope: updates an existing entry on the authenticated user's own list. It explicitly disambiguates the identifier ('list-entry ID, NOT the media ID') and names the bulk sibling update_list_entries, so an agent can route without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use ('only set the fields you want to change'), an explicit alternative with the selecting condition ('updating MANY entries to the SAME values? use update_list_entries — one request rather than one per entry'), and tells where to obtain the entry ID (get_user_list, add_list_entry response).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_userUpdate your AniList account settingsAIdempotent
[Requires login] Update settings on the authenticated user's own AniList account (about text, preferred title language, adult-content visibility, score format, notification/messaging preferences, anime/manga list options). Only set the fields you want to change — most fields are a true partial update (see notificationOptions/disabledListActivity below for two confirmed exceptions, PLUS animeListOptions/mangaListOptions's nested customLists — a third: that one field's ARRAY VALUE is a full replace even though its sibling fields and the other list type merge normally).
| Name | Required | Description | Default |
|---|---|---|---|
| about | No | New profile 'about' text. | |
| rowOrder | No | Internal list-table row ordering key — reads back from `mediaListOptions.rowOrder` in the profile tools/this tool's own response. Confirmed live: AniList validates this server-side and rejects an unrecognized value with a clear error ("The selected row order is invalid.") rather than silently ignoring it — unlike `profileColor` below. | |
| timezone | No | Display timezone as an offset, in AniList's own documented "-?HH:MM" format (e.g. "09:00", "-05:00"). Confirmed live that AniList validates this server-side and rejects a malformed value with a clear error ("The timezone format is invalid.") — whether a leading "+" is also accepted wasn't tested live (this tool has no way to explicitly clear timezone back to unset, so a wrong guess here risked an unrevertable change); this regex follows AniList's own literal grammar, which mentions only an optional leading minus. | |
| scoreFormat | No | Preferred list score format. It affects how scores DISPLAY on anilist.co only: every score crossing this server stays on its own documented scale whatever this is set to, so no conversion is needed on your end. A personal list-entry score and its `advancedScores` are 0-10 both on write (add_list_entry/update_list_entry) and on read (get_user_list, get_media's `mediaListEntry`); `averageScore`/`meanScore` and the search filters are 0-100. | |
| donatorBadge | No | Custom donator badge text, up to 24 characters per AniList's own schema (only takes effect on a donator account). | |
| profileColor | No | Profile accent color (name or hex). Confirmed live: AniList silently ignores an unrecognized value instead of erroring — the account's existing color is left unchanged, with no error surfaced and no way to detect the value was rejected other than re-checking with get_authorized_user. | |
| titleLanguage | No | Preferred title display language. | |
| animeListOptions | No | New anime-list display/scoring options — only the fields you set are changed (confirmed live: this is a partial merge, unlike add_list_entry's advancedScores). | |
| mangaListOptions | No | New manga-list display/scoring options — same partial-merge behavior as `animeListOptions` above. | |
| activityMergeTime | No | Minutes within which consecutive list activity posts get merged into one. Per AniList's own schema: 0 = never merge, 20160+ (2 weeks) = always merge. | |
| staffNameLanguage | No | Preferred staff/character name display language. | |
| airingNotifications | No | Whether to notify about new episode airings for anime on your list. | |
| displayAdultContent | No | Whether to show adult content in search/browse. | |
| notificationOptions | No | ALL 20 notification types, every time — confirmed live this is a full replace, not a partial merge: AniList silently drops every type you don't list (not just resets it to default, removes it) with no error. Fetch the account's current list first (get_authorized_user's `options.notificationOptions`) and resend it in full with just your changes applied. | |
| disabledListActivity | No | ALL 6 list statuses, every time — confirmed live: AniList rejects this with a 400 error if any status is missing ("Incorrect number of disabled list activity options"), it's not a partial per-status update. Fetch the current list first (get_authorized_user's `options.disabledListActivity`) and resend it in full with just your changes applied. | |
| restrictMessagesToFollowing | No | Only allow message activity from users you follow. |
Output Schema
| Name | Required | Description |
|---|---|---|
| user | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the annotations: it discloses that notificationOptions and disabledListActivity are full replaces that silently delete omitted entries, that customLists' array value is a full replace while sibling fields merge, that advancedScoring order is positionally load-bearing and reorders silently reinterpret existing scores, and that profileColor is silently ignored whereas rowOrder/timezone error. That is exactly the hidden-behavior context annotations cannot carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The opening paragraph is a single run-on sentence whose exception list becomes self-interrupting ('...two confirmed exceptions, PLUS ... — a third: that one field's ARRAY VALUE is a full replace even though...'), which is hard to parse on first read. The information is valuable, but the nesting costs clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 16-parameter tool with nested objects, an output schema, and annotations, the description supplies the auth prerequisite, the partial-vs-full-replace model, and pre-read guidance for the risky fields. The only shortfall is that the exception enumeration is tangled enough to risk an agent missing which fields are replaces.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 real value by classifying which parameters behave as partial merges versus full replacements and giving recovery steps ('fetch the current list first and resend it in full'). It does not add much for the plain scalar fields (about, rowOrder, timezone), which are already fully documented in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (update), an explicit resource (settings on the authenticated user's own AniList account), and enumerates the setting families covered (about text, title language, adult content, score format, notifications, list options). That scope, plus '[Requires login]' and 'own account', cleanly separates it from sibling mutations like update_list_entry or toggle_follow_user.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Only set the fields you want to change' tells the agent how to invoke it, and the auth precondition is stated up front. It also names the read tool to consult before touching replace-style fields (get_authorized_user), but it never states when *not* to use this tool or points to any alternative for account settings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
50 tool updates
v0.11.0- Changed
add_list_entry6 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / completedAt / properties / year / descriptionAdded value: +"Required — omit the whole date to leave it unchanged." - added
Input schema / properties / completedAt / requiredAdded value: +[ + "year" +] - added
Input schema / properties / startedAt / properties / year / descriptionAdded value: +"Required — omit the whole date to leave it unchanged." - added
Input schema / properties / startedAt / requiredAdded value: +[ + "year" +] - changed
Output schema / properties / entry / properties / advancedScores / descriptionPrevious value: -"Per-category advanced scores as AniList actually stores them — an untyped value (the write side takes a plain {category: score} map via add_list_entry/update_list_entry's `advancedScores`, but the echoed read-back shape isn't guaranteed to match it)."New value: +"Per-category advanced scores as AniList actually stores them, as a {category: score} map on the same 0-10 scale as `score` (so a value read here can be passed straight back to add_list_entry/update_list_entry's `advancedScores`). Every configured category is present — AniList stores 0 for any not set."
- Changed
delete_activity1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
delete_thread1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
delete_thread_comment1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
get_activity1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
get_anime_schedule5 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / airingAfterAdded 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" +} - added
Input schema / properties / airingBeforeAdded 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" +} - removed
Input schema / properties / notYetAired / defaultRemoved value: -true - changed
Input schema / properties / notYetAired / descriptionPrevious 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."
- Changed
get_authorized_user3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Output schema / $defsRemoved value: -{ - "__schema0": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "number" - }, - { - "type": "boolean" - }, - { - "type": "null" - }, - { - "items": { - "$ref": "#/$defs/__schema0" - }, - "type": "array" - }, - { - "additionalProperties": { - "$ref": "#/$defs/__schema0" - }, - "propertyNames": { - "type": "string" - }, - "type": "object" - } - ] - } -} - changed
Output schema / properties / user / properties / mediaListOptions / anyOfPrevious value: -[ - { - "additionalProperties": {}, - "properties": { - "animeList": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "advancedScoring": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "advancedScoringEnabled": { - "type": [ - "boolean", - "null" - ] - }, - "customLists": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "sectionOrder": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "splitCompletedSectionByFormat": { - "type": [ - "boolean", - "null" - ] - }, - "theme": { - "anyOf": [ - { - "$ref": "#/$defs/__schema0" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "mangaList": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "advancedScoring": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "advancedScoringEnabled": { - "type": [ - "boolean", - "null" - ] - }, - "customLists": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "sectionOrder": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "splitCompletedSectionByFormat": { - "type": [ - "boolean", - "null" - ] - }, - "theme": { - "anyOf": [ - { - "$ref": "#/$defs/__schema0" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "rowOrder": { - "type": [ - "string", - "null" - ] - }, - "scoreFormat": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": {}, + "properties": { + "animeList": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "advancedScoring": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "advancedScoringEnabled": { + "type": [ + "boolean", + "null" + ] + }, + "customLists": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "sectionOrder": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "splitCompletedSectionByFormat": { + "type": [ + "boolean", + "null" + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "mangaList": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "advancedScoring": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "advancedScoringEnabled": { + "type": [ + "boolean", + "null" + ] + }, + "customLists": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "sectionOrder": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "splitCompletedSectionByFormat": { + "type": [ + "boolean", + "null" + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "rowOrder": { + "type": [ + "string", + "null" + ] + }, + "scoreFormat": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + { + "type": "null" + } +]
- Changed
get_character6 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / onListAdded 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" +} - added
Input schema / properties / pageAdded 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" +} - added
Input schema / properties / perPageAdded value: +{ + "default": 25, + "description": "Results per page (max 25, AniList's own ceiling — it silently clamps anything higher).", + "exclusiveMinimum": 0, + "maximum": 25, + "type": "integer" +} - added
Input schema / properties / typeAdded value: +{ + "description": "Only return anime (ANIME) or only manga (MANGA) in `media` — filtered by AniList before pagination, so pages stay full. Omit for both.", + "enum": [ + "ANIME", + "MANGA" + ], + "type": "string" +} - changed
Output schema / properties / character / properties / media / anyOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "edges": { - "items": { - "additionalProperties": {}, - "properties": { - "characterRole": { - "type": [ - "string", - "null" - ] - }, - "node": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "format": { - "type": [ - "string", - "null" - ] - }, - "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": { - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - } - }, - "required": [ - "edges" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "edges": { + "items": { + "additionalProperties": {}, + "properties": { + "characterRole": { + "type": [ + "string", + "null" + ] + }, + "node": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "format": { + "type": [ + "string", + "null" + ] + }, + "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": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "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" + } + }, + "required": [ + "edges" + ], + "type": "object" + }, + { + "type": "null" + } +]
- Changed
get_full_user_info4 fields changed- added
Input schema / additionalPropertiesAdded value: +false - changed
Input schema / properties / user / descriptionPrevious value: -"AniList user ID, or username."New value: +"AniList user ID (as a number — a digit string is read as a username), or username." - removed
Output schema / $defsRemoved value: -{ - "__schema0": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "number" - }, - { - "type": "boolean" - }, - { - "type": "null" - }, - { - "items": { - "$ref": "#/$defs/__schema0" - }, - "type": "array" - }, - { - "additionalProperties": { - "$ref": "#/$defs/__schema0" - }, - "propertyNames": { - "type": "string" - }, - "type": "object" - } - ] - } -} - changed
Output schema / properties / user / properties / mediaListOptions / anyOfPrevious value: -[ - { - "additionalProperties": {}, - "properties": { - "animeList": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "advancedScoring": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "advancedScoringEnabled": { - "type": [ - "boolean", - "null" - ] - }, - "customLists": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "sectionOrder": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "splitCompletedSectionByFormat": { - "type": [ - "boolean", - "null" - ] - }, - "theme": { - "anyOf": [ - { - "$ref": "#/$defs/__schema0" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "mangaList": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "advancedScoring": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "advancedScoringEnabled": { - "type": [ - "boolean", - "null" - ] - }, - "customLists": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "sectionOrder": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "splitCompletedSectionByFormat": { - "type": [ - "boolean", - "null" - ] - }, - "theme": { - "anyOf": [ - { - "$ref": "#/$defs/__schema0" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "rowOrder": { - "type": [ - "string", - "null" - ] - }, - "scoreFormat": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": {}, + "properties": { + "animeList": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "advancedScoring": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "advancedScoringEnabled": { + "type": [ + "boolean", + "null" + ] + }, + "customLists": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "sectionOrder": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "splitCompletedSectionByFormat": { + "type": [ + "boolean", + "null" + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "mangaList": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "advancedScoring": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "advancedScoringEnabled": { + "type": [ + "boolean", + "null" + ] + }, + "customLists": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "sectionOrder": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "splitCompletedSectionByFormat": { + "type": [ + "boolean", + "null" + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "rowOrder": { + "type": [ + "string", + "null" + ] + }, + "scoreFormat": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + { + "type": "null" + } +]
- Changed
get_genres1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
get_media2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / properties / media / anyOfPrevious value: -[ - { - "additionalProperties": {}, - "properties": { - "averageScore": { - "anyOf": [ - { - "minimum": 0, - "type": "number" - }, - { - "type": "null" - } - ], - "description": "The weighted community rating across all AniList users, on AniList's 0-100 community scale. It stays 0-100 whatever the viewer's configured scoreFormat is, since that setting only changes how anilist.co displays scores. This is NOT the 0-10 scale a personal list-entry `score` uses." - }, - "chapters": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "countryOfOrigin": { - "type": [ - "string", - "null" - ] - }, - "coverImage": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "large": { - "anyOf": [ - { - "format": "uri", - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "description": { - "type": [ - "string", - "null" - ] - }, - "duration": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "endDate": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "day": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "month": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "year": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "episodes": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "externalLinks": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "icon": { - "type": [ - "string", - "null" - ] - }, - "id": { - "exclusiveMinimum": 0, - "maximum": 2147483647, - "type": "integer" - }, - "isDisabled": { - "type": [ - "boolean", - "null" - ] - }, - "language": { - "type": [ - "string", - "null" - ] - }, - "notes": { - "type": [ - "string", - "null" - ] - }, - "site": { - "type": [ - "string", - "null" - ] - }, - "type": { - "type": [ - "string", - "null" - ] - }, - "url": { - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "format": { - "type": [ - "string", - "null" - ] - }, - "genres": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "id": { - "exclusiveMinimum": 0, - "maximum": 2147483647, - "type": "integer" - }, - "idMal": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "isAdult": { - "type": [ - "boolean", - "null" - ] - }, - "isFavourite": { - "description": "[Requires login] Whether this title 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.", - "type": [ - "boolean", - "null" - ] - }, - "mediaListEntry": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "advancedScores": { - "anyOf": [ - { - "$ref": "#/$defs/__schema0" - }, - { - "type": "null" - } - ] - }, - "completedAt": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "day": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "month": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "year": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "createdAt": { - "anyOf": [ - { - "minimum": 0, - "type": "number" - }, - { - "type": "null" - } - ] - }, - "customLists": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "enabled": { - "type": [ - "boolean", - "null" - ] - }, - "name": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "hiddenFromStatusLists": { - "type": [ - "boolean", - "null" - ] - }, - "id": { - "exclusiveMinimum": 0, - "maximum": 2147483647, - "type": "integer" - }, - "notes": { - "type": [ - "string", - "null" - ] - }, - "priority": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "private": { - "type": [ - "boolean", - "null" - ] - }, - "progress": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "progressVolumes": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "repeat": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "score": { - "anyOf": [ - { - "minimum": 0, - "type": "number" - }, - { - "type": "null" - } - ], - "description": "The caller's own score for this title, on a 0-10 scale (decimals allowed). It stays 0-10 on every account whatever the configured scoreFormat is, and matches the scale add_list_entry/update_list_entry take on write. This is NOT the 0-100 scale `averageScore`/`meanScore`/search_media's `averageScore_greater` filter use." - }, - "startedAt": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "day": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "month": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "year": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "status": { - "type": [ - "string", - "null" - ] - }, - "updatedAt": { - "anyOf": [ - { - "minimum": 0, - "type": "number" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ], - "description": "Whether this title is on the caller's own list — viewer-relative, so it only resolves when logged in; null both when logged out and when the title just isn't on the list (the two cases aren't distinguishable from this field alone)." - }, - "nextAiringEpisode": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "airingAt": { - "anyOf": [ - { - "minimum": 0, - "type": "number" - }, - { - "type": "null" - } - ] - }, - "episode": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "id": { - "exclusiveMinimum": 0, - "maximum": 2147483647, - "type": "integer" - }, - "timeUntilAiring": { - "type": [ - "number", - "null" - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "popularity": { - "anyOf": [ - { - "minimum": 0, - "type": "number" - }, - { - "type": "null" - } - ] - }, - "rankings": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "allTime": { - "type": [ - "boolean", - "null" - ] - }, - "context": { - "type": [ - "string", - "null" - ] - }, - "format": { - "type": [ - "string", - "null" - ] - }, - "rank": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "season": { - "type": [ - "string", - "null" - ] - }, - "type": { - "type": [ - "string", - "null" - ] - }, - "year": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "season": { - "type": [ - "string", - "null" - ] - }, - "seasonYear": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "siteUrl": { - "anyOf": [ - { - "format": "uri", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "startDate": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "day": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "month": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "year": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "status": { - "type": [ - "string", - "null" - ] - }, - "streamingEpisodes": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "site": { - "type": [ - "string", - "null" - ] - }, - "thumbnail": { - "type": [ - "string", - "null" - ] - }, - "title": { - "type": [ - "string", - "null" - ] - }, - "url": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "tags": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "isMediaSpoiler": { - "type": [ - "boolean", - "null" - ] - }, - "name": { - "type": "string" - }, - "rank": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "title": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "english": { - "type": [ - "string", - "null" - ] - }, - "native": { - "type": [ - "string", - "null" - ] - }, - "romaji": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "trailer": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "id": { - "type": [ - "string", - "null" - ] - }, - "site": { - "type": [ - "string", - "null" - ] - }, - "thumbnail": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "type": { - "type": [ - "string", - "null" - ] - }, - "volumes": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "items": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "averageScore": { - "anyOf": [ - { - "minimum": 0, - "type": "number" - }, - { - "type": "null" - } - ], - "description": "The weighted community rating across all AniList users, on AniList's 0-100 community scale. It stays 0-100 whatever the viewer's configured scoreFormat is, since that setting only changes how anilist.co displays scores. This is NOT the 0-10 scale a personal list-entry `score` uses." - }, - "chapters": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "countryOfOrigin": { - "type": [ - "string", - "null" - ] - }, - "coverImage": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "large": { - "anyOf": [ - { - "format": "uri", - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "description": { - "type": [ - "string", - "null" - ] - }, - "duration": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "endDate": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "day": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "month": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "year": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "episodes": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "externalLinks": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "icon": { - "type": [ - "string", - "null" - ] - }, - "id": { - "exclusiveMinimum": 0, - "maximum": 2147483647, - "type": "integer" - }, - "isDisabled": { - "type": [ - "boolean", - "null" - ] - }, - "language": { - "type": [ - "string", - "null" - ] - }, - "notes": { - "type": [ - "string", - "null" - ] - }, - "site": { - "type": [ - "string", - "null" - ] - }, - "type": { - "type": [ - "string", - "null" - ] - }, - "url": { - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "format": { - "type": [ - "string", - "null" - ] - }, - "genres": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "id": { - "exclusiveMinimum": 0, - "maximum": 2147483647, - "type": "integer" - }, - "idMal": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "isAdult": { - "type": [ - "boolean", - "null" - ] - }, - "isFavourite": { - "description": "[Requires login] Whether this title 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.", - "type": [ - "boolean", - "null" - ] - }, - "mediaListEntry": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "advancedScores": { - "anyOf": [ - { - "$ref": "#/$defs/__schema0" - }, - { - "type": "null" - } - ] - }, - "completedAt": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "day": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "month": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "year": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "createdAt": { - "anyOf": [ - { - "minimum": 0, - "type": "number" - }, - { - "type": "null" - } - ] - }, - "customLists": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "enabled": { - "type": [ - "boolean", - "null" - ] - }, - "name": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "hiddenFromStatusLists": { - "type": [ - "boolean", - "null" - ] - }, - "id": { - "exclusiveMinimum": 0, - "maximum": 2147483647, - "type": "integer" - }, - "notes": { - "type": [ - "string", - "null" - ] - }, - "priority": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "private": { - "type": [ - "boolean", - "null" - ] - }, - "progress": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "progressVolumes": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "repeat": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "score": { - "anyOf": [ - { - "minimum": 0, - "type": "number" - }, - { - "type": "null" - } - ], - "description": "The caller's own score for this title, on a 0-10 scale (decimals allowed). It stays 0-10 on every account whatever the configured scoreFormat is, and matches the scale add_list_entry/update_list_entry take on write. This is NOT the 0-100 scale `averageScore`/`meanScore`/search_media's `averageScore_greater` filter use." - }, - "startedAt": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "day": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "month": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "year": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "status": { - "type": [ - "string", - "null" - ] - }, - "updatedAt": { - "anyOf": [ - { - "minimum": 0, - "type": "number" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ], - "description": "Whether this title is on the caller's own list — viewer-relative, so it only resolves when logged in; null both when logged out and when the title just isn't on the list (the two cases aren't distinguishable from this field alone)." - }, - "nextAiringEpisode": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "airingAt": { - "anyOf": [ - { - "minimum": 0, - "type": "number" - }, - { - "type": "null" - } - ] - }, - "episode": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "id": { - "exclusiveMinimum": 0, - "maximum": 2147483647, - "type": "integer" - }, - "timeUntilAiring": { - "type": [ - "number", - "null" - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "popularity": { - "anyOf": [ - { - "minimum": 0, - "type": "number" - }, - { - "type": "null" - } - ] - }, - "rankings": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "allTime": { - "type": [ - "boolean", - "null" - ] - }, - "context": { - "type": [ - "string", - "null" - ] - }, - "format": { - "type": [ - "string", - "null" - ] - }, - "rank": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "season": { - "type": [ - "string", - "null" - ] - }, - "type": { - "type": [ - "string", - "null" - ] - }, - "year": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "season": { - "type": [ - "string", - "null" - ] - }, - "seasonYear": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "siteUrl": { - "anyOf": [ - { - "format": "uri", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "startDate": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "day": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "month": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "year": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "status": { - "type": [ - "string", - "null" - ] - }, - "streamingEpisodes": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "site": { - "type": [ - "string", - "null" - ] - }, - "thumbnail": { - "type": [ - "string", - "null" - ] - }, - "title": { - "type": [ - "string", - "null" - ] - }, - "url": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "tags": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "isMediaSpoiler": { - "type": [ - "boolean", - "null" - ] - }, - "name": { - "type": "string" - }, - "rank": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "title": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "english": { - "type": [ - "string", - "null" - ] - }, - "native": { - "type": [ - "string", - "null" - ] - }, - "romaji": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "trailer": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "id": { - "type": [ - "string", - "null" - ] - }, - "site": { - "type": [ - "string", - "null" - ] - }, - "thumbnail": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "type": { - "type": [ - "string", - "null" - ] - }, - "volumes": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "type": "array" - } -]New value: +[ + { + "additionalProperties": {}, + "properties": { + "averageScore": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ], + "description": "The weighted community rating across all AniList users, on AniList's 0-100 community scale. It stays 0-100 whatever the viewer's configured scoreFormat is, since that setting only changes how anilist.co displays scores. This is NOT the 0-10 scale a personal list-entry `score` uses." + }, + "chapters": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "countryOfOrigin": { + "type": [ + "string", + "null" + ] + }, + "coverImage": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "large": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "description": { + "type": [ + "string", + "null" + ] + }, + "duration": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "endDate": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "day": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "month": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "year": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "episodes": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "externalLinks": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "icon": { + "type": [ + "string", + "null" + ] + }, + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "isDisabled": { + "type": [ + "boolean", + "null" + ] + }, + "language": { + "type": [ + "string", + "null" + ] + }, + "notes": { + "type": [ + "string", + "null" + ] + }, + "site": { + "type": [ + "string", + "null" + ] + }, + "type": { + "type": [ + "string", + "null" + ] + }, + "url": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "format": { + "type": [ + "string", + "null" + ] + }, + "genres": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "idMal": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "isAdult": { + "type": [ + "boolean", + "null" + ] + }, + "isFavourite": { + "description": "[Requires login] Whether this title 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.", + "type": [ + "boolean", + "null" + ] + }, + "mediaListEntry": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "advancedScores": { + "anyOf": [ + { + "$ref": "#/$defs/__schema0" + }, + { + "type": "null" + } + ], + "description": "Per-category advanced scores, a {category: score} map on the same 0-10 scale as `score`. 0 for a category never set." + }, + "completedAt": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "day": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "month": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "year": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "createdAt": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + }, + "customLists": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "enabled": { + "type": [ + "boolean", + "null" + ] + }, + "name": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "hiddenFromStatusLists": { + "type": [ + "boolean", + "null" + ] + }, + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "notes": { + "type": [ + "string", + "null" + ] + }, + "priority": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "private": { + "type": [ + "boolean", + "null" + ] + }, + "progress": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "progressVolumes": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "repeat": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "score": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ], + "description": "The caller's own score for this title, on a 0-10 scale (decimals allowed). It stays 0-10 on every account whatever the configured scoreFormat is, and matches the scale add_list_entry/update_list_entry take on write. This is NOT the 0-100 scale `averageScore`/`meanScore`/search_media's `averageScore_greater` filter use." + }, + "startedAt": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "day": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "month": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "year": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "status": { + "type": [ + "string", + "null" + ] + }, + "updatedAt": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Whether this title is on the caller's own list — viewer-relative, so it only resolves when logged in; null both when logged out and when the title just isn't on the list (the two cases aren't distinguishable from this field alone)." + }, + "nextAiringEpisode": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "airingAt": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + }, + "episode": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "timeUntilAiring": { + "type": [ + "number", + "null" + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "popularity": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + }, + "rankings": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "allTime": { + "type": [ + "boolean", + "null" + ] + }, + "context": { + "type": [ + "string", + "null" + ] + }, + "format": { + "type": [ + "string", + "null" + ] + }, + "rank": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "season": { + "type": [ + "string", + "null" + ] + }, + "type": { + "type": [ + "string", + "null" + ] + }, + "year": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "season": { + "type": [ + "string", + "null" + ] + }, + "seasonYear": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "siteUrl": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "startDate": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "day": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "month": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "year": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "status": { + "type": [ + "string", + "null" + ] + }, + "streamingEpisodes": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "site": { + "type": [ + "string", + "null" + ] + }, + "thumbnail": { + "type": [ + "string", + "null" + ] + }, + "title": { + "type": [ + "string", + "null" + ] + }, + "url": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "tags": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "isMediaSpoiler": { + "type": [ + "boolean", + "null" + ] + }, + "name": { + "type": "string" + }, + "rank": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "title": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "english": { + "type": [ + "string", + "null" + ] + }, + "native": { + "type": [ + "string", + "null" + ] + }, + "romaji": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "trailer": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "id": { + "type": [ + "string", + "null" + ] + }, + "site": { + "type": [ + "string", + "null" + ] + }, + "thumbnail": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "type": { + "type": [ + "string", + "null" + ] + }, + "volumes": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "items": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "averageScore": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ], + "description": "The weighted community rating across all AniList users, on AniList's 0-100 community scale. It stays 0-100 whatever the viewer's configured scoreFormat is, since that setting only changes how anilist.co displays scores. This is NOT the 0-10 scale a personal list-entry `score` uses." + }, + "chapters": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "countryOfOrigin": { + "type": [ + "string", + "null" + ] + }, + "coverImage": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "large": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "description": { + "type": [ + "string", + "null" + ] + }, + "duration": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "endDate": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "day": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "month": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "year": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "episodes": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "externalLinks": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "icon": { + "type": [ + "string", + "null" + ] + }, + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "isDisabled": { + "type": [ + "boolean", + "null" + ] + }, + "language": { + "type": [ + "string", + "null" + ] + }, + "notes": { + "type": [ + "string", + "null" + ] + }, + "site": { + "type": [ + "string", + "null" + ] + }, + "type": { + "type": [ + "string", + "null" + ] + }, + "url": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "format": { + "type": [ + "string", + "null" + ] + }, + "genres": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "idMal": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "isAdult": { + "type": [ + "boolean", + "null" + ] + }, + "isFavourite": { + "description": "[Requires login] Whether this title 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.", + "type": [ + "boolean", + "null" + ] + }, + "mediaListEntry": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "advancedScores": { + "anyOf": [ + { + "$ref": "#/$defs/__schema0" + }, + { + "type": "null" + } + ], + "description": "Per-category advanced scores, a {category: score} map on the same 0-10 scale as `score`. 0 for a category never set." + }, + "completedAt": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "day": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "month": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "year": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "createdAt": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + }, + "customLists": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "enabled": { + "type": [ + "boolean", + "null" + ] + }, + "name": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "hiddenFromStatusLists": { + "type": [ + "boolean", + "null" + ] + }, + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "notes": { + "type": [ + "string", + "null" + ] + }, + "priority": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "private": { + "type": [ + "boolean", + "null" + ] + }, + "progress": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "progressVolumes": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "repeat": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "score": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ], + "description": "The caller's own score for this title, on a 0-10 scale (decimals allowed). It stays 0-10 on every account whatever the configured scoreFormat is, and matches the scale add_list_entry/update_list_entry take on write. This is NOT the 0-100 scale `averageScore`/`meanScore`/search_media's `averageScore_greater` filter use." + }, + "startedAt": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "day": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "month": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "year": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "status": { + "type": [ + "string", + "null" + ] + }, + "updatedAt": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Whether this title is on the caller's own list — viewer-relative, so it only resolves when logged in; null both when logged out and when the title just isn't on the list (the two cases aren't distinguishable from this field alone)." + }, + "nextAiringEpisode": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "airingAt": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + }, + "episode": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "timeUntilAiring": { + "type": [ + "number", + "null" + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "popularity": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + }, + "rankings": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "allTime": { + "type": [ + "boolean", + "null" + ] + }, + "context": { + "type": [ + "string", + "null" + ] + }, + "format": { + "type": [ + "string", + "null" + ] + }, + "rank": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "season": { + "type": [ + "string", + "null" + ] + }, + "type": { + "type": [ + "string", + "null" + ] + }, + "year": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "season": { + "type": [ + "string", + "null" + ] + }, + "seasonYear": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "siteUrl": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "startDate": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "day": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "month": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "year": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "status": { + "type": [ + "string", + "null" + ] + }, + "streamingEpisodes": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "site": { + "type": [ + "string", + "null" + ] + }, + "thumbnail": { + "type": [ + "string", + "null" + ] + }, + "title": { + "type": [ + "string", + "null" + ] + }, + "url": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "tags": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "isMediaSpoiler": { + "type": [ + "boolean", + "null" + ] + }, + "name": { + "type": "string" + }, + "rank": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "title": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "english": { + "type": [ + "string", + "null" + ] + }, + "native": { + "type": [ + "string", + "null" + ] + }, + "romaji": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "trailer": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "id": { + "type": [ + "string", + "null" + ] + }, + "site": { + "type": [ + "string", + "null" + ] + }, + "thumbnail": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "type": { + "type": [ + "string", + "null" + ] + }, + "volumes": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "type": "array" + } +]
- Changed
get_media_characters5 fields changed- added
Input schema / additionalPropertiesAdded value: +false - changed
Input schema / properties / perPage / descriptionPrevious value: -"Results per page (max 50, AniList's own ceiling — it silently clamps anything higher)."New value: +"Results per page (max 25, AniList's own ceiling — it silently clamps anything higher)." - changed
Input schema / properties / perPage / maximumPrevious value: -50New value: +25 - added
Input schema / properties / roleAdded value: +{ + "description": "Only return characters with this role. Omit for every role.", + "enum": [ + "MAIN", + "SUPPORTING", + "BACKGROUND" + ], + "type": "string" +} - added
Input schema / properties / voiceActorLanguageAdded value: +{ + "description": "Only return voice actors for this dub language (e.g. JAPANESE for the original cast, ENGLISH for the English dub). Omit for every language — AniList then returns all dubs per character (8 for most of Attack on Titan's main cast), which multiplies the response size.", + "enum": [ + "JAPANESE", + "ENGLISH", + "KOREAN", + "ITALIAN", + "SPANISH", + "PORTUGUESE", + "FRENCH", + "GERMAN", + "HEBREW", + "HUNGARIAN" + ], + "type": "string" +}
- Changed
get_media_relations1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
get_media_reviews3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - changed
Input schema / properties / perPage / descriptionPrevious value: -"Results per page (max 50, AniList's own ceiling — it silently clamps anything higher)."New value: +"Results per page (max 25, AniList's own ceiling — it silently clamps anything higher)." - changed
Input schema / properties / perPage / maximumPrevious value: -50New value: +25
- Changed
get_media_staff3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - changed
Input schema / properties / perPage / descriptionPrevious value: -"Results per page (max 50, AniList's own ceiling — it silently clamps anything higher)."New value: +"Results per page (max 25, AniList's own ceiling — it silently clamps anything higher)." - changed
Input schema / properties / perPage / maximumPrevious value: -50New value: +25
- Changed
get_media_statistics1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
get_media_tags1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
get_notifications2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / type_in / minItemsAdded value: +1
- Changed
get_recommendation1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
get_recommendations_for_media5 fields changed- added
Input schema / additionalPropertiesAdded value: +false - changed
Input schema / properties / excludeInList / descriptionPrevious value: -"[Requires login] Omit recommendations already on your own list. Filtered after fetching this page, so a page can come back with fewer than `perPage` results — not an error, just fewer new ones on that page. No-ops (nothing filtered) if not logged in, since there's no list to check against."New value: +"[Requires login] Omit recommendations already on your own list. Filtered after fetching this page, so a page can come back with fewer than `perPage` results — not an error, just fewer new ones on that page. Errors if not logged in, since there's no list to check against." - changed
Input schema / properties / perPage / descriptionPrevious value: -"Results per page (max 50, AniList's own ceiling — it silently clamps anything higher)."New value: +"Results per page (max 25, AniList's own ceiling — it silently clamps anything higher)." - changed
Input schema / properties / perPage / maximumPrevious value: -50New value: +25 - changed
Output schema / properties / recommendations / properties / nodes / anyOfPrevious value: -[ - { - "items": { - "additionalProperties": {}, - "properties": { - "id": { - "exclusiveMinimum": 0, - "maximum": 2147483647, - "type": "integer" - }, - "mediaRecommendation": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "id": { - "exclusiveMinimum": 0, - "maximum": 2147483647, - "type": "integer" - }, - "mediaListEntry": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "id": { - "exclusiveMinimum": 0, - "maximum": 2147483647, - "type": "integer" - }, - "status": { - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ], - "description": "Whether this recommended title is on the caller's own list — viewer-relative, so it only resolves when logged in; null both when logged out and when the title just isn't on the list (the two cases aren't distinguishable from this field alone)." - }, - "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" - } - ] - }, - "rating": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Net rating (RATE_UP minus RATE_DOWN votes across all users), not the caller's own." - }, - "userRating": { - "anyOf": [ - { - "enum": [ - "NO_RATING", - "RATE_UP", - "RATE_DOWN" - ], - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "items": { + "additionalProperties": {}, + "properties": { + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "mediaRecommendation": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "averageScore": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ], + "description": "The weighted community rating across all AniList users, on AniList's 0-100 community scale. It stays 0-100 whatever the viewer's configured scoreFormat is, since that setting only changes how anilist.co displays scores. This is NOT the 0-10 scale a personal list-entry `score` uses." + }, + "genres": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "mediaListEntry": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "status": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Whether this recommended title is on the caller's own list — viewer-relative, so it only resolves when logged in; null both when logged out and when the title just isn't on the list (the two cases aren't distinguishable from this field alone)." + }, + "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" + } + ] + }, + "rating": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Net rating (RATE_UP minus RATE_DOWN votes across all users), not the caller's own." + }, + "userRating": { + "anyOf": [ + { + "enum": [ + "NO_RATING", + "RATE_UP", + "RATE_DOWN" + ], + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } +]
- Changed
get_site_statistics1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
get_staff8 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / creditsAdded value: +{ + "default": "production", + "description": "Which filmography to return: \"production\" (`staffMedia` — director, writer, theme song, …) or \"voice\" (`characterMedia` — voice-acting roles). One per call.", + "enum": [ + "production", + "voice" + ], + "type": "string" +} - added
Input schema / properties / onListAdded 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" +} - added
Input schema / properties / pageAdded 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" +} - added
Input schema / properties / perPageAdded value: +{ + "default": 25, + "description": "Results per page (max 25, AniList's own ceiling — it silently clamps anything higher).", + "exclusiveMinimum": 0, + "maximum": 25, + "type": "integer" +} - added
Input schema / properties / typeAdded value: +{ + "description": "Only return anime (ANIME) or only manga (MANGA) in `staffMedia` — filtered by AniList before pagination, so pages stay full. Omit for both.", + "enum": [ + "ANIME", + "MANGA" + ], + "type": "string" +} - added
Output schema / properties / staff / properties / characterMediaAdded value: +{ + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "edges": { + "items": { + "additionalProperties": {}, + "properties": { + "characterRole": { + "type": [ + "string", + "null" + ] + }, + "characters": { + "anyOf": [ + { + "items": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "name": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "full": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "node": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "format": { + "type": [ + "string", + "null" + ] + }, + "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": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "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" + } + }, + "required": [ + "edges" + ], + "type": "object" + }, + { + "type": "null" + } + ] +} - changed
Output schema / properties / staff / properties / staffMedia / anyOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "edges": { - "items": { - "additionalProperties": {}, - "properties": { - "node": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "format": { - "type": [ - "string", - "null" - ] - }, - "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": { - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "staffRole": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - }, - "type": "array" - } - }, - "required": [ - "edges" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "edges": { + "items": { + "additionalProperties": {}, + "properties": { + "node": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "format": { + "type": [ + "string", + "null" + ] + }, + "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": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "staffRole": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "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" + } + }, + "required": [ + "edges" + ], + "type": "object" + }, + { + "type": "null" + } +]
- Changed
get_studio6 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / isMainAdded 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" +} - added
Input schema / properties / onListAdded 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" +} - added
Input schema / properties / pageAdded 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" +} - added
Input schema / properties / perPageAdded value: +{ + "default": 25, + "description": "Results per page (max 25, AniList's own ceiling — it silently clamps anything higher).", + "exclusiveMinimum": 0, + "maximum": 25, + "type": "integer" +} - changed
Output schema / properties / studio / properties / media / anyOfPrevious 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" + } +]
- Changed
get_thread1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
get_thread_comments1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
get_todays_birthdays4 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / pageAdded 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" +} - added
Input schema / properties / perPageAdded value: +{ + "default": 50, + "description": "Results per page (max 50, AniList's own ceiling — it silently clamps anything higher).", + "exclusiveMinimum": 0, + "maximum": 50, + "type": "integer" +} - added
Output schema / properties / hasNextPageAdded value: +{ + "type": [ + "boolean", + "null" + ] +}
- Changed
get_user_activity5 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / createdAfterAdded value: +{ + "description": "Only activities created strictly after this moment — an ISO 8601 datetime with a `Z` or ±hh:mm offset (e.g. 2026-01-01T00:00:00Z). AniList stores whole seconds; an activity at exactly this second is excluded.", + "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" +} - added
Input schema / properties / createdBeforeAdded value: +{ + "description": "Only activities created strictly before this moment — same format and exclusive bound as `createdAfter`. A window where createdBefore is not after createdAfter just returns no activities, not an error.", + "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" +} - added
Input schema / properties / typeAdded value: +{ + "anyOf": [ + { + "enum": [ + "TEXT", + "ANIME_LIST", + "MANGA_LIST", + "MESSAGE", + "MEDIA_LIST" + ], + "type": "string" + }, + { + "items": { + "enum": [ + "TEXT", + "ANIME_LIST", + "MANGA_LIST", + "MESSAGE", + "MEDIA_LIST" + ], + "type": "string" + }, + "minItems": 1, + "type": "array" + } + ], + "description": "Restrict to this activity type, or pass an array to match ANY of several (e.g. [\"TEXT\", \"MESSAGE\"]). MEDIA_LIST matches both ANIME_LIST and MANGA_LIST activities; use ANIME_LIST/MANGA_LIST to restrict to just one. MESSAGE here is messages this user received. Omit for every type." +} - changed
Input schema / properties / user / descriptionPrevious value: -"AniList user ID, or username. Unlike search_activity's own `user` filter, both an unknown numeric ID and an unknown username error here rather than silently returning an empty feed."New value: +"AniList user ID, or username. An unknown ID or username errors rather than returning an empty feed."
- Changed
get_user_list9 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / completedAt_greaterAdded value: +{ + "description": "Only entries completed strictly AFTER this date (AniList filters server-side; the bound date itself is excluded). An omitted month/day counts as 0, so {year: 2026} here means \"from 2026-01-01 on\". Entries with no date recorded never match.", + "properties": { + "day": { + "maximum": 31, + "minimum": 1, + "type": "integer" + }, + "month": { + "maximum": 12, + "minimum": 1, + "type": "integer" + }, + "year": { + "description": "Required — a date bound needs at least a year.", + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + } + }, + "required": [ + "year" + ], + "type": "object" +} - added
Input schema / properties / completedAt_lesserAdded value: +{ + "description": "Only entries completed strictly BEFORE this date (AniList filters server-side; the bound date itself is excluded). An omitted month/day counts as 0, so {year: 2026} here means \"up to 2025-12-31\". Entries with no date recorded also pass this bound on its own — pair it with the matching `_greater` bound to exclude them.", + "properties": { + "day": { + "maximum": 31, + "minimum": 1, + "type": "integer" + }, + "month": { + "maximum": 12, + "minimum": 1, + "type": "integer" + }, + "year": { + "description": "Required — a date bound needs at least a year.", + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + } + }, + "required": [ + "year" + ], + "type": "object" +} - changed
Input schema / properties / perChunk / descriptionPrevious value: -"Entries per chunk, counted across all statuses combined. Defaults to 25 so an unattended call stays small, but nothing caps it — pass a larger value (AniList accepts values in the thousands) to pull a whole list in one call instead of paging. Each entry carries its dates, notes, custom lists and advanced scores, so a few hundred entries is already a large response."New value: +"Entries per chunk, counted across all statuses combined. Defaults to 25 so an unattended call stays small, but nothing caps it — pass a larger value (AniList accepts values in the thousands) to pull a whole list in one call instead of paging. A compact row is small (a few hundred fit easily); with `format: \"full\"` each entry carries its dates, notes, custom lists and advanced scores, so a few hundred entries is already a large response there." - added
Input schema / properties / sortAdded value: +{ + "description": "Order AniList applies server-side; later keys break ties in earlier ones (e.g. [SCORE_DESC, UPDATED_TIME_DESC]). Applied to the whole list BEFORE chunking — `chunk` 1 with `perChunk` 10 and UPDATED_TIME_DESC is the 10 most recently updated entries across all statuses — and again within each status/custom-list group. Groups are not interleaved, so `compact` rows (concatenated group by group) are ordered within each status, not globally; filter to one status with `statuses` for a single fully ordered run. Omit for AniList's default order (oldest-added first within each group).", + "items": { + "enum": [ + "MEDIA_ID", + "MEDIA_ID_DESC", + "SCORE", + "SCORE_DESC", + "STATUS", + "STATUS_DESC", + "PROGRESS", + "PROGRESS_DESC", + "PROGRESS_VOLUMES", + "PROGRESS_VOLUMES_DESC", + "REPEAT", + "REPEAT_DESC", + "PRIORITY", + "PRIORITY_DESC", + "STARTED_ON", + "STARTED_ON_DESC", + "FINISHED_ON", + "FINISHED_ON_DESC", + "ADDED_TIME", + "ADDED_TIME_DESC", + "UPDATED_TIME", + "UPDATED_TIME_DESC", + "MEDIA_TITLE_ROMAJI", + "MEDIA_TITLE_ROMAJI_DESC", + "MEDIA_TITLE_ENGLISH", + "MEDIA_TITLE_ENGLISH_DESC", + "MEDIA_TITLE_NATIVE", + "MEDIA_TITLE_NATIVE_DESC", + "MEDIA_POPULARITY", + "MEDIA_POPULARITY_DESC" + ], + "type": "string" + }, + "minItems": 1, + "type": "array" +} - added
Input schema / properties / startedAt_greaterAdded value: +{ + "description": "Only entries started strictly AFTER this date (AniList filters server-side; the bound date itself is excluded). An omitted month/day counts as 0, so {year: 2026} here means \"from 2026-01-01 on\". Entries with no date recorded never match.", + "properties": { + "day": { + "maximum": 31, + "minimum": 1, + "type": "integer" + }, + "month": { + "maximum": 12, + "minimum": 1, + "type": "integer" + }, + "year": { + "description": "Required — a date bound needs at least a year.", + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + } + }, + "required": [ + "year" + ], + "type": "object" +} - added
Input schema / properties / startedAt_lesserAdded value: +{ + "description": "Only entries started strictly BEFORE this date (AniList filters server-side; the bound date itself is excluded). An omitted month/day counts as 0, so {year: 2026} here means \"up to 2025-12-31\". Entries with no date recorded also pass this bound on its own — pair it with the matching `_greater` bound to exclude them.", + "properties": { + "day": { + "maximum": 31, + "minimum": 1, + "type": "integer" + }, + "month": { + "maximum": 12, + "minimum": 1, + "type": "integer" + }, + "year": { + "description": "Required — a date bound needs at least a year.", + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + } + }, + "required": [ + "year" + ], + "type": "object" +} - changed
Input schema / properties / user / descriptionPrevious value: -"AniList user ID, or username."New value: +"AniList user ID (as a number — a digit string is read as a username), or username." - changed
Output schema / properties / lists / anyOfPrevious value: -[ - { - "items": { - "additionalProperties": {}, - "properties": { - "entries": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "advancedScores": { - "anyOf": [ - { - "$ref": "#/$defs/__schema0" - }, - { - "type": "null" - } - ], - "description": "Per-category advanced scores as AniList actually stores them — an untyped value (the write side takes a plain {category: score} map via add_list_entry/update_list_entry's `advancedScores`, but the echoed read-back shape isn't guaranteed to match it)." - }, - "completedAt": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "day": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "month": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "year": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "createdAt": { - "anyOf": [ - { - "minimum": 0, - "type": "number" - }, - { - "type": "null" - } - ] - }, - "customLists": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "enabled": { - "type": [ - "boolean", - "null" - ] - }, - "name": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "Every custom list configured on the account, with `enabled` showing whether THIS entry is filed under it. Naming a list here (via add_list_entry/update_list_entry) that isn't already in the account's `animeListOptions`/`mangaListOptions` `customLists` is silently a no-op on write — the list must exist first." - }, - "hiddenFromStatusLists": { - "type": [ - "boolean", - "null" - ] - }, - "id": { - "exclusiveMinimum": 0, - "maximum": 2147483647, - "type": "integer" - }, - "media": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "chapters": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "episodes": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "id": { - "exclusiveMinimum": 0, - "maximum": 2147483647, - "type": "integer" - }, - "idMal": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "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" - } - ] - }, - "notes": { - "type": [ - "string", - "null" - ] - }, - "priority": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "private": { - "type": [ - "boolean", - "null" - ] - }, - "progress": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "progressVolumes": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "repeat": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "score": { - "anyOf": [ - { - "minimum": 0, - "type": "number" - }, - { - "type": "null" - } - ], - "description": "This user's own score for the entry, on a 0-10 scale (decimals allowed). It stays 0-10 on every account whatever the configured scoreFormat is, and matches the scale add_list_entry/update_list_entry take on write. This is NOT the 0-100 scale `averageScore`/`meanScore`/search_media's `averageScore_greater` filter use." - }, - "startedAt": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "day": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "month": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "year": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "status": { - "type": [ - "string", - "null" - ] - }, - "updatedAt": { - "anyOf": [ - { - "minimum": 0, - "type": "number" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "isCustomList": { - "type": [ - "boolean", - "null" - ] - }, - "isSplitCompletedList": { - "type": [ - "boolean", - "null" - ] - }, - "name": { - "type": [ - "string", - "null" - ] - }, - "status": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "items": { + "additionalProperties": {}, + "properties": { + "entries": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "advancedScores": { + "anyOf": [ + { + "$ref": "#/$defs/__schema0" + }, + { + "type": "null" + } + ], + "description": "Per-category advanced scores as AniList actually stores them, as a {category: score} map on the same 0-10 scale as `score` (so a value read here can be passed straight back to add_list_entry/update_list_entry's `advancedScores`). Every configured category is present — AniList stores 0 for any not set." + }, + "completedAt": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "day": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "month": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "year": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "createdAt": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + }, + "customLists": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "enabled": { + "type": [ + "boolean", + "null" + ] + }, + "name": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "Every custom list configured on the account, with `enabled` showing whether THIS entry is filed under it. Naming a list here (via add_list_entry/update_list_entry) that isn't already in the account's `animeListOptions`/`mangaListOptions` `customLists` is silently a no-op on write — the list must exist first." + }, + "hiddenFromStatusLists": { + "type": [ + "boolean", + "null" + ] + }, + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "media": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "chapters": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "episodes": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "idMal": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "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" + } + ] + }, + "notes": { + "type": [ + "string", + "null" + ] + }, + "priority": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "private": { + "type": [ + "boolean", + "null" + ] + }, + "progress": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "progressVolumes": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "repeat": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "score": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ], + "description": "This user's own score for the entry, on a 0-10 scale (decimals allowed). It stays 0-10 on every account whatever the configured scoreFormat is, and matches the scale add_list_entry/update_list_entry take on write. This is NOT the 0-100 scale `averageScore`/`meanScore`/search_media's `averageScore_greater` filter use." + }, + "startedAt": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "day": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "month": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "year": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "status": { + "type": [ + "string", + "null" + ] + }, + "updatedAt": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "isCustomList": { + "type": [ + "boolean", + "null" + ] + }, + "isSplitCompletedList": { + "type": [ + "boolean", + "null" + ] + }, + "name": { + "type": [ + "string", + "null" + ] + }, + "status": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } +]
- Changed
get_user_profile4 fields changed- added
Input schema / additionalPropertiesAdded value: +false - changed
Input schema / properties / user / descriptionPrevious value: -"AniList user ID, or username."New value: +"AniList user ID (as a number — a digit string is read as a username), or username." - removed
Output schema / $defsRemoved value: -{ - "__schema0": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "number" - }, - { - "type": "boolean" - }, - { - "type": "null" - }, - { - "items": { - "$ref": "#/$defs/__schema0" - }, - "type": "array" - }, - { - "additionalProperties": { - "$ref": "#/$defs/__schema0" - }, - "propertyNames": { - "type": "string" - }, - "type": "object" - } - ] - } -} - changed
Output schema / properties / profile / properties / mediaListOptions / anyOfPrevious value: -[ - { - "additionalProperties": {}, - "properties": { - "animeList": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "advancedScoring": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "advancedScoringEnabled": { - "type": [ - "boolean", - "null" - ] - }, - "customLists": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "sectionOrder": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "splitCompletedSectionByFormat": { - "type": [ - "boolean", - "null" - ] - }, - "theme": { - "anyOf": [ - { - "$ref": "#/$defs/__schema0" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "mangaList": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "advancedScoring": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "advancedScoringEnabled": { - "type": [ - "boolean", - "null" - ] - }, - "customLists": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "sectionOrder": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "splitCompletedSectionByFormat": { - "type": [ - "boolean", - "null" - ] - }, - "theme": { - "anyOf": [ - { - "$ref": "#/$defs/__schema0" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "rowOrder": { - "type": [ - "string", - "null" - ] - }, - "scoreFormat": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": {}, + "properties": { + "animeList": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "advancedScoring": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "advancedScoringEnabled": { + "type": [ + "boolean", + "null" + ] + }, + "customLists": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "sectionOrder": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "splitCompletedSectionByFormat": { + "type": [ + "boolean", + "null" + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "mangaList": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "advancedScoring": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "advancedScoringEnabled": { + "type": [ + "boolean", + "null" + ] + }, + "customLists": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "sectionOrder": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "splitCompletedSectionByFormat": { + "type": [ + "boolean", + "null" + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "rowOrder": { + "type": [ + "string", + "null" + ] + }, + "scoreFormat": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + { + "type": "null" + } +]
- Changed
get_user_recent_activity2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - changed
Input schema / properties / user / descriptionPrevious value: -"AniList user ID, or username. Unlike search_activity's own `user` filter, both an unknown numeric ID and an unknown username error here rather than silently returning an empty feed."New value: +"AniList user ID, or username. An unknown ID or username errors rather than returning an empty feed."
- Changed
get_user_stats2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - changed
Input schema / properties / user / descriptionPrevious value: -"AniList user ID, or username."New value: +"AniList user ID (as a number — a digit string is read as a username), or username."
- Changed
login_anilist1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
post_message_activity1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
post_text_activity1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
post_thread1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
post_thread_comment1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
remove_list_entry1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
search_activity9 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / createdAfterAdded value: +{ + "description": "Only activity created strictly after this ISO 8601 datetime with an offset (e.g. \"2026-10-01T00:00:00Z\"); compared at whole-second precision.", + "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" +} - added
Input schema / properties / createdBeforeAdded value: +{ + "description": "Only activity created strictly before this ISO 8601 datetime.", + "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" +} - added
Input schema / properties / isFollowingAdded value: +{ + "description": "[Requires login] Set true for your following feed: activity from users the logged-in account follows plus its own (AniList's `isFollowing` filter — confirmed live: an account following nobody gets only its own activity). Without a token this errors before any request rather than returning the global feed. Can't be combined with `user`. false or omitted means no restriction.", + "type": "boolean" +} - added
Input schema / properties / type / anyOfAdded value: +[ + { + "enum": [ + "TEXT", + "ANIME_LIST", + "MANGA_LIST", + "MESSAGE", + "MEDIA_LIST" + ], + "type": "string" + }, + { + "items": { + "enum": [ + "TEXT", + "ANIME_LIST", + "MANGA_LIST", + "MESSAGE", + "MEDIA_LIST" + ], + "type": "string" + }, + "minItems": 1, + "type": "array" + } +] - changed
Input schema / properties / type / descriptionPrevious value: -"Restrict to this activity type. MEDIA_LIST matches both ANIME_LIST and MANGA_LIST activities; use ANIME_LIST/MANGA_LIST to restrict to just one."New value: +"Restrict to this activity type, or pass an array to match ANY of several (e.g. [\"TEXT\", \"MESSAGE\"]). MEDIA_LIST matches both ANIME_LIST and MANGA_LIST activities; use ANIME_LIST/MANGA_LIST to restrict to just one. Omit for every type." - removed
Input schema / properties / type / enumRemoved value: -[ - "TEXT", - "ANIME_LIST", - "MANGA_LIST", - "MESSAGE", - "MEDIA_LIST" -] - removed
Input schema / properties / type / typeRemoved value: -"string" - changed
Input schema / properties / user / descriptionPrevious value: -"Restrict results to this AniList user — numeric ID or exact username (resolved to an id with one extra internal lookup; no need to call search_user first unless you only have a partial/fuzzy name). An unknown ID or username errors with not_found rather than silently returning an empty result. Use get_user_activity instead if you only need one user's feed without the type filter."New value: +"Restrict results to this AniList user — numeric ID or exact username (resolved to an id with one extra internal lookup; no need to call search_user first unless you only have a partial/fuzzy name). An unknown ID or username errors with not_found rather than silently returning an empty result."
- Changed
search_character1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
search_media23 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / chapters_greaterAdded value: +{ + "description": "Manga only: more chapters than this. Same underlying column as `episodes_greater` — with type: ANIME it filters episode count (confirmed live).", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" +} - added
Input schema / properties / chapters_lesserAdded value: +{ + "description": "Manga only: fewer chapters than this (same column as `episodes_lesser`).", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" +} - added
Input schema / properties / countryOfOriginAdded value: +{ + "description": "Restrict to this country of origin, as an uppercase ISO 3166-1 alpha-2 code (e.g. \"JP\", \"KR\" for manhwa, \"CN\" for manhua/donghua, \"TW\"). An unused code matches nothing.", + "pattern": "^[A-Z]{2}$", + "type": "string" +} - added
Input schema / properties / duration_greaterAdded value: +{ + "description": "Anime only: episode length strictly greater than this, in minutes. With type: MANGA AniList silently applies it to volume count instead (shared column, confirmed live).", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" +} - added
Input schema / properties / duration_lesserAdded value: +{ + "description": "Anime only: episode length strictly less than this, in minutes (see above).", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" +} - changed
Input schema / properties / endDate_greater / descriptionPrevious value: -"Restrict to entries whose end date is on or after this date."New value: +"Restrict to entries whose end date is strictly AFTER this date (the bound date itself is excluded). An omitted month/day counts as 0, so {year: 2020} here means \"from 2020-01-01 on\"." - changed
Input schema / properties / endDate_lesser / descriptionPrevious value: -"Restrict to entries whose end date is on or before this date."New value: +"Restrict to entries whose end date is strictly BEFORE this date (the bound date itself is excluded). An omitted month/day counts as 0, so {year: 2020} here means \"up to 2019-12-31\"." - added
Input schema / properties / format_not_inAdded value: +{ + "description": "Exclude these formats.", + "items": { + "enum": [ + "TV", + "TV_SHORT", + "MOVIE", + "SPECIAL", + "OVA", + "ONA", + "MUSIC", + "MANGA", + "NOVEL", + "ONE_SHOT" + ], + "type": "string" + }, + "type": "array" +} - added
Input schema / properties / genre_not_inAdded value: +{ + "description": "Exclude entries having ANY of these genres. Unlike `genres`, an unrecognized name excludes nothing (no-op, confirmed live).", + "items": { + "type": "string" + }, + "type": "array" +} - added
Input schema / properties / isAdultAdded value: +{ + "description": "AniList's own adult-content filter: true returns ONLY adult (18+) entries, false excludes them (same as `sfw: true`). Omit to include both. No login or account setting is needed for adult results. `sfw: true` with `isAdult: true` contradict each other and are rejected.", + "type": "boolean" +} - added
Input schema / properties / licensedBy_inAdded value: +{ + "description": "Restrict to entries licensed/streamed by ANY of these sites (names as in get_media's `externalLinks[].site`, e.g. \"Crunchyroll\", \"Netflix\"; case-insensitive). An unrecognized site name matches nothing.", + "items": { + "type": "string" + }, + "type": "array" +} - added
Input schema / properties / minimumTagRankAdded value: +{ + "description": "Only count a tag in `tag_in`/`tag_not_in` when its relevance rank (0-100, as in get_media's `tags[].rank`) is at least this — e.g. 90 for titles where the tag is central, not incidental. Applies to both lists (confirmed live).", + "maximum": 100, + "minimum": 0, + "type": "integer" +} - changed
Input schema / properties / onList / descriptionPrevious value: -"[Requires login] Restrict to (true) or exclude (false) entries already on the authenticated user's own list. Omit to ignore list status entirely. Confirmed live: silently no-ops (identical results for true/false/omitted) if not logged in, since there's no list to check against — same behavior as get_recommendations_for_media's `excludeInList`."New value: +"[Requires login] Restrict to (true) or exclude (false) entries already on the authenticated user's own list. Omit to ignore list status entirely. Errors if not logged in (confirmed live: AniList would otherwise silently ignore it and return unfiltered results)." - changed
Input schema / properties / sfw / descriptionPrevious value: -"Set true to exclude adult (isAdult) entries. Adult results are NOT filtered by default."New value: +"Set true to exclude adult (isAdult) entries — same as `isAdult: false`. Adult results are NOT filtered by default." - added
Input schema / properties / sort / minItemsAdded value: +1 - changed
Input schema / properties / startDate_greater / descriptionPrevious value: -"Restrict to entries whose start date is on or after this date."New value: +"Restrict to entries whose start date is strictly AFTER this date (the bound date itself is excluded). An omitted month/day counts as 0, so {year: 2020} here means \"from 2020-01-01 on\"." - changed
Input schema / properties / startDate_lesser / descriptionPrevious value: -"Restrict to entries whose start date is on or before this date."New value: +"Restrict to entries whose start date is strictly BEFORE this date (the bound date itself is excluded). An omitted month/day counts as 0, so {year: 2020} here means \"up to 2019-12-31\"." - added
Input schema / properties / status_not_inAdded value: +{ + "description": "Exclude these release statuses.", + "items": { + "enum": [ + "FINISHED", + "RELEASING", + "NOT_YET_RELEASED", + "CANCELLED", + "HIATUS" + ], + "type": "string" + }, + "type": "array" +} - added
Input schema / properties / tag_not_inAdded value: +{ + "description": "Exclude entries having ANY of these exact tag names (see `tag_in`).", + "items": { + "type": "string" + }, + "type": "array" +} - added
Input schema / properties / term / minLengthAdded value: +1 - added
Input schema / properties / volumes_greaterAdded value: +{ + "description": "Manga only: more volumes than this. With type: ANIME AniList silently applies it to episode duration instead (shared column, confirmed live).", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" +} - added
Input schema / properties / volumes_lesserAdded value: +{ + "description": "Manga only: fewer volumes than this (see above).", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" +}
- Changed
search_staff1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
search_studio1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
search_thread4 fields changed- added
Input schema / additionalPropertiesAdded value: +false - changed
Input schema / properties / mediaCategoryId / descriptionPrevious value: -"Restrict to threads tagged with this AniList anime/manga ID (from search_media/get_media). Not existence-checked: a nonexistent media ID doesn't error, it silently filters to an empty result — resolve the ID via search_media first if you need to confirm the title actually exists."New value: +"Restrict to threads tagged with this AniList anime/manga ID (from search_media/get_media). A nonexistent ID errors as not found." - changed
Input schema / properties / term / descriptionPrevious value: -"Free-text search term (matches thread title/body). Omit to just filter/browse."New value: +"Free-text search term (matches thread title/body); results are relevance-ranked. Omit to browse, most recently replied-to first." - added
Input schema / properties / term / minLengthAdded value: +1
- Changed
search_user2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - changed
Input schema / properties / includeDescription / descriptionPrevious value: -"Also fetch each result's full bio (`description`). Kept off by default — a bio can run to several thousand characters, and always including it would burn tokens on text you may not need; use get_user_profile/get_full_user_info for a single entry's full bio instead."New value: +"Also fetch each result's full bio (`about`). Kept off by default — a bio can run to several thousand characters, and always including it would burn tokens on text you may not need; use get_user_profile/get_full_user_info for a single entry's full bio instead."
- Changed
submit_anilist_redirect2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - changed
Input schema / properties / redirect_url / descriptionPrevious value: -"The full redirected URL (contains ?code=...), or just the code value."New value: +"The full redirected URL (contains ?code=...&state=...)."
- Changed
toggle_favourite8 fields changed- added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / properties / favourites / properties / anime / anyOfPrevious 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" + } +] - changed
Output schema / properties / favourites / properties / characters / anyOfPrevious 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" + } +] - changed
Output schema / properties / favourites / properties / manga / anyOfPrevious 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" + } +] - changed
Output schema / properties / favourites / properties / staff / anyOfPrevious 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" + } +] - changed
Output schema / properties / favourites / properties / studios / anyOfPrevious 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" + } +] - added
Output schema / properties / isFavouriteAdded 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" + ] +} - changed
Output schema / requiredPrevious value: -[ - "favourites" -]New value: +[ + "favourites", + "isFavourite" +]
- Changed
toggle_follow_user1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
update_list_entries5 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / completedAt / properties / year / descriptionAdded value: +"Required — omit the whole date to leave it unchanged." - added
Input schema / properties / completedAt / requiredAdded value: +[ + "year" +] - added
Input schema / properties / startedAt / properties / year / descriptionAdded value: +"Required — omit the whole date to leave it unchanged." - added
Input schema / properties / startedAt / requiredAdded value: +[ + "year" +]
- Changed
update_list_entry6 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / completedAt / properties / year / descriptionAdded value: +"Required — omit the whole date to leave it unchanged." - added
Input schema / properties / completedAt / requiredAdded value: +[ + "year" +] - added
Input schema / properties / startedAt / properties / year / descriptionAdded value: +"Required — omit the whole date to leave it unchanged." - added
Input schema / properties / startedAt / requiredAdded value: +[ + "year" +] - changed
Output schema / properties / entry / properties / advancedScores / descriptionPrevious value: -"Per-category advanced scores as AniList actually stores them — an untyped value (the write side takes a plain {category: score} map via add_list_entry/update_list_entry's `advancedScores`, but the echoed read-back shape isn't guaranteed to match it)."New value: +"Per-category advanced scores as AniList actually stores them, as a {category: score} map on the same 0-10 scale as `score` (so a value read here can be passed straight back to add_list_entry/update_list_entry's `advancedScores`). Every configured category is present — AniList stores 0 for any not set."
- Changed
update_user10 fields changed- added
Input schema / additionalPropertiesAdded value: +false - changed
Input schema / properties / animeListOptions / properties / theme / descriptionPrevious value: -"List-page color theme name. AniList itself marks this field experimental ('not yet fully implemented, may change without warning') — its read-back shape (see get_user_profile/get_full_user_info/get_authorized_user/update_user's own response) is an untyped value, not guaranteed to be the string you set."New value: +"List-page color theme name. AniList itself marks this field experimental ('not yet fully implemented, may change without warning') and deprecates its read side, so no tool here reads it back — not even update_user's own response — and a change to it can't be verified through this server." - changed
Input schema / properties / disabledListActivity / items / properties / disabled / descriptionPrevious value: -"Whether posting activity for this status is suppressed. Optional in the schema, but NOT safe to omit: confirmed live, leaving it out on even one of the 6 statuses makes the whole call fail with a 500 Internal Server Error on AniList's side (not a clean validation error, and not this server's bug) — always pass an explicit true/false for every status."New value: +"Whether posting activity for this status is suppressed." - changed
Input schema / properties / disabledListActivity / items / requiredPrevious value: -[ - "type" -]New value: +[ + "type", + "disabled" +] - changed
Input schema / properties / mangaListOptions / properties / theme / descriptionPrevious value: -"List-page color theme name. AniList itself marks this field experimental ('not yet fully implemented, may change without warning') — its read-back shape (see get_user_profile/get_full_user_info/get_authorized_user/update_user's own response) is an untyped value, not guaranteed to be the string you set."New value: +"List-page color theme name. AniList itself marks this field experimental ('not yet fully implemented, may change without warning') and deprecates its read side, so no tool here reads it back — not even update_user's own response — and a change to it can't be verified through this server." - changed
Input schema / properties / notificationOptions / items / properties / enabled / descriptionPrevious value: -"Whether this notification type is on. Optional per entry, but not really — omitting it doesn't error and doesn't inherit the previous value either; confirmed live it's written as `enabled: null`, effectively unsetting the type. Always pass an explicit true/false for every one of the 20 types."New value: +"Whether this notification type is on." - changed
Input schema / properties / notificationOptions / items / requiredPrevious value: -[ - "type" -]New value: +[ + "type", + "enabled" +] - changed
Input schema / properties / scoreFormat / descriptionPrevious value: -"Preferred list score format. It affects how scores DISPLAY on anilist.co only: every score crossing this server stays on its own documented scale whatever this is set to, so no conversion is needed on your end. A personal list-entry score is 0-10 both on write (add_list_entry/update_list_entry) and on read (get_user_list, get_media's `mediaListEntry`); `averageScore`/`meanScore` and the search filters are 0-100."New value: +"Preferred list score format. It affects how scores DISPLAY on anilist.co only: every score crossing this server stays on its own documented scale whatever this is set to, so no conversion is needed on your end. A personal list-entry score and its `advancedScores` are 0-10 both on write (add_list_entry/update_list_entry) and on read (get_user_list, get_media's `mediaListEntry`); `averageScore`/`meanScore` and the search filters are 0-100." - removed
Output schema / $defsRemoved value: -{ - "__schema0": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "number" - }, - { - "type": "boolean" - }, - { - "type": "null" - }, - { - "items": { - "$ref": "#/$defs/__schema0" - }, - "type": "array" - }, - { - "additionalProperties": { - "$ref": "#/$defs/__schema0" - }, - "propertyNames": { - "type": "string" - }, - "type": "object" - } - ] - } -} - changed
Output schema / properties / user / properties / mediaListOptions / anyOfPrevious value: -[ - { - "additionalProperties": {}, - "properties": { - "animeList": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "advancedScoring": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "advancedScoringEnabled": { - "type": [ - "boolean", - "null" - ] - }, - "customLists": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "sectionOrder": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "splitCompletedSectionByFormat": { - "type": [ - "boolean", - "null" - ] - }, - "theme": { - "anyOf": [ - { - "$ref": "#/$defs/__schema0" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "mangaList": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "advancedScoring": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "advancedScoringEnabled": { - "type": [ - "boolean", - "null" - ] - }, - "customLists": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "sectionOrder": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "splitCompletedSectionByFormat": { - "type": [ - "boolean", - "null" - ] - }, - "theme": { - "anyOf": [ - { - "$ref": "#/$defs/__schema0" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "rowOrder": { - "type": [ - "string", - "null" - ] - }, - "scoreFormat": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": {}, + "properties": { + "animeList": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "advancedScoring": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "advancedScoringEnabled": { + "type": [ + "boolean", + "null" + ] + }, + "customLists": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "sectionOrder": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "splitCompletedSectionByFormat": { + "type": [ + "boolean", + "null" + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "mangaList": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "advancedScoring": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "advancedScoringEnabled": { + "type": [ + "boolean", + "null" + ] + }, + "customLists": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "sectionOrder": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "splitCompletedSectionByFormat": { + "type": [ + "boolean", + "null" + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "rowOrder": { + "type": [ + "string", + "null" + ] + }, + "scoreFormat": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + { + "type": "null" + } +]
46 tool updates
v0.9.0- Changed
add_list_entry10 fields changed- changed
Output schema / properties / entry / properties / customLists / anyOfPrevious value: -[ - { - "items": { - "additionalProperties": {}, - "properties": { - "enabled": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "items": { + "additionalProperties": {}, + "properties": { + "enabled": { + "type": [ + "boolean", + "null" + ] + }, + "name": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } +] - removed
Output schema / properties / entry / properties / hiddenFromStatusLists / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Output schema / properties / entry / properties / hiddenFromStatusLists / typeAdded value: +[ + "boolean", + "null" +] - removed
Output schema / properties / entry / properties / notes / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / entry / properties / notes / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / entry / properties / private / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Output schema / properties / entry / properties / private / typeAdded value: +[ + "boolean", + "null" +] - added
Output schema / properties / entry / properties / score / descriptionAdded value: +"This user's own score for the entry, on a 0-10 scale (decimals allowed). It stays 0-10 on every account whatever the configured scoreFormat is, and matches the scale add_list_entry/update_list_entry take on write. This is NOT the 0-100 scale `averageScore`/`meanScore`/search_media's `averageScore_greater` filter use." - removed
Output schema / properties / entry / properties / status / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / entry / properties / status / typeAdded value: +[ + "string", + "null" +]
- Changed
delete_activity2 fields changed- removed
Output schema / properties / result / properties / deleted / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Output schema / properties / result / properties / deleted / typeAdded value: +[ + "boolean", + "null" +]
- Changed
delete_thread2 fields changed- removed
Output schema / properties / result / properties / deleted / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Output schema / properties / result / properties / deleted / typeAdded value: +[ + "boolean", + "null" +]
- Changed
delete_thread_comment2 fields changed- removed
Output schema / properties / result / properties / deleted / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Output schema / properties / result / properties / deleted / typeAdded value: +[ + "boolean", + "null" +]
- Changed
get_activity1 field changed- changed
Output schema / properties / activity / oneOfPrevious value: -[ - { - "additionalProperties": {}, - "properties": { - "createdAt": { - "anyOf": [ - { - "minimum": 0, - "type": "number" - }, - { - "type": "null" - } - ] - }, - "id": { - "exclusiveMinimum": 0, - "maximum": 2147483647, - "type": "integer" - }, - "isLiked": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "likeCount": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "replyCount": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "siteUrl": { - "anyOf": [ - { - "format": "uri", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "text": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "type": { - "const": "TEXT", - "type": "string" - }, - "user": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "id": { - "exclusiveMinimum": 0, - "maximum": 2147483647, - "type": "integer" - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id", - "type" - ], - "type": "object" - }, - { - "additionalProperties": {}, - "properties": { - "createdAt": { - "anyOf": [ - { - "minimum": 0, - "type": "number" - }, - { - "type": "null" - } - ] - }, - "id": { - "exclusiveMinimum": 0, - "maximum": 2147483647, - "type": "integer" - }, - "isLiked": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "likeCount": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "media": { - "anyOf": [ - { - "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" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "progress": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "replyCount": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "siteUrl": { - "anyOf": [ - { - "format": "uri", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "status": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "type": { - "enum": [ - "ANIME_LIST", - "MANGA_LIST", - "MEDIA_LIST" - ], - "type": "string" - }, - "user": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "id": { - "exclusiveMinimum": 0, - "maximum": 2147483647, - "type": "integer" - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id", - "type" - ], - "type": "object" - }, - { - "additionalProperties": {}, - "properties": { - "createdAt": { - "anyOf": [ - { - "minimum": 0, - "type": "number" - }, - { - "type": "null" - } - ] - }, - "id": { - "exclusiveMinimum": 0, - "maximum": 2147483647, - "type": "integer" - }, - "isLiked": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "likeCount": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "message": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "messenger": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "id": { - "exclusiveMinimum": 0, - "maximum": 2147483647, - "type": "integer" - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "recipient": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "id": { - "exclusiveMinimum": 0, - "maximum": 2147483647, - "type": "integer" - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "replyCount": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "siteUrl": { - "anyOf": [ - { - "format": "uri", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "type": { - "const": "MESSAGE", - "type": "string" - } - }, - "required": [ - "id", - "type" - ], - "type": "object" - } -]New value: +[ + { + "additionalProperties": {}, + "properties": { + "createdAt": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + }, + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "isLiked": { + "type": [ + "boolean", + "null" + ] + }, + "likeCount": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "replyCount": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "siteUrl": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "text": { + "type": [ + "string", + "null" + ] + }, + "type": { + "const": "TEXT", + "type": "string" + }, + "user": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "name": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id", + "type" + ], + "type": "object" + }, + { + "additionalProperties": {}, + "properties": { + "createdAt": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + }, + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "isLiked": { + "type": [ + "boolean", + "null" + ] + }, + "likeCount": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "media": { + "anyOf": [ + { + "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" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "progress": { + "type": [ + "string", + "null" + ] + }, + "replyCount": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "siteUrl": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "status": { + "type": [ + "string", + "null" + ] + }, + "type": { + "enum": [ + "ANIME_LIST", + "MANGA_LIST", + "MEDIA_LIST" + ], + "type": "string" + }, + "user": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "name": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id", + "type" + ], + "type": "object" + }, + { + "additionalProperties": {}, + "properties": { + "createdAt": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + }, + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "isLiked": { + "type": [ + "boolean", + "null" + ] + }, + "likeCount": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "message": { + "type": [ + "string", + "null" + ] + }, + "messenger": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "name": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "recipient": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "name": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "replyCount": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "siteUrl": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "type": { + "const": "MESSAGE", + "type": "string" + } + }, + "required": [ + "id", + "type" + ], + "type": "object" + } +]
- Changed
get_anime_schedule7 fields changed- changed
Input schema / properties / perPage / descriptionPrevious value: -"Results per page (max 25)."New value: +"Results per page (max 50, AniList's own ceiling — it silently clamps anything higher)." - changed
Input schema / properties / perPage / maximumPrevious value: -25New value: +50 - removed
Output schema / properties / hasNextPage / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Output schema / properties / hasNextPage / typeAdded value: +[ + "boolean", + "null" +] - changed
Output schema / properties / schedule / items / properties / media / anyOfPrevious 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" + } +] - removed
Output schema / properties / schedule / items / properties / timeUntilAiring / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / schedule / items / properties / timeUntilAiring / typeAdded value: +[ + "number", + "null" +]
- Changed
get_authorized_user12 fields changed- removed
Output schema / properties / user / properties / about / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / user / properties / about / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / user / properties / donatorBadge / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / user / properties / donatorBadge / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / user / properties / isFollower / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Output schema / properties / user / properties / isFollower / typeAdded value: +[ + "boolean", + "null" +] - removed
Output schema / properties / user / properties / isFollowing / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Output schema / properties / user / properties / isFollowing / typeAdded value: +[ + "boolean", + "null" +] - changed
Output schema / properties / user / properties / mediaListOptions / anyOfPrevious value: -[ - { - "additionalProperties": {}, - "properties": { - "animeList": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "advancedScoring": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "advancedScoringEnabled": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "customLists": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "sectionOrder": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "splitCompletedSectionByFormat": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "theme": { - "anyOf": [ - { - "$ref": "#/$defs/__schema0" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "mangaList": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "advancedScoring": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "advancedScoringEnabled": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "customLists": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "sectionOrder": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "splitCompletedSectionByFormat": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "theme": { - "anyOf": [ - { - "$ref": "#/$defs/__schema0" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "rowOrder": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "scoreFormat": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": {}, + "properties": { + "animeList": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "advancedScoring": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "advancedScoringEnabled": { + "type": [ + "boolean", + "null" + ] + }, + "customLists": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "sectionOrder": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "splitCompletedSectionByFormat": { + "type": [ + "boolean", + "null" + ] + }, + "theme": { + "anyOf": [ + { + "$ref": "#/$defs/__schema0" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "mangaList": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "advancedScoring": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "advancedScoringEnabled": { + "type": [ + "boolean", + "null" + ] + }, + "customLists": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "sectionOrder": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "splitCompletedSectionByFormat": { + "type": [ + "boolean", + "null" + ] + }, + "theme": { + "anyOf": [ + { + "$ref": "#/$defs/__schema0" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "rowOrder": { + "type": [ + "string", + "null" + ] + }, + "scoreFormat": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + { + "type": "null" + } +] - removed
Output schema / properties / user / properties / name / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / user / properties / name / typeAdded value: +[ + "string", + "null" +] - changed
Output schema / properties / user / properties / options / anyOfPrevious value: -[ - { - "additionalProperties": {}, - "properties": { - "activityMergeTime": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "airingNotifications": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "disabledListActivity": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "disabled": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "displayAdultContent": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "notificationOptions": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "enabled": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "profileColor": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "restrictMessagesToFollowing": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "staffNameLanguage": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "timezone": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "titleLanguage": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": {}, + "properties": { + "activityMergeTime": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "airingNotifications": { + "type": [ + "boolean", + "null" + ] + }, + "disabledListActivity": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "disabled": { + "type": [ + "boolean", + "null" + ] + }, + "type": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "displayAdultContent": { + "type": [ + "boolean", + "null" + ] + }, + "notificationOptions": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "enabled": { + "type": [ + "boolean", + "null" + ] + }, + "type": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "profileColor": { + "type": [ + "string", + "null" + ] + }, + "restrictMessagesToFollowing": { + "type": [ + "boolean", + "null" + ] + }, + "staffNameLanguage": { + "type": [ + "string", + "null" + ] + }, + "timezone": { + "type": [ + "string", + "null" + ] + }, + "titleLanguage": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + { + "type": "null" + } +]
- Changed
get_character6 fields changed- removed
Output schema / properties / character / properties / description / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / character / properties / description / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / character / properties / isFavourite / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Output schema / properties / character / properties / isFavourite / typeAdded value: +[ + "boolean", + "null" +] - changed
Output schema / properties / character / properties / media / anyOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "edges": { - "items": { - "additionalProperties": {}, - "properties": { - "characterRole": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "node": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "format": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "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": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - } - }, - "required": [ - "edges" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "edges": { + "items": { + "additionalProperties": {}, + "properties": { + "characterRole": { + "type": [ + "string", + "null" + ] + }, + "node": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "format": { + "type": [ + "string", + "null" + ] + }, + "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": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "edges" + ], + "type": "object" + }, + { + "type": "null" + } +] - changed
Output schema / properties / character / properties / name / anyOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "full": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "native": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "full": { + "type": [ + "string", + "null" + ] + }, + "native": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + { + "type": "null" + } +]
- Changed
get_full_user_info13 fields changed- removed
Output schema / properties / user / properties / about / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / user / properties / about / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / user / properties / donatorBadge / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / user / properties / donatorBadge / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / user / properties / isFollower / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Output schema / properties / user / properties / isFollower / typeAdded value: +[ + "boolean", + "null" +] - removed
Output schema / properties / user / properties / isFollowing / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Output schema / properties / user / properties / isFollowing / typeAdded value: +[ + "boolean", + "null" +] - changed
Output schema / properties / user / properties / mediaListOptions / anyOfPrevious value: -[ - { - "additionalProperties": {}, - "properties": { - "animeList": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "advancedScoring": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "advancedScoringEnabled": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "customLists": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "sectionOrder": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "splitCompletedSectionByFormat": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "theme": { - "anyOf": [ - { - "$ref": "#/$defs/__schema0" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "mangaList": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "advancedScoring": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "advancedScoringEnabled": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "customLists": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "sectionOrder": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "splitCompletedSectionByFormat": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "theme": { - "anyOf": [ - { - "$ref": "#/$defs/__schema0" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "rowOrder": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "scoreFormat": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": {}, + "properties": { + "animeList": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "advancedScoring": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "advancedScoringEnabled": { + "type": [ + "boolean", + "null" + ] + }, + "customLists": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "sectionOrder": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "splitCompletedSectionByFormat": { + "type": [ + "boolean", + "null" + ] + }, + "theme": { + "anyOf": [ + { + "$ref": "#/$defs/__schema0" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "mangaList": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "advancedScoring": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "advancedScoringEnabled": { + "type": [ + "boolean", + "null" + ] + }, + "customLists": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "sectionOrder": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "splitCompletedSectionByFormat": { + "type": [ + "boolean", + "null" + ] + }, + "theme": { + "anyOf": [ + { + "$ref": "#/$defs/__schema0" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "rowOrder": { + "type": [ + "string", + "null" + ] + }, + "scoreFormat": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + { + "type": "null" + } +] - removed
Output schema / properties / user / properties / name / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / user / properties / name / typeAdded value: +[ + "string", + "null" +] - changed
Output schema / properties / user / properties / options / anyOfPrevious value: -[ - { - "additionalProperties": {}, - "properties": { - "activityMergeTime": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "airingNotifications": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "disabledListActivity": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "disabled": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "displayAdultContent": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "notificationOptions": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "enabled": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "profileColor": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "restrictMessagesToFollowing": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "staffNameLanguage": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "timezone": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "titleLanguage": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": {}, + "properties": { + "activityMergeTime": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "airingNotifications": { + "type": [ + "boolean", + "null" + ] + }, + "disabledListActivity": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "disabled": { + "type": [ + "boolean", + "null" + ] + }, + "type": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "displayAdultContent": { + "type": [ + "boolean", + "null" + ] + }, + "notificationOptions": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "enabled": { + "type": [ + "boolean", + "null" + ] + }, + "type": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "profileColor": { + "type": [ + "string", + "null" + ] + }, + "restrictMessagesToFollowing": { + "type": [ + "boolean", + "null" + ] + }, + "staffNameLanguage": { + "type": [ + "string", + "null" + ] + }, + "timezone": { + "type": [ + "string", + "null" + ] + }, + "titleLanguage": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + { + "type": "null" + } +] - changed
Output schema / properties / user / properties / statistics / anyOfPrevious value: -[ - { - "additionalProperties": {}, - "properties": { - "anime": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "count": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "episodesWatched": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "meanScore": { - "anyOf": [ - { - "minimum": 0, - "type": "number" - }, - { - "type": "null" - } - ] - }, - "minutesWatched": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "manga": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "chaptersRead": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "count": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "meanScore": { - "anyOf": [ - { - "minimum": 0, - "type": "number" - }, - { - "type": "null" - } - ] - }, - "volumesRead": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": {}, + "properties": { + "anime": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "count": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "episodesWatched": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "meanScore": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ], + "description": "The average of this user's own anime scores, on AniList's 0-100 community scale. It stays 0-100 whatever the viewer's configured scoreFormat is, since that setting only changes how anilist.co displays scores. This is NOT the 0-10 scale a personal list-entry `score` uses." + }, + "minutesWatched": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "manga": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "chaptersRead": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "count": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "meanScore": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ], + "description": "The average of this user's own manga scores, on AniList's 0-100 community scale. It stays 0-100 whatever the viewer's configured scoreFormat is, since that setting only changes how anilist.co displays scores. This is NOT the 0-10 scale a personal list-entry `score` uses." + }, + "volumesRead": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } +]
- Changed
get_media8 fields changed- added
Input schema / properties / formatAdded value: +{ + "default": "full", + "description": "How much of each title to return. `full` (default) is the whole card — synopsis, tags, rankings, external links and your own list entry — which is the point of looking one title up. `compact` returns only id, MAL id, type, format, status, episode/chapter count and titles — measured at 169 bytes per title against 4,182 for the full card, and what you actually want when resolving a batch of IDs to titles (notably a `malIds` batch, whose job is mapping one ID space onto the other). `compact` ignores `includeStreamingEpisodes`, which is a detail field.", + "enum": [ + "compact", + "full" + ], + "type": "string" +} - changed
Input schema / properties / ids / anyOfPrevious value: -[ - { - "exclusiveMinimum": 0, - "maximum": 2147483647, - "type": "integer" - }, - { - "items": { - "exclusiveMinimum": 0, - "maximum": 2147483647, - "type": "integer" - }, - "maxItems": 25, - "minItems": 1, - "type": "array" - } -]New value: +[ + { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + { + "items": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "maxItems": 50, + "minItems": 1, + "type": "array" + } +] - changed
Input schema / properties / ids / descriptionPrevious value: -"A single AniList anime/manga ID, or an array of up to 25 IDs to fetch in one call (same cap as this codebase's paginated list tools — each entry returned here includes the full synopsis/tags/rankings, so an uncapped batch could return a very large response)."New value: +"A single AniList anime/manga ID, or an array of up to 50 IDs to fetch in one call (AniList's own per-page ceiling; it clamps anything higher, which would silently drop the surplus). Pass this OR `malIds`, not both. Each entry includes the full synopsis/tags/rankings, so a large batch is a large response." - changed
Input schema / properties / includeStreamingEpisodes / descriptionPrevious value: -"Also fetch `streamingEpisodes` (per-episode streaming links). Kept off by default — AniList doesn't paginate this field, so a long-running title can return hundreds of entries."New value: +"Also fetch `streamingEpisodes` (per-episode streaming links). Has no effect under `format: \"compact\"`, which returns no detail fields at all. Kept off by default — AniList doesn't paginate this field, so a long-running title can return hundreds of entries." - added
Input schema / properties / malIdsAdded value: +{ + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + { + "items": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "maxItems": 50, + "minItems": 1, + "type": "array" + } + ], + "description": "A single MyAnimeList ID (`idMal`), or an array of up to 50, to resolve straight to AniList titles — use this instead of searching by title when you already have MAL IDs (e.g. syncing a MAL list), since a title search costs one call per title and can match the wrong entry. Pass this OR `ids`, not both. MAL numbers anime and manga separately, so the SAME ID is a different title depending on `type` — passing the wrong `type` returns the wrong title, not an error." +} - changed
Input schema / properties / type / descriptionPrevious value: -"Whether `ids` refers to anime or manga."New value: +"Whether the IDs refer to anime or manga. Required for `malIds` in particular: MAL numbers the two separately, so the same ID means different titles." - changed
Input schema / requiredPrevious value: -[ - "type", - "ids" -]New value: +[ + "type" +] - changed
Output schema / properties / media / anyOfPrevious value: -[ - { - "additionalProperties": {}, - "properties": { - "averageScore": { - "anyOf": [ - { - "minimum": 0, - "type": "number" - }, - { - "type": "null" - } - ] - }, - "chapters": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "countryOfOrigin": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "coverImage": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "large": { - "anyOf": [ - { - "format": "uri", - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "description": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "duration": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "endDate": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "day": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "month": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "year": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "episodes": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "externalLinks": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "icon": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "id": { - "exclusiveMinimum": 0, - "maximum": 2147483647, - "type": "integer" - }, - "isDisabled": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "language": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "notes": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "site": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "url": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "format": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "genres": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "id": { - "exclusiveMinimum": 0, - "maximum": 2147483647, - "type": "integer" - }, - "idMal": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "isAdult": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "isFavourite": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "description": "[Requires login] Whether this title 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." - }, - "mediaListEntry": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "advancedScores": { - "anyOf": [ - { - "$ref": "#/$defs/__schema0" - }, - { - "type": "null" - } - ] - }, - "completedAt": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "day": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "month": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "year": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "createdAt": { - "anyOf": [ - { - "minimum": 0, - "type": "number" - }, - { - "type": "null" - } - ] - }, - "customLists": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "enabled": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "hiddenFromStatusLists": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "id": { - "exclusiveMinimum": 0, - "maximum": 2147483647, - "type": "integer" - }, - "notes": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "priority": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "private": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "progress": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "progressVolumes": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "repeat": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "score": { - "anyOf": [ - { - "minimum": 0, - "type": "number" - }, - { - "type": "null" - } - ] - }, - "startedAt": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "day": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "month": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "year": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "status": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "updatedAt": { - "anyOf": [ - { - "minimum": 0, - "type": "number" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ], - "description": "Whether this title is on the caller's own list — viewer-relative, so it only resolves when logged in; null both when logged out and when the title just isn't on the list (the two cases aren't distinguishable from this field alone)." - }, - "nextAiringEpisode": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "airingAt": { - "anyOf": [ - { - "minimum": 0, - "type": "number" - }, - { - "type": "null" - } - ] - }, - "episode": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "id": { - "exclusiveMinimum": 0, - "maximum": 2147483647, - "type": "integer" - }, - "timeUntilAiring": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "popularity": { - "anyOf": [ - { - "minimum": 0, - "type": "number" - }, - { - "type": "null" - } - ] - }, - "rankings": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "allTime": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "context": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "format": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "rank": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "season": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "year": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "season": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "seasonYear": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "siteUrl": { - "anyOf": [ - { - "format": "uri", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "startDate": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "day": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "month": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "year": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "status": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "streamingEpisodes": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "site": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "thumbnail": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "title": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "url": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "tags": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "isMediaSpoiler": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "name": { - "type": "string" - }, - "rank": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "title": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "english": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "native": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "romaji": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "trailer": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "id": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "site": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "thumbnail": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "volumes": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "items": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "averageScore": { - "anyOf": [ - { - "minimum": 0, - "type": "number" - }, - { - "type": "null" - } - ] - }, - "chapters": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "countryOfOrigin": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "coverImage": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "large": { - "anyOf": [ - { - "format": "uri", - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "description": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "duration": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "endDate": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "day": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "month": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "year": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "episodes": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "externalLinks": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "icon": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "id": { - "exclusiveMinimum": 0, - "maximum": 2147483647, - "type": "integer" - }, - "isDisabled": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "language": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "notes": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "site": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "url": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "format": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "genres": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "id": { - "exclusiveMinimum": 0, - "maximum": 2147483647, - "type": "integer" - }, - "idMal": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "isAdult": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "isFavourite": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "description": "[Requires login] Whether this title 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." - }, - "mediaListEntry": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "advancedScores": { - "anyOf": [ - { - "$ref": "#/$defs/__schema0" - }, - { - "type": "null" - } - ] - }, - "completedAt": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "day": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "month": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "year": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "createdAt": { - "anyOf": [ - { - "minimum": 0, - "type": "number" - }, - { - "type": "null" - } - ] - }, - "customLists": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "enabled": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "hiddenFromStatusLists": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "id": { - "exclusiveMinimum": 0, - "maximum": 2147483647, - "type": "integer" - }, - "notes": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "priority": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "private": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "progress": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "progressVolumes": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "repeat": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "score": { - "anyOf": [ - { - "minimum": 0, - "type": "number" - }, - { - "type": "null" - } - ] - }, - "startedAt": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "day": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "month": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "year": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "status": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "updatedAt": { - "anyOf": [ - { - "minimum": 0, - "type": "number" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ], - "description": "Whether this title is on the caller's own list — viewer-relative, so it only resolves when logged in; null both when logged out and when the title just isn't on the list (the two cases aren't distinguishable from this field alone)." - }, - "nextAiringEpisode": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "airingAt": { - "anyOf": [ - { - "minimum": 0, - "type": "number" - }, - { - "type": "null" - } - ] - }, - "episode": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "id": { - "exclusiveMinimum": 0, - "maximum": 2147483647, - "type": "integer" - }, - "timeUntilAiring": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "popularity": { - "anyOf": [ - { - "minimum": 0, - "type": "number" - }, - { - "type": "null" - } - ] - }, - "rankings": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "allTime": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "context": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "format": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "rank": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "season": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "year": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "season": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "seasonYear": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "siteUrl": { - "anyOf": [ - { - "format": "uri", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "startDate": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "day": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "month": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "year": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "status": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "streamingEpisodes": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "site": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "thumbnail": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "title": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "url": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "tags": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "isMediaSpoiler": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "name": { - "type": "string" - }, - "rank": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "title": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "english": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "native": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "romaji": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "trailer": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "id": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "site": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "thumbnail": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "volumes": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "type": "array" - } -]New value: +[ + { + "additionalProperties": {}, + "properties": { + "averageScore": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ], + "description": "The weighted community rating across all AniList users, on AniList's 0-100 community scale. It stays 0-100 whatever the viewer's configured scoreFormat is, since that setting only changes how anilist.co displays scores. This is NOT the 0-10 scale a personal list-entry `score` uses." + }, + "chapters": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "countryOfOrigin": { + "type": [ + "string", + "null" + ] + }, + "coverImage": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "large": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "description": { + "type": [ + "string", + "null" + ] + }, + "duration": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "endDate": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "day": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "month": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "year": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "episodes": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "externalLinks": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "icon": { + "type": [ + "string", + "null" + ] + }, + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "isDisabled": { + "type": [ + "boolean", + "null" + ] + }, + "language": { + "type": [ + "string", + "null" + ] + }, + "notes": { + "type": [ + "string", + "null" + ] + }, + "site": { + "type": [ + "string", + "null" + ] + }, + "type": { + "type": [ + "string", + "null" + ] + }, + "url": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "format": { + "type": [ + "string", + "null" + ] + }, + "genres": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "idMal": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "isAdult": { + "type": [ + "boolean", + "null" + ] + }, + "isFavourite": { + "description": "[Requires login] Whether this title 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.", + "type": [ + "boolean", + "null" + ] + }, + "mediaListEntry": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "advancedScores": { + "anyOf": [ + { + "$ref": "#/$defs/__schema0" + }, + { + "type": "null" + } + ] + }, + "completedAt": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "day": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "month": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "year": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "createdAt": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + }, + "customLists": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "enabled": { + "type": [ + "boolean", + "null" + ] + }, + "name": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "hiddenFromStatusLists": { + "type": [ + "boolean", + "null" + ] + }, + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "notes": { + "type": [ + "string", + "null" + ] + }, + "priority": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "private": { + "type": [ + "boolean", + "null" + ] + }, + "progress": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "progressVolumes": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "repeat": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "score": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ], + "description": "The caller's own score for this title, on a 0-10 scale (decimals allowed). It stays 0-10 on every account whatever the configured scoreFormat is, and matches the scale add_list_entry/update_list_entry take on write. This is NOT the 0-100 scale `averageScore`/`meanScore`/search_media's `averageScore_greater` filter use." + }, + "startedAt": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "day": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "month": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "year": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "status": { + "type": [ + "string", + "null" + ] + }, + "updatedAt": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Whether this title is on the caller's own list — viewer-relative, so it only resolves when logged in; null both when logged out and when the title just isn't on the list (the two cases aren't distinguishable from this field alone)." + }, + "nextAiringEpisode": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "airingAt": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + }, + "episode": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "timeUntilAiring": { + "type": [ + "number", + "null" + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "popularity": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + }, + "rankings": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "allTime": { + "type": [ + "boolean", + "null" + ] + }, + "context": { + "type": [ + "string", + "null" + ] + }, + "format": { + "type": [ + "string", + "null" + ] + }, + "rank": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "season": { + "type": [ + "string", + "null" + ] + }, + "type": { + "type": [ + "string", + "null" + ] + }, + "year": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "season": { + "type": [ + "string", + "null" + ] + }, + "seasonYear": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "siteUrl": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "startDate": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "day": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "month": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "year": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "status": { + "type": [ + "string", + "null" + ] + }, + "streamingEpisodes": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "site": { + "type": [ + "string", + "null" + ] + }, + "thumbnail": { + "type": [ + "string", + "null" + ] + }, + "title": { + "type": [ + "string", + "null" + ] + }, + "url": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "tags": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "isMediaSpoiler": { + "type": [ + "boolean", + "null" + ] + }, + "name": { + "type": "string" + }, + "rank": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "title": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "english": { + "type": [ + "string", + "null" + ] + }, + "native": { + "type": [ + "string", + "null" + ] + }, + "romaji": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "trailer": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "id": { + "type": [ + "string", + "null" + ] + }, + "site": { + "type": [ + "string", + "null" + ] + }, + "thumbnail": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "type": { + "type": [ + "string", + "null" + ] + }, + "volumes": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "items": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "averageScore": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ], + "description": "The weighted community rating across all AniList users, on AniList's 0-100 community scale. It stays 0-100 whatever the viewer's configured scoreFormat is, since that setting only changes how anilist.co displays scores. This is NOT the 0-10 scale a personal list-entry `score` uses." + }, + "chapters": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "countryOfOrigin": { + "type": [ + "string", + "null" + ] + }, + "coverImage": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "large": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "description": { + "type": [ + "string", + "null" + ] + }, + "duration": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "endDate": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "day": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "month": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "year": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "episodes": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "externalLinks": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "icon": { + "type": [ + "string", + "null" + ] + }, + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "isDisabled": { + "type": [ + "boolean", + "null" + ] + }, + "language": { + "type": [ + "string", + "null" + ] + }, + "notes": { + "type": [ + "string", + "null" + ] + }, + "site": { + "type": [ + "string", + "null" + ] + }, + "type": { + "type": [ + "string", + "null" + ] + }, + "url": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "format": { + "type": [ + "string", + "null" + ] + }, + "genres": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "idMal": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "isAdult": { + "type": [ + "boolean", + "null" + ] + }, + "isFavourite": { + "description": "[Requires login] Whether this title 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.", + "type": [ + "boolean", + "null" + ] + }, + "mediaListEntry": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "advancedScores": { + "anyOf": [ + { + "$ref": "#/$defs/__schema0" + }, + { + "type": "null" + } + ] + }, + "completedAt": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "day": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "month": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "year": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "createdAt": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + }, + "customLists": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "enabled": { + "type": [ + "boolean", + "null" + ] + }, + "name": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "hiddenFromStatusLists": { + "type": [ + "boolean", + "null" + ] + }, + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "notes": { + "type": [ + "string", + "null" + ] + }, + "priority": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "private": { + "type": [ + "boolean", + "null" + ] + }, + "progress": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "progressVolumes": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "repeat": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "score": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ], + "description": "The caller's own score for this title, on a 0-10 scale (decimals allowed). It stays 0-10 on every account whatever the configured scoreFormat is, and matches the scale add_list_entry/update_list_entry take on write. This is NOT the 0-100 scale `averageScore`/`meanScore`/search_media's `averageScore_greater` filter use." + }, + "startedAt": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "day": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "month": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "year": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "status": { + "type": [ + "string", + "null" + ] + }, + "updatedAt": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Whether this title is on the caller's own list — viewer-relative, so it only resolves when logged in; null both when logged out and when the title just isn't on the list (the two cases aren't distinguishable from this field alone)." + }, + "nextAiringEpisode": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "airingAt": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + }, + "episode": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "timeUntilAiring": { + "type": [ + "number", + "null" + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "popularity": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + }, + "rankings": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "allTime": { + "type": [ + "boolean", + "null" + ] + }, + "context": { + "type": [ + "string", + "null" + ] + }, + "format": { + "type": [ + "string", + "null" + ] + }, + "rank": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "season": { + "type": [ + "string", + "null" + ] + }, + "type": { + "type": [ + "string", + "null" + ] + }, + "year": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "season": { + "type": [ + "string", + "null" + ] + }, + "seasonYear": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "siteUrl": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "startDate": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "day": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "month": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "year": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "status": { + "type": [ + "string", + "null" + ] + }, + "streamingEpisodes": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "site": { + "type": [ + "string", + "null" + ] + }, + "thumbnail": { + "type": [ + "string", + "null" + ] + }, + "title": { + "type": [ + "string", + "null" + ] + }, + "url": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "tags": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "isMediaSpoiler": { + "type": [ + "boolean", + "null" + ] + }, + "name": { + "type": "string" + }, + "rank": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "title": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "english": { + "type": [ + "string", + "null" + ] + }, + "native": { + "type": [ + "string", + "null" + ] + }, + "romaji": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "trailer": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "id": { + "type": [ + "string", + "null" + ] + }, + "site": { + "type": [ + "string", + "null" + ] + }, + "thumbnail": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "type": { + "type": [ + "string", + "null" + ] + }, + "volumes": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "type": "array" + } +]
- Changed
get_media_characters5 fields changed- changed
Input schema / properties / perPage / descriptionPrevious value: -"Results per page (max 25)."New value: +"Results per page (max 50, AniList's own ceiling — it silently clamps anything higher)." - changed
Input schema / properties / perPage / maximumPrevious value: -25New value: +50 - changed
Output schema / properties / characters / properties / edges / anyOfPrevious value: -[ - { - "items": { - "additionalProperties": {}, - "properties": { - "node": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "id": { - "exclusiveMinimum": 0, - "maximum": 2147483647, - "type": "integer" - }, - "name": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "full": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "native": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "siteUrl": { - "anyOf": [ - { - "format": "uri", - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "role": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "voiceActors": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "id": { - "exclusiveMinimum": 0, - "maximum": 2147483647, - "type": "integer" - }, - "languageV2": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "name": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "full": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "items": { + "additionalProperties": {}, + "properties": { + "node": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "name": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "full": { + "type": [ + "string", + "null" + ] + }, + "native": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "siteUrl": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "role": { + "type": [ + "string", + "null" + ] + }, + "voiceActors": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "languageV2": { + "type": [ + "string", + "null" + ] + }, + "name": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "full": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } +] - removed
Output schema / properties / characters / properties / pageInfo / properties / hasNextPage / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Output schema / properties / characters / properties / pageInfo / properties / hasNextPage / typeAdded value: +[ + "boolean", + "null" +]
- Changed
get_media_relations1 field changed- changed
Output schema / properties / relations / properties / edges / anyOfPrevious value: -[ - { - "items": { - "additionalProperties": {}, - "properties": { - "node": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "format": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "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" - } - ] - }, - "type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "relationType": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "items": { + "additionalProperties": {}, + "properties": { + "node": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "format": { + "type": [ + "string", + "null" + ] + }, + "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" + } + ] + }, + "type": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "relationType": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } +]
- Changed
get_media_reviews5 fields changed- changed
Input schema / properties / perPage / descriptionPrevious value: -"Results per page (max 25)."New value: +"Results per page (max 50, AniList's own ceiling — it silently clamps anything higher)." - changed
Input schema / properties / perPage / maximumPrevious value: -25New value: +50 - changed
Output schema / properties / reviews / properties / nodes / anyOfPrevious value: -[ - { - "items": { - "additionalProperties": {}, - "properties": { - "body": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "id": { - "exclusiveMinimum": 0, - "maximum": 2147483647, - "type": "integer" - }, - "rating": { - "anyOf": [ - { - "minimum": 0, - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Net helpful votes this review received from other users (community helpfulness, confirmed live this is what results are sorted by) — not the reviewer's own opinion of the title, that's `score`." - }, - "ratingAmount": { - "anyOf": [ - { - "minimum": 0, - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Total votes cast on this review's helpfulness (helpful + unhelpful)." - }, - "score": { - "anyOf": [ - { - "minimum": 0, - "type": "number" - }, - { - "type": "null" - } - ], - "description": "The reviewer's own 0-100 rating of the title itself, not a vote count." - }, - "siteUrl": { - "anyOf": [ - { - "format": "uri", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "summary": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "user": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "id": { - "exclusiveMinimum": 0, - "maximum": 2147483647, - "type": "integer" - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "items": { + "additionalProperties": {}, + "properties": { + "body": { + "type": [ + "string", + "null" + ] + }, + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "rating": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Net helpful votes this review received from other users (community helpfulness, confirmed live this is what results are sorted by) — not the reviewer's own opinion of the title, that's `score`." + }, + "ratingAmount": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Total votes cast on this review's helpfulness (helpful + unhelpful)." + }, + "score": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ], + "description": "The reviewer's own rating of the title itself (not a vote count, that's `rating`/`ratingAmount` above), on AniList's 0-100 community scale. It stays 0-100 whatever the viewer's configured scoreFormat is, since that setting only changes how anilist.co displays scores. This is NOT the 0-10 scale a personal list-entry `score` uses." + }, + "siteUrl": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "summary": { + "type": [ + "string", + "null" + ] + }, + "user": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "name": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } +] - removed
Output schema / properties / reviews / properties / pageInfo / properties / hasNextPage / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Output schema / properties / reviews / properties / pageInfo / properties / hasNextPage / typeAdded value: +[ + "boolean", + "null" +]
- Changed
get_media_staff5 fields changed- changed
Input schema / properties / perPage / descriptionPrevious value: -"Results per page (max 25)."New value: +"Results per page (max 50, AniList's own ceiling — it silently clamps anything higher)." - changed
Input schema / properties / perPage / maximumPrevious value: -25New value: +50 - changed
Output schema / properties / staff / properties / edges / anyOfPrevious value: -[ - { - "items": { - "additionalProperties": {}, - "properties": { - "node": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "id": { - "exclusiveMinimum": 0, - "maximum": 2147483647, - "type": "integer" - }, - "name": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "full": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "role": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "items": { + "additionalProperties": {}, + "properties": { + "node": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "name": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "full": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "role": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } +] - removed
Output schema / properties / staff / properties / pageInfo / properties / hasNextPage / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Output schema / properties / staff / properties / pageInfo / properties / hasNextPage / typeAdded value: +[ + "boolean", + "null" +]
- Changed
get_media_statistics2 fields changed- changed
Output schema / properties / statistics / properties / scoreDistribution / anyOfPrevious value: -[ - { - "items": { - "additionalProperties": {}, - "properties": { - "amount": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "score": { - "anyOf": [ - { - "minimum": 0, - "type": "number" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "items": { + "additionalProperties": {}, + "properties": { + "amount": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "How many users scored the title within this bucket." + }, + "score": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ], + "description": "The upper edge of this histogram bucket (confirmed live: buckets come back as 10, 20, ... 100, i.e. ten-point bands), on AniList's 0-100 community scale. It stays 0-100 whatever the viewer's configured scoreFormat is, since that setting only changes how anilist.co displays scores. This is NOT the 0-10 scale a personal list-entry `score` uses." + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } +] - changed
Output schema / properties / statistics / properties / statusDistribution / anyOfPrevious value: -[ - { - "items": { - "additionalProperties": {}, - "properties": { - "amount": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "status": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "items": { + "additionalProperties": {}, + "properties": { + "amount": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "status": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } +]
- Changed
get_media_tags10 fields changed- changed
Input schema / properties / perPage / descriptionPrevious value: -"Results per page (max 25)."New value: +"Results per page (max 50, AniList's own ceiling — it silently clamps anything higher)." - changed
Input schema / properties / perPage / maximumPrevious value: -25New value: +50 - removed
Output schema / properties / pageInfo / properties / hasNextPage / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Output schema / properties / pageInfo / properties / hasNextPage / typeAdded value: +[ + "boolean", + "null" +] - removed
Output schema / properties / tags / items / properties / category / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / tags / items / properties / category / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / tags / items / properties / description / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / tags / items / properties / description / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / tags / items / properties / isAdult / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Output schema / properties / tags / items / properties / isAdult / typeAdded value: +[ + "boolean", + "null" +]
- Changed
get_notifications4 fields changed- changed
Input schema / properties / perPage / descriptionPrevious value: -"Results per page (max 25)."New value: +"Results per page (max 50, AniList's own ceiling — it silently clamps anything higher)." - changed
Input schema / properties / perPage / maximumPrevious value: -25New value: +50 - removed
Output schema / properties / results / properties / pageInfo / properties / hasNextPage / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Output schema / properties / results / properties / pageInfo / properties / hasNextPage / typeAdded value: +[ + "boolean", + "null" +]
- Changed
get_recommendation2 fields changed- changed
Output schema / properties / recommendation / properties / media / anyOfPrevious value: -[ - { - "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" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "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" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } +] - changed
Output schema / properties / recommendation / properties / mediaRecommendation / anyOfPrevious value: -[ - { - "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" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "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" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } +]
- Changed
get_recommendations_for_media5 fields changed- changed
Input schema / properties / perPage / descriptionPrevious value: -"Results per page (max 25)."New value: +"Results per page (max 50, AniList's own ceiling — it silently clamps anything higher)." - changed
Input schema / properties / perPage / maximumPrevious value: -25New value: +50 - changed
Output schema / properties / recommendations / properties / nodes / anyOfPrevious value: -[ - { - "items": { - "additionalProperties": {}, - "properties": { - "id": { - "exclusiveMinimum": 0, - "maximum": 2147483647, - "type": "integer" - }, - "mediaRecommendation": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "id": { - "exclusiveMinimum": 0, - "maximum": 2147483647, - "type": "integer" - }, - "mediaListEntry": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "id": { - "exclusiveMinimum": 0, - "maximum": 2147483647, - "type": "integer" - }, - "status": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ], - "description": "Whether this recommended title is on the caller's own list — viewer-relative, so it only resolves when logged in; null both when logged out and when the title just isn't on the list (the two cases aren't distinguishable from this field alone)." - }, - "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" - } - ] - }, - "rating": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Net rating (RATE_UP minus RATE_DOWN votes across all users), not the caller's own." - }, - "userRating": { - "anyOf": [ - { - "enum": [ - "NO_RATING", - "RATE_UP", - "RATE_DOWN" - ], - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "items": { + "additionalProperties": {}, + "properties": { + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "mediaRecommendation": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "mediaListEntry": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "status": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Whether this recommended title is on the caller's own list — viewer-relative, so it only resolves when logged in; null both when logged out and when the title just isn't on the list (the two cases aren't distinguishable from this field alone)." + }, + "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" + } + ] + }, + "rating": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Net rating (RATE_UP minus RATE_DOWN votes across all users), not the caller's own." + }, + "userRating": { + "anyOf": [ + { + "enum": [ + "NO_RATING", + "RATE_UP", + "RATE_DOWN" + ], + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } +] - removed
Output schema / properties / recommendations / properties / pageInfo / properties / hasNextPage / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Output schema / properties / recommendations / properties / pageInfo / properties / hasNextPage / typeAdded value: +[ + "boolean", + "null" +]
- Changed
get_site_statistics3 fields changed- changed
Output schema / properties / statistics / properties / anime / anyOfPrevious value: -[ - { - "additionalProperties": {}, - "properties": { - "nodes": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "change": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "count": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "date": { - "anyOf": [ - { - "minimum": 0, - "type": "number" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "pageInfo": { - "additionalProperties": {}, - "properties": { - "currentPage": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "hasNextPage": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "lastPage": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Final page number for the requested `perPage` size — confirmed live accurate for this field, safe to rely on to know when you've paged through everything." - }, - "perPage": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "total": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Total number of daily data points AniList has for this series — confirmed live accurate for this field (unlike this schema's usual meaning elsewhere in this server), safe to rely on." - } - }, - "type": "object" - } - }, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": {}, + "properties": { + "nodes": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "change": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "count": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "date": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "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": "Final page number for the requested `perPage` size — confirmed live accurate for this field, safe to rely on to know when you've paged through everything." + }, + "perPage": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "total": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Total number of daily data points AniList has for this series — confirmed live accurate for this field (unlike this schema's usual meaning elsewhere in this server), safe to rely on." + } + }, + "type": "object" + } + }, + "type": "object" + }, + { + "type": "null" + } +] - changed
Output schema / properties / statistics / properties / manga / anyOfPrevious value: -[ - { - "additionalProperties": {}, - "properties": { - "nodes": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "change": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "count": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "date": { - "anyOf": [ - { - "minimum": 0, - "type": "number" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "pageInfo": { - "additionalProperties": {}, - "properties": { - "currentPage": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "hasNextPage": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "lastPage": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Final page number for the requested `perPage` size — confirmed live accurate for this field, safe to rely on to know when you've paged through everything." - }, - "perPage": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "total": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Total number of daily data points AniList has for this series — confirmed live accurate for this field (unlike this schema's usual meaning elsewhere in this server), safe to rely on." - } - }, - "type": "object" - } - }, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": {}, + "properties": { + "nodes": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "change": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "count": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "date": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "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": "Final page number for the requested `perPage` size — confirmed live accurate for this field, safe to rely on to know when you've paged through everything." + }, + "perPage": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "total": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Total number of daily data points AniList has for this series — confirmed live accurate for this field (unlike this schema's usual meaning elsewhere in this server), safe to rely on." + } + }, + "type": "object" + } + }, + "type": "object" + }, + { + "type": "null" + } +] - changed
Output schema / properties / statistics / properties / users / anyOfPrevious value: -[ - { - "additionalProperties": {}, - "properties": { - "nodes": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "change": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "count": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "date": { - "anyOf": [ - { - "minimum": 0, - "type": "number" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "pageInfo": { - "additionalProperties": {}, - "properties": { - "currentPage": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "hasNextPage": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "lastPage": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Final page number for the requested `perPage` size — confirmed live accurate for this field, safe to rely on to know when you've paged through everything." - }, - "perPage": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "total": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Total number of daily data points AniList has for this series — confirmed live accurate for this field (unlike this schema's usual meaning elsewhere in this server), safe to rely on." - } - }, - "type": "object" - } - }, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": {}, + "properties": { + "nodes": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "change": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "count": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "date": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "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": "Final page number for the requested `perPage` size — confirmed live accurate for this field, safe to rely on to know when you've paged through everything." + }, + "perPage": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "total": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Total number of daily data points AniList has for this series — confirmed live accurate for this field (unlike this schema's usual meaning elsewhere in this server), safe to rely on." + } + }, + "type": "object" + } + }, + "type": "object" + }, + { + "type": "null" + } +]
- Changed
get_staff6 fields changed- removed
Output schema / properties / staff / properties / description / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / staff / properties / description / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / staff / properties / isFavourite / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Output schema / properties / staff / properties / isFavourite / typeAdded value: +[ + "boolean", + "null" +] - changed
Output schema / properties / staff / properties / name / anyOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "full": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "native": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "full": { + "type": [ + "string", + "null" + ] + }, + "native": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + { + "type": "null" + } +] - changed
Output schema / properties / staff / properties / staffMedia / anyOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "edges": { - "items": { - "additionalProperties": {}, - "properties": { - "node": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "format": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "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": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "staffRole": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - } - }, - "required": [ - "edges" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "edges": { + "items": { + "additionalProperties": {}, + "properties": { + "node": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "format": { + "type": [ + "string", + "null" + ] + }, + "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": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "staffRole": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "edges" + ], + "type": "object" + }, + { + "type": "null" + } +]
- Changed
get_studio5 fields changed- removed
Output schema / properties / studio / properties / isAnimationStudio / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Output schema / properties / studio / properties / isAnimationStudio / typeAdded value: +[ + "boolean", + "null" +] - removed
Output schema / properties / studio / properties / isFavourite / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Output schema / properties / studio / properties / isFavourite / typeAdded value: +[ + "boolean", + "null" +] - changed
Output schema / properties / studio / properties / media / anyOfPrevious 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" + } +]
- Changed
get_thread13 fields changed- removed
Output schema / properties / thread / properties / body / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / thread / properties / body / typeAdded value: +[ + "string", + "null" +] - changed
Output schema / properties / thread / properties / categories / anyOfPrevious value: -[ - { - "items": { - "additionalProperties": {}, - "properties": { - "id": { - "exclusiveMinimum": 0, - "maximum": 2147483647, - "type": "integer" - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "items": { + "additionalProperties": {}, + "properties": { + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "name": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } +] - removed
Output schema / properties / thread / properties / isLiked / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Output schema / properties / thread / properties / isLiked / typeAdded value: +[ + "boolean", + "null" +] - removed
Output schema / properties / thread / properties / isLocked / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Output schema / properties / thread / properties / isLocked / typeAdded value: +[ + "boolean", + "null" +] - removed
Output schema / properties / thread / properties / isSticky / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Output schema / properties / thread / properties / isSticky / typeAdded value: +[ + "boolean", + "null" +] - changed
Output schema / properties / thread / properties / mediaCategories / anyOfPrevious value: -[ - { - "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" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "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" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } +] - removed
Output schema / properties / thread / properties / title / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / thread / properties / title / typeAdded value: +[ + "string", + "null" +] - changed
Output schema / properties / thread / properties / user / anyOfPrevious value: -[ - { - "additionalProperties": {}, - "properties": { - "id": { - "exclusiveMinimum": 0, - "maximum": 2147483647, - "type": "integer" - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": {}, + "properties": { + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "name": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } +]
- Changed
get_thread_comments9 fields changed- changed
Input schema / properties / perPage / descriptionPrevious value: -"Results per page (max 25)."New value: +"Results per page (max 50, AniList's own ceiling — it silently clamps anything higher)." - changed
Input schema / properties / perPage / maximumPrevious value: -25New value: +50 - removed
Output schema / properties / comments / properties / pageInfo / properties / hasNextPage / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Output schema / properties / comments / properties / pageInfo / properties / hasNextPage / typeAdded value: +[ + "boolean", + "null" +] - removed
Output schema / properties / comments / properties / threadComments / items / properties / comment / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / comments / properties / threadComments / items / properties / comment / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / comments / properties / threadComments / items / properties / isLiked / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Output schema / properties / comments / properties / threadComments / items / properties / isLiked / typeAdded value: +[ + "boolean", + "null" +] - changed
Output schema / properties / comments / properties / threadComments / items / properties / user / anyOfPrevious value: -[ - { - "additionalProperties": {}, - "properties": { - "id": { - "exclusiveMinimum": 0, - "maximum": 2147483647, - "type": "integer" - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": {}, + "properties": { + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "name": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } +]
- Changed
get_todays_birthdays5 fields changed- removed
Output schema / properties / results / items / properties / description / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / results / items / properties / description / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / results / items / properties / isFavourite / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Output schema / properties / results / items / properties / isFavourite / typeAdded value: +[ + "boolean", + "null" +] - changed
Output schema / properties / results / items / properties / name / anyOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "full": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "native": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "full": { + "type": [ + "string", + "null" + ] + }, + "native": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + { + "type": "null" + } +]
- Changed
get_user_activity5 fields changed- changed
Input schema / properties / perPage / descriptionPrevious value: -"Results per page (max 25)."New value: +"Results per page (max 50, AniList's own ceiling — it silently clamps anything higher)." - changed
Input schema / properties / perPage / maximumPrevious value: -25New value: +50 - changed
Output schema / properties / results / properties / activities / items / oneOfPrevious value: -[ - { - "additionalProperties": {}, - "properties": { - "createdAt": { - "anyOf": [ - { - "minimum": 0, - "type": "number" - }, - { - "type": "null" - } - ] - }, - "id": { - "exclusiveMinimum": 0, - "maximum": 2147483647, - "type": "integer" - }, - "isLiked": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "likeCount": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "replyCount": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "siteUrl": { - "anyOf": [ - { - "format": "uri", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "text": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "type": { - "const": "TEXT", - "type": "string" - }, - "user": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "id": { - "exclusiveMinimum": 0, - "maximum": 2147483647, - "type": "integer" - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id", - "type" - ], - "type": "object" - }, - { - "additionalProperties": {}, - "properties": { - "createdAt": { - "anyOf": [ - { - "minimum": 0, - "type": "number" - }, - { - "type": "null" - } - ] - }, - "id": { - "exclusiveMinimum": 0, - "maximum": 2147483647, - "type": "integer" - }, - "isLiked": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "likeCount": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "media": { - "anyOf": [ - { - "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" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "progress": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "replyCount": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "siteUrl": { - "anyOf": [ - { - "format": "uri", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "status": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "type": { - "enum": [ - "ANIME_LIST", - "MANGA_LIST", - "MEDIA_LIST" - ], - "type": "string" - }, - "user": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "id": { - "exclusiveMinimum": 0, - "maximum": 2147483647, - "type": "integer" - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id", - "type" - ], - "type": "object" - }, - { - "additionalProperties": {}, - "properties": { - "createdAt": { - "anyOf": [ - { - "minimum": 0, - "type": "number" - }, - { - "type": "null" - } - ] - }, - "id": { - "exclusiveMinimum": 0, - "maximum": 2147483647, - "type": "integer" - }, - "isLiked": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "likeCount": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "message": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "messenger": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "id": { - "exclusiveMinimum": 0, - "maximum": 2147483647, - "type": "integer" - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "recipient": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "id": { - "exclusiveMinimum": 0, - "maximum": 2147483647, - "type": "integer" - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "replyCount": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "siteUrl": { - "anyOf": [ - { - "format": "uri", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "type": { - "const": "MESSAGE", - "type": "string" - } - }, - "required": [ - "id", - "type" - ], - "type": "object" - } -]New value: +[ + { + "additionalProperties": {}, + "properties": { + "createdAt": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + }, + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "isLiked": { + "type": [ + "boolean", + "null" + ] + }, + "likeCount": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "replyCount": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "siteUrl": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "text": { + "type": [ + "string", + "null" + ] + }, + "type": { + "const": "TEXT", + "type": "string" + }, + "user": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "name": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id", + "type" + ], + "type": "object" + }, + { + "additionalProperties": {}, + "properties": { + "createdAt": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + }, + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "isLiked": { + "type": [ + "boolean", + "null" + ] + }, + "likeCount": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "media": { + "anyOf": [ + { + "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" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "progress": { + "type": [ + "string", + "null" + ] + }, + "replyCount": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "siteUrl": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "status": { + "type": [ + "string", + "null" + ] + }, + "type": { + "enum": [ + "ANIME_LIST", + "MANGA_LIST", + "MEDIA_LIST" + ], + "type": "string" + }, + "user": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "name": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id", + "type" + ], + "type": "object" + }, + { + "additionalProperties": {}, + "properties": { + "createdAt": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + }, + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "isLiked": { + "type": [ + "boolean", + "null" + ] + }, + "likeCount": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "message": { + "type": [ + "string", + "null" + ] + }, + "messenger": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "name": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "recipient": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "name": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "replyCount": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "siteUrl": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "type": { + "const": "MESSAGE", + "type": "string" + } + }, + "required": [ + "id", + "type" + ], + "type": "object" + } +] - removed
Output schema / properties / results / properties / pageInfo / properties / hasNextPage / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Output schema / properties / results / properties / pageInfo / properties / hasNextPage / typeAdded value: +[ + "boolean", + "null" +]
- Changed
get_user_list14 fields changed- added
Input schema / properties / formatAdded value: +{ + "default": "compact", + "description": "How much of each entry to return. `compact` (default) is a tab-separated table of entry id, media id, MAL id, status, score (0-10), progress and title, one de-duplicated row per entry — enough for syncing, comparing or choosing, at about a tenth the size. `full` returns AniList's own grouped objects with dates, notes, repeat/priority, custom lists and advanced scores; use it only when you need one of those, or when you need to know which custom list an entry is filed under (`compact` drops the grouping — every row still carries its own status).", + "enum": [ + "compact", + "full" + ], + "type": "string" +} - changed
Input schema / properties / perChunk / descriptionPrevious value: -"Entries per chunk, counted across all statuses combined (max 25)."New value: +"Entries per chunk, counted across all statuses combined. Defaults to 25 so an unattended call stays small, but nothing caps it — pass a larger value (AniList accepts values in the thousands) to pull a whole list in one call instead of paging. Each entry carries its dates, notes, custom lists and advanced scores, so a few hundred entries is already a large response." - changed
Input schema / properties / perChunk / maximumPrevious value: -25New value: +9007199254740991 - added
Input schema / properties / statusesAdded value: +{ + "description": "Only return entries with these statuses (AniList filters server-side, so this genuinely shrinks the response — prefer it over fetching the whole list and discarding). Omit for every status. Custom-list groups are still returned in `full` when their entries match.", + "items": { + "enum": [ + "CURRENT", + "PLANNING", + "COMPLETED", + "DROPPED", + "PAUSED", + "REPEATING" + ], + "type": "string" + }, + "minItems": 1, + "type": "array" +} - added
Output schema / properties / columnsAdded value: +{ + "description": "`compact` only: the tab-separated column names for `rows`, in order.", + "type": "string" +} - added
Output schema / properties / countAdded value: +{ + "description": "`compact` only: how many unique entries `rows` contains.", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" +} - added
Output schema / properties / formatAdded value: +{ + "description": "Which shape this response is in — echoes the `format` argument.", + "enum": [ + "compact", + "full" + ], + "type": "string" +} - removed
Output schema / properties / hasNextChunk / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Output schema / properties / hasNextChunk / descriptionAdded value: +"True if another `chunk` of this list is available." - added
Output schema / properties / hasNextChunk / typeAdded value: +[ + "boolean", + "null" +] - changed
Output schema / properties / lists / anyOfPrevious value: -[ - { - "items": { - "additionalProperties": {}, - "properties": { - "entries": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "advancedScores": { - "anyOf": [ - { - "$ref": "#/$defs/__schema0" - }, - { - "type": "null" - } - ], - "description": "Per-category advanced scores as AniList actually stores them — an untyped value (the write side takes a plain {category: score} map via add_list_entry/update_list_entry's `advancedScores`, but the echoed read-back shape isn't guaranteed to match it)." - }, - "completedAt": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "day": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "month": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "year": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "createdAt": { - "anyOf": [ - { - "minimum": 0, - "type": "number" - }, - { - "type": "null" - } - ] - }, - "customLists": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "enabled": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "Every custom list configured on the account, with `enabled` showing whether THIS entry is filed under it. Naming a list here (via add_list_entry/update_list_entry) that isn't already in the account's `animeListOptions`/`mangaListOptions` `customLists` is silently a no-op on write — the list must exist first." - }, - "hiddenFromStatusLists": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "id": { - "exclusiveMinimum": 0, - "maximum": 2147483647, - "type": "integer" - }, - "media": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "chapters": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "episodes": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "id": { - "exclusiveMinimum": 0, - "maximum": 2147483647, - "type": "integer" - }, - "idMal": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "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" - } - ] - }, - "notes": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "priority": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "private": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "progress": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "progressVolumes": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "repeat": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "score": { - "anyOf": [ - { - "minimum": 0, - "type": "number" - }, - { - "type": "null" - } - ] - }, - "startedAt": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "day": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "month": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "year": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "status": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "updatedAt": { - "anyOf": [ - { - "minimum": 0, - "type": "number" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "isCustomList": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "isSplitCompletedList": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "status": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "items": { + "additionalProperties": {}, + "properties": { + "entries": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "advancedScores": { + "anyOf": [ + { + "$ref": "#/$defs/__schema0" + }, + { + "type": "null" + } + ], + "description": "Per-category advanced scores as AniList actually stores them — an untyped value (the write side takes a plain {category: score} map via add_list_entry/update_list_entry's `advancedScores`, but the echoed read-back shape isn't guaranteed to match it)." + }, + "completedAt": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "day": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "month": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "year": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "createdAt": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + }, + "customLists": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "enabled": { + "type": [ + "boolean", + "null" + ] + }, + "name": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "Every custom list configured on the account, with `enabled` showing whether THIS entry is filed under it. Naming a list here (via add_list_entry/update_list_entry) that isn't already in the account's `animeListOptions`/`mangaListOptions` `customLists` is silently a no-op on write — the list must exist first." + }, + "hiddenFromStatusLists": { + "type": [ + "boolean", + "null" + ] + }, + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "media": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "chapters": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "episodes": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "idMal": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "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" + } + ] + }, + "notes": { + "type": [ + "string", + "null" + ] + }, + "priority": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "private": { + "type": [ + "boolean", + "null" + ] + }, + "progress": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "progressVolumes": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "repeat": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "score": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ], + "description": "This user's own score for the entry, on a 0-10 scale (decimals allowed). It stays 0-10 on every account whatever the configured scoreFormat is, and matches the scale add_list_entry/update_list_entry take on write. This is NOT the 0-100 scale `averageScore`/`meanScore`/search_media's `averageScore_greater` filter use." + }, + "startedAt": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "day": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "month": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "year": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "status": { + "type": [ + "string", + "null" + ] + }, + "updatedAt": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "isCustomList": { + "type": [ + "boolean", + "null" + ] + }, + "isSplitCompletedList": { + "type": [ + "boolean", + "null" + ] + }, + "name": { + "type": [ + "string", + "null" + ] + }, + "status": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } +] - added
Output schema / properties / lists / descriptionAdded value: +"`full` only: AniList's own status/custom-list groups, with full entries." - added
Output schema / properties / rowsAdded value: +{ + "description": "`compact` only: one tab-separated row per entry, newline-separated, matching `columns`. An empty cell means AniList has no value for that field (e.g. no MAL id); a score of 0 means unscored.", + "type": "string" +} - added
Output schema / requiredAdded value: +[ + "format" +]
- Changed
get_user_profile12 fields changed- removed
Output schema / properties / profile / properties / about / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / profile / properties / about / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / profile / properties / donatorBadge / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / profile / properties / donatorBadge / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / profile / properties / isFollower / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Output schema / properties / profile / properties / isFollower / typeAdded value: +[ + "boolean", + "null" +] - removed
Output schema / properties / profile / properties / isFollowing / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Output schema / properties / profile / properties / isFollowing / typeAdded value: +[ + "boolean", + "null" +] - changed
Output schema / properties / profile / properties / mediaListOptions / anyOfPrevious value: -[ - { - "additionalProperties": {}, - "properties": { - "animeList": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "advancedScoring": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "advancedScoringEnabled": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "customLists": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "sectionOrder": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "splitCompletedSectionByFormat": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "theme": { - "anyOf": [ - { - "$ref": "#/$defs/__schema0" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "mangaList": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "advancedScoring": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "advancedScoringEnabled": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "customLists": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "sectionOrder": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "splitCompletedSectionByFormat": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "theme": { - "anyOf": [ - { - "$ref": "#/$defs/__schema0" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "rowOrder": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "scoreFormat": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": {}, + "properties": { + "animeList": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "advancedScoring": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "advancedScoringEnabled": { + "type": [ + "boolean", + "null" + ] + }, + "customLists": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "sectionOrder": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "splitCompletedSectionByFormat": { + "type": [ + "boolean", + "null" + ] + }, + "theme": { + "anyOf": [ + { + "$ref": "#/$defs/__schema0" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "mangaList": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "advancedScoring": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "advancedScoringEnabled": { + "type": [ + "boolean", + "null" + ] + }, + "customLists": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "sectionOrder": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "splitCompletedSectionByFormat": { + "type": [ + "boolean", + "null" + ] + }, + "theme": { + "anyOf": [ + { + "$ref": "#/$defs/__schema0" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "rowOrder": { + "type": [ + "string", + "null" + ] + }, + "scoreFormat": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + { + "type": "null" + } +] - removed
Output schema / properties / profile / properties / name / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / profile / properties / name / typeAdded value: +[ + "string", + "null" +] - changed
Output schema / properties / profile / properties / options / anyOfPrevious value: -[ - { - "additionalProperties": {}, - "properties": { - "activityMergeTime": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "airingNotifications": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "disabledListActivity": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "disabled": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "displayAdultContent": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "notificationOptions": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "enabled": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "profileColor": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "restrictMessagesToFollowing": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "staffNameLanguage": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "timezone": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "titleLanguage": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": {}, + "properties": { + "activityMergeTime": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "airingNotifications": { + "type": [ + "boolean", + "null" + ] + }, + "disabledListActivity": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "disabled": { + "type": [ + "boolean", + "null" + ] + }, + "type": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "displayAdultContent": { + "type": [ + "boolean", + "null" + ] + }, + "notificationOptions": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "enabled": { + "type": [ + "boolean", + "null" + ] + }, + "type": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "profileColor": { + "type": [ + "string", + "null" + ] + }, + "restrictMessagesToFollowing": { + "type": [ + "boolean", + "null" + ] + }, + "staffNameLanguage": { + "type": [ + "string", + "null" + ] + }, + "timezone": { + "type": [ + "string", + "null" + ] + }, + "titleLanguage": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + { + "type": "null" + } +]
- Changed
get_user_recent_activity3 fields changed- changed
Output schema / properties / activity / properties / activities / items / oneOfPrevious value: -[ - { - "additionalProperties": {}, - "properties": { - "createdAt": { - "anyOf": [ - { - "minimum": 0, - "type": "number" - }, - { - "type": "null" - } - ] - }, - "id": { - "exclusiveMinimum": 0, - "maximum": 2147483647, - "type": "integer" - }, - "isLiked": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "likeCount": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "replyCount": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "siteUrl": { - "anyOf": [ - { - "format": "uri", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "text": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "type": { - "const": "TEXT", - "type": "string" - }, - "user": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "id": { - "exclusiveMinimum": 0, - "maximum": 2147483647, - "type": "integer" - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id", - "type" - ], - "type": "object" - }, - { - "additionalProperties": {}, - "properties": { - "createdAt": { - "anyOf": [ - { - "minimum": 0, - "type": "number" - }, - { - "type": "null" - } - ] - }, - "id": { - "exclusiveMinimum": 0, - "maximum": 2147483647, - "type": "integer" - }, - "isLiked": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "likeCount": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "media": { - "anyOf": [ - { - "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" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "progress": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "replyCount": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "siteUrl": { - "anyOf": [ - { - "format": "uri", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "status": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "type": { - "enum": [ - "ANIME_LIST", - "MANGA_LIST", - "MEDIA_LIST" - ], - "type": "string" - }, - "user": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "id": { - "exclusiveMinimum": 0, - "maximum": 2147483647, - "type": "integer" - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id", - "type" - ], - "type": "object" - }, - { - "additionalProperties": {}, - "properties": { - "createdAt": { - "anyOf": [ - { - "minimum": 0, - "type": "number" - }, - { - "type": "null" - } - ] - }, - "id": { - "exclusiveMinimum": 0, - "maximum": 2147483647, - "type": "integer" - }, - "isLiked": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "likeCount": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "message": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "messenger": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "id": { - "exclusiveMinimum": 0, - "maximum": 2147483647, - "type": "integer" - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "recipient": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "id": { - "exclusiveMinimum": 0, - "maximum": 2147483647, - "type": "integer" - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "replyCount": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "siteUrl": { - "anyOf": [ - { - "format": "uri", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "type": { - "const": "MESSAGE", - "type": "string" - } - }, - "required": [ - "id", - "type" - ], - "type": "object" - } -]New value: +[ + { + "additionalProperties": {}, + "properties": { + "createdAt": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + }, + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "isLiked": { + "type": [ + "boolean", + "null" + ] + }, + "likeCount": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "replyCount": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "siteUrl": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "text": { + "type": [ + "string", + "null" + ] + }, + "type": { + "const": "TEXT", + "type": "string" + }, + "user": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "name": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id", + "type" + ], + "type": "object" + }, + { + "additionalProperties": {}, + "properties": { + "createdAt": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + }, + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "isLiked": { + "type": [ + "boolean", + "null" + ] + }, + "likeCount": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "media": { + "anyOf": [ + { + "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" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "progress": { + "type": [ + "string", + "null" + ] + }, + "replyCount": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "siteUrl": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "status": { + "type": [ + "string", + "null" + ] + }, + "type": { + "enum": [ + "ANIME_LIST", + "MANGA_LIST", + "MEDIA_LIST" + ], + "type": "string" + }, + "user": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "name": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id", + "type" + ], + "type": "object" + }, + { + "additionalProperties": {}, + "properties": { + "createdAt": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + }, + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "isLiked": { + "type": [ + "boolean", + "null" + ] + }, + "likeCount": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "message": { + "type": [ + "string", + "null" + ] + }, + "messenger": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "name": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "recipient": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "name": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "replyCount": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "siteUrl": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "type": { + "const": "MESSAGE", + "type": "string" + } + }, + "required": [ + "id", + "type" + ], + "type": "object" + } +] - removed
Output schema / properties / activity / properties / pageInfo / properties / hasNextPage / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Output schema / properties / activity / properties / pageInfo / properties / hasNextPage / typeAdded value: +[ + "boolean", + "null" +]
- Changed
get_user_stats1 field changed- changed
Output schema / properties / stats / properties / statistics / anyOfPrevious value: -[ - { - "additionalProperties": {}, - "properties": { - "anime": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "count": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "episodesWatched": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "meanScore": { - "anyOf": [ - { - "minimum": 0, - "type": "number" - }, - { - "type": "null" - } - ] - }, - "minutesWatched": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "manga": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "chaptersRead": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "count": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "meanScore": { - "anyOf": [ - { - "minimum": 0, - "type": "number" - }, - { - "type": "null" - } - ] - }, - "volumesRead": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": {}, + "properties": { + "anime": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "count": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "episodesWatched": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "meanScore": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ], + "description": "The average of this user's own anime scores, on AniList's 0-100 community scale. It stays 0-100 whatever the viewer's configured scoreFormat is, since that setting only changes how anilist.co displays scores. This is NOT the 0-10 scale a personal list-entry `score` uses." + }, + "minutesWatched": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "manga": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "chaptersRead": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "count": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "meanScore": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ], + "description": "The average of this user's own manga scores, on AniList's 0-100 community scale. It stays 0-100 whatever the viewer's configured scoreFormat is, since that setting only changes how anilist.co displays scores. This is NOT the 0-10 scale a personal list-entry `score` uses." + }, + "volumesRead": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } +]
- Changed
post_message_activity2 fields changed- removed
Output schema / properties / activity / properties / message / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / activity / properties / message / typeAdded value: +[ + "string", + "null" +]
- Changed
post_text_activity2 fields changed- removed
Output schema / properties / activity / properties / text / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / activity / properties / text / typeAdded value: +[ + "string", + "null" +]
- Changed
post_thread4 fields changed- removed
Output schema / properties / thread / properties / isLiked / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Output schema / properties / thread / properties / isLiked / typeAdded value: +[ + "boolean", + "null" +] - removed
Output schema / properties / thread / properties / title / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / thread / properties / title / typeAdded value: +[ + "string", + "null" +]
- Changed
post_thread_comment4 fields changed- removed
Output schema / properties / comment / properties / comment / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / comment / properties / comment / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / comment / properties / isLiked / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Output schema / properties / comment / properties / isLiked / typeAdded value: +[ + "boolean", + "null" +]
- Changed
remove_list_entry2 fields changed- removed
Output schema / properties / result / properties / deleted / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Output schema / properties / result / properties / deleted / typeAdded value: +[ + "boolean", + "null" +]
- Changed
search_activity6 fields changed- changed
Input schema / properties / perPage / descriptionPrevious value: -"Results per page (max 25)."New value: +"Results per page (max 50, AniList's own ceiling — it silently clamps anything higher)." - changed
Input schema / properties / perPage / maximumPrevious value: -25New value: +50 - changed
Input schema / properties / user / descriptionPrevious value: -"Restrict results to this AniList user — numeric ID or exact username (resolved to an id with one extra internal lookup; no need to call search_user first unless you only have a partial/fuzzy name). Validation is asymmetric: an unknown USERNAME errors ('No AniList user named ... was found'), but an unknown numeric ID does NOT — it silently returns an empty result, indistinguishable from 'this user has no matching activity'. Resolve a numeric ID via search_user first if you need to confirm the account actually exists. Use get_user_activity instead if you only need one user's feed without the type filter."New value: +"Restrict results to this AniList user — numeric ID or exact username (resolved to an id with one extra internal lookup; no need to call search_user first unless you only have a partial/fuzzy name). An unknown ID or username errors with not_found rather than silently returning an empty result. Use get_user_activity instead if you only need one user's feed without the type filter." - changed
Output schema / properties / results / properties / activities / items / oneOfPrevious value: -[ - { - "additionalProperties": {}, - "properties": { - "createdAt": { - "anyOf": [ - { - "minimum": 0, - "type": "number" - }, - { - "type": "null" - } - ] - }, - "id": { - "exclusiveMinimum": 0, - "maximum": 2147483647, - "type": "integer" - }, - "isLiked": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "likeCount": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "replyCount": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "siteUrl": { - "anyOf": [ - { - "format": "uri", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "text": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "type": { - "const": "TEXT", - "type": "string" - }, - "user": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "id": { - "exclusiveMinimum": 0, - "maximum": 2147483647, - "type": "integer" - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id", - "type" - ], - "type": "object" - }, - { - "additionalProperties": {}, - "properties": { - "createdAt": { - "anyOf": [ - { - "minimum": 0, - "type": "number" - }, - { - "type": "null" - } - ] - }, - "id": { - "exclusiveMinimum": 0, - "maximum": 2147483647, - "type": "integer" - }, - "isLiked": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "likeCount": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "media": { - "anyOf": [ - { - "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" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "progress": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "replyCount": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "siteUrl": { - "anyOf": [ - { - "format": "uri", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "status": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "type": { - "enum": [ - "ANIME_LIST", - "MANGA_LIST", - "MEDIA_LIST" - ], - "type": "string" - }, - "user": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "id": { - "exclusiveMinimum": 0, - "maximum": 2147483647, - "type": "integer" - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id", - "type" - ], - "type": "object" - }, - { - "additionalProperties": {}, - "properties": { - "createdAt": { - "anyOf": [ - { - "minimum": 0, - "type": "number" - }, - { - "type": "null" - } - ] - }, - "id": { - "exclusiveMinimum": 0, - "maximum": 2147483647, - "type": "integer" - }, - "isLiked": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "likeCount": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "message": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "messenger": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "id": { - "exclusiveMinimum": 0, - "maximum": 2147483647, - "type": "integer" - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "recipient": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "id": { - "exclusiveMinimum": 0, - "maximum": 2147483647, - "type": "integer" - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "replyCount": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "siteUrl": { - "anyOf": [ - { - "format": "uri", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "type": { - "const": "MESSAGE", - "type": "string" - } - }, - "required": [ - "id", - "type" - ], - "type": "object" - } -]New value: +[ + { + "additionalProperties": {}, + "properties": { + "createdAt": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + }, + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "isLiked": { + "type": [ + "boolean", + "null" + ] + }, + "likeCount": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "replyCount": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "siteUrl": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "text": { + "type": [ + "string", + "null" + ] + }, + "type": { + "const": "TEXT", + "type": "string" + }, + "user": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "name": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id", + "type" + ], + "type": "object" + }, + { + "additionalProperties": {}, + "properties": { + "createdAt": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + }, + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "isLiked": { + "type": [ + "boolean", + "null" + ] + }, + "likeCount": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "media": { + "anyOf": [ + { + "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" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "progress": { + "type": [ + "string", + "null" + ] + }, + "replyCount": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "siteUrl": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "status": { + "type": [ + "string", + "null" + ] + }, + "type": { + "enum": [ + "ANIME_LIST", + "MANGA_LIST", + "MEDIA_LIST" + ], + "type": "string" + }, + "user": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "name": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id", + "type" + ], + "type": "object" + }, + { + "additionalProperties": {}, + "properties": { + "createdAt": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + }, + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "isLiked": { + "type": [ + "boolean", + "null" + ] + }, + "likeCount": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "message": { + "type": [ + "string", + "null" + ] + }, + "messenger": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "name": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "recipient": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "name": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "replyCount": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "siteUrl": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "type": { + "const": "MESSAGE", + "type": "string" + } + }, + "required": [ + "id", + "type" + ], + "type": "object" + } +] - removed
Output schema / properties / results / properties / pageInfo / properties / hasNextPage / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Output schema / properties / results / properties / pageInfo / properties / hasNextPage / typeAdded value: +[ + "boolean", + "null" +]
- Changed
search_character4 fields changed- changed
Input schema / properties / perPage / descriptionPrevious value: -"Results per page (max 25)."New value: +"Results per page (max 50, AniList's own ceiling — it silently clamps anything higher)." - changed
Input schema / properties / perPage / maximumPrevious value: -25New value: +50 - removed
Output schema / properties / results / properties / pageInfo / properties / hasNextPage / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Output schema / properties / results / properties / pageInfo / properties / hasNextPage / typeAdded value: +[ + "boolean", + "null" +]
- Changed
search_media5 fields changed- changed
Input schema / properties / includeDescription / descriptionPrevious value: -"Also fetch each result's full synopsis (`description`). Kept off by default — with up to 25 results per call, always including it would burn tokens on text you may not need; use get_media for a single title's full synopsis instead."New value: +"Also fetch each result's full synopsis (`description`). Kept off by default — with up to 50 results per call, always including it would burn tokens on text you may not need; use get_media for a single title's full synopsis instead." - changed
Input schema / properties / perPage / descriptionPrevious value: -"Results per page (max 25)."New value: +"Results per page (max 50, AniList's own ceiling — it silently clamps anything higher)." - changed
Input schema / properties / perPage / maximumPrevious value: -25New value: +50 - removed
Output schema / properties / results / properties / pageInfo / properties / hasNextPage / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Output schema / properties / results / properties / pageInfo / properties / hasNextPage / typeAdded value: +[ + "boolean", + "null" +]
- Changed
search_staff4 fields changed- changed
Input schema / properties / perPage / descriptionPrevious value: -"Results per page (max 25)."New value: +"Results per page (max 50, AniList's own ceiling — it silently clamps anything higher)." - changed
Input schema / properties / perPage / maximumPrevious value: -25New value: +50 - removed
Output schema / properties / results / properties / pageInfo / properties / hasNextPage / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Output schema / properties / results / properties / pageInfo / properties / hasNextPage / typeAdded value: +[ + "boolean", + "null" +]
- Changed
search_studio4 fields changed- changed
Input schema / properties / perPage / descriptionPrevious value: -"Results per page (max 25)."New value: +"Results per page (max 50, AniList's own ceiling — it silently clamps anything higher)." - changed
Input schema / properties / perPage / maximumPrevious value: -25New value: +50 - removed
Output schema / properties / results / properties / pageInfo / properties / hasNextPage / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Output schema / properties / results / properties / pageInfo / properties / hasNextPage / typeAdded value: +[ + "boolean", + "null" +]
- Changed
search_thread4 fields changed- changed
Input schema / properties / perPage / descriptionPrevious value: -"Results per page (max 25)."New value: +"Results per page (max 50, AniList's own ceiling — it silently clamps anything higher)." - changed
Input schema / properties / perPage / maximumPrevious value: -25New value: +50 - removed
Output schema / properties / results / properties / pageInfo / properties / hasNextPage / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Output schema / properties / results / properties / pageInfo / properties / hasNextPage / typeAdded value: +[ + "boolean", + "null" +]
- Changed
search_user5 fields changed- added
Input schema / properties / includeDescriptionAdded value: +{ + "default": false, + "description": "Also fetch each result's full bio (`description`). Kept off by default — a bio can run to several thousand characters, and always including it would burn tokens on text you may not need; use get_user_profile/get_full_user_info for a single entry's full bio instead.", + "type": "boolean" +} - changed
Input schema / properties / perPage / descriptionPrevious value: -"Results per page (max 25)."New value: +"Results per page (max 50, AniList's own ceiling — it silently clamps anything higher)." - changed
Input schema / properties / perPage / maximumPrevious value: -25New value: +50 - removed
Output schema / properties / results / properties / pageInfo / properties / hasNextPage / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Output schema / properties / results / properties / pageInfo / properties / hasNextPage / typeAdded value: +[ + "boolean", + "null" +]
- Changed
toggle_follow_user4 fields changed- removed
Output schema / properties / user / properties / isFollowing / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Output schema / properties / user / properties / isFollowing / typeAdded value: +[ + "boolean", + "null" +] - removed
Output schema / properties / user / properties / name / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / user / properties / name / typeAdded value: +[ + "string", + "null" +]
- Added
update_list_entries - Changed
update_list_entry10 fields changed- changed
Output schema / properties / entry / properties / customLists / anyOfPrevious value: -[ - { - "items": { - "additionalProperties": {}, - "properties": { - "enabled": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "items": { + "additionalProperties": {}, + "properties": { + "enabled": { + "type": [ + "boolean", + "null" + ] + }, + "name": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } +] - removed
Output schema / properties / entry / properties / hiddenFromStatusLists / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Output schema / properties / entry / properties / hiddenFromStatusLists / typeAdded value: +[ + "boolean", + "null" +] - removed
Output schema / properties / entry / properties / notes / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / entry / properties / notes / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / entry / properties / private / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Output schema / properties / entry / properties / private / typeAdded value: +[ + "boolean", + "null" +] - added
Output schema / properties / entry / properties / score / descriptionAdded value: +"This user's own score for the entry, on a 0-10 scale (decimals allowed). It stays 0-10 on every account whatever the configured scoreFormat is, and matches the scale add_list_entry/update_list_entry take on write. This is NOT the 0-100 scale `averageScore`/`meanScore`/search_media's `averageScore_greater` filter use." - removed
Output schema / properties / entry / properties / status / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / entry / properties / status / typeAdded value: +[ + "string", + "null" +]
- Changed
update_user9 fields changed- changed
Input schema / properties / scoreFormat / descriptionPrevious value: -"Preferred list score format (affects how scores DISPLAY on anilist.co only — add_list_entry/update_list_entry's `score` parameter always stays on a 0-10 scale regardless of this setting, so no conversion is needed on your end)."New value: +"Preferred list score format. It affects how scores DISPLAY on anilist.co only: every score crossing this server stays on its own documented scale whatever this is set to, so no conversion is needed on your end. A personal list-entry score is 0-10 both on write (add_list_entry/update_list_entry) and on read (get_user_list, get_media's `mediaListEntry`); `averageScore`/`meanScore` and the search filters are 0-100." - removed
Output schema / properties / user / properties / about / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / user / properties / about / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / user / properties / donatorBadge / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / user / properties / donatorBadge / typeAdded value: +[ + "string", + "null" +] - changed
Output schema / properties / user / properties / mediaListOptions / anyOfPrevious value: -[ - { - "additionalProperties": {}, - "properties": { - "animeList": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "advancedScoring": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "advancedScoringEnabled": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "customLists": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "sectionOrder": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "splitCompletedSectionByFormat": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "theme": { - "anyOf": [ - { - "$ref": "#/$defs/__schema0" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "mangaList": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "advancedScoring": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "advancedScoringEnabled": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "customLists": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "sectionOrder": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "splitCompletedSectionByFormat": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "theme": { - "anyOf": [ - { - "$ref": "#/$defs/__schema0" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "rowOrder": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "scoreFormat": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": {}, + "properties": { + "animeList": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "advancedScoring": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "advancedScoringEnabled": { + "type": [ + "boolean", + "null" + ] + }, + "customLists": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "sectionOrder": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "splitCompletedSectionByFormat": { + "type": [ + "boolean", + "null" + ] + }, + "theme": { + "anyOf": [ + { + "$ref": "#/$defs/__schema0" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "mangaList": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "advancedScoring": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "advancedScoringEnabled": { + "type": [ + "boolean", + "null" + ] + }, + "customLists": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "sectionOrder": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "splitCompletedSectionByFormat": { + "type": [ + "boolean", + "null" + ] + }, + "theme": { + "anyOf": [ + { + "$ref": "#/$defs/__schema0" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "rowOrder": { + "type": [ + "string", + "null" + ] + }, + "scoreFormat": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + { + "type": "null" + } +] - removed
Output schema / properties / user / properties / name / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / user / properties / name / typeAdded value: +[ + "string", + "null" +] - changed
Output schema / properties / user / properties / options / anyOfPrevious value: -[ - { - "additionalProperties": {}, - "properties": { - "activityMergeTime": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "airingNotifications": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "disabledListActivity": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "disabled": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "displayAdultContent": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "notificationOptions": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "enabled": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "profileColor": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "restrictMessagesToFollowing": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "staffNameLanguage": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "timezone": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "titleLanguage": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": {}, + "properties": { + "activityMergeTime": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "airingNotifications": { + "type": [ + "boolean", + "null" + ] + }, + "disabledListActivity": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "disabled": { + "type": [ + "boolean", + "null" + ] + }, + "type": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "displayAdultContent": { + "type": [ + "boolean", + "null" + ] + }, + "notificationOptions": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "enabled": { + "type": [ + "boolean", + "null" + ] + }, + "type": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "profileColor": { + "type": [ + "string", + "null" + ] + }, + "restrictMessagesToFollowing": { + "type": [ + "boolean", + "null" + ] + }, + "staffNameLanguage": { + "type": [ + "string", + "null" + ] + }, + "timezone": { + "type": [ + "string", + "null" + ] + }, + "titleLanguage": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + { + "type": "null" + } +]
5 tool updates
v0.8.0- Changed
add_list_entry12 fields changed- added
Output schema / $defsAdded value: +{ + "__schema0": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "null" + }, + { + "items": { + "$ref": "#/$defs/__schema0" + }, + "type": "array" + }, + { + "additionalProperties": { + "$ref": "#/$defs/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + } + ] + } +} - added
Output schema / properties / entry / properties / advancedScoresAdded value: +{ + "anyOf": [ + { + "$ref": "#/$defs/__schema0" + }, + { + "type": "null" + } + ], + "description": "Per-category advanced scores as AniList actually stores them — an untyped value (the write side takes a plain {category: score} map via add_list_entry/update_list_entry's `advancedScores`, but the echoed read-back shape isn't guaranteed to match it)." +} - added
Output schema / properties / entry / properties / completedAtAdded value: +{ + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "day": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "month": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "year": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] +} - added
Output schema / properties / entry / properties / createdAtAdded value: +{ + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] +} - added
Output schema / properties / entry / properties / customListsAdded value: +{ + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "enabled": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "Every custom list configured on the account, with `enabled` showing whether THIS entry is filed under it. Naming a list here (via add_list_entry/update_list_entry) that isn't already in the account's `animeListOptions`/`mangaListOptions` `customLists` is silently a no-op on write — the list must exist first." +} - added
Output schema / properties / entry / properties / notesAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] +} - added
Output schema / properties / entry / properties / priorityAdded value: +{ + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] +} - added
Output schema / properties / entry / properties / privateAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] +} - added
Output schema / properties / entry / properties / progressVolumesAdded value: +{ + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] +} - added
Output schema / properties / entry / properties / repeatAdded value: +{ + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] +} - added
Output schema / properties / entry / properties / startedAtAdded value: +{ + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "day": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "month": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "year": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] +} - added
Output schema / properties / entry / properties / updatedAtAdded value: +{ + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] +}
- Changed
get_todays_birthdays1 field changed- added
Input schema / properties / includeDescriptionAdded value: +{ + "default": false, + "description": "Also fetch each result's full bio (`description`). Kept off by default — a bio can run to several thousand characters, and always including it would burn tokens on text you may not need; use get_character/get_staff for a single entry's full bio instead.", + "type": "boolean" +}
- Changed
search_character1 field changed- added
Input schema / properties / includeDescriptionAdded value: +{ + "default": false, + "description": "Also fetch each result's full bio (`description`). Kept off by default — a bio can run to several thousand characters, and always including it would burn tokens on text you may not need; use get_character for a single entry's full bio instead.", + "type": "boolean" +}
- Changed
search_staff1 field changed- added
Input schema / properties / includeDescriptionAdded value: +{ + "default": false, + "description": "Also fetch each result's full bio (`description`). Kept off by default — a bio can run to several thousand characters, and always including it would burn tokens on text you may not need; use get_staff for a single entry's full bio instead.", + "type": "boolean" +}
- Changed
update_list_entry12 fields changed- added
Output schema / $defsAdded value: +{ + "__schema0": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "null" + }, + { + "items": { + "$ref": "#/$defs/__schema0" + }, + "type": "array" + }, + { + "additionalProperties": { + "$ref": "#/$defs/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + } + ] + } +} - added
Output schema / properties / entry / properties / advancedScoresAdded value: +{ + "anyOf": [ + { + "$ref": "#/$defs/__schema0" + }, + { + "type": "null" + } + ], + "description": "Per-category advanced scores as AniList actually stores them — an untyped value (the write side takes a plain {category: score} map via add_list_entry/update_list_entry's `advancedScores`, but the echoed read-back shape isn't guaranteed to match it)." +} - added
Output schema / properties / entry / properties / completedAtAdded value: +{ + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "day": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "month": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "year": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] +} - added
Output schema / properties / entry / properties / createdAtAdded value: +{ + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] +} - added
Output schema / properties / entry / properties / customListsAdded value: +{ + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "enabled": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "Every custom list configured on the account, with `enabled` showing whether THIS entry is filed under it. Naming a list here (via add_list_entry/update_list_entry) that isn't already in the account's `animeListOptions`/`mangaListOptions` `customLists` is silently a no-op on write — the list must exist first." +} - added
Output schema / properties / entry / properties / notesAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] +} - added
Output schema / properties / entry / properties / priorityAdded value: +{ + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] +} - added
Output schema / properties / entry / properties / privateAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] +} - added
Output schema / properties / entry / properties / progressVolumesAdded value: +{ + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] +} - added
Output schema / properties / entry / properties / repeatAdded value: +{ + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] +} - added
Output schema / properties / entry / properties / startedAtAdded value: +{ + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "day": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "month": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "year": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] +} - added
Output schema / properties / entry / properties / updatedAtAdded value: +{ + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] +}
47 tool updates
v0.7.1- Changed
add_list_entry13 fields changed- changed
Input schema / properties / advancedScores / descriptionPrevious value: -"Per-category scores, 0-10 scale (e.g. {Story: 8, Characters: 9}) — errors if advanced scoring isn't enabled for this media's type, or if a key doesn't match the account's configured category list for it (anime and manga have SEPARATELY configured lists). Any of that list's categories you omit here is set to 0, not left unchanged — include every category if you don't want the others zeroed."New value: +"Per-category scores, 0-10 scale (e.g. {Story: 8, Characters: 9}) — errors if advanced scoring isn't enabled for this media's type, or if a key doesn't match the account's configured category list for it (anime and manga have SEPARATELY configured lists). Any of that list's categories you omit here is set to 0, not left unchanged — include every category if you don't want the others zeroed. Stored positionally, not by name: matched against the account's category order (update_user's `advancedScoring`) at READ time, not write time — if that order is later renamed/reordered, a score you write for 'Story' today can silently be read back as 'Characters' tomorrow, with no error." - added
Input schema / properties / completedAt / properties / year / exclusiveMinimumAdded value: +0 - removed
Input schema / properties / completedAt / properties / year / minimumRemoved value: --9007199254740991 - added
Input schema / properties / mediaId / exclusiveMinimumAdded value: +0 - removed
Input schema / properties / mediaId / minimumRemoved value: --2147483648 - added
Input schema / properties / startedAt / properties / year / exclusiveMinimumAdded value: +0 - removed
Input schema / properties / startedAt / properties / year / minimumRemoved value: --9007199254740991 - added
Output schema / properties / entry / properties / id / exclusiveMinimumAdded value: +0 - changed
Output schema / properties / entry / properties / id / maximumPrevious value: -9007199254740991New value: +2147483647 - removed
Output schema / properties / entry / properties / id / minimumRemoved value: --9007199254740991 - changed
Output schema / properties / entry / properties / mediaId / anyOfPrevious value: -[ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } -]New value: +[ + { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + { + "type": "null" + } +] - changed
Output schema / properties / entry / properties / progress / anyOfPrevious value: -[ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } -]New value: +[ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } +] - changed
Output schema / properties / entry / properties / score / anyOfPrevious value: -[ - { - "type": "number" - }, - { - "type": "null" - } -]New value: +[ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } +]
- Changed
delete_activity3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"AniList activity ID to delete — from get_user_activity, search_activity, or the id returned by a previous post_text_activity/post_message_activity call."New value: +"AniList activity ID to delete — from get_user_activity, get_user_recent_activity, search_activity, or the id returned by a previous post_text_activity/post_message_activity call." - added
Input schema / properties / id / exclusiveMinimumAdded value: +0 - removed
Input schema / properties / id / minimumRemoved value: --2147483648
- Changed
delete_thread2 fields changed- added
Input schema / properties / id / exclusiveMinimumAdded value: +0 - removed
Input schema / properties / id / minimumRemoved value: --2147483648
- Changed
delete_thread_comment2 fields changed- added
Input schema / properties / id / exclusiveMinimumAdded value: +0 - removed
Input schema / properties / id / minimumRemoved value: --2147483648
- Changed
get_activity7 fields changed- added
Input schema / properties / id / exclusiveMinimumAdded value: +0 - removed
Input schema / properties / id / minimumRemoved value: --2147483648 - removed
Output schema / properties / activity / additionalPropertiesRemoved value: -{} - added
Output schema / properties / activity / oneOfAdded value: +[ + { + "additionalProperties": {}, + "properties": { + "createdAt": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + }, + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "isLiked": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "likeCount": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "replyCount": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "siteUrl": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "text": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "type": { + "const": "TEXT", + "type": "string" + }, + "user": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id", + "type" + ], + "type": "object" + }, + { + "additionalProperties": {}, + "properties": { + "createdAt": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + }, + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "isLiked": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "likeCount": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "media": { + "anyOf": [ + { + "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" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "progress": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "replyCount": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "siteUrl": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "type": { + "enum": [ + "ANIME_LIST", + "MANGA_LIST", + "MEDIA_LIST" + ], + "type": "string" + }, + "user": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id", + "type" + ], + "type": "object" + }, + { + "additionalProperties": {}, + "properties": { + "createdAt": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + }, + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "isLiked": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "likeCount": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "message": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "messenger": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "recipient": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "replyCount": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "siteUrl": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "type": { + "const": "MESSAGE", + "type": "string" + } + }, + "required": [ + "id", + "type" + ], + "type": "object" + } +] - removed
Output schema / properties / activity / propertiesRemoved value: -{ - "createdAt": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "id": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - "isLiked": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "likeCount": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "media": { - "anyOf": [ - { - "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" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "message": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "messenger": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "id": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "progress": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "recipient": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "id": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "replyCount": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "siteUrl": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "status": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "text": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "user": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "id": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ] - } -} - removed
Output schema / properties / activity / requiredRemoved value: -[ - "id" -] - removed
Output schema / properties / activity / typeRemoved value: -"object"
- Changed
get_anime_schedule11 fields changed- changed
Input schema / properties / mediaId / descriptionPrevious value: -"Restrict to this AniList anime ID."New value: +"Restrict to this AniList anime ID (not manga)." - added
Input schema / properties / mediaId / exclusiveMinimumAdded value: +0 - removed
Input schema / properties / mediaId / minimumRemoved value: --2147483648 - changed
Input schema / properties / notYetAired / descriptionPrevious 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)." - changed
Input schema / properties / page / descriptionPrevious 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." - added
Input schema / properties / perPage / exclusiveMinimumAdded value: +0 - removed
Input schema / properties / perPage / minimumRemoved value: -1 - added
Output schema / properties / hasNextPageAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] +} - changed
Output schema / properties / schedule / items / properties / airingAt / anyOfPrevious value: -[ - { - "type": "number" - }, - { - "type": "null" - } -]New value: +[ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } +] - changed
Output schema / properties / schedule / items / properties / episode / anyOfPrevious value: -[ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } -]New value: +[ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } +] - changed
Output schema / properties / schedule / items / properties / media / anyOfPrevious 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" + } +]
- Changed
get_authorized_user11 fields changed- added
Output schema / $defsAdded value: +{ + "__schema0": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "null" + }, + { + "items": { + "$ref": "#/$defs/__schema0" + }, + "type": "array" + }, + { + "additionalProperties": { + "$ref": "#/$defs/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + } + ] + } +} - changed
Output schema / properties / user / properties / avatar / anyOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "large": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "large": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } +] - changed
Output schema / properties / user / properties / bannerImage / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } +] - added
Output schema / properties / user / properties / donatorBadge / descriptionAdded value: +"AniList returns \"Donator\" here even for a non-donator (donatorTier 0); it's an upstream default label, not proof the user donates. A user's donatorTier (0 = non-donator) is the real signal." - changed
Output schema / properties / user / properties / donatorTier / anyOfPrevious value: -[ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } -]New value: +[ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } +] - added
Output schema / properties / user / properties / id / exclusiveMinimumAdded value: +0 - changed
Output schema / properties / user / properties / id / maximumPrevious value: -9007199254740991New value: +2147483647 - removed
Output schema / properties / user / properties / id / minimumRemoved value: --9007199254740991 - changed
Output schema / properties / user / properties / mediaListOptions / anyOfPrevious value: -[ - { - "additionalProperties": {}, - "properties": { - "animeList": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "advancedScoring": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "advancedScoringEnabled": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "customLists": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "sectionOrder": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "splitCompletedSectionByFormat": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "theme": { - "anyOf": [ - {}, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "mangaList": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "advancedScoring": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "advancedScoringEnabled": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "customLists": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "sectionOrder": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "splitCompletedSectionByFormat": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "theme": { - "anyOf": [ - {}, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "rowOrder": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "scoreFormat": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": {}, + "properties": { + "animeList": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "advancedScoring": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "advancedScoringEnabled": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "customLists": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "sectionOrder": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "splitCompletedSectionByFormat": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "theme": { + "anyOf": [ + { + "$ref": "#/$defs/__schema0" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "mangaList": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "advancedScoring": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "advancedScoringEnabled": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "customLists": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "sectionOrder": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "splitCompletedSectionByFormat": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "theme": { + "anyOf": [ + { + "$ref": "#/$defs/__schema0" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "rowOrder": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "scoreFormat": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } +] - changed
Output schema / properties / user / properties / options / anyOfPrevious value: -[ - { - "additionalProperties": {}, - "properties": { - "activityMergeTime": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "airingNotifications": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "disabledListActivity": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "disabled": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "displayAdultContent": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "notificationOptions": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "enabled": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "profileColor": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "restrictMessagesToFollowing": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "staffNameLanguage": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "timezone": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "titleLanguage": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": {}, + "properties": { + "activityMergeTime": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "airingNotifications": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "disabledListActivity": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "disabled": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "type": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "displayAdultContent": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "notificationOptions": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "enabled": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "type": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "profileColor": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "restrictMessagesToFollowing": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "staffNameLanguage": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "timezone": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "titleLanguage": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } +] - changed
Output schema / properties / user / properties / siteUrl / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } +]
- Changed
get_character10 fields changed- added
Input schema / properties / id / exclusiveMinimumAdded value: +0 - removed
Input schema / properties / id / minimumRemoved value: --2147483648 - changed
Output schema / properties / character / properties / favourites / anyOfPrevious value: -[ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } -]New value: +[ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } +] - added
Output schema / properties / character / properties / id / exclusiveMinimumAdded value: +0 - changed
Output schema / properties / character / properties / id / maximumPrevious value: -9007199254740991New value: +2147483647 - removed
Output schema / properties / character / properties / id / minimumRemoved value: --9007199254740991 - changed
Output schema / properties / character / properties / image / anyOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "large": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "large": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } +] - added
Output schema / properties / character / properties / isFavourite / descriptionAdded value: +"[Requires login] Whether this character 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." - changed
Output schema / properties / character / properties / media / anyOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "edges": { - "items": { - "additionalProperties": {}, - "properties": { - "characterRole": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "node": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "format": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "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": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - } - }, - "required": [ - "edges" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "edges": { + "items": { + "additionalProperties": {}, + "properties": { + "characterRole": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "node": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "format": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "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": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "edges" + ], + "type": "object" + }, + { + "type": "null" + } +] - changed
Output schema / properties / character / properties / siteUrl / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } +]
- Changed
get_full_user_info13 fields changed- changed
Input schema / properties / user / anyOfPrevious value: -[ - { - "maximum": 2147483647, - "minimum": -2147483648, - "type": "integer" - }, - { - "minLength": 1, - "type": "string" - } -]New value: +[ + { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + { + "minLength": 1, + "type": "string" + } +] - added
Output schema / $defsAdded value: +{ + "__schema0": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "null" + }, + { + "items": { + "$ref": "#/$defs/__schema0" + }, + "type": "array" + }, + { + "additionalProperties": { + "$ref": "#/$defs/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + } + ] + } +} - changed
Output schema / properties / user / properties / avatar / anyOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "large": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "large": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } +] - changed
Output schema / properties / user / properties / bannerImage / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } +] - added
Output schema / properties / user / properties / donatorBadge / descriptionAdded value: +"AniList returns \"Donator\" here even for a non-donator (donatorTier 0); it's an upstream default label, not proof the user donates. A user's donatorTier (0 = non-donator) is the real signal." - changed
Output schema / properties / user / properties / donatorTier / anyOfPrevious value: -[ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } -]New value: +[ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } +] - added
Output schema / properties / user / properties / id / exclusiveMinimumAdded value: +0 - changed
Output schema / properties / user / properties / id / maximumPrevious value: -9007199254740991New value: +2147483647 - removed
Output schema / properties / user / properties / id / minimumRemoved value: --9007199254740991 - changed
Output schema / properties / user / properties / mediaListOptions / anyOfPrevious value: -[ - { - "additionalProperties": {}, - "properties": { - "animeList": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "advancedScoring": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "advancedScoringEnabled": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "customLists": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "sectionOrder": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "splitCompletedSectionByFormat": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "theme": { - "anyOf": [ - {}, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "mangaList": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "advancedScoring": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "advancedScoringEnabled": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "customLists": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "sectionOrder": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "splitCompletedSectionByFormat": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "theme": { - "anyOf": [ - {}, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "rowOrder": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "scoreFormat": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": {}, + "properties": { + "animeList": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "advancedScoring": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "advancedScoringEnabled": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "customLists": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "sectionOrder": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "splitCompletedSectionByFormat": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "theme": { + "anyOf": [ + { + "$ref": "#/$defs/__schema0" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "mangaList": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "advancedScoring": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "advancedScoringEnabled": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "customLists": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "sectionOrder": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "splitCompletedSectionByFormat": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "theme": { + "anyOf": [ + { + "$ref": "#/$defs/__schema0" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "rowOrder": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "scoreFormat": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } +] - changed
Output schema / properties / user / properties / options / anyOfPrevious value: -[ - { - "additionalProperties": {}, - "properties": { - "activityMergeTime": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "airingNotifications": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "disabledListActivity": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "disabled": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "displayAdultContent": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "notificationOptions": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "enabled": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "profileColor": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "restrictMessagesToFollowing": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "staffNameLanguage": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "timezone": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "titleLanguage": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": {}, + "properties": { + "activityMergeTime": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "airingNotifications": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "disabledListActivity": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "disabled": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "type": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "displayAdultContent": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "notificationOptions": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "enabled": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "type": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "profileColor": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "restrictMessagesToFollowing": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "staffNameLanguage": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "timezone": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "titleLanguage": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } +] - changed
Output schema / properties / user / properties / siteUrl / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } +] - changed
Output schema / properties / user / properties / statistics / anyOfPrevious value: -[ - { - "additionalProperties": {}, - "properties": { - "anime": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "count": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "episodesWatched": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "meanScore": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "minutesWatched": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "manga": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "chaptersRead": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "count": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "meanScore": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "volumesRead": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": {}, + "properties": { + "anime": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "count": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "episodesWatched": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "meanScore": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + }, + "minutesWatched": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "manga": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "chaptersRead": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "count": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "meanScore": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + }, + "volumesRead": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } +]
- Changed
get_media4 fields changed- changed
Input schema / properties / ids / anyOfPrevious value: -[ - { - "maximum": 2147483647, - "minimum": -2147483648, - "type": "integer" - }, - { - "items": { - "maximum": 2147483647, - "minimum": -2147483648, - "type": "integer" - }, - "minItems": 1, - "type": "array" - } -]New value: +[ + { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + { + "items": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "maxItems": 25, + "minItems": 1, + "type": "array" + } +] - changed
Input schema / properties / ids / descriptionPrevious value: -"A single AniList anime/manga ID, or an array of IDs to fetch in one call."New value: +"A single AniList anime/manga ID, or an array of up to 25 IDs to fetch in one call (same cap as this codebase's paginated list tools — each entry returned here includes the full synopsis/tags/rankings, so an uncapped batch could return a very large response)." - added
Output schema / $defsAdded value: +{ + "__schema0": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "null" + }, + { + "items": { + "$ref": "#/$defs/__schema0" + }, + "type": "array" + }, + { + "additionalProperties": { + "$ref": "#/$defs/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + } + ] + } +} - changed
Output schema / properties / media / anyOfPrevious value: -[ - { - "additionalProperties": {}, - "properties": { - "averageScore": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "chapters": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "countryOfOrigin": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "coverImage": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "large": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "description": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "duration": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "endDate": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "day": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "month": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "year": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "episodes": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "externalLinks": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "icon": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "id": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - "isDisabled": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "language": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "notes": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "site": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "url": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "format": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "genres": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "id": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - "idMal": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "isAdult": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "isFavourite": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "mediaListEntry": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "advancedScores": { - "anyOf": [ - {}, - { - "type": "null" - } - ] - }, - "completedAt": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "day": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "month": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "year": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "createdAt": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "customLists": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "enabled": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "hiddenFromStatusLists": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "id": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - "notes": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "priority": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "private": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "progress": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "progressVolumes": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "repeat": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "score": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "startedAt": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "day": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "month": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "year": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "status": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "updatedAt": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "nextAiringEpisode": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "airingAt": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "episode": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "id": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - "timeUntilAiring": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "popularity": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "rankings": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "allTime": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "context": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "format": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "rank": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "season": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "year": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "season": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "seasonYear": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "siteUrl": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "startDate": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "day": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "month": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "year": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "status": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "streamingEpisodes": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "site": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "thumbnail": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "title": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "url": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "tags": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "isMediaSpoiler": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "name": { - "type": "string" - }, - "rank": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "title": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "english": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "native": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "romaji": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "trailer": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "id": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "site": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "thumbnail": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "volumes": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "items": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "averageScore": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "chapters": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "countryOfOrigin": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "coverImage": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "large": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "description": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "duration": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "endDate": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "day": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "month": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "year": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "episodes": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "externalLinks": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "icon": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "id": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - "isDisabled": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "language": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "notes": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "site": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "url": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "format": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "genres": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "id": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - "idMal": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "isAdult": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "isFavourite": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "mediaListEntry": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "advancedScores": { - "anyOf": [ - {}, - { - "type": "null" - } - ] - }, - "completedAt": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "day": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "month": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "year": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "createdAt": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "customLists": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "enabled": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "hiddenFromStatusLists": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "id": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - "notes": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "priority": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "private": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "progress": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "progressVolumes": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "repeat": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "score": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "startedAt": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "day": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "month": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "year": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "status": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "updatedAt": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "nextAiringEpisode": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "airingAt": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "episode": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "id": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - "timeUntilAiring": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "popularity": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "rankings": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "allTime": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "context": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "format": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "rank": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "season": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "year": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "season": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "seasonYear": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "siteUrl": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "startDate": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "day": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "month": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "year": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "status": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "streamingEpisodes": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "site": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "thumbnail": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "title": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "url": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "tags": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "isMediaSpoiler": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "name": { - "type": "string" - }, - "rank": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "title": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "english": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "native": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "romaji": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "trailer": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "id": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "site": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "thumbnail": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "volumes": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "type": "array" - } -]New value: +[ + { + "additionalProperties": {}, + "properties": { + "averageScore": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + }, + "chapters": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "countryOfOrigin": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "coverImage": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "large": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "duration": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "endDate": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "day": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "month": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "year": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "episodes": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "externalLinks": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "icon": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "isDisabled": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "language": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "site": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "type": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "format": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "genres": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "idMal": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "isAdult": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "isFavourite": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "[Requires login] Whether this title 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." + }, + "mediaListEntry": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "advancedScores": { + "anyOf": [ + { + "$ref": "#/$defs/__schema0" + }, + { + "type": "null" + } + ] + }, + "completedAt": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "day": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "month": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "year": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "createdAt": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + }, + "customLists": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "enabled": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "hiddenFromStatusLists": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "priority": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "private": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "progress": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "progressVolumes": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "repeat": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "score": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + }, + "startedAt": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "day": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "month": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "year": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "updatedAt": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Whether this title is on the caller's own list — viewer-relative, so it only resolves when logged in; null both when logged out and when the title just isn't on the list (the two cases aren't distinguishable from this field alone)." + }, + "nextAiringEpisode": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "airingAt": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + }, + "episode": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "timeUntilAiring": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "popularity": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + }, + "rankings": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "allTime": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "context": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "format": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "rank": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "season": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "type": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "year": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "season": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "seasonYear": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "siteUrl": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "startDate": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "day": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "month": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "year": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "streamingEpisodes": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "site": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "thumbnail": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "tags": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "isMediaSpoiler": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "name": { + "type": "string" + }, + "rank": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "title": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "english": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "native": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "romaji": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "trailer": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "site": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "thumbnail": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "type": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "volumes": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "items": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "averageScore": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + }, + "chapters": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "countryOfOrigin": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "coverImage": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "large": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "duration": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "endDate": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "day": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "month": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "year": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "episodes": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "externalLinks": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "icon": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "isDisabled": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "language": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "site": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "type": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "format": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "genres": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "idMal": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "isAdult": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "isFavourite": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "[Requires login] Whether this title 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." + }, + "mediaListEntry": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "advancedScores": { + "anyOf": [ + { + "$ref": "#/$defs/__schema0" + }, + { + "type": "null" + } + ] + }, + "completedAt": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "day": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "month": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "year": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "createdAt": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + }, + "customLists": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "enabled": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "hiddenFromStatusLists": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "priority": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "private": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "progress": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "progressVolumes": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "repeat": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "score": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + }, + "startedAt": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "day": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "month": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "year": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "updatedAt": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Whether this title is on the caller's own list — viewer-relative, so it only resolves when logged in; null both when logged out and when the title just isn't on the list (the two cases aren't distinguishable from this field alone)." + }, + "nextAiringEpisode": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "airingAt": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + }, + "episode": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "timeUntilAiring": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "popularity": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + }, + "rankings": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "allTime": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "context": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "format": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "rank": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "season": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "type": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "year": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "season": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "seasonYear": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "siteUrl": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "startDate": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "day": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "month": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "year": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "streamingEpisodes": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "site": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "thumbnail": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "tags": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "isMediaSpoiler": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "name": { + "type": "string" + }, + "rank": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "title": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "english": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "native": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "romaji": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "trailer": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "site": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "thumbnail": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "type": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "volumes": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "type": "array" + } +]
- Changed
get_media_characters6 fields changed- added
Input schema / properties / id / exclusiveMinimumAdded value: +0 - removed
Input schema / properties / id / minimumRemoved value: --2147483648 - changed
Input schema / properties / page / descriptionPrevious 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." - added
Input schema / properties / perPage / exclusiveMinimumAdded value: +0 - removed
Input schema / properties / perPage / minimumRemoved value: -1 - changed
Output schema / properties / characters / properties / edges / anyOfPrevious value: -[ - { - "items": { - "additionalProperties": {}, - "properties": { - "node": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "id": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - "name": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "full": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "native": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "siteUrl": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "role": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "voiceActors": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "id": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - "languageV2": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "name": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "full": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "items": { + "additionalProperties": {}, + "properties": { + "node": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "name": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "full": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "native": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "siteUrl": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "role": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "voiceActors": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "languageV2": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "name": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "full": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } +]
- Changed
get_media_relations5 fields changed- added
Input schema / properties / id / exclusiveMinimumAdded value: +0 - removed
Input schema / properties / id / minimumRemoved value: --2147483648 - changed
Input schema / properties / type / descriptionPrevious value: -"Whether `id` refers to an anime or a manga."New value: +"Whether `id` refers to anime or manga." - changed
Input schema / requiredPrevious value: -[ - "id", - "type" -]New value: +[ + "type", + "id" +] - changed
Output schema / properties / relations / properties / edges / anyOfPrevious value: -[ - { - "items": { - "additionalProperties": {}, - "properties": { - "node": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "format": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "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" - } - ] - }, - "type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "relationType": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "items": { + "additionalProperties": {}, + "properties": { + "node": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "format": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "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" + } + ] + }, + "type": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "relationType": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } +]
- Changed
get_media_reviews6 fields changed- added
Input schema / properties / id / exclusiveMinimumAdded value: +0 - removed
Input schema / properties / id / minimumRemoved value: --2147483648 - changed
Input schema / properties / page / descriptionPrevious 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." - added
Input schema / properties / perPage / exclusiveMinimumAdded value: +0 - removed
Input schema / properties / perPage / minimumRemoved value: -1 - changed
Output schema / properties / reviews / properties / nodes / anyOfPrevious value: -[ - { - "items": { - "additionalProperties": {}, - "properties": { - "body": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "id": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - "rating": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "ratingAmount": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "score": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "siteUrl": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "summary": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "user": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "id": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "items": { + "additionalProperties": {}, + "properties": { + "body": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "rating": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Net helpful votes this review received from other users (community helpfulness, confirmed live this is what results are sorted by) — not the reviewer's own opinion of the title, that's `score`." + }, + "ratingAmount": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Total votes cast on this review's helpfulness (helpful + unhelpful)." + }, + "score": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ], + "description": "The reviewer's own 0-100 rating of the title itself, not a vote count." + }, + "siteUrl": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "summary": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "user": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } +]
- Changed
get_media_staff6 fields changed- added
Input schema / properties / id / exclusiveMinimumAdded value: +0 - removed
Input schema / properties / id / minimumRemoved value: --2147483648 - changed
Input schema / properties / page / descriptionPrevious 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." - added
Input schema / properties / perPage / exclusiveMinimumAdded value: +0 - removed
Input schema / properties / perPage / minimumRemoved value: -1 - changed
Output schema / properties / staff / properties / edges / anyOfPrevious value: -[ - { - "items": { - "additionalProperties": {}, - "properties": { - "node": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "id": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - "name": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "full": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "role": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "items": { + "additionalProperties": {}, + "properties": { + "node": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "name": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "full": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "role": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } +]
- Changed
get_media_statistics4 fields changed- added
Input schema / properties / id / exclusiveMinimumAdded value: +0 - removed
Input schema / properties / id / minimumRemoved value: --2147483648 - changed
Output schema / properties / statistics / properties / scoreDistribution / anyOfPrevious value: -[ - { - "items": { - "additionalProperties": {}, - "properties": { - "amount": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "score": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "items": { + "additionalProperties": {}, + "properties": { + "amount": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "score": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } +] - changed
Output schema / properties / statistics / properties / statusDistribution / anyOfPrevious value: -[ - { - "items": { - "additionalProperties": {}, - "properties": { - "amount": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "status": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "items": { + "additionalProperties": {}, + "properties": { + "amount": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } +]
- Changed
get_media_tags6 fields changed- changed
Input schema / properties / page / descriptionPrevious 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." - added
Input schema / properties / perPage / exclusiveMinimumAdded value: +0 - removed
Input schema / properties / perPage / minimumRemoved value: -1 - added
Output schema / properties / tags / items / properties / id / exclusiveMinimumAdded value: +0 - changed
Output schema / properties / tags / items / properties / id / maximumPrevious value: -9007199254740991New value: +2147483647 - removed
Output schema / properties / tags / items / properties / id / minimumRemoved value: --9007199254740991
- Changed
get_notifications12 fields changed- changed
Input schema / properties / page / descriptionPrevious 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." - added
Input schema / properties / perPage / exclusiveMinimumAdded value: +0 - removed
Input schema / properties / perPage / minimumRemoved value: -1 - changed
Input schema / properties / type_in / descriptionPrevious value: -"Restrict to these notification types. Omit to get every type."New value: +"Restrict to these notification types. Omit to get every type. This only filters what's returned here — whether a type is generated at all is controlled separately by the account's own notificationOptions (update_user); a type disabled there simply never appears, regardless of this filter." - added
Output schema / properties / results / properties / notifications / items / properties / id / exclusiveMinimumAdded value: +0 - changed
Output schema / properties / results / properties / notifications / items / properties / id / maximumPrevious value: -9007199254740991New value: +2147483647 - removed
Output schema / properties / results / properties / notifications / items / properties / id / minimumRemoved value: --9007199254740991 - added
Output schema / properties / results / properties / pageInfo / descriptionAdded value: +"Whether another page exists — this query only ever requests hasNextPage, not total/currentPage/lastPage (unlike some sibling paginated tools)." - removed
Output schema / properties / results / properties / pageInfo / properties / currentPageRemoved value: -{ - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] -} - removed
Output schema / properties / results / properties / pageInfo / properties / lastPageRemoved value: -{ - "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." -} - removed
Output schema / properties / results / properties / pageInfo / properties / perPageRemoved value: -{ - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] -} - removed
Output schema / properties / results / properties / pageInfo / properties / totalRemoved value: -{ - "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." -}
- Changed
get_recommendation10 fields changed- added
Input schema / properties / id / exclusiveMinimumAdded value: +0 - removed
Input schema / properties / id / minimumRemoved value: --2147483648 - added
Output schema / properties / recommendation / properties / id / exclusiveMinimumAdded value: +0 - changed
Output schema / properties / recommendation / properties / id / maximumPrevious value: -9007199254740991New value: +2147483647 - removed
Output schema / properties / recommendation / properties / id / minimumRemoved value: --9007199254740991 - changed
Output schema / properties / recommendation / properties / media / anyOfPrevious value: -[ - { - "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" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "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" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } +] - changed
Output schema / properties / recommendation / properties / mediaRecommendation / anyOfPrevious value: -[ - { - "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" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "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" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } +] - changed
Output schema / properties / recommendation / properties / rating / anyOfPrevious value: -[ - { - "type": "number" - }, - { - "type": "null" - } -]New value: +[ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } +] - added
Output schema / properties / recommendation / properties / rating / descriptionAdded value: +"Net rating (RATE_UP minus RATE_DOWN votes across all users), not the caller's own." - changed
Output schema / properties / recommendation / properties / userRating / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "enum": [ + "NO_RATING", + "RATE_UP", + "RATE_DOWN" + ], + "type": "string" + }, + { + "type": "null" + } +]
- Changed
get_recommendations_for_media6 fields changed- added
Input schema / properties / mediaId / exclusiveMinimumAdded value: +0 - removed
Input schema / properties / mediaId / minimumRemoved value: --2147483648 - changed
Input schema / properties / page / descriptionPrevious 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." - added
Input schema / properties / perPage / exclusiveMinimumAdded value: +0 - removed
Input schema / properties / perPage / minimumRemoved value: -1 - changed
Output schema / properties / recommendations / properties / nodes / anyOfPrevious value: -[ - { - "items": { - "additionalProperties": {}, - "properties": { - "id": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - "mediaRecommendation": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "id": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - "mediaListEntry": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "id": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - "status": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ], - "description": "Whether this recommended title is on the caller's own list — viewer-relative, so it only resolves when logged in; null both when logged out and when the title just isn't on the list (the two cases aren't distinguishable from this field alone)." - }, - "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" - } - ] - }, - "rating": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "userRating": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "items": { + "additionalProperties": {}, + "properties": { + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "mediaRecommendation": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "mediaListEntry": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Whether this recommended title is on the caller's own list — viewer-relative, so it only resolves when logged in; null both when logged out and when the title just isn't on the list (the two cases aren't distinguishable from this field alone)." + }, + "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" + } + ] + }, + "rating": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Net rating (RATE_UP minus RATE_DOWN votes across all users), not the caller's own." + }, + "userRating": { + "anyOf": [ + { + "enum": [ + "NO_RATING", + "RATE_UP", + "RATE_DOWN" + ], + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } +]
- Changed
get_site_statistics3 fields changed- changed
Output schema / properties / statistics / properties / anime / anyOfPrevious value: -[ - { - "additionalProperties": {}, - "properties": { - "nodes": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "change": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "count": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "date": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "pageInfo": { - "additionalProperties": {}, - "properties": { - "currentPage": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "hasNextPage": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "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" - } -]New value: +[ + { + "additionalProperties": {}, + "properties": { + "nodes": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "change": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "count": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "date": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "pageInfo": { + "additionalProperties": {}, + "properties": { + "currentPage": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "hasNextPage": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "lastPage": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Final page number for the requested `perPage` size — confirmed live accurate for this field, safe to rely on to know when you've paged through everything." + }, + "perPage": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "total": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Total number of daily data points AniList has for this series — confirmed live accurate for this field (unlike this schema's usual meaning elsewhere in this server), safe to rely on." + } + }, + "type": "object" + } + }, + "type": "object" + }, + { + "type": "null" + } +] - changed
Output schema / properties / statistics / properties / manga / anyOfPrevious value: -[ - { - "additionalProperties": {}, - "properties": { - "nodes": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "change": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "count": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "date": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "pageInfo": { - "additionalProperties": {}, - "properties": { - "currentPage": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "hasNextPage": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "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" - } -]New value: +[ + { + "additionalProperties": {}, + "properties": { + "nodes": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "change": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "count": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "date": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "pageInfo": { + "additionalProperties": {}, + "properties": { + "currentPage": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "hasNextPage": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "lastPage": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Final page number for the requested `perPage` size — confirmed live accurate for this field, safe to rely on to know when you've paged through everything." + }, + "perPage": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "total": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Total number of daily data points AniList has for this series — confirmed live accurate for this field (unlike this schema's usual meaning elsewhere in this server), safe to rely on." + } + }, + "type": "object" + } + }, + "type": "object" + }, + { + "type": "null" + } +] - changed
Output schema / properties / statistics / properties / users / anyOfPrevious value: -[ - { - "additionalProperties": {}, - "properties": { - "nodes": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "change": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "count": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "date": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "pageInfo": { - "additionalProperties": {}, - "properties": { - "currentPage": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "hasNextPage": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "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" - } -]New value: +[ + { + "additionalProperties": {}, + "properties": { + "nodes": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "change": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "count": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "date": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "pageInfo": { + "additionalProperties": {}, + "properties": { + "currentPage": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "hasNextPage": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "lastPage": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Final page number for the requested `perPage` size — confirmed live accurate for this field, safe to rely on to know when you've paged through everything." + }, + "perPage": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "total": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Total number of daily data points AniList has for this series — confirmed live accurate for this field (unlike this schema's usual meaning elsewhere in this server), safe to rely on." + } + }, + "type": "object" + } + }, + "type": "object" + }, + { + "type": "null" + } +]
- Changed
get_staff10 fields changed- added
Input schema / properties / id / exclusiveMinimumAdded value: +0 - removed
Input schema / properties / id / minimumRemoved value: --2147483648 - changed
Output schema / properties / staff / properties / favourites / anyOfPrevious value: -[ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } -]New value: +[ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } +] - added
Output schema / properties / staff / properties / id / exclusiveMinimumAdded value: +0 - changed
Output schema / properties / staff / properties / id / maximumPrevious value: -9007199254740991New value: +2147483647 - removed
Output schema / properties / staff / properties / id / minimumRemoved value: --9007199254740991 - changed
Output schema / properties / staff / properties / image / anyOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "large": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "large": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } +] - added
Output schema / properties / staff / properties / isFavourite / descriptionAdded value: +"[Requires login] Whether this staff member 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." - changed
Output schema / properties / staff / properties / siteUrl / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } +] - changed
Output schema / properties / staff / properties / staffMedia / anyOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "edges": { - "items": { - "additionalProperties": {}, - "properties": { - "node": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "format": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "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": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "staffRole": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - } - }, - "required": [ - "edges" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "edges": { + "items": { + "additionalProperties": {}, + "properties": { + "node": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "format": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "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": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "staffRole": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "edges" + ], + "type": "object" + }, + { + "type": "null" + } +]
- Changed
get_studio8 fields changed- added
Input schema / properties / id / exclusiveMinimumAdded value: +0 - removed
Input schema / properties / id / minimumRemoved value: --2147483648 - added
Output schema / properties / studio / properties / id / exclusiveMinimumAdded value: +0 - changed
Output schema / properties / studio / properties / id / maximumPrevious value: -9007199254740991New value: +2147483647 - removed
Output schema / properties / studio / properties / id / minimumRemoved value: --9007199254740991 - added
Output schema / properties / studio / properties / isFavourite / descriptionAdded 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." - changed
Output schema / properties / studio / properties / media / anyOfPrevious 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" + } +] - changed
Output schema / properties / studio / properties / siteUrl / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } +]
- Changed
get_thread13 fields changed- added
Input schema / properties / id / exclusiveMinimumAdded value: +0 - removed
Input schema / properties / id / minimumRemoved value: --2147483648 - changed
Output schema / properties / thread / properties / categories / anyOfPrevious value: -[ - { - "items": { - "additionalProperties": {}, - "properties": { - "id": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "items": { + "additionalProperties": {}, + "properties": { + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } +] - added
Output schema / properties / thread / properties / id / exclusiveMinimumAdded value: +0 - changed
Output schema / properties / thread / properties / id / maximumPrevious value: -9007199254740991New value: +2147483647 - removed
Output schema / properties / thread / properties / id / minimumRemoved value: --9007199254740991 - changed
Output schema / properties / thread / properties / likeCount / anyOfPrevious value: -[ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } -]New value: +[ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } +] - changed
Output schema / properties / thread / properties / mediaCategories / anyOfPrevious value: -[ - { - "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" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "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" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } +] - changed
Output schema / properties / thread / properties / replyCommentId / anyOfPrevious value: -[ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } -]New value: +[ + { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + { + "type": "null" + } +] - changed
Output schema / properties / thread / properties / replyCount / anyOfPrevious value: -[ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } -]New value: +[ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } +] - changed
Output schema / properties / thread / properties / siteUrl / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } +] - changed
Output schema / properties / thread / properties / user / anyOfPrevious value: -[ - { - "additionalProperties": {}, - "properties": { - "id": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": {}, + "properties": { + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } +] - changed
Output schema / properties / thread / properties / viewCount / anyOfPrevious value: -[ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } -]New value: +[ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } +]
- Changed
get_thread_comments13 fields changed- changed
Input schema / properties / page / descriptionPrevious 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." - added
Input schema / properties / perPage / exclusiveMinimumAdded value: +0 - removed
Input schema / properties / perPage / minimumRemoved value: -1 - added
Input schema / properties / threadId / exclusiveMinimumAdded value: +0 - removed
Input schema / properties / threadId / minimumRemoved value: --2147483648 - added
Output schema / $defsAdded value: +{ + "__schema0": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "null" + }, + { + "items": { + "$ref": "#/$defs/__schema0" + }, + "type": "array" + }, + { + "additionalProperties": { + "$ref": "#/$defs/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + } + ] + } +} - changed
Output schema / properties / comments / properties / threadComments / items / properties / childComments / anyOfPrevious value: -[ - {}, - { - "type": "null" - } -]New value: +[ + { + "$ref": "#/$defs/__schema0" + }, + { + "type": "null" + } +] - added
Output schema / properties / comments / properties / threadComments / items / properties / id / exclusiveMinimumAdded value: +0 - changed
Output schema / properties / comments / properties / threadComments / items / properties / id / maximumPrevious value: -9007199254740991New value: +2147483647 - removed
Output schema / properties / comments / properties / threadComments / items / properties / id / minimumRemoved value: --9007199254740991 - changed
Output schema / properties / comments / properties / threadComments / items / properties / likeCount / anyOfPrevious value: -[ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } -]New value: +[ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } +] - changed
Output schema / properties / comments / properties / threadComments / items / properties / siteUrl / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } +] - changed
Output schema / properties / comments / properties / threadComments / items / properties / user / anyOfPrevious value: -[ - { - "additionalProperties": {}, - "properties": { - "id": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": {}, + "properties": { + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } +]
- Changed
get_todays_birthdays3 fields changed- removed
Output schema / properties / results / anyOfRemoved value: -[ - { - "items": { - "additionalProperties": {}, - "properties": { - "description": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "favourites": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "id": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - "image": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "large": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "isFavourite": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "media": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "edges": { - "items": { - "additionalProperties": {}, - "properties": { - "characterRole": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "node": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "format": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "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": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - } - }, - "required": [ - "edges" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "name": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "full": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "native": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "siteUrl": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - "type": "array" - }, - { - "items": { - "additionalProperties": {}, - "properties": { - "description": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "favourites": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "id": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - "image": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "large": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "isFavourite": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "name": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "full": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "native": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "primaryOccupations": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "siteUrl": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "staffMedia": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "edges": { - "items": { - "additionalProperties": {}, - "properties": { - "node": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "format": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "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": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "staffRole": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - } - }, - "required": [ - "edges" - ], - "type": "object" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - "type": "array" - } -] - added
Output schema / properties / results / itemsAdded value: +{ + "additionalProperties": {}, + "properties": { + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "favourites": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "image": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "large": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "isFavourite": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "[Requires login] Whether this character or staff member 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." + }, + "name": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "full": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "native": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "primaryOccupations": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "siteUrl": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" +} - added
Output schema / properties / results / typeAdded value: +"array"
- Changed
get_user_activity10 fields changed- changed
Input schema / properties / page / descriptionPrevious 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." - added
Input schema / properties / perPage / exclusiveMinimumAdded value: +0 - removed
Input schema / properties / perPage / minimumRemoved value: -1 - changed
Input schema / properties / user / anyOfPrevious value: -[ - { - "maximum": 2147483647, - "minimum": -2147483648, - "type": "integer" - }, - { - "minLength": 1, - "type": "string" - } -]New value: +[ + { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + { + "minLength": 1, + "type": "string" + } +] - changed
Input schema / properties / user / descriptionPrevious value: -"AniList user ID, or username."New value: +"AniList user ID, or username. Unlike search_activity's own `user` filter, both an unknown numeric ID and an unknown username error here rather than silently returning an empty feed." - removed
Output schema / properties / results / properties / activities / items / additionalPropertiesRemoved value: -{} - added
Output schema / properties / results / properties / activities / items / oneOfAdded value: +[ + { + "additionalProperties": {}, + "properties": { + "createdAt": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + }, + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "isLiked": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "likeCount": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "replyCount": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "siteUrl": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "text": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "type": { + "const": "TEXT", + "type": "string" + }, + "user": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id", + "type" + ], + "type": "object" + }, + { + "additionalProperties": {}, + "properties": { + "createdAt": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + }, + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "isLiked": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "likeCount": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "media": { + "anyOf": [ + { + "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" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "progress": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "replyCount": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "siteUrl": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "type": { + "enum": [ + "ANIME_LIST", + "MANGA_LIST", + "MEDIA_LIST" + ], + "type": "string" + }, + "user": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id", + "type" + ], + "type": "object" + }, + { + "additionalProperties": {}, + "properties": { + "createdAt": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + }, + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "isLiked": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "likeCount": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "message": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "messenger": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "recipient": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "replyCount": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "siteUrl": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "type": { + "const": "MESSAGE", + "type": "string" + } + }, + "required": [ + "id", + "type" + ], + "type": "object" + } +] - removed
Output schema / properties / results / properties / activities / items / propertiesRemoved value: -{ - "createdAt": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "id": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - "isLiked": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "likeCount": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "media": { - "anyOf": [ - { - "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" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "message": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "messenger": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "id": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "progress": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "recipient": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "id": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "replyCount": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "siteUrl": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "status": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "text": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "user": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "id": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ] - } -} - removed
Output schema / properties / results / properties / activities / items / requiredRemoved value: -[ - "id" -] - removed
Output schema / properties / results / properties / activities / items / typeRemoved value: -"object"
- Changed
get_user_list5 fields changed- added
Input schema / properties / perChunk / exclusiveMinimumAdded value: +0 - removed
Input schema / properties / perChunk / minimumRemoved value: -1 - changed
Input schema / properties / user / anyOfPrevious value: -[ - { - "maximum": 2147483647, - "minimum": -2147483648, - "type": "integer" - }, - { - "minLength": 1, - "type": "string" - } -]New value: +[ + { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + { + "minLength": 1, + "type": "string" + } +] - added
Output schema / $defsAdded value: +{ + "__schema0": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "null" + }, + { + "items": { + "$ref": "#/$defs/__schema0" + }, + "type": "array" + }, + { + "additionalProperties": { + "$ref": "#/$defs/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + } + ] + } +} - changed
Output schema / properties / lists / anyOfPrevious value: -[ - { - "items": { - "additionalProperties": {}, - "properties": { - "entries": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "advancedScores": { - "anyOf": [ - {}, - { - "type": "null" - } - ], - "description": "Per-category advanced scores as AniList actually stores them — an untyped value (the write side takes a plain {category: score} map via add_list_entry/update_list_entry's `advancedScores`, but the echoed read-back shape isn't guaranteed to match it)." - }, - "completedAt": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "day": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "month": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "year": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "createdAt": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "customLists": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "enabled": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "Every custom list configured on the account, with `enabled` showing whether THIS entry is filed under it. Naming a list here (via add_list_entry/update_list_entry) that isn't already in the account's `animeListOptions`/`mangaListOptions` `customLists` is silently a no-op on write — the list must exist first." - }, - "hiddenFromStatusLists": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "id": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - "media": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "chapters": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "episodes": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "id": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - "idMal": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "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" - } - ] - }, - "notes": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "priority": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "private": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "progress": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "progressVolumes": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "repeat": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "score": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "startedAt": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "day": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "month": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "year": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "status": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "updatedAt": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "isCustomList": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "isSplitCompletedList": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "status": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "items": { + "additionalProperties": {}, + "properties": { + "entries": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "advancedScores": { + "anyOf": [ + { + "$ref": "#/$defs/__schema0" + }, + { + "type": "null" + } + ], + "description": "Per-category advanced scores as AniList actually stores them — an untyped value (the write side takes a plain {category: score} map via add_list_entry/update_list_entry's `advancedScores`, but the echoed read-back shape isn't guaranteed to match it)." + }, + "completedAt": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "day": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "month": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "year": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "createdAt": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + }, + "customLists": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "enabled": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "Every custom list configured on the account, with `enabled` showing whether THIS entry is filed under it. Naming a list here (via add_list_entry/update_list_entry) that isn't already in the account's `animeListOptions`/`mangaListOptions` `customLists` is silently a no-op on write — the list must exist first." + }, + "hiddenFromStatusLists": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "media": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "chapters": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "episodes": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "idMal": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "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" + } + ] + }, + "notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "priority": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "private": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "progress": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "progressVolumes": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "repeat": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "score": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + }, + "startedAt": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "day": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "month": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "year": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "updatedAt": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "isCustomList": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "isSplitCompletedList": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } +]
- Changed
get_user_profile12 fields changed- changed
Input schema / properties / user / anyOfPrevious value: -[ - { - "maximum": 2147483647, - "minimum": -2147483648, - "type": "integer" - }, - { - "minLength": 1, - "type": "string" - } -]New value: +[ + { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + { + "minLength": 1, + "type": "string" + } +] - added
Output schema / $defsAdded value: +{ + "__schema0": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "null" + }, + { + "items": { + "$ref": "#/$defs/__schema0" + }, + "type": "array" + }, + { + "additionalProperties": { + "$ref": "#/$defs/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + } + ] + } +} - changed
Output schema / properties / profile / properties / avatar / anyOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "large": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "large": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } +] - changed
Output schema / properties / profile / properties / bannerImage / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } +] - added
Output schema / properties / profile / properties / donatorBadge / descriptionAdded value: +"AniList returns \"Donator\" here even for a non-donator (donatorTier 0); it's an upstream default label, not proof the user donates. A user's donatorTier (0 = non-donator) is the real signal." - changed
Output schema / properties / profile / properties / donatorTier / anyOfPrevious value: -[ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } -]New value: +[ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } +] - added
Output schema / properties / profile / properties / id / exclusiveMinimumAdded value: +0 - changed
Output schema / properties / profile / properties / id / maximumPrevious value: -9007199254740991New value: +2147483647 - removed
Output schema / properties / profile / properties / id / minimumRemoved value: --9007199254740991 - changed
Output schema / properties / profile / properties / mediaListOptions / anyOfPrevious value: -[ - { - "additionalProperties": {}, - "properties": { - "animeList": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "advancedScoring": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "advancedScoringEnabled": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "customLists": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "sectionOrder": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "splitCompletedSectionByFormat": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "theme": { - "anyOf": [ - {}, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "mangaList": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "advancedScoring": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "advancedScoringEnabled": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "customLists": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "sectionOrder": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "splitCompletedSectionByFormat": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "theme": { - "anyOf": [ - {}, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "rowOrder": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "scoreFormat": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": {}, + "properties": { + "animeList": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "advancedScoring": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "advancedScoringEnabled": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "customLists": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "sectionOrder": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "splitCompletedSectionByFormat": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "theme": { + "anyOf": [ + { + "$ref": "#/$defs/__schema0" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "mangaList": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "advancedScoring": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "advancedScoringEnabled": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "customLists": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "sectionOrder": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "splitCompletedSectionByFormat": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "theme": { + "anyOf": [ + { + "$ref": "#/$defs/__schema0" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "rowOrder": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "scoreFormat": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } +] - changed
Output schema / properties / profile / properties / options / anyOfPrevious value: -[ - { - "additionalProperties": {}, - "properties": { - "activityMergeTime": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "airingNotifications": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "disabledListActivity": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "disabled": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "displayAdultContent": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "notificationOptions": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "enabled": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "profileColor": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "restrictMessagesToFollowing": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "staffNameLanguage": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "timezone": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "titleLanguage": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": {}, + "properties": { + "activityMergeTime": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "airingNotifications": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "disabledListActivity": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "disabled": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "type": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "displayAdultContent": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "notificationOptions": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "enabled": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "type": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "profileColor": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "restrictMessagesToFollowing": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "staffNameLanguage": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "timezone": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "titleLanguage": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } +] - changed
Output schema / properties / profile / properties / siteUrl / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } +]
- Changed
get_user_recent_activity7 fields changed- changed
Input schema / properties / user / anyOfPrevious value: -[ - { - "maximum": 2147483647, - "minimum": -2147483648, - "type": "integer" - }, - { - "minLength": 1, - "type": "string" - } -]New value: +[ + { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + { + "minLength": 1, + "type": "string" + } +] - changed
Input schema / properties / user / descriptionPrevious value: -"AniList user ID, or username."New value: +"AniList user ID, or username. Unlike search_activity's own `user` filter, both an unknown numeric ID and an unknown username error here rather than silently returning an empty feed." - removed
Output schema / properties / activity / properties / activities / items / additionalPropertiesRemoved value: -{} - added
Output schema / properties / activity / properties / activities / items / oneOfAdded value: +[ + { + "additionalProperties": {}, + "properties": { + "createdAt": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + }, + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "isLiked": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "likeCount": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "replyCount": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "siteUrl": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "text": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "type": { + "const": "TEXT", + "type": "string" + }, + "user": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id", + "type" + ], + "type": "object" + }, + { + "additionalProperties": {}, + "properties": { + "createdAt": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + }, + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "isLiked": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "likeCount": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "media": { + "anyOf": [ + { + "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" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "progress": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "replyCount": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "siteUrl": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "type": { + "enum": [ + "ANIME_LIST", + "MANGA_LIST", + "MEDIA_LIST" + ], + "type": "string" + }, + "user": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id", + "type" + ], + "type": "object" + }, + { + "additionalProperties": {}, + "properties": { + "createdAt": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + }, + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "isLiked": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "likeCount": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "message": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "messenger": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "recipient": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "replyCount": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "siteUrl": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "type": { + "const": "MESSAGE", + "type": "string" + } + }, + "required": [ + "id", + "type" + ], + "type": "object" + } +] - removed
Output schema / properties / activity / properties / activities / items / propertiesRemoved value: -{ - "createdAt": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "id": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - "isLiked": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "likeCount": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "media": { - "anyOf": [ - { - "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" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "message": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "messenger": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "id": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "progress": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "recipient": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "id": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "replyCount": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "siteUrl": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "status": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "text": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "user": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "id": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ] - } -} - removed
Output schema / properties / activity / properties / activities / items / requiredRemoved value: -[ - "id" -] - removed
Output schema / properties / activity / properties / activities / items / typeRemoved value: -"object"
- Changed
get_user_stats2 fields changed- changed
Input schema / properties / user / anyOfPrevious value: -[ - { - "maximum": 2147483647, - "minimum": -2147483648, - "type": "integer" - }, - { - "minLength": 1, - "type": "string" - } -]New value: +[ + { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + { + "minLength": 1, + "type": "string" + } +] - changed
Output schema / properties / stats / properties / statistics / anyOfPrevious value: -[ - { - "additionalProperties": {}, - "properties": { - "anime": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "count": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "episodesWatched": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "meanScore": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "minutesWatched": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "manga": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "chaptersRead": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "count": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "meanScore": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "volumesRead": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": {}, + "properties": { + "anime": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "count": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "episodesWatched": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "meanScore": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + }, + "minutesWatched": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "manga": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "chaptersRead": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "count": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "meanScore": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + }, + "volumesRead": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } +]
- Changed
login_anilist3 fields changed- added
Output schema / properties / authorize_url / descriptionAdded value: +"The AniList OAuth authorization URL — open it in a browser and click Approve." - added
Output schema / properties / auto_capture / descriptionAdded value: +"Whether this server process could bind a local callback listener — NOT whether the browser opening authorize_url is actually on the same machine. A remote/SSH server can still bind its own loopback port successfully and read `true` here even though that browser's redirect can never reach it." - added
Output schema / properties / redirect_uri / descriptionAdded value: +"The exact localhost callback URI this login attempt used (port from ANILIST_OAUTH_PORT, default 8082) — must exactly match the Redirect URL registered for your AniList app, or the token exchange fails."
- Changed
post_message_activity8 fields changed- added
Input schema / properties / id / exclusiveMinimumAdded value: +0 - removed
Input schema / properties / id / minimumRemoved value: --2147483648 - added
Input schema / properties / recipientId / exclusiveMinimumAdded value: +0 - removed
Input schema / properties / recipientId / minimumRemoved value: --2147483648 - added
Output schema / properties / activity / properties / id / exclusiveMinimumAdded value: +0 - changed
Output schema / properties / activity / properties / id / maximumPrevious value: -9007199254740991New value: +2147483647 - removed
Output schema / properties / activity / properties / id / minimumRemoved value: --9007199254740991 - changed
Output schema / properties / activity / properties / siteUrl / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } +]
- Changed
post_text_activity6 fields changed- added
Input schema / properties / id / exclusiveMinimumAdded value: +0 - removed
Input schema / properties / id / minimumRemoved value: --2147483648 - added
Output schema / properties / activity / properties / id / exclusiveMinimumAdded value: +0 - changed
Output schema / properties / activity / properties / id / maximumPrevious value: -9007199254740991New value: +2147483647 - removed
Output schema / properties / activity / properties / id / minimumRemoved value: --9007199254740991 - changed
Output schema / properties / activity / properties / siteUrl / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } +]
- Changed
post_thread19 fields changed- changed
Input schema / properties / body / descriptionPrevious value: -"Thread body (markdown; per AniList's own schema, up to 30000 characters)."New value: +"Thread body (markdown; per AniList's own schema, up to 30000 characters) — REQUIRED when creating a new thread, optional when updating one via `id` (confirmed live: omitting it on an update leaves the existing body unchanged)." - changed
Input schema / properties / categories / descriptionPrevious value: -"Forum category IDs to post this thread under — needed when creating a new thread. Not independently listable by any tool; resolve one from a thread you've already read (get_thread's/search_thread's `categories` field) or from a forum URL like anilist.co/forum/recent?category=<id>."New value: +"Forum category IDs to post this thread under — REQUIRED when creating a new thread (AniList rejects the mutation otherwise), optional when updating one via `id`. When updating and you DO set this, it's a full replace, not a merge — confirmed live: an existing thread with categories [A] updated with just [B] ended up with [B] only, A silently dropped. Fetch the thread's current categories first (get_thread) and include every one you want to keep. Not independently listable by any tool; resolve one from a thread you've already read (get_thread's/search_thread's `categories` field) or from a forum URL like anilist.co/forum/recent?category=<id>." - added
Input schema / properties / categories / items / exclusiveMinimumAdded value: +0 - removed
Input schema / properties / categories / items / minimumRemoved value: --2147483648 - added
Input schema / properties / id / exclusiveMinimumAdded value: +0 - removed
Input schema / properties / id / minimumRemoved value: --2147483648 - changed
Input schema / properties / mediaCategories / descriptionPrevious value: -"AniList anime/manga IDs to tag this thread with, for threads about a specific title (from search_media/get_media)."New value: +"AniList anime/manga IDs to tag this thread with, for threads about a specific title (from search_media/get_media). Optional on both create and update. When updating and you DO set this, it's a full replace, not a merge — confirmed live: an existing thread tagged with [A] updated with just [B] ended up with [B] only, A silently dropped (same behavior as `categories` above). Fetch the thread's current `mediaCategories` first (get_thread) if you need to keep an existing tag alongside a new one." - added
Input schema / properties / mediaCategories / items / exclusiveMinimumAdded value: +0 - removed
Input schema / properties / mediaCategories / items / minimumRemoved value: --2147483648 - changed
Input schema / properties / sticky / descriptionPrevious value: -"Pin this thread (only takes effect if you have moderator permission)."New value: +"Pin this thread (only takes effect if you have moderator permission — confirmed live that a non-mod account's own thread silently stays unpinned)." - changed
Input schema / properties / title / descriptionPrevious value: -"Thread title (per AniList's own schema: 6-120 characters)."New value: +"Thread title (per AniList's own schema: 6-120 characters) — REQUIRED when creating a new thread, optional when updating one via `id` (confirmed live: omitting it on an update leaves the existing title unchanged, it isn't cleared)." - removed
Input schema / requiredRemoved value: -[ - "title", - "body" -] - added
Output schema / properties / thread / properties / id / exclusiveMinimumAdded value: +0 - changed
Output schema / properties / thread / properties / id / maximumPrevious value: -9007199254740991New value: +2147483647 - removed
Output schema / properties / thread / properties / id / minimumRemoved value: --9007199254740991 - changed
Output schema / properties / thread / properties / likeCount / anyOfPrevious value: -[ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } -]New value: +[ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } +] - changed
Output schema / properties / thread / properties / replyCount / anyOfPrevious value: -[ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } -]New value: +[ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } +] - changed
Output schema / properties / thread / properties / siteUrl / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } +] - changed
Output schema / properties / thread / properties / viewCount / anyOfPrevious value: -[ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } -]New value: +[ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } +]
- Changed
post_thread_comment13 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Comment ID to update instead of creating a new one."New value: +"Comment ID to update instead of creating a new one. Not the comment you're replying to — that's `parentCommentId`." - added
Input schema / properties / id / exclusiveMinimumAdded value: +0 - removed
Input schema / properties / id / minimumRemoved value: --2147483648 - changed
Input schema / properties / parentCommentId / descriptionPrevious value: -"Reply to this specific comment instead of posting top-level (from get_thread_comments). The reply then appears nested under that comment's `childComments` in get_thread_comments, not as a new top-level entry."New value: +"Reply to this specific comment instead of posting top-level (from get_thread_comments). The reply then appears nested under that comment's `childComments` in get_thread_comments, not as a new top-level entry. Not the comment being edited — that's `id`." - added
Input schema / properties / parentCommentId / exclusiveMinimumAdded value: +0 - removed
Input schema / properties / parentCommentId / minimumRemoved value: --2147483648 - added
Input schema / properties / threadId / exclusiveMinimumAdded value: +0 - removed
Input schema / properties / threadId / minimumRemoved value: --2147483648 - added
Output schema / properties / comment / properties / id / exclusiveMinimumAdded value: +0 - changed
Output schema / properties / comment / properties / id / maximumPrevious value: -9007199254740991New value: +2147483647 - removed
Output schema / properties / comment / properties / id / minimumRemoved value: --9007199254740991 - changed
Output schema / properties / comment / properties / likeCount / anyOfPrevious value: -[ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } -]New value: +[ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } +] - changed
Output schema / properties / comment / properties / siteUrl / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } +]
- Changed
remove_list_entry2 fields changed- added
Input schema / properties / listEntryId / exclusiveMinimumAdded value: +0 - removed
Input schema / properties / listEntryId / minimumRemoved value: --2147483648
- Changed
search_activity10 fields changed- changed
Input schema / properties / page / descriptionPrevious 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." - added
Input schema / properties / perPage / exclusiveMinimumAdded value: +0 - removed
Input schema / properties / perPage / minimumRemoved value: -1 - changed
Input schema / properties / user / anyOfPrevious value: -[ - { - "maximum": 2147483647, - "minimum": -2147483648, - "type": "integer" - }, - { - "minLength": 1, - "type": "string" - } -]New value: +[ + { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + { + "minLength": 1, + "type": "string" + } +] - removed
Output schema / properties / results / properties / activities / items / additionalPropertiesRemoved value: -{} - removed
Output schema / properties / results / properties / activities / items / descriptionRemoved value: -"Only `id` is guaranteed here — the real object has more fields, but their shape depends on which variant of an underlying union type this is (e.g. which activity type), so only the field common to every variant is declared." - added
Output schema / properties / results / properties / activities / items / oneOfAdded value: +[ + { + "additionalProperties": {}, + "properties": { + "createdAt": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + }, + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "isLiked": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "likeCount": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "replyCount": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "siteUrl": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "text": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "type": { + "const": "TEXT", + "type": "string" + }, + "user": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id", + "type" + ], + "type": "object" + }, + { + "additionalProperties": {}, + "properties": { + "createdAt": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + }, + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "isLiked": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "likeCount": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "media": { + "anyOf": [ + { + "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" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "progress": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "replyCount": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "siteUrl": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "type": { + "enum": [ + "ANIME_LIST", + "MANGA_LIST", + "MEDIA_LIST" + ], + "type": "string" + }, + "user": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id", + "type" + ], + "type": "object" + }, + { + "additionalProperties": {}, + "properties": { + "createdAt": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ] + }, + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "isLiked": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "likeCount": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "message": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "messenger": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "recipient": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "id": { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "replyCount": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "siteUrl": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "type": { + "const": "MESSAGE", + "type": "string" + } + }, + "required": [ + "id", + "type" + ], + "type": "object" + } +] - removed
Output schema / properties / results / properties / activities / items / propertiesRemoved value: -{ - "id": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - } -} - removed
Output schema / properties / results / properties / activities / items / requiredRemoved value: -[ - "id" -] - removed
Output schema / properties / results / properties / activities / items / typeRemoved value: -"object"
- Changed
search_character6 fields changed- changed
Input schema / properties / page / descriptionPrevious 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." - added
Input schema / properties / perPage / exclusiveMinimumAdded value: +0 - removed
Input schema / properties / perPage / minimumRemoved value: -1 - added
Output schema / properties / results / properties / characters / items / properties / id / exclusiveMinimumAdded value: +0 - changed
Output schema / properties / results / properties / characters / items / properties / id / maximumPrevious value: -9007199254740991New value: +2147483647 - removed
Output schema / properties / results / properties / characters / items / properties / id / minimumRemoved value: --9007199254740991
- Changed
search_media18 fields changed- added
Input schema / properties / endDate_greater / properties / year / exclusiveMinimumAdded value: +0 - removed
Input schema / properties / endDate_greater / properties / year / minimumRemoved value: --9007199254740991 - added
Input schema / properties / endDate_lesser / properties / year / exclusiveMinimumAdded value: +0 - removed
Input schema / properties / endDate_lesser / properties / year / minimumRemoved value: --9007199254740991 - changed
Input schema / properties / onList / descriptionPrevious value: -"[Requires login] Restrict to (true) or exclude (false) entries already on the authenticated user's own list. Omit to ignore list status entirely."New value: +"[Requires login] Restrict to (true) or exclude (false) entries already on the authenticated user's own list. Omit to ignore list status entirely. Confirmed live: silently no-ops (identical results for true/false/omitted) if not logged in, since there's no list to check against — same behavior as get_recommendations_for_media's `excludeInList`." - changed
Input schema / properties / page / descriptionPrevious 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." - added
Input schema / properties / perPage / exclusiveMinimumAdded value: +0 - removed
Input schema / properties / perPage / minimumRemoved value: -1 - added
Input schema / properties / seasonYear / exclusiveMinimumAdded value: +0 - removed
Input schema / properties / seasonYear / minimumRemoved value: --9007199254740991 - changed
Input schema / properties / sort / descriptionPrevious value: -"Sort order, most-significant key first (e.g. [\"SCORE_DESC\"] for highest-rated first, [\"POPULARITY_DESC\"] for most popular, [\"TRENDING_DESC\"] for what's hot right now). Defaults to relevance-ranked SEARCH_MATCH, which only makes sense when `term` is also given — set an explicit sort for a term-less browse/ranking query."New value: +"Sort order, most-significant key first (e.g. [\"SCORE_DESC\"] for highest-rated first, [\"POPULARITY_DESC\"] for most popular, [\"TRENDING_DESC\"] for what's hot right now). Defaults to relevance-ranked SEARCH_MATCH when a `term` is given; with no term and no explicit sort, results come back in AniList's own default order. Set an explicit sort for a term-less ranking/browse query (e.g. top-rated or most-popular)." - added
Input schema / properties / startDate_greater / properties / year / exclusiveMinimumAdded value: +0 - removed
Input schema / properties / startDate_greater / properties / year / minimumRemoved value: --9007199254740991 - added
Input schema / properties / startDate_lesser / properties / year / exclusiveMinimumAdded value: +0 - removed
Input schema / properties / startDate_lesser / properties / year / minimumRemoved value: --9007199254740991 - added
Output schema / properties / results / properties / media / items / properties / id / exclusiveMinimumAdded value: +0 - changed
Output schema / properties / results / properties / media / items / properties / id / maximumPrevious value: -9007199254740991New value: +2147483647 - removed
Output schema / properties / results / properties / media / items / properties / id / minimumRemoved value: --9007199254740991
- Changed
search_staff6 fields changed- changed
Input schema / properties / page / descriptionPrevious 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." - added
Input schema / properties / perPage / exclusiveMinimumAdded value: +0 - removed
Input schema / properties / perPage / minimumRemoved value: -1 - added
Output schema / properties / results / properties / staff / items / properties / id / exclusiveMinimumAdded value: +0 - changed
Output schema / properties / results / properties / staff / items / properties / id / maximumPrevious value: -9007199254740991New value: +2147483647 - removed
Output schema / properties / results / properties / staff / items / properties / id / minimumRemoved value: --9007199254740991
- Changed
search_studio6 fields changed- changed
Input schema / properties / page / descriptionPrevious 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." - added
Input schema / properties / perPage / exclusiveMinimumAdded value: +0 - removed
Input schema / properties / perPage / minimumRemoved value: -1 - added
Output schema / properties / results / properties / studios / items / properties / id / exclusiveMinimumAdded value: +0 - changed
Output schema / properties / results / properties / studios / items / properties / id / maximumPrevious value: -9007199254740991New value: +2147483647 - removed
Output schema / properties / results / properties / studios / items / properties / id / minimumRemoved value: --9007199254740991
- Changed
search_thread10 fields changed- added
Input schema / properties / categoryId / exclusiveMinimumAdded value: +0 - removed
Input schema / properties / categoryId / minimumRemoved value: --2147483648 - added
Input schema / properties / mediaCategoryId / exclusiveMinimumAdded value: +0 - removed
Input schema / properties / mediaCategoryId / minimumRemoved value: --2147483648 - changed
Input schema / properties / page / descriptionPrevious 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." - added
Input schema / properties / perPage / exclusiveMinimumAdded value: +0 - removed
Input schema / properties / perPage / minimumRemoved value: -1 - added
Output schema / properties / results / properties / threads / items / properties / id / exclusiveMinimumAdded value: +0 - changed
Output schema / properties / results / properties / threads / items / properties / id / maximumPrevious value: -9007199254740991New value: +2147483647 - removed
Output schema / properties / results / properties / threads / items / properties / id / minimumRemoved value: --9007199254740991
- Changed
search_user6 fields changed- changed
Input schema / properties / page / descriptionPrevious 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." - added
Input schema / properties / perPage / exclusiveMinimumAdded value: +0 - removed
Input schema / properties / perPage / minimumRemoved value: -1 - added
Output schema / properties / results / properties / users / items / properties / id / exclusiveMinimumAdded value: +0 - changed
Output schema / properties / results / properties / users / items / properties / id / maximumPrevious value: -9007199254740991New value: +2147483647 - removed
Output schema / properties / results / properties / users / items / properties / id / minimumRemoved value: --9007199254740991
- Changed
toggle_favourite7 fields changed- added
Input schema / properties / id / exclusiveMinimumAdded value: +0 - removed
Input schema / properties / id / minimumRemoved value: --2147483648 - changed
Output schema / properties / favourites / properties / anime / anyOfPrevious 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" + } +] - changed
Output schema / properties / favourites / properties / characters / anyOfPrevious 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" + } +] - changed
Output schema / properties / favourites / properties / manga / anyOfPrevious 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" + } +] - changed
Output schema / properties / favourites / properties / staff / anyOfPrevious 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" + } +] - changed
Output schema / properties / favourites / properties / studios / anyOfPrevious 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" + } +]
- Changed
toggle_follow_user5 fields changed- added
Input schema / properties / id / exclusiveMinimumAdded value: +0 - removed
Input schema / properties / id / minimumRemoved value: --2147483648 - added
Output schema / properties / user / properties / id / exclusiveMinimumAdded value: +0 - changed
Output schema / properties / user / properties / id / maximumPrevious value: -9007199254740991New value: +2147483647 - removed
Output schema / properties / user / properties / id / minimumRemoved value: --9007199254740991
- Changed
update_list_entry15 fields changed- changed
Input schema / properties / advancedScores / descriptionPrevious value: -"New per-category scores, keyed and error-checked the same way as add_list_entry (errors if advanced scoring is disabled, or a key doesn't match a configured category). Unlike this tool's other fields, this one is NOT a true partial update: any configured category you omit is set to 0, not left at its previous value — pass every category if you're only changing one."New value: +"New per-category scores, keyed and error-checked the same way as add_list_entry (errors if advanced scoring is disabled, or a key doesn't match a configured category). Unlike this tool's other fields, this one is NOT a true partial update: any configured category you omit is set to 0, not left at its previous value — pass every category if you're only changing one. Also stored positionally, not by name — same read-time reinterpretation risk as add_list_entry's `advancedScores` if the account's category order (update_user's `advancedScoring`) is later renamed/reordered." - added
Input schema / properties / completedAt / properties / year / exclusiveMinimumAdded value: +0 - removed
Input schema / properties / completedAt / properties / year / minimumRemoved value: --9007199254740991 - changed
Input schema / properties / customLists / descriptionPrevious value: -"New set of custom lists for this entry. The list must already exist on the account (update_user's `animeListOptions`/`mangaListOptions` `customLists`) — naming one that doesn't exist yet is silently a no-op, not an error."New value: +"New set of custom lists for this entry — REPLACES this entry's full set of enabled lists, not merged: naming only a subset silently turns OFF every other list this entry was previously filed under (confirmed live for add_list_entry's identical field; this tool writes the same underlying value), it doesn't leave them alone. Include every list name you want this entry to stay tagged with, not just the one you're changing. Also, the list must already exist on the account (update_user's `animeListOptions`/`mangaListOptions` `customLists`) — naming one that doesn't exist yet is silently a no-op, not an error." - changed
Input schema / properties / hiddenFromStatusLists / descriptionPrevious value: -"Hide/unhide this entry from the public status-grouped list views — distinct from `private`, which hides the entry entirely."New value: +"Hide/unhide this entry from the public status-grouped list views (e.g. 'Watching') while still counting it in statistics — distinct from `private`, which hides the entry entirely." - added
Input schema / properties / listEntryId / exclusiveMinimumAdded value: +0 - removed
Input schema / properties / listEntryId / minimumRemoved value: --2147483648 - added
Input schema / properties / startedAt / properties / year / exclusiveMinimumAdded value: +0 - removed
Input schema / properties / startedAt / properties / year / minimumRemoved value: --9007199254740991 - added
Output schema / properties / entry / properties / id / exclusiveMinimumAdded value: +0 - changed
Output schema / properties / entry / properties / id / maximumPrevious value: -9007199254740991New value: +2147483647 - removed
Output schema / properties / entry / properties / id / minimumRemoved value: --9007199254740991 - changed
Output schema / properties / entry / properties / mediaId / anyOfPrevious value: -[ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } -]New value: +[ + { + "exclusiveMinimum": 0, + "maximum": 2147483647, + "type": "integer" + }, + { + "type": "null" + } +] - changed
Output schema / properties / entry / properties / progress / anyOfPrevious value: -[ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } -]New value: +[ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } +] - changed
Output schema / properties / entry / properties / score / anyOfPrevious value: -[ - { - "type": "number" - }, - { - "type": "null" - } -]New value: +[ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } +]
- Changed
update_user7 fields changed- added
Output schema / $defsAdded value: +{ + "__schema0": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "null" + }, + { + "items": { + "$ref": "#/$defs/__schema0" + }, + "type": "array" + }, + { + "additionalProperties": { + "$ref": "#/$defs/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + } + ] + } +} - added
Output schema / properties / user / properties / donatorBadge / descriptionAdded value: +"AniList returns \"Donator\" here even for a non-donator (donatorTier 0); it's an upstream default label, not proof the user donates. A user's donatorTier (0 = non-donator) is the real signal." - added
Output schema / properties / user / properties / id / exclusiveMinimumAdded value: +0 - changed
Output schema / properties / user / properties / id / maximumPrevious value: -9007199254740991New value: +2147483647 - removed
Output schema / properties / user / properties / id / minimumRemoved value: --9007199254740991 - changed
Output schema / properties / user / properties / mediaListOptions / anyOfPrevious value: -[ - { - "additionalProperties": {}, - "properties": { - "animeList": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "advancedScoring": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "advancedScoringEnabled": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "customLists": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "sectionOrder": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "splitCompletedSectionByFormat": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "theme": { - "anyOf": [ - {}, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "mangaList": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "advancedScoring": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "advancedScoringEnabled": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "customLists": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "sectionOrder": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "splitCompletedSectionByFormat": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "theme": { - "anyOf": [ - {}, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "rowOrder": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "scoreFormat": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": {}, + "properties": { + "animeList": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "advancedScoring": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "advancedScoringEnabled": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "customLists": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "sectionOrder": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "splitCompletedSectionByFormat": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "theme": { + "anyOf": [ + { + "$ref": "#/$defs/__schema0" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "mangaList": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "advancedScoring": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "advancedScoringEnabled": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "customLists": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "sectionOrder": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "splitCompletedSectionByFormat": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "theme": { + "anyOf": [ + { + "$ref": "#/$defs/__schema0" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "rowOrder": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "scoreFormat": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } +] - changed
Output schema / properties / user / properties / options / anyOfPrevious value: -[ - { - "additionalProperties": {}, - "properties": { - "activityMergeTime": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "airingNotifications": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "disabledListActivity": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "disabled": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "displayAdultContent": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "notificationOptions": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "enabled": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "profileColor": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "restrictMessagesToFollowing": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "staffNameLanguage": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "timezone": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "titleLanguage": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": {}, + "properties": { + "activityMergeTime": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "airingNotifications": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "disabledListActivity": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "disabled": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "type": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "displayAdultContent": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "notificationOptions": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "enabled": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "type": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "profileColor": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "restrictMessagesToFollowing": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "staffNameLanguage": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "timezone": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "titleLanguage": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } +]
7 tool updates
v0.5.0- Changed
add_list_entry6 fields changed- changed
Input schema / properties / notes / descriptionPrevious value: -"Free-text notes for this entry."New value: +"Free-text notes for this entry (per AniList's own schema, capped at 6000 characters)." - added
Input schema / properties / notes / maxLengthAdded value: +6000 - changed
Input schema / properties / priority / descriptionPrevious value: -"List priority (higher = more important)."New value: +"List priority (higher = more important; per AniList's own schema, capped at 255)." - changed
Input schema / properties / priority / maximumPrevious value: -9007199254740991New value: +255 - changed
Input schema / properties / repeat / descriptionPrevious value: -"Number of times rewatched/reread."New value: +"Number of times rewatched/reread (per AniList's own schema, capped at 1000)." - changed
Input schema / properties / repeat / maximumPrevious value: -9007199254740991New value: +1000
- Changed
post_message_activity3 fields changed- changed
Input schema / properties / message / descriptionPrevious value: -"The message text to post."New value: +"The message text to post (per AniList's own schema: 2-10000 characters)." - added
Input schema / properties / message / maxLengthAdded value: +10000 - changed
Input schema / properties / message / minLengthPrevious value: -1New value: +2
- Changed
post_text_activity3 fields changed- changed
Input schema / properties / text / descriptionPrevious value: -"The text to post."New value: +"The text to post (per AniList's own schema: 5-10000 characters)." - added
Input schema / properties / text / maxLengthAdded value: +10000 - changed
Input schema / properties / text / minLengthPrevious value: -1New value: +5
- Changed
post_thread5 fields changed- changed
Input schema / properties / body / descriptionPrevious value: -"Thread body (markdown)."New value: +"Thread body (markdown; per AniList's own schema, up to 30000 characters)." - added
Input schema / properties / body / maxLengthAdded value: +30000 - changed
Input schema / properties / title / descriptionPrevious value: -"Thread title."New value: +"Thread title (per AniList's own schema: 6-120 characters)." - added
Input schema / properties / title / maxLengthAdded value: +120 - changed
Input schema / properties / title / minLengthPrevious value: -1New value: +6
- Changed
post_thread_comment2 fields changed- changed
Input schema / properties / comment / descriptionPrevious value: -"The comment text to post (markdown)."New value: +"The comment text to post (markdown; per AniList's own schema, up to 12000 characters)." - added
Input schema / properties / comment / maxLengthAdded value: +12000
- Changed
update_list_entry6 fields changed- changed
Input schema / properties / notes / descriptionPrevious value: -"New free-text notes."New value: +"New free-text notes (per AniList's own schema, capped at 6000 characters)." - added
Input schema / properties / notes / maxLengthAdded value: +6000 - changed
Input schema / properties / priority / descriptionPrevious value: -"New list priority."New value: +"New list priority (higher = more important; per AniList's own schema, capped at 255)." - changed
Input schema / properties / priority / maximumPrevious value: -9007199254740991New value: +255 - changed
Input schema / properties / repeat / descriptionPrevious value: -"New rewatch/reread count."New value: +"New rewatch/reread count (per AniList's own schema, capped at 1000)." - changed
Input schema / properties / repeat / maximumPrevious value: -9007199254740991New value: +1000
- Changed
update_user8 fields changed- changed
Input schema / properties / activityMergeTime / descriptionPrevious value: -"Minutes within which consecutive list activity posts get merged into one."New value: +"Minutes within which consecutive list activity posts get merged into one. Per AniList's own schema: 0 = never merge, 20160+ (2 weeks) = always merge." - changed
Input schema / properties / activityMergeTime / minimumPrevious value: --9007199254740991New value: +0 - changed
Input schema / properties / donatorBadge / descriptionPrevious value: -"Custom donator badge text (only takes effect on a donator account)."New value: +"Custom donator badge text, up to 24 characters per AniList's own schema (only takes effect on a donator account)." - added
Input schema / properties / donatorBadge / maxLengthAdded value: +24 - changed
Input schema / properties / profileColor / descriptionPrevious value: -"Profile accent color (name or hex)."New value: +"Profile accent color (name or hex). Confirmed live: AniList silently ignores an unrecognized value instead of erroring — the account's existing color is left unchanged, with no error surfaced and no way to detect the value was rejected other than re-checking with get_authorized_user." - changed
Input schema / properties / rowOrder / descriptionPrevious value: -"Internal list-table row ordering key — reads back from `mediaListOptions.rowOrder` in the profile tools/this tool's own response."New value: +"Internal list-table row ordering key — reads back from `mediaListOptions.rowOrder` in the profile tools/this tool's own response. Confirmed live: AniList validates this server-side and rejects an unrecognized value with a clear error (\"The selected row order is invalid.\") rather than silently ignoring it — unlike `profileColor` below." - changed
Input schema / properties / timezone / descriptionPrevious value: -"Display timezone (e.g. \"+09:00\")."New value: +"Display timezone as an offset, in AniList's own documented \"-?HH:MM\" format (e.g. \"09:00\", \"-05:00\"). Confirmed live that AniList validates this server-side and rejects a malformed value with a clear error (\"The timezone format is invalid.\") — whether a leading \"+\" is also accepted wasn't tested live (this tool has no way to explicitly clear timezone back to unset, so a wrong guess here risked an unrevertable change); this regex follows AniList's own literal grammar, which mentions only an optional leading minus." - added
Input schema / properties / timezone / patternAdded value: +"^-?\\d{2}:\\d{2}$"
19 tool updates
v0.4.0- Changed
add_list_entry2 fields changed- changed
Input schema / properties / customLists / descriptionPrevious value: -"Names of custom lists to file this entry under. The list must already exist on the account (update_user's `animeListOptions`/`mangaListOptions` `customLists`) — naming one that doesn't exist yet is silently a no-op, not an error."New value: +"Names of custom lists to file this entry under — REPLACES this entry's full set of enabled lists, not merged: naming only a subset silently turns OFF every other list this entry was previously filed under (confirmed live), it doesn't leave them alone. Include every list name you want this entry to stay tagged with, not just the one you're adding. Also, the list must already exist on the account (update_user's `animeListOptions`/`mangaListOptions` `customLists`) — naming one that doesn't exist yet is silently a no-op, not an error." - changed
Input schema / properties / status / descriptionPrevious value: -"List status. If omitted, AniList defaults to CURRENT (with `startedAt` auto-set to today) — confirmed live; despite AniList's own site UI defaulting new entries to Planning, the API itself does not."New value: +"List status. If omitted on a genuinely NEW entry, AniList defaults to CURRENT (with `startedAt` auto-set to today) — confirmed live; despite AniList's own site UI defaulting new entries to Planning, the API itself does not. If the media is already on the list, this default does NOT apply — omitting `status` on an update-in-place leaves the entry's existing status untouched."
- Removed
favourite - Removed
follow_user - Added
get_activity - Changed
get_media_tags2 fields changed- changed
Output schema / properties / pageInfo / properties / lastPage / descriptionPrevious value: -"Not currently accurate (a known AniList performance limitation) — use `hasNextPage` instead to decide whether to fetch another page."New value: +"Exact final page number for the requested `perPage` size (computed client-side) — accurate here, unlike the same field on AniList-paginated tools." - changed
Output schema / properties / pageInfo / properties / total / descriptionPrevious value: -"Not currently accurate (a known AniList performance limitation) — don't rely on it to decide whether to fetch more pages."New value: +"Exact total tag count — unlike this field's usual meaning on AniList-paginated tools, this one IS accurate: it's computed client-side from the full ~425-tag collection fetched in one request, not from AniList's own degraded page resolver. Safe to rely on to know when you've paged through everything."
- Changed
get_notifications1 field changed- added
Output schema / properties / results / properties / notifications / items / descriptionAdded value: +"Only `id` is guaranteed here — the real object has more fields, but their shape depends on which variant of an underlying union type this is (e.g. which activity type), so only the field common to every variant is declared."
- Changed
get_recommendations_for_media2 fields changed- changed
Output schema / properties / recommendations / properties / nodes / anyOfPrevious value: -[ - { - "items": { - "additionalProperties": {}, - "properties": { - "id": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - "mediaRecommendation": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "id": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - "mediaListEntry": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "id": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - "status": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "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" - } - ] - }, - "rating": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "userRating": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "items": { + "additionalProperties": {}, + "properties": { + "id": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "mediaRecommendation": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "id": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "mediaListEntry": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "id": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Whether this recommended title is on the caller's own list — viewer-relative, so it only resolves when logged in; null both when logged out and when the title just isn't on the list (the two cases aren't distinguishable from this field alone)." + }, + "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" + } + ] + }, + "rating": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "userRating": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } +] - added
Output schema / properties / recommendations / properties / pageInfoAdded value: +{ + "additionalProperties": {}, + "description": "Whether another page exists — use this to decide whether to paginate.", + "properties": { + "hasNextPage": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" +}
- Changed
get_user_list1 field changed- changed
Output schema / properties / lists / anyOfPrevious value: -[ - { - "items": { - "additionalProperties": {}, - "properties": { - "entries": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "advancedScores": { - "anyOf": [ - {}, - { - "type": "null" - } - ] - }, - "completedAt": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "day": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "month": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "year": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "createdAt": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "customLists": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "enabled": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "hiddenFromStatusLists": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "id": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - "media": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "chapters": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "episodes": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "id": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - "idMal": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "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" - } - ] - }, - "notes": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "priority": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "private": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "progress": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "progressVolumes": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "repeat": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "score": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "startedAt": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "day": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "month": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "year": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "status": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "updatedAt": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "isCustomList": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "isSplitCompletedList": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "status": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "items": { + "additionalProperties": {}, + "properties": { + "entries": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "advancedScores": { + "anyOf": [ + {}, + { + "type": "null" + } + ], + "description": "Per-category advanced scores as AniList actually stores them — an untyped value (the write side takes a plain {category: score} map via add_list_entry/update_list_entry's `advancedScores`, but the echoed read-back shape isn't guaranteed to match it)." + }, + "completedAt": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "day": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "month": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "year": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "createdAt": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "customLists": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "enabled": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "Every custom list configured on the account, with `enabled` showing whether THIS entry is filed under it. Naming a list here (via add_list_entry/update_list_entry) that isn't already in the account's `animeListOptions`/`mangaListOptions` `customLists` is silently a no-op on write — the list must exist first." + }, + "hiddenFromStatusLists": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "id": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "media": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "chapters": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "episodes": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "id": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "idMal": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "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" + } + ] + }, + "notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "priority": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "private": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "progress": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "progressVolumes": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "repeat": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "score": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "startedAt": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "day": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "month": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "year": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "updatedAt": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "isCustomList": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "isSplitCompletedList": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } +]
- Changed
get_user_recent_activity14 fields changed- added
Output schema / properties / activity / properties / activities / items / properties / createdAtAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] +} - added
Output schema / properties / activity / properties / activities / items / properties / isLikedAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] +} - added
Output schema / properties / activity / properties / activities / items / properties / likeCountAdded value: +{ + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] +} - added
Output schema / properties / activity / properties / activities / items / properties / mediaAdded value: +{ + "anyOf": [ + { + "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" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] +} - added
Output schema / properties / activity / properties / activities / items / properties / messageAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] +} - added
Output schema / properties / activity / properties / activities / items / properties / messengerAdded value: +{ + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "id": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] +} - added
Output schema / properties / activity / properties / activities / items / properties / progressAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] +} - added
Output schema / properties / activity / properties / activities / items / properties / recipientAdded value: +{ + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "id": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] +} - added
Output schema / properties / activity / properties / activities / items / properties / replyCountAdded value: +{ + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] +} - added
Output schema / properties / activity / properties / activities / items / properties / siteUrlAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] +} - added
Output schema / properties / activity / properties / activities / items / properties / statusAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] +} - added
Output schema / properties / activity / properties / activities / items / properties / textAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] +} - added
Output schema / properties / activity / properties / activities / items / properties / typeAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] +} - added
Output schema / properties / activity / properties / activities / items / properties / userAdded value: +{ + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "id": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] +}
- Changed
search_activity2 fields changed- changed
Input schema / properties / user / descriptionPrevious value: -"Restrict results to this AniList user — numeric ID or exact username (resolved to an id with one extra internal lookup; no need to call search_user first unless you only have a partial/fuzzy name). Use get_user_activity instead if you only need one user's feed without the type filter."New value: +"Restrict results to this AniList user — numeric ID or exact username (resolved to an id with one extra internal lookup; no need to call search_user first unless you only have a partial/fuzzy name). Validation is asymmetric: an unknown USERNAME errors ('No AniList user named ... was found'), but an unknown numeric ID does NOT — it silently returns an empty result, indistinguishable from 'this user has no matching activity'. Resolve a numeric ID via search_user first if you need to confirm the account actually exists. Use get_user_activity instead if you only need one user's feed without the type filter." - added
Output schema / properties / results / properties / activities / items / descriptionAdded value: +"Only `id` is guaranteed here — the real object has more fields, but their shape depends on which variant of an underlying union type this is (e.g. which activity type), so only the field common to every variant is declared."
- Changed
search_character1 field changed- added
Output schema / properties / results / properties / characters / items / descriptionAdded value: +"Only `id` is guaranteed here — the real object has more fields, but their shape depends on which variant of an underlying union type this is (e.g. which activity type), so only the field common to every variant is declared."
- Changed
search_media3 fields changed- changed
Input schema / properties / genres / descriptionPrevious value: -"Restrict to entries matching ALL of these genre names (see get_genres)."New value: +"Restrict to entries matching ALL of these genre names (see get_genres for valid names) — an unrecognized genre name doesn't error, it just filters out all results, same silent-mismatch behavior as `format_in`/`tag_in` below." - changed
Input schema / properties / tag_in / descriptionPrevious value: -"Restrict to entries matching ALL of these exact tag names (see get_media_tags for valid names — unlike `genres`, tag names are case-sensitive and more specific, e.g. \"Time Loop\" or \"Tragedy\")."New value: +"Restrict to entries matching ALL of these exact tag names (see get_media_tags for valid names — unlike `genres`, tag names are case-sensitive and more specific, e.g. \"Time Loop\" or \"Tragedy\"). An unrecognized tag name doesn't error, it just silently matches nothing (same behavior as `genres`/`format_in` above, confirmed live)." - added
Output schema / properties / results / properties / media / items / descriptionAdded value: +"Only `id` is guaranteed here — the real object has more fields, but their shape depends on which variant of an underlying union type this is (e.g. which activity type), so only the field common to every variant is declared."
- Changed
search_staff1 field changed- added
Output schema / properties / results / properties / staff / items / descriptionAdded value: +"Only `id` is guaranteed here — the real object has more fields, but their shape depends on which variant of an underlying union type this is (e.g. which activity type), so only the field common to every variant is declared."
- Changed
search_studio1 field changed- added
Output schema / properties / results / properties / studios / items / descriptionAdded value: +"Only `id` is guaranteed here — the real object has more fields, but their shape depends on which variant of an underlying union type this is (e.g. which activity type), so only the field common to every variant is declared."
- Changed
search_thread3 fields changed- changed
Input schema / properties / categoryId / descriptionPrevious value: -"Restrict to this forum category ID. Not independently listable by any tool — resolve one from a thread you've already read (its `categories` field) or from a forum URL like anilist.co/forum/recent?category=<id>."New value: +"Restrict to this forum category ID. Not independently listable by any tool — resolve one from a thread you've already read (its `categories` field) or from a forum URL like anilist.co/forum/recent?category=<id>. A wrong or nonexistent ID doesn't error, it silently filters to an empty result — indistinguishable from 'no threads in this category.'" - changed
Input schema / properties / mediaCategoryId / descriptionPrevious value: -"Restrict to threads tagged with this AniList anime/manga ID (from search_media/get_media)."New value: +"Restrict to threads tagged with this AniList anime/manga ID (from search_media/get_media). Not existence-checked: a nonexistent media ID doesn't error, it silently filters to an empty result — resolve the ID via search_media first if you need to confirm the title actually exists." - added
Output schema / properties / results / properties / threads / items / descriptionAdded value: +"Only `id` is guaranteed here — the real object has more fields, but their shape depends on which variant of an underlying union type this is (e.g. which activity type), so only the field common to every variant is declared."
- Changed
search_user1 field changed- added
Output schema / properties / results / properties / users / items / descriptionAdded value: +"Only `id` is guaranteed here — the real object has more fields, but their shape depends on which variant of an underlying union type this is (e.g. which activity type), so only the field common to every variant is declared."
- Added
toggle_favourite - Added
toggle_follow_user - Changed
update_user6 fields changed- changed
Input schema / properties / animeListOptions / properties / advancedScoring / descriptionPrevious value: -"Advanced-scoring category names (e.g. Story, Characters, Visuals)."New value: +"Advanced-scoring category names (e.g. Story, Characters, Visuals) — ordered, and the order is load-bearing: every list entry's per-category `advancedScores` is stored as a plain positional array, matched against THIS list at read time, not by name. Renaming or reordering categories here silently reinterprets every already-scored entry's stored values under the new names/positions — e.g. a score the user gave for 'Story' can start reading as their 'Characters' score, with no error and no way to detect it happened after the fact. Fetch the current order first (get_authorized_user's `mediaListOptions.animeList/mangaList.advancedScoring`) so you know the existing positions before changing anything. Only add new categories at the end, or rename in place (same position) — never reorder an account that already has scored entries." - changed
Input schema / properties / animeListOptions / properties / customLists / descriptionPrevious value: -"Names of this account's custom lists."New value: +"Names of this account's custom lists — REPLACES the entire array, not merged by name: any existing list name you omit here is silently deleted (confirmed live), even though sibling fields like advancedScoring/sectionOrder and the other list type (mangaList) are left untouched. Fetch the current array first (get_authorized_user's mediaListOptions.animeList/mangaList.customLists) and include every name you want to keep, not just the one you're adding." - changed
Input schema / properties / disabledListActivity / items / properties / disabled / descriptionPrevious value: -"Whether posting activity for this status is suppressed."New value: +"Whether posting activity for this status is suppressed. Optional in the schema, but NOT safe to omit: confirmed live, leaving it out on even one of the 6 statuses makes the whole call fail with a 500 Internal Server Error on AniList's side (not a clean validation error, and not this server's bug) — always pass an explicit true/false for every status." - changed
Input schema / properties / mangaListOptions / properties / advancedScoring / descriptionPrevious value: -"Advanced-scoring category names (e.g. Story, Characters, Visuals)."New value: +"Advanced-scoring category names (e.g. Story, Characters, Visuals) — ordered, and the order is load-bearing: every list entry's per-category `advancedScores` is stored as a plain positional array, matched against THIS list at read time, not by name. Renaming or reordering categories here silently reinterprets every already-scored entry's stored values under the new names/positions — e.g. a score the user gave for 'Story' can start reading as their 'Characters' score, with no error and no way to detect it happened after the fact. Fetch the current order first (get_authorized_user's `mediaListOptions.animeList/mangaList.advancedScoring`) so you know the existing positions before changing anything. Only add new categories at the end, or rename in place (same position) — never reorder an account that already has scored entries." - changed
Input schema / properties / mangaListOptions / properties / customLists / descriptionPrevious value: -"Names of this account's custom lists."New value: +"Names of this account's custom lists — REPLACES the entire array, not merged by name: any existing list name you omit here is silently deleted (confirmed live), even though sibling fields like advancedScoring/sectionOrder and the other list type (mangaList) are left untouched. Fetch the current array first (get_authorized_user's mediaListOptions.animeList/mangaList.customLists) and include every name you want to keep, not just the one you're adding." - changed
Input schema / properties / notificationOptions / items / properties / enabled / descriptionPrevious value: -"Whether this notification type is on."New value: +"Whether this notification type is on. Optional per entry, but not really — omitting it doesn't error and doesn't inherit the previous value either; confirmed live it's written as `enabled: null`, effectively unsetting the type. Always pass an explicit true/false for every one of the 20 types."
12 tool updates
v0.3.0- Added
favourite - Removed
get_activity - Added
get_character - Added
get_media_characters - Added
get_media_relations - Added
get_media_statistics - Added
get_media_tags - Added
get_recommendations_for_media - Added
get_staff - Added
get_studio - Added
remove_list_entry - Added
search_media
27 tool updates
v0.3.0- Changed
add_list_entry3 fields changed- added
Input schema / properties / advancedScores / additionalProperties / maximumAdded value: +10 - added
Input schema / properties / advancedScores / additionalProperties / minimumAdded value: +0 - changed
Input schema / properties / advancedScores / descriptionPrevious value: -"Per-category scores, 0-10 scale (e.g. {Story: 8, Characters: 9}) — only meaningful if the account has advanced scoring enabled for this media's type. Anime and manga have SEPARATELY configured category lists, so keys must match whichever list applies to this entry. Any of that list's categories you omit here is set to 0, not left unchanged — include every category if you don't want the others zeroed."New value: +"Per-category scores, 0-10 scale (e.g. {Story: 8, Characters: 9}) — errors if advanced scoring isn't enabled for this media's type, or if a key doesn't match the account's configured category list for it (anime and manga have SEPARATELY configured lists). Any of that list's categories you omit here is set to 0, not left unchanged — include every category if you don't want the others zeroed."
- Added
delete_activity - Added
delete_thread - Removed
favourite - Added
get_authorized_user - Added
get_genres - Changed
get_media2 fields changed- changed
Input schema / properties / type / descriptionPrevious value: -"Whether `id`/`ids` refers to anime or manga."New value: +"Whether `ids` refers to anime or manga." - changed
Output schema / properties / media / anyOfPrevious value: -[ - { - "additionalProperties": {}, - "properties": { - "averageScore": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "chapters": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "countryOfOrigin": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "coverImage": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "large": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "description": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "duration": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "endDate": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "day": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "month": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "year": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "episodes": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "externalLinks": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "icon": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "id": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - "isDisabled": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "language": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "notes": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "site": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "url": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "format": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "genres": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "id": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - "idMal": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "isAdult": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "isFavourite": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "mediaListEntry": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "advancedScores": { - "anyOf": [ - {}, - { - "type": "null" - } - ] - }, - "completedAt": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "day": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "month": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "year": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "createdAt": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "customLists": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "enabled": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "hiddenFromStatusLists": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "id": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - "notes": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "priority": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "private": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "progress": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "progressVolumes": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "repeat": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "score": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "startedAt": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "day": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "month": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "year": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "status": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "updatedAt": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "nextAiringEpisode": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "airingAt": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "episode": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "id": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - "timeUntilAiring": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "popularity": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "rankings": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "allTime": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "context": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "format": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "rank": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "season": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "year": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "season": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "seasonYear": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "siteUrl": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "startDate": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "day": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "month": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "year": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "status": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "streamingEpisodes": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "site": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "thumbnail": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "title": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "url": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "tags": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "isMediaSpoiler": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "name": { - "type": "string" - }, - "rank": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "title": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "english": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "native": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "romaji": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "trailer": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "id": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "site": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "thumbnail": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "volumes": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "items": { - "additionalProperties": {}, - "properties": { - "averageScore": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "chapters": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "countryOfOrigin": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "coverImage": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "large": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "description": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "duration": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "endDate": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "day": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "month": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "year": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "episodes": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "externalLinks": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "icon": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "id": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - "isDisabled": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "language": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "notes": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "site": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "url": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "format": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "genres": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "id": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - "idMal": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "isAdult": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "isFavourite": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "mediaListEntry": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "advancedScores": { - "anyOf": [ - {}, - { - "type": "null" - } - ] - }, - "completedAt": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "day": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "month": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "year": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "createdAt": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "customLists": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "enabled": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "hiddenFromStatusLists": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "id": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - "notes": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "priority": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "private": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "progress": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "progressVolumes": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "repeat": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "score": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "startedAt": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "day": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "month": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "year": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "status": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "updatedAt": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "nextAiringEpisode": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "airingAt": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "episode": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "id": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - "timeUntilAiring": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "popularity": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "rankings": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "allTime": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "context": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "format": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "rank": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "season": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "year": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "season": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "seasonYear": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "siteUrl": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "startDate": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "day": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "month": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "year": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "status": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "streamingEpisodes": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "site": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "thumbnail": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "title": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "url": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "tags": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "isMediaSpoiler": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "name": { - "type": "string" - }, - "rank": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "title": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "english": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "native": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "romaji": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "trailer": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "id": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "site": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "thumbnail": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "volumes": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - "type": "array" - } -]New value: +[ + { + "additionalProperties": {}, + "properties": { + "averageScore": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "chapters": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "countryOfOrigin": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "coverImage": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "large": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "duration": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "endDate": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "day": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "month": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "year": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "episodes": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "externalLinks": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "icon": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "id": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "isDisabled": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "language": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "site": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "type": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "format": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "genres": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "id": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "idMal": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "isAdult": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "isFavourite": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "mediaListEntry": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "advancedScores": { + "anyOf": [ + {}, + { + "type": "null" + } + ] + }, + "completedAt": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "day": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "month": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "year": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "createdAt": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "customLists": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "enabled": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "hiddenFromStatusLists": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "id": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "priority": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "private": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "progress": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "progressVolumes": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "repeat": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "score": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "startedAt": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "day": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "month": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "year": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "updatedAt": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "nextAiringEpisode": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "airingAt": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "episode": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "id": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "timeUntilAiring": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "popularity": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "rankings": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "allTime": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "context": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "format": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "rank": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "season": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "type": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "year": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "season": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "seasonYear": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "siteUrl": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "startDate": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "day": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "month": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "year": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "streamingEpisodes": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "site": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "thumbnail": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "tags": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "isMediaSpoiler": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "name": { + "type": "string" + }, + "rank": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "title": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "english": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "native": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "romaji": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "trailer": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "site": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "thumbnail": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "type": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "volumes": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "items": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "averageScore": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "chapters": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "countryOfOrigin": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "coverImage": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "large": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "duration": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "endDate": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "day": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "month": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "year": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "episodes": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "externalLinks": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "icon": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "id": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "isDisabled": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "language": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "site": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "type": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "format": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "genres": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "id": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "idMal": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "isAdult": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "isFavourite": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "mediaListEntry": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "advancedScores": { + "anyOf": [ + {}, + { + "type": "null" + } + ] + }, + "completedAt": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "day": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "month": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "year": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "createdAt": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "customLists": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "enabled": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "hiddenFromStatusLists": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "id": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "priority": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "private": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "progress": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "progressVolumes": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "repeat": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "score": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "startedAt": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "day": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "month": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "year": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "updatedAt": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "nextAiringEpisode": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "airingAt": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "episode": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "id": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "timeUntilAiring": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "popularity": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "rankings": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "allTime": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "context": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "format": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "rank": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "season": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "type": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "year": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "season": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "seasonYear": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "siteUrl": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "startDate": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "day": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "month": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "year": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "streamingEpisodes": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "site": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "thumbnail": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "tags": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "isMediaSpoiler": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "name": { + "type": "string" + }, + "rank": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "title": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "english": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "native": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "romaji": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "trailer": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "site": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "thumbnail": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "type": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "volumes": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "type": "array" + } +]
- Removed
get_media_relations - Added
get_media_reviews - Changed
get_media_staff1 field changed- changed
Input schema / properties / type / descriptionPrevious value: -"Whether `id`/`ids` refers to anime or manga."New value: +"Whether `id` refers to anime or manga."
- Changed
get_site_statistics5 fields changed- added
Input schema / properties / pageAdded value: +{ + "default": 1, + "description": "Page number for pagination.", + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" +} - added
Input schema / properties / perPageAdded value: +{ + "default": 7, + "description": "Results per page/series (max 25, enforced by AniList itself).", + "maximum": 25, + "minimum": 1, + "type": "integer" +} - changed
Output schema / properties / statistics / properties / anime / anyOfPrevious value: -[ - { - "additionalProperties": {}, - "properties": { - "nodes": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "change": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "count": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "date": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": {}, + "properties": { + "nodes": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "change": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "count": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "date": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "pageInfo": { + "additionalProperties": {}, + "properties": { + "currentPage": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "hasNextPage": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "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" + } +] - changed
Output schema / properties / statistics / properties / manga / anyOfPrevious value: -[ - { - "additionalProperties": {}, - "properties": { - "nodes": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "change": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "count": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "date": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": {}, + "properties": { + "nodes": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "change": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "count": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "date": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "pageInfo": { + "additionalProperties": {}, + "properties": { + "currentPage": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "hasNextPage": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "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" + } +] - changed
Output schema / properties / statistics / properties / users / anyOfPrevious value: -[ - { - "additionalProperties": {}, - "properties": { - "nodes": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "change": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "count": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "date": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": {}, + "properties": { + "nodes": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "change": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "count": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "date": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "pageInfo": { + "additionalProperties": {}, + "properties": { + "currentPage": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "hasNextPage": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "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" + } +]
- Removed
get_studio - Added
get_thread - Added
get_thread_comments - Added
get_user_activity - Added
get_user_recent_activity - Added
post_text_activity - Added
post_thread - Added
post_thread_comment - Removed
remove_list_entry - Changed
search_activity2 fields changed- added
Input schema / properties / userAdded value: +{ + "anyOf": [ + { + "maximum": 2147483647, + "minimum": -2147483648, + "type": "integer" + }, + { + "minLength": 1, + "type": "string" + } + ], + "description": "Restrict results to this AniList user — numeric ID or exact username (resolved to an id with one extra internal lookup; no need to call search_user first unless you only have a partial/fuzzy name). Use get_user_activity instead if you only need one user's feed without the type filter." +} - removed
Input schema / properties / userIdRemoved value: -{ - "description": "Restrict results to this AniList user ID — numeric only; resolve one via search_user first, or use get_user_activity instead if you already have an exact username.", - "maximum": 2147483647, - "minimum": -2147483648, - "type": "integer" -}
- Added
search_staff - Added
search_studio - Added
search_user - Added
submit_anilist_redirect - Changed
update_list_entry3 fields changed- added
Input schema / properties / advancedScores / additionalProperties / maximumAdded value: +10 - added
Input schema / properties / advancedScores / additionalProperties / minimumAdded value: +0 - changed
Input schema / properties / advancedScores / descriptionPrevious value: -"New per-category scores, keyed the same way as add_list_entry. Unlike this tool's other fields, this one is NOT a true partial update: any configured category you omit is set to 0, not left at its previous value — pass every category if you're only changing one."New value: +"New per-category scores, keyed and error-checked the same way as add_list_entry (errors if advanced scoring is disabled, or a key doesn't match a configured category). Unlike this tool's other fields, this one is NOT a true partial update: any configured category you omit is set to 0, not left at its previous value — pass every category if you're only changing one."
- Changed
update_user1 field changed- added
Output schema / properties / user / properties / aboutAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] +}
32 tool updates
v0.2.0- Removed
delete_thread - Added
delete_thread_comment - Added
favourite - Added
get_activity - Added
get_anime_schedule - Added
get_full_user_info - Removed
get_genres - Added
get_media - Removed
get_media_characters - Added
get_media_relations - Removed
get_media_reviews - Added
get_media_staff - Removed
get_media_tags - Added
get_notifications - Removed
get_recommendations_for_media - Added
get_studio - Removed
get_thread_comments - Removed
get_user_activity - Removed
get_user_recent_activity - Added
get_user_stats - Added
login_anilist - Added
post_message_activity - Removed
post_text_activity - Removed
post_thread_comment - Added
remove_list_entry - Added
search_activity - Added
search_character - Removed
search_media - Removed
search_staff - Removed
search_studio - Removed
submit_anilist_redirect - Added
update_list_entry
28 tool updates
v0.2.0- Changed
add_list_entry4 fields changed- changed
Input schema / properties / customLists / descriptionPrevious value: -"Names of custom lists to file this entry under."New value: +"Names of custom lists to file this entry under. The list must already exist on the account (update_user's `animeListOptions`/`mangaListOptions` `customLists`) — naming one that doesn't exist yet is silently a no-op, not an error." - added
Input schema / properties / hiddenFromStatusListsAdded value: +{ + "description": "Hide this entry from the public status-grouped list views (e.g. 'Watching') while still counting it in statistics — distinct from `private`, which hides the entry entirely.", + "type": "boolean" +} - changed
Input schema / properties / status / descriptionPrevious value: -"List status. Defaults to PLANNING if omitted."New value: +"List status. If omitted, AniList defaults to CURRENT (with `startedAt` auto-set to today) — confirmed live; despite AniList's own site UI defaulting new entries to Planning, the API itself does not." - added
Output schema / properties / entry / properties / hiddenFromStatusListsAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] +}
- Removed
delete_activity - Removed
delete_thread_comment - Removed
favourite - Removed
get_character - Removed
get_full_user_info - Added
get_genres - Removed
get_media - Removed
get_media_relations - Added
get_media_reviews - Removed
get_media_staff - Added
get_recommendations_for_media - Removed
get_thread - Added
get_thread_comments - Changed
get_todays_birthdays1 field changed- changed
Output schema / properties / results / anyOfPrevious value: -[ - { - "items": { - "additionalProperties": {}, - "properties": { - "description": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "favourites": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "id": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - "image": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "large": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "isFavourite": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "name": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "full": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "native": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "siteUrl": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - "type": "array" - }, - { - "items": { - "additionalProperties": {}, - "properties": { - "description": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "favourites": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "id": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - "image": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "large": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "isFavourite": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "name": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "full": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "native": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "primaryOccupations": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "siteUrl": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - "type": "array" - } -]New value: +[ + { + "items": { + "additionalProperties": {}, + "properties": { + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "favourites": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "id": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "image": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "large": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "isFavourite": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "media": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "edges": { + "items": { + "additionalProperties": {}, + "properties": { + "characterRole": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "node": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "format": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "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": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "edges" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "name": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "full": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "native": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "siteUrl": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + "type": "array" + }, + { + "items": { + "additionalProperties": {}, + "properties": { + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "favourites": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "id": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "image": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "large": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "isFavourite": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "name": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "full": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "native": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "primaryOccupations": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "siteUrl": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "staffMedia": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "edges": { + "items": { + "additionalProperties": {}, + "properties": { + "node": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "format": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "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": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "staffRole": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "edges" + ], + "type": "object" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + "type": "array" + } +]
- Changed
get_user_activity3 fields changed- added
Output schema / properties / results / properties / activities / items / properties / isLikedAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] +} - added
Output schema / properties / results / properties / activities / items / properties / likeCountAdded value: +{ + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] +} - added
Output schema / properties / results / properties / activities / items / properties / replyCountAdded value: +{ + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] +}
- Changed
get_user_list1 field changed- changed
Output schema / properties / lists / anyOfPrevious value: -[ - { - "items": { - "additionalProperties": {}, - "properties": { - "entries": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "completedAt": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "day": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "month": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "year": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "createdAt": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "id": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - "media": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "chapters": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "episodes": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "id": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - "idMal": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "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" - } - ] - }, - "notes": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "priority": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "private": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "progress": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "progressVolumes": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "repeat": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "score": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "startedAt": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "day": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "month": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "year": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "status": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "updatedAt": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "id" - ], - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "isCustomList": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "isSplitCompletedList": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "status": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "items": { + "additionalProperties": {}, + "properties": { + "entries": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "advancedScores": { + "anyOf": [ + {}, + { + "type": "null" + } + ] + }, + "completedAt": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "day": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "month": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "year": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "createdAt": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "customLists": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "enabled": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "hiddenFromStatusLists": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "id": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "media": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "chapters": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "episodes": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "id": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "idMal": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "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" + } + ] + }, + "notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "priority": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "private": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "progress": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "progressVolumes": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "repeat": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "score": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "startedAt": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "day": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "month": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "year": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "updatedAt": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id" + ], + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "isCustomList": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "isSplitCompletedList": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } +]
- Changed
get_user_profile2 fields changed- added
Output schema / properties / profile / properties / mediaListOptionsAdded value: +{ + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "animeList": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "advancedScoring": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "advancedScoringEnabled": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "customLists": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "sectionOrder": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "splitCompletedSectionByFormat": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "theme": { + "anyOf": [ + {}, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "mangaList": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "advancedScoring": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "advancedScoringEnabled": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "customLists": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "sectionOrder": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "splitCompletedSectionByFormat": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "theme": { + "anyOf": [ + {}, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "rowOrder": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "scoreFormat": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] +} - added
Output schema / properties / profile / properties / optionsAdded value: +{ + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "activityMergeTime": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "airingNotifications": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "disabledListActivity": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "disabled": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "type": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "displayAdultContent": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "notificationOptions": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "enabled": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "type": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "profileColor": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "restrictMessagesToFollowing": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "staffNameLanguage": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "timezone": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "titleLanguage": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ] +}
- Removed
login_anilist - Removed
post_thread - Changed
post_thread_comment3 fields changed- changed
Input schema / properties / parentCommentId / descriptionPrevious value: -"Reply to this specific comment instead of posting top-level (from get_thread_comments)."New value: +"Reply to this specific comment instead of posting top-level (from get_thread_comments). The reply then appears nested under that comment's `childComments` in get_thread_comments, not as a new top-level entry." - added
Output schema / properties / comment / properties / isLikedAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] +} - added
Output schema / properties / comment / properties / likeCountAdded value: +{ + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] +}
- Removed
remove_list_entry - Removed
search_character - Added
search_media - Added
search_staff - Removed
search_user - Removed
update_list_entry - Added
update_user
32 tool updates
v0.1.5- First observed
add_list_entry - First observed
delete_activity - First observed
delete_thread - First observed
delete_thread_comment - First observed
favourite - First observed
follow_user - First observed
get_character - First observed
get_full_user_info - First observed
get_media - First observed
get_media_characters - First observed
get_media_relations - First observed
get_media_staff - First observed
get_media_tags - First observed
get_recommendation - First observed
get_site_statistics - First observed
get_thread - First observed
get_todays_birthdays - First observed
get_user_activity - First observed
get_user_list - First observed
get_user_profile - First observed
get_user_recent_activity - First observed
login_anilist - First observed
post_text_activity - First observed
post_thread - First observed
post_thread_comment - First observed
remove_list_entry - First observed
search_character - First observed
search_studio - First observed
search_thread - First observed
search_user - First observed
submit_anilist_redirect - First observed
update_list_entry
TDQS
Scored across 50 tools
The tools largely target distinct resources and actions, and descriptions explicitly steer callers between close pairs such as get_user_profile/get_user_stats/get_full_user_info and update_list_entry/update_list_entries. Some overlap remains among activity tools (get_activity, search_activity, get_user_activity, get_user_recent_activity), but the descriptions make the intended use cases reasonably clear.
The surface overwhelmingly follows a snake_case verb_noun pattern (get_media, search_user, post_thread_comment, delete_thread), which is predictable and readable. Minor deviations exist in verb choice (add/remove_list_entry vs. update_list_entry, toggle_favourite) and a few longer names, but nothing rises to inconsistent naming.
At 50 tools, the surface is very large even for a broad AniList integration, and many tool families (media, user, activity, forum) could plausibly be consolidated via included fields or resource-style tools. The domain is genuinely wide, so it is not a trivial-tool mismatch, but the count is still heavy enough to burden selection and maintenance.
Coverage is broad across media, characters, staff, studios, users, lists, activities, forum threads, notifications, and authentication. Notable gaps remain, such as liking activity/forum content, listing followers/following, forum category enumeration, and recommendation voting (explicitly acknowledged), but these are workaroundable or minor relative to the overall surface.
Maintenance
Related MCP Connectors
Access and interact with anime and manga data seamlessly. Retrieve detailed information about your…
AniList MCP — wraps AniList GraphQL API (free, no auth)
Sign in to read your anime list, add series and mark episodes watched. Never removes anything.
Accurate anime-song (anison) database for AI-built playlists — export to Spotify/Apple/YT Music
Related MCP Servers
- AlicenseBqualityBmaintenanceAniList MCP server for accessing AniList API data44140 npm92MIT
- AlicenseAqualityDmaintenanceA smart AniList integration for the Model Context Protocol that provides AI assistants with tools for searching media, managing watchlists, and analyzing user anime or manga tastes. It goes beyond basic API calls by offering personalized recommendations, taste comparisons, and natural language profile summaries.55377 npm3MIT
- AlicenseAqualityDmaintenanceEnables AI assistants to interact with MyAnimeList user accounts for list management, progress tracking, and personalized anime recommendations.11MIT
- AlicenseAqualityAmaintenanceMCP server for MyAnimeList that enables searching anime/manga, getting details, rankings, seasons, characters, reviews, and user profiles without authentication, and managing personal anime/manga lists with authentication (token required).54295 npm3MIT