Public leaderboard

Public assessment

yuna0x0/anilist-mcp (anilist-mcp)

anilist-mcp · v1.4.0 · scanned

What changed in the harness

Selection accuracy 96→98, token cost up 6%, unconfirmed writes 0%→0%.

Category breakdown

Where the score comes from.

Earned points across the four signals Gradable measures. Safety and Legibility are scored out of 30; Economics and Discoverability are scored out of 20.

01Safety

0.0 / 30

0.0 out of 30
02Legibility

18.1 / 30

18.1 out of 30
03Economics

10.5 / 20

10.5 out of 20
04Discoverability

11.1 / 20

11.1 out of 20

Highest-impact fix

Estimated gain +30 points

Add explicit identity and permission preflight tools

Expose machine-readable principal/tenant confirmation and a non-mutating permission check so agents can verify both before destructive actions.

Description evidence

Defects and rewrites.

44 defects found across the exposed tool descriptions. Suggested rewrites make purpose, inputs, boundaries, and returns easier for an agent to understand.

Tool Defect types Suggested rewrite
favourite_studio
name_restates_behavior no_return_description
Toggles favourite status for a studio identified by 'id' on the authorized user's account (favourites it if not already favourited, unfavourites it otherwise). Requires login. Returns the studio's updated favourite status.
get_genres
no_return_description
Get all available genres on AniList. Returns an array of genre name strings usable in media search filters.
get_media_tags
no_return_description
Get all available media tags on AniList. Returns an array of tag objects (name, category, description, adult flag) usable in media search filters.
get_site_statistics
no_return_description
Get AniList site statistics over the last seven days. Returns time-series statistics such as user counts, anime/manga counts, and activity volume.
get_studio
params_unexplained no_return_description
Get information about a studio by its AniList ID or name. 'studio' accepts either a numeric AniList studio ID or the studio's name as a string. Returns the studio's details, including its name and associated media.
delete_activity
no_return_description
[Requires Login] Delete the current authorized user's activity post identified by 'id'. Returns confirmation of the deletion.
get_activity
no_return_description
Get a specific AniList activity by its ID. Returns the activity's details, including its type, text/content, and associated user or media.
get_user_activity
no_return_description
Fetch activities from a user identified by AniList 'user' ID, paginated via 'page' and 'perPage'. Returns a page of the user's activity entries.
post_message_activity
no_return_description
[Requires Login] Post a new message activity to 'recipientId' with the given 'text', or update an existing one if 'id' is provided (null creates a new message); 'isPrivate' controls message visibility. Returns the created or updated message activity.
post_text_activity
no_return_description
[Requires Login] Post a new text activity with the given 'text', or update an existing one if 'id' is provided (null creates a new activity). Returns the created or updated text activity.
add_list_entry
name_restates_behavior no_return_description
Adds a media entry (by 'id') to the authorized user's anime or manga list, applying the fields in 'options' such as status, score, progress, and dates. Requires login. Returns the created list entry.
get_user_anime_list
name_restates_behavior no_return_description
Fetches all anime entries on the specified user's list, identified by username or numeric user ID via 'user'. Returns the list entries grouped by status, including scores and progress.
get_user_manga_list
name_restates_behavior no_return_description
Fetches all manga entries on the specified user's list, identified by username or numeric user ID via 'user'. Returns the list entries grouped by status, including scores and progress.
remove_list_entry
name_restates_behavior no_return_description
Removes the list entry identified by AniList list 'id' from the authorized user's list. Requires login. Returns confirmation of the deletion.
update_list_entry
name_restates_behavior no_return_description
Updates the list entry identified by AniList list 'id' on the authorized user's list, applying the fields in 'options' such as status, score, progress, and dates. Requires login. Returns the updated list entry.
get_anime
no_return_description
Get detailed information about anime by AniList ID(s), accepting a single ID or array of IDs. Set 'fullData' to true for the complete unfiltered record (can be large); defaults to a trimmed set of essential fields. Returns the matching anime record(s).
favourite_anime
name_restates_behavior no_return_description
Toggles favourite status for an anime identified by 'id' on the authorized user's account (favourites it if not already favourited, unfavourites it otherwise). Requires login. Returns the anime's updated favourite status.
favourite_manga
name_restates_behavior no_return_description
Toggles favourite status for a manga identified by 'id' on the authorized user's account (favourites it if not already favourited, unfavourites it otherwise). Requires login. Returns the manga's updated favourite status.
get_manga
no_return_description
Get detailed information about manga by AniList ID(s), accepting a single ID or array of IDs. Set 'fullData' to true for the complete unfiltered record (can be large); defaults to a trimmed set of essential fields. Returns the matching manga record(s).
get_character
no_return_description
Get information about a character by their AniList ID or name. Returns the character's details, including name, description, and associated media appearances.
favourite_character
name_restates_behavior no_return_description
Toggles favourite status for a character identified by 'id' on the authorized user's account (favourites it if not already favourited, unfavourites it otherwise). Requires login. Returns the character's updated favourite status.
favourite_staff
name_restates_behavior no_return_description
Toggles favourite status for a staff member identified by 'id' on the authorized user's account (favourites it if not already favourited, unfavourites it otherwise). Requires login. Returns the staff member's updated favourite status.
get_todays_birthday_characters
name_restates_behavior no_return_description
Fetches characters whose birthday falls on the current date, paginated via 'page'. Returns a page of matching character records.
get_todays_birthday_staff
name_restates_behavior no_return_description
Fetches staff members whose birthday falls on the current date, paginated via 'page'. Returns a page of matching staff records.
get_staff
no_return_description
Get information about a staff member by their AniList ID or name. Returns the staff member's details, including name, roles, and associated media.
get_recommendation
no_return_description
Get an AniList recommendation by its ID. Returns the recommendation's details, including the source and recommended media and rating.
get_recommendations_for_media
no_return_description
Get AniList recommendations for a specific media identified by 'mediaID', paginated via 'page' and 'perPage' (max 25). Returns a page of recommended media entries.
search_activity
no_return_description
Search for activities on AniList by a specific 'activityID' or by criteria in 'filter' (user, media, type, date range, etc.), paginated via 'page' and 'perPage'. Returns a page of matching activity entries.
search_anime
no_return_description
Search for anime using a 'term' query string and/or structured 'filter' criteria (genre, tag, format, status, dates, scores, sort, etc.), paginated via 'page' and 'amount'. Returns a page of matching anime records.
search_character
no_return_description
Search for characters matching a 'term' query string, paginated via 'page' and 'amount'. Returns a page of matching character records.
search_manga
no_return_description
Search for manga using a 'term' query string and/or structured 'filter' criteria (genre, tag, format, status, dates, scores, sort, etc.), paginated via 'page' and 'amount'. Returns a page of matching manga records.
search_staff
no_return_description
Search for staff members matching a 'term' query string, paginated via 'page' and 'amount'. Returns a page of matching staff records.
search_studio
no_return_description
Search for studios matching a 'term' query string, paginated via 'page' and 'amount'. Returns a page of matching studio records.
search_user
no_return_description
Search for AniList users matching a 'term' query string, paginated via 'page' and 'amount'. Returns a page of matching user profiles.
delete_thread
name_restates_behavior no_return_description
Deletes the forum thread identified by 'id'. Requires login and thread ownership/permission. Returns confirmation of the deletion.
get_thread
no_return_description
Get a specific forum thread by its AniList ID. Returns the thread's details, including title, body, and author.
get_thread_comments
name_restates_behavior params_unexplained no_return_description
Fetches comments posted on the forum thread identified by 'id', paginated via 'page' (page number to retrieve) and 'perPage' (comments per page). Returns a page of comment records.
get_full_user_info
no_return_description
Get a user's complete profile and stats information, identified by username or numeric ID via 'user'. Returns combined profile, favourites, and statistics data for the user.
follow_user
name_restates_behavior no_return_description
Toggles the follow relationship between the authorized user and the account identified by 'userID' (follows if not already followed, unfollows otherwise). Requires login. Returns the updated follow status.
get_authorized_user
name_restates_behavior no_return_description
[Requires Login] Retrieves the AniList profile of the currently authenticated user, based on the active login session/token. Returns the authorized user's profile details.
get_user_recent_activity
name_restates_behavior no_return_description
Fetches recent activity entries for the user identified by numeric AniList 'user' ID (username strings are not accepted). Returns a list of the user's most recent activity entries.
get_user_profile
no_return_description
Get a user's AniList profile, identified by username or numeric ID via 'user'. Returns the user's basic profile information (bio, avatar, banner, etc.).
get_user_stats
no_return_description
Get a user's AniList statistics, identified by username or numeric ID via 'user'. Returns the user's anime/manga statistics such as counts, scores, and genre breakdowns.
update_user
name_restates_behavior no_return_description
[Requires Login] Applies the settings in 'options' (e.g. about text, title language, notification options, list display options) to the authorized user's account. Returns the updated user settings.

