Player Two

lol.playertwo由 playertwo.lol 发布官方发布者v1.1.0更新于 Nov 8, 2026

Find browser games on Player Two, read its game SDK docs, and run your game studio there.

已验证Streamable HTTP可网页运行开发者工具商业与电商媒体与设计

概览

AI 生成的概览

让助手浏览 Player Two 浏览器游戏商店,并凭工作室密钥提交和管理开发者的游戏、构建、奖杯、排行榜、商品与动态。

可以做什么
  • 搜索和列出商店游戏,读取单个游戏的事实、价格与游玩方式
  • 阅读开发者文档:游戏 SDK、托管、发布方式与提交指南
  • 上传媒体和网页构建,然后提交或更新玩家的游戏,包括众筹
  • 管理奖杯、排行榜、游戏内商品和保留的构建,并让某个构建上线
  • 发布、编辑、置顶和删除动态,并读取、隐藏、锁定或标记评论已读
  • 查看游戏当前开放的多人房间,并开启或关闭其试玩链接
适用场景
适合开发者希望由助手在 Player Two 上发布或维护浏览器游戏,或有人想在开发前查询游戏、价格和 SDK 文档时使用。
运行要求
远程 Streamable HTTP 端点,无需本地安装。公开工具无需凭据。工作室工具需要以 Authorization Bearer 头发送的 agent 密钥,或在客户端支持时通过 OAuth 登录。
安装前请注意
agent 密钥可控制玩家的工作室,应视为机密。工作室工具会改动线上数据:提交游戏、让构建上线、定义奖杯、排行榜和商品,以及发布、编辑或删除动态和隐藏评论。众筹在玩家于工作室完成身份验证前不会收取任何款项。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Player Two,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。

交给智能体安装

把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。

阅读 https://sourceweft.com/mcp/lol.playertwo%2Fmcp/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。

查看智能体所依据的安装指南

其他 MCP 客户端

把它添加到你客户端的 mcpServers 配置中。

{
  "mcpServers": {
    "player-two": {
      "type": "http",
      "url": "https://playertwo.lol/api/mcp"
    }
  }
}

README

Player Two SDK

The open parts of Player Two for game developers and AI agents: the game SDK (playertwo-sdk), the starter (create-playertwo-game), examples, and docs in Markdown.

Player Two is a game store and a launchpad. Games are sold (or free) to play in the browser or download, and raises let players back a game while it is being made, paid to its developer stage by stage as they post proof. A web game hosted on Player Two plays at its own address on playertwo.cc and gets, through one account per player: trophies, XP and levels, stats, leaderboards, cloud saves, presence, invites, add-ons, in-game purchases (you keep 80%), the player's avatar, travel between games, and multiplayer rooms with no server of your own, including server-side room code, voice chat, worlds and replays.

This repository holds the SDK, the starter and their docs. The Player Two platform itself is not open source.

Quick start

npm create playertwo-game@latest my-gamecd my-gamenpm installnpm run dev      # open it in two tabs: each tab is a player

Or add the SDK to your own game:

html
<script src="https://playertwo.lol/sdk/v1.js"></script><script>  PlayerTwo.init()    .then(async (p2) => {      await p2.trophies.unlock("first-win");      await p2.scores.submit("time-attack", 83400);      const room = await p2.rooms.join({ mode: "arena", size: 16 });      room.on("message:emote", (kind, from) => console.log(from, kind));      room.send("emote", "wave");    })    .catch((e) => { /* not on Player Two (e.code "not-on-player-two"): play on without services */ });</script>
npm install playertwo-sdk
ts
import { init } from "playertwo-sdk";const p2 = await init();

Put it on Player Two: submit the game at https://playertwo.lol/submit, make an agent key in your studio (Agents), then

curl -fsSLO https://playertwo.lol/cli/p2.mjsP2_AGENT_KEY=p2_agent_... node p2.mjs push dist --game your-game

What's here

PathWhat it is
packages/sdkplayertwo-sdk on npm: init() for bundled code, TypeScript types for the page (index.d.ts) and for a room's server code (playertwo-sdk/room, room.d.ts)
packages/create-playertwo-gamenpm create playertwo-game@latest my-game
starters/threejsPress Start, the multiplayer Three.js + Vite starter it makes
examples/trophies-and-leaderboardOne HTML file: a trophy and a leaderboard with the script tag
examples/multiplayer-roomA room with room.sync, messages, shared state and a server-side room.js
docs/getting started, every SDK call, rooms, in-game purchases, hosting, the CLI, agents and MCP, fees

For AI agents: the MCP server

