# io.github.zombico/mojulo (npm · mojulo)

A 3D compiler for coding agents: objects, worlds and games as small recipes. Emits Godot and STL.

- Trust score: 67/100 (medium)
- Change this week: +18
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-09-20

## Components

- npm · `mojulo`: 67/100 (this document), [markdown](https://verifymcp.io/servers/zombico-mojulo/mojulo.md), [page](https://verifymcp.io/servers/zombico-mojulo/mojulo)

## Channel facts

- Registry: `npm`
- Package: `mojulo`
- Version: `2.0.6`
- Transport: `stdio`

## Trust breakdown

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. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-09-20.

- **Supply Chain Security**: 89/100
  - No malware found by supply-chain analysis.
  - CVE check failed: a known high-severity CVE affects pdfjs-dist 5.7.284, reached via officeparser > pdfjs-dist. A fixed version is available.
  - No install/post-install scripts declared.
  - Dependency health was assessed across the 400 of 465 dependencies we could resolve, so this covers what we could see, not the whole tree.
- **Provenance & Transparency**: 48/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (Apache-2.0).
  - Actively maintained (last published 0 days ago).
  - Publishes a security disclosure policy (SECURITY.md).
- **Schema Quality & AI Usability**: 65/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 6675 tokens (~238/item across 28 items; 28 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 30/100
  - Stability observed for 9 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 28 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 29 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 20/100
  - Spec-recency check failed: implements MCP spec 2024-11-05; the latest is 2026-07-28.

## Install

### How do I install the io.github.zombico/mojulo MCP server?

io.github.zombico/mojulo runs locally as an npm package, launched with npx -y mojulo. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add zombico-mojulo -- npx -y mojulo
```

### Cursor

```json
{
  "mcpServers": {
    "zombico-mojulo": {
      "command": "npx",
      "args": [
        "-y",
        "mojulo"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "zombico-mojulo": {
      "command": "npx",
      "args": [
        "-y",
        "mojulo"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add zombico-mojulo -- npx -y mojulo
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "zombico-mojulo": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "mojulo"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add zombico-mojulo --command npx --arg -y --arg mojulo
```

### Hermes

```yaml
mcp_servers:
  zombico-mojulo:
    command: "npx"
    args: ["-y", "mojulo"]
```

### Netclaw

```json
{
  "McpServers": {
    "zombico-mojulo": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "mojulo"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add zombico-mojulo -t stdio -c npx -a -y mojulo
```

### Other

```json
{
  "mcpServers": {
    "zombico-mojulo": {
      "command": "npx",
      "args": [
        "-y",
        "mojulo"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-09-20 (score 67, 0)

- [security regression] Stability: 0.27 → unverified
- [security regression] Tool safety: pass → unverified
- [security regression] Known CVEs: fail → unverified
- [functional regression] Capabilities: fail → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional regression] Dependency health: partial → unverified
- [functional] First check of Schema quality: unverified
- [functional] Package version: 2.0.2 → 2.0.6

### 2026-09-19 (score 67, +1)

No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-17 (score 66, +1)

- [security improvement] GHSA-rgj7-g3m4-5g8c no longer affects this package
- [security improvement] GHSA-f88m-g3jw-g9cj no longer affects this package
- [security improvement] CVE-2026-39244 no longer affects this package

### 2026-09-15 (score 65, +1)

No change was recorded against any check on this day. Stability & Change Management went from 10 to 13. That category is still filling its 30-day observation window: 3 days of observed history at the previous scan, 4 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-14 (score 64, +15)

- [security improvement] Malware scan: unverified → pass

### 2026-09-13 (score 49, −14)

- [security regression] Malware scan: pass → unverified
- [functional improvement] Stability: unverified → 0.07
- [functional] Package version: 2.0.1 → 2.0.2

### 2026-09-12 (score 63, +15)

- [security improvement] Malware scan: unverified → pass

### 2026-09-11 (score 48)

First indexed and scored.

## MCP tools (28)

### `forward_context` (~440 tokens)

Forward the agent mojulo's routing index — two wings behind one tool. No `mode` is the STUDIO, the DEFAULT: the creative wing's per-FORM recognizer rows (picture / object / world / building / motion / motion-comic / audio / voice / publication / game) plus the creative drawers (`get_creative_toolset`, routing cards, vocab kinds). `mode:'office'` is the automation backend: `user-framing → entry-tool` rows for bots / connected services / apps / operate-what-exists. Both carry a lean opener, a drawer directory (`get_tool_index`, `get_register_kit`, `get_deliberation_overview`, `get_ui_map`, `get_substrate`), and the standing safety + commitment-level rules. Call FIRST when unsure what mojulo is or which tool fits; open the office when the ask is to WIRE or OPERATE, not to make. A thin map, not a manual — depth lives in the drawers. The disclosure directive branches on the operator's `procedural_disclosure`; optional per-call `register` / `disclosure` override the anchor for this read. Read-only, idempotent.

Input parameters:

- `disclosure` (string): Override the operator's `procedural_disclosure` for this one call. 'terse' (act and report), 'reflective' (default — name each gate), 'pedagogical' (explain what each gate means). Omit to use the ope…
- `mode` (string): 'studio' (the DEFAULT when omitted — the creative wing: Media FORM routing + Game) or 'office' (bots, connected services, apps, deliberation, operate). Stateless per call — pull the wing the ask live…
- `register` (string): Override the operator's `vocabulary_register` for this one call. 'plain' (everyday tool names, no mojulo jargon to the user), 'mixed' (default), 'mojulo' (full idiom). Omit to use the operator anchor…

### `semantic_search` (~576 tokens)

Fuzzy retrieval over durable mojulo state: principles, capability bodies, mcp-orbit components / compositions / provider artifacts, declared MCP tool inventory, the shipped catalyst library, sketch vocabulary cards, the per-knob `sketch_method` capability records, manji-program-bearing cards (mandala-patterns + shot-glyphs whose card declares a `manjiProgram` field), painted-landscape glyph cards, view-vocab cards (one per `create_view` kind / `compose_world` base — the study-object and world parameter manuals), solid-vocab cards (one per `mint_solid` kind / `edit_solid` op — the figure/creature/object/structure parameter manuals), motion-vocab cards (one per `forge_motion` / `stitch_motion` subject family — camera / deck / effect / world / stitch), and routing cards (`kinds:['routing']`: creative recognizer rows → entry tool + forks, returned whole). Use when you have an intent or topic but not a specific ref — for finding which rows in the contextmap / capabilities / composer state are relevant before navigating them structurally, which sketch layout card to read before composing a diagram, which view kind or world base fits an intent, or which shot-glyph / mandala-pattern to pass as `programRef` to `create_manji_tree`. Returns `{ results: [{ source_kind, source_ref, score, snippet }] }`; snippets are capped at ~280 chars and the agent is expected to pair this with the structured readers (`meta_context_brief`, `get_mcp_capabilities`, `get_mcp_orbit_component`, `get_catalyst`, `get_sketch_vocab`, `get_view_vocab`, `get_solid_vocab`, `get_motion_vocab`, ...) to retrieve full bodies — or in the `manji_program` case, pass the `source_ref` straight to `create_manji_tree`, or in the `painted_landscape` case use the card's `id` as a named glyph in `compose_world`'s 'painted-landscape' `overrides`. Optional `kinds` filter restricts to one or more source kinds; default returns all kinds. Capability rows that have been superseded never appear in results — the search filter…

Input parameters:

- `kinds` (array): Optional filter: restrict results to one or more source kinds. Default returns all kinds. Use when you already know whether you want, say, only principles vs. only mcp_tools.
- `limit` (integer): Number of results to return (1–50). Defaults to 8.
- `query` (string, required): Free-text intent. Phrased the way the user would phrase the question, not a SQL predicate — the index is semantic.

### `get_tool_index` (~116 tokens)

One-line-per-tool index across every ring — call when a `forward_context` row isn't specific enough (Media tools live behind `get_creative_toolset`). **~48k**: a host declaring a smaller output cap gets the compact rules card fitted to that cap instead; `full: true` returns the whole index regardless. Read-only, idempotent.

Input parameters:

- `budget_bytes` (integer): Rules card at this byte budget, any host.
- `full` (boolean): Whole ~48k index even over your cap.

### `get_register_kit` (~262 tokens)

Return just the register-tuning surface — the active communication-settings notice (which `vocabulary_register` / `procedural_disclosure` cell is active and where it came from), the active-cell concept glossary, the refusal legend (one row per family of refusal: what it protects · the next move — pull this when a tool said no and you're unsure what the no means), the active-cell disclosure directive, and the invariant commitment-level floor (the four gates). Resolves the operator anchor the same way `forward_context` does; optional per-call `register` / `disclosure` override it for this one read. Call once after orientation, whenever the operator revises their KYC anchor, or when decoding a refusal. Read-only, idempotent.

Input parameters:

- `disclosure` (string): Override the operator's `procedural_disclosure` for this one call. 'terse', 'reflective' (default), 'pedagogical'. Omit to use the operator anchor's setting or the system default.
- `register` (string): Override the operator's `vocabulary_register` for this one call. 'plain', 'mixed' (default), 'mojulo'. Omit to use the operator anchor's setting or the system default.

### `get_worked_example` (~241 tokens)

Return one annotated end-to-end trace of a successful flight for a paradigm — the real call sequence with realistic args, abbreviated return shapes, the commitment gates named where they happen (proposed vs materialized, dry-run vs promoted, sealed vs not recorded), and one deliberate refusal + recovery so the first 'no' you meet in the wild is a recognized shape. Paradigms: `bot` (build → compile → operate), `connected-service` (inventory → primitive binding → seal), `app` (scaffold → commit → start → fulfill inference), `game` (the promotion-gate flagship: watch a level get refused, prove it completable, re-mint), `media` (stash → gather → cook). Omit `paradigm` for the index. Pull BEFORE your first build of a paradigm — one read replaces trial-and-error against per-tool descriptions. Traces are illustrative (refs and values will differ) but the call sequence, gate order, and refusal shapes are real. Read-only, idempotent.

Input parameters:

- `paradigm` (string): Which flight to read. Omit for the index of available traces.

### `get_ui_map` (~154 tokens)

Return the page-by-page map of the `mojulo-ui` dashboard (the human-shaped face of the same `~/.mojulo/` state this MCP drives): one line per page describing what it's for and when to point the user at it (`/bots`, `/chat-builder`, `/apps`, `/data`, `/map`, `/graph`, `/plan`, `/research`, `/sketches`, `/maker`, `/settings`, …). You don't drive these pages — call this when the user wants to *look*, *browse*, or *click*, or when a visual scan would beat several rounds of tool output, so you can name the right page. Read-only, no inputs, idempotent.

### `get_substrate` (~180 tokens)

Return what mojulo is and what it can honestly claim — a 3D compiler for agents: Media (objects, worlds, views, audio) and Game as re-runnable recipes on the operator's machine; the digital (Godot, Unity, Unreal, Blender) and physical (STL / 3MF) pipelines; where inference runs; what the retained automation backend (Bot, Connected Service, App) adds — PLUS a dozen SELF-DESCRIPTION facts (process, state, network posture, credentials, costs, uninstall, source) to DERIVE meta-answers from. Call for 'what is this really?' or questions about mojulo ITSELF: 'does it phone home?', 'where does my data live?', 'do I have to pay?', 'how do I uninstall?'. Read-only, no inputs, idempotent.

### `get_tool_ledger` (~316 tokens)

Read the ledger the substrate keeps of its own MCP tool calls — shapes and timings, one row per handler invocation across both call paths (rpc + plan-executor); nothing leaves the machine. Three modes: no args → a per-tool aggregate table (calls, error rate, p50/p95 latency, last-called) over the last `sinceDays` (default 7) plus the most recent errors and timeouts; `{ tool }` → that tool's recent calls newest-first with status + duration; `{ orientation: true }` → the orientation-gap cut (weak semantic searches, vocab-drawer misses, sessions that oriented then made no non-orientation call) — the measurement of whether the ask-and-discover loop is rewarding the question. This is the in-session answer to "which tool broke?" / "what's slow?" / "is the lexicon working?" without leaving the chat. Records SHAPES only — never input values or conversation content. Read-only, idempotent. Mirrors the `/observability` dashboard page.

Input parameters:

- `limit` (number): Max recent calls to return in `{ tool }` mode. Default 25.
- `orientation` (boolean): true → the orientation-gap cut: weak searches, drawer misses, oriented-then-abandoned sessions.
- `sinceDays` (number): Aggregate window in days (no-args and orientation modes). Default 7.
- `tool` (string): Filter to one tool by registration name → its recent calls. Omit for the aggregate summary.

### `version` (~100 tokens)

Report runtime versions: server name + version (from package.json), MCP protocol version, Node version, platform os/arch, the pinned bot container image tag, whether MOJULO_OFFLINE_BUILD is on, and the active MOJULO_HOME. Use this to diagnose version mismatches between a user-reported issue and what their control plane is actually running, or to confirm a version bump landed after a publish. Read-only, no inputs, idempotent.

### `check_for_updates` (~160 tokens)

Compare the running control-plane package (`mojulo` on npm) and the pinned bot image (`ghcr.io/zombico/mojulo-bot`) against their latest published versions. Returns `{ controlPlane, botImage, warnings }` — each surface reports `current`, `latest`, `updateAvailable`, and a one-line install/update hint when an upgrade exists. Read-only: never installs or restarts anything; surface the hint and let the user run it. Best-effort upstream calls — a registry timeout produces `latest: null` plus a warning, not a tool failure. Call this when the user asks 'am I up to date?', after a long gap between sessions, or before recommending a feature that depends on a recent version.

### `mint_diagram` (~358 tokens)

Mint a flow-chart, data-chart, or standard diagram → a /sketches/<ref> url. Kernel diagram maker (no creative pack). Manifest: { title, viewBox:{width,height}, + stations[]+edges[] (boxes+arrows) and/or marks[] (rect/circle/wedge/line/text/…) }. Edges { from,to,label?,head?,tail?,dashed? }: head/tail typed markers (arrow/triangle-open/diamond[-filled]/crowsfoot-one|many/dot/none), from===to self-loops. Higher-level kinds auto-lower to marks: kind:'sequence' {actors,messages}, kind:'gantt' {scale,tasks}, lanes[] (swimlanes), boundaries[] (containment), station.divider (ERD). Vocab: semantic_search({kinds:['sketch_vocab']}). Returns {ok,ref,url}. (Illustration/worlds/beats → create_sketch.)

Input parameters:

- `folder_ref` (string): Optional folder ref (`fld_<…>`) to drop this sketch into. Omit to leave it at root.
- `manifest` (object, required): Diagram manifest. Required: title, viewBox { width, height }. Provide stations[] (flow vocab) and/or marks[] (charts) — at least one. edges[] and grid are optional. Recipe/world/beats/constellation m…
- `ref` (string): Optional stable ref (1-64 chars of [A-Za-z0-9_-]). If omitted, a `sk_<…>` ref is generated. Errors if a sketch with this ref already exists.
- `title` (string, required): Short title shown in the page header.

### `pack_object` (~241 tokens)

3D SOLIDS — figures, creatures, objects, buildings, wordmarks, vehicles: mint_solid (kinds figure / manji-tree / workbench / assembler / carved-solid / solid-turntable / edifice / vehicle), edit_solid (skin / emote ops), solid-vocab cards, measure_solid (numbers back off a solid), and verify_machina feasibility checks. Open for 'model a wine glass true to size', 'a woman mid-stride' (a posed figure), 'our logo in shiny chrome', 'a 3D creature', 'put the wheels and the chassis together into one model', 'turn this concept art into a 3D model piece by piece', 'rebuild a drawing as a real 3D model, segment by segment'. Placing solids IN an environment is pack_world.

Input parameters:

- `args` (object): Arguments for the member tool, exactly as its inputSchema in the pack manual specifies.
- `tool` (string): Member tool to dispatch. OMIT on the first call to open the pack: you get its orientation body plus the member manual (names, descriptions, input schemas).

### `pack_world` (~166 tokens)

WORLDS — traversable three.js environments: compose_world (BASE × THEME × overrides — city, transport-hub, controllable, action, planetary, painted-landscape, math, school, dungeon), theme packs, glTF export (export_model), binding refined meshes back (bind_mesh_render), and modeler-lingo translation. Open for 'build a little town I can wander around', 'an airport', 'a game where I drive', 'export to Blender'.

Input parameters:

- `args` (object): Arguments for the member tool, exactly as its inputSchema in the pack manual specifies.
- `tool` (string): Member tool to dispatch. OMIT on the first call to open the pack: you get its orientation body plus the member manual (names, descriptions, input schemas).

### `pack_game` (~187 tokens)

GAMES — playable standalone artifacts composed over media: create_game (levels are worlds minted with a game contract), pixelizer 2D reducer games, sprite sheets (create + bake), game projects (create / get / update / bind / list), game-vocab cards, and export_game (self-contained folder). Open for 'a playable dungeon crawler I can actually walk around in', 'a roguelike where my gear persists across floors', 'a pixel-art game with sprites', 'a pixel-art cutscene of my hero', 'export my game so a friend can play it'.

Input parameters:

- `args` (object): Arguments for the member tool, exactly as its inputSchema in the pack manual specifies.
- `tool` (string): Member tool to dispatch. OMIT on the first call to open the pack: you get its orientation body plus the member manual (names, descriptions, input schemas).

### `pack_view` (~183 tokens)

STUDY VIEWS — animated 3D study objects that teach a phenomenon: create_view kinds across science / math / bio, view-vocab parameter manuals, measure_view for SI-honest time-series read-back from the stored recipe, and save_recipe to KEEP a tuned setup in the operator's cookbook (view and beats recipes alike), recallable by intent later. Open for 'help my kid understand black holes', 'an animated science explainer for my kid', 'animate how DNA copies itself', 'measure the orbit', 'save this setup for my class'.

Input parameters:

- `args` (object): Arguments for the member tool, exactly as its inputSchema in the pack manual specifies.
- `tool` (string): Member tool to dispatch. OMIT on the first call to open the pack: you get its orientation body plus the member manual (names, descriptions, input schemas).

### `pack_motion` (~196 tokens)

MOTION & FILM (+ motion-comic) — add TIME to a static subject: forge_motion (camera moves and performances rendered to flipbook SVG + GIF), stitch_motion (clips → one film), motion-vocab cards, and the click-gated motion-comic authored via update_sketch. Open for 'give me a spinning view of that molecule', 'record the hero clearing the chasm and show me the clip', 'walk to the exit to check the level is beatable' (traversal proof), 'present these charts one after another as a click-through deck', 'merge the clips into a single movie'.

Input parameters:

- `args` (object): Arguments for the member tool, exactly as its inputSchema in the pack manual specifies.
- `tool` (string): Member tool to dispatch. OMIT on the first call to open the pack: you get its orientation body plus the member manual (names, descriptions, input schemas).

### `pack_audio` (~156 tokens)

AUDIO — Mojulo Beats: synthesized soundtracks, compositions, grooves and SFX as tiny seeded recipes (never samples): create / get / update / annotate / diff / export beats plus beats-vocab cards; a composition can SING via a voice part. Open for 'background music for the forest level', 'a sting when the boss appears', "tweak bar 2's kick", 'render the tune to a WAV'.

Input parameters:

- `args` (object): Arguments for the member tool, exactly as its inputSchema in the pack manual specifies.
- `tool` (string): Member tool to dispatch. OMIT on the first call to open the pack: you get its orientation body plus the member manual (names, descriptions, input schemas).

### `pack_voice` (~143 tokens)

VOICE — deterministic voice registers (confidence × depth resolved to Kokoro blend weights, pure math): create / read a voice, bind worker-rendered WAV samples, and the voice-vocab drawer. Scope is voiceover and narration, not character acting. Open for 'a warm narrator voice', 'render this line in her voice', 'design how the guide sounds'.

Input parameters:

- `args` (object): Arguments for the member tool, exactly as its inputSchema in the pack manual specifies.
- `tool` (string): Member tool to dispatch. OMIT on the first call to open the pack: you get its orientation body plus the member manual (names, descriptions, input schemas).

### `pack_illustration` (~161 tokens)

Painted scene & figure ILLUSTRATION + publication covers: the inverse-stable-diffusion knob-resolution loop (sketch_what_possible) that feeds create_sketch recipe families, and create_cover for title art composed under one art direction. Open for 'paint a moody mountain valley', 'illustrate my hero', 'a cover for this book'. Sketch minting is homed in pack_diagram; this pack dispatches it too.

Input parameters:

- `args` (object): Arguments for the member tool, exactly as its inputSchema in the pack manual specifies.
- `tool` (string): Member tool to dispatch. OMIT on the first call to open the pack: you get its orientation body plus the member manual (names, descriptions, input schemas).

### `pack_reference` (~141 tokens)

VISUAL REFERENCE — read a photo YOU can see into mojulo dials: reference_protocol hands the extraction protocol (scene perspective or human pose — you are the vision adapter, no image sent), capture_reference files the read as a reusable cage + insights in a stash. Open for 'recreate the camera angle from this photo', 'match this pose'.

Input parameters:

- `args` (object): Arguments for the member tool, exactly as its inputSchema in the pack manual specifies.
- `tool` (string): Member tool to dispatch. OMIT on the first call to open the pack: you get its orientation body plus the member manual (names, descriptions, input schemas).

### `pack_image_render` (~189 tokens)

AI-IMAGE + MESH RENDER pipeline — direct, queue, and gate externally-painted images and externally-sculpted meshes (the mesh quartet parks a greybox for Meshy / Tripo / Hunyuan3D…): render packets for image-outcome / comic / character-sheet sketches, the durable request → pull → submit → accept / reject worker loop, and binding finished PNGs and character sheets back onto their sketches. Open for 'have the image model paint this', 'an AI-painted portrait rendered by an image model', 'run the render queue', 'accept that render'.

Input parameters:

- `args` (object): Arguments for the member tool, exactly as its inputSchema in the pack manual specifies.
- `tool` (string): Member tool to dispatch. OMIT on the first call to open the pack: you get its orientation body plus the member manual (names, descriptions, input schemas).

### `pack_diagram` (~193 tokens)

DIAGRAMS & CHARTS + scene sketches viewed in the dashboard: flow charts (stations + edges), data charts (stacked bars, donut / ring, KPI tiles, marks), scene illustrations and keyframe / scene-motion animation of drawn characters; revise a sketch in place, visual-diff two sketches, read sketch-vocab layout cards and style presets. Open for 'draw / diagram X', 'a bar chart of signups by week', 'a donut chart of the split', 'sketch our pipeline as boxes and arrows', 'make my drawn character talk and blink', 'update that sketch'.

Input parameters:

- `args` (object): Arguments for the member tool, exactly as its inputSchema in the pack manual specifies.
- `tool` (string): Member tool to dispatch. OMIT on the first call to open the pack: you get its orientation body plus the member manual (names, descriptions, input schemas).

### `pack_runtime` (~176 tokens)

APPS & RUNTIME — local apps (install_scaffold → start / stop / status, runner listing), runtime daemons (list / status / start / stop / restart), and the agent-task loop (pull_agent_task → submit_envelope_inference → cancel; chat signals and decisions for the chat_turn worker). Open for 'scaffold and run a local app', 'watch a folder and process new files as they arrive', 'a background worker that reacts to events', 'restart the daemon', 'work the task queue'.

Input parameters:

- `args` (object): Arguments for the member tool, exactly as its inputSchema in the pack manual specifies.
- `tool` (string): Member tool to dispatch. OMIT on the first call to open the pack: you get its orientation body plus the member manual (names, descriptions, input schemas).

### `pack_connected_services` (~176 tokens)

CONNECTED SERVICES — deliberate over the operator's installed MCP servers and bind workflows over them (no chatbot): declare inventory & skills, record/read provider capabilities, browse mcp-orbit components, get composition recommendations, bind primitives and triggers, read the deliberation overview and the contextmap (brief / commit). Open for 'wire Gmail + Calendar into a routine', 'every Monday summarize new leads into our CRM', 'sync submissions to a sheet nightly', 'what MCPs do I have', 'automate X across my services'.

Input parameters:

- `args` (object): Arguments for the member tool, exactly as its inputSchema in the pack manual specifies.
- `tool` (string): Member tool to dispatch. OMIT on the first call to open the pack: you get its orientation body plus the member manual (names, descriptions, input schemas).

### `pack_plan` (~139 tokens)

PLAN MODE — the speculative layer over sealed reality: enter plan mode, forge and revise plans, read and list them, compile a plan to a manifest of tool calls and execute it under per-execution operator approval, sketch a plan visual. Open for 'let's plan this out', 'turn this session into a plan', 'execute the plan'.

Input parameters:

- `args` (object): Arguments for the member tool, exactly as its inputSchema in the pack manual specifies.
- `tool` (string): Member tool to dispatch. OMIT on the first call to open the pack: you get its orientation body plus the member manual (names, descriptions, input schemas).

### `pack_research` (~149 tokens)

RESEARCH MODE — accretive gathering upstream of plans: enter research mode, start a research book, bind items into it, read and list books, synthesize an abstract (with deterministic review), run a parameter experiment sweep with auto-plotted outcomes, sketch the research. Open for 'research this', 'gather sources into a book', 'sweep the parameter and plot the outcome'.

Input parameters:

- `args` (object): Arguments for the member tool, exactly as its inputSchema in the pack manual specifies.
- `tool` (string): Member tool to dispatch. OMIT on the first call to open the pack: you get its orientation body plus the member manual (names, descriptions, input schemas).

### `pack_stash` (~168 tokens)

GATHER / STASH / COOK / PUBLISH — typed collection into stashes (gather, mint / get / list / rename a stash, update / archive items, bind / unbind to anchors), then COOK stashes into an Outcome Artifact (agent-authored report + visuals) and forge publications. Open for 'save this for later', 'collect these into a stash', 'cook these notes into a report', 'make a zine / picture book / publication'.

Input parameters:

- `args` (object): Arguments for the member tool, exactly as its inputSchema in the pack manual specifies.
- `tool` (string): Member tool to dispatch. OMIT on the first call to open the pack: you get its orientation body plus the member manual (names, descriptions, input schemas).

### `pack_catalysts` (~155 tokens)

CATALYSTS & EXTENSION — curated workflow recipes shipped via MCP: get / list / recommend catalysts, the meta-catalyst, mint a custom catalyst or drawer, and host-adapter info (get / list adapters — how a recipe lands as a Skill on this host). Open for 'is there a recipe for X', 'install this workflow as a skill', 'extend mojulo with a new drawer'.

Input parameters:

- `args` (object): Arguments for the member tool, exactly as its inputSchema in the pack manual specifies.
- `tool` (string): Member tool to dispatch. OMIT on the first call to open the pack: you get its orientation body plus the member manual (names, descriptions, input schemas).

## Diagnostics

Captured diagnostic sections: Provenance, Vulnerabilities, Dependencies. The full working is on the page: https://verifymcp.io/servers/zombico-mojulo/mojulo#diagnostics

## Score history

- 2026-09-20: 67
- 2026-09-19: 67
- 2026-09-18: 66
- 2026-09-17: 66
- 2026-09-16: 65
- 2026-09-15: 65
- 2026-09-14: 64
- 2026-09-13: 49
- 2026-09-12: 63
- 2026-09-11: 48

## Common questions

### What is the io.github.zombico/mojulo MCP server?

io.github.zombico/mojulo is an MCP server listed in the public MCP registry as io.github.zombico/mojulo. A 3D compiler for coding agents: objects, worlds and games as small recipes. Emits Godot and STL. This page covers its npm package (mojulo).

### Is the io.github.zombico/mojulo MCP server safe to use?

io.github.zombico/mojulo scores 67 out of 100 on VerifyMCP. We recorded 4 known advisories against it as of 20 September 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the io.github.zombico/mojulo MCP server expose?

io.github.zombico/mojulo exposes 28 tools: forward_context, semantic_search, get_tool_index, get_register_kit, get_worked_example, and 23 more. Their descriptions and schemas cost roughly 5,822 tokens of context every time the server is loaded.

### Is the io.github.zombico/mojulo MCP server still maintained?

io.github.zombico/mojulo is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What licence is the io.github.zombico/mojulo MCP server under?

io.github.zombico/mojulo declares the Apache-2.0 licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.

## Links

- npm package: https://www.npmjs.com/package/mojulo
- Socket report: https://socket.dev/npm/package/mojulo
- Repository: https://github.com/zombico/mojulo
- Changelog RSS feed: https://verifymcp.io/servers/zombico-mojulo/mojulo.xml
- Changelog JSON feed: https://verifymcp.io/servers/zombico-mojulo/mojulo.json
- HTML version of this page: https://verifymcp.io/servers/zombico-mojulo/mojulo
