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

Neblla

REMOTE · NEBLLA.COM · SCANNED OCT 6

Build and publish multiplayer apps and games on Neblla: scaffold, edit files, ship to the gallery.

Available components

0 this week 33 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →

Endpoint Security57
Transport & Reachability100
Schema Quality & AI Usability0
  • Schema blocked by authentication: the endpoint requires auth we don't have to read it. See how to fix → Unverified
Stability & Change Management0
  • Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage0
  • Tool coverage blocked by authentication: the endpoint requires auth we don't have to read its tools.Unverified
Tool Safety0
  • Tool safety blocked by authentication: the endpoint requires auth we don't have to read its tools.Unverified
Capabilities0
  • Capabilities blocked by authentication: the endpoint requires auth we don't have to read them. See how to fix → Unverified

Unverified: 5 categories

Categories scored 0 because we could not verify them: authentication we do not have, an unreachable endpoint, or not enough scan history. We only credit what we can confirm. Claim this server and supply a read-only token to verify it and lift the score.

Install

How do I install the Neblla MCP server?

Neblla is a hosted endpoint at https://neblla.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

remote · neblla.com

# add to Claude Code
claude mcp add --transport http com-neblla-neblla 'https://neblla.com/mcp'
// .cursor/mcp.json
{
  "mcpServers": {
    "com-neblla-neblla": {
      "url": "https://neblla.com/mcp"
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "com-neblla-neblla": {
      "type": "http",
      "url": "https://neblla.com/mcp"
    }
  }
}
# ~/.codex/config.toml
[mcp_servers.com-neblla-neblla]
url = "https://neblla.com/mcp"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-neblla-neblla": {
      "type": "remote",
      "url": "https://neblla.com/mcp",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add com-neblla-neblla --url 'https://neblla.com/mcp' --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  com-neblla-neblla:
    url: "https://neblla.com/mcp"
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "com-neblla-neblla": {
      "Transport": "http",
      "Url": "https://neblla.com/mcp"
    }
  }
}
# add to Vellum
assistant mcp add com-neblla-neblla -t streamable-http -u 'https://neblla.com/mcp'
// mcp.json
{
  "mcpServers": {
    "com-neblla-neblla": {
      "type": "http",
      "url": "https://neblla.com/mcp"
    }
  }
}

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

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.

  • 28 Sept 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 25 Sept 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 26 Aug 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 11 Aug 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 7 Aug 26 0
    • Endpoint reachability: reachable → behind authorisation ▼ security
    • Stability: 0.37 → unverified ▼ security
    • Authorization: pass → unverified ▼ security
    • Capabilities: pass → unverified ▼ functional
    • Tool coverage: 100 → unverified ▼ functional
    • First check of Schema quality: unverified functional
  • 31 Jul 26 0
    • 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
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 27 Jul 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
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 7 Oct 2026 · Probed https://neblla.com/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=*.neblla.com CN=YR2,O=Let's Encrypt,C=US 11 Sept 2026 10 Dec 2026 RSA 2048 SHA256-RSA 6ab9216fd10cb07f31cd4fc2002b56621c5
SANs: *.neblla.com, neblla.com
CN=YR2,O=Let's Encrypt,C=US (CA) CN=Root YR,O=ISRG,C=US 3 Sept 2025 2 Sept 2028 RSA 2048 SHA256-RSA 4ebd24947e24d394802d84a52fd5b319
CN=Root YR,O=ISRG,C=US (CA) CN=ISRG Root X1,O=Internet Security Research Group,C=US 13 May 2026 2 Sept 2032 RSA 4096 SHA256-RSA f24b6d17f9d9ad7cb1c9fea78782699f

Background: What to check on a remote MCP endpoint →

DNSSEC insecure

Validation of neblla.com. — Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
com. present 19718 13 Verified
neblla.com. absent Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication No authorisation required

The endpoint answered without asking for a token. Anyone who knows the URL can reach it.

Result No authorisation required
HTTP status 200

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://neblla.com/mcp Verified 200
http (plaintext) http://neblla.com/mcp HTTPS enforced 301 https://neblla.com/mcp
MCP tools · 28 exposed · ~5,602 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. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
neblla_create_app ~600

