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

> Move around Summer Studio: open pages, read the map and the page. For each operation: what it does, whether it asks you first, its inputs and an example call.

Move around Summer Studio: open pages, read the map and the page. 6 operations. How to call them, and what the answers mean: [Operations reference](/mcp/operations).

<Note>
  Generated from the `summer-engine` npm package `4.2.0`: its public operation catalog (`registry/operations/public-catalog.json`) and its engine and local operations. If something here is wrong, the operation's definition is wrong.
</Note>

| Operation | What it does | Asks you first |
| - | - | - |
| [`studio.map`](#map) | The map of Summer Studio: every page (destination id, title, what it is for, path), and with guide the product guide the Studio assistant answers from. | Never |
| [`studio.open`](#open) | Move the person's open Summer Studio tab to a page (target: a destination id from studio.map, or a /studio or /create path). | Not by default |
| [`studio.page`](#page) | Read the person's open Summer Studio tab: its path, the fields an agent may fill (id, label, kind, value, limits, choices) and its buttons (confirm ones are the person's). | Never |
| [`studio.read_form`](#read_form) | Every Studio form, declared once: without form, the list; with form, its fields as JSON Schema, its buttons (critical ones are the person's) and, for a form that saves with no tab, the person's values. | Never |
| [`studio.submit_form`](#submit_form) | Fill a Studio form and save it or press one of its buttons, checked against the form. | Not by default |
| [`studio.use_page`](#use_page) | Fill fields and press one button on the person's open Studio tab, as the Studio assistant does; values are checked against the page. | Not by default |

***

### map

`studio.map`: **Read the Studio map**

The map of Summer Studio: every page (destination id, title, what it is for, path), and with guide the product guide the Studio assistant answers from. No open tab needed. Next: studio.open with a destination.

| | |
| - | - |
| **MCP** | `summer_call` with `"op": "studio.map"` |
| **CLI** | `summer studio map` |
| **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_studio_map` |

**Inputs:**

| Input | Type | Required | Description |
| - | - | - | - |
| `guide` | boolean | No | Also return the full product guide text. Default `false`. |

<Accordion title="Input JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "guide": {
        "description": "Also return the full product guide text.",
        "default": false,
        "type": "boolean"
      }
    }
  }
  ```
</Accordion>

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

**Example:** Which Studio pages exist?

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

  ```bash CLI theme={null}
  summer studio map
  ```
</CodeGroup>

***

### open

`studio.open`: **Open a Studio page**

Move the person's open Summer Studio tab to a page (target: a destination id from studio.map, or a /studio or /create path). They see a notice that their agent opened it. Returns the page's fields and buttons. Next: studio.page.

| | |
| - | - |
| **MCP** | `summer_call` with `"op": "studio.open"` |
| **CLI** | `summer studio open` |
| **Runs** | On Summer's servers: the hosted MCP, or the npm MCP after `summer login`. The npm MCP also runs it on your computer. 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_studio_open` |

**Inputs:**

| Input | Type | Required | Description |
| - | - | - | - |
| `target` | string | No | A destination id from studio.map, or a path starting with /studio or /create. Required here. Length 1 to 500. |
| `params` | object | No | Values for the path's :slots, e.g. \{"gameId": "g\_123"} for /studio/store/:gameId. |
| `surface` | "auto" \| "web" \| "editor" | No | web or auto here; editor surfaces open with the local Summer MCP. |
| `open` | boolean | No | false: only resolve the page and return its url; nothing moves. |
| `tabId` | string | No | One Studio tab (from an earlier answer); default the tab the person is looking at. |
| `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": {
      "target": {
        "description": "A destination id from studio.map, or a path starting with /studio or /create. Required here.",
        "type": "string",
        "minLength": 1,
        "maxLength": 500
      },
      "params": {
        "description": "Values for the path's :slots, e.g. {\"gameId\": \"g_123\"} for /studio/store/:gameId.",
        "type": "object",
        "additionalProperties": {
          "type": "string",
          "maxLength": 200
        }
      },
      "surface": {
        "description": "web or auto here; editor surfaces open with the local Summer MCP.",
        "type": "string",
        "enum": [
          "auto",
          "web",
          "editor"
        ]
      },
      "open": {
        "description": "false: only resolve the page and return its url; nothing moves.",
        "type": "boolean"
      },
      "tabId": {
        "description": "One Studio tab (from an earlier answer); default the tab the person is looking at.",
        "type": "string",
        "pattern": "^[A-Za-z0-9_-]{8,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
      }
    }
  }
  ```
</Accordion>

<Accordion title="Result JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "tabId": {
        "type": "string"
      },
      "page": {
        "description": "The open page: its fields (id, label, kind, value, limits, choices) and buttons (confirm ones are the person's to press).",
        "type": "object",
        "properties": {
          "path": {
            "type": "string"
          },
          "fields": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": {}
            }
          },
          "actions": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": {}
            }
          }
        },
        "required": [
          "path",
          "fields",
          "actions"
        ],
        "additionalProperties": false
      },
      "filled": {
        "type": "array",
        "items": {
          "type": "string"
        }
      },
      "skipped": {
        "type": "array",
        "items": {
          "type": "string"
        }
      },
      "pressed": {
        "anyOf": [
          {
            "type": "boolean"
          },
          {
            "type": "null"
          }
        ]
      },
      "pressReceipt": {
        "description": "Whether the button handler returned, failed or timed out; not proof a save persisted.",
        "type": "object",
        "additionalProperties": {}
      },
      "personConfirms": {
        "description": "The person presses this button; tell them. Nothing was pressed for them.",
        "type": "object",
        "properties": {
          "critical": {
            "description": "pay, delete, publish, upload, cancel, invite, send, agree or sign-out.",
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "link": {
            "description": "The page, for the person when no Studio tab answered.",
            "type": "string"
          },
          "highlighted": {
            "description": "Their open tab shows the button.",
            "type": "boolean"
          },
          "message": {
            "type": "string"
          }
        },
        "required": [
          "highlighted",
          "message"
        ],
        "additionalProperties": false
      },
      "url": {
        "description": "The page, when open is false.",
        "type": "string"
      }
    },
    "additionalProperties": false
  }
  ```
</Accordion>

**Example:** Show the person their settings.

<CodeGroup>
  ```json MCP theme={null}
  {
    "name": "summer_call",
    "arguments": {
      "op": "studio.open",
      "input": {
        "target": "settings"
      }
    }
  }
  ```

  ```bash CLI theme={null}
  summer studio open --target settings
  ```
</CodeGroup>

***

### page

`studio.page`: **Read the open Studio page**

Read the person's open Summer Studio tab: its path, the fields an agent may fill (id, label, kind, value, limits, choices) and its buttons (confirm ones are the person's). Next: studio.use\_page.

| | |
| - | - |
| **MCP** | `summer_call` with `"op": "studio.page"` |
| **CLI** | `summer studio page` |
| **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_studio_page` |

