{"name":"com.neblla/neblla","title":"Neblla","description":"Claude is the brain, Neblla is the muscle. Your AI writes the app; Neblla runs everything behind it, hosted and added with one script tag: user accounts that work across all of your apps, saved per-user data, payments, content your users publish, built-in AI, and real-time rooms with an authoritative server when more than one device is involved. Not only for multiplayer — a single-player game that saves progress, a tool behind a login, a gallery of user-published content and a shop where the developer sells all fit just as well. Selling between users does not: payouts go to the developer, so there is no per-seller marketplace. Reach for it when an app has more than one device at a time, state that must outlive the tab, player accounts or payments; for a single-player page with nothing to save, a plain index.html is the better answer. These tools create apps, upload files, configure them and publish them to the gallery. Read /docs/empezar (when to use it) and /docs/core (the contract) before generating code.","websiteUrl":"https://neblla.com","documentation":"https://neblla.com/docs/mcp","remotes":[{"type":"streamable-http","url":"https://neblla.com/mcp"}],"authentication":{"type":"oauth2.1","protectedResourceMetadata":"https://neblla.com/.well-known/oauth-protected-resource/mcp","authorizationServerMetadata":"https://neblla.com/.well-known/oauth-authorization-server","noAuthTools":["neblla_get_llms","neblla_get_app_url","neblla_validate_requirements","neblla_assets"]},"tools":[{"name":"neblla_get_llms","description":"Returns the Neblla developer guide as text, split by section (the response lists them in `sections`)."},{"name":"neblla_get_app_url","description":"Returns the canonical public URL for a Neblla app in the gallery."},{"name":"neblla_validate_requirements","description":"Returns the configuration decisions still pending for a new app, from the same decision map the Neblla dashboard wizard uses."},{"name":"neblla_create_app","description":"Creates a Neblla app and returns its appId."},{"name":"neblla_list_apps","description":"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 the developer edits), updatedAt and pageUrl, plus kind (game, app or web; null when it is not known"},{"name":"neblla_delete_app","description":"PERMANENTLY delete an app and all its files."},{"name":"neblla_update_app","description":"Update an app's configuration."},{"name":"neblla_update_app_rooms","description":"Update an app's settings: rooms."},{"name":"neblla_update_app_community","description":"Update an app's settings: community."},{"name":"neblla_update_app_payments","description":"Update an app's settings: payments."},{"name":"neblla_update_app_auth","description":"Update an app's settings: auth."},{"name":"neblla_update_app_storage","description":"Update an app's settings: storage."},{"name":"neblla_update_app_games","description":"Update an app's settings: games."},{"name":"neblla_update_app_business","description":"Update an app's settings: business."},{"name":"neblla_update_app_inbox","description":"Update an app's settings: inbox."},{"name":"neblla_update_app_integrations","description":"Update an app's settings: integrations."},{"name":"neblla_list_community_entries","description":"List the community entries (user-published content, neblla.community) of an app from the backoffice, any status."},{"name":"neblla_get_community_entry","description":"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)."},{"name":"neblla_publish_community_entry","description":"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)."},{"name":"neblla_copy_community_entries","description":"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 original authors cannot come along; their names stay in the source)."},{"name":"neblla_update_community_entry","description":"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)."},{"name":"neblla_reply_community_review","description":"Answer a review of an entry in your app's community, as the app: the answer shows under the review for everyone."},{"name":"neblla_delete_community_entry","description":"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)."},{"name":"neblla_moderate_community_entry","description":"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."},{"name":"neblla_community_cases_read","description":"Lists and shows the formal notices filed about the app's community entries from outside it, with no account (a rights holder, or anyone who spots illegal content)."},{"name":"neblla_community_cases","description":"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."},{"name":"neblla_retheme_app","description":"Change the palette and/or typography of an app created with the wizard or neblla_create_app, AFTER creation."},{"name":"neblla_upload_file","description":"Uploads or replaces one file in the app's draft."},{"name":"neblla_list_files","description":"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)."},{"name":"neblla_copy_files","description":"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\"."},{"name":"neblla_get_file","description":"Returns the content of one file."},{"name":"neblla_edit_file","description":"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)."},{"name":"neblla_delete_file","description":"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)."},{"name":"neblla_move_file","description":"Rename or move a file within an app."},{"name":"neblla_developer_notices_read","description":"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)."},{"name":"neblla_developer_notices","description":"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)."},{"name":"neblla_create_product","description":"Create a purchasable product for a Neblla app."},{"name":"neblla_update_product","description":"Update an existing product."},{"name":"neblla_list_products","description":"List all products for a Neblla app."},{"name":"neblla_delete_product","description":"Permanently delete a product from a Neblla app."},{"name":"neblla_publish_app","description":"Lists the app in the public gallery."},{"name":"neblla_unpublish_app","description":"Remove an app from the public gallery."},{"name":"neblla_list_users","description":"List end users of an app — the people who connected through the SDK, NOT the developer's own account."},{"name":"neblla_export_users","description":"Export the users of an app with everything the app holds about them (personal data of its users, for the owner of the app only): the full record (saved data, public info, communications, stats, language, the email if it was shared) and their purchase balances."},{"name":"neblla_search_users_by_email","description":"Find users of an app by a partial email match (at least 3 characters, up to 20 results)."},{"name":"neblla_get_user","description":"Fetch the record of one end user: their saved data, public info, purchases and communications thread."},{"name":"neblla_list_communications","description":"List communications across ALL users of an app, filtered and sorted."},{"name":"neblla_send_communication","description":"Send a message from the developer to a specific end user."},{"name":"neblla_mark_communication_read","description":"Mark a specific communication as read or unread (from the developer's side)."},{"name":"neblla_set_communication_important","description":"Toggle the \"important\" flag on a communication."},{"name":"neblla_delete_communication","description":"Permanently remove a communication from a user's thread."},{"name":"neblla_update_user_data","description":"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)."},{"name":"neblla_list_rooms","description":"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-type value), how many players follow each one (`followers`: they get a notice when someone writes whil"},{"name":"neblla_get_room_history","description":"Read a room's chat history (newest first, paginated) for moderation."},{"name":"neblla_delete_room_message","description":"Delete (soft) one chat message from a room, as the developer."},{"name":"neblla_create_room","description":"Create a predefined room (it exists before anyone joins)."},{"name":"neblla_update_room","description":"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 per-type value)."},{"name":"neblla_delete_room","description":"Delete a persistent room and its stored data."},{"name":"neblla_list_moderators","description":"List the app-level moderators (per-app user ids)."},{"name":"neblla_get_moderation_log","description":"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 took down."},{"name":"neblla_set_moderator","description":"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`."},{"name":"neblla_set_ban_status","description":"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: their device is sealed so the app no longer opens there, and they are disconnected), \"community_muted\""},{"name":"neblla_flag_user","description":"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)."},{"name":"neblla_ban_settings_read","description":"Returns the message a banned user sees in this app and the one a terminated user sees."},{"name":"neblla_ban_settings","description":"Sets the message a banned user sees (`bannedMessage`) and the one a terminated user sees (`terminatedMessage`), replacing the previous text; \"\" puts Neblla's default back."},{"name":"neblla_consume_purchase","description":"Consume units of a user's purchased product from the backoffice, for support fixes."},{"name":"neblla_list_erasure_requests","description":"The users who asked, from inside your app (neblla.auth.requestErasure), that you erase the data they gave it."},{"name":"neblla_erase_user","description":"Erase ONE user of this app — for a data-deletion (RGPD) request the user made to the developer."},{"name":"neblla_get_community_config","description":"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 used, and `platformHold` ({ at, reason }) when Neblla has put the whole community on hold."},{"name":"neblla_list_reviews","description":"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 distribution."},{"name":"neblla_reply_review","description":"Publish (or replace) the developer's public reply to a review; pass `text: \"\"` to delete the reply."},{"name":"neblla_get_app","description":"Everything about ONE app: its full config and state (features, `files` { used, cap, assets { bytes, count, cap }, summary: \"code 12 of 300 · assets 38 MB of the 100 MB bag\" } — the code and text count in files, the images, sounds and models in MB, and `modules`: the neblla.* modules it has; rooms, q"},{"name":"neblla_check_slug","description":"Tells whether a slug (the readable name in <slug or id>.neblla.app) is valid and free for the app, and changes nothing: { available, reason }."},{"name":"neblla_set_slug","description":"Sets or clears the app's public slug (the readable name in <slug or id>.neblla.app), at least 5 characters."},{"name":"neblla_copy_app_config","description":"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 draft) into another's draft; the users get them with neblla_promote \"publish\"."},{"name":"neblla_get_activity_log","description":"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\"): settings, publishing, files, the team and who opens pre, products, the app's people, moderation,"},{"name":"neblla_get_stats","description":"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; it costs quota)."},{"name":"neblla_promote_read","description":"Where an app stands between its draft, pre and pro."},{"name":"neblla_promote","description":"Publishing."},{"name":"neblla_pre_access_read","description":"Who may open the app's pre (its private test version at play.neblla.com/pre/<slug or id>/): Neblla accounts let in by email and links with a password for people without an account, each with its expiry."},{"name":"neblla_pre_access","description":"Who else may open the app's PRE (its private test version at <slug or id>.neblla.app/pre/)."},{"name":"neblla_pre_data_read","description":"Returns which data the app's pre (its private test version) plays with: \"own\" (its own users, saves, tables, inbox and community, empty at first and apart from the users') or \"pro\" (the users' real data)."},{"name":"neblla_pre_data","description":"Sets which data the app's pre (its private test version) plays with."},{"name":"neblla_pre_stripe_test_read","description":"Returns whether the app's pre sells through Stripe's test mode, and `testMode`: \"separate\" (the developer needs a test account of their own, opened at onboardingUrl with Stripe's test data), \"same\" (this server is in test mode and the payout account serves) or \"off\" (no test mode here, so pre test p"},{"name":"neblla_pre_stripe_test","description":"Turns Stripe's test mode on or off for the app's pre."},{"name":"neblla_archive_app","description":"Archive an app nobody uses: its data is bundled onto the CDN and the active records are cleared from Neblla's database."},{"name":"neblla_versions_read","description":"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)."},{"name":"neblla_versions","description":"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."},{"name":"neblla_git_read","description":"Reads how an app's files relate to a GitHub repo."},{"name":"neblla_git","description":"Keep an app files in sync with a GitHub repo."},{"name":"neblla_byodb_read","description":"Reads the state of the app's own database (bring-your-own-database)."},{"name":"neblla_byodb","description":"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 included, so its entries can then be queried with their own SQL) to the developer's own database, or "},{"name":"neblla_payments_account_read","description":"The state of the developer's payout account (Stripe Connect), needed to sell products inside their apps."},{"name":"neblla_payments_account","description":"The developer's payout account (Stripe Connect), needed to sell products inside their apps."},{"name":"neblla_tax_read","description":"Reads the developer's tax settings for sales to users, with Stripe Tax on their own payout account."},{"name":"neblla_tax","description":"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)."},{"name":"neblla_billing_read","description":"Returns the automatic recharge of an app's quota pool (`auto_recharge_status`): whether it is on, its monthly cap and what it has spent this month."},{"name":"neblla_billing","description":"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 and stops drawing from the account's free pool) and one-off quota packs (they go to the pool the pro"},{"name":"neblla_developer_profile","description":"Returns 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 API keys are saved, the emails on the account, and their studio: the public page of all their published apps, play.nebl"},{"name":"neblla_developer_profile_update","description":"Changes the developer's profile and replaces the previous values: `name` and `lang`, and the studio page (play.neblla.com/studio/<studioSlug>, the business web on their Stripe account, and the «by <name>» link in the gallery)."},{"name":"neblla_developer_email","description":"Add an email to the developer's account (it stays pending until its inbox owner clicks the confirmation link), or resend that confirmation."},{"name":"neblla_set_api_secret","description":"Create or change an API secret: an external API the app reaches with neblla.api.call(name, path, body) without a server of yours."},{"name":"neblla_list_api_secrets","description":"The app's API secrets: name, baseUrl, headers, query, limits and fromClient."},{"name":"neblla_list_webhook_deliveries","description":"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."},{"name":"neblla_create_hook","description":"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, data }) => …) on the Fogs — or, with to: \"user\", to the user named in the call (?user=<their id in the"},{"name":"neblla_list_hooks","description":"The app’s incoming webhooks: name, to, room."},{"name":"neblla_delete_hook","description":"Delete an incoming webhook; its URL answers hook_not_found from then on."},{"name":"neblla_delete_api_secret","description":"Delete an API secret; the app's calls to it answer secret_not_found from then on."},{"name":"neblla_set_automation","description":"Create or replace an automation: a scheduled action on the app (open a room, hand a room data, call one of your API secrets)."},{"name":"neblla_list_automations","description":"The app’s automations with their schedule, action, next run and the result of the last one."},{"name":"neblla_run_automation","description":"Run an automation now, to try it (its schedule does not change)."},{"name":"neblla_delete_automation","description":"Delete an automation."},{"name":"neblla_list_fog_cases","description":"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."},{"name":"neblla_decide_fog_case","description":"Your word on a Fog case."},{"name":"neblla_auth_secret_read","description":"Whether the app's secret login key exists (for apps that already have their own users): \"status\" returns it without the key."},{"name":"neblla_auth_secret","description":"The app's secret login key, for apps that already have their own users (\"Tu propio login\" in neblla_get_llms({ section: \"identidad\" }))."},{"name":"neblla_server_key_read","description":"Whether the app's server key exists (for running room.js on the developer's own server, serverMode \"own\"): \"status\" returns it without the key."},{"name":"neblla_server_key","description":"The app's server key, for running room.js on the developer's own server (serverMode \"own\", see neblla_get_llms({ section: \"servidor\" }) \"Server\")."},{"name":"neblla_byos_read","description":"The state of the developer's server on their Cloudflare account (serverMode \"own\"): \"status\" returns the account, the box and its last deploy, never the token."},{"name":"neblla_byos","description":"The developer’s server on THEIR Cloudflare account, deployed by Neblla (serverMode \"own\"; Cloudflare bills them, Neblla only the relay)."},{"name":"neblla_publish_store_read","description":"The state of the app's build for the stores with the developer's own developer account (Android now)."},{"name":"neblla_publish_store","description":"The developer’s app as its OWN app in the stores, with THEIR developer account (Android now; iOS after)."},{"name":"neblla_table_query","description":"Read an app table across users: filters on declared fields, order, page, or just a count."},{"name":"neblla_table_row","description":"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 }."},{"name":"neblla_group_read","description":"Groups of users with a role each (a team, a client), for rows that belong to a group: neblla.db.save(data, { table, group })."},{"name":"neblla_group","description":"Groups of users with a role each (a team, a client), for rows that belong to a group: neblla.db.save(data, { table, group })."},{"name":"neblla_scores_read","description":"The rankings of a game for one (neblla.scores; boards declared with neblla_update_app({ scores }))."},{"name":"neblla_scores","description":"The rankings of a game for one (neblla.scores; boards declared with neblla_update_app({ scores }))."},{"name":"neblla_trades_read","description":"The trades between the app's users (neblla.db.offer / acceptOffer)."},{"name":"neblla_trades","description":"Trades between the app's users (neblla.db.offer / acceptOffer; what is tradable is neblla_update_app({ trade }))."},{"name":"neblla_draws","description":"Fair draws (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))."},{"name":"neblla_booking_read","description":"Bookings (business template), the administration side, reads."},{"name":"neblla_booking","description":"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\"|\"weekly\"|\"monthly\"|\"yearly\", interval?, byDay? ([\"MO\",\"WE\"]; monthly \"2TU\" = second Tuesday, \"-1FR\" = las"},{"name":"neblla_business_read","description":"The places and people of a business (business template), reads."},{"name":"neblla_business","description":"The places and people of a business, the administration side: what its bookings use."},{"name":"neblla_sample_users_read","description":"Sample users of an app: invented clients, players or members so its back office looks full and real without showing anyone real."},{"name":"neblla_sample_users","description":"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 players of a ranking): an example app's screenshots, or a studio showing its client how the app will look "},{"name":"neblla_credits_read","description":"The credits of an owner (business template): \"balance\" { owner, kind? }."},{"name":"neblla_credits","description":"Credits (business template), the administration side: action \"adjust\" { owner, kind?, delta } (a refund by hand, a gift; never below 0)."},{"name":"neblla_matches_read","description":"Results of matches: a service with `results` in neblla_update_app({ business: { booking } }) makes each of its sessions, once played, a match between side \"A\" and \"B\"; with neblla_update_app({ matches }) each game a room starts is one too."},{"name":"neblla_matches","description":"Results of matches: a service with `results` ({ teams: 2, reportHours: 48, board?, levelRange?, cheaterHint?, cheater? } in neblla_update_app({ business: { booking: { <service>: … } } })) makes each of its sessions, once played, a match between side \"A\" and \"B\"; and with neblla_update_app({ matches "},{"name":"neblla_set_panel","description":"Create, replace or (panel: null) remove a back office panel: a screen for the developer and their team."},{"name":"neblla_run_panel","description":"Shows a panel as the back office does: { appId, name, inputs? } → { title, columns, filters, actions, rows }."},{"name":"neblla_team_read","description":"The developer's team for an app (Business › Team in the panel): people who sign in to developers.neblla.com with their own email and use this MCP with their own account, each in one or more groups whose rights add up."},{"name":"neblla_team","description":"The developer’s team for an app (Business › Team 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 their own account."},{"name":"neblla_alerts_read","description":"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 quota, quota out or in its 10 % margin, users saving in a loop, formal legal notices on community e"},{"name":"neblla_alerts","description":"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 quota, quota out or in its 10 % margin, users saving in a loop, formal legal notices on community e"},{"name":"neblla_backups_read","description":"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."},{"name":"neblla_backups","description":"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."},{"name":"neblla_broadcast_read","description":"Reads about messages to all the users of an app, or to the members of one group, that land in each one's inbox as a message from the developer."},{"name":"neblla_broadcast","description":"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 gets it live, inbox.on('updated') with action \"created\")."},{"name":"neblla_sales_read","description":"The app's sales (Money › Sales in the dashboard)."},{"name":"neblla_sales","description":"The app's sales (Money › Sales in the dashboard): \"refund\" { saleId } — asks to give the WHOLE payment back in Stripe (Neblla's 1 % with it; a seller's sale is given back by the seller, with the developer's commission when it can be recovered) and, once approved, takes the purchase back at once (the"},{"name":"neblla_orders_read","description":"The orders of the app's physical products (a product with `shipping`)."},{"name":"neblla_orders","description":"The orders of the app's physical products (a product with `shipping`, neblla_create_product; Money › Sales in the dashboard)."},{"name":"neblla_get_logs","description":"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): the errors and events of the app."},{"name":"neblla_media_read","description":"Reads the media of an app: photos, textures, sounds, videos and 3D models (glb), in COLLECTIONS and in an order, each item with a card (title, text, alt and the developer's own fields), apart from the app's files."},{"name":"neblla_media","description":"The MEDIA of an app: photos, textures, sounds, videos and 3D models (glb), many, apart from the app's files."},{"name":"neblla_projects_read","description":"The developer's projects: account → projects → apps."},{"name":"neblla_projects","description":"The developer's projects: account → projects → apps."},{"name":"neblla_domains_read","description":"Reads about the developer's own domain, on their Cloudflare, and the mail of that domain."},{"name":"neblla_domains","description":"The developer's own domain, on THEIR Cloudflare (the topic \"domain\" of neblla_projects cloudflare_setup), and the mail of that domain (topic \"mail\")."},{"name":"neblla_assets","description":"Mundo's CATALOGUE of 3D pieces (neblla.world, the mundo chapter of the guide): low-poly models in one style, CC0 (Kenney's Platformer Kit, licence checked 2026-10-23), in metres (1 unit = 1 m, the base at y = 0, a door is 2 m, the standard doll 1.83 m)."},{"name":"neblla_store_search","description":"Looks in Neblla's STORE (made by other authors) for things to use in an app: 3D pieces and things for the doll, movements, sounds, instruments, 2D packs, templates and blocks."},{"name":"neblla_delete_account","description":"This is the DEVELOPER own Neblla account, not an end user of their app — to sanction a user use neblla_set_ban_status instead."}]}