> ## 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.

# Operations: projects

> Where a game is made: list, create, build and open projects. For each operation: what it does, whether it asks you first, its inputs and an example call.

Where a game is made: list, create, build and open projects. 8 operations. How to call them, and what the answers mean: [Operations reference](/mcp/operations).

<Note>
  Generated from the `summer-engine` npm package `4.2.0`: its public operation catalog (`registry/operations/public-catalog.json`) and its engine and local operations. If something here is wrong, the operation's definition is wrong.
</Note>

| Operation | What it does | Asks you first |
| - | - | - |
| [`projects.build`](#build) | Build a playable game in the cloud from a plan's saved direction, as Build in Studio does. | Not by default |
| [`projects.builds`](#builds) | The recent cloud builds of a plan, newest first, with their job ids and states, and whether cloud builds can start right now. | Never |
| [`projects.create`](#create) | Start a new game from the person's idea: Summer creates the project and its plan and starts drawing the plan's first pictures at once. | Not by default |
| [`projects.get`](#get) | Read one Summer project: name, kind, share state, where it opens, its game plan (planId for plans.get) and the idea it was made from. | Never |
| [`projects.list`](#list) | List the person's Summer projects, newest edit first: project id, name, kind (browser, cloud or desktop), share state and where it opens. | Never |
| [`projects.open_in_engine`](#open_in_engine) | Hand a game started with projects.create to Summer Engine on the person's computer: the download for Mac and Windows, the setup steps and the saved direction to build from. | Never |
| [`projects.preview_build`](#preview_build) | A link that plays a finished cloud build of a plan in the browser, as Play in Studio does. | Never |
| [`projects.rename`](#rename) | Rename a game started on the create page or with projects.create: its project, its plan and the concept kept for Summer Engine take the new name. | Not by default |

***

### build

`projects.build`: **Build a game from a plan**

Build a playable game in the cloud from a plan's saved direction, as Build in Studio does. Spends the plan payer's credits. The same direction returns the same build unless you send a new idempotencyKey. Returns a job. Next: jobs.wait.

| | |
| - | - |
| **MCP** | `summer_call` with `"op": "projects.build"` |
| **CLI** | `summer projects build` |
| **Runs** | On Summer's servers: the hosted MCP, or the npm MCP after `summer login`. Needs your Summer sign-in. |
| **Effect** | Spends your credits. |
| **Asks you first** | No: **Spend credits** is on by default in Agent permissions. When it is off, your agent asks you first. |
| **Long work** | Answers with a job at once. Wait with `jobs.wait`. |
| **3.x names** | `summer_board_build` |

**Inputs:**

| Input | Type | Required | Description |
| - | - | - | - |
| `planId` | string | Yes | From plans.list. |
| `directionId` | string | Yes | From plans.directions. |
| `dryRun` | boolean | No | Check and describe the call without doing it: nothing changes, nothing is spent. |
| `idempotencyKey` | string | No | Retry key. Reuse it only to retry the identical request, so it never happens twice. Length 1 to 128. |

<Accordion title="Input JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "planId": {
        "description": "From plans.list.",
        "type": "string",
        "format": "uuid",
        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
      },
      "directionId": {
        "description": "From plans.directions.",
        "type": "string",
        "format": "uuid",
        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
      },
      "dryRun": {
        "description": "Check and describe the call without doing it: nothing changes, nothing is spent.",
        "type": "boolean"
      },
      "idempotencyKey": {
        "description": "Retry key. Reuse it only to retry the identical request, so it never happens twice.",
        "type": "string",
        "minLength": 1,
        "maxLength": 128
      }
    },
    "required": [
      "planId",
      "directionId"
    ]
  }
  ```
</Accordion>

<Accordion title="Result JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "build": {
        "type": "object",
        "properties": {
          "buildId": {
            "type": "string"
          },
          "jobId": {
            "type": "string"
          },
          "state": {
            "type": "string"
          },
          "directionId": {
            "type": "string"
          },
          "error": {
            "type": "string"
          },
          "result": {
            "description": "What the build made, once done.",
            "type": "object",
            "additionalProperties": {}
          },
          "createdAt": {
            "type": "string"
          },
          "updatedAt": {
            "type": "string"
          }
        },
        "required": [
          "buildId",
          "jobId",
          "state"
        ],
        "additionalProperties": false
      },
      "created": {
        "type": "boolean"
      }
    },
    "required": [
      "build",
      "created"
    ],
    "additionalProperties": false
  }
  ```
</Accordion>

**Example:** Build the saved direction.

<CodeGroup>
  ```json MCP theme={null}
  {
    "name": "summer_call",
    "arguments": {
      "op": "projects.build",
      "input": {
        "planId": "7b0c2f7e-5d4b-4c5e-9a43-2f0d8f1c9a10",
        "directionId": "5f1d2c3b-4a59-4e6f-8a7b-9c0d1e2f3a4b"
      }
    }
  }
  ```

  ```bash CLI theme={null}
  summer projects build --plan-id 7b0c2f7e-5d4b-4c5e-9a43-2f0d8f1c9a10 --direction-id 5f1d2c3b-4a59-4e6f-8a7b-9c0d1e2f3a4b
  ```
</CodeGroup>

***

### builds

`projects.builds`: **List a plan's builds**

The recent cloud builds of a plan, newest first, with their job ids and states, and whether cloud builds can start right now. Next: jobs.get with a build's jobId.

| | |
| - | - |
| **MCP** | `summer_call` with `"op": "projects.builds"` |
| **CLI** | `summer projects builds` |
| **Runs** | On Summer's servers: the hosted MCP, or the npm MCP after `summer login`. Needs your Summer sign-in. |
| **Effect** | Reads only. Changes nothing. |
| **Asks you first** | No. It changes nothing. |
| **3.x names** | `summer_board_builds` |

**Inputs:**

| Input | Type | Required | Description |
| - | - | - | - |
| `planId` | string | Yes | From plans.list. |

<Accordion title="Input JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "planId": {
        "description": "From plans.list.",
        "type": "string",
        "format": "uuid",
        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
      }
    },
    "required": [
      "planId"
    ]
  }
  ```
</Accordion>

<Accordion title="Result JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "available": {
        "description": "Cloud builds can start now.",
        "type": "boolean"
      },
      "items": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "buildId": {
              "type": "string"
            },
            "jobId": {
              "type": "string"
            },
            "state": {
              "type": "string"
            },
            "directionId": {
              "type": "string"
            },
            "error": {
              "type": "string"
            },
            "result": {
              "description": "What the build made, once done.",
              "type": "object",
              "additionalProperties": {}
            },
            "createdAt": {
              "type": "string"
            },
            "updatedAt": {
              "type": "string"
            }
          },
          "required": [
            "buildId",
            "jobId",
            "state"
          ],
          "additionalProperties": false
        }
      }
    },
    "required": [
      "available",
      "items"
    ],
    "additionalProperties": false
  }
  ```
</Accordion>

**Example:** Did the last build work?

<CodeGroup>
  ```json MCP theme={null}
  {
    "name": "summer_call",
    "arguments": {
      "op": "projects.builds",
      "input": {
        "planId": "7b0c2f7e-5d4b-4c5e-9a43-2f0d8f1c9a10"
      }
    }
  }
  ```

  ```bash CLI theme={null}
  summer projects builds --plan-id 7b0c2f7e-5d4b-4c5e-9a43-2f0d8f1c9a10
  ```
</CodeGroup>

***

### create

`projects.create`: **Start a new game**

Start a new game from the person's idea: Summer creates the project and its plan and starts drawing the plan's first pictures at once. One sentence is enough. Returns the projectId. Next: plans.show or plans.message.

| | |
| - | - |
| **MCP** | `summer_call` with `"op": "projects.create"` |
| **CLI** | `summer projects create` |
| **Runs** | On Summer's servers: the hosted MCP, or the npm MCP after `summer login`. Needs your Summer sign-in. |
| **Effect** | Spends your credits. |
| **Asks you first** | No: **Spend credits** is on by default in Agent permissions. When it is off, your agent asks you first. |
| **3.x names** | `summer_make_game` |

**Inputs:**

| Input | Type | Required | Description |
| - | - | - | - |
| `idea` | string | Yes | The game idea in the person's words, plus anything already decided (feel, player, goal). Length 1 to 8000. |
| `dryRun` | boolean | No | Check and describe the call without doing it: nothing changes, nothing is spent. |
| `idempotencyKey` | string | No | Retry key. Reuse it only to retry the identical request, so it never happens twice. Length 1 to 128. |

<Accordion title="Input JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "idea": {
        "description": "The game idea in the person's words, plus anything already decided (feel, player, goal).",
        "type": "string",
        "minLength": 1,
        "maxLength": 8000
      },
      "dryRun": {
        "description": "Check and describe the call without doing it: nothing changes, nothing is spent.",
        "type": "boolean"
      },
      "idempotencyKey": {
        "description": "Retry key. Reuse it only to retry the identical request, so it never happens twice.",
        "type": "string",
        "minLength": 1,
        "maxLength": 128
      }
    },
    "required": [
      "idea"
    ]
  }
  ```
</Accordion>

<Accordion title="Result JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "projectId": {
        "type": "string"
      },
      "title": {
        "type": "string"
      },
      "cards": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "itemId": {
              "type": "string"
            },
            "title": {
              "type": "string"
            },
            "imageUrl": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ]
            },
            "line": {
              "type": "string"
            }
          },
          "required": [
            "itemId",
            "title",
            "imageUrl"
          ],
          "additionalProperties": false
        }
      },
      "drawing": {
        "description": "Summer is still drawing pictures.",
        "type": "boolean"
      },
      "lookItemId": {
        "description": "The picture chosen as the game's look.",
        "anyOf": [
          {
            "type": "string"
          },
          {
            "type": "null"
          }
        ]
      },
      "statusLine": {
        "type": "string"
      },
      "url": {
        "description": "The plan in the browser.",
        "type": "string"
      },
      "planId": {
        "anyOf": [
          {
            "type": "string"
          },
          {
            "type": "null"
          }
        ]
      }
    },
    "required": [
      "projectId",
      "title",
      "cards",
      "drawing",
      "lookItemId",
      "statusLine",
      "url",
      "planId"
    ],
    "additionalProperties": false
  }
  ```