**Inputs:**

| Input | Type | Required | Description |
| - | - | - | - |
| `tabId` | string | No | One Studio tab (from an earlier answer); default the tab the person is looking at. |

<Accordion title="Input JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "tabId": {
        "description": "One Studio tab (from an earlier answer); default the tab the person is looking at.",
        "type": "string",
        "pattern": "^[A-Za-z0-9_-]{8,64}$"
      }
    }
  }
  ```
</Accordion>

<Accordion title="Result JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "tabId": {
        "type": "string"
      },
      "page": {
        "description": "The open page: its fields (id, label, kind, value, limits, choices) and buttons (confirm ones are the person's to press).",
        "type": "object",
        "properties": {
          "path": {
            "type": "string"
          },
          "fields": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": {}
            }
          },
          "actions": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": {}
            }
          }
        },
        "required": [
          "path",
          "fields",
          "actions"
        ],
        "additionalProperties": false
      },
      "filled": {
        "type": "array",
        "items": {
          "type": "string"
        }
      },
      "skipped": {
        "type": "array",
        "items": {
          "type": "string"
        }
      },
      "pressed": {
        "anyOf": [
          {
            "type": "boolean"
          },
          {
            "type": "null"
          }
        ]
      },
      "pressReceipt": {
        "description": "Whether the button handler returned, failed or timed out; not proof a save persisted.",
        "type": "object",
        "additionalProperties": {}
      },
      "personConfirms": {
        "description": "The person presses this button; tell them. Nothing was pressed for them.",
        "type": "object",
        "properties": {
          "critical": {
            "description": "pay, delete, publish, upload, cancel, invite, send, agree or sign-out.",
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "link": {
            "description": "The page, for the person when no Studio tab answered.",
            "type": "string"
          },
          "highlighted": {
            "description": "Their open tab shows the button.",
            "type": "boolean"
          },
          "message": {
            "type": "string"
          }
        },
        "required": [
          "highlighted",
          "message"
        ],
        "additionalProperties": false
      }
    },
    "additionalProperties": false
  }
  ```
