Docs/MCP reference

game_check

Read only

Check a game build before publishing it, without uploading anything: kind (unity, threejs or web), errors that would stop the publish (each names the file, the problem and the fix), warnings, sizes (files, total bytes, the largest files), an sdk section (how the build uses the Looping SDK: the pinned version, looping.ready(), the rooms calls and the kinds they name, the store skus and paid/<sku>/ folders, saves, score posts, rules.js and its exports; with a project selected, mismatches against its rooms policy and store: a sku not on sale, a kind not configured, an authoritative kind with no rules.js, a rules.js no kind runs) and the next step.

POST/api/agent/game/check

Behavior

Check a game build before publishing it, without uploading anything: kind (unity, threejs or web), errors that would stop the publish (each names the file, the problem and the fix), warnings, sizes (files, total bytes, the largest files), an sdk section (how the build uses the Looping SDK: the pinned version, looping.ready(), the rooms calls and the kinds they name, the store skus and paid/<sku>/ folders, saves, score posts, rules.js and its exports; with a project selected, mismatches against its rooms policy and store: a sku not on sale, a kind not configured, an authoritative kind with no rules.js, a rules.js no kind runs) and the next step.

Over the stdio server give dir, an absolute local folder: a build's output (the folder with index.html, or one that contains it), a Unity project (the check says to build it for Web first) or a web project's source (the check says to run its build). The remote endpoint cannot read the creator's disk: give files instead, a manifest of every file's path and size with the text (content) of small files such as index.html, the Unity loader (Build/*.loader.js) and the main script; that is a partial check (partial: true, unchecked lists what it could not read) and the full check runs again at publish.

Without the stdio server there is no local command to run instead: send the manifest, and the full check runs again at publish. The check is structural; the platform also scans the build's pages and scripts for unsafe code when it is published. Over the stdio server, run: true also runs the build in a headless Chromium on this machine (Playwright's, when the project has it; the result says how to add it) with the platform's own harness: the boot check and the store check in test mode (run.boot, run.store; multiplayer needs the platform's rooms), and preview: true runs the platform's checks from this machine against the project's newest published build on its preview host (or version), both players included (run.multiplayer).

Neither verifies a build: site_check does, on the platform.

Input parameters

dirOptional
string

stdio: an absolute local folder

  • Min. length: 1
  • Max. length: 400
runOptional
boolean

stdio: also run the build in a local headless Chromium (the boot and store checks)

previewOptional
boolean

stdio: run the platform's checks from this machine against the published preview build, both players included

versionOptional
string

with preview: which build (the newest by default)

  • Min. length: 3
  • Max. length: 40
filesOptional
object[]

remote: a manifest of the build, for a partial check

  • Min. items: 1
  • Max. items: 5000
Nested schema
{
  "description": "remote: a manifest of the build, for a partial check",
  "minItems": 1,
  "maxItems": 5000,
  "type": "array",
  "items": {
    "type": "object",
    "properties": {
      "path": {
        "type": "string",
        "minLength": 1,
        "maxLength": 400
      },
      "size": {
        "type": "integer",
        "minimum": 0,
        "maximum": 4294967295
      },
      "content": {
        "description": "the text of a small file: index.html, the loader, the main script",
        "type": "string",
        "maxLength": 262144
      }
    },
    "required": [
      "path",
      "size"
    ],
    "additionalProperties": false
  }
}

The descriptions above include conditional requirements. The full schema below shows structural validation; runtime checks also apply.

JSON Schema

Input schema · draft-7
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "dir": {
      "description": "stdio: an absolute local folder",
      "type": "string",
      "minLength": 1,
      "maxLength": 400
    },
    "run": {
      "description": "stdio: also run the build in a local headless Chromium (the boot and store checks)",
      "type": "boolean"
    },
    "preview": {
      "description": "stdio: run the platform's checks from this machine against the published preview build, both players included",
      "type": "boolean"
    },
    "version": {
      "description": "with preview: which build (the newest by default)",
      "type": "string",
      "minLength": 3,
      "maxLength": 40
    },
    "files": {
      "description": "remote: a manifest of the build, for a partial check",
      "minItems": 1,
      "maxItems": 5000,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string",
            "minLength": 1,
            "maxLength": 400
          },
          "size": {
            "type": "integer",
            "minimum": 0,
            "maximum": 4294967295
          },
          "content": {
            "description": "the text of a small file: index.html, the loader, the main script",
            "type": "string",
            "maxLength": 262144
          }
        },
        "required": [
          "path",
          "size"
        ],
        "additionalProperties": false
      }
    }
  },
  "additionalProperties": false
}
Calling this tool

Use its name in your connected MCP client. For the HTTP API, the route is relative to your Convex site URL and requires your agent key as a bearer token. Keep the key on the agent side, outside a game build.