Player Two runs a remote MCP server (Streamable HTTP) at https://playertwo.lol/api/mcp. With it an agent submits its player's games, uploads their media and web builds, edits their pages, and manages trophies, leaderboards, products, builds, posts and rooms.

claude mcp add --transport http player-two https://playertwo.lol/api/mcp

No key is needed for the public tools (get_submission_guide, check_game, search_games, list_games, get_game_facts, get_sdk_docs, where_to_publish). For the tools that change a game, add the player's agent key, made in their studio on playertwo.lol under Agents:

claude mcp add --transport http player-two https://playertwo.lol/api/mcp --header "Authorization: Bearer p2_agent_..."

Or no key at all: clients that sign in (Claude's and ChatGPT's connectors, Claude Code, Cursor) ask the player to sign in to Player Two and allow them the first time a studio tool is called (OAuth 2.1 with PKCE).

MCP Registry name: lol.playertwo/mcp (server.json); server card at https://playertwo.lol/.well-known/mcp.json. The same things over plain HTTP: the agent API (GET https://playertwo.lol/api/v1/agent/guide, POST https://playertwo.lol/api/v1/agent/games), with its OpenAPI 3.1 spec at https://playertwo.lol/openapi.json. Details: docs/agents-and-mcp.md.

Links

Issues

Issues and pull requests about the SDK, its types, the starter, the examples and these docs are welcome. Questions about your account, payments or a game on Player Two: https://playertwo.lol/help.

License

MIT, see LICENSE.

来源:README.md,提交 eecca35

工具

33

search_games

Search Player Two's games

Find games on Player Two (playertwo.lol), a store of games played in the browser: by words (in a game's name, tagline, description, studio, genres, modes and features: every word must match), genre, platform, free or paid, multiplayer, store game or raise. Each game with its slug, name, tagline, studio, genres, modes, price and whether it is free, a sale, a free trial, whether it plays with others, where it plays, players, reviews and its page's address. get_game_facts tells one in full. No key needed.

输入参数kindgenrelimitorderpricequeryoffsetplatformmultiplayer

list_games

List Player Two's games

Every game in Player Two's store (playertwo.lol), in an order: featured (Player Two's own: featured first, then the most played; the default), popular (most players), new (newest first) or playing (most playing now), 20 at a time (up to 50; offset for more). The same filters as search_games. No key needed.

输入参数kindgenrelimitorderpriceoffsetplatformmultiplayer

get_game_facts

A game's facts

Everything an agent needs to answer a player about one game on Player Two, by its slug (from search_games or its address, playertwo.lol/game/<slug>): what it is, its genres and modes, what it plays on, who it is for, its price (a sale, a trial, a raise's progress), where to play it and whether a guest can, how to play it (its controls and goals, in its developer's words), whether it is multiplayer, the Player Two services it has (trophies, leaderboards, cloud saves, add-ons), its latest updates, and how to report a bug. The same facts its page gives agents. No key needed.

输入参数slug必填

get_sdk_docs

Read Player Two's developer docs

A part of Player Two's developer docs, in Markdown, as the docs pages say it today: the game SDK (trophies, leaderboards, stats, cloud saves, presence, in-game purchases, multiplayer rooms and room code), hosting a web game and pushing builds, Player Two Connect for a game on its own site, travel and avatars, webhooks, and the platform's rules for developers (listing, raises, fees, agents). topic: a page and part ("/docs/sdk#rooms"), a part's id ("rooms-sync"), or a few words ("leaderboards", "push", "fees"); left out, the list of every topic. No key needed.

输入参数topic

where_to_publish

Publishing a game on Player Two

What Player Two offers a game's developer, as its docs state it, each fact with its link: what it keeps of sales, in-game purchases and raises, how a game gets there (the form, an agent, a zip, a pushed folder, GitHub, its own site served), and everything a game gets (store page, hosting, SDK, multiplayer rooms, trophies, leaderboards, saves, purchases, webhooks, MCP). No key needed.

无需输入参数。

get_submission_guide

How to submit a game

Read this first: every field of a game's page, its limits, the rules, the steps, and an example store game and raise. No key needed.

无需输入参数。

check_game

Check a draft

Check a draft before submitting: says what is still missing, and the draft as it would be kept. Saves nothing. No key needed.

输入参数draft必填

upload_media

Upload a picture, a trailer or a font