</Accordion>

**Example:** What is the person looking at?

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

  ```bash CLI theme={null}
  summer studio page
  ```
</CodeGroup>

***

### read\_form

`studio.read_form`: **Read a Studio form**

Every Studio form, declared once: without form, the list; with form, its fields as JSON Schema, its buttons (critical ones are the person's) and, for a form that saves with no tab, the person's values. No open tab needed. Next: studio.submit\_form.

| | |
| - | - |
| **MCP** | `summer_call` with `"op": "studio.read_form"` |
| **CLI** | `summer studio read-form` |
| **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_studio_read_form` |

**Inputs:**

| Input | Type | Required | Description |
| - | - | - | - |
| `form` | string | No | A form id from the list (e.g. profile, settings). Length 0 to 64. |
| `id` | string | No | For a page of one of their things (a path with :id): that thing's id. Length 0 to 128. |
| `live` | boolean | No | Also read their open Studio tab: the items each per-item button can take. Default `false`. |

<Accordion title="Input JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "form": {
        "description": "A form id from the list (e.g. profile, settings).",
        "type": "string",
        "maxLength": 64
      },
      "id": {
        "description": "For a page of one of their things (a path with :id): that thing's id.",
        "type": "string",
        "maxLength": 128
      },
      "live": {
        "description": "Also read their open Studio tab: the items each per-item button can take.",
        "default": false,
        "type": "boolean"
      }
    }
  }
  ```
</Accordion>

<Accordion title="Result JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "forms": {
        "description": "Without form: every form (id, title, summary, path, how it saves, its critical buttons).",
        "type": "array",
        "items": {
          "type": "object",
          "additionalProperties": {}
        }
      },
      "form": {
        "type": "string"
      },
      "title": {
        "type": "string"
      },
      "summary": {
        "type": "string"
      },
      "url": {
        "anyOf": [
          {
            "type": "string"
          },
          {
            "type": "null"
          }
        ]
      },
      "needs": {
        "type": "string"
      },
      "saves": {
        "description": "server: saves with no tab; generate: runs a generation; tab: filled in the open tab.",
        "type": "string"
      },
      "tabOnly": {
        "type": "string"
      },
      "schema": {
        "type": "object",
        "additionalProperties": {}
      },
      "actions": {
        "description": "Its buttons; one with an op runs through that op (call it, not the form); ui only changes the page; person is the person's alone.",
        "type": "array",
        "items": {
          "type": "object",
          "additionalProperties": {}
        }
      },
      "values": {
        "type": "object",
        "additionalProperties": {}
      },
      "items": {
        "type": "object",
        "additionalProperties": {}
      },
      "studioUrl": {
        "type": "string"
      }
    },
    "additionalProperties": false
  }
  ```
</Accordion>

**Example:** What does the profile form take?

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

  ```bash CLI theme={null}
  summer studio read-form --form profile
  ```
</CodeGroup>

***

### submit\_form

`studio.submit_form`: **Submit a Studio form**

Fill a Studio form and save it or press one of its buttons, checked against the form. A button that is an operation answers moved: call that op. Critical buttons open the page for the person to press. Next: studio.read\_form.

| | |
| - | - |
| **MCP** | `summer_call` with `"op": "studio.submit_form"` |
| **CLI** | `summer studio submit-form` |
| **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_studio_submit_form` |

