> ## Documentation Index
> Fetch the complete documentation index at: https://docs.summerengine.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Publishing tools reference

> Every Summer MCP tool used to publish a game: projects, assets, store page, art, build upload, web builds and downloads, submit, Grow, export and templates. Inputs and an example for each.

All tools are in the **Summer Engine MCP**. **Hosted** tools run on `https://mcp.summerengine.com/mcp`; the `summer-engine` npm MCP on your computer loads the same tools after `summer login --store` and adds the **local** ones that touch your disk. Setup: [Connect your agent](/publishing/connect-your-agent).

This page covers only publishing. Every tool with its full input schema, what it needs and an example is in the generated [MCP tools reference](/mcp/tools-reference); the publishing ones are on [MCP tools: publish](/mcp/tools/publish).

## Projects

### summer\_list\_projects

Hosted. Your Summer Studio projects, newest first: id, name, kind, last edit, share state.

| Input | Type | Meaning |
| - | - | - |
| `limit` | 1-100 | Default 20. |

```json theme={null}
{ "tool": "summer_list_projects", "limit": 10 }
```

### summer\_get\_project

Hosted. One project: name, kind, its board id, the idea it was made from, share state.

| Input | Type | Meaning |
| - | - | - |
| `projectId` | uuid | From `summer_list_projects`. |

```json theme={null}
{ "tool": "summer_get_project", "projectId": "<projectId>" }
```

A Studio project and its store game are separate records.

## Store page

### summer\_store\_list\_games

Hosted. Your games on the Summer Games store: game id, name, status, platforms. No inputs.

```json theme={null}
{ "tool": "summer_store_list_games" }
```

### summer\_store\_create\_game

Hosted. A new store game with its first draft. Nothing is published.

| Input | Type | Meaning |
| - | - | - |
| `title` | string, 1-60 | The game's name. |
| `targets` | list | `web`, `macos-universal`, `windows-x64`, `linux-x64`, `ios`, `android`. They decide the stores. |
| `tagline` | string, up to 80 | Optional. |
| `description` | string, up to 300 | Optional. |
| `idempotencyKey` | string | Reuse only to retry the same create. |

```json theme={null}
{ "tool": "summer_store_create_game", "title": "Star Weavers", "targets": ["macos-universal", "ios"] }
```

### summer\_store\_get\_listing

Hosted. The store page as the store will show it: review state, platforms and stores, text per store, art per slot, price, builds, the **publish checklist**, and owner approvals with their links.

| Input | Type | Meaning |
| - | - | - |
| `gameId` | string | From `summer_store_list_games`. |
| `previews` | boolean | Also return short-lived image URLs to look at the art. |

```json theme={null}
{ "tool": "summer_store_get_listing", "gameId": "<gameId>", "previews": true }
```

### summer\_store\_update\_listing

Hosted. Edit the draft. Omitted fields keep their value. Saving never submits.

| Input | Type | Meaning |
| - | - | - |
| `gameId` | string | |
| `title` | string, up to 60 | |
| `targets` | list | Same values as create. |
| `desktop` | object | `tagline` (80), `description` (120-300), `tags` (3-8 store categories). |
| `mobile` | object | `tagline`, `description` (120-170). `null` shows the desktop text on phones. |
| `mobileSameAsDesktop` | boolean | Copy the desktop tagline and description to mobile once. |
| `release` | object or `null` | `comingSoon` and an optional `date`: `"2026-11-14"`, `"2026-11"`, `"2026-Q4"` or `"2026"`. `null`: out once published. |
| `contentRating` | enum | `everyone`, `everyone10Plus`, `teen`. |
| `contentDescriptors` | list | `mildFantasyAction`, `competitivePlay`, `userGeneratedContent`, `flashingLights`, `simulatedGambling`. Empty: none apply. |

