Generated from the operation catalog:
src/lib/ops/public-catalog.json in publicsummerengine at 0d85f61e2b and the summer-engine npm package 4.0.0 for engine and local operations. If something here is wrong, the operation’s definition is wrong.| Operation | What it does | Asks you first |
|---|---|---|
games.create | Create a game on Summer Games with its first store page draft; nothing is published. | Not by default |
games.get | Read one of the person’s games on Summer Games: name, store address, status, targets, tagline and when it changed. | Never |
games.invite_member | Invite someone by email to work on a game, with a role; Summer emails them a link. | Yes, by default |
games.leave | Leave a game the person works on, so they lose access to it; the owner cannot leave. | Yes, by default |
games.list | List the person’s games on Summer Games: game id, name, status, targets and store link, newest change first. | Never |
games.members | The people on one game on Summer Games: members and their roles, pending invites, the person’s own role and whether they may manage members. | Never |
games.remove_member | Remove a member from a game, so they lose access to it. | Yes, by default |
games.set_member_role | Change what a member may do on a game (admin, developer or viewer). | Yes, for now |
games.withdraw_invite | Withdraw a pending invite to a game, so its link stops working. | Yes, by default |
create
games.create: Create a game
Create a game on Summer Games with its first store page draft; nothing is published. Include web in targets so it can play in the browser. Returns the game id. Next: store.update_listing, store.set_art, store.upload_begin.
| MCP | summer_call with "op": "games.create" |
| CLI | summer games 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_store_create_game |
| Input | Type | Required | Description |
|---|---|---|---|
title | string | Yes | Length 1 to 60. |
targets | ”web” | “windows-x64” | “macos-universal” | “linux-x64” | “ios” | “android”[] | Yes | web, macos-universal, windows-x64 and linux-x64 open the desktop store; ios and android the mobile store. Items 1 to …. |
tagline | string | No | Default "". Length 0 to 80. |
description | string | No | Default "". Length 0 to 300. |
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. |
Input JSON schema
Input JSON schema
{
"type": "object",
"properties": {
"title": {
"type": "string",
"minLength": 1,
"maxLength": 60
},
"targets": {
"description": "web, macos-universal, windows-x64 and linux-x64 open the desktop store; ios and android the mobile store.",
"minItems": 1,
"type": "array",
"items": {
"type": "string",
"enum": [
"web",
"windows-x64",
"macos-universal",
"linux-x64",
"ios",
"android"
]
}
},
"tagline": {
"default": "",
"type": "string",
"maxLength": 80
},
"description": {
"default": "",
"type": "string",
"maxLength": 300
},
"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": [
"title",
"targets"
],
"additionalProperties": false
}
Result JSON schema
Result JSON schema
{
"type": "object",
"properties": {
"gameId": {
"type": "string"
},
"revisionId": {
"type": "string"
},
"storeUrl": {
"type": "string"
}
},
"required": [
"gameId",
"revisionId",
"storeUrl"
],
"additionalProperties": false
}
{
"name": "summer_call",
"arguments": {
"op": "games.create",
"input": {
"title": "Quilt",
"targets": [
"web",
"macos-universal"
],
"tagline": "Stitch the world back together"
}
}
}
summer games create --title Quilt --targets web --targets macos-universal --tagline 'Stitch the world back together'
get
games.get: Read a game
Read one of the person’s games on Summer Games: name, store address, status, targets, tagline and when it changed. Next: store.status for review, uploads and releases, or store.get_listing for the page.
| MCP | summer_call with "op": "games.get" |
| CLI | summer games 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. |
| Input | Type | Required | Description |
|---|---|---|---|
gameId | string | Yes | From games.list. |
Input JSON schema
Input JSON schema
{
"type": "object",
"properties": {
"gameId": {
"description": "From games.list.",
"type": "string",
"pattern": "^[A-Za-z0-9_-]{1,128}$"
}
},
"required": [
"gameId"
]
}
Result JSON schema
Result JSON schema
{
"type": "object",
"properties": {
"gameId": {
"type": "string"
},
"name": {
"type": "string"
},
"slug": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"status": {
"type": "string"
},
"targets": {
"type": "array",
"items": {
"type": "string"
}
},
"storeUrl": {
"type": "string"
},
"updatedAt": {
"type": "string"
},
"tagline": {
"type": "string"
},
"description": {
"type": "string"
},
"pageRevisionId": {
"description": "The store page version Summer Games shows now, if any.",
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"createdAt": {
"type": "string"
}
},
"required": [
"gameId",
"name",
"slug",
"status",
"targets",
"storeUrl",
"updatedAt",
"tagline",
"description",
"pageRevisionId",
"createdAt"
],
"additionalProperties": false
}
{
"name": "summer_call",
"arguments": {
"op": "games.get",
"input": {
"gameId": "g_123"
}
}
}
summer games get --game-id g_123
invite_member
games.invite_member: Invite someone to a game
Invite someone by email to work on a game, with a role; 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": "games.invite_member" |
| CLI | summer games invite-member |
| 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_grow_members#invite |
| Input | Type | Required | Description |
|---|---|---|---|
gameId | string | Yes | From games.list. |
email | string | Yes | Who to invite. Length 0 to 254. |
role | ”admin” | “developer” | “viewer” | Yes | admin, developer or viewer (games.members lists what each can do). |
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. |
Input JSON schema
Input JSON schema
{
"type": "object",
"properties": {
"gameId": {
"description": "From games.list.",
"type": "string",
"pattern": "^[A-Za-z0-9_-]{1,128}$"
},
"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": {
"description": "admin, developer or viewer (games.members lists what each can do).",
"type": "string",
"enum": [
"admin",
"developer",
"viewer"
]
},
"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": [
"gameId",
"email",
"role"
]
}
Result JSON schema
Result JSON schema
{
"type": "object",
"properties": {
"game": {
"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": [
"game",
"invited",
"emailSent",
"inviteUrl",
"note",
"studioUrl"
],
"additionalProperties": false
}
{
"name": "summer_call",
"arguments": {
"op": "games.invite_member",
"input": {
"gameId": "g_123",
"email": "sam@example.com",
"role": "developer"
}
}
}
summer games invite-member --game-id g_123 --email sam@example.com --role developer
leave
games.leave: Leave a game
Leave a game the person works on, so they lose access to it; the owner cannot leave. Runs when the person allows Delete for good (off by default); otherwise answers needs_approval with a link.
| MCP | summer_call with "op": "games.leave" |
| CLI | summer games leave |
| 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_grow_members#leave |
| Input | Type | Required | Description |
|---|---|---|---|
gameId | string | Yes | From games.list. |
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. |
Input JSON schema
Input JSON schema
{
"type": "object",
"properties": {
"gameId": {
"description": "From games.list.",
"type": "string",
"pattern": "^[A-Za-z0-9_-]{1,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": [
"gameId"
]
}
Result JSON schema
Result JSON schema
{
"type": "object",
"properties": {
"game": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"id",
"name"
],
"additionalProperties": false
},
"left": {
"type": "boolean"
}
},
"required": [
"game",
"left"
],
"additionalProperties": false
}
{
"name": "summer_call",
"arguments": {
"op": "games.leave",
"input": {
"gameId": "g_123"
}
}
}
summer games leave --game-id g_123
list
games.list: List my games
List the person’s games on Summer Games: game id, name, status, targets and store link, newest change first. Next: store.get_listing or analytics.summary with a gameId.
| MCP | summer_games_list, a tool on the hosted MCP. Elsewhere: summer_call with "op": "games.list" |
| CLI | summer games 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_store_list_games |
| Input | Type | Required | Description |
|---|---|---|---|
limit | integer | No | Default 20. Range 1 to 50. |
cursor | string | No | nextCursor from the previous page. |
Input JSON schema
Input JSON schema
{
"type": "object",
"properties": {
"limit": {
"default": 20,
"type": "integer",
"minimum": 1,
"maximum": 50
},
"cursor": {
"description": "nextCursor from the previous page.",
"type": "string",
"pattern": "^\\d{1,3}$"
}
}
}
Result JSON schema
Result JSON schema
{
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"gameId": {
"type": "string"
},
"name": {
"type": "string"
},
"slug": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"status": {
"type": "string"
},
"targets": {
"type": "array",
"items": {
"type": "string"
}
},
"storeUrl": {
"type": "string"
},
"updatedAt": {
"type": "string"
}
},
"required": [
"gameId",
"name",
"slug",
"status",
"targets",
"storeUrl",
"updatedAt"
],
"additionalProperties": false
}
},
"nextCursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"items",
"nextCursor"
],
"additionalProperties": false
}
{
"name": "summer_games_list",
"arguments": {
"limit": 20
}
}
summer games list --limit 20
members
games.members: List a game’s members
The people on one game on Summer Games: members and their roles, pending invites, the person’s own role and whether they may manage members. Next: games.invite_member or games.set_member_role.
| MCP | summer_call with "op": "games.members" |
| CLI | summer games members |
| 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_grow_members |
| Input | Type | Required | Description |
|---|---|---|---|
gameId | string | Yes | From games.list. |
Input JSON schema
Input JSON schema
{
"type": "object",
"properties": {
"gameId": {
"description": "From games.list.",
"type": "string",
"pattern": "^[A-Za-z0-9_-]{1,128}$"
}
},
"required": [
"gameId"
]
}
Result JSON schema
Result JSON schema
{
"type": "object",
"properties": {
"game": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"id",
"name"
],
"additionalProperties": false
},
"yourRole": {
"type": "string"
},
"canManage": {
"type": "boolean"
},
"members": {
"type": "array",
"items": {
"type": "object",
"properties": {
"userId": {
"type": "string"
},
"name": {
"type": "string"
},
"handle": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"role": {
"type": "string"
},
"you": {
"type": "boolean"
}
},
"required": [
"userId",
"name",
"handle",
"role",
"you"
],
"additionalProperties": false
}
},
"invitations": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"email": {
"type": "string"
},
"role": {
"type": "string"
},
"expiresAt": {
"type": "string"
}
},
"required": [
"id",
"email",
"role",
"expiresAt"
],
"additionalProperties": false
}
},
"roles": {
"type": "array",
"items": {
"type": "object",
"properties": {
"role": {
"type": "string"
},
"label": {
"type": "string"
},
"can": {
"type": "string"
}
},
"required": [
"role",
"label",
"can"
],
"additionalProperties": false
}
},
"studioUrl": {
"type": "string"
}
},
"required": [
"game",
"yourRole",
"canManage",
"members",
"invitations",
"roles",
"studioUrl"
],
"additionalProperties": false
}
{
"name": "summer_call",
"arguments": {
"op": "games.members",
"input": {
"gameId": "g_123"
}
}
}
summer games members --game-id g_123
remove_member
games.remove_member: Remove a member from a game
Remove a member from a game, so they lose access to it. Runs when the person allows Delete for good (off by default); otherwise answers needs_approval with a link and changes nothing.
| MCP | summer_call with "op": "games.remove_member" |
| CLI | summer games remove-member |
| 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_grow_members#remove |
| Input | Type | Required | Description |
|---|---|---|---|
gameId | string | Yes | From games.list. |
memberId | string | Yes | A member’s userId from games.members. 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. |
Input JSON schema
Input JSON schema
{
"type": "object",
"properties": {
"gameId": {
"description": "From games.list.",
"type": "string",
"pattern": "^[A-Za-z0-9_-]{1,128}$"
},
"memberId": {
"description": "A member's userId from games.members.",
"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": [
"gameId",
"memberId"
]
}
Result JSON schema
Result JSON schema
{
"type": "object",
"properties": {
"game": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"id",
"name"
],
"additionalProperties": false
},
"removed": {
"type": "object",
"properties": {
"name": {
"type": "string"
}
},
"required": [
"name"
],
"additionalProperties": false
},
"studioUrl": {
"type": "string"
}
},
"required": [
"game",
"removed",
"studioUrl"
],
"additionalProperties": false
}
{
"name": "summer_call",
"arguments": {
"op": "games.remove_member",
"input": {
"gameId": "g_123",
"memberId": "u_77"
}
}
}
summer games remove-member --game-id g_123 --member-id u_77
set_member_role
games.set_member_role: Change a member’s role
Change what a member may do on a game (admin, developer or viewer). Runs when the person allows Prices and live changes; otherwise answers needs_approval with a link. Next: games.members.
| MCP | summer_call with "op": "games.set_member_role" |
| CLI | summer games set-member-role |
| Runs | On Summer’s servers: the hosted MCP, or the npm MCP after summer login. Needs your Summer sign-in. |
| Effect | Changes what players see or pay, or who can act on a game. |
| Asks you first | Yes, for now: Summer Games still asks you first. Soon it follows Prices and live changes in Agent permissions (on by default). |
| 3.x names | summer_grow_members#set_role |
| Input | Type | Required | Description |
|---|---|---|---|
gameId | string | Yes | From games.list. |
memberId | string | Yes | A member’s userId from games.members. Length 1 to 128. |
role | ”admin” | “developer” | “viewer” | Yes | admin, developer or viewer (games.members lists what each can do). |
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. |
Input JSON schema
Input JSON schema
{
"type": "object",
"properties": {
"gameId": {
"description": "From games.list.",
"type": "string",
"pattern": "^[A-Za-z0-9_-]{1,128}$"
},
"memberId": {
"description": "A member's userId from games.members.",
"type": "string",
"minLength": 1,
"maxLength": 128
},
"role": {
"description": "admin, developer or viewer (games.members lists what each can do).",
"type": "string",
"enum": [
"admin",
"developer",
"viewer"
]
},
"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": [
"gameId",
"memberId",
"role"
]
}
Result JSON schema
Result JSON schema
{
"type": "object",
"properties": {
"game": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"id",
"name"
],
"additionalProperties": false
},
"member": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"role": {
"type": "string"
}
},
"required": [
"name",
"role"
],
"additionalProperties": false
},
"studioUrl": {
"type": "string"
}
},
"required": [
"game",
"member",
"studioUrl"
],
"additionalProperties": false
}
{
"name": "summer_call",
"arguments": {
"op": "games.set_member_role",
"input": {
"gameId": "g_123",
"memberId": "u_77",
"role": "admin"
}
}
}
summer games set-member-role --game-id g_123 --member-id u_77 --role admin
withdraw_invite
games.withdraw_invite: Withdraw a game invite
Withdraw a pending invite to a game, so its link stops working. Runs when the person allows Delete for good (off by default); otherwise answers needs_approval with a link and changes nothing.
| MCP | summer_call with "op": "games.withdraw_invite" |
| CLI | summer games 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_grow_members#withdraw |
| Input | Type | Required | Description |
|---|---|---|---|
gameId | string | Yes | From games.list. |
inviteId | string | Yes | An invitation id from games.members. 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. |
Input JSON schema
Input JSON schema
{
"type": "object",
"properties": {
"gameId": {
"description": "From games.list.",
"type": "string",
"pattern": "^[A-Za-z0-9_-]{1,128}$"
},
"inviteId": {
"description": "An invitation id from games.members.",
"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": [
"gameId",
"inviteId"
]
}
Result JSON schema
Result JSON schema
{
"type": "object",
"properties": {
"game": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"id",
"name"
],
"additionalProperties": false
},
"withdrawn": {
"type": "object",
"properties": {
"email": {
"type": "string"
}
},
"required": [
"email"
],
"additionalProperties": false
},
"studioUrl": {
"type": "string"
}
},
"required": [
"game",
"withdrawn",
"studioUrl"
],
"additionalProperties": false
}
{
"name": "summer_call",
"arguments": {
"op": "games.withdraw_invite",
"input": {
"gameId": "g_123",
"inviteId": "inv_5"
}
}
}
summer games withdraw-invite --game-id g_123 --invite-id inv_5