Keep a picture (PNG, JPEG or WebP up to 12 MB: the key art, screenshots, a feature's picture), a trailer or a gameplay video (MP4 or WebM up to 80 MB) or a font for the name's lettering (WOFF2, WOFF, TTF or OTF up to 2 MB, checked by what it is; only a font you are allowed to use on the web) in Player Two's file store. Returns its address, for the draft's art, poster, shots, clip, videos, a feature's art, or font. With game (a slug), a picture or a video for that game's updates instead: the only kind of address post_update's media takes.

输入参数urldatagamefilename

upload_web_build

Upload a web build

Keep a game played in the browser: a .zip with index.html at its top (up to 100 MB), or a single .html page. Returns the address to put in the draft's build. version (optional): what the build is called, up to 32 characters of letters, digits, dots, dashes, plus signs and spaces, starting with a letter or a digit (like 1.4.0); left out, it is called by its number in its game's builds ("12") once the draft names it.

输入参数urldataversionfilename

submit_game

Submit a game

Submit the player's game, for the store (kind: store) or as a raise (kind: raise). Live at once, or kept as a draft in their studio with publish: false. A raise takes no money until the player (a human) checks their identity in their studio: tell them.

输入参数draft必填publishrelease

update_game

Change a game's page

Change one of the player's games: only the fields given change. A raise's terms (goal, smallest stake, share, days, planned price, stages) stand once it is open.

输入参数slug必填draft必填

get_game

Read one of the player's games

One of the player's games as stored (drafts too), with its raise if it has one.

输入参数slug必填

list_trophies

A game's trophies

One of the player's games' trophies (retired ones too), how many players hold each, the XP budget left of 1,000, and whether the game counts toward players' levels yet.

输入参数slug必填

define_trophy

Add or change a trophy

Add a trophy to one of the player's hosted games, or change one by its key. Tiers 1 to 4 are worth 10, 25, 50 and 100 XP and a game's add up to 1,000 at most; once a player has earned one, its tier, stat, target and server-only setting stay. Every trophy is a relic, a small sculpture of cubes built from its sign: rows from the top on a grid of up to 16 by 16, # a cube and . none ("..#../.###./#####"), or a library sign's name (crown, rocket, gem, pad, bell, lantern, flag, fist, star, bolt, key, sword, shield, heart, moon, flame, hourglass, anchor, tower, joystick, gift); without one Player Two picks one by its key. The completion trophy (key "complete") is a crown until it is given the game's own sign: send key "complete" with a sign alone. The game earns a trophy with the SDK's trophies.unlock(key).

输入参数slug必填trophy必填

list_boards

A game's leaderboards

One of the player's games' leaderboards, with how many players are on each.

输入参数slug必填

define_board

Add or change a leaderboard

Add a leaderboard to one of the player's hosted games, or change one by its key (up to 20): which way is better, how a score reads, its bounds, the wait between scores, and whether only the game's own server sends scores (trusted). The game fills it with the SDK's scores.submit(key, value).

输入参数slug必填board必填

list_builds

A web game's builds

One of the player's web games' builds that are still kept (30 days after another took its place, and the last 20 always), newest first: each one's version (its developer's, or its number in the game's builds), which is live, who sent each (the player, or which agent key), its size, its files against the build before, its commit and note, the players on it now and where to try it without making it live; and the game's latest changes of build.

输入参数slug必填

make_build_live

Roll back (or forward) to a build

Make a build from list_builds the game's build again: players get it on their next page load. The build live now stays kept, so this can be undone the same way. Recorded in the game's history with the note (why), and with this key as the one that did it.

输入参数key必填noteslug必填

name_build

Name a build's version

Give one of the player's web games' kept builds (key from list_builds, live or not) its version: up to 32 characters of letters, digits, dots, dashes, plus signs and spaces, starting with a letter or a digit (like 1.4.0 or 2.0 beta). Shown wherever its builds are from then on; nobody is told. A push names a build as it goes up (p2 push --version); this is for one that came without (a GitHub commit's, called by its number) or a correction.

输入参数key必填slug必填version必填

list_products

What a game sells

One of the player's games' add-ons and in-game products (off-sale ones too), each with its kind, key and price, how many players have it, how many times it was bought and what the studio has made from it.

输入参数slug必填

define_product

Add or change a product

Add something one of the player's games sells, or change one by its key. An add-on (kind dlc) is sold on the game's page, split as its sales are (Player Two keeps 10%). Everything else is sold inside the game: the game lists them (p2.store.list) and asks to sell one (p2.store.buy), Player Two's own step takes the player's yes, and Player Two keeps 20%: a consumable (bought again and again, qty a time, used up by the game's server), an item or skin, a mod, a pack (contents: 2 to 10 of the others). Key and kind stay once a player has it; retired takes it off sale.

输入参数slug必填product必填

get_rooms

A game's rooms now

One of the player's games' multiplayer rooms open now (by build) and how their players' connections were over the last minute, overall and for its eight busiest rooms: ping (the middle page's and p90, ms there and back), jitter, bytes a second each way a page, corrections and rewinds a minute a page, connections dropped; whether rooms are on, the live build's room code, and the last error that code threw. What the studio's Rooms panel shows; `units` says what each figure is in. Read-only.

输入参数slug必填

post_update

Post an update on a game's page

Post news on one of the player's games, first in its page's Updates (what its page's and studio's Post an update do): a title (2 to 80 characters) and the words in Markdown, up to 10,000 characters (**bold**, *italic*, ## a heading, - or 1. lists, > a quote, [words](https://...) links, http and https only; no HTML, no pictures by Markdown), with up to 4 pictures, or a video and 3 pictures (media: addresses from upload_media with game set to this slug; the first is the post's picture in the feed). Backers, owners, wishlisters and the studio's followers are told in their notices, in plain words (none for a private game); it can be edited (edit_update), pinned (pin_update) or deleted (delete_update) after, but nobody is told again and an email sent stays sent, so post only what the player asked for. With at (milliseconds or an ISO time with its zone, 5 minutes to 90 days ahead) it waits: only the team sees it (list_updates), nobody is told until it goes up at that time, as if posted then. 20 a day a player.

输入参数atbodyslug必填mediatitle必填

list_updates

A game's posted updates

One of the player's games' posts still up on its page, the pinned one first and then the newest (up to 100): each one's id (what edit_update, pin_update and delete_update take), its kind (devlog: its team wrote it, so it can be edited and deleted; release, unlock, vote and raise are Player Two's own, which can only be pinned), title, Markdown words, attachments, when it went up, when it was last edited, whether it is pinned, how many comments it has and whether they are locked.

输入参数slug必填

edit_update

Edit a posted update

Change one of the player's developer posts (kind devlog, from list_updates) by its id: its title (2 to 80), its words in Markdown (up to 10,000) and its attachments (media: the whole new list, in order, up to 4 pictures or a video and 3; the ones it had, and new ones from upload_media with game). What you leave out stays. The same rules as post_update; nobody is told again; its page says Edited after its date, and its translations are made again. A post waiting to go up (scheduled in list_updates): at moves its time, now: true posts it now (its audience told then); it isn't marked Edited. A file taken out leaves the store a day later unless another post shows it. Only what the player asked for.

输入参数atid必填nowbodyslug必填mediatitle

pin_update

Pin an update first

Pin one of a game's posts first in its page's Updates, before the newest (pinned: true, the default), or unpin it (false). Any post, Player Two's own "Out now" too. One a game: pinning another unpins the one before. Nobody is told; visitors see Pinned on it.

输入参数id必填slug必填pinned

delete_update

Delete a posted update

Take one of the player's developer posts (kind devlog) off its game's page for good, by its id from list_updates: gone from the page, the feeds, the studio and the API; the notices it sent are taken out of players' lists (an email already sent stays sent); its pictures and video leave the store a day later unless another post shows them; unpinned if it was pinned. It can't be undone: only when the player asked for it. Player Two's own posts can't be deleted.

输入参数id必填slug必填

list_comments

A posted update's comments

Players' comments on one of the player's games' posts (id from list_updates), oldest first, the newest last, up to 200: each with its id, words, who wrote it (dev: the game's team), when, whether it was taken down, the comment it replies to, and whether it is new for the player (new: written since they last read the post's comments, not by them); how many are new; and whether the post's comments are locked. Reading them doesn't mark them read: mark_comments_read does. Agents read and look after comments; they don't write them (players do).

输入参数id必填slug必填

hide_comment

Take a comment down

Take a player's comment on one of the player's games' posts down (comment: its id from list_comments): out of sight for players, kept for the team and Player Two's admins, in the audit log. Only when the player asked, or it plainly breaks the rules (spam, abuse); a comment someone should look at can also be reported on the page.

输入参数id必填slug必填comment必填

lock_comments

Lock a post's comments

Lock one of the player's games' posts' comments (locked: true: no more, the ones there stay) or open them again (false).

输入参数id必填slug必填locked必填

mark_comments_read

Mark a game's comments read

For the player, on the game's team: a post's comments (id from list_updates) read up to now (or up to until, in milliseconds: the newer ones stay new), or every post's with no id (Mark all read). Each of the team has their own: a teammate's new comments stay new. Answers how many posts were marked and how many comments are still new on the game. Mark them only once the player has seen them (or asked).

输入参数idslug必填until

my_studio

The player's studio

The player's studio: its games and where each stands, and whether their identity is checked (needed only for raises).

无需输入参数。

版本历史

1
  1. v1.1.0最新Nov 8, 2026

评分

已满足适用检查项的 100%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通必需25 分
  • 已声明认证方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分