osu! integration
osu! is a free rhythm game with a large community. Through its official API v2 an agent can look up beatmaps (one, several, by checksum or filename), their difficulty attributes for a ruleset and mods, leaderboards and a user's scores on a beatmap, beatmap packs, beatmapset modding discussions, posts and votes, users (profile, statistics, best, first and recent scores, beatmaps, kudosu, recent activity, passed beatmaps, the connected user's own profile), global, country, score and spotlight rankings, the recent-scores feed, multiplayer matches and playlist scores, teams, forums and topics, comments, news, changelog builds, wiki pages, site events, and search users and wiki pages. All tools read; writing (chat, forum posts, comments, score pins), lazer-only and undocumented routes, beatmapset search (undocumented) and downloads are not exposed, and contact handles, location and other users' moderation history are left out of user profiles. Responses use API version 20240529 (the current score format). The vendor's terms ask for no more than about 60 requests per minute, no polling of the same user or beatmap more than once a minute, no mass harvesting of score, user or beatmap data, and no use for a competitive advantage. Authentication is OAuth2 with your own osu! OAuth application (scopes public and identify).
Say what should happen.
The workflow builds itself.
What you can do with osu!
Each of these is one operation on one endpoint, available both as a workflow step and as a tool an AI agent can call on its own. Nothing bundles several operations into one action, so what a run did stays readable afterwards.
Most endpoints run on the free plan. A few, mainly the ones that publish on your behalf, need a paid plan.
Score, 6 operations
get_user_beatmap_scoreGet user beatmap scoreGETReturns a user's best score on a beatmap and its leaderboard position (the position depends on the ruleset and mods asked).list_beatmap_scoresList beatmap scoresGETReturns the top scores of a beatmap (each with its user, country and cover) and the connected user's own score and position. May show only legacy scores depending on the user's preferences.list_playlist_scoresList playlist scoresGETLists the scores of a multiplayer room's playlist item, with the total and the connected user's score, paged with cursor_string.list_recent_scoresList recent scoresGETReturns recently submitted passed scores, up to 1000, oldest to newest. Without cursor_string it returns the most recent; pass the previous cursor_string to get only newer ones.list_user_beatmap_scoresList user beatmap scoresGETReturns all of a user's scores on a beatmap.list_user_scoresList user scoresGETReturns a user's best, first-place or recent scores for a ruleset, with beatmap and beatmapset (and weight for best).
Beatmap, 4 operations
get_beatmapGet beatmapGETReturns one beatmap by id: difficulty settings, lengths, counts, status, with its beatmapset (BeatmapsetExtended), failtimes and max_combo.get_beatmapsGet beatmapsGETReturns up to 50 beatmaps by id in one call (ids[]), each with its beatmapset (BeatmapsetExtended), failtimes, max_combo and owners.list_user_passed_beatmapsList user passed beatmapsGETReturns the beatmaps a user has passed among the given beatmapsets, optionally per ruleset and excluding converts or difficulty-reduction mods.lookup_beatmapLookup beatmapGETFinds one beatmap by its id, its file checksum (MD5) or its .osu filename; returns the beatmap with beatmapset, failtimes and max_combo.
User, 4 operations
get_meGet meGETReturns the connected osu! user's own profile for a ruleset (the get_user fields plus its own account history), with session_verified and statistics for every ruleset.get_userGet userGETReturns a user's profile by id or @username for a ruleset: statistics, highest rank, badges, groups, counts, kudosu. Contact handles, location and moderation (account) history are not returned.get_usersGet usersGETReturns up to 50 users by id (ids[]), each with country, cover, groups and per-ruleset statistics.search_users_and_wikiSearch users and wikiGETSearches users and wiki pages by keyword (mode all, user or wiki_page); only the first 100 user results are reachable.
Changelog, 3 operations
get_changelog_buildGet changelog buildGETReturns one build of an update stream by version, with its changelog entries (with GitHub user and message) and the previous and next versions.list_changelogList changelogGETLists update streams (each with its latest build) and up to 21 builds with their changelog entries, filtered by stream and build version or id range.lookup_changelog_buildLookup changelog buildGETReturns one build looked up by version, stream name (its latest build) or id (with key=id), with changelog entries and the previous and next versions.
Comment, 2 operations
get_commentGet commentGETReturns one comment with its replies up to 2 levels deep, as a comment bundle with users and resource metadata.list_commentsList commentsGETLists comments with their replies up to 2 levels deep, for one resource (commentable_type and commentable_id) or site-wide, with users and resource metadata.
Event, 2 operations
list_eventsList eventsGETLists recent site events (ranks, achievements, beatmapset uploads and status changes, supporter, username changes), paged with cursor_string.list_user_recent_activityList user recent activityGETReturns a user's recent activity events (ranks, achievements, beatmapset updates), paged with limit and offset.
Forum, 2 operations
get_forumGet forumGETReturns a forum by id with its subforums, pinned topics and recent topics.list_forumsList forumsGETLists the top-level forums with their subforums (at most 2 levels deep).
Match, 2 operations
get_matchGet matchGETReturns a multiplayer match with its events (games with beatmaps and scores) and the users in it; page events with before and after.list_matchesList matchesGETLists multiplayer matches, newest first by default, optionally only active or inactive ones, paged with cursor_string.
News, 2 operations
get_news_postGet news postGETReturns one news post by slug (or id with key=id) with its HTML and Markdown content and links to the newer and older posts.list_newsList newsGETLists news posts (12 by default, 21 at most), newest first, with a preview, plus the sidebar of posts and years; filter by year, page with cursor_string.
Pack, 2 operations
get_beatmap_packGet beatmap packGETReturns one beatmap pack by its tag, with its beatmapsets and, for the connected user, completion data.list_beatmap_packsList beatmap packsGETLists beatmap packs of one type (standard by default), newest first, paged with cursor_string. Each pack has its tag (for get_beatmap_pack), name, author and date.
Ranking, 2 operations
get_kudosu_rankingGet kudosu rankingGETReturns the kudosu (modding reputation) ranking, users with their kudosu, one page at a time.get_rankingGet rankingGETReturns a ranking for a ruleset: performance, score, country or charts (spotlight), with each user's statistics; page with cursor[page] from the response cursor.
Topic, 2 operations
get_forum_topicGet forum topicGETReturns a forum topic with its posts (BBCode and HTML body), 20 by default and 50 at most, paged with cursor_string.list_forum_topicsList forum topicsGETLists forum topics sorted by last post time, optionally from one forum, paged with cursor_string (50 at most).
Beatmap attributes, 1 operation
get_beatmap_attributesGet beatmap attributesPOSTRead-only: returns a beatmap's difficulty attributes (star rating, max combo, ruleset-specific values) for a ruleset and a mod combination. Changes nothing.
Beatmapset, 1 operation
list_user_beatmapsetsList user beatmapsetsGETLists a user's beatmapsets of one kind (favourite, graveyard, guest, loved, nominated, pending, ranked), or with most_played the beatmaps they played most with play counts.
Discussion, 1 operation
list_beatmapset_discussionsList beatmapset discussionsGETLists beatmapset modding discussions (filter by beatmap, beatmapset, user, status, message type), with the related beatmaps and users. The vendor warns this response may change.
Kudosu history, 1 operation
list_user_kudosuList user kudosuGETReturns a user's kudosu history (given, revoked, reset), newest first, paged with limit and offset.
Post, 1 operation
list_beatmapset_discussion_postsList beatmapset discussion postsGETLists posts of beatmapset discussions (filter by discussion, user, post type), with the related beatmapsets and users. The vendor warns this response may change.
Spotlight, 1 operation
list_spotlightsList spotlightsGETLists the ranking spotlights (id, name, type, start and end dates), whose ids get_ranking takes with type charts.
Team, 1 operation
get_teamGet teamGETReturns a team by id or @short name for a ruleset: description, open status, leader and members (with country, cover, groups) and team statistics.
Vote, 1 operation
list_beatmapset_discussion_votesList beatmapset discussion votesGETLists votes on beatmapset discussions (filter by discussion, voter, receiver, up or down), with the related discussions and users. The vendor warns this response may change.
Wiki, 1 operation
get_wiki_pageGet wiki pageGETReturns an osu! wiki article in a language: title, subtitle, Markdown content, tags and available locales.
Use osu! from Claude Code, Cursor or Codex
Connect osu! in LiveContext, create an API key in Settings, then add the LiveContext MCP server to your client. Its osu! operations become tools the client can call, next to every other integration you connected.
claude mcp add --transport http livecontext https://livecontext.ai/mcp --header "X-API-Key: YOUR_API_KEY"[mcp_servers.livecontext]
url = "https://livecontext.ai/mcp"
[mcp_servers.livecontext.http_headers]
"X-API-Key" = "YOUR_API_KEY"{
"mcpServers": {
"livecontext": {
"type": "http",
"url": "https://livecontext.ai/mcp",
"headers": {
"X-API-Key": "YOUR_API_KEY"
}
}
}
}How to connect osu!
- Create your workspace
Sign up free. Nothing to install.
- Connect osu! once
Add your osu! connection in Settings. Every tool from this integration reuses it, and secrets are encrypted at rest and visible only to you.
- Describe the job in chat
The workflow builds itself in front of you and picks the endpoints it needs. Drag the steps yourself on the canvas whenever you would rather be explicit.
osu! integration FAQ
What can you do with the osu! integration?
LiveContext exposes 42 operations on osu!, covering score, beatmap, user and changelog.
