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

> Summer Games Jams: list, enter and withdraw. For each operation: what it does, whether it asks you first, its inputs and an example call.

Summer Games Jams: list, enter and withdraw. 3 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 |
| - | - | - |
| [`jams.enter`](#enter) | Ask the person to enter one of their games in an open Summer Games Jam, or to refresh its entry after the page or builds changed. | Always |
| [`jams.list`](#list) | List the Summer Games Jams open for entries: slug, theme, closing time, prize and rules. | Never |
| [`jams.withdraw`](#withdraw) | Take a game's entry off a Summer Games Jam page. | Not by default |

***

### enter

`jams.enter`: **Enter a game jam**

Ask the person to enter one of their games in an open Summer Games Jam, or to refresh its entry after the page or builds changed. Entering agrees to the jam rules and terms. Answers a link for them to confirm. Next: jobs.wait.

| | |
| - | - |
| **MCP** | `summer_call` with `"op": "jams.enter"` |
| **CLI** | `summer jams enter` |
| **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** | Always. You approve it in Studio; an agent can never skip this. |
| **3.x names** | `summer_store_enter_jam` |

**Inputs:**

| Input | Type | Required | Description |
| - | - | - | - |
| `gameId` | string | Yes | From games.list. |
| `jamSlug` | string | Yes | A jam slug from jams.list, e.g. light. |
| `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": {
      "gameId": {
        "description": "From games.list.",
        "type": "string",
        "pattern": "^[A-Za-z0-9_-]{1,128}$"
      },
      "jamSlug": {
        "description": "A jam slug from jams.list, e.g. light.",
        "type": "string",
        "pattern": "^[a-z0-9][a-z0-9-]{0,63}$"
      },
      "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",
      "jamSlug"
    ]
  }
  ```
</Accordion>

<Accordion title="Result JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "gameId": {
        "type": "string"
      },
      "jamSlug": {
        "type": "string"
      },
      "entry": {
        "type": "object",
        "properties": {
          "entered": {
            "type": "boolean"
          },
          "submittedAt": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "updatedAt": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "hasCover": {
            "type": "boolean"
          },
          "builds": {
            "description": "Uploads the entry shows.",
            "type": "number"
          },
          "playable": {
            "description": "Players can play it in the browser from the jam page.",
            "type": "boolean"
          },
          "hidden": {
            "description": "Summer staff hid it from the jam page.",
            "type": "boolean"
          }
        },
        "required": [
          "entered",
          "submittedAt",
          "updatedAt",
          "title",
          "hasCover",
          "builds",
          "playable",
          "hidden"
        ],
        "additionalProperties": false
      },
      "jamUrl": {
        "type": "string"
      }
    },
    "required": [
      "gameId",
      "jamSlug",
      "entry",
      "jamUrl"
    ],
    "additionalProperties": false
  }
  ```
</Accordion>

**Example:** Enter the game in the Light jam.

<CodeGroup>
  ```json MCP theme={null}
  {
    "name": "summer_call",
    "arguments": {
      "op": "jams.enter",
      "input": {
        "gameId": "g_123",
        "jamSlug": "light"
      }
    }
  }
  ```

  ```bash CLI theme={null}
  summer jams enter --game-id g_123 --jam-slug light
  ```
</CodeGroup>

***

### list

`jams.list`: **List open game jams**

List the Summer Games Jams open for entries: slug, theme, closing time, prize and rules. With gameId, also that game's entry in each. Next: jams.enter.

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

**Inputs:**

| Input | Type | Required | Description |
| - | - | - | - |
| `gameId` | string | No | From games.list. |

<Accordion title="Input JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "gameId": {
        "description": "From games.list.",
        "type": "string",
        "pattern": "^[A-Za-z0-9_-]{1,128}$"
      }
    }
  }
  ```
</Accordion>