</Accordion>

**Example:** Start a game from one sentence.

<CodeGroup>
  ```json MCP theme={null}
  {
    "name": "summer_call",
    "arguments": {
      "op": "projects.create",
      "input": {
        "idea": "A frog knight hops across sinking lily pads to save the pond"
      }
    }
  }
  ```

  ```bash CLI theme={null}
  summer projects create --idea 'A frog knight hops across sinking lily pads to save the pond'
  ```
</CodeGroup>

***

### get

`projects.get`: **Read a project**

Read one Summer project: name, kind, share state, where it opens, its game plan (planId for plans.get) and the idea it was made from. Next: plans.get with the planId.

| | |
| - | - |
| **MCP** | `summer_call` with `"op": "projects.get"` |
| **CLI** | `summer projects get` |
| **Runs** | On Summer's servers: the hosted MCP, or the npm MCP after `summer login`. Needs your Summer sign-in. |
| **Effect** | Reads only. Changes nothing. |
| **Asks you first** | No. It changes nothing. |
| **3.x names** | `summer_get_project` |

**Inputs:**

| Input | Type | Required | Description |
| - | - | - | - |
| `projectId` | string | Yes | From projects.list. |

<Accordion title="Input JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "projectId": {
        "description": "From projects.list.",
        "type": "string",
        "format": "uuid",
        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
      }
    },
    "required": [
      "projectId"
    ]
  }
  ```
</Accordion>

<Accordion title="Result JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "projectId": {
        "type": "string"
      },
      "name": {
        "type": "string"
      },
      "kind": {
        "description": "create: made in the browser; cloud: a cloud project; desktop: opens in Summer Engine on the computer.",
        "type": "string",
        "enum": [
          "create",
          "cloud",
          "desktop"
        ]
      },
      "editedAt": {
        "anyOf": [
          {
            "type": "string"
          },
          {
            "type": "null"
          }
        ]
      },
      "coverUrl": {
        "anyOf": [
          {
            "type": "string"
          },
          {
            "type": "null"
          }
        ]
      },
      "visibility": {
        "description": "draft, unlisted or public: how far a browser game is shared.",
        "type": "string"
      },
      "url": {
        "description": "Where it opens on the web; null opens in Summer Engine.",
        "anyOf": [
          {
            "type": "string"
          },
          {
            "type": "null"
          }
        ]
      },
      "planId": {
        "description": "The project's game plan, for plans.get.",
        "anyOf": [
          {
            "type": "string"
          },
          {
            "type": "null"
          }
        ]
      },
      "idea": {
        "description": "The idea it was made from, when made in the browser.",
        "anyOf": [
          {
            "type": "string"
          },
          {
            "type": "null"
          }
        ]
      },
      "address": {
        "description": "Where the browser game plays once shared.",
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "visibility": {
                "type": "string"
              },
              "slug": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "visibility",
              "slug"
            ],
            "additionalProperties": false
          },
          {
            "type": "null"
          }
        ]
      },
      "localPath": {
        "description": "Where a desktop project lives on the person's computer.",
        "anyOf": [
          {
            "type": "string"
          },
          {
            "type": "null"
          }
        ]
      }
    },
    "required": [
      "projectId",
      "name",
      "kind",
      "editedAt",
      "coverUrl",
      "visibility",
      "url",
      "planId",
      "idea",
      "address",
      "localPath"
    ],
    "additionalProperties": false
  }
  ```
