VibePlay

Developers

Last updated November 14, 2026

Three ways to work with VibePlay from your own tools: connect your coding agent through MCP, pull analytics through the REST API, and let the studio AI use your own MCP servers. Keys are created in the studio: Developer → API & agents.

Keys and permissions

A key looks like vp_live_xxxxxxxx_… and is shown once. Send it as Authorization: Bearer <key>. Give each tool its own key with only what it needs:

PermissionAllows
stats:readAnalytics, reviews, errors
games:readRead studio projects, run checks
games:writeCreate and update studio projects
publishPublish projects to the arcade

Keys look like vp_live_<8 characters>_<38 characters>; the last six characters are a checksum, so a mistyped key is refused at once. Keys can expire after 30, 90 or 365 days, or never. Revoking a key takes effect immediately in most places and everywhere within 30 seconds. Keep keys out of code repositories and browsers: if one leaks, revoke it and create a new one.

Limits and headers
Rate limit120 requests a minute per key; then 429 with Retry-After. Repeated wrong keys from one address are also slowed down.
CachingStats answers are cached for 60 seconds per key and query (X-Cache: HIT or MISS). Polling more often than once a minute returns the same numbers.
Paging/stats/visits returns next (CSV: X-Next-Cursor).
TimingServer-Timing shows how long the request took on our side.
ErrorsJSON {"error": "…"} with 400, 401, 403, 404, 429 or 500.

Request counts per key for the last 7 days are shown next to each key in the studio.

Your coding agent (MCP)

The MCP server lives at https://api.vibeplay.gg/mcp (Streamable HTTP). Your agent gets tools to read the game rules, save games into your studio, run the five automatic checks in a real browser, publish, and read analytics.

Claude Code

claude mcp add --transport http vibeplay https://api.vibeplay.gg/mcp --header "Authorization: Bearer vp_live_YOUR_KEY"

Cursor, Windsurf and other clients (mcp.json)

{ "mcpServers": { "vibeplay": { "url": "https://api.vibeplay.gg/mcp",
  "headers": { "Authorization": "Bearer vp_live_YOUR_KEY" } } } }
ToolWhat it does
get_game_rulesThe format and rules a game must follow, and the SDK (ads, leaderboard, screen states). Call it first.
list_projects, get_projectYour studio projects and the full HTML of one.
save_projectCreate or update a project with a complete HTML file. It appears in the studio right away.
check_projectLoads without errors, draws, responds to taps and keys, runs 6 s of play, survives a screen turn. About 20 seconds.
publish_projectPublishes; runs the checks first if this version has not passed them. New games are reviewed by a person before they show in listings.
list_games, get_stats_overview, get_daily_stats, get_traffic_sources, get_retention, get_reviews, get_errorsThe analytics below.

A good first prompt: “Make a VibePlay game where a paper boat dodges rocks. Follow get_game_rules, save it, run check_project and fix what fails, then show me the studio link.”

Analytics API

Base address https://api.vibeplay.gg/v1. JSON by default; add format=csv for spreadsheets. Every stats endpoint takes from and to (YYYY-MM-DD, UTC days; default the last 28 days) and game (a slug; leave out for all your games).

curl -H "Authorization: Bearer vp_live_YOUR_KEY" \
  "https://api.vibeplay.gg/v1/stats/overview?from=2026-11-01&to=2026-11-30"
EndpointReturns
GET /gamesYour games with lifetime views, plays, players and hours played.
GET /stats/overviewReach, plays, players, play time, retention signals, community, errors, and change against the previous period of the same length.
GET /stats/dailyThe same metrics per day; per_game=1 splits each day by game.
GET /stats/breakdown?by=…Metrics per value of: surface, source, medium, campaign, content, term, click_type, sub1…sub5, referrer, country, device, game.
GET /stats/retentionShare of plays still going at 5 s, 10 s, 30 s, 1, 2, 5, 10 and 20 min, and day 1 / 7 / 30 return rates by the day players first played.
GET /stats/visitsOne row per visit: time, game, surface, UTM tags, click ID and its network, sub1–sub5, referrer, country, device, anonymous player, returning, played, seconds, rounds, best score. Up to 5000 per page; pass the returned next as cursor (in CSV it is in the X-Next-Cursor header).
GET /reviews, GET /errorsRatings with the latest reviews; script errors grouped by message.

What the numbers mean

MetricDefinition
viewsThe game was shown: its page in the arcade, a card in the swipe feed, or your ad link.
viewers, playersUnique people who saw it, and who pressed Play. One anonymous ID per browser, or the account when signed in.
plays, play_ratePressed Play; plays divided by views.
play_seconds, avg_play_seconds, play_hoursTime with the game open and in front of the player, counted in 5-second steps.
engaged_plays, engaged_ratePlays that lasted 30 seconds or more.
rounds, rounds_finishedRounds started and finished, reported by the game with VP.state('playing') and VP.state('gameover', {score}). Zero if the game does not report them.
returning_playersPlayers who had played the same game on an earlier day.
d1, d7, d30Of the players who first played on a day, the share who played again exactly 1, 7 or 30 days later.

Tagging ad links

Every game has a full-screen link for ads and blogs: https://apps.vibeplay.gg/p/<slug>. Add utm_source, utm_medium, utm_campaign, utm_content, utm_term and up to five sub1…sub5. Click IDs are recognized by themselves: fbclid, gclid, ttclid, yclid, msclkid.

Your MCP servers in the studio

In Developer → API & agents you can add up to five of your own MCP servers (https only, with an optional bearer token). When you build or change a game in the studio, the Claude model can call their tools, for example to read your brand rules, level data or asset list. Tokens are stored encrypted and sent only to that server. Turn a server off to build without it.

Privacy

We never return IP addresses. Player IDs in exports are anonymous and different for every developer, so they cannot be joined across accounts. See the privacy policy and the developer terms.

VibePlay is operated by Cleanor Research Labs L.L.C-FZ, Dubai, United Arab Emirates. Questions: hello@vibeplay.gg.