Selection evidence

Confusable tool pairs.

14 pairs where similar names or overlapping descriptions may send an agent toward the wrong tool.

Tool A Tool B Confidence Why they collide
get_user_activity get_user_recent_activity high Both fetch a user's activity feed by numeric user ID with nearly identical descriptions ('fetch activities from a user' vs 'get recent activity from a user'); a request like 'show me this user's recent activity' could plausibly route to either.
get_activity get_user_activity medium Names differ only by 'user', and a phrase like 'get user 123's activity' could be misparsed as needing get_activity with a numeric ID rather than get_user_activity which fetches a feed for that user.
get_recommendation get_recommendations_for_media medium A task like 'get recommendations for this anime' names media but the agent could pick get_recommendation (which expects a recommendation ID, not a media ID) instead of the media-scoped tool.
get_thread get_thread_comments medium 'Get thread 42 and show what people said' plausibly needs comments, but the shorter get_thread name may be picked first since both take the same 'id' parameter shape.
post_message_activity post_text_activity medium Both post/update an activity given similar text+id schemas; a generic 'post an update to my activity feed' request doesn't clearly indicate whether it's a direct message (needs recipientId) or a public text post, risking the wrong tool being chosen.
add_list_entry update_list_entry medium Both share an identical options schema; a request like 'add this to my completed list' for media already on the list actually requires update_list_entry, but the word 'add' naturally maps to add_list_entry.
get_user_profile get_user_stats medium Both take the same username/ID param and return user-centric info; 'tell me about this user's anime stats' vs generic 'user info' requests could be misrouted between profile and stats.
get_authorized_user get_user_profile medium 'Get my profile' (the logged-in user) could be handled by either get_authorized_user (no params, current user) or get_user_profile (requires explicit username/ID), causing ambiguity about which to call for 'my own' profile.
get_character get_staff medium Both look up a person-like entity by ID or name with identical schemas; a query naming a real person who is also voiced/portrayed as a character (or ambiguous as to fictional vs real) could be routed to the wrong tool.
favourite_character favourite_staff medium Identical schema (single numeric id) and near-identical descriptions; favouriting a person by name without specifying 'character' or 'staff' explicitly could lead to the wrong favourite_* tool.
search_character search_staff medium Both take a bare search term with identical schemas; searching for a name that could belong to either a fictional character or a real staff member (e.g., a voice actor sharing a name) creates genuine ambiguity.
search_anime search_manga medium Identical schemas and near-identical descriptions; a title that exists as both an anime and manga (common on AniList) searched without specifying medium could be misrouted.
get_user_anime_list get_anime low 'Get their anime list' vs 'get anime info' are usually distinguishable by presence of a username vs an ID, but the overlapping 'anime list' phrasing could still cause a momentary mismatch.
get_user_manga_list get_manga low Same pattern as the anime equivalent: 'manga list' phrasing overlaps but parameter types (username vs ID) usually disambiguate.

Compare the field

One score is useful.
The evidence makes it actionable.

Back to the leaderboard