</Accordion>

**Example:** Open the plan behind a project.

<CodeGroup>
  ```json MCP theme={null}
  {
    "name": "summer_call",
    "arguments": {
      "op": "projects.get",
      "input": {
        "projectId": "3f0c2a9e-7b1d-4c55-9a7e-2d1f0b6c8e41"
      }
    }
  }
  ```

  ```bash CLI theme={null}
  summer projects get --project-id 3f0c2a9e-7b1d-4c55-9a7e-2d1f0b6c8e41
  ```
</CodeGroup>

***

### list

`projects.list`: **List my projects**

List the person's Summer projects, newest edit first: project id, name, kind (browser, cloud or desktop), share state and where it opens. A project is not a store game (games.list). Next: projects.get.

| | |
| - | - |
| **MCP** | `summer_projects_list`, a tool on the hosted MCP. Elsewhere: `summer_call` with `"op": "projects.list"` |
| **CLI** | `summer projects list` |
| **Runs** | On Summer's servers: the hosted MCP, or the npm MCP after `summer login`. Needs your Summer sign-in. |
| **Effect** | Reads only. Changes nothing. |
| **Asks you first** | No. It changes nothing. |
| **3.x names** | `summer_list_projects`, `summer_list_games` |

**Inputs:**

| Input | Type | Required | Description |
| - | - | - | - |
| `limit` | integer | No | Default `10`. Range 1 to 50. |
| `cursor` | string | No | nextCursor from the previous page. |