```json theme={null}
{
  "tool": "summer_store_update_listing",
  "gameId": "<gameId>",
  "desktop": { "tagline": "Weave constellations with a friend", "tags": ["Puzzle", "Cooperative", "Casual"] },
  "mobileSameAsDesktop": true,
  "contentRating": "everyone"
}
```

Text rules: [Store page text](/publishing/store-text).

### summer\_store\_set\_art

Hosted. Put pictures into one art slot. Each picture is checked against the slot's shape and size before upload.

| Input | Type | Meaning |
| - | - | - |
| `gameId` | string | |
| `slot` | enum | `desktop.keyArt`, `desktop.screenshots`, `desktop.icon`, `desktop.capsuleTall`, `desktop.capsuleWide`, `mobile.icon`, `mobile.tallCover`, `mobile.keyArt`, `mobile.screenshots`. |
| `sources` | list, up to 8 | Each `{ "assetId": "…" }` (one of your assets) or `{ "url": "https://…" }`. Empty clears the slot. |
| `mode` | enum | `replace` (default) or `append`. Screenshots only take a list. |
| `focalPoint` | `{x, y}`, 0-1 | What stays in view when the store crops. Key art and covers. |

```json theme={null}
{ "tool": "summer_store_set_art", "gameId": "<gameId>", "slot": "desktop.keyArt", "sources": [{ "assetId": "<assetId>" }], "focalPoint": { "x": 0.5, "y": 0.42 } }
```

Slot sizes: [Store art](/publishing/store-art).

### summer\_store\_preview\_link

Hosted. A private link to the saved draft on summer.games. Hidden from search; Buy and Play do nothing.

| Input | Type | Meaning |
| - | - | - |
| `gameId` | string | |
| `expires` | enum | `1h`, `1d` (default), `7d`. |

```json theme={null}
{ "tool": "summer_store_preview_link", "gameId": "<gameId>", "expires": "7d" }
```

## Build upload

Store bundles for the Summer Games apps. The local `summer_publish_build` does all four hosted steps for you.

### summer\_build\_begin\_upload

Hosted. Start an upload. Returns `publicationId` and a plan of 64 MiB parts. Calling again for the same file resumes.

| Input | Type | Meaning |
| - | - | - |
| `gameId` | string | |
| `format` | enum | `summer-bundle` or `pck`. |
| `sha256` | string | SHA-256 of the whole file. |
| `sizeBytes` | integer | |
| `clientVersion` | string | `vMAJOR.MINOR.PATCH`. |
| `targetPlatforms` | list | `ios`, `android`, `macos`, `windows`. A game without a server: only `ios` and `android`. |
| `entryPoint` | string | `res://` path of the main scene. |
| `hostedBuild` | object | Multiplayer games: the exported `summer.build.json`. |
| `idempotencyKey` | string | Optional. |

### summer\_build\_sign\_parts

Hosted. Upload URLs for parts, each bound to the part's SHA-256. Send every returned header with the PUT. Sign again for any part that failed.

| Input | Type | Meaning |
| - | - | - |
| `gameId`, `publicationId` | string | |
| `parts` | list | `{ "partNumber": 1, "sha256": "…" }` |

### summer\_build\_complete\_upload

Hosted. After every part is PUT: Summer seals the file, makes the build and checks it on each platform. Call again with the same inputs until `ready` or `failed`. Nothing goes live.

| Input | Type | Meaning |
| - | - | - |
| `gameId`, `publicationId` | string | |
| `clientVersion` | string | |
| `entryPoint` | string | `res://` main scene. |
| `clientPack` | object | `sha256` and `sizeBytes` of `client.pck` inside the bundle (or of the `.pck` itself). |
| `compositionPath` | string | Multiplayer games: `res://` path of the network composition. |

### summer\_build\_status

Hosted. Builds of a game, or one: version, platforms, state (`uploading`, `processing`, `checking`, `ready`, `failed`) and what to do next.

```json theme={null}
{ "tool": "summer_build_status", "gameId": "<gameId>", "publicationId": "<publicationId>" }
```