**Inputs:**

| Input | Type | Required | Description |
| - | - | - | - |
| `form` | string | Yes | A form id from studio.read\_form. Length 0 to 64. |
| `values` | object | No | Field name to value, e.g. \{"bio": "..."}. |
| `action` | string | No | A button of the form. Default: its server save. Length 0 to 64. |
| `id` | string | No | For a page of one of their things (a path with :id). Length 0 to 128. |
| `show` | boolean | No | Also open the page in their Studio tab and fill it. Default `false`. |
| `tabId` | string | No | One Studio tab (from an earlier answer); default the tab the person is looking at. |
| `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": {
      "form": {
        "description": "A form id from studio.read_form.",
        "type": "string",
        "maxLength": 64
      },
      "values": {
        "description": "Field name to value, e.g. {\"bio\": \"...\"}.",
        "type": "object",
        "additionalProperties": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 4000
            },
            {
              "type": "number"
            },
            {
              "type": "boolean"
            }
          ]
        }
      },
      "action": {
        "description": "A button of the form. Default: its server save.",
        "type": "string",
        "maxLength": 64
      },
      "id": {
        "description": "For a page of one of their things (a path with :id).",
        "type": "string",
        "maxLength": 128
      },
      "show": {
        "description": "Also open the page in their Studio tab and fill it.",
        "default": false,
        "type": "boolean"
      },
      "tabId": {
        "description": "One Studio tab (from an earlier answer); default the tab the person is looking at.",
        "type": "string",
        "pattern": "^[A-Za-z0-9_-]{8,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": [
      "form"
    ]
  }
  ```
</Accordion>

<Accordion title="Result JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "tabId": {
        "type": "string"
      },
      "page": {
        "description": "The open page: its fields (id, label, kind, value, limits, choices) and buttons (confirm ones are the person's to press).",
        "type": "object",
        "properties": {
          "path": {
            "type": "string"
          },
          "fields": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": {}
            }
          },
          "actions": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": {}
            }
          }
        },
        "required": [
          "path",
          "fields",
          "actions"
        ],
        "additionalProperties": false
      },
      "filled": {
        "type": "array",
        "items": {
          "type": "string"
        }
      },
      "skipped": {
        "type": "array",
        "items": {
          "type": "string"
        }
      },
      "pressed": {
        "anyOf": [
          {
            "type": "boolean"
          },
          {
            "type": "null"
          }
        ]
      },
      "pressReceipt": {
        "description": "Whether the button handler returned, failed or timed out; not proof a save persisted.",
        "type": "object",
        "additionalProperties": {}
      },
      "personConfirms": {
        "description": "The person presses this button; tell them. Nothing was pressed for them.",
        "type": "object",
        "properties": {
          "critical": {
            "description": "pay, delete, publish, upload, cancel, invite, send, agree or sign-out.",
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "link": {
            "description": "The page, for the person when no Studio tab answered.",
            "type": "string"
          },
          "highlighted": {
            "description": "Their open tab shows the button.",
            "type": "boolean"
          },
          "message": {
            "type": "string"
          }
        },
        "required": [
          "highlighted",
          "message"
        ],
        "additionalProperties": false
      },
      "form": {
        "type": "string"
      },
      "url": {
        "type": "string"
      },
      "saved": {
        "type": "array",
        "items": {
          "type": "string"
        }
      },
      "message": {
        "type": "string"
      },
      "data": {},
      "shown": {
        "type": "boolean"
      }
    },
    "required": [
      "form"
    ],
    "additionalProperties": false
  }
  ```
</Accordion>

**Example:** Save the person's bio.

<CodeGroup>
  ```json MCP theme={null}
  {
    "name": "summer_call",
    "arguments": {
      "op": "studio.submit_form",
      "input": {
        "form": "profile",
        "values": {
          "bio": "I make cozy games."
        }
      }
    }
  }
  ```

  ```bash CLI theme={null}
  summer studio submit-form --form profile --input '{"values":{"bio":"I make cozy games."}}'
  ```
</CodeGroup>

***

### use\_page

`studio.use_page`: **Fill the open Studio page**

Fill fields and press one button on the person's open Studio tab, as the Studio assistant does; values are checked against the page. A button that is an operation answers moved: call that op. Critical buttons are the person's. Next: studio.page.

| | |
| - | - |
| **MCP** | `summer_call` with `"op": "studio.use_page"` |
| **CLI** | `summer studio use-page` |
| **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_studio_use_page` |