<Accordion title="Input JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "limit": {
        "default": 10,
        "type": "integer",
        "minimum": 1,
        "maximum": 50
      },
      "cursor": {
        "description": "nextCursor from the previous page.",
        "type": "string",
        "pattern": "^\\d{1,3}$"
      }
    }
  }
  ```
</Accordion>

<Accordion title="Result JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "items": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "projectId": {
              "type": "string"
            },
            "name": {
              "type": "string"
            },
            "kind": {
              "description": "create: made in the browser; cloud: a cloud project; desktop: opens in Summer Engine on the computer.",
              "type": "string",
              "enum": [
                "create",
                "cloud",
                "desktop"
              ]
            },
            "editedAt": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ]
            },
            "coverUrl": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ]
            },
            "visibility": {
              "description": "draft, unlisted or public: how far a browser game is shared.",
              "type": "string"
            },
            "url": {
              "description": "Where it opens on the web; null opens in Summer Engine.",
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "required": [
            "projectId",
            "name",
            "kind",
            "editedAt",
            "coverUrl",
            "visibility",
            "url"
          ],
          "additionalProperties": false
        }
      },
      "nextCursor": {
        "anyOf": [
          {
            "type": "string"
          },
          {
            "type": "null"
          }
        ]
      }
    },
    "required": [
      "items",
      "nextCursor"
    ],
    "additionalProperties": false
  }
  ```
