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

> Your teams: list, create, rename and invite. For each operation: what it does, whether it asks you first, its inputs and an example call.

Your teams: list, create, rename and invite. 5 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 |
| - | - | - |
| [`team.create`](#create) | Create a team (a shared workspace) in Summer Studio with the person as its owner. | Not by default |
| [`team.invite`](#invite) | Invite someone by email to one of the person's teams in Summer Studio; Summer emails them a link. | Yes, by default |
| [`team.list`](#list) | The person's teams in Summer Studio (shared workspaces). | Never |
| [`team.rename`](#rename) | Rename one of the person's teams in Summer Studio. | Not by default |
| [`team.withdraw_invite`](#withdraw_invite) | Withdraw a pending invite to one of the person's teams, so its link stops working. | Yes, by default |

***

### create

`team.create`: **Create a team**

Create a team (a shared workspace) in Summer Studio with the person as its owner. Nobody else is in it yet. Returns the team id. Next: team.invite.

| | |
| - | - |
| **MCP** | `summer_call` with `"op": "team.create"` |
| **CLI** | `summer team create` |
| **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. |
| **3.x names** | `summer_team#create` |

**Inputs:**

| Input | Type | Required | Description |
| - | - | - | - |
| `name` | string | Yes | Length 1 to 120. |
| `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": {
        "type": "string",
        "minLength": 1,
        "maxLength": 120
      },
      "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": {
      "created": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "name"
        ],
        "additionalProperties": false
      },
      "studioUrl": {
        "type": "string"
      }
    },
    "required": [
      "created",
      "studioUrl"
    ],
    "additionalProperties": false
  }
  ```
</Accordion>

**Example:** A team for the studio.

<CodeGroup>
  ```json MCP theme={null}
  {
    "name": "summer_call",
    "arguments": {
      "op": "team.create",
      "input": {
        "name": "Night Shift Games"
      }
    }
  }
  ```

  ```bash CLI theme={null}
  summer team create --name 'Night Shift Games'
  ```
</CodeGroup>

***

### invite

`team.invite`: **Invite someone to a team**

Invite someone by email to one of the person's teams in Summer Studio; Summer emails them a link. Runs when the person allows Contact people (off by default); otherwise answers needs\_approval with a link and sends nothing.

| | |
| - | - |
| **MCP** | `summer_call` with `"op": "team.invite"` |
| **CLI** | `summer team invite` |
| **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** | Yes: **Contact people** is off by default in Agent permissions. |
| **3.x names** | `summer_team#invite` |

**Inputs:**

| Input | Type | Required | Description |
| - | - | - | - |
| `teamId` | string | No | From team.list (a team's exact name works too). Length 1 to 120. |
| `email` | string | Yes | Who to invite. Length 0 to 254. |
| `role` | "admin" \| "member" | No | Default `"member"`. |
| `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": {
      "teamId": {
        "description": "From team.list (a team's exact name works too).",
        "type": "string",
        "minLength": 1,
        "maxLength": 120
      },
      "email": {
        "description": "Who to invite.",
        "type": "string",
        "maxLength": 254,
        "format": "email",
        "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
      },
      "role": {
        "default": "member",
        "type": "string",
        "enum": [
          "admin",
          "member"
        ]
      },
      "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": [
      "email"
    ]
  }
  ```
</Accordion>

<Accordion title="Result JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "workspace": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "name"
        ],
        "additionalProperties": false
      },
      "invited": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string"
          },
          "role": {
            "type": "string"
          }
        },
        "required": [
          "email",
          "role"
        ],
        "additionalProperties": false
      },
      "emailSent": {
        "type": "boolean"
      },
      "inviteUrl": {
        "type": "string"
      },
      "note": {
        "type": "string"
      },
      "studioUrl": {
        "type": "string"
      }
    },
    "required": [
      "workspace",
      "invited",
      "emailSent",
      "inviteUrl",
      "note",
      "studioUrl"
    ],
    "additionalProperties": false
  }
  ```
</Accordion>

**Example:** Invite Sam to the team.

<CodeGroup>
  ```json MCP theme={null}
  {
    "name": "summer_call",
    "arguments": {
      "op": "team.invite",
      "input": {
        "email": "sam@example.com"
      }
    }
  }
  ```

  ```bash CLI theme={null}
  summer team invite --email sam@example.com
  ```
</CodeGroup>

***

### list

`team.list`: **List my teams**

The person's teams in Summer Studio (shared workspaces). With teamId, or when they have one shared team: its members and pending invites. Next: team.invite or team.create.

| | |
| - | - |
| **MCP** | `summer_call` with `"op": "team.list"` |
| **CLI** | `summer team 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_team` |

**Inputs:**

| Input | Type | Required | Description |
| - | - | - | - |
| `teamId` | string | No | From team.list (a team's exact name works too). Length 1 to 120. |

<Accordion title="Input JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "teamId": {
        "description": "From team.list (a team's exact name works too).",
        "type": "string",
        "minLength": 1,
        "maxLength": 120
      }
    }
  }
  ```
</Accordion>

