Skip to content

Creator-Center Remote MCP ​

Read connection setup for current endpoints and download limits. This HTTPS service is independent of Editor MCP; no open editor or private backend source checkout is required.

Connect With Project-Scoped Authorization ​

If the author is already signed in to the creator portal in the assistant's browser session, the assistant may open /api/v1/ai/mcp-grants itself, select only the scopes this task needs, connect with the short-lived ticket, and revoke it immediately afterwards, verifying a later call is rejected. Do not default to asking the author to install or configure an MCP client. Parallel workers must use an isolated browser profile or session and never the author's main signed-in session, and only one worker should act on a grant page at a time.

  1. Distinguish the deployment (alpha or pd) from the project environment (test or formal). Log in to the corresponding creator portal and open its API authorization page /api/v1/ai/mcp-grants. Portal URLs are not API roots.
  2. The author selects one owned project from the authorized project list. The page prefers an explicit URL firm, then backend project context; an unknown explicit firm must not silently select another project. Default access only reads project configuration. Log contents, invite operations, joining one's own test and test-mode writes require separate scopes; join-self and mode-write options are unchecked by default.
  3. Use the displayed HTTPS endpoint in a Streamable HTTP MCP client with a private Authorization: Bearer <ticket> header. Do not ask the author to paste the ticket into chat or save it in project files, shared configuration, URLs, logs, or Git. If private header configuration is unsupported, report that limitation rather than falling back to insecure storage.
  4. Call author_get_project_setup with the intended environment and check project_id and environment before accessing diagnostics. Project identity comes from the ticket; do not attempt to override it in tool arguments.

Tickets expire after 15 minutes and can be revoked. On expiry or revocation, ask the author to generate a new ticket and update private credentials; there is no automatic OAuth refresh. Do not repeatedly retry rejected authorization.

For a 503, retain only code, stage and requestId/X-Request-ID for management-service log correlation. Stages distinguish project_list, project_access, grant_write, grant_lookup and grant_revoke. Do not diagnose Redis or ownership as the cause from HTTP status alone, or use game-session Host logs as authorization-service evidence. A failed revoke can be retried with the retained non-secret grant ID. Project selection, diagnostics and mode tools require matching backend deployment; tools/list is the capability check, not the SDK version alone.

Read Actual Logs ​

  • Discover the tools through tools/list; paged log tools require sce-author-backend 0.2.0. If absent, report that the backend needs deployment of the corresponding version.
  • Use author_read_log_text as the default for log analysis, including files above 512 KiB. Reserve author_read_log_chunk for delivering a file or local binary analysis; do not start with a whole-file Base64 call just to inspect errors. A 512 KiB error from an older whole-file tool is a signal to use the paged tools, not the attachment's overall size limit.
  • Client ZIP text: call author_list_log_records, then author_list_client_log_files with the returned record ID and environment. Select the actual returned entry_index and call author_read_log_text with kind="client". List pages use next_offset; do not guess file names or entry indices.
  • Session scripts: call author_list_game_sessions, then author_read_log_text with kind="session" and the returned session ID, without entry_index. Preserve IDs as strings; they may exceed JavaScript safe integer precision.
  • List queries support Unix-second since/until within the recent seven-day window. Session scripts can come from live logs or archived .txt / .txt.gz files; gzip archives are decompressed by the service. Do not assume older sessions have no logs.
  • When a list is empty, check the requested project environment and widen the default 24-hour query to at most seven days. If it remains empty, report that no records were found for that project, environment and time window. Ask for a recent uploaded client log or a recent game session when needed; do not guess IDs or describe an empty-list result as successful content analysis.
  • Start with tail=true for recent failures or use a literal, case-sensitive query to locate a keyword and read the following text. Tail cannot be combined with offset/query. For sequential pages or further search pages, copy next_offset and sha256 from the previous result; null next_offset means end. Text offsets are UTF-16 code units, not byte positions or line numbers. Each text page defaults to 16 KiB and is capped at 32 KiB of UTF-8 text. Query returns one page beginning at the next occurrence, not an exhaustive search report.
  • On a content-change error, restart listing/reading instead of mixing pages. Live logs may grow between calls; a fresh tail is an independent snapshot. Text defaults to UTF-8 with UTF-16 BOM detection; explicitly choose encoding="gb18030" for legacy Chinese logs when needed.
  • If a text page returns text_lossy: true, the log had a few non-UTF-8 bytes and replacement characters are expected. This is still readable log text; use author_read_log_chunk only when the file is genuinely binary or the service rejects it for binary control characters.
  • For ZIP text above 512 KiB, continue through these MCP tools rather than asking the author to manually download/upload or extract the connection's private Bearer credential. No separate HTTP request is needed.
  • For actual file delivery, use author_read_log_chunk with the same ID, environment and kind. Byte offsets differ from text offsets; decode each Base64 data block, concatenate in order, check size_bytes, and verify the source sha256 for a complete raw attachment. Omit entry_index for the original client ZIP/7Z/DUMP; supply it for one ZIP member. For extracted members, sha256 still identifies the outer archive. ZIP text extraction supports unencrypted Store/Deflate members, not recursive archives. 7Z extraction and DUMP analysis require suitable local tools; raw chunk access alone is not proof they were analyzed.
  • Client attachments, session script totals and individual decompressed ZIP members are capped at 16 MiB. Whole-file author_get_client_log / author_get_game_session_log responses still have the 512 KiB inline limit; their error points to the paged tools. The authenticated HTTP endpoints remain optional for clients that can safely use the private Bearer header. Files are not silently truncated; listing metadata alone is not reading verification.
  • A 404 is not proof that the session never existed: verify the record ID and environment, then report possible log availability limitations. Do not switch projects or deployments without the author requesting it.