</Accordion>

**Example:** What has this person been making?

<CodeGroup>
  ```json MCP theme={null}
  {
    "name": "summer_projects_list",
    "arguments": {
      "limit": 10
    }
  }
  ```

  ```bash CLI theme={null}
  summer projects list --limit 10
  ```
</CodeGroup>

***

### open\_in\_engine

`projects.open_in_engine`: **Build a new game in Summer Engine**

Hand a game started with projects.create to Summer Engine on the person's computer: the download for Mac and Windows, the setup steps and the saved direction to build from. Nothing is built in the cloud. Next: follow the steps with the person.

| | |
| - | - |
| **MCP** | `summer_call` with `"op": "projects.open_in_engine"` |
| **CLI** | `summer projects open-in-engine` |
| **Runs** | On Summer's servers: the hosted MCP, or the npm MCP after `summer login`. Needs your Summer sign-in. |
| **Effect** | Reads only. Changes nothing. |
| **Asks you first** | No. It changes nothing. |
| **3.x names** | `summer_build_game` |

**Inputs:**

| Input | Type | Required | Description |
| - | - | - | - |
| `projectId` | string | Yes | The new game's project, from projects.create. |

<Accordion title="Input JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "projectId": {
        "description": "The new game's project, from projects.create.",
        "type": "string",
        "format": "uuid",
        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
      }
    },
    "required": [
      "projectId"
    ]
  }
  ```
</Accordion>

<Accordion title="Result JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "projectId": {
        "type": "string"
      },
      "title": {
        "type": "string"
      },
      "downloads": {
        "type": "object",
        "properties": {
          "macos": {
            "type": "string"
          },
          "windows": {
            "type": "string"
          }
        },
        "required": [
          "macos",
          "windows"
        ],
        "additionalProperties": false
      },
      "setup": {
        "description": "The steps and the direction, for the agent on the person's computer.",
        "type": "string"
      },
      "next": {
        "type": "string"
      }
    },
    "required": [
      "projectId",
      "title",
      "downloads",
      "setup",
      "next"
    ],
    "additionalProperties": false
  }
  ```
</Accordion>

**Example:** The person is happy with the plan; build it for real.

<CodeGroup>
  ```json MCP theme={null}
  {
    "name": "summer_call",
    "arguments": {
      "op": "projects.open_in_engine",
      "input": {
        "projectId": "0c6a1f60-1d8e-4f4c-8f0e-5a0b8b6f2d11"
      }
    }
  }
  ```

  ```bash CLI theme={null}
  summer projects open-in-engine --project-id 0c6a1f60-1d8e-4f4c-8f0e-5a0b8b6f2d11
  ```
</CodeGroup>

***

### preview\_build

`projects.preview_build`: **Play a cloud build**

A link that plays a finished cloud build of a plan in the browser, as Play in Studio does. The link works for about two minutes: give it to the person at once. Next: projects.builds.

| | |
| - | - |
| **MCP** | `summer_call` with `"op": "projects.preview_build"` |
| **CLI** | `summer projects preview-build` |
| **Runs** | On Summer's servers: the hosted MCP, or the npm MCP after `summer login`. Needs your Summer sign-in. |
| **Effect** | Reads only. Changes nothing. |
| **Asks you first** | No. It changes nothing. |

**Inputs:**

| Input | Type | Required | Description |
| - | - | - | - |
| `planId` | string | Yes | From plans.list. |
| `buildId` | string | Yes | From projects.builds. |