<Accordion title="Result JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "teams": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "id": {
              "type": "string"
            },
            "name": {
              "type": "string"
            },
            "kind": {
              "type": "string"
            },
            "yourRole": {
              "type": "string"
            },
            "canInvite": {
              "type": "boolean"
            }
          },
          "required": [
            "id",
            "name",
            "kind",
            "yourRole",
            "canInvite"
          ],
          "additionalProperties": false
        }
      },
      "team": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "kind": {
            "type": "string"
          },
          "yourRole": {
            "type": "string"
          },
          "canInvite": {
            "type": "boolean"
          }
        },
        "required": [
          "id",
          "name",
          "kind",
          "yourRole",
          "canInvite"
        ],
        "additionalProperties": false
      },
      "members": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "name": {
              "type": "string"
            },
            "role": {
              "type": "string"
            },
            "owner": {
              "type": "boolean"
            },
            "you": {
              "type": "boolean"
            }
          },
          "required": [
            "name",
            "role",
            "owner",
            "you"
          ],
          "additionalProperties": false
        }
      },
      "invites": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "id": {
              "type": "string"
            },
            "email": {
              "type": "string"
            },
            "role": {
              "type": "string"
            },
            "expiresAt": {}
          },
          "required": [
            "id",
            "email",
            "role",
            "expiresAt"
          ],
          "additionalProperties": false
        }
      },
      "note": {
        "type": "string"
      },
      "studioUrl": {
        "type": "string"
      }
    },
    "required": [
      "studioUrl"
    ],
    "additionalProperties": false
  }
  ```
</Accordion>

**Example:** Which teams am I on, and who is in them?

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

  ```bash CLI theme={null}
  summer team list
  ```
</CodeGroup>

***

### rename

`team.rename`: **Rename a team**

Rename one of the person's teams in Summer Studio. Its members see the new name. Next: team.list.

| | |
| - | - |
| **MCP** | `summer_call` with `"op": "team.rename"` |
| **CLI** | `summer team 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. |
| **3.x names** | `summer_team#rename` |

**Inputs:**

| Input | Type | Required | Description |
| - | - | - | - |
| `teamId` | string | Yes | From team.list (a team's exact name works too). Length 1 to 120. |
| `name` | string | Yes | Length 1 to 120. |
| `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": {
      "teamId": {
        "description": "From team.list (a team's exact name works too).",
        "type": "string",
        "minLength": 1,
        "maxLength": 120
      },
      "name": {
        "type": "string",
        "minLength": 1,
        "maxLength": 120
      },
      "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": [
      "teamId",
      "name"
    ]
  }
  ```
</Accordion>

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

**Example:** A shorter name.

<CodeGroup>
  ```json MCP theme={null}
  {
    "name": "summer_call",
    "arguments": {
      "op": "team.rename",
      "input": {
        "teamId": "ws_1",
        "name": "Night Shift"
      }
    }
  }
  ```

  ```bash CLI theme={null}
  summer team rename --team-id ws_1 --name 'Night Shift'
  ```
</CodeGroup>

***

### withdraw\_invite

`team.withdraw_invite`: **Withdraw a team invite**

Withdraw a pending invite to one of the person's teams, so its link stops working. Runs when the person allows Delete for good (off by default); otherwise answers needs\_approval with a link.

| | |
| - | - |
| **MCP** | `summer_call` with `"op": "team.withdraw_invite"` |
| **CLI** | `summer team withdraw-invite` |
| **Runs** | On Summer's servers: the hosted MCP, or the npm MCP after `summer login`. Needs your Summer sign-in. |
| **Effect** | Removes or stops something for good. |
| **Asks you first** | Yes: **Delete for good** is off by default in Agent permissions. |
| **3.x names** | `summer_team#revoke` |

**Inputs:**

| Input | Type | Required | Description |
| - | - | - | - |
| `teamId` | string | No | From team.list (a team's exact name works too). Length 1 to 120. |
| `inviteId` | string | Yes | An invite id from team.list. Length 1 to 128. |
| `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": {
      "teamId": {
        "description": "From team.list (a team's exact name works too).",
        "type": "string",
        "minLength": 1,
        "maxLength": 120
      },
      "inviteId": {
        "description": "An invite id from team.list.",
        "type": "string",
        "minLength": 1,
        "maxLength": 128
      },
      "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": [
      "inviteId"
    ]
  }
  ```
</Accordion>

<Accordion title="Result JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "workspace": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "name"
        ],
        "additionalProperties": false
      },
      "revoked": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string"
          }
        },
        "required": [
          "email"
        ],
        "additionalProperties": false
      },
      "studioUrl": {
        "type": "string"
      }
    },
    "required": [
      "workspace",
      "revoked",
      "studioUrl"
    ],
    "additionalProperties": false
  }
  ```
</Accordion>

**Example:** Cancel the pending invite.

<CodeGroup>
  ```json MCP theme={null}
  {
    "name": "summer_call",
    "arguments": {
      "op": "team.withdraw_invite",
      "input": {
        "inviteId": "inv_9"
      }
    }
  }
  ```

  ```bash CLI theme={null}
  summer team withdraw-invite --invite-id inv_9
  ```
</CodeGroup>


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