Integration

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).

Ask it in chat

Say what should happen.
The workflow builds itself.

When this happens, do that in osu!.Built from the 42 osu! tools below, on the connection you add once.

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 Code
claude mcp add --transport http livecontext https://livecontext.ai/mcp --header "X-API-Key: YOUR_API_KEY"
Codex (~/.codex/config.toml)
[mcp_servers.livecontext]
url = "https://livecontext.ai/mcp"

[mcp_servers.livecontext.http_headers]
"X-API-Key" = "YOUR_API_KEY"
Cursor, Claude Desktop and other JSON configs
{
  "mcpServers": {
    "livecontext": {
      "type": "http",
      "url": "https://livecontext.ai/mcp",
      "headers": {
        "X-API-Key": "YOUR_API_KEY"
      }
    }
  }
}

Set up the MCP server step by step

How to connect osu!

  1. Create your workspace

    Sign up free. Nothing to install.

  2. 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.

  3. 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.

Popular integrations

Browse the whole catalog