<Accordion title="Input JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "planId": {
        "description": "From plans.list.",
        "type": "string",
        "format": "uuid",
        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
      },
      "buildId": {
        "description": "From projects.builds.",
        "type": "string",
        "format": "uuid",
        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
      }
    },
    "required": [
      "planId",
      "buildId"
    ]
  }
  ```
</Accordion>

<Accordion title="Result JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "url": {
        "type": "string"
      },
      "expiresAt": {
        "type": "string"
      },
      "runtimeVersion": {
        "type": "string"
      }
    },
    "required": [
      "url",
      "expiresAt",
      "runtimeVersion"
    ],
    "additionalProperties": false
  }
  ```
</Accordion>

**Example:** Let the person play the build.

<CodeGroup>
  ```json MCP theme={null}
  {
    "name": "summer_call",
    "arguments": {
      "op": "projects.preview_build",
      "input": {
        "planId": "7b0c2f7e-5d4b-4c5e-9a43-2f0d8f1c9a10",
        "buildId": "3b5c7d9e-2f4a-4b6c-9d8e-0f1a2b3c4d5e"
      }
    }
  }
  ```

  ```bash CLI theme={null}
  summer projects preview-build --plan-id 7b0c2f7e-5d4b-4c5e-9a43-2f0d8f1c9a10 --build-id 3b5c7d9e-2f4a-4b6c-9d8e-0f1a2b3c4d5e
  ```
</CodeGroup>

***

### rename

`projects.rename`: **Rename a new game**

Rename a game started on the create page or with projects.create: its project, its plan and the concept kept for Summer Engine take the new name. Next: plans.show.

| | |
| - | - |
| **MCP** | `summer_call` with `"op": "projects.rename"` |
| **CLI** | `summer projects rename` |
| **Runs** | On Summer's servers: the hosted MCP, or the npm MCP after `summer login`. Needs your Summer sign-in. |
| **Effect** | Changes your own drafts, files or settings. Nobody else sees it yet. |
| **Asks you first** | No: **Make and build** is on by default in Agent permissions. When it is off, your agent asks you first. |

**Inputs:**

| Input | Type | Required | Description |
| - | - | - | - |
| `projectId` | string | Yes | The new game's project, from projects.create. |
| `name` | string | Yes | The game's new name. Length 1 to 80. |
| `dryRun` | boolean | No | Check and describe the call without doing it: nothing changes, nothing is spent. |
| `idempotencyKey` | string | No | Retry key. Reuse it only to retry the identical request, so it never happens twice. Length 1 to 128. |

<Accordion title="Input JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "projectId": {
        "description": "The new game's project, from projects.create.",
        "type": "string",
        "format": "uuid",
        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
      },
      "name": {
        "description": "The game's new name.",
        "type": "string",
        "minLength": 1,
        "maxLength": 80
      },
      "dryRun": {
        "description": "Check and describe the call without doing it: nothing changes, nothing is spent.",
        "type": "boolean"
      },
      "idempotencyKey": {
        "description": "Retry key. Reuse it only to retry the identical request, so it never happens twice.",
        "type": "string",
        "minLength": 1,
        "maxLength": 128
      }
    },
    "required": [
      "projectId",
      "name"
    ]
  }
  ```
</Accordion>

<Accordion title="Result JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "projectId": {
        "type": "string"
      },
      "title": {
        "type": "string"
      }
    },
    "required": [
      "projectId",
      "title"
    ],
    "additionalProperties": false
  }
  ```
</Accordion>

**Example:** A better name.

<CodeGroup>
  ```json MCP theme={null}
  {
    "name": "summer_call",
    "arguments": {
      "op": "projects.rename",
      "input": {
        "projectId": "0c6a1f60-1d8e-4f4c-8f0e-5a0b8b6f2d11",
        "name": "Pond Knight"
      }
    }
  }
  ```

  ```bash CLI theme={null}
  summer projects rename --project-id 0c6a1f60-1d8e-4f4c-8f0e-5a0b8b6f2d11 --name 'Pond Knight'
  ```
</CodeGroup>


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