> ## 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: profile

> Your public profile and Studio settings. For each operation: what it does, whether it asks you first, its inputs and an example call.

Your public profile and Studio settings. 6 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 |
| - | - | - |
| [`profile.claim_creator_name`](#claim_creator_name) | Claim the person's public creator name with their character, as Claim on the creator card does; a portrait drawn for them becomes their avatar. | Not by default |
| [`profile.draw_creator_character`](#draw_creator_character) | Draw a portrait of the fantasy character for the person's creator card, as Draw again on the card does. | Not by default |
| [`profile.get`](#get) | Read the person's public profile (username, bio, location, avatar, language, links), their Studio settings (emails, who sees new assets) and their creator name. | Never |
| [`profile.set_settings`](#set_settings) | Change the person's Studio settings, as Studio > Settings does: email notifications, usage alerts, product update emails, and whether new assets start public or private (private needs a paid plan). | Not by default |
| [`profile.update`](#update) | Change the person's public profile, as Save on Studio > Settings > Profile does: username (also their profile address; a taken one gets a variation), bio, location, avatar, language, launch video. | Not by default |
| [`profile.update_links`](#update_links) | Set the links on the person's public profile (website, socials), replacing the ones there, as Save on Studio > Settings > Profile does. | Not by default |

***

### claim\_creator\_name

`profile.claim_creator_name`: **Claim my creator name**

Claim the person's public creator name with their character, as Claim on the creator card does; a portrait drawn for them becomes their avatar. Everyone sees the name. Needs the owner's approval. Next: profile.get.

| | |
| - | - |
| **MCP** | `summer_call` with `"op": "profile.claim_creator_name"` |
| **CLI** | `summer profile claim-creator-name` |
| **Runs** | On Summer's servers: the hosted MCP, or the npm MCP after `summer login`. Needs your Summer sign-in. |
| **Effect** | Publishes: makes something public or live. |
| **Asks you first** | No: **Publish** is on by default in Agent permissions. When it is off, your agent asks you first. |

**Inputs:**

| Input | Type | Required | Description |
| - | - | - | - |
| `name` | string | Yes | The creator name: 3 to 24 letters, numbers, - or \\\_. Length 3 to 25. |
| `character` | "moon-elf" \| "orc" \| "troll" \| "dwarf" \| "human" \| "gnome" \| "fae" | No | Default: the character they have. |
| `portraitUrl` | string | No | A portrait from profile.draw\_creator\_character; without one the card shows their initials. Length 0 to 2000. |
| `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": {
      "name": {
        "description": "The creator name: 3 to 24 letters, numbers, - or _.",
        "type": "string",
        "minLength": 3,
        "maxLength": 25
      },
      "character": {
        "description": "Default: the character they have.",
        "type": "string",
        "enum": [
          "moon-elf",
          "orc",
          "troll",
          "dwarf",
          "human",
          "gnome",
          "fae"
        ]
      },
      "portraitUrl": {
        "description": "A portrait from profile.draw_creator_character; without one the card shows their initials.",
        "type": "string",
        "maxLength": 2000
      },
      "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": [
      "name"
    ]
  }
  ```
</Accordion>

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

**Example:** Claim a creator name.

<CodeGroup>
  ```json MCP theme={null}
  {
    "name": "summer_call",
    "arguments": {
      "op": "profile.claim_creator_name",
      "input": {
        "name": "frogknight",
        "character": "fae"
      }
    }
  }
  ```

  ```bash CLI theme={null}
  summer profile claim-creator-name --name frogknight --character fae
  ```
</CodeGroup>

***

### draw\_creator\_character

`profile.draw_creator_character`: **Draw my creator character**

Draw a portrait of the fantasy character for the person's creator card, as Draw again on the card does. Spends the person's credits. Returns the portrait, which profile.claim\_creator\_name can use. Next: profile.claim\_creator\_name.

| | |
| - | - |
| **MCP** | `summer_call` with `"op": "profile.draw_creator_character"` |
| **CLI** | `summer profile draw-creator-character` |
| **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. |

**Inputs:**

| Input | Type | Required | Description |
| - | - | - | - |
| `character` | "moon-elf" \| "orc" \| "troll" \| "dwarf" \| "human" \| "gnome" \| "fae" | Yes | The kind of character to draw. |
| `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": {
      "character": {
        "description": "The kind of character to draw.",
        "type": "string",
        "enum": [
          "moon-elf",
          "orc",
          "troll",
          "dwarf",
          "human",
          "gnome",
          "fae"
        ]
      },
      "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": [
      "character"
    ]
  }
  ```
</Accordion>

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

**Example:** Draw a moon elf for the creator card.

<CodeGroup>
  ```json MCP theme={null}
  {
    "name": "summer_call",
    "arguments": {
      "op": "profile.draw_creator_character",
      "input": {
        "character": "moon-elf"
      }
    }
  }
  ```

  ```bash CLI theme={null}
  summer profile draw-creator-character --character moon-elf
  ```
</CodeGroup>

***

### get

`profile.get`: **Read my profile and settings**

Read the person's public profile (username, bio, location, avatar, language, links), their Studio settings (emails, who sees new assets) and their creator name. Next: profile.update or profile.set\_settings.

| | |
| - | - |
| **MCP** | `summer_call` with `"op": "profile.get"` |
| **CLI** | `summer profile 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. |

**Inputs:**

No inputs.

<Accordion title="Input JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {}
  }
  ```
</Accordion>

<Accordion title="Result JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "username": {
        "anyOf": [
          {
            "type": "string"
          },
          {
            "type": "null"
          }
        ]
      },
      "bio": {
        "anyOf": [
          {
            "type": "string"
          },
          {
            "type": "null"
          }
        ]
      },
      "location": {
        "anyOf": [
          {
            "type": "string"
          },
          {
            "type": "null"
          }
        ]
      },
      "avatarUrl": {
        "anyOf": [
          {
            "type": "string"
          },
          {
            "type": "null"
          }
        ]
      },
      "language": {
        "type": "string"
      },
      "launchVideo": {
        "type": "boolean"
      },
      "links": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "platform": {
              "type": "string",
              "enum": [
                "website",
                "twitter",
                "github",
                "discord",
                "youtube",
                "twitch",
                "linkedin"
              ]
            },
            "url": {
              "type": "string",
              "minLength": 1,
              "maxLength": 500
            },
            "label": {
              "type": "string",
              "maxLength": 60
            }
          },
          "required": [
            "platform",
            "url"
          ],
          "additionalProperties": false
        }
      },
      "settings": {
        "type": "object",
        "properties": {
          "emailNotifications": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ]
          },
          "usageAlerts": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ]
          },
          "productUpdates": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ]
          },
          "newAssets": {
            "type": "string"
          }
        },
        "required": [
          "emailNotifications",
          "usageAlerts",
          "productUpdates",
          "newAssets"
        ],
        "additionalProperties": false
      },
      "creator": {
        "description": "The creator name they claimed, or null.",
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "name": {
                "type": "string"
              },
              "character": {
                "type": "string"
              },
              "portraitUrl": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "name",
              "character",
              "portraitUrl"
            ],
            "additionalProperties": false
          },
          {
            "type": "null"
          }
        ]
      },
      "studioUrl": {
        "type": "string"
      }
    },
    "required": [
      "username",
      "bio",
      "location",
      "avatarUrl",
      "language",
      "launchVideo",
      "links",
      "settings",
      "creator",
      "studioUrl"
    ],
    "additionalProperties": false
  }
  ```
</Accordion>

**Example:** What does the person's profile say now?

<CodeGroup>
  ```json MCP theme={null}
  {
    "name": "summer_call",
    "arguments": {
      "op": "profile.get",
      "input": {}
    }
  }
  ```

  ```bash CLI theme={null}
  summer profile get
  ```
</CodeGroup>

***

### set\_settings

`profile.set_settings`: **Change my Studio settings**

Change the person's Studio settings, as Studio > Settings does: email notifications, usage alerts, product update emails, and whether new assets start public or private (private needs a paid plan). Next: profile.get.

| | |
| - | - |
| **MCP** | `summer_call` with `"op": "profile.set_settings"` |
| **CLI** | `summer profile set-settings` |
| **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 |
| - | - | - | - |
| `emailNotifications` | boolean | No | |
| `usageAlerts` | boolean | No | |
| `productUpdates` | boolean | No | Product update emails. |
| `newAssets` | "public" \| "private" | No | Who sees the assets they make from now on. |
| `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": {
      "emailNotifications": {
        "type": "boolean"
      },
      "usageAlerts": {
        "type": "boolean"
      },
      "productUpdates": {
        "description": "Product update emails.",
        "type": "boolean"
      },
      "newAssets": {
        "description": "Who sees the assets they make from now on.",
        "type": "string",
        "enum": [
          "public",
          "private"
        ]
      },
      "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
      }
    }
  }
  ```
</Accordion>

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

**Example:** No more product update emails.

<CodeGroup>
  ```json MCP theme={null}
  {
    "name": "summer_call",
    "arguments": {
      "op": "profile.set_settings",
      "input": {
        "productUpdates": false
      }
    }
  }
  ```

  ```bash CLI theme={null}
  summer profile set-settings --no-product-updates
  ```
</CodeGroup>

***

### update

`profile.update`: **Change my profile**

Change the person's public profile, as Save on Studio > Settings > Profile does: username (also their profile address; a taken one gets a variation), bio, location, avatar, language, launch video. Next: profile.get.

| | |
| - | - |
| **MCP** | `summer_call` with `"op": "profile.update"` |
| **CLI** | `summer profile update` |
| **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 |
| - | - | - | - |
| `username` | string | No | Length 1 to 60. |
| `bio` | string | No | Length 0 to 500. |
| `location` | string | No | Length 0 to 100. |
| `avatarUrl` | string | No | An https link to a picture. Length 0 to 500. |
| `language` | "auto" \| "en" \| "zh" \| "ja" \| "es" \| "de" \| "pt" | No | auto follows the engine's language. |
| `launchVideo` | boolean | No | Play the launch video when Summer Engine starts. |
| `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": {
      "username": {
        "type": "string",
        "minLength": 1,
        "maxLength": 60
      },
      "bio": {
        "type": "string",
        "maxLength": 500
      },
      "location": {
        "type": "string",
        "maxLength": 100
      },
      "avatarUrl": {
        "description": "An https link to a picture.",
        "type": "string",
        "maxLength": 500
      },
      "language": {
        "description": "auto follows the engine's language.",
        "type": "string",
        "enum": [
          "auto",
          "en",
          "zh",
          "ja",
          "es",
          "de",
          "pt"
        ]
      },
      "launchVideo": {
        "description": "Play the launch video when Summer Engine starts.",
        "type": "boolean"
      },
      "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
      }
    }
  }
  ```
</Accordion>

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

**Example:** A new bio.

<CodeGroup>
  ```json MCP theme={null}
  {
    "name": "summer_call",
    "arguments": {
      "op": "profile.update",
      "input": {
        "bio": "I make cozy games about frogs."
      }
    }
  }
  ```

  ```bash CLI theme={null}
  summer profile update --bio 'I make cozy games about frogs.'
  ```
</CodeGroup>

***

### update\_links

`profile.update_links`: **Set my profile links**

Set the links on the person's public profile (website, socials), replacing the ones there, as Save on Studio > Settings > Profile does. Up to 10. Next: profile.get.

| | |
| - | - |
| **MCP** | `summer_call` with `"op": "profile.update_links"` |
| **CLI** | `summer profile update-links` |
| **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 |
| - | - | - | - |
| `links` | object\[] | Yes | Every link the profile should show, in order; an empty list removes them all. Items 0 to 10. |
| `links[].platform` | "website" \| "twitter" \| "github" \| "discord" \| "youtube" \| "twitch" \| "linkedin" | Yes | |
| `links[].url` | string | Yes | Length 1 to 500. |
| `links[].label` | string | No | Length 0 to 60. |
| `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": {
      "links": {
        "description": "Every link the profile should show, in order; an empty list removes them all.",
        "maxItems": 10,
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "platform": {
              "type": "string",
              "enum": [
                "website",
                "twitter",
                "github",
                "discord",
                "youtube",
                "twitch",
                "linkedin"
              ]
            },
            "url": {
              "type": "string",
              "minLength": 1,
              "maxLength": 500
            },
            "label": {
              "type": "string",
              "maxLength": 60
            }
          },
          "required": [
            "platform",
            "url"
          ]
        }
      },
      "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": [
      "links"
    ]
  }
  ```
</Accordion>

<Accordion title="Result JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "links": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "platform": {
              "type": "string",
              "enum": [
                "website",
                "twitter",
                "github",
                "discord",
                "youtube",
                "twitch",
                "linkedin"
              ]
            },
            "url": {
              "type": "string",
              "minLength": 1,
              "maxLength": 500
            },
            "label": {
              "type": "string",
              "maxLength": 60
            }
          },
          "required": [
            "platform",
            "url"
          ],
          "additionalProperties": false
        }
      },
      "studioUrl": {
        "type": "string"
      }
    },
    "required": [
      "links",
      "studioUrl"
    ],
    "additionalProperties": false
  }
  ```
</Accordion>

**Example:** Show their website on the profile.

<CodeGroup>
  ```json MCP theme={null}
  {
    "name": "summer_call",
    "arguments": {
      "op": "profile.update_links",
      "input": {
        "links": [
          {
            "platform": "website",
            "url": "https://frogknight.games"
          }
        ]
      }
    }
  }
  ```

  ```bash CLI theme={null}
  summer profile update-links --input '{"links":[{"platform":"website","url":"https://frogknight.games"}]}'
  ```
</CodeGroup>


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