**Inputs:**

| Input | Type | Required | Description |
| - | - | - | - |
| `fill` | object\[] | No | Items 0 to 20. |
| `fill[].field` | string | Yes | Length 0 to 64. |
| `fill[].value` | string \| number \| boolean | Yes | |
| `press` | string | No | A button id from studio.page. Length 0 to 64. |
| `tabId` | string | No | One Studio tab (from an earlier answer); default the tab the person is looking at. |
| `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": {
      "fill": {
        "maxItems": 20,
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "field": {
              "type": "string",
              "maxLength": 64
            },
            "value": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 4000
                },
                {
                  "type": "number"
                },
                {
                  "type": "boolean"
                }
              ]
            }
          },
          "required": [
            "field",
            "value"
          ],
          "additionalProperties": false
        }
      },
      "press": {
        "description": "A button id from studio.page.",
        "type": "string",
        "maxLength": 64
      },
      "tabId": {
        "description": "One Studio tab (from an earlier answer); default the tab the person is looking at.",
        "type": "string",
        "pattern": "^[A-Za-z0-9_-]{8,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
      }
    }
  }
  ```
</Accordion>

<Accordion title="Result JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "tabId": {
        "type": "string"
      },
      "page": {
        "description": "The open page: its fields (id, label, kind, value, limits, choices) and buttons (confirm ones are the person's to press).",
        "type": "object",
        "properties": {
          "path": {
            "type": "string"
          },
          "fields": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": {}
            }
          },
          "actions": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": {}
            }
          }
        },
        "required": [
          "path",
          "fields",
          "actions"
        ],
        "additionalProperties": false
      },
      "filled": {
        "type": "array",
        "items": {
          "type": "string"
        }
      },
      "skipped": {
        "type": "array",
        "items": {
          "type": "string"
        }
      },
      "pressed": {
        "anyOf": [
          {
            "type": "boolean"
          },
          {
            "type": "null"
          }
        ]
      },
      "pressReceipt": {
        "description": "Whether the button handler returned, failed or timed out; not proof a save persisted.",
        "type": "object",
        "additionalProperties": {}
      },
      "personConfirms": {
        "description": "The person presses this button; tell them. Nothing was pressed for them.",
        "type": "object",
        "properties": {
          "critical": {
            "description": "pay, delete, publish, upload, cancel, invite, send, agree or sign-out.",
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "link": {
            "description": "The page, for the person when no Studio tab answered.",
            "type": "string"
          },
          "highlighted": {
            "description": "Their open tab shows the button.",
            "type": "boolean"
          },
          "message": {
            "type": "string"
          }
        },
        "required": [
          "highlighted",
          "message"
        ],
        "additionalProperties": false
      },
      "checked": {
        "type": "object",
        "additionalProperties": {}
      }
    },
    "additionalProperties": false
  }
  ```
</Accordion>

**Example:** Type into the open page.

<CodeGroup>
  ```json MCP theme={null}
  {
    "name": "summer_call",
    "arguments": {
      "op": "studio.use_page",
      "input": {
        "fill": [
          {
            "field": "profile.bio",
            "value": "I make cozy games."
          }
        ]
      }
    }
  }
  ```

  ```bash CLI theme={null}
  summer studio use-page --input '{"fill":[{"field":"profile.bio","value":"I make cozy games."}]}'
  ```
</CodeGroup>


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