## Web builds and downloads

Store versions: `web` (played on summer.games), `macos-universal`, `windows-x64`, `linux-x64` (downloaded).

### summer\_store\_version\_begin\_upload

Hosted. Returns `versionId` and the part plan.

| Input | Type | Meaning |
| - | - | - |
| `gameId` | string | |
| `platform` | enum | `web`, `macos-universal`, `windows-x64`, `linux-x64`. |
| `fileName` | string | |
| `sizeBytes` | integer | Web: up to 500 MiB. Downloads: up to 20 GiB. |
| `label` | string, up to 80 | A version label players may see, such as `1.0.2`. |

```json theme={null}
{ "tool": "summer_store_version_begin_upload", "gameId": "<gameId>", "platform": "web", "fileName": "star-weavers-web.zip", "sizeBytes": 48211022, "label": "1.0.0" }
```

### summer\_store\_version\_sign\_parts

Hosted. Upload URLs for part numbers. Inputs: `gameId`, `versionId`, `partNumbers`.

### summer\_store\_version\_complete

Hosted. Summer checks the file and marks it `ready` or `rejected`. On a live game only the owner can finish one, because it goes live at once. Inputs: `gameId`, `versionId`.

### summer\_store\_version\_status

Hosted. Web builds and downloads, or one: platform, status (`awaiting_upload`, `processing`, `ready`, `rejected`) and the parts already stored. Inputs: `gameId`, optional `versionId`.

## Submit

### summer\_store\_submit

Hosted. Ask the owner to publish. It never publishes: it returns `awaiting_owner_approval` and an `approvalUrl` for the owner.

| Input | Type | Meaning |
| - | - | - |
| `gameId` | string | |
| `buildPublicationId` | string | Default: the newest ready build. |
| `priceUsdCents` | integer | Proposed price in US cents; `0` is free; omit to keep the price. |
| `note` | string, up to 500 | For the owner: what changed and why. |

```json theme={null}
{ "tool": "summer_store_submit", "gameId": "<gameId>", "priceUsdCents": 0, "note": "First release, build v1.0.0." }
```

### summer\_store\_cancel\_submission

Hosted. Withdraw a waiting approval so its link stops working. Inputs: `gameId`, `approvalId`.

### summer\_build\_release

Hosted. After the owner approved and Summer's review passed: release the approved store bundle to players on every platform it passed its checks for. Works only for the exact build the owner approved; anything else is the owner's click in Studio. Web builds and downloads need no release: they play once the page is live.

| Input | Type | Meaning |
| - | - | - |
| `gameId` | string | |

```json theme={null}
{ "tool": "summer_build_release", "gameId": "<gameId>" }
```

It answers `current` (already live), `waiting` (with the reason) or the release state.

## Grow

### summer\_grow\_overview

Hosted, read-only. Players, new players, sessions, play time, day-7 retention, peak players and Sparks earned, for all your games or one. `sample: true` in the answer means sample data.

| Input | Type | Meaning |
| - | - | - |
| `about` | enum | `overview`, `games`, `earnings`. |
| `gameId` | string | Optional: one game. |
| `range` | 7, 28, 90 | Days. Default 7 (earnings 28). |

## Art and assets

### summer\_upload\_image\_begin

Hosted. Start uploading a PNG, JPEG or WebP from your disk (at most 32 MB) into your Summer assets, for example store art you cropped. No inputs. Returns `uploadUrl`, the `fields` to send and a `curl` example: POST the file as `multipart/form-data` with every field plus `file=@<path>`.

```json theme={null}
{ "tool": "summer_upload_image_begin" }
```

### summer\_upload\_image\_complete

Hosted. Finish the upload. Returns the `assetId` for `summer_store_set_art`.

