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
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 Security90
- No malware found by supply-chain analysis.Pass
- Only part of the dependency tree could be resolved (98 of 102), so this covers what we could see, not the whole tree.Partial
- No install/post-install scripts declared.Pass
- Only part of the dependency tree could be resolved (98 of 102), so this covers what we could see, not the whole tree. View diagnostics → Partial
Provenance & Transparency32
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- License check failed: the license (SEE LICENSE IN LICENSE) isn't a recognized OSI-approved license. See how to fix → Fail
- Actively maintained (last published 0 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability58
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 4477 tokens (~344/item across 13 items; 13 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management27
- Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage97
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 92% of tool parameters carry a description.Partial
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
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
claude mcp add antics-gg-antics-mcp -- npx -y antics-mcp
codex mcp add antics-gg-antics-mcp -- npx -y antics-mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"antics-gg-antics-mcp": {
"type": "local",
"command": [
"npx",
"-y",
"antics-mcp"
],
"enabled": true
}
}
} openclaw mcp add antics-gg-antics-mcp --command npx --arg -y --arg antics-mcp
mcp_servers:
antics-gg-antics-mcp:
command: "npx"
args: ["-y", "antics-mcp"] {
"mcpServers": {
"antics-gg-antics-mcp": {
"command": "npx",
"args": [
"-y",
"antics-mcp"
]
}
}
} 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 +31
- 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
- Schema quality: 3579 → 4477 ▼ functional
- Dependency health: partial → unverified ▼ functional
- Stability: unverified → 0.27 ▲ functional
- Tool coverage: unverified → 100 ▲ functional
- Schema quality: unverified → excellent ▲ functional
- MCP protocol: unverified → pass ▲ 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
- 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
- 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.6 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
- Install scripts: unverified → pass ▲ security
- Known CVEs: unverified → partial ▲ 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
- Maintenance: unverified → pass ▲ functional
- Dependency health: unverified → partial ▲ 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
- 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.
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
Dependencies 98 packages
98 packages in the resolved dependency tree · 56 deprecated · 29 stale · 3 without a linked repository.
The dependency tree was only partially resolved, so these counts may be incomplete.
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.
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`).
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | — |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| entry | string | — | Entry file path when it is not index.html. |
| files | object | — | Multi-file project: { "index.html": "...", "game.js": "...", "styles.css": "..." }. Entry is index.html unless `entry` is set. |
| html | string | — | The full HTML of a single-file game. |
| projectId | string | — | — |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | — | From a previous call's nextCursor. |
| limit | number | — | 1-100, default 24. |
| q | string | — | Text 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.
| Name | Type | Req | Description |
|---|---|---|---|
| topic | string | — | Omit 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).
| Name | Type | Req | Description |
|---|---|---|---|
| board | string | — | — |
| limit | number | — | — |
| projectId | string | yes | — |
No output schema declared.
No examples provided.
list_my_models ~69
What 3D models have I published, and were they approved? Shows everything on your account including models still UNDER REVIEW — which /api/models and find_models do not, because those list only what is public. Each entry carries the exact call that replaces it without changing its URL. Requires login.
Input schema present but exposes no named parameters.
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.
| Name | Type | Req | Description |
|---|---|---|---|
| hash | string | yes | Deployment hash of a SIM-tier deploy (from deploy_game — its sim.js is what gets pumped). |
| players | array | — | Virtual players (up to 8) — verify 2-player logic with zero browsers. |
| readState | array | — | Schema paths: "ball.x", "players.p1.score", wildcard "players.*.score" traces every id. Bad paths return the full valid-path roster. |
| seconds | number | — | Sim-seconds to pump (default 5, capped at 300; wall-clock fast). |
| seed | number | — | Math.random seed (default 1). Same seed ⇒ bit-identical run; vary to explore. |
| traceInputs | boolean | — | Also 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… |
| traceSeries | boolean | — | Also 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. |
| viewAs | string | — | Probe 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.
| Name | Type | Req | Description |
|---|---|---|---|
| demoFiles | object | — | Optional 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. |
| glb | string | yes | The built .glb, base64. Triangle count and part names are read from the FILE, not from you. |
| image | string | — | Share card, base64 PNG, exactly 1200x630 — `npx modelkit preview <name> --card` produces it. |
| kitVersion | string | yes | The antics-modelkit version it was built with, so the recipe can be run again. |
| licence | string | yes | Licence for the ASSET. Irreversible once published; CC0 in particular cannot be walked back. CC-BY-4.0 unless the user says otherwise. |
| name | string | yes | What the model is, e.g. 'Vending machine'. |
| recipe | string | yes | The models module that generates it — published alongside under MIT so anyone can rebuild it with different arguments. |
| sources | array | yes | What 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… |
| summary | string | — | One 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.
| Name | Type | Req | Description |
|---|---|---|---|
| area | string | yes | Surface the issue lives in. |
| fix | string | yes | What actually worked. ≤ 420 chars. |
| hash | string | — | Optional deploy hash the issue occurred in. |
| severity | string | yes | How badly it bit. |
| snippet | string | — | Optional minimal code, ≤ 500 chars. |
| symptom | string | yes | What went wrong, observably. ≤ 280 chars. |
| title | string | yes | One 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.
| Name | Type | Req | Description |
|---|---|---|---|
| about | string | — | What the game is and what makes it fun — shown on its /world page + in-room info panel, ≤ 1200 chars. Pass "" to clear. |
| clearImage | boolean | — | Revert the image to the site's default share card. |
| description | string | — | Unfurl description, ≤ 200 chars. Pass "" to clear it. |
| imageData | string | — | Image as base64 or a data: URI (PNG/JPEG/WebP, ≤ 2 MB) — uploaded and hosted. |
| imageUrl | string | — | External https:// image URL (stored as-is; recommended 1200×630). |
| name | string | — | Unfurl title / game rename. Non-empty, ≤ 80 chars. |
| projectId | string | yes | The project whose share preview to set. |
| rules | string | — | How 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.
| Name | Type | Req | Description |
|---|---|---|---|
| advanceSeconds | number | — | Fast-forward this many game-seconds on a virtual clock (fast in wall time; capped at 300), tracing readState per tick. |
| hash | string | — | Deployment hash from deploy_game — verifies a fresh room (sim deployments run in deterministic lockstep). |
| input | object | — | Scripted input for page 0 (the single-page shorthand). |
| inputs | array | — | Per-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… |
| players | number | — | 1 (default) or 2 — two pages in one room for sync verification. |
| readState | array | — | Paths: "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… |
| room | string | — | Live room code to inspect instead of minting a fresh room. |
| sandbox | boolean | — | Score-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… |
| screenshot | boolean | — | Default true. Set false to skip the image (faster, probes only). |
| screenshotAtMs | array | — | Mid-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… |
| settleMs | number | — | Virtual boot budget before probing (default 3000). |
| simulateLatencyMs | number | — | One-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… |
| simulateLatencyTicks | number | — | Same as simulateLatencyMs but exact, in sim ticks. SIM rooms only (ticks need a stepped runner); on classic use simulateLatencyMs. |
| traceSeries | boolean | — | Also 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… |
| urlParams | — | — | Extra 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.