@pipeworx/codeforces
Connect: https://gateway.pipeworx.io/codeforces/mcp · Install: one-click buttons
Tools: 8
Codeforces public read API MCP — competitive programming users, contests, problems, submissions. Keyless.
Tools
user(handles[])— profile(s) by handle (up to 10k)user_rating(handle)— full rating history for a useruser_status(handle, count?)— recent submissions for a usercontest_list(gym?)— all contests (regular or gym)contest_standings(contest_id, handles?, from?, count?)— final scoreboard + problem list for one contestproblemset(tags?, problemset_name?)— problemset + recent submissions statsrecent_actions(max_count?)— recent global actions feedblog_entry_view(blog_id)— full blog entry by id
Standings paging is done here, not upstream
Codeforces rejects from, count and handles on public standings — it answers
HTTP 400 with “Non-gym contest standings for non-admin users are available only
via anonymous GET requests with no extra parameters”. The only request it accepts
is the bare ?contestId=<id>, which returns the entire scoreboard (2.7 MB for
contest 1000, 14 MB for contest 2000).
So contest_standings streams that response and slices it here: from/count
page the rows and handles filters them, with the same meaning they had before.
Nothing is held in memory beyond the window you asked for. Two consequences worth
knowing:
- Without a
handlesfilter the read stops as soon as your window is full, so the response carrieshas_more: trueinstead oftotal_rows— the participant count is genuinely unknown at that point. Ask for a window past the end of the scoreboard, or passhandles, and you gettotal_rows. - Gym contests are not available at all. Codeforces serves gym standings only to an
authenticated Codeforces account and this pack is keyless, so it returns
{found: false, reason: "gym_contest_requires_codeforces_account"}rather than an error.
Data source
https://codeforces.com/api/
Tools
- user — User profile(s) by handle (up to 10000 semicolon-separated).
- user_rating — Full rating history for a user.
- user_status — Codeforces competitive-programming API — the submission history of one Codeforces handle, newest first, paged with from/count. Each submission carries the contest and problem it targeted, the judge ve
- contest_list — All contests. Pass gym=true for gym contests.
- contest_standings — Codeforces competitive-programming API — the final scoreboard of one Codeforces round: every participant’s rank, handle, total points, penalty, hack counts and per-problem results, plus the contest me
- problemset — Problemset + per-problem submission counts. Optional tag filter.
- recent_actions — Codeforces competitive-programming site — the global recent-actions feed, the newest blog entries and comments posted anywhere on Codeforces. Each action returns its timestamp plus the blog entry (tit
- blog_entry_view — Full blog entry by id.
Tools
-
blog_entry_view— Full blog entry by id. -
contest_list— All contests. Pass gym=true for gym contests. -
contest_standings— Codeforces competitive-programming API — the final scoreboard of one Codeforces round: every participant's rank, handle, total points, penalty, hack counts and per-problem results, plus the contest me -
problemset— Problemset + per-problem submission counts. Optional tag filter. -
recent_actions— Codeforces competitive-programming site — the global recent-actions feed, the newest blog entries and comments posted anywhere on Codeforces. Each action returns its timestamp plus the blog entry (tit -
user— User profile(s) by handle (up to 10000 semicolon-separated). -
user_rating— Full rating history for a user. -
user_status— Codeforces competitive-programming API — the submission history of one Codeforces handle, newest first, paged with from/count. Each submission carries the contest and problem it targeted, the judge ve