| Input | Type | Meaning |
| - | - | - |
| `publicId` | string | `public_id` from the upload answer. |
| `version` | integer | `version` from the upload answer. |
| `signature` | string | `signature` from the upload answer. |
| `format` | enum | `png`, `jpg`, `jpeg`, `webp`. |
| `title` | string | Optional name in My assets. |

```json theme={null}
{ "tool": "summer_upload_image_complete", "publicId": "<public_id>", "version": 1760040000, "signature": "<signature>", "format": "png", "title": "Key art" }
```

### Other art tools

These tools already exist. They are listed here because publishing uses them.

| Tool | Use |
| - | - |
| `summer_list_my_assets`, `summer_search_assets`, `summer_get_asset` | Find art you already have. |
| `summer_generate_image` | Make a picture. Returns the asset. |
| `summer_check_job` | Wait for a generation. |
| `summer_remove_background` | Cut out an icon subject. |
| `summer_board_read`, `summer_board_game_soul` | The game's look and world. |

See [Make store art with your agent](/publishing/generate-store-art).

## Local tools

### summer\_export\_game

Local. Export with the installed Summer Engine, without a window.

| Input | Type | Meaning |
| - | - | - |
| `project` | string | Folder with `project.godot`. |
| `targets` | list | Bundle: `macos`, `windows`, `ios`, `android`. Download: one of `web`, `macos`, `windows`. |
| `format` | enum | `bundle` (default) or `download`. |
| `out` | string | Default `<project>/.summer/exports/`. |
| `debug` | boolean | Debug build. |
| `timeoutSeconds` | 10-7200 | Default 900. |

```json theme={null}
{ "tool": "summer_export_game", "targets": ["ios", "android"] }
```

Details: [Export your game](/publishing/export).

### summer\_export\_templates

Local. List and install export templates from Summer's CDN, SHA-256 checked.

| Input | Type | Meaning |
| - | - | - |
| `action` | enum | `list` or `install`. |
| `platforms` | list | `web`, `macos`, `windows`, `linux`, `ios`, `android`. Default `["web"]`. |
| `includeDebug` | boolean | Also debug templates. |
| `summerVersion` | string | Your Summer Engine version. Needed on Windows and Linux. |

```json theme={null}
{ "tool": "summer_export_templates", "action": "install", "platforms": ["web"] }
```

### summer\_publish\_build

Local. Upload a store bundle, web build or download from disk, resumable. The first call previews; `confirm: true` uploads.

| Input | Type | Meaning |
| - | - | - |
| `gameId` | string | Omit to list your games. |
| `file` | string | Default: the last export. |
| `clientVersion` | string | Required. `vMAJOR.MINOR.PATCH`. |
| `platform` | enum | Web builds and downloads: `web`, `macos-universal`, `windows-x64`, `linux-x64`. Default: the last export's platform. Omit for a store bundle. |
| `confirm` | boolean | `true` only after the owner approves the exact upload. |
| `publish` | boolean | Leave `false`. Submit with `summer_store_submit`. |
| `waitSeconds` | 0-1800 | Default 600. |

```json theme={null}
{ "tool": "summer_publish_build", "gameId": "<gameId>", "clientVersion": "v1.0.0", "confirm": true }
```

## Skills and docs

The hosted MCP also serves skills as prompts and resources:

| Resource | What |
| - | - |
| `summer://skills/publish-your-game` | The whole journey, in order. |
| `summer://skills/store-listing` | Store page text and fields. |
| `summer://skills/store-art` | Every art slot and why. |
| `summer://docs` | This documentation. Fetch any page as `.md`; the index is `/llms.txt`. |

## Before sign-in

Without `summer login --store`, the npm MCP shows one tool, `summer_store_tools`, that says how to sign in. After sign-in the hosted tools load on their own.

## Deprecated

`summer_creator_publish`, `summer_creator_releases` and `summer publish` sent a `.pck` to an older creator API. Use `summer_export_game`, then `summer_publish_build`.

***

Does this not help you? [Reach out on Discord!](https://discord.gg/summerengine)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.