Codeforces
liveDeveloperGamesCompetitive-programming users, contests, problems, submissions. Keyless.
8tools
0msauth
free tier50 calls/day
Tools
userrequired: handlesUser profile(s).
Parameters
NameTypeDescription
handlesreqarray—Try it
Response
user_ratingrequired: handleRating history.
Parameters
NameTypeDescription
handlereqstring—Try it
Response
user_statusrequired: handleRecent submissions.
Parameters
NameTypeDescription
handlereqstring—fromoptnumber—countoptnumber—Try it
Response
contest_listAll contests (regular or gym).
Parameters
NameTypeDescription
gymoptboolean—Try it
Response
contest_standingsrequired: contest_idStandings + problems for one contest.
Parameters
NameTypeDescription
contest_idreqnumber—handlesoptarray—fromoptnumber—countoptnumber—Try it
Response
problemsetProblemset by tag.
Parameters
NameTypeDescription
tagsoptarray—problemset_nameoptstring—Try it
Response
recent_actionsGlobal recent-actions feed.
Parameters
NameTypeDescription
max_countoptnumber—Try it
Response
blog_entry_viewrequired: blog_idFull blog entry by id.
Parameters
NameTypeDescription
blog_idreqnumber—Try it
Response
Test with curl
The gateway speaks JSON-RPC 2.0 over HTTP POST. You can test any pack directly from the terminal.
List available tools
bash
curl -X POST https://gateway.pipeworx.io/codeforces/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'Call a tool
bash
curl -X POST https://gateway.pipeworx.io/codeforces/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"user","arguments":{"handles": "example"}}}'Use with the SDK
Install @pipeworx/sdk to call tools from any TypeScript/Node project.
TypeScript
import { Pipeworx } from '@pipeworx/sdk';
const px = new Pipeworx();
const result = await px.call("user", {"handles":"example"});ask_pipeworx
// Or ask in plain English:
const answer = await px.ask("competitive-programming users, contests, problems, submissions");