Invite Codes And Safety ​

Before handing off a published project for platform testing, call author_get_project_setup with environment="test". Check that modes contains a visible (show) mode whose effect_scope includes the intended project, and that its room_player_count / player_count fit the project's player slots. Editor GameDataGameMode and workflow_create_game_mode configure local gameplay; they do not create creator-center lobby modes. A published package and an invite code alone do not prove that testers can enter a game.

If no applicable mode exists and the user requests configuration, use the test-mode workflow below when those tools and their write scope are available. Otherwise report the missing configuration and use the creator center's test-environment mode page, then read back. If authorization is unavailable, report the readiness check as unverified. Platform entry and rendering still require an actual client test.

Configure Test Game Modes ​

Read the mode contract and example when creating or editing a platform entry mode. These tools only accept environment=test and bind effect_scope to the granted project. They do not configure Editor GameDataGameMode or publish a game.

  1. Discover author_get_test_modes plus author_preflight_test_mode / author_create_test_mode / author_edit_test_mode. Reads use project_setup.read; preflight and writes require project_modes.test.write. If absent, check backend deployment or grant scopes.
  2. Read the actual modes and opaque version. Preserve unrelated modes. Preflight a complete mode with intended player counts, visible state and effect_scope. Create receives a server-generated ID; edit uses an existing mode_id_str as mode_id.
  3. On a user-authorized write, send the complete mode, the read expected_version and a unique request_id (8-128 ASCII letters, digits, underscore or hyphen). Optional fields omitted on edit reset to defaults; reconstruct existing supported settings before changing one field.
  4. Check mode, current_mode, version and readback_confirmed, then read again. A replay returns the original receipt without applying old settings over later edits. matching_refresh=published confirms publication of a refresh notification, not downstream application or platform entry.
  5. For timeout, MODE_WRITE_UNCONFIRMED or MODE_BACKEND_UNCONFIRMED, retry with the exact same request_id, expected_version and mode. MODE_MATCHING_REFRESH_UNCONFIRMED with persisted=true means the mode is already saved; the same request retries refresh notification. Do not create another mode because a response was lost.

On 409, re-read and reconcile the current configuration rather than inventing a new version. At the 256-operation receipt limit, 412 requires backend maintenance. Refresh any already-open backend mode page before editing it after MCP writes; its existing cached whole-configuration save can overwrite later changes. Test-to-formal synchronization is a separate action and is never automatic.

Share Invite Codes ​

Discover the currently granted tools through tools/list. author_get_test_invite_status reads status, and author_get_test_invite reads the complete shareable invite code. Call author_create_test_invite only when the user explicitly asks to create one; an existing code is returned without replacement or re-enabling. Test invite codes are meant to be shared with testers; MCP tickets are private credentials.

Join The Author's Own Test ​

When the user asks to join their own project test, discover author_join_my_test and use the join contract. It requires separate test_invite.join_self permission; reading or creating an invite does not grant it. Matching author scripts and the authorization service must be deployed, then a new ticket issued with this option selected.

Call with {} or omitted arguments. Account and project come from the ticket; do not supply user IDs, project IDs, invite codes or an environment. An enabled invite must already exist. Do not create or re-enable an invite as a side effect of a join request.

Confirm joined=true, readback_confirmed=true and status=joined or already_joined. The response contains no invite code or user ID. Ask the user to refresh the platform test list under the same account that issued the ticket. Joining is not proof of a usable mode or successful game entry. On PC, verify an actual entry with the test-channel quick launch command and its AUTHOR_TEST_LAUNCH receipt plus scene load; see PC single-player author-test quick launch.

For JOIN_TEST_UNCONFIRMED / JOIN_TEST_BACKEND_UNCONFIRMED, report an unknown outcome, not a failed write: the operation may still have completed. Retry the same no-argument tool under the same account/project; these shared join paths reuse a persistent list ID. On JOIN_TEST_BUSY, wait before retrying. Backend requests have a 15-second deadline and the MCP bridge waits at most 20 seconds; neither deadline rolls back an accepted write. If the retry remains unconfirmed, stop automatic retries and check the platform list or management logs. On missing/disabled/changed invites, reconcile the invite state; on access denial or rejected authorization, stop and resolve permissions. Revocation does not undo an already accepted join.

Authorization Boundary ​

Writes described here are separately scoped invite creation, joining one's own test, and test-mode configuration. Other lobby configuration writes, formal synchronization and game publishing are not offered. Read authorization does not permit writes. Backend calls recheck project ownership and scopes; treat 403 as a permission boundary, not a prompt to bypass it. When creating a temporary acceptance-test ticket, revoke it after testing and verify a subsequent call is rejected.