<Accordion title="Result JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "items": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "slug": {
              "type": "string"
            },
            "title": {
              "type": "string"
            },
            "theme": {
              "type": "string"
            },
            "about": {
              "type": "string"
            },
            "status": {
              "description": "open, or judging once submissions closed (late entries still count).",
              "type": "string"
            },
            "submissionsCloseAt": {
              "type": "string"
            },
            "closes": {
              "type": "string"
            },
            "prize": {
              "type": "string"
            },
            "rulesUrl": {
              "type": "string"
            },
            "jamUrl": {
              "type": "string"
            },
            "entry": {
              "description": "With gameId: that game's entry in this jam.",
              "type": "object",
              "properties": {
                "entered": {
                  "type": "boolean"
                },
                "submittedAt": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "updatedAt": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "title": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "hasCover": {
                  "type": "boolean"
                },
                "builds": {
                  "description": "Uploads the entry shows.",
                  "type": "number"
                },
                "playable": {
                  "description": "Players can play it in the browser from the jam page.",
                  "type": "boolean"
                },
                "hidden": {
                  "description": "Summer staff hid it from the jam page.",
                  "type": "boolean"
                }
              },
              "required": [
                "entered",
                "submittedAt",
                "updatedAt",
                "title",
                "hasCover",
                "builds",
                "playable",
                "hidden"
              ],
              "additionalProperties": false
            }
          },
          "required": [
            "slug",
            "title",
            "theme",
            "about",
            "status",
            "submissionsCloseAt",
            "closes",
            "prize",
            "rulesUrl",
            "jamUrl"
          ],
          "additionalProperties": false
        }
      },
      "nextCursor": {
        "type": "null"
      }
    },
    "required": [
      "items",
      "nextCursor"
    ],
    "additionalProperties": false
  }
  ```
</Accordion>

**Example:** Which jam can this game enter?

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

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

***

### withdraw

`jams.withdraw`: **Withdraw from a game jam**

Take a game's entry off a Summer Games Jam page. The game itself does not change, and it can enter again while the jam takes entries. Next: jams.list.

| | |
| - | - |
| **MCP** | `summer_call` with `"op": "jams.withdraw"` |
| **CLI** | `summer jams withdraw` |
| **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_enter_jam#withdraw` |

**Inputs:**

| Input | Type | Required | Description |
| - | - | - | - |
| `gameId` | string | Yes | From games.list. |
| `jamSlug` | string | Yes | A jam slug from jams.list, e.g. light. |
| `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": {
      "gameId": {
        "description": "From games.list.",
        "type": "string",
        "pattern": "^[A-Za-z0-9_-]{1,128}$"
      },
      "jamSlug": {
        "description": "A jam slug from jams.list, e.g. light.",
        "type": "string",
        "pattern": "^[a-z0-9][a-z0-9-]{0,63}$"
      },
      "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",
      "jamSlug"
    ]
  }
  ```
</Accordion>

<Accordion title="Result JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "gameId": {
        "type": "string"
      },
      "jamSlug": {
        "type": "string"
      },
      "entry": {
        "type": "object",
        "properties": {
          "entered": {
            "type": "boolean"
          },
          "submittedAt": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "updatedAt": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "hasCover": {
            "type": "boolean"
          },
          "builds": {
            "description": "Uploads the entry shows.",
            "type": "number"
          },
          "playable": {
            "description": "Players can play it in the browser from the jam page.",
            "type": "boolean"
          },
          "hidden": {
            "description": "Summer staff hid it from the jam page.",
            "type": "boolean"
          }
        },
        "required": [
          "entered",
          "submittedAt",
          "updatedAt",
          "title",
          "hasCover",
          "builds",
          "playable",
          "hidden"
        ],
        "additionalProperties": false
      },
      "jamUrl": {
        "type": "string"
      }
    },
    "required": [
      "gameId",
      "jamSlug",
      "entry",
      "jamUrl"
    ],
    "additionalProperties": false
  }
  ```
</Accordion>

**Example:** Take the game out of the Light jam.

<CodeGroup>
  ```json MCP theme={null}
  {
    "name": "summer_call",
    "arguments": {
      "op": "jams.withdraw",
      "input": {
        "gameId": "g_123",
        "jamSlug": "light"
      }
    }
  }
  ```

  ```bash CLI theme={null}
  summer jams withdraw --game-id g_123 --jam-slug light
  ```
</CodeGroup>


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