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 |
|---|---|---|
plans.answer | Answer a planning question of a game started on the create page, as the person would: its option ids, their own words, or nothing to skip. | Not by default |
plans.ask_agent | Ask the plan’s own agent to work on it, as typing in Studio does: it reads, edits, draws pictures and answers on the plan. | Not by default |
plans.changes | The changes made to a plan since a revision (what Studio’s live view receives), oldest first, up to 200. | Never |
plans.chat | Read the plan’s shared conversation: who said what and when, what they pointed at, and the plan agent’s tasks and replies it started. | Never |
plans.choose_look | Make one picture of a new game’s plan its art style: Summer redraws the other pictures in that look, and the saved direction carries it. | Not by default |
plans.create | Create an empty game plan in Summer Studio, in a team or for one of the person’s projects. | Not by default |
plans.delete | Ask the person to delete one of their plans from their own workspace (a plan in a team stays). | Yes, by default |
plans.directions | The plan’s saved directions, newest first: each one is the chosen design written out, with the exact reference pictures it pins. | Never |
plans.duplicate | Copy one of the person’s older plans (one without shared editing) into their own workspace, as Duplicate does in Studio: its title and cards. | Not by default |
plans.edit | Change a game plan in one atomic batch of commands (create, patch or remove items, topics, groups and edges; set the title) against the revision from plans.get. | Not by default |
plans.edit_card | Change one picture on the plan of a game started with projects.create, in words (“make the hero a girl with a red scarf”). | Not by default |
plans.enable_sharing | Turn on shared editing for an older plan, which the plan agent, builds and the conversation need. | Not by default |
plans.finish_questions | End the planning questions of a game started on the create page (the rest are skipped): Summer starts drawing its plan at once. | Not by default |
plans.get | Read a game plan as it is now: every item, group and topic with its id and field revisions, the plan revision and what the person may do. | Never |
plans.link_project | Link a plan to one of the person’s projects, so the game built from the plan opens that project. | Not by default |
plans.links | Which of the person’s plans belong to which of their projects, so a game built from a plan opens its project. | Never |
plans.list | List the game plans the person can open in Summer Studio (their own and their teams’), newest change first: plan id, title, team and project. | Never |
plans.message | Pass the person’s direction for a game started with projects.create, in their words: Summer reshapes its plan (new or changed pictures). | Not by default |
plans.move | Move a plan into one of the person’s teams (a shared workspace they administer), so its members see and edit it. | Yes, by default |
plans.pick_card | Mark one picture of a new game’s plan as the person’s favourite for its section (characters, place or storyboard), as picking a card on the create page does. | Not by default |
plans.prepare_for_engine | Keep a saved direction ready in the person’s account for Summer Engine: the engine offers it when they open a project there. | Not by default |
plans.presence | Who has the plan open in Summer Studio right now, with what they selected and the topic they are on. | Never |
plans.save_concept | Save the person’s own text as the concept of a game started on the create page; it is what their account keeps for Summer Engine until a rewrite. | Not by default |
plans.save_direction | Save the direction the person chose as a fixed version: the design written out, with the plan items it pins as references. | Not by default |
plans.set_ai_payer | Ask the person to pay for everyone’s AI work on a plan with their own credits, or to stop (then each person pays for their own). | Not by default |
plans.show | Show the plan of a new game: its pictures with their item ids, the chosen look, whether Summer is still drawing, and the planning question waiting, if any. | Never |
plans.write_concept | Write the concept of a game started on the create page from its idea, answers and picks, and keep it in the person’s account for Summer Engine. | Not by default |
answer
plans.answer: Answer a new game’s planning question
Answer a planning question of a game started on the create page, as the person would: its option ids, their own words, or nothing to skip. Enough answers start Summer drawing the plan. Next: plans.show or plans.finish_questions.
| MCP | summer_call with "op": "plans.answer" |
| CLI | summer plans answer |
| 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. |
| Input | Type | Required | Description |
|---|---|---|---|
projectId | string | Yes | The new game’s project, from projects.create. |
questionId | string | Yes | The question (plans.show shows the one waiting). Length 1 to 200. |
optionIds | string[] | No | The chosen options’ ids; none (and no words) skips the question. Default []. Items 0 to 20. |
customInput | string | No | The answer in the person’s own words. Length 0 to 4000. |
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": {
"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)$"
},
"questionId": {
"description": "The question (plans.show shows the one waiting).",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"optionIds": {
"description": "The chosen options' ids; none (and no words) skips the question.",
"default": [],
"maxItems": 20,
"type": "array",
"items": {
"type": "string",
"maxLength": 200
}
},
"customInput": {
"description": "The answer in the person's own words.",
"type": "string",
"maxLength": 4000
},
"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",
"questionId"
]
}
Result JSON schema
Result JSON schema
{
"type": "object",
"properties": {
"projectId": {
"type": "string"
},
"stage": {
"description": "questions, then plan (Summer draws the plan), then build.",
"type": "string"
},
"answered": {
"type": "number"
},
"questionsDone": {
"type": "boolean"
},
"question": {
"anyOf": [
{
"description": "The planning question waiting for an answer.",
"type": "object",
"properties": {
"questionId": {
"type": "string"
},
"title": {
"type": "string"
},
"subtitle": {
"type": "string"
},
"options": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"label": {
"type": "string"
}
},
"required": [
"id",
"label"
],
"additionalProperties": false
}
},
"allowCustomInput": {
"type": "boolean"
},
"allowSkip": {
"type": "boolean"
},
"maxSelections": {
"type": "number"
}
},
"required": [
"questionId",
"title",
"options"
],
"additionalProperties": false
},
{
"type": "null"
}
]
},
"url": {
"type": "string"
}
},
"required": [
"projectId",
"stage",
"answered",
"questionsDone",
"question",
"url"
],
"additionalProperties": false
}
{
"name": "summer_call",
"arguments": {
"op": "plans.answer",
"input": {
"projectId": "0c6a1f60-1d8e-4f4c-8f0e-5a0b8b6f2d11",
"questionId": "q_feel",
"optionIds": [
"cozy"
]
}
}
}
summer plans answer --project-id 0c6a1f60-1d8e-4f4c-8f0e-5a0b8b6f2d11 --question-id q_feel --option-ids cozy
ask_agent
plans.ask_agent: Ask the plan agent
Ask the plan’s own agent to work on it, as typing in Studio does: it reads, edits, draws pictures and answers on the plan. Spends the plan payer’s credits. Needs contextRevision from plans.get. Returns a job. Next: jobs.wait.
| MCP | summer_call with "op": "plans.ask_agent" |
| CLI | summer plans ask-agent |
| 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_agent_run |
| Input | Type | Required | Description |
|---|---|---|---|
planId | string | Yes | From plans.list. |
prompt | string | Yes | What to do, in the person’s words. Length 1 to 20000. |
contextRevision | integer | Yes | The plan revision the request was written against (plans.get). Range 0 to 9007199254740991. |
topicId | string | No | The topic to work in; default overview. Length 1 to 64. |
references | object[] | No | Plan items the request points at. Items 0 to 50. |
references[].itemId | string | Yes | Length 1 to 64. |
references[].kind | ”item” | “group” | No | |
references[].assetRevision | integer | No | Range 0 to 9007199254740991. |
references[].groupRevision | integer | No | Range 0 to 9007199254740991. |
references[].role | string | No | Length 0 to 500. |
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": {
"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)$"
},
"prompt": {
"description": "What to do, in the person's words.",
"type": "string",
"minLength": 1,
"maxLength": 20000
},
"contextRevision": {
"description": "The plan revision the request was written against (plans.get).",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"topicId": {
"description": "The topic to work in; default overview.",
"type": "string",
"minLength": 1,
"maxLength": 64
},
"references": {
"description": "Plan items the request points at.",
"maxItems": 50,
"type": "array",
"items": {
"type": "object",
"properties": {
"itemId": {
"type": "string",
"minLength": 1,
"maxLength": 64
},
"kind": {
"type": "string",
"enum": [
"item",
"group"
]
},
"assetRevision": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"groupRevision": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"role": {
"type": "string",
"maxLength": 500
}
},
"required": [
"itemId"
],
"additionalProperties": false
}
},
"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",
"prompt",
"contextRevision"
]
}
Result JSON schema
Result JSON schema
{
"type": "object",
"properties": {
"task": {
"type": "object",
"properties": {
"taskId": {
"type": "string"
},
"jobId": {
"type": "string"
},
"state": {
"type": "string"
},
"prompt": {
"type": "string"
},
"replies": {
"type": "array",
"items": {
"type": "string"
}
},
"error": {
"type": "string"
},
"createdAt": {
"type": "string"
},
"updatedAt": {
"type": "string"
}
},
"required": [
"taskId",
"jobId",
"state"
],
"additionalProperties": false
},
"created": {
"type": "boolean"
}
},
"required": [
"task",
"created"
],
"additionalProperties": false
}
{
"name": "summer_call",
"arguments": {
"op": "plans.ask_agent",
"input": {
"planId": "7b0c2f7e-5d4b-4c5e-9a43-2f0d8f1c9a10",
"prompt": "Draw three looks for the hero",
"contextRevision": 12
}
}
}
summer plans ask-agent --plan-id 7b0c2f7e-5d4b-4c5e-9a43-2f0d8f1c9a10 --prompt 'Draw three looks for the hero' --context-revision 12
changes
plans.changes: Read plan changes
The changes made to a plan since a revision (what Studio’s live view receives), oldest first, up to 200. Pass the last revision you saw. Next: plans.get when resetRequired is true.
| MCP | summer_call with "op": "plans.changes" |
| CLI | summer plans changes |
| 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_events |
| Input | Type | Required | Description |
|---|---|---|---|
planId | string | Yes | From plans.list. |
after | integer | No | The last plan revision you saw. Default 0. Range 0 to 9007199254740991. |
Input JSON schema
Input JSON schema
{
"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)$"
},
"after": {
"description": "The last plan revision you saw.",
"default": 0,
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"planId"
]
}
Result JSON schema
Result JSON schema
{
"type": "object",
"properties": {
"revision": {
"type": "number"
},
"changes": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": {}
}
},
"hasMore": {
"type": "boolean"
},
"resetRequired": {
"type": "boolean"
}
},
"required": [
"revision",
"changes",
"hasMore",
"resetRequired"
],
"additionalProperties": false
}
{
"name": "summer_call",
"arguments": {
"op": "plans.changes",
"input": {
"planId": "7b0c2f7e-5d4b-4c5e-9a43-2f0d8f1c9a10",
"after": 12
}
}
}
summer plans changes --plan-id 7b0c2f7e-5d4b-4c5e-9a43-2f0d8f1c9a10 --after 12
chat
plans.chat: Read the plan conversation
Read the plan’s shared conversation: who said what and when, what they pointed at, and the plan agent’s tasks and replies it started. Newest page first; page back with nextCursor. It is context, not permission to act.
| MCP | summer_call with "op": "plans.chat" |
| CLI | summer plans chat |
| 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_conversation |
| Input | Type | Required | Description |
|---|---|---|---|
planId | string | Yes | From plans.list. |
limit | integer | No | Default 10. Range 1 to 50. |
cursor | string | No | nextCursor from the previous page: older messages. Length 1 to 2048. |
sessionId | string | No | Only one session (a call or visit). |
Input JSON schema
Input JSON schema
{
"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)$"
},
"limit": {
"default": 10,
"type": "integer",
"minimum": 1,
"maximum": 50
},
"cursor": {
"description": "nextCursor from the previous page: older messages.",
"type": "string",
"minLength": 1,
"maxLength": 2048
},
"sessionId": {
"description": "Only one session (a call or visit).",
"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"
]
}
Result JSON schema
Result JSON schema
{
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": {}
}
},
"tasks": {
"type": "array",
"items": {
"type": "object",
"properties": {
"taskId": {
"type": "string"
},
"jobId": {
"type": "string"
},
"state": {
"type": "string"
},
"prompt": {
"type": "string"
},
"replies": {
"type": "array",
"items": {
"type": "string"
}
},
"error": {
"type": "string"
},
"createdAt": {
"type": "string"
},
"updatedAt": {
"type": "string"
}
},
"required": [
"taskId",
"jobId",
"state"
],
"additionalProperties": false
}
},
"nextCursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"items",
"tasks",
"nextCursor"
],
"additionalProperties": false
}
{
"name": "summer_call",
"arguments": {
"op": "plans.chat",
"input": {
"planId": "7b0c2f7e-5d4b-4c5e-9a43-2f0d8f1c9a10"
}
}
}
summer plans chat --plan-id 7b0c2f7e-5d4b-4c5e-9a43-2f0d8f1c9a10
choose_look
plans.choose_look: Choose a new game’s look
Make one picture of a new game’s plan its art style: Summer redraws the other pictures in that look, and the saved direction carries it. Uses the itemId from plans.show. Next: plans.show.
| MCP | summer_call with "op": "plans.choose_look" |
| CLI | summer plans choose-look |
| 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_game_choose_look |
| Input | Type | Required | Description |
|---|---|---|---|
projectId | string | Yes | The new game’s project, from projects.create. |
itemId | string | Yes | From plans.show. Length 1 to 64. |
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": {
"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)$"
},
"itemId": {
"description": "From plans.show.",
"type": "string",
"minLength": 1,
"maxLength": 64
},
"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",
"itemId"
]
}
Result JSON schema
Result JSON schema
{
"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"
}
},
"required": [
"projectId",
"title",
"cards",
"drawing",
"lookItemId",
"statusLine",
"url"
],
"additionalProperties": false
}
{
"name": "summer_call",
"arguments": {
"op": "plans.choose_look",
"input": {
"projectId": "0c6a1f60-1d8e-4f4c-8f0e-5a0b8b6f2d11",
"itemId": "card_look_2"
}
}
}
summer plans choose-look --project-id 0c6a1f60-1d8e-4f4c-8f0e-5a0b8b6f2d11 --item-id card_look_2
create
plans.create: Create a plan
Create an empty game plan in Summer Studio, in a team or for one of the person’s projects. Free. Returns the plan id. Next: plans.edit or plans.ask_agent.
| MCP | summer_call with "op": "plans.create" |
| CLI | summer plans 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_board_create |
| Input | Type | Required | Description |
|---|---|---|---|
title | string | No | Length 1 to 400. |
projectId | string | No | From projects.list. |
workspaceId | string | No | The team it belongs to (from team.list). Default: the person’s own workspace. |
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": 400
},
"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)$"
},
"workspaceId": {
"description": "The team it belongs to (from team.list). Default: the person's own workspace.",
"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
}
}
}
Result JSON schema
Result JSON schema
{
"type": "object",
"properties": {
"planId": {
"type": "string"
},
"title": {
"type": "string"
},
"projectId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"workspaceId": {
"type": "string"
},
"studioUrl": {
"type": "string"
}
},
"required": [
"planId",
"title",
"projectId",
"workspaceId",
"studioUrl"
],
"additionalProperties": false
}
{
"name": "summer_call",
"arguments": {
"op": "plans.create",
"input": {
"title": "Frog jumper"
}
}
}
summer plans create --title 'Frog jumper'
delete
plans.delete: Delete a plan
Ask the person to delete one of their plans from their own workspace (a plan in a team stays). Running AI work on it stops. Returns a link; nothing changes until they confirm. Next: jobs.wait.
| MCP | summer_call with "op": "plans.delete" |
| CLI | summer plans delete |
| 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. |
| Input | Type | Required | Description |
|---|---|---|---|
planId | string | Yes | From plans.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": {
"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)$"
},
"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"
]
}
Result JSON schema
Result JSON schema
{
"type": "object",
"properties": {
"planId": {
"type": "string"
},
"deleted": {
"type": "boolean"
}
},
"required": [
"planId",
"deleted"
],
"additionalProperties": false
}
{
"name": "summer_call",
"arguments": {
"op": "plans.delete",
"input": {
"planId": "7b0c2f7e-5d4b-4c5e-9a43-2f0d8f1c9a10"
}
}
}
summer plans delete --plan-id 7b0c2f7e-5d4b-4c5e-9a43-2f0d8f1c9a10
directions
plans.directions: Read saved directions
The plan’s saved directions, newest first: each one is the chosen design written out, with the exact reference pictures it pins. Use one to build the game. Next: projects.build or projects.open_in_engine.
| MCP | summer_call with "op": "plans.directions" |
| CLI | summer plans directions |
| 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_game_soul |
| Input | Type | Required | Description |
|---|---|---|---|
planId | string | Yes | From plans.list. |
limit | integer | No | Default 10. Range 1 to 50. |
maxCharacters | integer | No | Most characters of each direction’s text. Default 4000. Range 200 to 50000. |
Input JSON schema
Input JSON schema
{
"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)$"
},
"limit": {
"default": 10,
"type": "integer",
"minimum": 1,
"maximum": 50
},
"maxCharacters": {
"description": "Most characters of each direction's text.",
"default": 4000,
"type": "integer",
"minimum": 200,
"maximum": 50000
}
},
"required": [
"planId"
]
}
Result JSON schema
Result JSON schema
{
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"directionId": {
"type": "string"
},
"revision": {
"description": "The plan revision it was saved from.",
"type": "number"
},
"title": {
"type": "string"
},
"markdown": {
"type": "string"
},
"truncated": {
"type": "boolean"
},
"references": {
"description": "The exact pictures and items it pins.",
"type": "array",
"items": {
"type": "object",
"additionalProperties": {}
}
},
"createdAt": {
"type": "string"
}
},
"required": [
"directionId",
"revision",
"title",
"markdown",
"references",
"createdAt"
],
"additionalProperties": false
}
},
"latestId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"items",
"latestId"
],
"additionalProperties": false
}
{
"name": "summer_call",
"arguments": {
"op": "plans.directions",
"input": {
"planId": "7b0c2f7e-5d4b-4c5e-9a43-2f0d8f1c9a10",
"limit": 1
}
}
}
summer plans directions --plan-id 7b0c2f7e-5d4b-4c5e-9a43-2f0d8f1c9a10 --limit 1
duplicate
plans.duplicate: Copy an older plan
Copy one of the person’s older plans (one without shared editing) into their own workspace, as Duplicate does in Studio: its title and cards. Returns the copy’s plan id. Next: plans.list.
| MCP | summer_call with "op": "plans.duplicate" |
| CLI | summer plans duplicate |
| 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. |
| Input | Type | Required | Description |
|---|---|---|---|
planId | string | Yes | From plans.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": {
"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)$"
},
"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"
]
}
Result JSON schema
Result JSON schema
{
"type": "object",
"properties": {
"planId": {
"type": "string"
},
"title": {
"type": "string"
},
"studioUrl": {
"type": "string"
}
},
"required": [
"planId",
"title",
"studioUrl"
],
"additionalProperties": false
}
{
"name": "summer_call",
"arguments": {
"op": "plans.duplicate",
"input": {
"planId": "7b0c2f7e-5d4b-4c5e-9a43-2f0d8f1c9a10"
}
}
}
summer plans duplicate --plan-id 7b0c2f7e-5d4b-4c5e-9a43-2f0d8f1c9a10
edit
plans.edit: Edit a plan
Change a game plan in one atomic batch of commands (create, patch or remove items, topics, groups and edges; set the title) against the revision from plans.get. Patched fields must match their fieldRevisions. Next: plans.get.
| MCP | summer_call with "op": "plans.edit" |
| CLI | summer plans edit |
| 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_board_edit |
| Input | Type | Required | Description |
|---|---|---|---|
planId | string | Yes | From plans.list. |
baseRevision | integer | Yes | The plan revision the commands were written against (plans.get). Range 0 to 9007199254740991. |
commands | object[] | Yes | Items 1 to 100. |
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": {
"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)$"
},
"baseRevision": {
"description": "The plan revision the commands were written against (plans.get).",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"commands": {
"minItems": 1,
"maxItems": 100,
"type": "array",
"items": {
"anyOf": [
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "registerType"
},
"definition": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 48,
"pattern": "^[a-zA-Z][a-zA-Z0-9_-]*$"
},
"version": {
"type": "integer",
"minimum": 1,
"maximum": 10000
},
"label": {
"type": "string",
"minLength": 1,
"maxLength": 120
},
"description": {
"type": "string",
"maxLength": 1000
},
"properties": {
"maxItems": 40,
"type": "array",
"items": {
"anyOf": [
{
"type": "object",
"properties": {
"key": {
"type": "string",
"minLength": 1,
"maxLength": 48,
"pattern": "^[a-zA-Z][a-zA-Z0-9_-]*$"
},
"label": {
"type": "string",
"minLength": 1,
"maxLength": 120
},
"required": {
"type": "boolean"
},
"description": {
"type": "string",
"maxLength": 500
},
"kind": {
"type": "string",
"const": "text"
}
},
"required": [
"key",
"label",
"kind"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"key": {
"type": "string",
"minLength": 1,
"maxLength": 48,
"pattern": "^[a-zA-Z][a-zA-Z0-9_-]*$"
},
"label": {
"type": "string",
"minLength": 1,
"maxLength": 120
},
"required": {
"type": "boolean"
},
"description": {
"type": "string",
"maxLength": 500
},
"kind": {
"type": "string",
"const": "number"
}
},
"required": [
"key",
"label",
"kind"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"key": {
"type": "string",
"minLength": 1,
"maxLength": 48,
"pattern": "^[a-zA-Z][a-zA-Z0-9_-]*$"
},
"label": {
"type": "string",
"minLength": 1,
"maxLength": 120
},
"required": {
"type": "boolean"
},
"description": {
"type": "string",
"maxLength": 500
},
"kind": {
"type": "string",
"const": "boolean"
}
},
"required": [
"key",
"label",
"kind"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"key": {
"type": "string",
"minLength": 1,
"maxLength": 48,
"pattern": "^[a-zA-Z][a-zA-Z0-9_-]*$"
},
"label": {
"type": "string",
"minLength": 1,
"maxLength": 120
},
"required": {
"type": "boolean"
},
"description": {
"type": "string",
"maxLength": 500
},
"kind": {
"type": "string",
"const": "choice"
},
"options": {
"minItems": 1,
"maxItems": 50,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 120
}
}
},
"required": [
"key",
"label",
"kind",
"options"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"key": {
"type": "string",
"minLength": 1,
"maxLength": 48,
"pattern": "^[a-zA-Z][a-zA-Z0-9_-]*$"
},
"label": {
"type": "string",
"minLength": 1,
"maxLength": 120
},
"required": {
"type": "boolean"
},
"description": {
"type": "string",
"maxLength": 500
},
"kind": {
"type": "string",
"const": "text-list"
}
},
"required": [
"key",
"label",
"kind"
],
"additionalProperties": false
}
]
}
},
"relations": {
"maxItems": 30,
"type": "array",
"items": {
"type": "object",
"properties": {
"key": {
"type": "string",
"minLength": 1,
"maxLength": 48,
"pattern": "^[a-zA-Z][a-zA-Z0-9_-]*$"
},
"label": {
"type": "string",
"minLength": 1,
"maxLength": 120
},
"targetTypeIds": {
"minItems": 1,
"maxItems": 30,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 48,
"pattern": "^[a-zA-Z][a-zA-Z0-9_-]*$"
}
},
"cardinality": {
"type": "string",
"enum": [
"one",
"many"
]
},
"description": {
"type": "string",
"maxLength": 500
}
},
"required": [
"key",
"label",
"targetTypeIds",
"cardinality"
],
"additionalProperties": false
}
}
},
"required": [
"id",
"version",
"label",
"properties",
"relations"
],
"additionalProperties": false
}
},
"required": [
"type",
"definition"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "create"
},
"collection": {
"type": "string",
"enum": [
"items",
"topics",
"groups",
"edges"
]
},
"value": {
"type": "object",
"additionalProperties": {}
}
},
"required": [
"type",
"collection",
"value"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "patch"
},
"collection": {
"type": "string",
"enum": [
"items",
"topics",
"groups",
"edges"
]
},
"id": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^[a-zA-Z0-9_-]+$"
},
"patch": {
"type": "object",
"additionalProperties": {}
},
"expected": {
"type": "object",
"additionalProperties": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"expectedMembership": {
"type": "object",
"properties": {
"itemIds": {
"maxItems": 2000,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^[a-zA-Z0-9_-]+$"
}
},
"groupIds": {
"maxItems": 500,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^[a-zA-Z0-9_-]+$"
}
}
},
"required": [
"itemIds",
"groupIds"
],
"additionalProperties": false
}
},
"required": [
"type",
"collection",
"id",
"patch",
"expected"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "remove"
},
"collection": {
"type": "string",
"enum": [
"items",
"topics",
"groups",
"edges"
]
},
"id": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^[a-zA-Z0-9_-]+$"
},
"expectedRevision": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"type",
"collection",
"id",
"expectedRevision"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "title"
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"expectedRevision": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"type",
"title",
"expectedRevision"
],
"additionalProperties": false
}
]
}
},
"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",
"baseRevision",
"commands"
]
}
Result JSON schema
Result JSON schema
{
"type": "object",
"properties": {
"planId": {
"type": "string"
},
"revision": {
"type": "number"
},
"workspaceId": {
"type": "string"
},
"projectId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"permissions": {
"type": "object",
"properties": {
"canEdit": {
"type": "boolean"
},
"canManage": {
"type": "boolean"
},
"canGenerate": {
"type": "boolean"
}
},
"required": [
"canEdit",
"canManage",
"canGenerate"
],
"additionalProperties": false
},
"document": {
"description": "The plan: items, groups, edges and topics, each with its id, revision and fieldRevisions.",
"type": "object",
"additionalProperties": {}
},
"studioUrl": {
"type": "string"
},
"replayed": {
"type": "boolean"
}
},
"required": [
"planId",
"revision",
"workspaceId",
"projectId",
"permissions",
"document",
"studioUrl",
"replayed"
],
"additionalProperties": false
}
{
"name": "summer_call",
"arguments": {
"op": "plans.edit",
"input": {
"planId": "7b0c2f7e-5d4b-4c5e-9a43-2f0d8f1c9a10",
"baseRevision": 12,
"commands": [
{
"type": "patch",
"collection": "items",
"id": "item_hero",
"patch": {
"label": "Hero: a frog knight"
},
"expected": {
"label": 3
}
}
]
}
}
}
summer plans edit --plan-id 7b0c2f7e-5d4b-4c5e-9a43-2f0d8f1c9a10 --base-revision 12 --input '{"commands":[{"type":"patch","collection":"items","id":"item_hero","patch":{"label":"Hero: a frog knight"},"expected":{"label":3}}]}'
edit_card
plans.edit_card: Change a picture on a new game’s plan
Change one picture on the plan of a game started with projects.create, in words (“make the hero a girl with a red scarf”). Takes a few seconds. Uses the itemId from plans.show. Next: plans.show.
| MCP | summer_call with "op": "plans.edit_card" |
| CLI | summer plans edit-card |
| 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_game_edit_card |
| Input | Type | Required | Description |
|---|---|---|---|
projectId | string | Yes | The new game’s project, from projects.create. |
itemId | string | Yes | From plans.show. Length 1 to 200. |
change | string | Yes | Length 1 to 400. |
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": {
"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)$"
},
"itemId": {
"description": "From plans.show.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"change": {
"type": "string",
"minLength": 1,
"maxLength": 400
},
"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",
"itemId",
"change"
]
}
Result JSON schema
Result JSON schema
{
"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"
}
},
"required": [
"projectId",
"title",
"cards",
"drawing",
"lookItemId",
"statusLine",
"url"
],
"additionalProperties": false
}
{
"name": "summer_call",
"arguments": {
"op": "plans.edit_card",
"input": {
"projectId": "0c6a1f60-1d8e-4f4c-8f0e-5a0b8b6f2d11",
"itemId": "card_hero",
"change": "give the hero a red scarf"
}
}
}
summer plans edit-card --project-id 0c6a1f60-1d8e-4f4c-8f0e-5a0b8b6f2d11 --item-id card_hero --change 'give the hero a red scarf'
enable_sharing
plans.enable_sharing: Turn on plan sharing
Turn on shared editing for an older plan, which the plan agent, builds and the conversation need. Only the plan’s owner or a team admin can. Safe to repeat. Next: plans.get.
| MCP | summer_call with "op": "plans.enable_sharing" |
| CLI | summer plans enable-sharing |
| 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_board_enable_collaboration |
| Input | Type | Required | Description |
|---|---|---|---|
planId | string | Yes | From plans.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": {
"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)$"
},
"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"
]
}
Result JSON schema
Result JSON schema
{
"type": "object",
"properties": {
"planId": {
"type": "string"
},
"revision": {
"type": "number"
},
"shared": {
"type": "boolean"
},
"studioUrl": {
"type": "string"
}
},
"required": [
"planId",
"revision",
"shared",
"studioUrl"
],
"additionalProperties": false
}
{
"name": "summer_call",
"arguments": {
"op": "plans.enable_sharing",
"input": {
"planId": "7b0c2f7e-5d4b-4c5e-9a43-2f0d8f1c9a10"
}
}
}
summer plans enable-sharing --plan-id 7b0c2f7e-5d4b-4c5e-9a43-2f0d8f1c9a10
finish_questions
plans.finish_questions: Finish a new game’s questions
End the planning questions of a game started on the create page (the rest are skipped): Summer starts drawing its plan at once. Safe to repeat. Returns the plan’s pictures. Next: plans.show.
| MCP | summer_call with "op": "plans.finish_questions" |
| CLI | summer plans finish-questions |
| 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. |
| Input | Type | Required | Description |
|---|---|---|---|
projectId | string | Yes | The new game’s project, from projects.create. |
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": {
"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)$"
},
"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"
]
}
Result JSON schema
Result JSON schema
{
"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"
}
},
"required": [
"projectId",
"title",
"cards",
"drawing",
"lookItemId",
"statusLine",
"url"
],
"additionalProperties": false
}
{
"name": "summer_call",
"arguments": {
"op": "plans.finish_questions",
"input": {
"projectId": "0c6a1f60-1d8e-4f4c-8f0e-5a0b8b6f2d11"
}
}
}
summer plans finish-questions --project-id 0c6a1f60-1d8e-4f4c-8f0e-5a0b8b6f2d11
get
plans.get: Read a plan
Read a game plan as it is now: every item, group and topic with its id and field revisions, the plan revision and what the person may do. Read before plans.edit; read again after a conflict.
| MCP | summer_call with "op": "plans.get" |
| CLI | summer plans 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_board_read, summer_get_board |
| Input | Type | Required | Description |
|---|---|---|---|
planId | string | Yes | From plans.list. |
Input JSON schema
Input JSON schema
{
"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"
]
}
Result JSON schema
Result JSON schema
{
"type": "object",
"properties": {
"planId": {
"type": "string"
},
"revision": {
"type": "number"
},
"workspaceId": {
"type": "string"
},
"projectId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"permissions": {
"type": "object",
"properties": {
"canEdit": {
"type": "boolean"
},
"canManage": {
"type": "boolean"
},
"canGenerate": {
"type": "boolean"
}
},
"required": [
"canEdit",
"canManage",
"canGenerate"
],
"additionalProperties": false
},
"document": {
"description": "The plan: items, groups, edges and topics, each with its id, revision and fieldRevisions.",
"type": "object",
"additionalProperties": {}
},
"studioUrl": {
"type": "string"
}
},
"required": [
"planId",
"revision",
"workspaceId",
"projectId",
"permissions",
"document",
"studioUrl"
],
"additionalProperties": false
}
{
"name": "summer_call",
"arguments": {
"op": "plans.get",
"input": {
"planId": "7b0c2f7e-5d4b-4c5e-9a43-2f0d8f1c9a10"
}
}
}
summer plans get --plan-id 7b0c2f7e-5d4b-4c5e-9a43-2f0d8f1c9a10
link_project
plans.link_project: Link a plan to a project
Link a plan to one of the person’s projects, so the game built from the plan opens that project. A project has one plan: this replaces its earlier link. Next: plans.links.
| MCP | summer_call with "op": "plans.link_project" |
| CLI | summer plans link-project |
| 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_board_link_project |
| Input | Type | Required | Description |
|---|---|---|---|
planId | string | Yes | From plans.list. |
projectId | string | Yes | From projects.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": {
"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)$"
},
"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)$"
},
"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",
"projectId"
]
}
Result JSON schema
Result JSON schema
{
"type": "object",
"properties": {
"planId": {
"type": "string"
},
"projectId": {
"type": "string"
}
},
"required": [
"planId",
"projectId"
],
"additionalProperties": false
}
{
"name": "summer_call",
"arguments": {
"op": "plans.link_project",
"input": {
"planId": "7b0c2f7e-5d4b-4c5e-9a43-2f0d8f1c9a10",
"projectId": "0c6a1f60-1d8e-4f4c-8f0e-5a0b8b6f2d11"
}
}
}
summer plans link-project --plan-id 7b0c2f7e-5d4b-4c5e-9a43-2f0d8f1c9a10 --project-id 0c6a1f60-1d8e-4f4c-8f0e-5a0b8b6f2d11
links
plans.links: Read plan and project links
Which of the person’s plans belong to which of their projects, so a game built from a plan opens its project. Next: plans.link_project.
| MCP | summer_call with "op": "plans.links" |
| CLI | summer plans links |
| 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_project_links |
Input JSON schema
Input JSON schema
{
"type": "object",
"properties": {}
}
Result JSON schema
Result JSON schema
{
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"planId": {
"type": "string"
},
"projectId": {
"type": "string"
},
"title": {
"type": "string"
}
},
"required": [
"planId",
"projectId",
"title"
],
"additionalProperties": false
}
}
},
"required": [
"items"
],
"additionalProperties": false
}
{
"name": "summer_call",
"arguments": {
"op": "plans.links",
"input": {}
}
}
summer plans links
list
plans.list: List my plans
List the game plans the person can open in Summer Studio (their own and their teams’), newest change first: plan id, title, team and project. Next: plans.get with a planId.
| MCP | summer_call with "op": "plans.list" |
| CLI | summer plans 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_board_list |
| Input | Type | Required | Description |
|---|---|---|---|
limit | integer | No | Default 10. Range 1 to 50. |
cursor | string | No | nextCursor from the previous page. |
Input JSON schema
Input JSON schema
{
"type": "object",
"properties": {
"limit": {
"default": 10,
"type": "integer",
"minimum": 1,
"maximum": 50
},
"cursor": {
"description": "nextCursor from the previous page.",
"type": "string",
"pattern": "^\\d{1,4}$"
}
}
}
Result JSON schema
Result JSON schema
{
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"planId": {
"type": "string"
},
"title": {
"type": "string"
},
"workspaceId": {
"type": "string"
},
"projectId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"updatedAt": {
"type": "string"
},
"studioUrl": {
"type": "string"
}
},
"required": [
"planId",
"title",
"workspaceId",
"projectId",
"updatedAt",
"studioUrl"
],
"additionalProperties": false
}
},
"nextCursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"items",
"nextCursor"
],
"additionalProperties": false
}
{
"name": "summer_call",
"arguments": {
"op": "plans.list",
"input": {
"limit": 10
}
}
}
summer plans list --limit 10
message
plans.message: Tell Summer about a new game
Pass the person’s direction for a game started with projects.create, in their words: Summer reshapes its plan (new or changed pictures). Answers at once; the pictures follow. Next: plans.show.
| MCP | summer_call with "op": "plans.message" |
| CLI | summer plans message |
| 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_game_message |
| Input | Type | Required | Description |
|---|---|---|---|
projectId | string | Yes | The new game’s project, from projects.create. |
text | string | Yes | The direction, e.g. “Make the frog bigger and the pads sink faster”. 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. |
Input JSON schema
Input JSON schema
{
"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)$"
},
"text": {
"description": "The direction, e.g. \"Make the frog bigger and the pads sink faster\".",
"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": [
"projectId",
"text"
]
}
Result JSON schema
Result JSON schema
{
"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"
}
},
"required": [
"projectId",
"title",
"cards",
"drawing",
"lookItemId",
"statusLine",
"url"
],
"additionalProperties": false
}
{
"name": "summer_call",
"arguments": {
"op": "plans.message",
"input": {
"projectId": "0c6a1f60-1d8e-4f4c-8f0e-5a0b8b6f2d11",
"text": "Make it night time and spookier"
}
}
}
summer plans message --project-id 0c6a1f60-1d8e-4f4c-8f0e-5a0b8b6f2d11 --text 'Make it night time and spookier'
move
plans.move: Move a plan into a team
Move a plan into one of the person’s teams (a shared workspace they administer), so its members see and edit it. Shares it with people, so it asks the person unless they let agents contact people. Next: jobs.wait.
| MCP | summer_call with "op": "plans.move" |
| CLI | summer plans move |
| 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. |
| Input | Type | Required | Description |
|---|---|---|---|
planId | string | Yes | From plans.list. |
workspaceId | string | Yes | The team to move it into (from team.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": {
"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)$"
},
"workspaceId": {
"description": "The team to move it into (from team.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)$"
},
"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",
"workspaceId"
]
}
Result JSON schema
Result JSON schema
{
"type": "object",
"properties": {
"planId": {
"type": "string"
},
"workspaceId": {
"type": "string"
},
"title": {
"type": "string"
},
"studioUrl": {
"type": "string"
}
},
"required": [
"planId",
"workspaceId",
"title",
"studioUrl"
],
"additionalProperties": false
}
{
"name": "summer_call",
"arguments": {
"op": "plans.move",
"input": {
"planId": "7b0c2f7e-5d4b-4c5e-9a43-2f0d8f1c9a10",
"workspaceId": "9d8c7b6a-5f4e-4d3c-8b2a-1f0e9d8c7b6a"
}
}
}
summer plans move --plan-id 7b0c2f7e-5d4b-4c5e-9a43-2f0d8f1c9a10 --workspace-id 9d8c7b6a-5f4e-4d3c-8b2a-1f0e9d8c7b6a
pick_card
plans.pick_card: Pick a favourite picture
Mark one picture of a new game’s plan as the person’s favourite for its section (characters, place or storyboard), as picking a card on the create page does. The build brief carries the picks. Next: plans.write_concept.
| MCP | summer_call with "op": "plans.pick_card" |
| CLI | summer plans pick-card |
| 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. |
| Input | Type | Required | Description |
|---|---|---|---|
projectId | string | Yes | The new game’s project, from projects.create. |
section | ”characters” | “place” | “storyboard” | Yes | |
itemId | string | Yes | From plans.show. Length 1 to 64. |
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": {
"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)$"
},
"section": {
"type": "string",
"enum": [
"characters",
"place",
"storyboard"
]
},
"itemId": {
"description": "From plans.show.",
"type": "string",
"minLength": 1,
"maxLength": 64
},
"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",
"section",
"itemId"
]
}
Result JSON schema
Result JSON schema
{
"type": "object",
"properties": {
"projectId": {
"type": "string"
},
"picks": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"required": [
"projectId",
"picks"
],
"additionalProperties": false
}
{
"name": "summer_call",
"arguments": {
"op": "plans.pick_card",
"input": {
"projectId": "0c6a1f60-1d8e-4f4c-8f0e-5a0b8b6f2d11",
"section": "characters",
"itemId": "card_hero"
}
}
}
summer plans pick-card --project-id 0c6a1f60-1d8e-4f4c-8f0e-5a0b8b6f2d11 --section characters --item-id card_hero
prepare_for_engine
plans.prepare_for_engine: Get a direction ready for Summer Engine
Keep a saved direction ready in the person’s account for Summer Engine: the engine offers it when they open a project there. Free. Returns the handoff. Next: tell the person to open Summer Engine.
| MCP | summer_call with "op": "plans.prepare_for_engine" |
| CLI | summer plans prepare-for-engine |
| 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. |
| Input | Type | Required | Description |
|---|---|---|---|
planId | string | Yes | From plans.list. |
directionId | string | Yes | From plans.directions. |
projectId | string | No | The project it is for (from projects.list); default the project the person opens. |
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": {
"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)$"
},
"projectId": {
"description": "The project it is for (from projects.list); default the project the person opens.",
"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"
]
}
Result JSON schema
Result JSON schema
{
"type": "object",
"properties": {
"handoffId": {
"type": "string"
},
"planId": {
"type": "string"
},
"directionId": {
"type": "string"
},
"projectId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"status": {
"type": "string"
},
"title": {
"type": "string"
}
},
"required": [
"handoffId",
"planId",
"directionId",
"projectId",
"status",
"title"
],
"additionalProperties": false
}
{
"name": "summer_call",
"arguments": {
"op": "plans.prepare_for_engine",
"input": {
"planId": "7b0c2f7e-5d4b-4c5e-9a43-2f0d8f1c9a10",
"directionId": "5f1d2c3b-4a59-4e6f-8a7b-9c0d1e2f3a4b"
}
}
}
summer plans prepare-for-engine --plan-id 7b0c2f7e-5d4b-4c5e-9a43-2f0d8f1c9a10 --direction-id 5f1d2c3b-4a59-4e6f-8a7b-9c0d1e2f3a4b
presence
plans.presence: See who is on a plan
Who has the plan open in Summer Studio right now, with what they selected and the topic they are on. Next: plans.chat.
| MCP | summer_call with "op": "plans.presence" |
| CLI | summer plans presence |
| 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_presence |
| Input | Type | Required | Description |
|---|---|---|---|
planId | string | Yes | From plans.list. |
Input JSON schema
Input JSON schema
{
"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"
]
}
Result JSON schema
Result JSON schema
{
"type": "object",
"properties": {
"participants": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": {}
}
}
},
"required": [
"participants"
],
"additionalProperties": false
}
{
"name": "summer_call",
"arguments": {
"op": "plans.presence",
"input": {
"planId": "7b0c2f7e-5d4b-4c5e-9a43-2f0d8f1c9a10"
}
}
}
summer plans presence --plan-id 7b0c2f7e-5d4b-4c5e-9a43-2f0d8f1c9a10
save_concept
plans.save_concept: Save a new game’s concept text
Save the person’s own text as the concept of a game started on the create page; it is what their account keeps for Summer Engine until a rewrite. Next: projects.open_in_engine.
| MCP | summer_call with "op": "plans.save_concept" |
| CLI | summer plans save-concept |
| 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. |
| Input | Type | Required | Description |
|---|---|---|---|
projectId | string | Yes | The new game’s project, from projects.create. |
markdown | string | Yes | The concept in Markdown. Length 1 to 40000. |
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": {
"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)$"
},
"markdown": {
"description": "The concept in Markdown.",
"type": "string",
"minLength": 1,
"maxLength": 40000
},
"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",
"markdown"
]
}
Result JSON schema
Result JSON schema
{
"type": "object",
"properties": {
"projectId": {
"type": "string"
},
"title": {
"type": "string"
},
"markdown": {
"description": "The game concept as the person's account keeps it; Summer Engine starts a project from it.",
"type": "string"
},
"references": {
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"type": "string"
},
"url": {
"type": "string"
},
"assetId": {
"type": "string"
}
},
"required": [
"label",
"url"
],
"additionalProperties": false
}
},
"coverUrl": {
"type": "string"
},
"edited": {
"description": "The text is the person's own edit.",
"type": "boolean"
},
"stale": {
"description": "Their edit was made for other picks; plans.write_concept with rewrite writes it again.",
"type": "boolean"
}
},
"required": [
"projectId",
"title",
"markdown",
"references"
],
"additionalProperties": false
}
{
"name": "summer_call",
"arguments": {
"op": "plans.save_concept",
"input": {
"projectId": "0c6a1f60-1d8e-4f4c-8f0e-5a0b8b6f2d11",
"markdown": "## The game\nA frog knight hops across sinking lily pads."
}
}
}
summer plans save-concept --project-id 0c6a1f60-1d8e-4f4c-8f0e-5a0b8b6f2d11 --markdown '## The game
A frog knight hops across sinking lily pads.'
save_direction
plans.save_direction: Save a direction
Save the direction the person chose as a fixed version: the design written out, with the plan items it pins as references. Needs the current plan revision. Returns the direction id. Next: projects.build.
| MCP | summer_call with "op": "plans.save_direction" |
| CLI | summer plans save-direction |
| 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_board_save_direction |
| Input | Type | Required | Description |
|---|---|---|---|
planId | string | Yes | From plans.list. |
revision | integer | Yes | The current plan revision (plans.get). Range 0 to 9007199254740991. |
title | string | No | Length 1 to 200. |
markdown | string | Yes | The chosen design, written out. Length 1 to 50000. |
selectedItemIds | string[] | Yes | The plan items it pins as references (ids from plans.get). Items 0 to 100. |
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": {
"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)$"
},
"revision": {
"description": "The current plan revision (plans.get).",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"markdown": {
"description": "The chosen design, written out.",
"type": "string",
"minLength": 1,
"maxLength": 50000
},
"selectedItemIds": {
"description": "The plan items it pins as references (ids from plans.get).",
"maxItems": 100,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 64
}
},
"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",
"revision",
"markdown",
"selectedItemIds"
]
}
Result JSON schema
Result JSON schema
{
"type": "object",
"properties": {
"directionId": {
"type": "string"
},
"planId": {
"type": "string"
},
"revision": {
"type": "number"
},
"title": {
"type": "string"
},
"createdAt": {
"type": "string"
}
},
"required": [
"directionId",
"planId",
"revision",
"title",
"createdAt"
],
"additionalProperties": false
}
{
"name": "summer_call",
"arguments": {
"op": "plans.save_direction",
"input": {
"planId": "7b0c2f7e-5d4b-4c5e-9a43-2f0d8f1c9a10",
"revision": 12,
"markdown": "# Frog Knight\nA fast platformer...",
"selectedItemIds": [
"item_hero"
]
}
}
}
summer plans save-direction --plan-id 7b0c2f7e-5d4b-4c5e-9a43-2f0d8f1c9a10 --revision 12 --markdown '# Frog Knight
A fast platformer...' --selected-item-ids item_hero
set_ai_payer
plans.set_ai_payer: Pay for a plan’s AI
Ask the person to pay for everyone’s AI work on a plan with their own credits, or to stop (then each person pays for their own). Returns a link; nothing changes until they confirm. Next: jobs.wait.
| MCP | summer_call with "op": "plans.set_ai_payer" |
| CLI | summer plans set-ai-payer |
| 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. |
| Input | Type | Required | Description |
|---|---|---|---|
planId | string | Yes | From plans.list. |
enabled | boolean | Yes | true: the person’s credits pay for everyone’s AI work on the plan; false: each person pays for their own again. |
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": {
"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)$"
},
"enabled": {
"description": "true: the person's credits pay for everyone's AI work on the plan; false: each person pays for their own again.",
"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
}
},
"required": [
"planId",
"enabled"
]
}
Result JSON schema
Result JSON schema
{
"type": "object",
"properties": {
"planId": {
"type": "string"
},
"paidByThePerson": {
"type": "boolean"
},
"sponsored": {
"type": "boolean"
},
"studioUrl": {
"type": "string"
}
},
"required": [
"planId",
"paidByThePerson",
"sponsored",
"studioUrl"
],
"additionalProperties": false
}
{
"name": "summer_call",
"arguments": {
"op": "plans.set_ai_payer",
"input": {
"planId": "7b0c2f7e-5d4b-4c5e-9a43-2f0d8f1c9a10",
"enabled": true
}
}
}
summer plans set-ai-payer --plan-id 7b0c2f7e-5d4b-4c5e-9a43-2f0d8f1c9a10 --enabled
show
plans.show: Show a new game’s plan
Show the plan of a new game: its pictures with their item ids, the chosen look, whether Summer is still drawing, and the planning question waiting, if any. Next: plans.message, plans.answer or projects.open_in_engine.
| MCP | summer_call with "op": "plans.show" |
| CLI | summer plans show |
| 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_game |
| Input | Type | Required | Description |
|---|---|---|---|
projectId | string | Yes | The new game’s project, from projects.create. |
Input JSON schema
Input JSON schema
{
"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"
]
}
Result JSON schema
Result JSON schema
{
"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"
},
"question": {
"description": "The planning question waiting for an answer.",
"type": "object",
"properties": {
"questionId": {
"type": "string"
},
"title": {
"type": "string"
},
"subtitle": {
"type": "string"
},
"options": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"label": {
"type": "string"
}
},
"required": [
"id",
"label"
],
"additionalProperties": false
}
},
"allowCustomInput": {
"type": "boolean"
},
"allowSkip": {
"type": "boolean"
},
"maxSelections": {
"type": "number"
}
},
"required": [
"questionId",
"title",
"options"
],
"additionalProperties": false
}
},
"required": [
"projectId",
"title",
"cards",
"drawing",
"lookItemId",
"statusLine",
"url"
],
"additionalProperties": false
}
{
"name": "summer_call",
"arguments": {
"op": "plans.show",
"input": {
"projectId": "0c6a1f60-1d8e-4f4c-8f0e-5a0b8b6f2d11"
}
}
}
summer plans show --project-id 0c6a1f60-1d8e-4f4c-8f0e-5a0b8b6f2d11
write_concept
plans.write_concept: Write a new game’s concept
Write the concept of a game started on the create page from its idea, answers and picks, and keep it in the person’s account for Summer Engine. Keeps the person’s own edit unless rewrite. Free. Next: projects.open_in_engine.
| MCP | summer_call with "op": "plans.write_concept" |
| CLI | summer plans write-concept |
| 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. |
| Input | Type | Required | Description |
|---|---|---|---|
projectId | string | Yes | The new game’s project, from projects.create. |
rewrite | boolean | No | Drop the person’s own edit and write it again from the picks. Default false. |
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": {
"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)$"
},
"rewrite": {
"description": "Drop the person's own edit and write it again from the picks.",
"default": false,
"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
}
},
"required": [
"projectId"
]
}
Result JSON schema
Result JSON schema
{
"type": "object",
"properties": {
"projectId": {
"type": "string"
},
"title": {
"type": "string"
},
"markdown": {
"description": "The game concept as the person's account keeps it; Summer Engine starts a project from it.",
"type": "string"
},
"references": {
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"type": "string"
},
"url": {
"type": "string"
},
"assetId": {
"type": "string"
}
},
"required": [
"label",
"url"
],
"additionalProperties": false
}
},
"coverUrl": {
"type": "string"
},
"edited": {
"description": "The text is the person's own edit.",
"type": "boolean"
},
"stale": {
"description": "Their edit was made for other picks; plans.write_concept with rewrite writes it again.",
"type": "boolean"
}
},
"required": [
"projectId",
"title",
"markdown",
"references"
],
"additionalProperties": false
}
{
"name": "summer_call",
"arguments": {
"op": "plans.write_concept",
"input": {
"projectId": "0c6a1f60-1d8e-4f4c-8f0e-5a0b8b6f2d11"
}
}
}
summer plans write-concept --project-id 0c6a1f60-1d8e-4f4c-8f0e-5a0b8b6f2d11

