Neblla
com.neblla/nebllaBuild and publish multiplayer apps and games on Neblla: scaffold, edit files, ship to the gallery.
Watch this dependency
Get before/after evidence when observed tools, schemas, authentication access, availability or the endpoint changes.
Inspect evidence and set up a watch Share public evidence report
Score: 100/100
Handshake verified by our own probe.
why this score
Tools · 118
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. Two sections come first: `empezar` — wh…
Returns the canonical public URL for a Neblla app in the gallery. ALWAYS call this after neblla_create_app — never construct the URL yourself. `url` is THE link: what the users open, at <slug or id>.n…
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…
Create a new Neblla app. Returns the app ID (appId) to use in subsequent file upload operations. AI BUILDS IT IN MINUTES, NEBLLA KEEPS IT ALIVE FOR YEARS: you write the app, and Neblla is the backend …
List the apps owned by the authenticated developer, one short line each: id, name, slug, plan (its project's Pro, or free), projectId (the project it is in, neblla_projects), archived, files (how many…
PERMANENTLY delete an app and all its files. This is the most destructive call in this server and it cannot be undone: the files, the version history, the room data, the community entries and the user…
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. `compiled: true` let…
List the community entries (user-published content, neblla.community) of an app from the backoffice, any status. Use it to triage the moderation queue: status "pending" is what awaits approval in revi…
Fetch one community entry WITH its payload (the dev-defined JSON), whatever its status, plus its user reports (open count, count by reason, and each report with an opaque reporter id). Stats carry fav…
Publish a community entry AS YOURSELF — owned by your own user in the app (the app user whose email is your developer email; it is created on first use if you never opened the app). Use it to seed a c…
Copy community entries from one of your apps to another, server-side, payload included: each is published in the target AS YOURSELF (like neblla_publish_community_entry: users are per app, so the orig…
Edit any entry of your app's community — yours or a user's — as the developer: title, summary, category, tags, lang, i18n (replaces the whole map; null clears it) and/or payload (replaced whole). Only…
Answer a review of an entry in your app's community, as the app: the answer shows under the review for everyone. One answer per review; sending another replaces it, and text null takes it back. review…
Withdraw an entry of your app's community for good: the entry, its payload, its reviews and favorites are deleted and its bytes freed (entries hanging from it stay, without their parent). This is not …
Moderate a community entry as the app owner: approve or reject a pending entry, remove a published one, suspend a published one while a case is open, or restore a rejected/suspended/removed one. `susp…
Formal notices filed about the community entries of this app from OUTSIDE it, with no account — the route a rights holder or anyone who spots illegal content uses. Filing one suspends the entry immedi…
Change the palette and/or typography of an app created with the wizard or neblla_create_app, AFTER creation. Re-bakes only the theme tokens (--nb-bg, --nb-primary, …, --nb-font-title, --nb-font-body) …
Upload or update a file for an app. Mind the per-app file cap before a bulk import: 30 files on free, 150 on Pro, 25 MB per file. Pass text files (HTML, CSS, JS, TS, JSON, SVG) as raw UTF-8 text with …
List the files of an app as it is being edited: its pre with the unpublished draft over it (a file only in the draft says draft: true; neblla_promote "diff" says what a publish would change). Returns …
Copy files from one of your apps to another, server-side: what the source is being edited to (its pre with its draft) lands in the target's draft; the users get them with neblla_promote "publish". All…
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. T…
Edit a text file of an app by pieces, without sending the whole file: a list of `edits`, each an `oldText` to find and the `newText` to put in its place (like your own editor). Each oldText must appea…
Delete a single file from an app: it goes with the next neblla_promote "publish" (in an app linked to its own repo, a commit on pre's branch that drops it).
Rename or move a file within an app. oldPath is the current path, newPath is the destination. It waits in the draft until neblla_promote "publish". In an app linked to its own repo, one commit on pre'…
The developer's Neblla inbox: notices from Neblla to every developer, such as a change in the list of sub-processors announced 30 days ahead (the DPA). action "list" (default) shows the ones not dismi…
Create a purchasable product for a Neblla app. type must be "one_time" (single purchase, fixed price), "consumable" (quantity selector, price per unit) or "subscription" (renews every month or year by…
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 w…
List all products for a Neblla app.
Permanently delete a product from a Neblla app.
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.…
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.
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 …
Export the users of an app WITH everything the app holds about them: the full record (saved data, public info, communications, stats, language, the email if it was shared) and their purchase balances.…
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 instea…
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`.
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 on…
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`…
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.
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.
Permanently remove a communication from a user's thread. The app receives `communicationUpdated` with `action: "deleted"` in real time, so its UI can drop the message.
REPLACES (does not merge) the `data` object for a specific end user (the same object the SDK's neblla.db.save() writes and neblla.db.data shows). There is no merge option here, unlike the SDK which of…
List the persistent / predefined rooms of an app with their type, owners, whitelist, moderators, data, message count, last activity, their own inactivity days (`ttlInactivity`, null = the app's per-ty…
Read a room's chat history (newest first, paginated) for moderation. Returns the users' messages in clear: only use it when the developer asks to review a room.
Delete (soft) one chat message from a room, as the developer. Users see it removed.
Create a predefined room (it exists before anyone joins). Name: A-Z 0-9 _ - (stored uppercase); LOBBY is reserved. `permanent: true` keeps it (and its data) when it empties. `ttlInactivity` gives it i…
Change a room: replace its shared `data` (users in the room receive it live), its `moderators` list and/or its own inactivity time (`ttlInactivity` in days, 0 = never deleted, null = back to the app's…
Delete a persistent room and its stored data. If people are inside it right now the session continues and the room disappears when it empties. LOBBY cannot be deleted. Irreversible — confirm with the …
List the app-level moderators (per-app user ids). App moderators manage rooms of any type and moderate the community. They are the members of the app's reserved group `moderators`, which lives in its …
Read the app's moderation log, newest first: who named or removed a moderator (of the app or of a room), each ban, every room message, inbox message or community entry someone other than its author to…
Make a user an app moderator (`moderator: true`) or remove them (`false`): it adds them to, or takes them out of, the app's reserved group `moderators`. `userId` is the per-app user id (from neblla_li…
Set a user's ban state in this app: "none" (lift), "banned" (the app shows the ban message and blocks play; Neblla refuses everything but their messages to you), "terminated" (blocks them for good: th…
Add a flag to a user of this app by hand, as the anti-cheat does when it catches something (users.flags, the count neblla_list_users shows), or take one back with delta -1 (never below 0). A flag is a…
Read the message a banned user sees in this app, and the one a terminated user sees, or change them with `bannedMessage` / `terminatedMessage` ("" puts Neblla's default back). A banned user reads it a…
Consume units of a user's purchased product from the backoffice, for support fixes. It only SPENDS units and moves NO money — it is not a refund. Refunds are made in Stripe, from the dashboard that ne…
The users who asked, from inside your app (neblla.auth.requestErasure), that you erase the data they gave it. Erase one with neblla_erase_user (its userObjectId); that closes the request. Pending ones…
Erase ONE user of this app — for a data-deletion (RGPD) request the user made to the developer. Deletes their saved data and messages in the app store and their record in this app; their review and fa…
The app's resolved community configuration (mode, who publishes, limits, categories, content types, report threshold, recidivism, prescreen, downvotes) plus how much of its community storage cap is us…
List the gallery reviews of an app (a review id — pass it as reviewId to neblla_reply_review, rating 1–5, text, language, author display name, the developer's reply) plus the average, count and 1–5 di…
Publish (or replace) the developer's public reply to a review; pass `text: ""` to delete the reply. The reply is shown in the gallery, translated into the reviewer's language when `developerLang` diff…
Everything about ONE app: its full config and state (features, and `modules`: the neblla.* modules it has; rooms, quota and credits today, subscription, the config shown is what is being edited: its p…
Check, set or clear the app's public slug (the readable name in <slug or id>.neblla.app). `checkOnly: true` only tells whether it is valid and free; when another app of YOURS holds it (its slug or an …
Copy the behavioural settings (features, rooms policy, matchmaking, inbox, p2p, serverMode, permissions, theme, connections, ai…) from one of your apps (what it is being edited to: its pre with its dr…
The app's activity log, the last 90 days, newest first: who changed what and when — the developer from the panel, their team, and you through this MCP (via "mcp", which the panel shows as "from Claude…
The app's statistics (the panel's Statistics tab), kept only while `playerStats` is on (off by default; turn it on with neblla_update_app playerStats: true, in the act — confirm with the developer, it…
Publishing (C272, C273). Every change you make to an app (uploads, edit_file replaces, update_app settings, retheme…) and every change from the dashboard waits in the app's DRAFT: nobody sees it, not …
Who else may open the app's PRE (its private test version at <slug or id>.neblla.app/pre/). The developer always can. Two ways in: Neblla accounts by email (they sign in on the pre page), and links wi…
Which data the app's PRE (its private test version) plays with. "own" (the default): its own users, saves, tables, inbox and community, empty at first and apart from the users'. "pro": the users' real…
Whether the app's PRE sells through Stripe's TEST mode: on by default, so testers buy with Stripe's test cards and nothing is charged. Pre always sells the app's own products (one catalogue); in test …
Archive an app nobody uses: its data is bundled onto the CDN and the active records are cleared from Neblla's database. It stays in the gallery and is restored automatically the next time anyone opens…
The version history of an app, with a branch per environment: "pre" (every save burst is a commit) and "pro" (each neblla_promote is a merge of pre into it), so this is how an app is rolled back. With…
Keep an app files in sync with a GitHub repo. Each environment is a branch: `branch` is pre's, the source of truth for what is being worked on; `proBranch` (default "neblla-pro") is pro's, and only ne…
Bring-your-own-database: move where this app stores its users' data (saves, rooms, community, tables; the registry of users, purchases and friendships follows) from Neblla's default store (community i…
The developer's payout account (Stripe Connect), needed to sell products inside their apps. One account per developer, for all their apps, unless a project has its own (neblla_projects "use_own_stripe…
Taxes on the developer’s sales to users, with Stripe Tax on their own payout account (they are the seller; the taxes are theirs, Neblla only sets it up for them). "status": settings status (active/pen…
What the developer pays Neblla: the Pro subscription of a PROJECT (€10 a month per project, or $10 outside Europe, taxes included; every app of a Pro project shares its own pool of 2000 credits a day …
Read the developer's profile (public name — a studio or company name, shown as the author of their apps and in the gallery; the email is never shown —, dashboard language, whether a Claude API key is …
Add an email to the developer's account (it stays pending until its inbox owner clicks the confirmation link), or resend that confirmation. Removing emails and changing the primary one are done in the…
Create or change an API secret: an external API the app reaches with neblla.api.call(name, path, body) without a server of yours. Neblla fills the secret in where {secret} appears in `headers` or `que…
The app's API secrets: name, baseUrl, headers, query, limits and fromClient. Never the values.
The app’s last outgoing webhook deliveries (neblla_update_app({ webhooks })), newest first: event, secret, path, at, ok, and the endpoint’s status or the error.
Make an incoming webhook: a URL a third party (Twitch, a payment provider, n8n…) calls with a JSON body, and Neblla hands that body to a room — its server file hears neblla.room.on("hook", ({ name, da…
The app’s incoming webhooks: name, to, room. Never their tokens (make one again for a new URL).
Delete an incoming webhook; its URL answers hook_not_found from then on.
Delete an API secret; the app's calls to it answer secret_not_found from then on.
Create or replace an automation: a scheduled action on the app (open a room, hand a room data, call one of your API secrets). For flows across the tools the developer already uses, n8n, Make or Zapier…
The app’s automations with their schedule, action, next run and the result of the last one.
Run an automation now, to try it (its schedule does not change).
Delete an automation.
The app’s Fog cases, newest first: when the Fogs running a room’s server file computed different states, Neblla compared them, the majority won, and the odd one’s user was flagged. Each case: room, se…
Your word on a Fog case. "flag_others": the flag moves from the odd one to the Fogs of the majority (a coordinated attack — rare). "annul": the flag goes and Neblla reviews the case, states included (…
The app's secret login key, for apps that already have their own users ("Tu propio login" in neblla_get_llms({ section: "identidad" })). Their server calls POST https://neblla.com/api/apps/<appId>/aut…
The app's server key, for running room.js on the developer's own server (serverMode "own", see neblla_get_llms({ section: "servidor" }) "Server"). Their server runs `npx @neblla/server --app <appId> -…
The developer’s server on THEIR Cloudflare account, deployed by Neblla (serverMode "own"; Cloudflare bills them, Neblla only the relay). The Cloudflare token is the ACCOUNT's or the PROJECT's connecti…
The developer’s app as its OWN app in the stores, with THEIR developer account (Android now; iOS after). store "google": action "set" { packageName (e.g. com.studio.game; fixed once published), servic…
Read an app table across users: filters on declared fields, order, page, or just a count. e.g. { table: "reservas", where: { clase: "yoga-martes", estado: "confirmada" }, count: true }, or { table: "p…
Write or remove one row of an app table by hand (support, a fix): action "save" with { owner, data } for a new row of that user, or { id, data } to replace an existing row; action "remove" with { id }…
Groups of users with a role each (a team, a client), for rows that belong to a group: neblla.db.save(data, { table, group }). Roles and their rights per table are declared with neblla_update_app({ rol…
The rankings of a game for one (neblla.scores; boards declared with neblla_update_app({ scores })). action "top": the best of a board, { board, period: "all" (default) | "day" (today, UTC), limit (≤ 1…
Trades between the app's users (C170: neblla.db.offer / acceptOffer; what is tradable is neblla_update_app({ trade })). Action "list": the log, newest first, with { user? (their id in the app), status…
Fair draws (C311: a pack of cards, a loot box, a daily prize; declared with neblla_update_app({ draws }), opened by the user with neblla.db.draw(name)). Action "info" { draw }: the chance of each card…
Bookings (business template), the administration side: action "createSlot" { set, start, end?, capacity, title?, repeat? } — repeat is a calendar rule (the usual RFC 5545 RRULE): { freq: "daily"|"week…
The places and people of a business (C200), the administration side: what its bookings use. kind "sites" (a place: { name, timeZone?, address?, hours? }), "resources" (a group of identical units: { na…
Sample users of an app: invented clients, players or members so its back office looks full and real without showing anyone real (the students of a yoga studio, the clients of a dog groomer, the player…
Credits (business template), the administration side: action "balance" { owner, kind? } or "adjust" { owner, kind?, delta } (a refund by hand, a gift; never below 0). Credit kinds and the products tha…
Results of matches (C352): a service with `results` ({ teams: 2, reportHours: 48, board?, levelRange?, cheaterHint?, cheater? } in neblla_update_app({ business: { booking: { <service>: … } } })) makes…
Create, replace or (panel: null) remove a back office panel: a screen for the developer and their team. panel: { title, source: { table } | { booking: set } | { credits: kind }, columns: ["field" | { …
See a panel as the back office shows it: { appId, name, inputs? } → { title, columns, filters, actions, rows }.
The developer’s team for an app (Negocio › Equipo in the panel): people who sign in to developers.neblla.com with their own email (any Neblla account, not only a developer's), and use this MCP with th…
The app's alerts, as its panel shows them: what needs the developer now (store full with its 7-day countdown, their own database not answering, payments waiting for it, a data migration paused for the…
The backups of the data Neblla keeps for an app: the copies of the last 7 days (30 with Pro; `keepDays` says which), taken from Neblla's daily encrypted copy of its databases, and restoring one whole.…
Write to ALL the users of an app, or to the members of one group (optionally only one role in it): the message lands in each one's inbox as a message from the developer (neblla.inbox; a connected user…
The app's sales (Dinero › Ventas in the dashboard): action "list" { status?, productId?, from?, to?, skip?, limit? } — newest first, each with product, units, paid (minor units) and currency when know…
The orders of the app's physical products (a product with `shipping`, neblla_create_product; Dinero › Ventas in the dashboard). Each paid physical product is an order with the buyer's address (name, p…
The app's log while it runs, the last 7 days (30 with Pro; `keepDays` says which), the latest first, per environment (env "pro", the published app, by default; "pre", the draft): what to read first wh…
The MEDIA of an app: photos, textures, sounds, videos and 3D models (glb), many, apart from the app's files (neblla_upload_file is for code, 300 files for a free account's apps together, each counted …
The developer's projects: account → projects → apps. Every account has the project «Explorer» (it can be renamed, not deleted) and new apps land there; a developer who never creates another sees nothi…
The developer's own domain, on THEIR Cloudflare (the topic "domain" of neblla_projects cloudflare_setup), and the mail of that domain (topic "mail"). Works with any registrar. Omit projectId for the a…
This is the DEVELOPER own Neblla account, not an end user of their app — to sanction a user use neblla_set_ban_status instead. For safety the MCP never deletes accounts directly. Returns a URL for the…
How to use
Add to your Claude Desktop / Cursor / Cline MCP config:
{
"mcpServers": {
"neblla": {
"url": "https://neblla.com/mcp",
"transport": "streamable-http"
}
}
}