iDos Games
Server Details
Configure cross-platform and web3 games on iDos Games: live config, tokens, AI assets, builds.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
- Repository
- iDos-Games/idosgames-mcp
- GitHub Stars
- 0
TDQS
Score is being calculated.
Available Tools
137 toolsadd_kanban_commentAdd card commentInspect
Post a comment on a card. It appears under the publisher's own name, so write as the assistant, not as them. Mentioned people are notified.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Comment text. | |
| card_id | Yes | Card to comment on. | |
| project_id | Yes | Board the card belongs to. | |
| mention_ids | No | People to notify, ids from list_kanban_members (optional). | |
| parent_comment_id | No | Reply to this comment (optional). |
begin_build_uploadStart build uploadInspect
Start uploading a READY web build of the game (static files: index.html + assets — e.g. Vite dist/, Unity WebGL) to a Title. Returns build_id, a one-hour upload_url and asset_base. Build the game with asset_base as its base path (or a relative './'), zip the CONTENTS of the output folder so index.html is at the zip root, upload it with curl -T build.zip "<upload_url>" (a plain HTTP PUT of the file, no headers), then call finish_build_upload. Needs a shell to run the upload — a browser-only client cannot upload files. Free: only the storage it takes counts toward the publisher's quota. The build must be the GAME ITSELF, hosted here: on the Title's idosgames.com page the game may embed (iframe) only platform hosts, never another website, so a wrapper that frames the publisher's own site shows "Content unavailable" there instead of the game. Network requests (fetch/WebSocket) from the embedded game reach platform hosts plus the Title's Blockchain.IframeConnectHosts (save_blockchain; wallet-connection hosts are always refused).
| Name | Required | Description | Default |
|---|---|---|---|
| title_id | Yes | Live TitleID (not the -DEV copy). |
create_kanban_cardCreate task cardInspect
Add a card to a column. The server assigns the human key (OPUS-451) — it is in the reply.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Card title — what has to be done. | |
| card_id | No | Id to give the card (optional). Pass your own to make a retry safe: adding the same id twice is a no-op instead of a duplicate. | |
| due_date | No | Deadline, ISO-8601 like 2026-09-30 (optional). | |
| priority | No | None | Low | Medium | High | Critical (optional, default Medium). | |
| column_id | Yes | Column to add to (ids come from get_kanban_board). | |
| project_id | Yes | Board to add to. | |
| description | No | Details (optional). |
create_kanban_columnCreate board columnInspect
Add a column to a board.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Column name. | |
| color | No | Accent colour, hex (optional). | |
| project_id | Yes | Board to add the column to. |
create_kanban_projectCreate board projectInspect
Create a board. It comes with a default set of columns, so you can add cards right away.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Board name. | |
| color | No | Accent colour, hex like #3B82F6 (optional). | |
| emoji | No | Icon, a single emoji (optional). | |
| description | No | What this board is for (optional). |
delete_kanban_cardDelete task cardDestructiveInspect
Delete a card. IRREVERSIBLE, and its task key is never reused — ask the publisher before calling this. To take a card off the board without losing it, move it instead.
| Name | Required | Description | Default |
|---|---|---|---|
| card_id | Yes | Card to delete. | |
| project_id | Yes | Board the card belongs to. |
delete_kanban_columnDelete board columnDestructiveInspect
Delete a column TOGETHER WITH EVERY CARD IN IT. IRREVERSIBLE — ask the publisher first, and move the cards out with move_kanban_card if they should survive.
| Name | Required | Description | Default |
|---|---|---|---|
| column_id | Yes | Column to delete. | |
| project_id | Yes | Board the column belongs to. |
delete_kanban_projectDelete board projectDestructiveInspect
Delete a whole board with every card, comment and attachment on it. IRREVERSIBLE and there is no undo — ask the publisher first, and prefer archiving via update_kanban_project(archived=true), which is reversible.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | Board to delete. |
estimate_media_costEstimate generation costRead-onlyInspect
Estimate what a generation will cost in credits before running it. Read-only and free. exact=true means computed from the model's price list; approximate=true means the vendor names the final sum itself (video and music) and the number is a best guess; both false means there is nothing to estimate from — and zero credits does NOT mean free.
| Name | Required | Description | Default |
|---|---|---|---|
| text | No | The words to say — speech only, their length drives the price (optional). | |
| tier | No | Tier to price. Omit to use the default tier of that modality. | |
| params | No | Model settings, as declared by the vendor for the chosen tier — for example {"aspect_ratio":"16:9","resolution":"720p","duration":"4"}. Call list_ai_tiers to see which keys this tier accepts, their allowed values and defaults. Values are strings. Unknown keys are ignored rather than rejected. | |
| modality | Yes | What is going to be generated: image | video | audio | music | 3d | |
| title_id | No | Which game this is for — a label, optional (see the generate_* tools). |
finish_build_uploadFinish build uploadDestructiveInspect
Finish an upload started with begin_build_upload: unpacks the zip into a new version of the Title (it appears in the dashboard's version history) and waits up to ~100 s. Returns the version with a TestUrl to try it before players see it. deploy=true also puts it live for players on the Title's address and its idosgames.com page. If it is still unpacking when the call returns, poll get_build. Calling it again with the same build_id returns the same version (with deploy=true it deploys a version that is ready).
| Name | Required | Description | Default |
|---|---|---|---|
| label | No | Optional short name of the version shown in the history ("Added the shop"). | |
| deploy | No | true = put this version live for players as soon as it is unpacked. Default false: only a test version. | |
| build_id | Yes | build_id returned by begin_build_upload. | |
| title_id | Yes | Live TitleID (the same one passed to begin_build_upload). |
generate_audioGenerate speech or soundInspect
Generate speech (text-to-speech) for the title. Billed per character. The voice comes from the tier's model unless you pass one in params. Runs as a job: the call waits up to about two minutes and returns the result; if it is not ready by then it returns the generation with status queued/running — poll get_generation with its id.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | The words to say out loud. They are read verbatim, so do not put instructions here. | |
| tier | No | Quality/price tier, e.g. image-cheap or video-premium. Call list_ai_tiers for the current list. Omit it to use this title's default tier. | |
| model | No | Model name, if you insist on a specific one (optional). ⚠ Setting it cancels the tier COMPLETELY — together with its provider and its settings — so params may stop applying. Prefer `tier`. | |
| params | No | Model settings, as declared by the vendor for the chosen tier — for example {"aspect_ratio":"16:9","resolution":"720p","duration":"4"}. Call list_ai_tiers to see which keys this tier accepts, their allowed values and defaults. Values are strings. Unknown keys are ignored rather than rejected. | |
| provider | No | Provider key, if you insist on one (optional). Cancels the tier the same way. | |
| title_id | No | Which game this is for — a label for the report, optional. Credits are always the publisher's, so leaving it out is normal for assets that belong to no game. |
generate_imageGenerate imageInspect
Generate an image (icon, sprite, art) for the title. The result has a CDN URL in Assets — reference that URL from the title config or code. Runs as a job: the call waits up to about two minutes and returns the result; if it is not ready by then it returns the generation with status queued/running — poll get_generation with its id.
| Name | Required | Description | Default |
|---|---|---|---|
| tier | No | Quality/price tier, e.g. image-cheap or video-premium. Call list_ai_tiers for the current list. Omit it to use this title's default tier. | |
| model | No | Model name, if you insist on a specific one (optional). ⚠ Setting it cancels the tier COMPLETELY — together with its provider and its settings — so params may stop applying. Prefer `tier`. | |
| params | No | Model settings, as declared by the vendor for the chosen tier — for example {"aspect_ratio":"16:9","resolution":"720p","duration":"4"}. Call list_ai_tiers to see which keys this tier accepts, their allowed values and defaults. Values are strings. Unknown keys are ignored rather than rejected. | |
| prompt | Yes | What to generate. | |
| provider | No | Provider key, if you insist on one (optional). Cancels the tier the same way. | |
| title_id | No | Which game this is for — a label for the report, optional. Credits are always the publisher's, so leaving it out is normal for assets that belong to no game. |
generate_musicGenerate musicInspect
Generate music (a loop or a short track) for the title. A different vendor path and a different price from generate_audio, which is speech. Runs as a job: the call waits up to about two minutes and returns the result; if it is not ready by then it returns the generation with status queued/running — poll get_generation with its id.
| Name | Required | Description | Default |
|---|---|---|---|
| tier | No | Quality/price tier, e.g. image-cheap or video-premium. Call list_ai_tiers for the current list. Omit it to use this title's default tier. | |
| model | No | Model name, if you insist on a specific one (optional). ⚠ Setting it cancels the tier COMPLETELY — together with its provider and its settings — so params may stop applying. Prefer `tier`. | |
| params | No | Model settings, as declared by the vendor for the chosen tier — for example {"aspect_ratio":"16:9","resolution":"720p","duration":"4"}. Call list_ai_tiers to see which keys this tier accepts, their allowed values and defaults. Values are strings. Unknown keys are ignored rather than rejected. | |
| prompt | Yes | What to generate. | |
| provider | No | Provider key, if you insist on one (optional). Cancels the tier the same way. | |
| title_id | No | Which game this is for — a label for the report, optional. Credits are always the publisher's, so leaving it out is normal for assets that belong to no game. |
generate_textGenerate textInspect
Generate text via AI (copy, item descriptions, dialogue). Runs as a job: the call waits up to about two minutes and returns the generated text; if it is not ready by then it returns the generation with status queued/running — poll get_generation with its id. Credits are the publisher's; title_id is an optional label for the report.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | Model override (optional). | |
| prompt | Yes | Prompt for the model. | |
| provider | No | Provider override, e.g. anthropic (optional). | |
| title_id | No | Which game this text is for — a label for the report, optional. Credits are always the publisher's, so leaving it out is normal for copy that belongs to no game. | |
| max_tokens | No | Max output tokens (optional). | |
| temperature | No | Sampling temperature (optional). | |
| system_instructions | No | System instructions (optional). |
generate_three_dGenerate 3D modelInspect
Generate a 3D asset (mesh) for the title. ASYNC: returns a job with an id and status — poll get_three_d for the result.
| Name | Required | Description | Default |
|---|---|---|---|
| tier | No | Quality/price tier, e.g. image-cheap or video-premium. Call list_ai_tiers for the current list. Omit it to use this title's default tier. | |
| model | No | Model name, if you insist on a specific one (optional). ⚠ Setting it cancels the tier COMPLETELY — together with its provider and its settings — so params may stop applying. Prefer `tier`. | |
| params | No | Model settings, as declared by the vendor for the chosen tier — for example {"aspect_ratio":"16:9","resolution":"720p","duration":"4"}. Call list_ai_tiers to see which keys this tier accepts, their allowed values and defaults. Values are strings. Unknown keys are ignored rather than rejected. | |
| prompt | No | What to generate. | |
| provider | No | Provider key, if you insist on one (optional). Cancels the tier the same way. | |
| title_id | No | Which game this is for — a label for the report, optional. Credits are always the publisher's, so leaving it out is normal for assets that belong to no game. | |
| image_url | No | Source image URL — image-to-3d (optional). | |
| model_url | No | Source model URL — texture, remesh, rig (optional). | |
| operation | Yes | What to do: text-to-3d | image-to-3d | text-to-texture | remesh | rig. | |
| input_task_id | No | Previous job id — texture, remesh, rig (optional). |
generate_videoGenerate videoInspect
Generate a video clip for the title. Duration is the main cost driver, and some models bill a minimum length even when the clip is shorter — estimate first. ASYNC: returns a job with an id and status — poll get_video for the result.
| Name | Required | Description | Default |
|---|---|---|---|
| tier | No | Quality/price tier, e.g. image-cheap or video-premium. Call list_ai_tiers for the current list. Omit it to use this title's default tier. | |
| model | No | Model name, if you insist on a specific one (optional). ⚠ Setting it cancels the tier COMPLETELY — together with its provider and its settings — so params may stop applying. Prefer `tier`. | |
| params | No | Model settings, as declared by the vendor for the chosen tier — for example {"aspect_ratio":"16:9","resolution":"720p","duration":"4"}. Call list_ai_tiers to see which keys this tier accepts, their allowed values and defaults. Values are strings. Unknown keys are ignored rather than rejected. | |
| prompt | Yes | What to generate. | |
| provider | No | Provider key, if you insist on one (optional). Cancels the tier the same way. | |
| title_id | No | Which game this is for — a label for the report, optional. Credits are always the publisher's, so leaving it out is normal for assets that belong to no game. |
get_advertisingGet Advertising settingsRead-onlyInspect
GET ONLY the 'Advertising' field of TitlePublicConfigurationModel. Advertising — logical ad Placements (rewarded video, interstitial, banner, app-open), the mediation Providers that serve them (AppLovin MAX, LevelPlay, ...) with per-platform app IDs and ad unit IDs, per-format settings, frequency capping, premium ad-removal perks, GDPR/ATT consent policy, rewarded-video server-side verification (SSV) and the daily revenue import from the provider's Reporting API. Shared secrets (SSV keys, report keys) are NOT stored here — only the NAME of the TitleSecrets entry that holds them.
| Name | Required | Description | Default |
|---|---|---|---|
| title_id | Yes | TitleID, для которого читаются данные. |
get_aiGet AI settingsRead-onlyInspect
GET ONLY the 'AI' field of TitlePublicConfigurationModel. InApp AI generation features of the title - what a PLAYER can generate at runtime through the engine (text/NPC chat, images, video, speech, music, 3D). Enabled is the master switch; Features maps a stable FeatureKey (no '.' or '$') to one feature: its Modality, a Model = the id of a MODE (Text: an AI Coder mode such as "standard") or a TIER (media: an asset generation tier such as "image-balanced") - list the usable ones, with what the publisher's plan allows, with the dashboard action GetInAppAIModels (Text features that AllowImages need a mode that AcceptsImages), Behavior defaults per modality (no platform caps: MaxTokens is bounded only by what the mode's model can produce), Safety prompt checks, an audience Gate (SegmentGate), a Schedule (ScheduleSpec), per-player Limits (LimitSpec) and the in-game PriceOptions the PLAYER pays (in-game resources and/or ONE store purchase per generation - a Purchase entry in the option's base price; never inside PremiumTiers, never two per option). Each generation is charged to the PUBLISHER's credits by the engine at the model's price; per-title spend caps (in credits) live in the PRIVATE config (InAppAIBudget), not here. Server-only section: never sent to the game client or the CDN.
| Name | Required | Description | Default |
|---|---|---|---|
| title_id | Yes | TitleID, для которого читаются данные. |
get_analyticsGet Analytics settingsRead-onlyInspect
GET ONLY the 'Analytics' field of TitlePublicConfigurationModel. Custom events - Firebase Analytics parity. The game sends its own events (logEvent(name, params, value)); the engine stores them per player per UTC day and the dashboard reports counts, unique players, value sums and breakdowns by platform, app version, OS, device, language, country, new/returning and acquisition source; A/B experiment goals and custom funnel steps can use these events. Enabled is the master switch and defaults to OFF. EventNaming: "Open" (any valid name is accepted and joins the title's event catalog up to the PLAN limit) or "Declared" (only names listed in Events). Events maps an event name (^[A-Za-z][A-Za-z0-9_]{0,39}$; prefixes idos_/firebase_/google_/ga_ are reserved, except the automatic idos_* events) to a display name, description and a Blocked flag. Dimensions registers event parameters as reporting dimensions (like GA4 custom dimensions) - the count is capped by the plan; unregistered parameters are accepted but not stored. RetentionDays is how long per-player event data is kept (default 90, capped by the plan); daily title summaries are kept forever. AutomaticEvents (default on) accepts the SDK's automatic events: idos_first_open, idos_session_start, idos_app_update, idos_os_update, idos_screen_view.
| Name | Required | Description | Default |
|---|---|---|---|
| title_id | Yes | TitleID, для которого читаются данные. |
get_asset_bundleGet Asset Bundle settingsRead-onlyInspect
GET ONLY the 'AssetBundle' field of TitlePublicConfigurationModel. Dictionary<string,string> of named bundle/manifest URLs (Unity AssetBundles, Addressables manifests, etc.). Key is a logical bundle slug, value is its CDN URL. Use this for binary game content; for images alone use ImageData.
| Name | Required | Description | Default |
|---|---|---|---|
| title_id | Yes | TitleID, для которого читаются данные. |
get_attributionGet Attribution settingsRead-onlyInspect
GET ONLY the 'Attribution' field of TitlePublicConfigurationModel. Acquisition attribution — how the engine records WHERE a player came from. The signal (utm_source/medium/campaign/term/content, the ad network's click id, the referrer, the invite code) arrives with the login request and is stored as a chain of touch points on the player: the first touch is immutable, the last touch tracks win-backs, and the chain in between feeds multi-touch models. This section only tunes that recording: how many touches to keep, how long after a touch an identical signal is still considered the same click rather than a new one, and optional aliases that normalise messy source/medium values into canonical ones for analytics. Referral invites are recorded through this same mechanism as a channel, so they show up in the acquisition reports alongside paid traffic.
| Name | Required | Description | Default |
|---|---|---|---|
| title_id | Yes | TitleID, для которого читаются данные. |
get_authenticationGet Authentication settingsRead-onlyInspect
GET ONLY the 'Authentication' field of TitlePublicConfigurationModel. Authentication — which third-party sign-in methods the title offers and the public OAuth client IDs each platform build needs (currently Google: Web / Android / iOS / Desktop client IDs). Contains NO secrets: OAuth client IDs are public by protocol design, and none of the sign-in flows uses a client secret. Device / e-mail / Telegram / SSO logins need no configuration and are absent from this section. The ID-token audience differs per platform (web and Android tokens carry the Web client ID, iOS tokens the iOS client ID), so several IDs are filled at once and the server accepts any of them.
| Name | Required | Description | Default |
|---|---|---|---|
| title_id | Yes | TitleID, для которого читаются данные. |
get_banGet Ban settingsRead-onlyInspect
GET ONLY the 'Ban' field of TitlePublicConfigurationModel. Ban levels and the level ban gates apply to a player. The publisher defines any number of named levels (e.g. "low"/"medium"/"hard") — each with capability checkboxes (BanCapability: block withdrawals, deposits, leaderboards, trading, PvP, chat, social, coop, referral, push, community marketing, crypto convert, purchases) plus an optional BlockLogin flag that shuts the player out of the game entirely and overrides everything else on that level. DefaultLevelID is the level a manual ban applies when the caller does not pick one. Two built-in ids always work even when not listed here: "hard" (blocks login) and "soft" (synthesized from the legacy Soft section below). Use PLAYER-facing tools (SetPlayerBanStatus) to actually ban a player with a level ID from here — this section only defines what each level MEANS.
| Name | Required | Description | Default |
|---|---|---|---|
| title_id | Yes | TitleID, для которого читаются данные. |
get_blockchainGet Blockchain settingsRead-onlyInspect
GET ONLY the 'Blockchain' field of TitlePublicConfigurationModel. On-chain integration config — chain selectors, smart contract addresses, RPC overrides, gas policy, supported networks for Crypto currencies. Built largely from Currency.CryptoCurrencies[].Networks; this is the title-level companion config.
| Name | Required | Description | Default |
|---|---|---|---|
| title_id | Yes | TitleID, для которого читаются данные. |
get_buildGet buildRead-onlyInspect
State of one version of the Title's game: status (Queued, Building, Staged = ready to deploy, Live, Failed), errors, test and live links. Use it to poll finish_build_upload.
| Name | Required | Description | Default |
|---|---|---|---|
| build_id | Yes | build_id of the version. | |
| title_id | Yes | Live TitleID. |
get_characterGet Character settingsRead-onlyInspect
GET ONLY the 'Character' field of TitlePublicConfigurationModel. Character/hero catalogue — playable units, NPCs, summons. Defines stats, abilities, evolution/level-up paths, art/asset references. Distinct from Item (generic inventory) — characters typically have progression and abilities. Skins (alternative looks) live per character in Skins.Definitions, and each skin IS a non-stackable, non-expiring Item from the Item section (Skins.Definitions..Item) — create that item first; any system that grants items (Store offers, lootboxes, season, quests, rewards) then grants the skin, and Item.Stats, if set, count toward Power like gear.
| Name | Required | Description | Default |
|---|---|---|---|
| title_id | Yes | TitleID, для которого читаются данные. |
get_chatGet Chat settingsRead-onlyInspect
GET ONLY the 'Chat' field of TitlePublicConfigurationModel. Player chat - the catalog of persistent CHANNELS the title offers (world / announcement / group), plus direct-message settings, moderation rules and polling economics. A channel declares who SEES it (SegmentGate + ScheduleSpec) and who may WRITE to it (a second gate plus LimitSpec anti-spam: slow mode, daily cap); an announcement channel is simply one nobody passes the write gate of. A channel may be PARTITIONED by the player's language or country and sharded by capacity - the partition key is computed by the SERVER (language is validated against this title's Localization locales, country comes from IP), so the set of rooms is bounded by config and never by client input. Type=Group is the extension point for clans: membership comes from an external provider named in GroupSource, and no provider exists yet, so such a channel is currently hidden rather than shown empty. Messages themselves are NOT here - they live in the ChatMessages collection and expire by Retention.HistoryHours; only the hot tail is cached in Redis. Muting a player and reviewing reports are admin actions, not config.
| Name | Required | Description | Default |
|---|---|---|---|
| title_id | Yes | TitleID, для которого читаются данные. |
get_cloud_codeGet Cloud Code settingsRead-onlyInspect
GET ONLY the 'CloudCode' field of TitlePublicConfigurationModel. Server-side scripting (CloudCode): the active JavaScript revision the title runs, plus execution policy — engine limits, rate limits, per-handler metadata, whether logs/stack traces are revealed to clients. Scripts are the ONLY way to write protected player data (UserCustomData ReadOnly/Internal buckets) and mutable title data (TitleCustomData Runtime scope). Prefer the dedicated cloud-code tools over editing this section by hand: they compute the code hash, bump the revision number and archive the previous one.
| Name | Required | Description | Default |
|---|---|---|---|
| title_id | Yes | TitleID, для которого читаются данные. |
get_collectionGet Collection settingsRead-onlyInspect
GET ONLY the 'Collection' field of TitlePublicConfigurationModel. Collection / album / codex definitions — sets of items, cards, characters or achievements players collect. Defines what counts as the collection, completion rewards, and tier/rarity grouping. Use for compendium-style meta content.
| Name | Required | Description | Default |
|---|---|---|---|
| title_id | Yes | TitleID, для которого читаются данные. |
get_community_marketingGet Community Marketing settingsRead-onlyInspect
GET ONLY the 'CommunityMarketing' field of TitlePublicConfigurationModel. Community Marketing - the program that rewards community members for posting about the game on external social platforms (YouTube/TikTok/Instagram). A campaign declares WHO may take part (Participation + SegmentGate), WHEN it runs (ScheduleSpec), WHICH platforms count and at what weight, WHAT the post must contain (hashtags, mention, the creator verification code), and HOW it pays: RateCards give a linear rate per metric (e.g. 60 GOLD per 1000 views, optionally multiplied by a per-submission moderator coefficient), while Milestones give threshold rewards using the shared platform milestone primitive. Spending is bounded by a campaign Budget plus per-submission, per-creator and per-team Caps - all evaluated against what has been PAID, never what has been earned. Providers says where the view/like/comment/share numbers come from per platform (the title's own API key or aggregator key, addressed BY NAME in TitleSecrets - never the value itself), Moderation says what a human reviews, and AntiFraud sets the hold period before earnings mature plus the anomaly thresholds that freeze a suspicious submission. Creators, submissions, metric snapshots, accruals and the payout journal are NOT here - they are operational data in their own collections. The Community Marketing pool bucket is funded by a fee on player crypto withdrawals, configured in the Currency section (CryptoCurrencyDefinition.CommunityMarketingWithdrawalFeePercent), not here.
| Name | Required | Description | Default |
|---|---|---|---|
| title_id | Yes | TitleID, для которого читаются данные. |
get_coop_eventGet Coop Event settingsRead-onlyInspect
GET ONLY the 'CoopEvent' field of TitlePublicConfigurationModel. Cooperative multi-player events — guild raids, server-wide goals, leaderboard tournaments where players contribute together. Distinct from TimedEvent (solo) and Leaderboard (pure ranking). Defines participation rules, shared progress, contribution tracking, and tiered rewards based on collective performance.
| Name | Required | Description | Default |
|---|---|---|---|
| title_id | Yes | TitleID, для которого читаются данные. |
get_craftGet Craft settingsRead-onlyInspect
GET ONLY the 'Craft' field of TitlePublicConfigurationModel. Crafting / recipe system — input resources, output item, success rate, time cost, station/skill prerequisites. Item IDs in inputs/outputs reference the Item catalogue; currency costs reference Currency.
| Name | Required | Description | Default |
|---|---|---|---|
| title_id | Yes | TitleID, для которого читаются данные. |
get_currencyGet Currency settingsRead-onlyInspect
GET ONLY the 'Currency' field of TitlePublicConfigurationModel. Currency catalogue: VirtualCurrencies (Gold, Gems, Energy, etc.) AND CryptoCurrencies (on-chain tokens). Defines IDs, economy (USD value, balance limits), recharge rules for energy-like currencies, conversion rules, and per-currency permissions. The CurrencyID of each entry is referenced by Item prices, Store SKUs, Reward payouts, Quest rewards, Lootbox loot, etc. NOTE: the "Main" CryptoCurrency entry is protected and cannot be overwritten — your changes to that key will be silently ignored.
| Name | Required | Description | Default |
|---|---|---|---|
| title_id | Yes | TitleID, для которого читаются данные. |
get_data_collectionsGet Data Collections settingsRead-onlyInspect
GET ONLY the 'DataCollections' field of TitlePublicConfigurationModel. Data collections - the creator's own data structures, a Firebase/Supabase-like store inside the platform for games, apps and sites. USE A READY PLATFORM MODULE FIRST (currencies, items, store, lootboxes, quests, leaderboards, chat, social, workshop, match, season, tutorial, localization, push, analytics); declare a collection only for what no module provides (guilds, auctions, orders, catalogs, articles, saved levels, feeds, mail) or for extra data attached to module entities. NEVER store currencies or items inside a record: reference them with a Ref field (Kind Item/Currency/User/…) and move value with Economy (Cost/Grant in engine resource format, charged in the same transaction as the write). Collections maps a collection id (letters, digits, '_', '-', ':' up to 64; a front-end module prefixes its namespace, e.g. 'guild-system:guilds') to: Kind (UserOwned: each record belongs to one user; Shared: records used by many users; Temporary: short-lived, mandatory TTL up to 30 days; Log: append-only, read by time); Mode (Strict = only declared fields); Fields (String, Text = searchable by words, Int, Number, Bool, Date, Json, Array with ItemType, Ref with Ref.Kind, File) with Required/Default (JSON literal)/Min/Max/MaxLength/MaxItems/Enum/Unique/Indexed/Visibility (Everyone/Owner/Server)/ClientWritable=false for server-only fields/Immutable; SortKeys (id + 1..4 components, each a scalar field or createdAt/updatedAt, optionally Descending) - every ordered query uses one, and equality filters on its leading components narrow the range; Access with Read/Create/Update/Delete lists of rules OR-ed together (Anyone - Read only, Authenticated, Owner, Members with MembersField = an Array of Ref(User), Role with a role id from Roles, Server); Limits (MaxItemBytes, MaxItemsPerOwner, TtlSeconds); OnOwnerDeleted (Delete/Anonymize/Keep); Counters (Count or Sum, optional GroupBy - maintained atomically, not allowed for expiring records); Integrations (QuestMetricOnCreate/Update/Delete advance quest objectives with Source ServerApi, AnalyticsEventOn*, TriggerOn* run a CloudCode handler asynchronously); Moderation.BlockedTerms; WriteGate (SegmentGate); PublicViews (published to the CDN for anonymous/site reads: SortKey, optional PartitionField, PageSize, MaxItems, PublishItems) and AnonymousSearch. Queries from a game may filter ONLY by Indexed fields and sort ONLY by declared SortKeys - there are no table scans on the shared cluster. Roles lists title user roles; they are assigned only by CloudCode (server.SetUserRoles) and the dashboard. The count of collections, searchable fields, sort keys, record size and storage are capped by the plan. Records themselves are NOT here - they live in the engine's DataCollection* collections; CloudCode reads and writes them with server.GetDataItem/QueryDataItems/CreateDataItem/UpdateDataItem/DeleteDataItem/BatchDataItems/GetDataCounter.
| Name | Required | Description | Default |
|---|---|---|---|
| title_id | Yes | TitleID, для которого читаются данные. |
get_deal_offerGet Deal Offer settingsRead-onlyInspect
GET ONLY the 'DealOffer' field of TitlePublicConfigurationModel. Limited-time offers WITH PROGRESSION — starter packs, comeback bundles, aquarium-style chains, pick-one-of-N. Two axes: a SLOT is a UI position that cycles through its own ordered Queue of offers (its Availability.Schedule decides how: Chained advances per player, Scheduled/Cyclic/AlwaysOn follow the wall clock, Triggered fires on an event), and an OFFER is a graph of nodes. There is no declared graph mode: the shape (single, chain, branching, choice, metered) is whatever Graph.RootNodeIDs, node NextNodeIDs, ChoiceGroupID and UnlockRules describe. Every node declares its own price as a PriceOptions dictionary — resources, crypto, a store product (real money), an AD CREDIT (that is how "watch a video" is expressed; only the server grants credits) or nothing at all, which means free. A node pays out Reward.Grants, moves offer-local Tracks and adds Reward.MilestonePoints to the offer milestone bar. Slots, offers and nodes are decomposed into named blocks (Identity, Availability, Behaviour, Graph, Milestones, Pricing, Reward), each with its own independent preset binding into DealOffer.Presets. Distinct from Store (always-on shop, no progression) and Premium (ongoing paid subscriptions).
| Name | Required | Description | Default |
|---|---|---|---|
| title_id | Yes | TitleID, для которого читаются данные. |
get_experimentGet Experiment settingsRead-onlyInspect
GET ONLY the 'Experiment' field of TitlePublicConfigurationModel. A/B experiments — variant definitions with weighted allocation, audience gate (SegmentGate) and schedule (ScheduleSpec). Players are assigned to a variant by a stable hash; variant Params carry inline config overrides. Used to test config changes against measurable cohorts.
| Name | Required | Description | Default |
|---|---|---|---|
| title_id | Yes | TitleID, для которого читаются данные. |
get_feature_trackingGet Feature Tracking settingsRead-onlyInspect
GET ONLY the 'FeatureTracking' field of TitlePublicConfigurationModel. Feature tracking — which CONCRETE actions are recorded as their own line in the player's FeatureUsage, on top of the default per-module tracking. Entries look like "Character:EquipItems" (module name from the route + the module's action name). Purely an analytics setting: it makes those actions selectable as steps in custom funnels (Analytics → Funnels). Tracking starts when an action is added — there is no data for the past, because the action was not recorded then. Capped at 40 entries: every tracked id becomes a key in the player document, which is read on every request.
| Name | Required | Description | Default |
|---|---|---|---|
| title_id | Yes | TitleID, для которого читаются данные. |
get_game_loopGet Game Loop settingsRead-onlyInspect
GET ONLY the 'GameLoop' field of TitlePublicConfigurationModel. Core gameplay loop configuration — match settings, level pacing, difficulty curves, energy/cooldown gates, retry/continue economy. Use for tuning the moment-to-moment gameplay; not for content (use Item, Character, Collection) and not for meta-progression (use Season).
| Name | Required | Description | Default |
|---|---|---|---|
| title_id | Yes | TitleID, для которого читаются данные. |
get_generationGet generationRead-onlyInspect
Read a generation by id: its status (queued | running | completed | failed), the CDN URLs in Assets or the text in OutputText when it is done, the error when it failed. Poll it for generations that returned queued/running. Read-only and free.
| Name | Required | Description | Default |
|---|---|---|---|
| generation_id | Yes | Id returned by a generate_* tool. |
get_image_dataGet Image Data settingsRead-onlyInspect
GET ONLY the 'ImageData' field of TitlePublicConfigurationModel. Dictionary<string,string> of arbitrary named image asset URLs/paths for the Title — splash screens, banners, icons, loading screens, marketing art. Key is a project-defined slug (e.g. "main_banner", "login_bg"), value is a URL or storage path. For per-currency icons use Currency.VirtualCurrencies[].AssetPaths; for per-item icons use Item; for character art use Character.
| Name | Required | Description | Default |
|---|---|---|---|
| title_id | Yes | TitleID, для которого читаются данные. |
get_itemGet Item settingsRead-onlyInspect
GET ONLY the 'Item' field of TitlePublicConfigurationModel. Item catalogue — every consumable, equipment piece, resource, gear or generic inventory entity the player can own. Defines item IDs, names, categories, stack rules, rarities. Referenced by Store SKUs (as contents), Lootbox loot tables, Quest rewards, Craft recipes, and Reward payouts. For premium-tier bundles use Premium; for character entities use Character.
| Name | Required | Description | Default |
|---|---|---|---|
| title_id | Yes | TitleID, для которого читаются данные. |
get_kanban_boardGet task boardRead-onlyInspect
Read a board: its columns and the cards in them. Cards come back COMPACT — key, title, priority, assignee, due date, labels and counters, without descriptions or checklists. Call get_kanban_card for the full text of one card.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | Board to read (from list_kanban_projects). |
get_kanban_cardGet task cardRead-onlyInspect
Read ONE card in full: description, checklist, links, watchers, estimate and which column it sits in. Address it either by card_id or by its human key like OPUS-451.
| Name | Required | Description | Default |
|---|---|---|---|
| card_id | No | Card id (optional if card_key is given). | |
| card_key | No | Human key of the task, e.g. OPUS-451 (optional if card_id is given). | |
| project_id | Yes | Board the card belongs to. |
get_kanban_commentsGet card commentsRead-onlyInspect
Read the comment thread of a card, oldest first.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many comments (default 100). | |
| card_id | Yes | Card whose thread to read. | |
| project_id | Yes | Board the card belongs to. |
get_leaderboardGet Leaderboard settingsRead-onlyInspect
GET ONLY the 'Leaderboard' field of TitlePublicConfigurationModel. Leaderboard definitions — name, ranking metric (score type), reset cadence (daily/weekly/seasonal/perpetual), tier-based rewards, eligibility rules. Use for pure player-vs-player ranking. For collaborative team goals use CoopEvent.
| Name | Required | Description | Default |
|---|---|---|---|
| title_id | Yes | TitleID, для которого читаются данные. |
get_localizationGet Localization settingsRead-onlyInspect
GET ONLY the 'Localization' field of TitlePublicConfigurationModel. Localization SETTINGS — which locales the title offers, which one is the default (and therefore the fallback), what to render for a missing key, and the store limits. The translation TABLES are deliberately NOT here: they live in the separate TitleLocalization collection (one document per title+locale) and are delivered one file per locale, because text changes far more often than balance and must not invalidate the whole title config. Client resolution is t(x) = own table -> fallback table -> x itself, which is why a title whose DisplayName fields hold literal names keeps working unchanged: a literal is simply a key with no translation. Add or edit translations through the Localization endpoints, not through this section.
| Name | Required | Description | Default |
|---|---|---|---|
| title_id | Yes | TitleID, для которого читаются данные. |
get_localization_keysGet localization keysRead-onlyInspect
List the title's localization KEYS with their text in the DEFAULT language, plus the configured locales. Call it before writing any user-visible string so you reuse an existing key instead of inventing a second one for the same label. Filter with "prefix" ("shop.", "quest."); long tables are truncated and say so. The client resolves text as t(x) = player's table -> fallback table -> x itself, which is why a plain literal still renders — a literal is simply a key with no translation.
| Name | Required | Description | Default |
|---|---|---|---|
| prefix | No | Optional key prefix filter. | |
| title_id | Yes | TitleID. |
get_lootboxGet Lootbox settingsRead-onlyInspect
GET ONLY the 'Lootbox' field of TitlePublicConfigurationModel. Lootbox / gacha definitions — loot tables with weighted entries, pity systems, guaranteed rares, currency to open. Each entry references Item or Currency IDs. For straight (non-random) reward bundles use Reward.
| Name | Required | Description | Default |
|---|---|---|---|
| title_id | Yes | TitleID, для которого читаются данные. |
get_mailboxGet Mailbox settingsRead-onlyInspect
GET ONLY the 'Mailbox' field of TitlePublicConfigurationModel. Mailbox - an in-game mailbox that holds VALUE the player claims (not notifications - those are Push). Enabled is the master switch, default OFF. Capacity (default 100) caps visible letters; on overflow the oldest letters WITHOUT unclaimed rewards are removed. RewardLetterDays (30) / PlainLetterDays (14) are letter lifetimes (an unclaimed reward is lost when it expires), ClaimedRetentionDays (7) keeps claimed letters visible. DefaultLanguage (en) is the text fallback. Templates maps a TemplateID to per-language Texts {Subject, Body with {Param} placeholders}, Category (System/Reward/Gift/Social tab), Icon, Banner, Link {FeatureID+Args to open a game screen, or an https Url}, SenderName, ExpirationDays; keys 'system.*' override built-in letters of modules (system.gift, system.transfer, system.transfer_return, system.leaderboard_reward, system.coop_grand_prize, system.coop_object_reward, system.season_unclaimed, system.referral_reward). Gifts.Social maps a GiftID to a friend gift (Grant of items/virtual currencies minted on claim; optional Cost the sender pays per friend, burned; one per friend per period; the period is IntervalSeconds (default 86400) counted from AnchorUtc (default 2026-01-01 00:00 UTC) like fixed-interval cycles of other systems; SendLimit/ReceiveLimit per period, default 20; SenderGate). Gifts.Transfer lets friends send their OWN resources: AllowedResources whitelist (VirtualCurrency or STACKABLE items; MaxAmountPerGift is a CAP - any amount from 1 up to it, entries separately or together), MaxEntriesPerGift (5), IntervalSeconds/AnchorUtc (same period model), SendLimit/ReceiveLimit per period (5), FeePercent (0-90, withheld from what the friend receives, the fee per entry rounds up) and FeeCost (fixed fee on top); both burn only when the friend claims - a declined or expired transfer returns everything charged, MinFriendshipHours (24, against alt-account funnelling), ExpirationDays (7, then returned to the sender). Integrations {Leaderboard, CoopEvent, Season, Referral} (empty = on) bring unclaimed rewards of those modules to the mailbox. Letters and broadcasts themselves are NOT config: they are sent from the dashboard (player letters, segment broadcasts with a SegmentGate and a schedule) or by CloudCode server.SendMail; letters with rewards require the player-admin plan right.
| Name | Required | Description | Default |
|---|---|---|---|
| title_id | Yes | TitleID, для которого читаются данные. |
get_marketplaceGet Marketplace settingsRead-onlyInspect
GET ONLY the 'Marketplace' field of TitlePublicConfigurationModel. Player-to-player marketplace (v2) — fixed-price listings (price = ResourceBundle), auctions (single-axis bids), buy orders (escrowed payment), and direct trades/gifts. Configures the audience gate, open-window schedule, price composition policy (reusing the same EntryResourceRule whitelist as Match), commission policy (percent/min, burn or ledger sink, per-goods-catalog overrides), item tradability lists, and per-mechanic settings/limits. Distinct from Store (title-sold SKUs) and DealOffer (promotions): here players trade with each other. Everything offered is escrowed at creation; commission is taken at settlement.
| Name | Required | Description | Default |
|---|---|---|---|
| title_id | Yes | TitleID, для которого читаются данные. |
get_matchGet Match settingsRead-onlyInspect
GET ONLY the 'Match' field of TitlePublicConfigurationModel. PvP / match system configuration, grouped by battle mode under InstantBattle. Holds the instant-battle rule catalogue (keyed by RuleID) plus title-wide defaults. Each rule defines wager economy (prize-pool burn) and battle settings: a combat-role → StatID mapping (which Character stat drives HP/Damage/Armor/AttackSpeed/CritChance/CritDamage/Dodge/AllMight), combat params (max rounds, block effect, crit/dodge clamps) and optional per-stat custom formulas. Stat/formula fields reference Character.Stats StatIDs; equipment bonuses (Item) key off the same StatIDs.
| Name | Required | Description | Default |
|---|---|---|---|
| title_id | Yes | TitleID, для которого читаются данные. |
get_multiplayerGet Multiplayer settingsRead-onlyInspect
GET ONLY the 'Multiplayer' field of TitlePublicConfigurationModel. Realtime multiplayer (WebRTC peer-to-peer) - the engine is only the signaling server: it creates rooms, relays WebRTC offer/answer/ICE between room members and optionally relays lobby chat; game traffic then flows directly between players' browsers and never touches the server. The section is ABSENT by default, which means multiplayer is DISABLED: add it (SystemState.Enabled = true) to turn the Multiplayer module on. DefaultTopology: Mesh (everyone connects to everyone, 2-4 players) or Host (star: every player connects to the host, which runs the authoritative game simulation - required by host-authoritative games such as VoxelCraft). MaxPlayersPerRoom is a hard cap (default 8). MemberTimeoutMs is also how long a silent host keeps the host role before another member may take it over. IceServers are PUBLIC: list only STUN servers there; short-lived TURN credentials are issued by the engine to room members on create/join.
| Name | Required | Description | Default |
|---|---|---|---|
| title_id | Yes | TitleID, для которого читаются данные. |
get_my_kanban_tasksGet my tasksRead-onlyInspect
Cards assigned to a person across all boards, soonest deadline first. Defaults to the publisher who owns this connection — pass assignee_id for a teammate.
| Name | Required | Description | Default |
|---|---|---|---|
| assignee_id | No | Whose tasks (optional). Ids come from list_kanban_members. | |
| include_done | No | Include cards already in a done column (default false). |
get_platform_bridgeGet Platform Bridge settingsRead-onlyInspect
GET ONLY the 'PlatformBridge' field of TitlePublicConfigurationModel. Platform bridge - what the game takes from the player's idosgames.com account and what it lets players show on their public profile. Profile: Off / Default (unset: the platform name and avatar until the player renames themselves in the game) / Always (every platform login overwrites them). Friends: TitleOnly (unset) / TitleAndPlatform (plus mutual follows on idosgames.com whose both sides play this game) / PlatformOnly (only those; in-game friend requests are refused) - applies to EVERY friends-based system: friends list and leaderboard, gifts, attack targets, friends-only Workshop items, recommendations. Notifications: which in-game notifications (Attack, Raid, FriendAdded, WorkshopSale) also reach the idosgames.com notification bell; empty = none. Guests never get platform data; the economy never crosses the bridge; turning the bridge off deletes nothing.
| Name | Required | Description | Default |
|---|---|---|---|
| title_id | Yes | TitleID, для которого читаются данные. |
get_purchaseGet Purchase settingsRead-onlyInspect
GET ONLY the 'Purchase' field of TitlePublicConfigurationModel. Real-money in-app purchases (IAP) for Google Play and the Apple App Store. Product catalogue with per-store SKUs (StoreProductIDs), what each purchase grants (Rewards), subscription products that activate a Premium entitlement, audience gates and purchase limits, plus per-store receipt-verification settings. Distinct from Store (in-game shop paid with virtual currency) and from Premium (which describes the entitlement itself, while this describes how it is sold in the stores). Contains NO secrets: the Google service-account JSON and the App Store Server API key are referenced by TitleSecrets entry name only; the Play licensing public key and Apple root certificates are public by nature and live here.
| Name | Required | Description | Default |
|---|---|---|---|
| title_id | Yes | TitleID, для которого читаются данные. |
get_pushGet Push settingsRead-onlyInspect
GET ONLY the 'Push' field of TitlePublicConfigurationModel. Push notifications - the title's settings for messages delivered to a player who is NOT in the game right now (Web Push in the browser, FCM/APNs on mobile). IsEnabled is the master switch and defaults to DISABLED: notifications spend a real person's attention and require their browser permission, so a title opts in explicitly. MaxSendsPerUserPerDay caps how many a single player receives; MaxSendsPerTitlePerDay caps the title as a whole and is the ONLY ceiling on a broadcast that exists anywhere - the publisher API quota does not see sends at all, because they run in a queue worker rather than in a request pipeline. QuietHoursStart/End suppress sends during the night in the SUBSCRIPTION's locale (the window may cross midnight); waking a person at 3am is the fastest way to lose the browser permission permanently. Mobile holds only the NAMES of TitleSecrets entries for the publisher's Firebase service account and APNs .p8 key, never the credentials. VAPID keys are NOT here and never will be - they are platform-wide environment variables shared by both backends. Subscriptions themselves are not config either: they live in the shared PushEndpoints/PushBindings collections, one row per browser or device plus one row per topic it follows.
| Name | Required | Description | Default |
|---|---|---|---|
| title_id | Yes | TitleID, для которого читаются данные. |
get_questGet Quest settingsRead-onlyInspect
GET ONLY the 'Quest' field of TitlePublicConfigurationModel. Quest / mission / objective definitions — single tasks the player completes for a reward. Includes trigger conditions, progress counters, completion criteria, reward references (use Reward). For grouped quest chains use Season or TimedEvent.
| Name | Required | Description | Default |
|---|---|---|---|
| title_id | Yes | TitleID, для которого читаются данные. |
get_referralGet Referral settingsRead-onlyInspect
GET ONLY the 'Referral' field of TitlePublicConfigurationModel. Referral / invite system configuration — invite codes, attribution rules, milestones (e.g. invite N friends → reward), per-side rewards (inviter + invitee). Reward bundles reference Reward.
| Name | Required | Description | Default |
|---|---|---|---|
| title_id | Yes | TitleID, для которого читаются данные. |
get_rewardGet Reward settingsRead-onlyInspect
GET ONLY the 'Reward' field of TitlePublicConfigurationModel. Reward templates — reusable bundles of currency + items + buffs that can be granted to a player. Referenced by Quest, TimedEvent, CoopEvent, Season, DailyLogin, Referral, etc. Define a reward once here, then reference it everywhere instead of inlining payouts.
| Name | Required | Description | Default |
|---|---|---|---|
| title_id | Yes | TitleID, для которого читаются данные. |
get_seasonGet Season settingsRead-onlyInspect
GET ONLY the 'Season' field of TitlePublicConfigurationModel. Long-form seasonal progression — battle passes, chapters, ladders. Defines a season's start/end window, XP/progress curve, tier rewards (free + premium tracks), and the Premium pass that unlocks paid rewards. For short events use TimedEvent.
| Name | Required | Description | Default |
|---|---|---|---|
| title_id | Yes | TitleID, для которого читаются данные. |
get_socialGet Social settingsRead-onlyInspect
GET ONLY the 'Social' field of TitlePublicConfigurationModel. In-game social layer - comments, following other players and reports, on top of the engine's shared social core (the same collections the platform's own social network uses, scoped to this title). Comments are OFF by default (CommentsEnabled): they are public text written by players, so turn them on only once you are ready to moderate them; CommentableTypes limits which objects accept comments (today only Workshop items). CommentMaxLength / CommentMaxLinks / CommentsPerDay, MaxFollowing / FollowsPerDay and ReportsPerDay are anti-spam ceilings; unset fields mean the platform defaults. Friends and the player's notification inbox (attacks, raids, new friend, Workshop sales and likes) need no configuration and are not here. Likes, favorites, follows, comments and reports themselves are NOT here - they are operational data in the shared Social* collections; reviewing reports and hiding comments are admin actions, not config.
| Name | Required | Description | Default |
|---|---|---|---|
| title_id | Yes | TitleID, для которого читаются данные. |
get_storeGet Store settingsRead-onlyInspect
GET ONLY the 'Store' field of TitlePublicConfigurationModel. In-game shop, built as a tree: Stores -> Layout.Sections -> Slots, plus a flat StoreOffers catalogue. A SLOT is the only address a product can be bought through, and it decides what stands in it: Rotation.Mode is Fixed (a pinned product - an ordinary shelf), Title (everyone sees the same roll) or Player (a personal roll), with a weighted Pool and an optional per-window purchase cap. The refresh window is a ScheduleSpec on the slot. A product not placed in any slot cannot be bought at all. Price is always a PriceOptions dictionary and can be virtual currency, crypto, a store product (real money), an ad credit, or FREE - an unset Cost means free, and a free product must be limited on some axis. Pricing.CompareAt is a struck-through price for display only and never reaches the charge. Identity.Tags and Identity.CustomParams are badges and ribbons the server never interprets. Distinct from Premium (real-money tiered offers) and DealOffer (limited-time promotions with progression).
| Name | Required | Description | Default |
|---|---|---|---|
| title_id | Yes | TitleID, для которого читаются данные. |
get_three_dGet 3D model generationRead-onlyInspect
Poll a 3D job by id. When it is done the model CDN URL is in Assets.
| Name | Required | Description | Default |
|---|---|---|---|
| title_id | No | Which game this is for — a label for the report, optional. Credits are always the publisher's, so leaving it out is normal for assets that belong to no game. | |
| three_d_id | Yes | Job id returned by generate_three_d. |
get_timed_boostGet Timed Boost settingsRead-onlyInspect
GET ONLY the 'TimedBoost' field of TitlePublicConfigurationModel. Buff / boost definitions with a time component — temporary XP multipliers, drop-rate boosts, energy-cap boosts. Granted via Reward, Store, DealOffer, or events. Define the buff's effect and duration here; granting is done elsewhere.
| Name | Required | Description | Default |
|---|---|---|---|
| title_id | Yes | TitleID, для которого читаются данные. |
get_timed_eventGet Timed Event settingsRead-onlyInspect
GET ONLY the 'TimedEvent' field of TitlePublicConfigurationModel. Solo time-limited events — daily challenges, weekly missions, holiday events, login streaks. Defines event IDs, schedules (start/end/recurrence), objectives, progress tracking, milestone rewards. For multi-player team events use CoopEvent; for long-form battle-pass-style progression use Season.
| Name | Required | Description | Default |
|---|---|---|---|
| title_id | Yes | TitleID, для которого читаются данные. |
get_title_custom_dataGet Title Custom Data settingsRead-onlyInspect
GET ONLY the 'TitleCustomData' field of TitlePublicConfigurationModel. SCHEMA + limits for the title-wide key-value store (feature flags, project-wide globals, event state, balancing knobs that don't fit any typed definition below). This section holds ONLY the key schema — the VALUES live in the TitleCustomData store, one document per title, managed with the dedicated title-data tools (get_title_data / save_title_data). Each key declares a Scope (Static = authored config; Runtime = mutable state written only by CloudCode scripts) and a Bucket (Public = readable by game clients; Private = server/CloudCode only).
| Name | Required | Description | Default |
|---|---|---|---|
| title_id | Yes | TitleID, для которого читаются данные. |
get_title_dataGet title dataRead-onlyInspect
Read the TITLE's key-value data store — values shared by ALL players (event state, global counters, server-side thresholds, feature toggles). Returns two scopes: "Static" (authored configuration, written with save_title_data) and "Runtime" (live state that only CloudCode scripts write), each split into "Public" (readable by game clients) and "Private" (server/CloudCode only). Values are always strings. Per-player data is NOT here — it lives in each player's UserCustomData.
| Name | Required | Description | Default |
|---|---|---|---|
| title_id | Yes | TitleID, для которого читаются данные. |
get_tutorialGet Tutorial settingsRead-onlyInspect
GET ONLY the 'Tutorial' field of TitlePublicConfigurationModel. Tutorial / onboarding definitions — flows (ordered scenarios) built from steps that teach the player a mechanic. A step completes either by client acknowledgement or by a real game event (the same TriggerSource vocabulary as Quest), so "make a roll", "buy something", "open a chest" need no client-side bookkeeping. A step may also PREDETERMINE the outcome of another module (TutorialScriptedOutcome — e.g. force the board dice to land on a Raid tile), which is the only way to demonstrate a mechanic instead of randomness. Flows carry an audience gate (SegmentGate) and a schedule (ScheduleSpec); putting an Experiment condition in that gate is how two tutorial versions are A/B-tested. Gating other content on tutorial progress is done via SegmentGate.Tutorial per entity, or via Settings.Blocking to close whole modules until onboarding is finished.
| Name | Required | Description | Default |
|---|---|---|---|
| title_id | Yes | TitleID, для которого читаются данные. |
get_usageGet Usage settingsRead-onlyInspect
GET ONLY the 'Usage' field of TitlePublicConfigurationModel. Retention policy for the player's activity history (Usage). The engine keeps a rolling window of per-day records and folds everything older into monthly totals, then months of finished years into yearly totals — otherwise the per-day map grows forever inside the hottest document on the platform. WARNING: the fold is IRREVERSIBLE, per-day detail outside the window is gone for good. Do not lower DailyWindowDays below 400 without also lowering the analytics range cap: publisher analytics (DAU/WAU/MAU, retention cohorts, funnels) is computed lazily from those very per-day records, accepts ranges of up to 366 days, and needs 30 extra preceding days per requested day for MAU. Also holds SessionIdleTimeoutMinutes: how many minutes of silence end a session (default 30, the same rule Firebase/GA4 use, so the two reports stay comparable). The session boundary is decided by the SERVER from the player's last activity — the client's IsNewSession flag is not trusted for counting. Leave every field null unless you have a specific reason — the defaults (enabled, 400-day window, 30-minute session gap) are what the analytics horizon was sized against.
| Name | Required | Description | Default |
|---|---|---|---|
| title_id | Yes | TitleID, для которого читаются данные. |
get_user_custom_dataGet User Custom Data settingsRead-onlyInspect
GET ONLY the 'UserCustomData' field of TitlePublicConfigurationModel. Schema for per-player custom data fields — name, type, default value, visibility, whether the client can write it. This is the SCHEMA only; actual per-user values live on the User document. Use this to declare new player-specific stats, flags, or progress counters.
| Name | Required | Description | Default |
|---|---|---|---|
| title_id | Yes | TitleID, для которого читаются данные. |
get_videoGet video generationRead-onlyInspect
Poll a video job by id. While it runs the status says so; when it is done the CDN URL is in Assets.
| Name | Required | Description | Default |
|---|---|---|---|
| variant | No | Variant to fetch, e.g. 720p (optional). | |
| title_id | No | Which game this is for — a label for the report, optional. Credits are always the publisher's, so leaving it out is normal for assets that belong to no game. | |
| video_id | Yes | Job id returned by generate_video. | |
| content_type | No | Desired content type, e.g. video/mp4 (optional). |
get_workshopGet Workshop settingsRead-onlyInspect
GET ONLY the 'Workshop' field of TitlePublicConfigurationModel. Workshop - the catalog of content made by PLAYERS (maps, levels, skins, models, any file the game defines) and by the publisher (official content), and the LICENSES to it. Nothing is transferred: acquiring grants a license to a digital copy, so one publication is acquired by many and the author keeps it (unlike Marketplace, which escrows and moves goods). ContentTypes is the game-specific part: each type id (e.g. 'voxelcraft.world') declares its file roles (AllowedMimeTypes, MaxBytes, MaxCount, Required; the engine checks the uploaded file's signature against the declared type), whether a thumbnail is required, which AccessModes authors may use, an optional per-type PricePolicy, a PublishGate (SegmentGate: who may publish), PublishFeeOptions (PriceOption, Standard part only, never store-paid), a TagVocabulary and per-player limits. An author gives access by ANY of several options: Free, Price (a ResourceBundle validated by PricePolicy; the buyer pays, the author receives it minus Commission, which is burned or credited to the MarketplaceLedger) or Holding (hold N of a currency/item - nothing is charged; Mode WhileHeld re-checks on every download, UnlockOnce checks once and grants a permanent license; HoldingPolicy whitelists usable resources). Moderation: BlockedTerms for titles/descriptions/tags, AutoHideReportThreshold (reports that hide a publication until reviewed), RequireApproval (pre-moderation). Featured lists publisher-curated collections with their own ScheduleSpec and SegmentGate. Publications, licenses, reactions and reports are NOT here - they are operational data in their own collections; files live in a private bucket configured by the engine's WORKSHOP_BUCKET_NAME env var.
| Name | Required | Description | Default |
|---|---|---|---|
| title_id | Yes | TitleID, для которого читаются данные. |
list_ai_tiersList AI tiersRead-onlyInspect
List the quality/price tiers available on this publisher's plan for every kind of media, and — for each tier — the settings its model accepts: field keys, allowed values, defaults and what they do. That list is the reference for the params argument of the generate_* tools. Read-only and free.
| Name | Required | Description | Default |
|---|---|---|---|
| title_id | No | Not needed — tiers depend on the publisher's plan (optional, ignored). |
list_buildsList buildsRead-onlyInspect
Recent versions of the Title's game, newest first — uploaded ones and ones built by the AI Coder — with which one players get now.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many versions to return (default 10, max 30). | |
| title_id | Yes | Live TitleID. |
list_kanban_membersList board membersRead-onlyInspect
Who can be assigned a card, watch it or be mentioned: the publisher and the teammates with kanban access. Returns ids and emails — use the id for set_kanban_assignee.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
list_kanban_projectsList board projectsRead-onlyInspect
List the publisher's task boards (projects) with their names and progress. Start here: every other kanban tool needs a project_id.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
list_my_titlesList my gamesRead-onlyInspect
List the games (Titles) this connection may work with: TitleID, name, publication status and the permissions granted on each — call it first when the user names a game or says "my game", then pass its TitleID as title_id to the other tools. A game's sandbox copy is a separate Title (DevTitleID) with its own permissions (DevAccess); an empty Access means the live game itself is not granted. Filter by name or id with "search"; long lists are paged (skip/limit, HasMore). Read-only; takes no title_id.
| Name | Required | Description | Default |
|---|---|---|---|
| skip | No | How many games to skip (paging). Default 0. | |
| limit | No | Page size, default 50, max 60. | |
| search | No | Optional substring of the game's name or TitleID. |
list_title_secretsList title secret namesRead-onlyInspect
List the NAMES of the title's integration variables and secrets, plus the outbound-HTTP allow list. Secret VALUES are never returned by any tool — reference a secret inside a CloudCode script as {{secret:NAME}} in a server.HttpRequest call and the platform substitutes it server-side. Use this to discover which credentials a title already has before writing an integration.
| Name | Required | Description | Default |
|---|---|---|---|
| title_id | Yes | TitleID, для которого читаются данные. |
move_kanban_cardMove task cardInspect
Move a card to another column (or to another position in the same one). Moving it into a done column also completes the task and awards its XP; moving it back out clears the completion mark. The reply says which happened.
| Name | Required | Description | Default |
|---|---|---|---|
| card_id | Yes | Card to move. | |
| to_index | No | Position inside that column, 0 = top (default 0). | |
| project_id | Yes | Board the card belongs to. | |
| to_column_id | Yes | Destination column. |
publish_cloud_codePublish CloudCodeDestructiveInspect
Publish server-side game logic (CloudCode) and make it live. This is the only way to run custom code on the server, and the only way to write protected data: the ReadOnly/Internal buckets of a player's UserCustomData and the Runtime scope of the title's data store. The script is plain JavaScript filling a global 'handlers' object, e.g. handlers.claimDailyBonus = function (args, context) { … }. Inside a handler: log.Info/Warning/Error, context.UserID, and server.* (ReadUserData, GetTitleConfig, GetUserCustomData, SetUserCustomData, DeleteUserCustomData, BatchSetUserCustomData, BatchDeleteUserCustomData, GetPublicUserCustomDataOf, GetTitleCustomData, SetTitleCustomData, IncrementTitleCustomData, DeleteTitleCustomData, BatchSetTitleCustomData, BatchDeleteTitleCustomData, GetIntegrationVariable, HttpRequest) — each returns { Success, Error, Data }. No async/await, no imports; 10 seconds wall-clock per call and a per-execution cap on server.* calls. The only way out to the network is server.HttpRequest({ Method, Url, Headers, Body }) — there is no fetch and no XMLHttpRequest; it reaches only publisher-allow-listed hosts over https, and credentials go in as {{secret:NAME}} placeholders (see list_title_secrets), never as literal values. The code REPLACES the previous revision entirely — read get_cloud_code first and send back the full script. Games call handlers through the SDK's client.cloudCode.execute(name, args).
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | Full JavaScript source of the revision. | |
| comment | No | Short note about what changed. | |
| handlers | No | Optional whitelist of callable handlers; anything not listed is rejected by the server. | |
| title_id | Yes | TitleID. |
remix_videoRemix videoInspect
Remix an existing video job with new instructions. Starts a new job — poll get_video. ASYNC: returns a job with an id and status — poll get_video for the result.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | What to change. | |
| title_id | No | Which game this is for — a label for the report, optional. Credits are always the publisher's, so leaving it out is normal for assets that belong to no game. | |
| video_id | Yes | Source job id to remix. |
reorder_kanban_columnsReorder board columnsInspect
Set the left-to-right order of the columns. Pass every column id of the board.
| Name | Required | Description | Default |
|---|---|---|---|
| column_ids | Yes | All column ids, in the order they should appear. | |
| project_id | Yes | Board to reorder. |
save_advertisingSave Advertising settingsDestructiveInspect
PARTIAL SAVE: writes ONLY the 'Advertising' field of TitlePublicConfigurationModel; all other v1/v2 fields stay untouched. Advertising — logical ad Placements (rewarded video, interstitial, banner, app-open), the mediation Providers that serve them (AppLovin MAX, LevelPlay, ...) with per-platform app IDs and ad unit IDs, per-format settings, frequency capping, premium ad-removal perks, GDPR/ATT consent policy, rewarded-video server-side verification (SSV) and the daily revenue import from the provider's Reporting API. Shared secrets (SSV keys, report keys) are NOT stored here — only the NAME of the TitleSecrets entry that holds them.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | Title-level advertising configuration: placements, SDK providers, per-format settings, frequency capping, premium ad reductions, consent and rewarded-video server-side verification. | |
| title_id | Yes | TitleID, для которого сохраняются данные. |
save_aiSave AI settingsDestructiveInspect
PARTIAL SAVE: writes ONLY the 'AI' field of TitlePublicConfigurationModel; all other v1/v2 fields stay untouched. InApp AI generation features of the title - what a PLAYER can generate at runtime through the engine (text/NPC chat, images, video, speech, music, 3D). Enabled is the master switch; Features maps a stable FeatureKey (no '.' or '$') to one feature: its Modality, a Model = the id of a MODE (Text: an AI Coder mode such as "standard") or a TIER (media: an asset generation tier such as "image-balanced") - list the usable ones, with what the publisher's plan allows, with the dashboard action GetInAppAIModels (Text features that AllowImages need a mode that AcceptsImages), Behavior defaults per modality (no platform caps: MaxTokens is bounded only by what the mode's model can produce), Safety prompt checks, an audience Gate (SegmentGate), a Schedule (ScheduleSpec), per-player Limits (LimitSpec) and the in-game PriceOptions the PLAYER pays (in-game resources and/or ONE store purchase per generation - a Purchase entry in the option's base price; never inside PremiumTiers, never two per option). Each generation is charged to the PUBLISHER's credits by the engine at the model's price; per-title spend caps (in credits) live in the PRIVATE config (InAppAIBudget), not here. Server-only section: never sent to the game client or the CDN.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | InApp AI generation features of the title. Bound to cfg.AI. A PLAYER triggers generation at runtime through the engine; models and prices come from the platform model registry, the provider is OpenRouter (3D: Meshy), keys are platform keys. Each generation is charged to the PUBLISHER's credits at the model's price in the same request; the player additionally pays per feature (PriceOptions: in-game resources and/or one store purchase). Server-only section: never projected to the client config or the CDN. | |
| title_id | Yes | TitleID, для которого сохраняются данные. |
save_analyticsSave Analytics settingsDestructiveInspect
PARTIAL SAVE: writes ONLY the 'Analytics' field of TitlePublicConfigurationModel; all other v1/v2 fields stay untouched. Custom events - Firebase Analytics parity. The game sends its own events (logEvent(name, params, value)); the engine stores them per player per UTC day and the dashboard reports counts, unique players, value sums and breakdowns by platform, app version, OS, device, language, country, new/returning and acquisition source; A/B experiment goals and custom funnel steps can use these events. Enabled is the master switch and defaults to OFF. EventNaming: "Open" (any valid name is accepted and joins the title's event catalog up to the PLAN limit) or "Declared" (only names listed in Events). Events maps an event name (^[A-Za-z][A-Za-z0-9_]{0,39}$; prefixes idos_/firebase_/google_/ga_ are reserved, except the automatic idos_* events) to a display name, description and a Blocked flag. Dimensions registers event parameters as reporting dimensions (like GA4 custom dimensions) - the count is capped by the plan; unregistered parameters are accepted but not stored. RetentionDays is how long per-player event data is kept (default 90, capped by the plan); daily title summaries are kept forever. AutomaticEvents (default on) accepts the SDK's automatic events: idos_first_open, idos_session_start, idos_app_update, idos_os_update, idos_screen_view.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | Custom events (Firebase Analytics parity). Everything here is chosen by the publisher within their plan's analytics limits. Absent section or Enabled != true = events are not stored and cost no database access. | |
| title_id | Yes | TitleID, для которого сохраняются данные. |
save_asset_bundleSave Asset Bundle settingsDestructiveInspect
PARTIAL SAVE: writes ONLY the 'AssetBundle' field of TitlePublicConfigurationModel; all other v1/v2 fields stay untouched. Dictionary<string,string> of named bundle/manifest URLs (Unity AssetBundles, Addressables manifests, etc.). Key is a logical bundle slug, value is its CDN URL. Use this for binary game content; for images alone use ImageData.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | New value for the AssetBundle field. | |
| title_id | Yes | TitleID, для которого сохраняются данные. |
save_attributionSave Attribution settingsDestructiveInspect
PARTIAL SAVE: writes ONLY the 'Attribution' field of TitlePublicConfigurationModel; all other v1/v2 fields stay untouched. Acquisition attribution — how the engine records WHERE a player came from. The signal (utm_source/medium/campaign/term/content, the ad network's click id, the referrer, the invite code) arrives with the login request and is stored as a chain of touch points on the player: the first touch is immutable, the last touch tracks win-backs, and the chain in between feeds multi-touch models. This section only tunes that recording: how many touches to keep, how long after a touch an identical signal is still considered the same click rather than a new one, and optional aliases that normalise messy source/medium values into canonical ones for analytics. Referral invites are recorded through this same mechanism as a channel, so they show up in the acquisition reports alongside paid traffic.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | New value for the Attribution field. | |
| title_id | Yes | TitleID, для которого сохраняются данные. |
save_authenticationSave Authentication settingsDestructiveInspect
PARTIAL SAVE: writes ONLY the 'Authentication' field of TitlePublicConfigurationModel; all other v1/v2 fields stay untouched. Authentication — which third-party sign-in methods the title offers and the public OAuth client IDs each platform build needs (currently Google: Web / Android / iOS / Desktop client IDs). Contains NO secrets: OAuth client IDs are public by protocol design, and none of the sign-in flows uses a client secret. Device / e-mail / Telegram / SSO logins need no configuration and are absent from this section. The ID-token audience differs per platform (web and Android tokens carry the Web client ID, iOS tokens the iOS client ID), so several IDs are filled at once and the server accepts any of them.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | Title-level authentication settings: which third-party sign-in methods the title offers and the public OAuth client IDs each platform build needs. Contains NO secrets - OAuth client IDs are public by protocol design. Device / e-mail / Telegram / SSO logins need no configuration and are not listed here. | |
| title_id | Yes | TitleID, для которого сохраняются данные. |
save_banSave Ban settingsDestructiveInspect
PARTIAL SAVE: writes ONLY the 'Ban' field of TitlePublicConfigurationModel; all other v1/v2 fields stay untouched. Ban levels and the level ban gates apply to a player. The publisher defines any number of named levels (e.g. "low"/"medium"/"hard") — each with capability checkboxes (BanCapability: block withdrawals, deposits, leaderboards, trading, PvP, chat, social, coop, referral, push, community marketing, crypto convert, purchases) plus an optional BlockLogin flag that shuts the player out of the game entirely and overrides everything else on that level. DefaultLevelID is the level a manual ban applies when the caller does not pick one. Two built-in ids always work even when not listed here: "hard" (blocks login) and "soft" (synthesized from the legacy Soft section below). Use PLAYER-facing tools (SetPlayerBanStatus) to actually ban a player with a level ID from here — this section only defines what each level MEANS.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | New value for the Ban field. | |
| title_id | Yes | TitleID, для которого сохраняются данные. |
save_blockchainSave Blockchain settingsDestructiveInspect
PARTIAL SAVE: writes ONLY the 'Blockchain' field of TitlePublicConfigurationModel; all other v1/v2 fields stay untouched. On-chain integration config — chain selectors, smart contract addresses, RPC overrides, gas policy, supported networks for Crypto currencies. Built largely from Currency.CryptoCurrencies[].Networks; this is the title-level companion config.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | V2 definition of the title's blockchain integration. Contains only public data safe for clients (chain IDs, contracts, feature switches, safety policies). Private data lives in TitlePrivateConfiguration. | |
| title_id | Yes | TitleID, для которого сохраняются данные. |
save_characterSave Character settingsDestructiveInspect
PARTIAL SAVE: writes ONLY the 'Character' field of TitlePublicConfigurationModel; all other v1/v2 fields stay untouched. Character/hero catalogue — playable units, NPCs, summons. Defines stats, abilities, evolution/level-up paths, art/asset references. Distinct from Item (generic inventory) — characters typically have progression and abilities. Skins (alternative looks) live per character in Skins.Definitions, and each skin IS a non-stackable, non-expiring Item from the Item section (Skins.Definitions..Item) — create that item first; any system that grants items (Store offers, lootboxes, season, quests, rewards) then grants the skin, and Item.Stats, if set, count toward Power like gear.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | Configuration of the title's character system: the character catalog. Each entry in Definitions is self-contained (own stats, levels, equipment rules). | |
| title_id | Yes | TitleID, для которого сохраняются данные. |
save_chatSave Chat settingsDestructiveInspect
PARTIAL SAVE: writes ONLY the 'Chat' field of TitlePublicConfigurationModel; all other v1/v2 fields stay untouched. Player chat - the catalog of persistent CHANNELS the title offers (world / announcement / group), plus direct-message settings, moderation rules and polling economics. A channel declares who SEES it (SegmentGate + ScheduleSpec) and who may WRITE to it (a second gate plus LimitSpec anti-spam: slow mode, daily cap); an announcement channel is simply one nobody passes the write gate of. A channel may be PARTITIONED by the player's language or country and sharded by capacity - the partition key is computed by the SERVER (language is validated against this title's Localization locales, country comes from IP), so the set of rooms is bounded by config and never by client input. Type=Group is the extension point for clans: membership comes from an external provider named in GroupSource, and no provider exists yet, so such a channel is currently hidden rather than shown empty. Messages themselves are NOT here - they live in the ChatMessages collection and expire by Retention.HistoryHours; only the hot tail is cached in Redis. Muting a player and reviewing reports are admin actions, not config.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | Configuration of the title's player chat: the catalog of persistent channels (world/announcement/group), direct-message settings, moderation rules and polling economics. Channels are addressed by ChannelID; a channel may be partitioned by the player's language or country and sharded by capacity, and the partition key is computed by the SERVER, never sent by the client. Messages themselves are not here - they live in the ChatMessages collection. | |
| title_id | Yes | TitleID, для которого сохраняются данные. |
save_cloud_codeSave Cloud Code settingsDestructiveInspect
PARTIAL SAVE: writes ONLY the 'CloudCode' field of TitlePublicConfigurationModel; all other v1/v2 fields stay untouched. Server-side scripting (CloudCode): the active JavaScript revision the title runs, plus execution policy — engine limits, rate limits, per-handler metadata, whether logs/stack traces are revealed to clients. Scripts are the ONLY way to write protected player data (UserCustomData ReadOnly/Internal buckets) and mutable title data (TitleCustomData Runtime scope). Prefer the dedicated cloud-code tools over editing this section by hand: they compute the code hash, bump the revision number and archive the previous one.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | New value for the CloudCode field. | |
| title_id | Yes | TitleID, для которого сохраняются данные. |
save_collectionSave Collection settingsDestructiveInspect
PARTIAL SAVE: writes ONLY the 'Collection' field of TitlePublicConfigurationModel; all other v1/v2 fields stay untouched. Collection / album / codex definitions — sets of items, cards, characters or achievements players collect. Defines what counts as the collection, completion rewards, and tier/rarity grouping. Use for compendium-style meta content.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | Root collection-system config for the title. Add to TitlePublicConfigurationModel as: public CollectionDefinitions Collection { get; set; } | |
| title_id | Yes | TitleID, для которого сохраняются данные. |
save_community_marketingSave Community Marketing settingsDestructiveInspect
PARTIAL SAVE: writes ONLY the 'CommunityMarketing' field of TitlePublicConfigurationModel; all other v1/v2 fields stay untouched. Community Marketing - the program that rewards community members for posting about the game on external social platforms (YouTube/TikTok/Instagram). A campaign declares WHO may take part (Participation + SegmentGate), WHEN it runs (ScheduleSpec), WHICH platforms count and at what weight, WHAT the post must contain (hashtags, mention, the creator verification code), and HOW it pays: RateCards give a linear rate per metric (e.g. 60 GOLD per 1000 views, optionally multiplied by a per-submission moderator coefficient), while Milestones give threshold rewards using the shared platform milestone primitive. Spending is bounded by a campaign Budget plus per-submission, per-creator and per-team Caps - all evaluated against what has been PAID, never what has been earned. Providers says where the view/like/comment/share numbers come from per platform (the title's own API key or aggregator key, addressed BY NAME in TitleSecrets - never the value itself), Moderation says what a human reviews, and AntiFraud sets the hold period before earnings mature plus the anomaly thresholds that freeze a suspicious submission. Creators, submissions, metric snapshots, accruals and the payout journal are NOT here - they are operational data in their own collections. The Community Marketing pool bucket is funded by a fee on player crypto withdrawals, configured in the Currency section (CryptoCurrencyDefinition.CommunityMarketingWithdrawalFeePercent), not here.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | Configuration of the title's Community Marketing program: campaigns that reward community members for posting about the game on external social platforms (YouTube/TikTok/Instagram), the payout rules (per-metric rate cards and milestone thresholds), budgets and caps, the moderation policy, the anti-fraud policy and where the view/like/comment/share numbers are pulled from. Submissions, metric snapshots, accruals and the payout journal are NOT here - they are operational data in their own collections. The Community Marketing pool is funded by a fee on player crypto withdrawals, configured in the Currency section (CryptoCurrencyDefinition.CommunityMarketingWithdrawalFeePercent), not here. | |
| title_id | Yes | TitleID, для которого сохраняются данные. |
save_coop_eventSave Coop Event settingsDestructiveInspect
PARTIAL SAVE: writes ONLY the 'CoopEvent' field of TitlePublicConfigurationModel; all other v1/v2 fields stay untouched. Cooperative multi-player events — guild raids, server-wide goals, leaderboard tournaments where players contribute together. Distinct from TimedEvent (solo) and Leaderboard (pure ranking). Defines participation rules, shared progress, contribution tracking, and tiered rewards based on collective performance.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | Root configuration of the title's cooperative events system. Plugs into TitlePublicConfigurationModel as CoopEvent. | |
| title_id | Yes | TitleID, для которого сохраняются данные. |
save_craftSave Craft settingsDestructiveInspect
PARTIAL SAVE: writes ONLY the 'Craft' field of TitlePublicConfigurationModel; all other v1/v2 fields stay untouched. Crafting / recipe system — input resources, output item, success rate, time cost, station/skill prerequisites. Item IDs in inputs/outputs reference the Item catalogue; currency costs reference Currency.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | New value for the Craft field. | |
| title_id | Yes | TitleID, для которого сохраняются данные. |
save_currencySave Currency settingsDestructiveInspect
PARTIAL SAVE: writes ONLY the 'Currency' field of TitlePublicConfigurationModel; all other v1/v2 fields stay untouched. Currency catalogue: VirtualCurrencies (Gold, Gems, Energy, etc.) AND CryptoCurrencies (on-chain tokens). Defines IDs, economy (USD value, balance limits), recharge rules for energy-like currencies, conversion rules, and per-currency permissions. The CurrencyID of each entry is referenced by Item prices, Store SKUs, Reward payouts, Quest rewards, Lootbox loot, etc. NOTE: the "Main" CryptoCurrency entry is protected and cannot be overwritten — your changes to that key will be silently ignored.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | New value for the Currency field. | |
| title_id | Yes | TitleID, для которого сохраняются данные. |
save_data_collectionsSave Data Collections settingsDestructiveInspect
PARTIAL SAVE: writes ONLY the 'DataCollections' field of TitlePublicConfigurationModel; all other v1/v2 fields stay untouched. Data collections - the creator's own data structures, a Firebase/Supabase-like store inside the platform for games, apps and sites. USE A READY PLATFORM MODULE FIRST (currencies, items, store, lootboxes, quests, leaderboards, chat, social, workshop, match, season, tutorial, localization, push, analytics); declare a collection only for what no module provides (guilds, auctions, orders, catalogs, articles, saved levels, feeds, mail) or for extra data attached to module entities. NEVER store currencies or items inside a record: reference them with a Ref field (Kind Item/Currency/User/…) and move value with Economy (Cost/Grant in engine resource format, charged in the same transaction as the write). Collections maps a collection id (letters, digits, '_', '-', ':' up to 64; a front-end module prefixes its namespace, e.g. 'guild-system:guilds') to: Kind (UserOwned: each record belongs to one user; Shared: records used by many users; Temporary: short-lived, mandatory TTL up to 30 days; Log: append-only, read by time); Mode (Strict = only declared fields); Fields (String, Text = searchable by words, Int, Number, Bool, Date, Json, Array with ItemType, Ref with Ref.Kind, File) with Required/Default (JSON literal)/Min/Max/MaxLength/MaxItems/Enum/Unique/Indexed/Visibility (Everyone/Owner/Server)/ClientWritable=false for server-only fields/Immutable; SortKeys (id + 1..4 components, each a scalar field or createdAt/updatedAt, optionally Descending) - every ordered query uses one, and equality filters on its leading components narrow the range; Access with Read/Create/Update/Delete lists of rules OR-ed together (Anyone - Read only, Authenticated, Owner, Members with MembersField = an Array of Ref(User), Role with a role id from Roles, Server); Limits (MaxItemBytes, MaxItemsPerOwner, TtlSeconds); OnOwnerDeleted (Delete/Anonymize/Keep); Counters (Count or Sum, optional GroupBy - maintained atomically, not allowed for expiring records); Integrations (QuestMetricOnCreate/Update/Delete advance quest objectives with Source ServerApi, AnalyticsEventOn*, TriggerOn* run a CloudCode handler asynchronously); Moderation.BlockedTerms; WriteGate (SegmentGate); PublicViews (published to the CDN for anonymous/site reads: SortKey, optional PartitionField, PageSize, MaxItems, PublishItems) and AnonymousSearch. Queries from a game may filter ONLY by Indexed fields and sort ONLY by declared SortKeys - there are no table scans on the shared cluster. Roles lists title user roles; they are assigned only by CloudCode (server.SetUserRoles) and the dashboard. The count of collections, searchable fields, sort keys, record size and storage are capped by the plan. Records themselves are NOT here - they live in the engine's DataCollection* collections; CloudCode reads and writes them with server.GetDataItem/QueryDataItems/CreateDataItem/UpdateDataItem/DeleteDataItem/BatchDataItems/GetDataCounter.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | Title data collections: a Firebase/Supabase-like store inside the platform. The creator declares structures (collections) with typed fields, searchable fields, sort keys, access rules and limits; the platform enforces tenant isolation, access, indexes, limits, deletion and billing. Use a ready platform module first (currency, items, store, quests, leaderboards, chat, workshop…); use collections only for what no module provides, or for extra data attached to module entities. Never store currencies/items in a collection — reference them and move value through the engine economy (Cost/Grant). | |
| title_id | Yes | TitleID, для которого сохраняются данные. |
save_deal_offerSave Deal Offer settingsDestructiveInspect
PARTIAL SAVE: writes ONLY the 'DealOffer' field of TitlePublicConfigurationModel; all other v1/v2 fields stay untouched. Limited-time offers WITH PROGRESSION — starter packs, comeback bundles, aquarium-style chains, pick-one-of-N. Two axes: a SLOT is a UI position that cycles through its own ordered Queue of offers (its Availability.Schedule decides how: Chained advances per player, Scheduled/Cyclic/AlwaysOn follow the wall clock, Triggered fires on an event), and an OFFER is a graph of nodes. There is no declared graph mode: the shape (single, chain, branching, choice, metered) is whatever Graph.RootNodeIDs, node NextNodeIDs, ChoiceGroupID and UnlockRules describe. Every node declares its own price as a PriceOptions dictionary — resources, crypto, a store product (real money), an AD CREDIT (that is how "watch a video" is expressed; only the server grants credits) or nothing at all, which means free. A node pays out Reward.Grants, moves offer-local Tracks and adds Reward.MilestonePoints to the offer milestone bar. Slots, offers and nodes are decomposed into named blocks (Identity, Availability, Behaviour, Graph, Milestones, Pricing, Reward), each with its own independent preset binding into DealOffer.Presets. Distinct from Store (always-on shop, no progression) and Premium (ongoing paid subscriptions).
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | Root config of the entire Deal Offers system. Contains the slot list, the offer library and the preset registry. | |
| title_id | Yes | TitleID, для которого сохраняются данные. |
save_experimentSave Experiment settingsDestructiveInspect
PARTIAL SAVE: writes ONLY the 'Experiment' field of TitlePublicConfigurationModel; all other v1/v2 fields stay untouched. A/B experiments — variant definitions with weighted allocation, audience gate (SegmentGate) and schedule (ScheduleSpec). Players are assigned to a variant by a stable hash; variant Params carry inline config overrides. Used to test config changes against measurable cohorts.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | Root block of the A/B experiment system. An experiment = who (Gate: SegmentGate) + when (Schedule: ScheduleSpec) + a random sticky split into variants. Variant assignment is deterministic by a STABLE hash (ExperimentAssigner), NOT SecureRandom, so it is reproducible and stable across sessions. Consumed as a SegmentGate.Experiment condition, so A/B works in every module already using SegmentGate. | |
| title_id | Yes | TitleID, для которого сохраняются данные. |
save_feature_trackingSave Feature Tracking settingsDestructiveInspect
PARTIAL SAVE: writes ONLY the 'FeatureTracking' field of TitlePublicConfigurationModel; all other v1/v2 fields stay untouched. Feature tracking — which CONCRETE actions are recorded as their own line in the player's FeatureUsage, on top of the default per-module tracking. Entries look like "Character:EquipItems" (module name from the route + the module's action name). Purely an analytics setting: it makes those actions selectable as steps in custom funnels (Analytics → Funnels). Tracking starts when an action is added — there is no data for the past, because the action was not recorded then. Capped at 40 entries: every tracked id becomes a key in the player document, which is read on every request.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | New value for the FeatureTracking field. | |
| title_id | Yes | TitleID, для которого сохраняются данные. |
save_game_loopSave Game Loop settingsDestructiveInspect
PARTIAL SAVE: writes ONLY the 'GameLoop' field of TitlePublicConfigurationModel; all other v1/v2 fields stay untouched. Core gameplay loop configuration — match settings, level pacing, difficulty curves, energy/cooldown gates, retry/continue economy. Use for tuning the moment-to-moment gameplay; not for content (use Item, Character, Collection) and not for meta-progression (use Season).
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | Root config of the Core Loop system in TitlePublicConfigurationModel.GameLoop. Holds the nested board configuration. | |
| title_id | Yes | TitleID, для которого сохраняются данные. |
save_image_dataSave Image Data settingsDestructiveInspect
PARTIAL SAVE: writes ONLY the 'ImageData' field of TitlePublicConfigurationModel; all other v1/v2 fields stay untouched. Dictionary<string,string> of arbitrary named image asset URLs/paths for the Title — splash screens, banners, icons, loading screens, marketing art. Key is a project-defined slug (e.g. "main_banner", "login_bg"), value is a URL or storage path. For per-currency icons use Currency.VirtualCurrencies[].AssetPaths; for per-item icons use Item; for character art use Character.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | New value for the ImageData field. | |
| title_id | Yes | TitleID, для которого сохраняются данные. |
save_itemSave Item settingsDestructiveInspect
PARTIAL SAVE: writes ONLY the 'Item' field of TitlePublicConfigurationModel; all other v1/v2 fields stay untouched. Item catalogue — every consumable, equipment piece, resource, gear or generic inventory entity the player can own. Defines item IDs, names, categories, stack rules, rarities. Referenced by Store SKUs (as contents), Lootbox loot tables, Quest rewards, Craft recipes, and Reward payouts. For premium-tier bundles use Premium; for character entities use Character.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | Root container for all item catalogs of a title. Source of truth for every ItemID used in the game. | |
| title_id | Yes | TitleID, для которого сохраняются данные. |
save_leaderboardSave Leaderboard settingsDestructiveInspect
PARTIAL SAVE: writes ONLY the 'Leaderboard' field of TitlePublicConfigurationModel; all other v1/v2 fields stay untouched. Leaderboard definitions — name, ranking metric (score type), reset cadence (daily/weekly/seasonal/perpetual), tier-based rewards, eligibility rules. Use for pure player-vs-player ranking. For collaborative team goals use CoopEvent.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | New value for the Leaderboard field. | |
| title_id | Yes | TitleID, для которого сохраняются данные. |
save_localizationSave Localization settingsDestructiveInspect
PARTIAL SAVE: writes ONLY the 'Localization' field of TitlePublicConfigurationModel; all other v1/v2 fields stay untouched. Localization SETTINGS — which locales the title offers, which one is the default (and therefore the fallback), what to render for a missing key, and the store limits. The translation TABLES are deliberately NOT here: they live in the separate TitleLocalization collection (one document per title+locale) and are delivered one file per locale, because text changes far more often than balance and must not invalidate the whole title config. Client resolution is t(x) = own table -> fallback table -> x itself, which is why a title whose DisplayName fields hold literal names keeps working unchanged: a literal is simply a key with no translation. Add or edit translations through the Localization endpoints, not through this section.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | Localization settings of the title. The translation TABLES are not stored here: they live in the separate TitleLocalization collection (one document per title+locale) and are delivered one file per locale. This section only declares which locales exist, which one is the fallback, and the store limits. | |
| title_id | Yes | TitleID, для которого сохраняются данные. |
save_localization_keysSave localization keysDestructiveInspect
Create or update localization keys in the title's DEFAULT language. PARTIAL: only the keys you send are written, the rest of the table is untouched — people translate the same table, and replacing it wholesale would erase their work. Write ONLY the default language: other locales are filled by translators or by the dashboard's machine translation, and a string that exists only in a target language never appears in the coverage report. Keys are free-form; a dotted namespace ("shop.button.buy") keeps a large table readable.
| Name | Required | Description | Default |
|---|---|---|---|
| keys | Yes | Object of localization key → text in the DEFAULT language. Only these keys are written. | |
| title_id | Yes | TitleID. |
save_lootboxSave Lootbox settingsDestructiveInspect
PARTIAL SAVE: writes ONLY the 'Lootbox' field of TitlePublicConfigurationModel; all other v1/v2 fields stay untouched. Lootbox / gacha definitions — loot tables with weighted entries, pity systems, guaranteed rares, currency to open. Each entry references Item or Currency IDs. For straight (non-random) reward bundles use Reward.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | New value for the Lootbox field. | |
| title_id | Yes | TitleID, для которого сохраняются данные. |
save_mailboxSave Mailbox settingsDestructiveInspect
PARTIAL SAVE: writes ONLY the 'Mailbox' field of TitlePublicConfigurationModel; all other v1/v2 fields stay untouched. Mailbox - an in-game mailbox that holds VALUE the player claims (not notifications - those are Push). Enabled is the master switch, default OFF. Capacity (default 100) caps visible letters; on overflow the oldest letters WITHOUT unclaimed rewards are removed. RewardLetterDays (30) / PlainLetterDays (14) are letter lifetimes (an unclaimed reward is lost when it expires), ClaimedRetentionDays (7) keeps claimed letters visible. DefaultLanguage (en) is the text fallback. Templates maps a TemplateID to per-language Texts {Subject, Body with {Param} placeholders}, Category (System/Reward/Gift/Social tab), Icon, Banner, Link {FeatureID+Args to open a game screen, or an https Url}, SenderName, ExpirationDays; keys 'system.*' override built-in letters of modules (system.gift, system.transfer, system.transfer_return, system.leaderboard_reward, system.coop_grand_prize, system.coop_object_reward, system.season_unclaimed, system.referral_reward). Gifts.Social maps a GiftID to a friend gift (Grant of items/virtual currencies minted on claim; optional Cost the sender pays per friend, burned; one per friend per period; the period is IntervalSeconds (default 86400) counted from AnchorUtc (default 2026-01-01 00:00 UTC) like fixed-interval cycles of other systems; SendLimit/ReceiveLimit per period, default 20; SenderGate). Gifts.Transfer lets friends send their OWN resources: AllowedResources whitelist (VirtualCurrency or STACKABLE items; MaxAmountPerGift is a CAP - any amount from 1 up to it, entries separately or together), MaxEntriesPerGift (5), IntervalSeconds/AnchorUtc (same period model), SendLimit/ReceiveLimit per period (5), FeePercent (0-90, withheld from what the friend receives, the fee per entry rounds up) and FeeCost (fixed fee on top); both burn only when the friend claims - a declined or expired transfer returns everything charged, MinFriendshipHours (24, against alt-account funnelling), ExpirationDays (7, then returned to the sender). Integrations {Leaderboard, CoopEvent, Season, Referral} (empty = on) bring unclaimed rewards of those modules to the mailbox. Letters and broadcasts themselves are NOT config: they are sent from the dashboard (player letters, segment broadcasts with a SegmentGate and a schedule) or by CloudCode server.SendMail; letters with rewards require the player-admin plan right.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | Title mailbox: letters with rewards, publisher broadcasts, friend gifts and unclaimed rewards of other modules. An in-game mailbox that holds VALUE the player claims — not notifications (those are Push) and not the social activity inbox. | |
| title_id | Yes | TitleID, для которого сохраняются данные. |
save_marketplaceSave Marketplace settingsDestructiveInspect
PARTIAL SAVE: writes ONLY the 'Marketplace' field of TitlePublicConfigurationModel; all other v1/v2 fields stay untouched. Player-to-player marketplace (v2) — fixed-price listings (price = ResourceBundle), auctions (single-axis bids), buy orders (escrowed payment), and direct trades/gifts. Configures the audience gate, open-window schedule, price composition policy (reusing the same EntryResourceRule whitelist as Match), commission policy (percent/min, burn or ledger sink, per-goods-catalog overrides), item tradability lists, and per-mechanic settings/limits. Distinct from Store (title-sold SKUs) and DealOffer (promotions): here players trade with each other. Everything offered is escrowed at creation; commission is taken at settlement.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | Title marketplace (v2) configuration. P2P trading on the atomic ResourceService stack: fixed-price listings (price = ResourceBundle), auctions (single-axis bids), buy orders (escrowed payment), direct trades/gifts. Everything offered is escrowed into the offer document at creation. Commission is taken at settlement (burned or credited to the title ledger). Escrow/refund claims are never gated by Gate/Schedule. | |
| title_id | Yes | TitleID, для которого сохраняются данные. |
save_matchSave Match settingsDestructiveInspect
PARTIAL SAVE: writes ONLY the 'Match' field of TitlePublicConfigurationModel; all other v1/v2 fields stay untouched. PvP / match system configuration, grouped by battle mode under InstantBattle. Holds the instant-battle rule catalogue (keyed by RuleID) plus title-wide defaults. Each rule defines wager economy (prize-pool burn) and battle settings: a combat-role → StatID mapping (which Character stat drives HP/Damage/Armor/AttackSpeed/CritChance/CritDamage/Dodge/AllMight), combat params (max rounds, block effect, crit/dodge clamps) and optional per-stat custom formulas. Stat/formula fields reference Character.Stats StatIDs; equipment bonuses (Item) key off the same StatIDs.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | Configuration of the title's PvP (Match) system. Grouped by battle mode: InstantBattle is the instant-battle container (rule catalog + title-wide defaults). Future match modes (tournament, async turn-based) are added here as sibling containers. Fully optional — absent config falls back to engine defaults (InstantBattle1v1 rule + DefaultData stat mapping), preserving legacy behavior. | |
| title_id | Yes | TitleID, для которого сохраняются данные. |
save_multiplayerSave Multiplayer settingsDestructiveInspect
PARTIAL SAVE: writes ONLY the 'Multiplayer' field of TitlePublicConfigurationModel; all other v1/v2 fields stay untouched. Realtime multiplayer (WebRTC peer-to-peer) - the engine is only the signaling server: it creates rooms, relays WebRTC offer/answer/ICE between room members and optionally relays lobby chat; game traffic then flows directly between players' browsers and never touches the server. The section is ABSENT by default, which means multiplayer is DISABLED: add it (SystemState.Enabled = true) to turn the Multiplayer module on. DefaultTopology: Mesh (everyone connects to everyone, 2-4 players) or Host (star: every player connects to the host, which runs the authoritative game simulation - required by host-authoritative games such as VoxelCraft). MaxPlayersPerRoom is a hard cap (default 8). MemberTimeoutMs is also how long a silent host keeps the host role before another member may take it over. IceServers are PUBLIC: list only STUN servers there; short-lived TURN credentials are issued by the engine to room members on create/join.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | V2 definition of the title's realtime multiplayer (WebRTC signaling). Public-only data: feature switch, topology/chat defaults, limits, ICE servers. | |
| title_id | Yes | TitleID, для которого сохраняются данные. |
save_platform_bridgeSave Platform Bridge settingsDestructiveInspect
PARTIAL SAVE: writes ONLY the 'PlatformBridge' field of TitlePublicConfigurationModel; all other v1/v2 fields stay untouched. Platform bridge - what the game takes from the player's idosgames.com account and what it lets players show on their public profile. Profile: Off / Default (unset: the platform name and avatar until the player renames themselves in the game) / Always (every platform login overwrites them). Friends: TitleOnly (unset) / TitleAndPlatform (plus mutual follows on idosgames.com whose both sides play this game) / PlatformOnly (only those; in-game friend requests are refused) - applies to EVERY friends-based system: friends list and leaderboard, gifts, attack targets, friends-only Workshop items, recommendations. Notifications: which in-game notifications (Attack, Raid, FriendAdded, WorkshopSale) also reach the idosgames.com notification bell; empty = none. Guests never get platform data; the economy never crosses the bridge; turning the bridge off deletes nothing.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | Platform bridge: what the game takes from the player's idosgames.com account and what it lets the player show on their public profile. Everything is off by default except the profile. What the PLAYER shares about themselves on the platform (the Played and Workshop tabs of their profile) is not the publisher's decision and is not configured here. Guests (no platform account) never get platform data. The economy never crosses the bridge. | |
| title_id | Yes | TitleID, для которого сохраняются данные. |
save_purchaseSave Purchase settingsDestructiveInspect
PARTIAL SAVE: writes ONLY the 'Purchase' field of TitlePublicConfigurationModel; all other v1/v2 fields stay untouched. Real-money in-app purchases (IAP) for Google Play and the Apple App Store. Product catalogue with per-store SKUs (StoreProductIDs), what each purchase grants (Rewards), subscription products that activate a Premium entitlement, audience gates and purchase limits, plus per-store receipt-verification settings. Distinct from Store (in-game shop paid with virtual currency) and from Premium (which describes the entitlement itself, while this describes how it is sold in the stores). Contains NO secrets: the Google service-account JSON and the App Store Server API key are referenced by TitleSecrets entry name only; the Play licensing public key and Apple root certificates are public by nature and live here.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | Real-money in-app purchase (IAP) configuration for Google Play and Apple App Store. Product catalog (what the player buys and receives) is separated from per-store settings (how a receipt is verified). One product can be sold in both stores under different SKUs via StoreProductIDs. | |
| title_id | Yes | TitleID, для которого сохраняются данные. |
save_pushSave Push settingsDestructiveInspect
PARTIAL SAVE: writes ONLY the 'Push' field of TitlePublicConfigurationModel; all other v1/v2 fields stay untouched. Push notifications - the title's settings for messages delivered to a player who is NOT in the game right now (Web Push in the browser, FCM/APNs on mobile). IsEnabled is the master switch and defaults to DISABLED: notifications spend a real person's attention and require their browser permission, so a title opts in explicitly. MaxSendsPerUserPerDay caps how many a single player receives; MaxSendsPerTitlePerDay caps the title as a whole and is the ONLY ceiling on a broadcast that exists anywhere - the publisher API quota does not see sends at all, because they run in a queue worker rather than in a request pipeline. QuietHoursStart/End suppress sends during the night in the SUBSCRIPTION's locale (the window may cross midnight); waking a person at 3am is the fastest way to lose the browser permission permanently. Mobile holds only the NAMES of TitleSecrets entries for the publisher's Firebase service account and APNs .p8 key, never the credentials. VAPID keys are NOT here and never will be - they are platform-wide environment variables shared by both backends. Subscriptions themselves are not config either: they live in the shared PushEndpoints/PushBindings collections, one row per browser or device plus one row per topic it follows.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | Push notification settings for the title: the master switch, per-player and per-title send ceilings, quiet hours, and the NAMES of the publisher's mobile credentials in TitleSecrets. VAPID keys are NOT here - they are platform-wide environment variables. Subscriptions themselves live in the shared PushEndpoints/PushBindings collections, not in the config. | |
| title_id | Yes | TitleID, для которого сохраняются данные. |
save_questSave Quest settingsDestructiveInspect
PARTIAL SAVE: writes ONLY the 'Quest' field of TitlePublicConfigurationModel; all other v1/v2 fields stay untouched. Quest / mission / objective definitions — single tasks the player completes for a reward. Includes trigger conditions, progress counters, completion criteria, reward references (use Reward). For grouped quest chains use Season or TimedEvent.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | Root block of the quest system in the title config. | |
| title_id | Yes | TitleID, для которого сохраняются данные. |
save_referralSave Referral settingsDestructiveInspect
PARTIAL SAVE: writes ONLY the 'Referral' field of TitlePublicConfigurationModel; all other v1/v2 fields stay untouched. Referral / invite system configuration — invite codes, attribution rules, milestones (e.g. invite N friends → reward), per-side rewards (inviter + invitee). Reward bundles reference Reward.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | Title's referral system configuration. Stored in TitlePublicConfigurationModel.ReferralDefinitions. | |
| title_id | Yes | TitleID, для которого сохраняются данные. |
save_rewardSave Reward settingsDestructiveInspect
PARTIAL SAVE: writes ONLY the 'Reward' field of TitlePublicConfigurationModel; all other v1/v2 fields stay untouched. Reward templates — reusable bundles of currency + items + buffs that can be granted to a player. Referenced by Quest, TimedEvent, CoopEvent, Season, DailyLogin, Referral, etc. Define a reward once here, then reference it everywhere instead of inlining payouts.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | Root config for universal, system-agnostic rewards. Umbrella over four independent subsystems: DailyCalendars, IdleAccruals, Comebacks, Claims. | |
| title_id | Yes | TitleID, для которого сохраняются данные. |
save_seasonSave Season settingsDestructiveInspect
PARTIAL SAVE: writes ONLY the 'Season' field of TitlePublicConfigurationModel; all other v1/v2 fields stay untouched. Long-form seasonal progression — battle passes, chapters, ladders. Defines a season's start/end window, XP/progress curve, tier rewards (free + premium tracks), and the Premium pass that unlocks paid rewards. For short events use TimedEvent.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | Root configuration of the title's season system. | |
| title_id | Yes | TitleID, для которого сохраняются данные. |
save_socialSave Social settingsDestructiveInspect
PARTIAL SAVE: writes ONLY the 'Social' field of TitlePublicConfigurationModel; all other v1/v2 fields stay untouched. In-game social layer - comments, following other players and reports, on top of the engine's shared social core (the same collections the platform's own social network uses, scoped to this title). Comments are OFF by default (CommentsEnabled): they are public text written by players, so turn them on only once you are ready to moderate them; CommentableTypes limits which objects accept comments (today only Workshop items). CommentMaxLength / CommentMaxLinks / CommentsPerDay, MaxFollowing / FollowsPerDay and ReportsPerDay are anti-spam ceilings; unset fields mean the platform defaults. Friends and the player's notification inbox (attacks, raids, new friend, Workshop sales and likes) need no configuration and are not here. Likes, favorites, follows, comments and reports themselves are NOT here - they are operational data in the shared Social* collections; reviewing reports and hiding comments are admin actions, not config.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | In-game social layer: comments, following players, reports. Friends and the player's notification inbox work without this section. Every field is optional; an unset field means the platform default. | |
| title_id | Yes | TitleID, для которого сохраняются данные. |
save_storeSave Store settingsDestructiveInspect
PARTIAL SAVE: writes ONLY the 'Store' field of TitlePublicConfigurationModel; all other v1/v2 fields stay untouched. In-game shop, built as a tree: Stores -> Layout.Sections -> Slots, plus a flat StoreOffers catalogue. A SLOT is the only address a product can be bought through, and it decides what stands in it: Rotation.Mode is Fixed (a pinned product - an ordinary shelf), Title (everyone sees the same roll) or Player (a personal roll), with a weighted Pool and an optional per-window purchase cap. The refresh window is a ScheduleSpec on the slot. A product not placed in any slot cannot be bought at all. Price is always a PriceOptions dictionary and can be virtual currency, crypto, a store product (real money), an ad credit, or FREE - an unset Cost means free, and a free product must be limited on some axis. Pricing.CompareAt is a struck-through price for display only and never reaches the charge. Identity.Tags and Identity.CustomParams are badges and ribbons the server never interprets. Distinct from Premium (real-money tiered offers) and DealOffer (limited-time promotions with progression).
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | Root of the shop. Holds the storefront catalog (Stores) and the goods catalog (StoreOffers). A storefront is a TREE: store -> sections -> slots, and a purchasable offer is reachable only through a slot. An ordinary shelf of six SKUs is six Fixed slots; a daily rotation is the same six slots with a pool and a schedule. An offer deliberately has no host-storefront list: the single address is the slot, because a purchase must re-verify that the requested offer is the one that actually came up for this player in that slot. | |
| title_id | Yes | TitleID, для которого сохраняются данные. |
save_timed_boostSave Timed Boost settingsDestructiveInspect
PARTIAL SAVE: writes ONLY the 'TimedBoost' field of TitlePublicConfigurationModel; all other v1/v2 fields stay untouched. Buff / boost definitions with a time component — temporary XP multipliers, drop-rate boosts, energy-cap boosts. Granted via Reward, Store, DealOffer, or events. Define the buff's effect and duration here; granting is done elsewhere.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | Container for all TimedBoost definitions. Bound to cfg.TimedBoost in TitlePublicConfigurationModel. Style-aligned with other V2 definition containers (cfg.Currency, cfg.Item, cfg.Premium, ...). | |
| title_id | Yes | TitleID, для которого сохраняются данные. |
save_timed_eventSave Timed Event settingsDestructiveInspect
PARTIAL SAVE: writes ONLY the 'TimedEvent' field of TitlePublicConfigurationModel; all other v1/v2 fields stay untouched. Solo time-limited events — daily challenges, weekly missions, holiday events, login streaks. Defines event IDs, schedules (start/end/recurrence), objectives, progress tracking, milestone rewards. For multi-player team events use CoopEvent; for long-form battle-pass-style progression use Season.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | Root configuration of the limited-time events system. Lives at the top level of TitlePublicConfiguration, separate from GameLoops/Quests/Store. Supports both Scheduled (fixed-date) and Chain (cyclic) events. | |
| title_id | Yes | TitleID, для которого сохраняются данные. |
save_title_custom_dataSave Title Custom Data settingsDestructiveInspect
PARTIAL SAVE: writes ONLY the 'TitleCustomData' field of TitlePublicConfigurationModel; all other v1/v2 fields stay untouched. SCHEMA + limits for the title-wide key-value store (feature flags, project-wide globals, event state, balancing knobs that don't fit any typed definition below). This section holds ONLY the key schema — the VALUES live in the TitleCustomData store, one document per title, managed with the dedicated title-data tools (get_title_data / save_title_data). Each key declares a Scope (Static = authored config; Runtime = mutable state written only by CloudCode scripts) and a Bucket (Public = readable by game clients; Private = server/CloudCode only).
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | Schema and limits of the title-wide key-value store. The VALUES live in the separate TitleCustomData collection (one document per title), not in this config section. Each key declares a Scope (Static = authored config; Runtime = mutable state written only by CloudCode scripts) and a Bucket (Public = readable by game clients; Private = server/CloudCode only). Clients can never write this store. | |
| title_id | Yes | TitleID, для которого сохраняются данные. |
save_title_dataSave title dataDestructiveInspect
Write the authored (Static) part of the title's key-value data store. REPLACES the whole bucket: read it with get_title_data first and send it back extended, or omitted keys are deleted. The Runtime scope CANNOT be written here — mutable title state is owned by CloudCode scripts, so their counters are never overwritten behind their back. Register keys in the TitleCustomData config section (save_title_custom_data) for type validation, limits, TTL and defaults.
| Name | Required | Description | Default |
|---|---|---|---|
| bucket | Yes | Public = readable by game clients; Private = server/CloudCode only. | |
| values | Yes | Object of key → string value. Replaces the whole bucket. JSON-encode structured values yourself. | |
| title_id | Yes | TitleID. |
save_tutorialSave Tutorial settingsDestructiveInspect
PARTIAL SAVE: writes ONLY the 'Tutorial' field of TitlePublicConfigurationModel; all other v1/v2 fields stay untouched. Tutorial / onboarding definitions — flows (ordered scenarios) built from steps that teach the player a mechanic. A step completes either by client acknowledgement or by a real game event (the same TriggerSource vocabulary as Quest), so "make a roll", "buy something", "open a chest" need no client-side bookkeeping. A step may also PREDETERMINE the outcome of another module (TutorialScriptedOutcome — e.g. force the board dice to land on a Raid tile), which is the only way to demonstrate a mechanic instead of randomness. Flows carry an audience gate (SegmentGate) and a schedule (ScheduleSpec); putting an Experiment condition in that gate is how two tutorial versions are A/B-tested. Gating other content on tutorial progress is done via SegmentGate.Tutorial per entity, or via Settings.Blocking to close whole modules until onboarding is finished.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | Root block of the tutorial (onboarding) system in the title config. | |
| title_id | Yes | TitleID, для которого сохраняются данные. |
save_usageSave Usage settingsDestructiveInspect
PARTIAL SAVE: writes ONLY the 'Usage' field of TitlePublicConfigurationModel; all other v1/v2 fields stay untouched. Retention policy for the player's activity history (Usage). The engine keeps a rolling window of per-day records and folds everything older into monthly totals, then months of finished years into yearly totals — otherwise the per-day map grows forever inside the hottest document on the platform. WARNING: the fold is IRREVERSIBLE, per-day detail outside the window is gone for good. Do not lower DailyWindowDays below 400 without also lowering the analytics range cap: publisher analytics (DAU/WAU/MAU, retention cohorts, funnels) is computed lazily from those very per-day records, accepts ranges of up to 366 days, and needs 30 extra preceding days per requested day for MAU. Also holds SessionIdleTimeoutMinutes: how many minutes of silence end a session (default 30, the same rule Firebase/GA4 use, so the two reports stay comparable). The session boundary is decided by the SERVER from the player's last activity — the client's IsNewSession flag is not trusted for counting. Leave every field null unless you have a specific reason — the defaults (enabled, 400-day window, 30-minute session gap) are what the analytics horizon was sized against.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | New value for the Usage field. | |
| title_id | Yes | TitleID, для которого сохраняются данные. |
save_user_custom_dataSave User Custom Data settingsDestructiveInspect
PARTIAL SAVE: writes ONLY the 'UserCustomData' field of TitlePublicConfigurationModel; all other v1/v2 fields stay untouched. Schema for per-player custom data fields — name, type, default value, visibility, whether the client can write it. This is the SCHEMA only; actual per-user values live on the User document. Use this to declare new player-specific stats, flags, or progress counters.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | Configuration of the Custom User Data V2 system (arbitrary user records). Hybrid architecture combining bucket-based privacy separation (Private/Public/ReadOnly/Internal) with optional typed key schema. | |
| title_id | Yes | TitleID, для которого сохраняются данные. |
save_workshopSave Workshop settingsDestructiveInspect
PARTIAL SAVE: writes ONLY the 'Workshop' field of TitlePublicConfigurationModel; all other v1/v2 fields stay untouched. Workshop - the catalog of content made by PLAYERS (maps, levels, skins, models, any file the game defines) and by the publisher (official content), and the LICENSES to it. Nothing is transferred: acquiring grants a license to a digital copy, so one publication is acquired by many and the author keeps it (unlike Marketplace, which escrows and moves goods). ContentTypes is the game-specific part: each type id (e.g. 'voxelcraft.world') declares its file roles (AllowedMimeTypes, MaxBytes, MaxCount, Required; the engine checks the uploaded file's signature against the declared type), whether a thumbnail is required, which AccessModes authors may use, an optional per-type PricePolicy, a PublishGate (SegmentGate: who may publish), PublishFeeOptions (PriceOption, Standard part only, never store-paid), a TagVocabulary and per-player limits. An author gives access by ANY of several options: Free, Price (a ResourceBundle validated by PricePolicy; the buyer pays, the author receives it minus Commission, which is burned or credited to the MarketplaceLedger) or Holding (hold N of a currency/item - nothing is charged; Mode WhileHeld re-checks on every download, UnlockOnce checks once and grants a permanent license; HoldingPolicy whitelists usable resources). Moderation: BlockedTerms for titles/descriptions/tags, AutoHideReportThreshold (reports that hide a publication until reviewed), RequireApproval (pre-moderation). Featured lists publisher-curated collections with their own ScheduleSpec and SegmentGate. Publications, licenses, reactions and reports are NOT here - they are operational data in their own collections; files live in a private bucket configured by the engine's WORKSHOP_BUCKET_NAME env var.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | Title Workshop configuration: a catalog of content made by players (maps, levels, skins, models) and by the publisher (official content). Unlike the Marketplace nothing is transferred: acquiring grants a LICENSE to a digital copy, so one publication is acquired by many and the author keeps it. Everything game-specific (content types, file formats and sizes, who may publish, which access modes are allowed) is configured here, no engine code per game. | |
| title_id | Yes | TitleID, для которого сохраняются данные. |
search_kanban_cardsSearch task cardsRead-onlyInspect
Find cards ACROSS all the publisher's boards by a substring of the title or by the task key. Two characters minimum; archived boards are excluded.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many to return (default 20). | |
| query | Yes | What to look for: part of a card title, or a task key like OPUS-451. |
set_kanban_assigneeAssign task cardInspect
Assign a card to someone, or clear the assignee. The person is notified.
| Name | Required | Description | Default |
|---|---|---|---|
| card_id | Yes | Card to assign. | |
| project_id | Yes | Board the card belongs to. | |
| assignee_id | No | Who to assign it to (from list_kanban_members). Omit to clear. |
update_kanban_cardUpdate task cardDestructiveInspect
Change a card's title, description, priority or deadline. Fields you leave out stay as they are — this is a patch, not a replacement.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | New title (optional). | |
| card_id | Yes | Card to change. | |
| due_date | No | New deadline, ISO-8601 (optional). | |
| priority | No | None | Low | Medium | High | Critical (optional). | |
| project_id | Yes | Board the card belongs to. | |
| description | No | New description (optional). | |
| clear_due_date | No | Remove the deadline (optional). Leaving due_date out keeps it. |
update_kanban_columnUpdate board columnDestructiveInspect
Rename a column, recolour it, or mark it as the done column. Cards entering a done column count as completed and award XP.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New name (optional). | |
| color | No | New accent colour (optional). | |
| is_done | No | Whether this is the done column (optional). | |
| column_id | Yes | Column to change. | |
| project_id | Yes | Board the column belongs to. |
update_kanban_projectUpdate board projectDestructiveInspect
Rename a board, change its description/icon/colour, or archive it. Archiving hides it from search and from my-tasks without deleting anything.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New name (optional). | |
| color | No | New accent colour (optional). | |
| emoji | No | New icon (optional). | |
| archived | No | Archive or unarchive it (optional). | |
| project_id | Yes | Board to change. | |
| description | No | New description (optional). |
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
137 tool updates
- First observed
add_kanban_comment - First observed
begin_build_upload - First observed
create_kanban_card - First observed
create_kanban_column - First observed
create_kanban_project - First observed
delete_kanban_card - First observed
delete_kanban_column - First observed
delete_kanban_project - First observed
estimate_media_cost - First observed
finish_build_upload - First observed
generate_audio - First observed
generate_image - First observed
generate_music - First observed
generate_text - First observed
generate_three_d - First observed
generate_video - First observed
get_advertising - First observed
get_ai - First observed
get_analytics - First observed
get_asset_bundle - First observed
get_attribution - First observed
get_authentication - First observed
get_ban - First observed
get_blockchain - First observed
get_build - First observed
get_character - First observed
get_chat - First observed
get_cloud_code - First observed
get_collection - First observed
get_community_marketing - First observed
get_coop_event - First observed
get_craft - First observed
get_currency - First observed
get_data_collections - First observed
get_deal_offer - First observed
get_experiment - First observed
get_feature_tracking - First observed
get_game_loop - First observed
get_generation - First observed
get_image_data - First observed
get_item - First observed
get_kanban_board - First observed
get_kanban_card - First observed
get_kanban_comments - First observed
get_leaderboard - First observed
get_localization - First observed
get_localization_keys - First observed
get_lootbox - First observed
get_mailbox - First observed
get_marketplace - First observed
get_match - First observed
get_multiplayer - First observed
get_my_kanban_tasks - First observed
get_platform_bridge - First observed
get_premium - First observed
get_purchase - First observed
get_push - First observed
get_quest - First observed
get_referral - First observed
get_reward - First observed
get_season - First observed
get_social - First observed
get_store - First observed
get_three_d - First observed
get_timed_boost - First observed
get_timed_event - First observed
get_title_custom_data - First observed
get_title_data - First observed
get_tutorial - First observed
get_usage - First observed
get_user_custom_data - First observed
get_video - First observed
get_workshop - First observed
list_ai_tiers - First observed
list_builds - First observed
list_kanban_members - First observed
list_kanban_projects - First observed
list_my_titles - First observed
list_title_secrets - First observed
move_kanban_card - First observed
publish_cloud_code - First observed
remix_video - First observed
reorder_kanban_columns - First observed
save_advertising - First observed
save_ai - First observed
save_analytics - First observed
save_asset_bundle - First observed
save_attribution - First observed
save_authentication - First observed
save_ban - First observed
save_blockchain - First observed
save_character - First observed
save_chat - First observed
save_cloud_code - First observed
save_collection - First observed
save_community_marketing - First observed
save_coop_event - First observed
save_craft - First observed
save_currency - First observed
save_data_collections - First observed
save_deal_offer - First observed
save_experiment - First observed
save_feature_tracking - First observed
save_game_loop - First observed
save_image_data - First observed
save_item - First observed
save_leaderboard - First observed
save_localization - First observed
save_localization_keys - First observed
save_lootbox - First observed
save_mailbox - First observed
save_marketplace - First observed
save_match - First observed
save_multiplayer - First observed
save_platform_bridge - First observed
save_premium - First observed
save_purchase - First observed
save_push - First observed
save_quest - First observed
save_referral - First observed
save_reward - First observed
save_season - First observed
save_social - First observed
save_store - First observed
save_timed_boost - First observed
save_timed_event - First observed
save_title_custom_data - First observed
save_title_data - First observed
save_tutorial - First observed
save_usage - First observed
save_user_custom_data - First observed
save_workshop - First observed
search_kanban_cards - First observed
set_kanban_assignee - First observed
update_kanban_card - First observed
update_kanban_column - First observed
update_kanban_project
Publisher details
- Operator
- iDos Games · Publisher source
- Operator website
- https://idosgames.com · Publisher source
- Vendor relationship
- First-party · Publisher source
- Documentation
- https://idosgames.com/mcp · Publisher source
- Trust center
- Not available
- Restrictions
- Free iDos Games account required. AI generation uses the account's credits. · Publisher source
Related MCP Connectors
Publish, play-test and fix HTML5 browser games from your AI assistant. Own address, 70% ad share.
Publish HTML5 games in seconds from an AI agent: audience, monetization, analytics.
Create, test and play AI-native games through server-authoritative contracts.
Build, publish and update browser games with saves, leaderboards and realtime multiplayer built in.
Related MCP Servers
- AlicenseAqualityDmaintenanceConfigure a Specter game backend from chat — economy, progression, leaderboards, tournaments, battle passes, and real-time multiplayer — via your AI assistant.4696 npmMIT

Sprixen MCP serverofficial
AlicenseNot gradedqualityCmaintenanceEnables AI agents to create style-locked game projects and generate sprites, animations, tiles, maps, music, 3D models, and VFX, then export engine-ready packages for Godot, Phaser, Unity, GameMaker, or RPG Maker MZ.MIT- AlicenseBqualityBmaintenanceUnifies Roblox Studio, Unity, Unreal Engine, and Blender into a single AI-powered control plane with 78 tools for automated game development.78AGPL 3.0
- AlicenseAqualityAmaintenanceEnables AI coding assistants to access documentation, live API tools, and workflow prompts for integrating a game/app backend service into Godot, Unity, and Unreal Engine projects, including auth, leaderboards, cloud saves, remote config, localization, news, gift codes, feedback, logs, crash reporting, email, and admin dashboard management.34433 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.