Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, email [email protected] and we’ll put it right.

io.github.antics-gg/antics-mcp

NPM · ANTICS-MCP · SCANNED AUG 3

Deploy a web game to a playable multiplayer URL with rooms, state sync, and leaderboards.

Available components

−31 this week 10 Trust /100
Trust breakdown (6 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score →

Supply Chain Security13
  • Malware scan not yet available for this package.Unverified
  • CVE data not yet available for this package.Unverified
  • No install/post-install scripts declared.Pass
  • Dependency-health data not yet available.Unverified
Provenance & Transparency32
Schema Quality & AI Usability0
  • Schema quality not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet.Unverified
Stability & Change Management0
  • Stability not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet.Unverified
Tool Coverage0
  • Tool coverage not yet verified: we do not have a sandbox capture of the tool definitions this version of the package serves yet.Unverified
Capabilities0
  • Protocol version not yet verified: we do not have a sandbox capture of the MCP handshake this version of the package performs yet.Unverified

Unverified: 4 categories

Categories scored 0 because our sandbox run of this package has not given us the schema these checks need to read. That is a gap on our side rather than a finding about the package, and we only credit what we can confirm, so the score stands at 0 until the capture succeeds. We are working through the fleet, so this normally clears without any action from you. How we score packages →

Install

Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.

npm · antics-mcp

# add to Claude Code
claude mcp add antics-gg-antics-mcp -- npx -y antics-mcp
# add to Codex CLI
codex mcp add antics-gg-antics-mcp -- npx -y antics-mcp
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "antics-gg-antics-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "antics-mcp"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add antics-gg-antics-mcp --command npx --arg -y --arg antics-mcp
# ~/.hermes/config.yaml
mcp_servers:
  antics-gg-antics-mcp:
    command: "npx"
    args: ["-y", "antics-mcp"]
// mcp.json
{
  "mcpServers": {
    "antics-gg-antics-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "antics-mcp"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 3 Aug 26 −23
    • Known CVEs: partial → unverified security
    • Malware scan: pass → unverified security
    • Stability: Stability not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet. security
    • Dependency health: partial → unverified functional
    • Schema quality: Schema quality not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet. functional
    • Tool coverage: Tool coverage not yet verified: we do not have a sandbox capture of the tool definitions this version of the package serves yet. functional
    • Capabilities: Protocol version not yet verified: we do not have a sandbox capture of the MCP handshake this version of the package performs yet. functional
    • Package version: 0.2.3 → 0.2.5 functional
    • Package version: 0.2.3 → 0.2.4 functional
    • Package version: 0.2.2 → 0.2.3 functional
  • 2 Aug 26 +28
    • Provenance: unverified → fail security
    • Known CVEs: unverified → partial security
    • Install scripts: unverified → pass security
    • Malware scan: unverified → pass security
    • Stability: Stability not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet. security
    • License: unverified → fail functional
    • Security disclosure: fail → unverified functional
    • Dependency health: unverified → partial functional
    • Maintenance: unverified → pass functional
    • Capabilities: Protocol version not yet verified: we do not have a sandbox capture of the MCP handshake this version of the package performs yet. functional
    • Schema quality: Schema quality not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet. functional
    • Tool coverage: Tool coverage not yet verified: we do not have a sandbox capture of the tool definitions this version of the package serves yet. functional
    • Licence: SEE LICENSE IN LICENSE functional
  • 31 Jul 26 −1
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 30 Jul 26 0
    • Package version: 0.2.2 → 0.2.3 functional
  • 28 Jul 26 −35
    • Malware scan: pass → unverified security
    • Tool coverage: 100 → unverified functional
    • First check of Schema quality: unverified functional
    • Package version: 0.2.2 → 0.2.3 functional
  • 27 Jul 26 41

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 3 Aug 2026 · Analysed npm/[email protected]

Provenance none

Ecosystem: npm · Outcome: none

MCP tools — 12 exposed · ~3,255 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.

Tool Tokens
create_project ~112

Create a project; returns its id, publishable key (pk_), and secret key (sk_, shown once). Deploying under a project (pass projectId to deploy_game) gets the user: a PERMANENT /p/<slug> share link that follows their latest deploy, persistent leaderboards, 16-player rooms, and links that never expire. Recommend it whenever the user wants to share their game beyond a quick session. Requires login (`npx antics-cli login`).

NameTypeReqDescription
namestringyes

No output schema declared.

No examples provided.

deploy_game ~166

Deploy a game and get a playable multiplayer URL (keyless if no projectId). Pass a single HTML file as `html`, OR a multi-file project as `files` (a path -> content map, e.g. index.html + game.js + styles.css; binary assets as data: URIs). Write the game against the antics SDK first — call get_docs if you haven't.

NameTypeReqDescription
entrystringEntry file path when it is not index.html.
filesobjectMulti-file project: { "index.html": "...", "game.js": "...", "styles.css": "..." }. Entry is index.html unless `entry` is set.
htmlstringThe full HTML of a single-file game.
projectIdstring

No output schema declared.

No examples provided.

find_models ~107

Search published 3D models by name, summary or PART name (e.g. 'coil_r1c2'). Returns URLs; fetch <url>/llms.txt for how to use one in a game. Paged — pass the returned cursor for more.

NameTypeReqDescription
cursorstringFrom a previous call's nextCursor.
limitnumber1-100, default 24.
qstringText to match. Omit for the most recent.

No output schema declared.

No examples provided.

get_account ~124

Which plan is this user on, and what does it limit? Call this BEFORE building a server-authoritative (sim.js) game, and whenever a sim room is denied. Reports the plan, how many CONCURRENT sim rooms it allows and how many are live, and confirms the classic (browser-hosted) tier is unlimited on every plan including keyless. Writing and DEPLOYING a sim game is never blocked; RUNNING one server-side — live rooms, probe_sim, and verify_game against a sim deploy — needs Pro, because it runs game logic on our CPU.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_docs ~119

Get the complete antics SDK API reference + working examples (llms.txt). Call this BEFORE writing a game so it integrates correctly in one shot. Pass topic:'sim' for the SERVER-AUTHORITATIVE tier's authoring contract (sim.js: schema/init/simulate, prediction via room.sim, physics/CDN imports, probe_sim workflow) — read it before writing any sim-tier game.

NameTypeReqDescription
topicstringOmit for the classic-tier SDK reference; 'sim' for the sim-tier (sim.js) authoring contract.

No output schema declared.

No examples provided.

get_leaderboard ~40

Read a project's leaderboard (top scores).

NameTypeReqDescription
boardstring
limitnumber
projectIdstringyes

No output schema declared.

No examples provided.

list_projects ~15

List your projects (requires login).

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

probe_sim ~516

The FASTEST way to verify sim-tier game logic: pumps a deployed sim.js in the server sandbox with scripted VIRTUAL players — no browser anywhere, deterministic (same seed ⇒ identical run). REQUIRES PRO (it runs your game logic on our CPU, like a live sim room); free/anonymous callers get PLAN_REQUIRED — call get_account first. Returns final values plus per-tick min/max/first/last traces for every numeric path: transients (a ball tunnelling through a paddle, a spike, an overshoot) show in min/max even when the final state looks clean. Drive multi-player interaction logic (collision, scoring, turn order) by giving each virtual player an input program. Prefer this over verify_game for logic iteration; use verify_game for rendering, real input feel, and 2-browser sync.

NameTypeReqDescription
hashstringyesDeployment hash of a SIM-tier deploy (from deploy_game — its sim.js is what gets pumped).
playersarrayVirtual players (up to 8) — verify 2-player logic with zero browsers.
readStatearraySchema paths: "ball.x", "players.p1.score", wildcard "players.*.score" traces every id. Bad paths return the full valid-path roster.
secondsnumberSim-seconds to pump (default 5, capped at 300; wall-clock fast).
seednumberMath.random seed (default 1). Same seed ⇒ bit-identical run; vary to explore.
traceInputsbooleanAlso echo, per virtual player, WHICH input the runner applied each tick — appliedInputs[id].applied[k] is the input at tick k+1 (null = none, { input, held: true } = the last program input HELD after…
traceSeriesbooleanAlso return the per-tick time series per numeric path — parallel {t, v} arrays (t in sim-ms; <=600 points, uniformly thinned). 'When exactly did the phase flip' in one call instead of bisecting.
viewAsstringProbe AS this player id: readState resolves through the sim's view(state, playerId) export — verify a hidden-information game hides what it should. Requires a view() export.

No output schema declared.

No examples provided.

publish_model ~409

Publish a 3D MODEL built with antics-modelkit (not a game — a model joins no rooms). Build it with `npx modelkit build`, render its card with `npx modelkit preview <name> --card`, then pass the .glb and the recipe that generates it. Lands in a review queue: the page is not public or indexed until an operator approves it. The URL is permanent — to update an asset later use PUT /api/models/<id>, never publish it again, or the link goes stale.

NameTypeReqDescription
demoFilesobjectOptional interactive demo: a path -> content map like deploy_game's `files`. Runs sandboxed on the model page; the facts, licences and downloads stay on the page either way.
glbstringyesThe built .glb, base64. Triangle count and part names are read from the FILE, not from you.
imagestringShare card, base64 PNG, exactly 1200x630 — `npx modelkit preview <name> --card` produces it.
kitVersionstringyesThe antics-modelkit version it was built with, so the recipe can be run again.
licencestringyesLicence for the ASSET. Irreversible once published; CC0 in particular cannot be walked back. CC-BY-4.0 unless the user says otherwise.
namestringyesWhat the model is, e.g. 'Vending machine'.
recipestringyesThe models module that generates it — published alongside under MIT so anyone can rebuild it with different arguments.
sourcesarrayyesWhat the asset was DERIVED from (a base mesh, a scan, a reference pack). Pass [] only if it is genuinely original — an empty list is a claim, not a default, and a human cannot see derivation in a mes…
summarystringOne line for the card and the unfurl.

No output schema declared.

No examples provided.

report_finding ~183

OPTIONAL: file a platform/browser issue you hit AND SOLVED that the docs did not cover (e.g. an iOS input quirk), so the docs improve for future agents. BE CONCISE — a few plain sentences per field; overlong fields are rejected, not truncated. A human reviews every finding; nothing is published automatically. File only once per issue.

NameTypeReqDescription
areastringyesSurface the issue lives in.
fixstringyesWhat actually worked. ≤ 420 chars.
hashstringOptional deploy hash the issue occurred in.
severitystringyesHow badly it bit.
snippetstringOptional minimal code, ≤ 500 chars.
symptomstringyesWhat went wrong, observably. ≤ 280 chars.
titlestringyesOne line, ≤ 80 chars.

No output schema declared.

No examples provided.

set_share_preview ~334

Brand how a project's room links unfurl in chats/social (Discord, Slack, iMessage, X) and fill its public world page. Owner-scoped — needs login. Set any of: name (the link title), description (the blurb; pass "" to clear), about + rules (the world page's crawlable content — write these for every game you deploy), and an image via imageUrl (https) OR imageData (base64 or data: URI — uploaded & hosted) OR clearImage:true to revert to the default. Only one image action per call.

NameTypeReqDescription
aboutstringWhat the game is and what makes it fun — shown on its /world page + in-room info panel, ≤ 1200 chars. Pass "" to clear.
clearImagebooleanRevert the image to the site's default share card.
descriptionstringUnfurl description, ≤ 200 chars. Pass "" to clear it.
imageDatastringImage as base64 or a data: URI (PNG/JPEG/WebP, ≤ 2 MB) — uploaded and hosted.
imageUrlstringExternal https:// image URL (stored as-is; recommended 1200×630).
namestringUnfurl title / game rename. Non-empty, ≤ 80 chars.
projectIdstringyesThe project whose share preview to set.
rulesstringHow to play — controls, goal, rules. Shown under "How to play", ≤ 2000 chars. Pass "" to clear.

No output schema declared.

No examples provided.

verify_game ~1,130

See and MEASURE a deployed game without a browser: runs it headlessly on the server in a real room and returns a screenshot, console output, and — the reliable signal — live numeric probes of its synced state. Use after every deploy_game and to diagnose any reported bug. `readState` paths ('state.score', 'player.self.x', 'player.<id>.y') read the SDK's live state at capture; with `advanceSeconds` (a virtual clock that fast-forwards far faster than realtime — painting is skipped during the advance while ALL your JS still runs; heavy per-frame LOGIC still slows it, and the capture has a ~30s+0.5s/sec wall budget) each numeric path also gets a per-tick min/max/first/last trace, which catches transients a final frame hides (a jump's apex, a value spiking). Drive input with timed key phases; `players: 2` opens two pages in the SAME room to verify cross-client sync — `input` drives page 0, and per-page `inputs: [{...}, {...}]` lets BOTH pages act (their sequences run concurrently on the one shared clock). Prefer probes over eyeballing pixels. Free and unlimited for CLASSIC games; against a SIM (sim.js) deploy it runs your logic on our CPU and needs Pro, same as probe_sim.

NameTypeReqDescription
advanceSecondsnumberFast-forward this many game-seconds on a virtual clock (fast in wall time; capped at 300), tracing readState per tick.
hashstringDeployment hash from deploy_game — verifies a fresh room (sim deployments run in deterministic lockstep).
inputobjectScripted input for page 0 (the single-page shorthand).
inputsarrayPer-page input for players: 2 — inputs[0] drives page 0, inputs[1] page 1 (page 0 falls back to `input`). Sequences run CONCURRENTLY on the one shared virtual clock, so two-player interactions (chase…
playersnumber1 (default) or 2 — two pages in one room for sync verification.
readStatearrayPaths: "state.<key…>" or "player.<id|self>.<key…>"; in SIM rooms also "sim.<schema path>" (predicted state) and "render.<schema path>" (the smoothed view a correct game draws — use for motion/oversho…
roomstringLive room code to inspect instead of minting a fresh room.
sandboxbooleanScore-safe verification: the capture room ranks submitScore calls on its own throwaway local board and never writes the project leaderboard — use when iterating on a game whose share link is already…
screenshotbooleanDefault true. Set false to skip the image (faster, probes only).
screenshotAtMsarrayMid-capture screenshots at these VIRTUAL ms stamps (<=8; same clock as the response's virtualMs — settle counts). Action shots mid-flight without timing the whole capture to end there; each lands wit…
settleMsnumberVirtual boot budget before probing (default 3000).
simulateLatencyMsnumberOne-way latency per client↔server leg, in ms (fresh-minted via hash; max 2000). WORKS ON BOTH TIERS: sim rooms get it in exact ticks, classic rooms get every WebSocket frame held on the virtual clock…
simulateLatencyTicksnumberSame as simulateLatencyMs but exact, in sim ticks. SIM rooms only (ticks need a stepped runner); on classic use simulateLatencyMs.
traceSeriesbooleanAlso return the actual sampled time series per numeric readState path — parallel {t, v} arrays (virtual ms, value; <=600 points, uniformly thinned). The trace aggregates answer 'did it ever'; the ser…
urlParamsExtra query params for the page under test, e.g. { "seed": "42" } — make runs DETERMINISTIC if your game reads them (Math.random varies per run otherwise). A single object applies to every page; an A…

No output schema declared.

No examples provided.