Create a new Neblla app. Returns the app ID (appId) to use in subsequent file upload operations. Recommended flow for a NEW app: 1) Call neblla_validate_requirements with the decisions you can infer from the request — it walks the same decision map as the dashboard wizard; answer what you can yourself, ask the user only what it flags, repeat until have_enough_context. 2) Call neblla_get_llms to read the SDK reference (the core section at minimum). 3) Call neblla_create_app (this tool) with the display name AND the validated `decisions` — that scaffolds the matching pattern with a themed UI piece per enabled feature (login, store, AI box, friends, inbox…) and writes the full app config, so you only EDIT files instead of writing from scratch. Omit `decisions` only if you genuinely want a blank app (just index.html). 4) Edit/replace the scaffolded files (or upload new ones). The server-side files live under server/ — index.html references only main.css and client.js (NEVER the server/ files — the SDK loads them); client.js wraps code in window.onNeblla; the server/ files are top-level code with no DOM access; client and server communicate only via events (tellServer / tellPresenter / sendMessage / setState / on('messageToServer'|'messageFromServer'|'message'|'state')). 5) Call neblla_get_app_url(appId) to get the correct public URL — NEVER construct it manually. Apps are served at play.neblla.com/<slug>, not under any /apps/ path.

NameTypeReqDescription
decisionsobject–The COMPLETE decision set from neblla_validate_requirements (have_enough_context: true → pass its `decisions` verbatim). Scaffolds the matching pattern with the themed UI pieces for each enabled feat…
namestringyesDisplay name for the app
serverModestring–Where the server/ files run: "js" (default — plain JS on a connected peer), "wasm" (AssemblyScript .ts → WASM on a peer, opaque to DevTools), or "infra" (JS on a Neblla worker per room — Beta — for r…
templatestring–Legacy alternative to `decisions`: scaffold the six canonical files wired to this pattern, with no feature pieces and no theme. Prefer `decisions`. Omit both for a blank app.

No output schema declared.

No examples provided.

neblla_create_product ~224

Create a purchasable product for a Neblla app. type must be "one_time" (single purchase, fixed price) or "consumable" (quantity selector, price per unit). name should be a multi-language object e.g. { en: "Gold Coins", es: "Monedas de Oro" }. price (one_time) and pricePerUnit (consumable) are in cents (e.g. 499 = $4.99).

NameTypeReqDescription
appIdstringyesThe app public ID
imagestring–Product image URL
maxnumber–Maximum quantity for consumable
minnumber–Minimum quantity for consumable
name–yesProduct name, string or { en: "...", es: "..." }
pricenumber–Price in cents — required for one_time
pricePerUnitnumber–Price per unit in cents — required for consumable
stepnumber–Quantity step for consumable selector
typestringyes–

No output schema declared.

No examples provided.

neblla_delete_account ~36

For safety the MCP never deletes accounts directly. Returns a URL for the user to visit and confirm deletion from the Neblla dashboard.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

neblla_delete_app ~32

Permanently delete an app and all its files.

NameTypeReqDescription
appIdstringyesThe app public ID

No output schema declared.

No examples provided.

neblla_delete_communication ~81

Permanently remove a communication from a user's thread. The end user is notified via a `communicationDeleted` socket event so their UI updates in real time.

NameTypeReqDescription
appIdstringyesThe app public ID
commIdstringyesCommunication id to delete
userIdstringyesUser's mongo ObjectId hex string

No output schema declared.

No examples provided.

neblla_delete_file ~49

Delete a single file from an app.

NameTypeReqDescription
appIdstringyesThe app public ID
pathstringyesFile path to delete, e.g. "old-page.html"

No output schema declared.

No examples provided.

neblla_delete_product ~38

Permanently delete a product from a Neblla app.

NameTypeReqDescription
productIdstringyesThe product ID returned by neblla_create_product

No output schema declared.

No examples provided.

neblla_get_app_url ~101

Returns the canonical public URL for a Neblla app in the gallery. ALWAYS call this after neblla_create_app — never construct the URL yourself. Apps are published and browsed at play.neblla.com. The URL format is https://play.neblla.com/<slug>, where <slug> is auto-generated from the app name at creation time and can be renamed in the dashboard.

NameTypeReqDescription
appIdstringyesThe app public ID

No output schema declared.

No examples provided.

neblla_get_file ~343

Get the content of a specific file. Text files (HTML, CSS, JS, JSON, SVG, plain text) are ALWAYS returned as UTF-8 strings — never base64. Binary files (images, fonts, audio) are returned as base64. The response includes an `encoding` field ("utf8" or "base64") so you know how to interpret `content`. Always returns the real current source, including for apps you created or published in a previous session. Use this to resume editing an existing app across sessions. Large files are returned in CHUNKS — `content` may be only PART of the file. After each call, check `hasMore`: if true, call this tool again with `offset` set to the returned `nextOffset`, then concatenate the chunks in order. Decode (for binary) or edit only the FULLY reassembled string. `totalLength` is the total length of `content` across all chunks; `length` is this chunk's length.

NameTypeReqDescription
appIdstringyesThe app public ID
maxLengthinteger–Maximum length of `content` to return in this chunk. The default (20000) stays comfortably under the response-size limit of MCP clients; lower it further if your client still truncates the reply.
offsetinteger–Where to start reading, in units of the returned `content` (characters for utf8 text, base64 characters for binary). 0 = start of file. Pass the previous response's `nextOffset` to get the next chunk.
pathstringyesFile path, e.g. "index.html"

No output schema declared.

No examples provided.

neblla_get_llms ~443

Fetch the Neblla developer guide (llms.txt), split by topic so you read only what the app uses. Call this BEFORE designing or writing any code for a Neblla app — at minimum the `core` section (the default): the canonical six-file structure, the events-only client/server contract, and the five app patterns. Then fetch the sections matching the features you enabled: salas (rooms, lobby, matchmaking), servidor (the 3 server modes, setState, anti-cheat), identidad (login/SSO/scopes/save), social (friends + dev↔user communications), pagos (products/Stripe), ia (neblla.ai routes), publicar (gallery + quota table), referencia (the full API/events tables), mcp (this server's tools + creation flow), index (the table of contents), full (everything at once). Skipping core risks producing incorrect Neblla apps. Each response lists the available `sections`. Most sections fit in one response; for long ones check `hasMore` and re-call with `offset` = `nextOffset`, concatenating chunks in order. STALENESS CHECK — you connected to Neblla build 36. Each response carries the LIVE `latestBuild`. If `latestBuild` is greater than 36 (the build noted here), the server was redeployed AFTER you connected, so your loaded Neblla tool list is STALE. In that case, tell the developer plainly: "⚠️ The Neblla MCP updated to build <latestBuild> since this session started (you are on build 36). Restart/reconnect Claude Code to get the latest tools."

NameTypeReqDescription
maxLengthinteger–Maximum length of `guide` to return in this chunk. The default stays under the response-size limit of MCP clients.
offsetinteger–Character position to start reading from. 0 = start. Pass the previous response's `nextOffset` for the next chunk.
sectionstring–Which part of the guide to read. Default "core" — the mandatory contract. "index" = table of contents, "full" = the whole guide.

No output schema declared.

No examples provided.

neblla_get_user ~93

Fetch the full record of a single end user — their saved data, public info, purchases, and communications thread. Use the `_id` from neblla_list_users / neblla_search_users_by_email as `userId`.

NameTypeReqDescription
appIdstringyesThe app public ID
userIdstringyesThe user's mongo ObjectId hex string (the `_id` returned by neblla_list_users)

No output schema declared.

No examples provided.

neblla_list_apps ~19

List all apps owned by the authenticated developer.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

neblla_list_communications ~173

List communications across ALL users of an app, filtered and sorted. The most useful tool for triaging an inbox: show only unread, only messages from users (not the dev), only flagged-important, or only those mentioning a given email. Returns flat items with userId so you can follow up via neblla_send_communication on each thread.

NameTypeReqDescription
appIdstringyesThe app public ID
emailFilterstring–Case-insensitive email substring filter
fromFilterstring–"user" = sent by end-user, "dev" = sent by you, "all" = both
importantOnlyboolean––
limitinteger––
readFilterstring––
skipinteger––
sortstring––

No output schema declared.

No examples provided.

neblla_list_files ~44

List all files staged for an app. Returns path, mimeType, size, and timestamps for each file.

NameTypeReqDescription
appIdstringyesThe app public ID

No output schema declared.

No examples provided.

neblla_list_products ~31

List all products for a Neblla app.

NameTypeReqDescription
appIdstringyesThe app public ID

No output schema declared.

No examples provided.

neblla_list_users ~180

List end users of an app — the people who connected through the SDK, NOT the developer's own account. Use this as the entry point for the backoffice flow: it returns a paginated list with each user's mongo `_id` (needed for every other backoffice tool), email, name, language, and stats. Pass `withCommunicationsOnly: true` to get only users who have communication threads — useful when triaging support.

NameTypeReqDescription
appIdstringyesThe app public ID
emailFilterstring–Substring match against the user's email (case-insensitive). Ignored if withCommunicationsOnly is true.
limitinteger––
skipinteger––
sortstring––
withCommunicationsOnlyboolean–Only return users with a non-empty communications array

No output schema declared.

No examples provided.

neblla_move_file ~89

Rename or move a file within an app. oldPath is the current path, newPath is the destination.

NameTypeReqDescription
appIdstringyesThe app public ID
newPathstringyesNew file path, e.g. "new-name.html" or "subfolder/file.html"
oldPathstringyesCurrent file path, e.g. "old-name.html"

No output schema declared.

No examples provided.

neblla_publish_app ~494

Publish a Neblla app to the public gallery. BEFORE calling this tool you MUST follow these steps with the user: 1) Ask for the app title and a short description (1-3 sentences) in the user's language. 2) Ask for the gallery section: "multiplayer" (games/apps where users interact in real time), "singleplayer" (games/tools for one person at a time), or "app" (everything else — utilities, tools, sites). 3) Ask for tags that describe the app (e.g. "puzzle", "multiplayer", "drawing"). 4) Ask what devices the app is best suited for: "mobile", "desktop", or omit for both. 5) Ask if the user wants to upload a cover image — pass an http(s) URL, a data: URI, or raw base64 JPEG/PNG. It will be auto-scaled to 400x400. 6) Provide the title and description in at least the user's language. You SHOULD also translate into other supported languages (en, es, fr, de, it, pt, ja, ko, zh, ar) for wider reach, but only the original language is required. Set defaultLang to the language the user originally provided the content in. titles and descriptions MUST each contain at least one entry in the same language.

NameTypeReqDescription
appIdstringyesThe app public ID
bestOnstring–Device the app is best suited for. Omit for both mobile and desktop.
defaultLangstring––
descriptionsobjectyesDescription per language code (max 500 chars each). At least one entry required.
portraitstring–Cover image. Accepts an http(s) URL, a data: URI, or raw base64 (JPEG/PNG/GIF/BMP/TIFF). Auto-scaled to 400x400 JPEG, stored as portrait.jpg, and set as cover_image.
sectionstringyesGallery section: "multiplayer" (real-time/social), "singleplayer" (one player at a time), or "app" (utilities/tools/sites)
tagsarray–Tags describing the app
titlesobjectyesTitle per language code, e.g. { en: "My App", es: "Mi App" }. At least one entry required.

No output schema declared.

No examples provided.

neblla_search_users_by_email ~104

Find users of an app by a partial email match (min 2 characters). Returns the matching user docs with email, communications, data, stats, and language. Use neblla_list_users for full pagination instead when no email is known.

NameTypeReqDescription
appIdstringyesThe app public ID
emailPartstringyesAt least 2 characters of the email to match
limitinteger––
skipinteger––

No output schema declared.

No examples provided.

neblla_send_communication ~213

Send a message from the developer to a specific end user. The user receives it live via the SDK's `communicationUpdated` event if connected, and on next reconnect otherwise. Optionally attach a `data` JSON payload (rendered by the app), or a calendar/appointment proposal via dateFrom/dateTo. Set `thread` to the id of an earlier communication to group replies. BEFORE calling: confirm the message wording with the developer (you are speaking to their users on their behalf).

NameTypeReqDescription
appIdstringyesThe app public ID
data––Optional JSON payload attached to the communication
dateFromstring–Optional calendar/appointment proposal start (ISO 8601)
dateTostring–Optional calendar/appointment proposal end (ISO 8601)
messagestringyesPlain-text message body
threadstring–Id of the parent communication to thread under
userIdstringyesTarget user's mongo ObjectId hex string

No output schema declared.

No examples provided.

neblla_set_communication_important ~96

Toggle the "important" flag on a communication. This is dev-only metadata and is NOT broadcast to the end user — use it to bubble messages to the top of your own triage view.

NameTypeReqDescription
appIdstringyesThe app public ID
commIdstringyesCommunication id
importantboolean––
userIdstringyesUser's mongo ObjectId hex string

No output schema declared.

No examples provided.

neblla_set_communication_read ~98

Mark a specific communication as read or unread (from the developer's side). The end user is notified live via a `communicationRead` socket event if connected.

NameTypeReqDescription
appIdstringyesThe app public ID
commIdstringyesCommunication id (the ISO timestamp returned when the message was created)
readboolean––
userIdstringyesUser's mongo ObjectId hex string

No output schema declared.

No examples provided.

neblla_unpublish_app ~56

Remove an app from the public gallery. The app keeps its files and URL — only its public listing is hidden. Use neblla_publish_app to re-publish.

NameTypeReqDescription
appIdstringyesThe app public ID

No output schema declared.

No examples provided.

neblla_update_app ~425

Update an app's configuration. Pass only the fields you want to change. Use addDomain/removeDomain to mutate the allowed-origins list atomically without overwriting other entries. `sandbox: true` lets the app load on localhost / non-https origins for development. `ai` is the AI proxy config for the SDK's neblla.ai() — set { model, maxOutputTokens, userTokenMode, presets, limitsEnabled, tokensPerDay } or null to disable. userTokenMode is one of: 'off' (server uses dev key only), 'browser' (user key, browser-direct), 'server' (user key, server-side with private preset prefixes). presets is a {name: prefix} map of named prompt prefixes invoked via neblla.ai({preset:'name'}). limitsEnabled + tokensPerDay cap how many Claude tokens each end-user can spend per day; only applied when userTokenMode = off. `inbox: true` enables the in-app communications inbox feature for end users.

NameTypeReqDescription
addDomainstring–Append a domain entry (URL or origin) to the allowed list
ai––AI proxy config: { model, maxOutputTokens, userTokenMode, presets, limitsEnabled, tokensPerDay } — pass null to disable
appIdstringyesThe app public ID
inboxboolean–Enable/disable in-app communications inbox for end users
matchmaking––No-code matchmaking config: { mode: "nocode"|"custom", rule: "count"|"timer"|"count_then_timer"|"button", minPlayers, maxPlayers (0=unlimited), waitSeconds, allowPresenterStart }. In "nocode" mode th…
namestring–New display name
removeDomainstring–Remove a domain entry exactly matching this string
sandboxboolean–Allow non-https / localhost loads for development

No output schema declared.

No examples provided.

neblla_update_product ~219

Update an existing product. Pass only the fields to change. Use this to adjust price, rename, or republish a product without losing its productId — changing the id would break checkout flows already wired into the app.

NameTypeReqDescription
currencystring–ISO 4217 code, e.g. "usd"
defaultLangstring––
description––Description, string or per-language object
imagestring–Product image URL
maxnumber–Maximum quantity for consumable
minnumber–Minimum quantity for consumable
name––Product name, string or { en: "...", es: "..." }
pricenumber–Price in cents (one_time)
pricePerUnitnumber–Price per unit in cents (consumable)
productIdstringyesThe product ID returned by neblla_create_product
publishedboolean–Whether the product is buyable
stepnumber–Quantity step for consumable selector

No output schema declared.

No examples provided.

neblla_update_user_data ~171

Replace the `data` object for a specific end user (the same object the SDK's neblla.save() reads/writes). Use sparingly: this overwrites the user's saved state and the change is broadcast live. Useful for support (unstuck a player), moderation (clear a corrupted save), or admin tooling. If the app has a "bring your own database" target configured, this writes there. Mongo-reserved keys (starting with $ or containing ".") are rejected; total JSON size is capped at ~100KB and 10 levels deep.

NameTypeReqDescription
appIdstringyesThe app public ID
dataobjectyesThe replacement data object (must be a plain object, not array/null)
userIdstringyesUser's mongo ObjectId hex string

No output schema declared.

No examples provided.

neblla_upload_file ~645

Upload or update a file for an app. Pass text files (HTML, CSS, JS, TS, JSON, SVG) as raw UTF-8 text with encoding="utf8" (the default) — do NOT base64-encode them, even if they contain quotes, backticks, ${...} or newlines; send the source verbatim. For binary files (images, fonts, audio, video) you have TWO options: (a) pass a public URL via `contentUrl` — Neblla downloads the bytes server-side (recommended: no need to spend tokens base64-encoding the file in this conversation), OR (b) pass a base64 string via `content` with encoding="base64". Always prefer `contentUrl` when you have one. Uploading the same path again overwrites the previous version. Canonical paths for a Neblla app are index.html, main.css, client.js (front-end) plus server/lobby.js, server/gathering.js, server/room.js (server-side). The server/ files are special: the SDK loads them itself and runs them in an isolated scope with no DOM access — never reference them from index.html, and never put DOM code or window.onNeblla in them (they must be top-level code where `neblla` is in scope as a global). client.js, by contrast, uses window.onNeblla = (neblla) => {…}. Communication between client.js and the server files is events-only (sendMessage / tellPresenter / tellServer / messageToServer / messageFromServer / setState / on('message')) — never direct function calls. All three server/ files run on the room's SERVER PEER (a device the SDK picks, never the presenter): server/lobby.js for the lobby (matchmaking); server/gathering.js while a non-lobby room is in 'gathering' state (decide when to call neblla.startRoom() to start the game); server/room.js post-startRoom (authoritative game logic — handle messageToServer, broadcast with sendMessage / setState).

NameTypeReqDescription
appIdstringyesThe app public ID
contentstring–File content. For text files: the raw source as-is (NOT base64). For binary files: a base64 string. Required UNLESS `contentUrl` is set.
contentUrlstring–Public URL of the file to upload. Neblla downloads it server-side (no need to base64-encode in this conversation). Use this for any binary asset (images, fonts, audio, video) when you have a URL. Mut…
encodingstring–Content encoding for `content`. Ignored when `contentUrl` is used. Use "utf8" for all text files (HTML/CSS/JS/TS/JSON/SVG); "base64" only for binary assets.
pathstringyesFile path within the app. Canonical: "index.html", "main.css", "client.js", "server.js". Subfolders allowed for assets.

No output schema declared.

No examples provided.

neblla_validate_requirements ~505

Walk the SAME decision map the Neblla dashboard wizard uses, before creating an app. STRONGLY RECOMMENDED before neblla_create_app on any new-app request (skip it only for edits/fixes to existing code). It front-loads every structural decision so the app is born configured right. How to use it: pass the `decisions` you can already answer from the user's request. The tool returns every still-pending decision, each with `how_to_infer` (how to answer it YOURSELF from context) and `ask_user` (whether it deserves a question to the human). The contract: ANSWER EVERY DECISION YOU CAN YOURSELF — only surface the ones in `ask_user_questions` to the user, and only when you genuinely cannot infer them; ask them all in ONE message. Then call this tool again with the full set. When `have_enough_context` is true, pass the returned `decisions` straight to neblla_create_app({ name, decisions }) — it scaffolds the matching pattern + themed UI pieces and writes the app config in one go. `plan` previews exactly what that will build. Decision ids: kind (game|app), players (single|lobby-only|multi — single = one device; lobby-only = everyone in one shared space with no separate rooms; multi = separate rooms), structure (turn-based|host-controllers|collab-realtime; multi only), login/friends/purchases/ai/communications (booleans — the feature pieces), connections (all|p2p|server), serverMode (js|wasm), roomsPolicy (ephemeral|public|private|mixed), matchmakingMode (nocode|custom), aiPayer (off|browser|server; when ai is on), palette ({primary, secondary, alert} hex colors — PICK THEM YOURSELF to match the app's character), typography (modern|editorial|techy|serif|playful — pick it yourself too).

NameTypeReqDescription
decisionsobject–Decisions answered so far, keyed by decision id. Example: { kind: "game", players: "multi", structure: "turn-based", login: true, palette: { primary: "#0F7BD7", secondary: "#15C2B0", alert: "#FF8552"…

No output schema declared.

No examples provided.

Common questions

What is the Neblla MCP server?

Neblla is an MCP server listed in the public MCP registry as com.neblla/neblla. Build and publish multiplayer apps and games on Neblla: scaffold, edit files, ship to the gallery. This page covers its hosted endpoint (https://neblla.com/mcp).

Is the Neblla MCP server safe to use?

Neblla scores 33 out of 100 on VerifyMCP. 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 Neblla MCP server expose?

Neblla exposes 28 tools: neblla_get_llms, neblla_get_app_url, neblla_validate_requirements, neblla_create_app, neblla_list_apps, and 23 more. Their descriptions and schemas cost roughly 5,602 tokens of context every time the server is loaded.

Does the Neblla MCP server require authentication?

No. We connected to Neblla without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

Is the Neblla MCP server still maintained?

Neblla is still listed as active in the MCP registry. We last reached this channel on 6 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.