> **Building with AI coding agents?** Install the authstack plugin with one command. This equips your agent with accurate Scalekit implementation patterns.
>
> **Recommended** (the `-y` flags skip prompts, so the command runs without an interactive terminal):
> ```bash
> npx -y @scalekit-inc/cli setup -y
> ```
>
> Global:
> ```bash
> npm install -g @scalekit-inc/cli
> scalekit setup -y
> ```
>
> Supports Claude Code, Cursor, GitHub Copilot, Codex + skills for other Agent Skills-compatible agents in `~/.agents/skills`.
> Skills: integrate-agentkit, implement-saaskit, add-mcp-oauth, implement-sso, implement-scim.
> [Full setup guide](https://docs.scalekit.com/dev-kit/build-with-ai/)

---

# Connect AI agents to the Onepage MCP server

The Onepage MCP connector routes your AI agent's tool calls to Onepage's own MCP server through Scalekit. Each user signs in to Onepage once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 54 tools.

**Authentication:** OAuth2.1/DCR
**Categories:** Design
**Tools:** 54: 18 read, 31 write, 5 destructive
**Users sign in with:** OAuth
**OAuth app:** Scalekit's or your own
**Built by:** Vendor MCP
**Try it:** [Playground in the Scalekit dashboard](https://app.scalekit.com/ws/signup?sk_intent=playground&provider=ONEPAGEMCP)

## Setup

1. ### Install the SDK

   **Node.js**

   ```bash
   npm install @scalekit-sdk/node dotenv
   ```

   **Python**

   ```bash
   pip install scalekit-sdk-python python-dotenv
   ```

2. ### Set your credentials

   Add your Scalekit credentials to your `.env` file. Find values in **[app.scalekit.com](https://app.scalekit.com)** > **Developers** > **API Credentials**.

   ```sh title=".env"
   SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
   SCALEKIT_CLIENT_ID=<your-client-id>
   SCALEKIT_CLIENT_SECRET=<your-client-secret>
   ```

3. ### Create the Onepage MCP connection

   In **AgentKit > Connections**, create an Onepage MCP connection. The name you give it is the `connection_name` your code passes. See [Configure connections](/agentkit/connections/).

   Scalekit credentials are available for Onepage MCP server, so you don't need to register an OAuth app.

4. ### Authorize a user and make your first call

   **Node.js** (`quickstart.mts`)

   ```typescript
   import { ScalekitClient } from '@scalekit-sdk/node'
   import 'dotenv/config'
   import { createInterface } from 'node:readline/promises'

   const scalekit = new ScalekitClient(
     process.env.SCALEKIT_ENVIRONMENT_URL,
     process.env.SCALEKIT_CLIENT_ID,
     process.env.SCALEKIT_CLIENT_SECRET,
   )
   const actions = scalekit.actions

   const connector = 'onepagemcp'
   const identifier = 'user_123'

   // Generate an authorization link for the user
   const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
   console.log('Authorize Onepage MCP:', link)
   const rl = createInterface({ input: process.stdin, output: process.stdout })
   await rl.question('Press Enter after authorizing...')
   rl.close()

   // Make your first call
   const result = await actions.executeTool({
     connector,
     identifier,
     toolName: 'onepagemcp_whoami',
     toolInput: {},
   })
   console.log(result)
   ```

   ```bash
   npx tsx quickstart.mts
   ```

   **Python** (`quickstart.py`)

   ```python
   import os
   from scalekit import ScalekitClient
   from dotenv import load_dotenv
   load_dotenv()

   scalekit_client = ScalekitClient(
       env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),
       client_id=os.getenv("SCALEKIT_CLIENT_ID"),
       client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),
   )
   actions = scalekit_client.actions

   connection_name = "onepagemcp"
   identifier = "user_123"

   # Generate an authorization link for the user
   link_response = actions.get_authorization_link(
       connection_name=connection_name,
       identifier=identifier,
   )
   print("Authorize Onepage MCP:", link_response.link)
   input("Press Enter after authorizing...")

   # Make your first call
   result = actions.execute_tool(
       tool_input={},
       tool_name="onepagemcp_whoami",
       connection_name=connection_name,
       identifier=identifier,
   )
   print(result)
   ```

   ```bash
   python quickstart.py
   ```

   Each user signs in once. See [Authorize a user](/agentkit/tools/authorize/) for the full flow and statuses.

## Tools

Pass the exact name to `execute_tool`, with an input like each tool's example. To ask for a tool that's missing, use the [request form](https://scalekitsupport.portal.usepylon.com/forms/request-a-connector-tool).

**Node.js**

```typescript
const result = await actions.executeTool({
  toolName: 'onepagemcp_get_color_schema',
  toolInput: {
    site_id: '<site_id>',
  },
  connector: 'onepagemcp',
  identifier: 'user_123',
})
```

**Python**

```python
result = actions.execute_tool(
    tool_name="onepagemcp_get_color_schema",
    tool_input={
        "site_id": "<site_id>",
    },
    connection_name="onepagemcp",
    identifier="user_123",
)
```

`result.data` is the app's response as JSON, and `result.execution_id` (`executionId` in Node.js) is the ID of the call.

### `onepagemcp_get_color_schema`

GetColorSchema · Read-only

Get the current color schema for a site.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `site_id` (`string`, required): The site UUID to retrieve the color schema for.
- `_conversation_ref` (`string`, optional): Short random token generated on your first call in a conversation; reuse the exact same value on every subsequent call to group related tool calls for analytics.
- `_rationale` (`string`, optional): Describe the user's intent and why this tool was selected in general terms only; do not include specific field values, names, emails, or other data.

Example input: `{"site_id":"<site_id>"}`

### `onepagemcp_get_file_content`

GetFileContent · Read-only

Get the content of a single source file from a vibe section's React app.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `page_id` (`string`, required): Page UUID.
- `path` (`string`, required): File path relative to app root.
- `section_id` (`string`, required): Section UUID.
- `site_id` (`string`, required): Site UUID.
- `_conversation_ref` (`string`, optional): Short random token generated on your first call in a conversation; reuse the exact same value on every subsequent call to group related tool calls for analytics.
- `_rationale` (`string`, optional): Describe the user's intent and why this tool was selected in general terms only; do not include specific field values, names, emails, or other data.

Example input: `{"page_id":"<page_id>","path":"<path>","section_id":"<section_id>","site_id":"<site_id>"}`

### `onepagemcp_get_font_kit`

GetFontKit · Read-only

Get the font kit configured for a site.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `site_id` (`string`, required): The site UUID to retrieve the font kit for.
- `_conversation_ref` (`string`, optional): Short random token generated on your first call in a conversation; reuse the exact same value on every subsequent call to group related tool calls for analytics.
- `_rationale` (`string`, optional): Describe the user's intent and why this tool was selected in general terms only; do not include specific field values, names, emails, or other data.

Example input: `{"site_id":"<site_id>"}`

### `onepagemcp_get_page_overview`

GetPageOverview · Read-only

Get a structural overview of a page including its sections and layout.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `page_id` (`string`, required): UUID of the page to retrieve an overview for.
- `site_id` (`string`, required): UUID of the site that contains the page.
- `_conversation_ref` (`string`, optional): Short random token generated on your first call in a conversation; reuse the exact same value on every subsequent call to group related tool calls for analytics.
- `_rationale` (`string`, optional): Describe the user's intent and why this tool was selected in general terms only; do not include specific field values, names, emails, or other data.

Example input: `{"page_id":"<page_id>","site_id":"<site_id>"}`

### `onepagemcp_get_react_app_info`

GetReactAppInfo · Read-only

Get metadata and file structure information about a vibe section's React app.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `page_id` (`string`, required): UUID of the page containing the vibe section.
- `section_id` (`string`, required): UUID of the vibe section whose React app info to retrieve.
- `site_id` (`string`, required): UUID of the site that contains the page.
- `_conversation_ref` (`string`, optional): Short random token generated on your first call in a conversation; reuse the exact same value on every subsequent call to group related tool calls for analytics.
- `_rationale` (`string`, optional): Describe the user's intent and why this tool was selected in general terms only; do not include specific field values, names, emails, or other data.

Example input: `{"page_id":"<page_id>","section_id":"<section_id>","site_id":"<site_id>"}`

### `onepagemcp_get_section`

GetSection · Read-only

Get details of a specific section on a page including its type and content.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `page_id` (`string`, required): Page UUID identifying which page the section belongs to.
- `section_id` (`string`, required): Section UUID identifying the specific section to retrieve.
- `site_id` (`string`, required): Site UUID identifying which site the page belongs to.
- `_conversation_ref` (`string`, optional): Short random token generated on your first call in a conversation; reuse the exact same value on every subsequent call to group related tool calls for analytics.
- `_rationale` (`string`, optional): Describe the user's intent and why this tool was selected in general terms only; do not include specific field values, names, emails, or other data.

Example input: `{"page_id":"<page_id>","section_id":"<section_id>","site_id":"<site_id>"}`

### `onepagemcp_get_site`

GetSite · Read-only

Get a site by ID with its domains and pages.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `site_id` (`string`, required): Site UUID.
- `_conversation_ref` (`string`, optional): Short random token generated on your first call in a conversation; reuse the exact same value on every subsequent call to group related tool calls for analytics.
- `_rationale` (`string`, optional): Describe the user's intent and why this tool was selected in general terms only; do not include specific field values, names, emails, or other data.

Example input: `{"site_id":"<site_id>"}`

### `onepagemcp_get_site_dependencies`

GetSiteDependencies · Read-only

Get the npm dependencies and @siteui package dependencies for a site.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `site_id` (`string`, required): Site UUID to retrieve dependencies for.
- `_conversation_ref` (`string`, optional): Short random token generated on your first call in a conversation; reuse the exact same value on every subsequent call to group related tool calls for analytics.
- `_rationale` (`string`, optional): Describe the user's intent and why this tool was selected in general terms only; do not include specific field values, names, emails, or other data.

Example input: `{"site_id":"<site_id>"}`

### `onepagemcp_get_siteui_package_info`

GetSiteuiPackageInfo · Read-only

Get metadata and file structure of a @siteui shared package.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `package_name` (`string`, required): Package name, e.g. @siteui/my-components.
- `_conversation_ref` (`string`, optional): Short random token generated on your first call in a conversation; reuse the exact same value on every subsequent call to group related tool calls for analytics.
- `_rationale` (`string`, optional): Describe the user's intent and why this tool was selected in general terms only; do not include specific field values, names, emails, or other data.

Example input: `{"package_name":"<package_name>"}`

### `onepagemcp_list_pages`

ListPages · Read-only

List pages of a site.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `site_id` (`string`, required): Site UUID.
- `_conversation_ref` (`string`, optional): Short random token generated on your first call in a conversation; reuse the exact same value on every subsequent call to group related tool calls for analytics.
- `_rationale` (`string`, optional): Describe the user's intent and why this tool was selected in general terms only; do not include specific field values, names, emails, or other data.
- `limit` (`integer`, optional): Max results (default 50, cap 200).

Example input: `{"site_id":"<site_id>"}`

### `onepagemcp_list_sites`

ListSites · Read-only

List the authenticated user's sites. Returns owned, shared, admin-collaborator, and template sites across all folders. Each site is tagged with role, shared, is_template, folder_id. On the first page at workspace root also returns folders for navigation. Cursor-paginated.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `_conversation_ref` (`string`, optional): Short random token generated on your first call in a conversation; reuse the exact same value on every subsequent call to group related tool calls for analytics.
- `_rationale` (`string`, optional): Describe the user's intent and why this tool was selected in general terms only; do not include specific field values, names, emails, or other data.
- `cursor` (`string`, optional): Opaque pagination token from a previous response's page.next_cursor. Omit on first page.
- `folder_id` (`string`, optional): Restrict results to a single folder UUID.
- `limit` (`integer`, optional): Page size (default 50, cap 100).
- `query` (`string`, optional): Case-insensitive substring match on site title.
- `scope` (`string`, optional): Which sites to list: all (default), owned, shared, or templates. One of: `all`, `owned`, `shared`, `templates`.
- `sort` (`string`, optional): Sort order: recently_created (default), recently_updated, or title. One of: `recently_created`, `recently_updated`, `title`.

Example input: `{}`

### `onepagemcp_list_siteui_packages`

ListSiteuiPackages · Read-only

List available @siteui shared packages for the workspace.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `site_id` (`string`, required): Site UUID to list @siteui packages for.
- `_conversation_ref` (`string`, optional): Short random token generated on your first call in a conversation; reuse the exact same value on every subsequent call to group related tool calls for analytics.
- `_rationale` (`string`, optional): Describe the user's intent and why this tool was selected in general terms only; do not include specific field values, names, emails, or other data.

Example input: `{"site_id":"<site_id>"}`

### `onepagemcp_onepage_skill_get`

GetOnepageSkill · Read-only

Load a specific Onepage skill to extend Claude's capabilities. Call onepage_skill_list first to discover available skills.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `skill_id` (`string`, required): Skill identifier from the onepage_skill_list response.
- `_conversation_ref` (`string`, optional): Short random token generated on your first call in a conversation; reuse the exact same value on every subsequent call to group related tool calls for analytics.
- `_rationale` (`string`, optional): Describe the user's intent and why this tool was selected in general terms only; do not include specific field values, names, emails, or other data.

Example input: `{"skill_id":"<skill_id>"}`

### `onepagemcp_onepage_skill_list`

ListOnepageSkills · Read-only

List available Onepage skills that can be loaded to extend Claude's capabilities for site building.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `_conversation_ref` (`string`, optional): Short random token generated on your first call in a conversation; reuse the exact same value on every subsequent call to group related tool calls for analytics.
- `_rationale` (`string`, optional): Describe the user's intent and why this tool was selected in general terms only; do not include specific field values, names, emails, or other data.

Example input: `{}`

### `onepagemcp_read_files`

ReadFiles · Read-only

Read multiple source files from a vibe section's React app.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `page_id` (`string`, required): UUID of the page containing the vibe section.
- `paths` (`array`, required): List of file paths to read from the React app.
- `section_id` (`string`, required): UUID of the vibe section whose files to read.
- `site_id` (`string`, required): UUID of the site that contains the page.
- `_conversation_ref` (`string`, optional): Short random token generated on your first call in a conversation; reuse the exact same value on every subsequent call to group related tool calls for analytics.
- `_rationale` (`string`, optional): Describe the user's intent and why this tool was selected in general terms only; do not include specific field values, names, emails, or other data.

Example input: `{"page_id":"<page_id>","paths":[],"section_id":"<section_id>","site_id":"<site_id>"}`

### `onepagemcp_read_siteui_files`

ReadSiteuiFiles · Read-only

Read source files from a @siteui shared package.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `package_name` (`string`, required): Package name.
- `paths` (`array`, required): File paths to read from the package.
- `_conversation_ref` (`string`, optional): Short random token generated on your first call in a conversation; reuse the exact same value on every subsequent call to group related tool calls for analytics.
- `_rationale` (`string`, optional): Describe the user's intent and why this tool was selected in general terms only; do not include specific field values, names, emails, or other data.

Example input: `{"package_name":"<package_name>","paths":[]}`

### `onepagemcp_search_fonts`

SearchFonts · Read-only

Search available fonts for use in site design.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `query` (`string`, required): Font name search query.
- `_conversation_ref` (`string`, optional): Short random token generated on your first call in a conversation; reuse the exact same value on every subsequent call to group related tool calls for analytics.
- `_rationale` (`string`, optional): Describe the user's intent and why this tool was selected in general terms only; do not include specific field values, names, emails, or other data.
- `limit` (`integer`, optional): Maximum number of results to return (default 20).

Example input: `{"query":"<query>"}`

### `onepagemcp_whoami`

Whoami · Read-only

Get the authenticated Onepage account identity (email, name, language, role).

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `_conversation_ref` (`string`, optional): Short random token generated on your first call in a conversation; reuse the exact same value on every subsequent call to group related tool calls for analytics.
- `_rationale` (`string`, optional): Describe the user's intent and why this tool was selected in general terms only; do not include specific field values, names, emails, or other data.

Example input: `{}`

### `onepagemcp_build_react_app`

BuildReactApp · Write

Trigger a build of the vibe section's React app. Returns build status and any compilation errors.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `page_id` (`string`, required): Page UUID.
- `section_id` (`string`, required): Section UUID.
- `site_id` (`string`, required): Site UUID.
- `_conversation_ref` (`string`, optional): Short random token generated on your first call in a conversation; reuse the exact same value on every subsequent call to group related tool calls for analytics.
- `_rationale` (`string`, optional): Describe the user's intent and why this tool was selected in general terms only; do not include specific field values, names, emails, or other data.

Example input: `{"page_id":"<page_id>","section_id":"<section_id>","site_id":"<site_id>"}`

### `onepagemcp_build_siteui_package`

BuildSiteuiPackage · Write

Trigger a build of a @siteui shared package. Returns build status and any compilation errors.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `package_name` (`string`, required): The name of the @siteui shared package to build.
- `_conversation_ref` (`string`, optional): Short random token generated on your first call in a conversation; reuse the exact same value on every subsequent call to group related tool calls for analytics.
- `_rationale` (`string`, optional): Describe the user's intent and why this tool was selected in general terms only; do not include specific field values, names, emails, or other data.

Example input: `{"package_name":"<package_name>"}`

### `onepagemcp_confirm_media_upload`

ConfirmMediaUpload · Write

Confirm that a direct media upload (via pre-signed URL) has completed.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `site_id` (`string`, required): Site UUID identifying which site's media library the upload belongs to.
- `upload_id` (`string`, required): Upload ID returned from the request_media_upload response.
- `_conversation_ref` (`string`, optional): Short random token generated on your first call in a conversation; reuse the exact same value on every subsequent call to group related tool calls for analytics.
- `_rationale` (`string`, optional): Describe the user's intent and why this tool was selected in general terms only; do not include specific field values, names, emails, or other data.

Example input: `{"site_id":"<site_id>","upload_id":"<upload_id>"}`

### `onepagemcp_create_color_schema`

CreateColorSchema · Write

Create a color schema (palette) for a site's branding.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `name` (`string`, required): Color schema name.
- `site_id` (`string`, required): The site UUID to create the color schema for.
- `_conversation_ref` (`string`, optional): Short random token generated on your first call in a conversation; reuse the exact same value on every subsequent call to group related tool calls for analytics.
- `_rationale` (`string`, optional): Describe the user's intent and why this tool was selected in general terms only; do not include specific field values, names, emails, or other data.
- `colors` (`object`, optional): Color values keyed by role (e.g. primary, secondary, background).

Example input: `{"name":"<name>","site_id":"<site_id>"}`

### `onepagemcp_create_crm_form`

CreateCrmForm · Write

Create a CRM contact form on a site to collect leads.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `name` (`string`, required): Form name displayed to users.
- `site_id` (`string`, required): The site UUID on which to create the CRM form.
- `_conversation_ref` (`string`, optional): Short random token generated on your first call in a conversation; reuse the exact same value on every subsequent call to group related tool calls for analytics.
- `_rationale` (`string`, optional): Describe the user's intent and why this tool was selected in general terms only; do not include specific field values, names, emails, or other data.
- `fields` (`array`, optional): Form fields configuration. Each field defines its label, type, and whether it is required.

Example input: `{"name":"<name>","site_id":"<site_id>"}`

### `onepagemcp_create_folder`

CreateFolder · Write

Create a workspace folder to organize sites. Folders are flat (no nesting).

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `title` (`string`, required): Folder name.
- `_conversation_ref` (`string`, optional): Short random token generated on your first call in a conversation; reuse the exact same value on every subsequent call to group related tool calls for analytics.
- `_rationale` (`string`, optional): Describe the user's intent and why this tool was selected in general terms only; do not include specific field values, names, emails, or other data.

Example input: `{"title":"<title>"}`

### `onepagemcp_create_font_kit`

CreateFontKit · Write

Create a font kit (collection of fonts) for a site.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `fonts` (`array`, required): Fonts to include in the kit. Each font specifies name, style, and weight.
- `site_id` (`string`, required): The site UUID to create the font kit for.
- `_conversation_ref` (`string`, optional): Short random token generated on your first call in a conversation; reuse the exact same value on every subsequent call to group related tool calls for analytics.
- `_rationale` (`string`, optional): Describe the user's intent and why this tool was selected in general terms only; do not include specific field values, names, emails, or other data.

Example input: `{"fonts":[],"site_id":"<site_id>"}`

### `onepagemcp_create_page`

CreatePage · Write

Create a new draft page on a site.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `site_id` (`string`, required): Site UUID.
- `title` (`string`, required): Page title.
- `_conversation_ref` (`string`, optional): Short random token generated on your first call in a conversation; reuse the exact same value on every subsequent call to group related tool calls for analytics.
- `_rationale` (`string`, optional): Describe the user's intent and why this tool was selected in general terms only; do not include specific field values, names, emails, or other data.
- `slug` (`string`, optional): Page URL slug (lowercase, hyphens).

Example input: `{"site_id":"<site_id>","title":"<title>"}`

### `onepagemcp_create_section`

CreateSection · Write

Create a new section on a page from an available section template.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `page_id` (`string`, required): Page UUID identifying which page to create the section on.
- `site_id` (`string`, required): Site UUID identifying which site the page belongs to.
- `type` (`string`, required): Section type or template identifier to use when creating the section.
- `_conversation_ref` (`string`, optional): Short random token generated on your first call in a conversation; reuse the exact same value on every subsequent call to group related tool calls for analytics.
- `_rationale` (`string`, optional): Describe the user's intent and why this tool was selected in general terms only; do not include specific field values, names, emails, or other data.
- `position` (`integer`, optional): Position index at which to insert the new section on the page.

Example input: `{"page_id":"<page_id>","site_id":"<site_id>","type":"<type>"}`

### `onepagemcp_create_site`

CreateSite · Write

Create a new site. The internal_domain slug is derived from the title.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `title` (`string`, required): Site title.
- `_conversation_ref` (`string`, optional): Short random token generated on your first call in a conversation; reuse the exact same value on every subsequent call to group related tool calls for analytics.
- `_rationale` (`string`, optional): Describe the user's intent and why this tool was selected in general terms only; do not include specific field values, names, emails, or other data.
- `custom_template_id` (`string`, optional): UUID of a template site to clone from.
- `folder_id` (`string`, optional): Folder UUID to place the site in.

Example input: `{"title":"<title>"}`

### `onepagemcp_create_siteui_package`

CreateSiteuiPackage · Write

Create a new @siteui shared package for the workspace.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `name` (`string`, required): Package name (e.g. my-components).
- `_conversation_ref` (`string`, optional): Short random token generated on your first call in a conversation; reuse the exact same value on every subsequent call to group related tool calls for analytics.
- `_rationale` (`string`, optional): Describe the user's intent and why this tool was selected in general terms only; do not include specific field values, names, emails, or other data.

Example input: `{"name":"<name>"}`

### `onepagemcp_create_vibe_section`

CreateVibeSection · Write

Create a new React-based vibe section on a page. Vibe sections are custom-coded React components.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `name` (`string`, required): Human-readable name for the new vibe section.
- `page_id` (`string`, required): UUID of the page to create the vibe section on.
- `site_id` (`string`, required): UUID of the site that contains the page.
- `_conversation_ref` (`string`, optional): Short random token generated on your first call in a conversation; reuse the exact same value on every subsequent call to group related tool calls for analytics.
- `_rationale` (`string`, optional): Describe the user's intent and why this tool was selected in general terms only; do not include specific field values, names, emails, or other data.

Example input: `{"name":"<name>","page_id":"<page_id>","site_id":"<site_id>"}`

### `onepagemcp_duplicate_section`

DuplicateSection · Write

Duplicate an existing section on a page.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `page_id` (`string`, required): UUID of the page containing the section to duplicate.
- `section_id` (`string`, required): UUID of the section to duplicate.
- `site_id` (`string`, required): UUID of the site that contains the page.
- `_conversation_ref` (`string`, optional): Short random token generated on your first call in a conversation; reuse the exact same value on every subsequent call to group related tool calls for analytics.
- `_rationale` (`string`, optional): Describe the user's intent and why this tool was selected in general terms only; do not include specific field values, names, emails, or other data.

Example input: `{"page_id":"<page_id>","section_id":"<section_id>","site_id":"<site_id>"}`

### `onepagemcp_edit_file`

EditFile · Write

Apply a targeted edit to a single file in a vibe section's React app by replacing old_string with new_string.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `new_string` (`string`, required): Replacement string.
- `old_string` (`string`, required): Exact string to replace.
- `page_id` (`string`, required): Page UUID.
- `path` (`string`, required): File path relative to app root.
- `section_id` (`string`, required): Section UUID.
- `site_id` (`string`, required): Site UUID.
- `_conversation_ref` (`string`, optional): Short random token generated on your first call in a conversation; reuse the exact same value on every subsequent call to group related tool calls for analytics.
- `_rationale` (`string`, optional): Describe the user's intent and why this tool was selected in general terms only; do not include specific field values, names, emails, or other data.

Example input: `{"new_string":"<new_string>","old_string":"<old_string>","page_id":"<page_id>","path":"<path>","section_id":"<section_id>","site_id":"<site_id>"}`

### `onepagemcp_edit_files`

EditFiles · Write

Apply targeted edits to multiple files in a vibe section's React app using patch operations.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `edits` (`array`, required): List of file edits to apply. Each edit specifies a file path, the exact string to replace (old_string), and the replacement string (new_string).
- `page_id` (`string`, required): Page UUID.
- `section_id` (`string`, required): Section UUID.
- `site_id` (`string`, required): Site UUID.
- `_conversation_ref` (`string`, optional): Short random token generated on your first call in a conversation; reuse the exact same value on every subsequent call to group related tool calls for analytics.
- `_rationale` (`string`, optional): Describe the user's intent and why this tool was selected in general terms only; do not include specific field values, names, emails, or other data.

Example input: `{"edits":[],"page_id":"<page_id>","section_id":"<section_id>","site_id":"<site_id>"}`

### `onepagemcp_edit_section`

EditSection · Write

Edit the content and properties of a section on a page.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `page_id` (`string`, required): Page UUID identifying which page the section belongs to.
- `section_id` (`string`, required): Section UUID identifying the specific section to edit.
- `site_id` (`string`, required): Site UUID identifying which site the page belongs to.
- `_conversation_ref` (`string`, optional): Short random token generated on your first call in a conversation; reuse the exact same value on every subsequent call to group related tool calls for analytics.
- `_rationale` (`string`, optional): Describe the user's intent and why this tool was selected in general terms only; do not include specific field values, names, emails, or other data.
- `content` (`object`, optional): Section content fields to update, as a key-value object.
- `settings` (`object`, optional): Section settings to update, as a key-value object.

Example input: `{"page_id":"<page_id>","section_id":"<section_id>","site_id":"<site_id>"}`

### `onepagemcp_edit_siteui_files`

EditSiteuiFiles · Write

Apply targeted edits to multiple files in a @siteui shared package.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `edits` (`array`, required): File edits to apply. Each edit specifies a file path, old string to replace, and new string.
- `package_name` (`string`, required): The name of the @siteui shared package to edit.
- `_conversation_ref` (`string`, optional): Short random token generated on your first call in a conversation; reuse the exact same value on every subsequent call to group related tool calls for analytics.
- `_rationale` (`string`, optional): Describe the user's intent and why this tool was selected in general terms only; do not include specific field values, names, emails, or other data.

Example input: `{"edits":[],"package_name":"<package_name>"}`

### `onepagemcp_move_site`

MoveSite · Write

Move a site into a folder, or back to the workspace root. Pass folder_id to move into that folder; omit or pass null to move to root. Requires you to own the site.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `site_id` (`string`, required): Site UUID.
- `_conversation_ref` (`string`, optional): Short random token generated on your first call in a conversation; reuse the exact same value on every subsequent call to group related tool calls for analytics.
- `_rationale` (`string`, optional): Describe the user's intent and why this tool was selected in general terms only; do not include specific field values, names, emails, or other data.
- `folder_id` (`string`, optional): Target folder UUID, or null to move to workspace root.

Example input: `{"site_id":"<site_id>"}`

### `onepagemcp_publish_page`

PublishPage · Write

Publish a page. The page becomes publicly visible with your latest changes.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `page_id` (`string`, required): Page UUID.
- `site_id` (`string`, required): Site UUID.
- `_conversation_ref` (`string`, optional): Short random token generated on your first call in a conversation; reuse the exact same value on every subsequent call to group related tool calls for analytics.
- `_rationale` (`string`, optional): Describe the user's intent and why this tool was selected in general terms only; do not include specific field values, names, emails, or other data.

Example input: `{"page_id":"<page_id>","site_id":"<site_id>"}`

### `onepagemcp_rename_section`

RenameSection · Write

Rename a section on a page.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `name` (`string`, required): New name for the section.
- `page_id` (`string`, required): UUID of the page containing the section.
- `section_id` (`string`, required): UUID of the section to rename.
- `site_id` (`string`, required): UUID of the site that contains the page.
- `_conversation_ref` (`string`, optional): Short random token generated on your first call in a conversation; reuse the exact same value on every subsequent call to group related tool calls for analytics.
- `_rationale` (`string`, optional): Describe the user's intent and why this tool was selected in general terms only; do not include specific field values, names, emails, or other data.

Example input: `{"name":"<name>","page_id":"<page_id>","section_id":"<section_id>","site_id":"<site_id>"}`

### `onepagemcp_reorder_sections`

ReorderSections · Write

Reorder the sections on a page by providing an ordered list of section IDs.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `page_id` (`string`, required): UUID of the page whose sections will be reordered.
- `section_ids` (`array`, required): Ordered list of section UUIDs representing the desired section order.
- `site_id` (`string`, required): UUID of the site that contains the page.
- `_conversation_ref` (`string`, optional): Short random token generated on your first call in a conversation; reuse the exact same value on every subsequent call to group related tool calls for analytics.
- `_rationale` (`string`, optional): Describe the user's intent and why this tool was selected in general terms only; do not include specific field values, names, emails, or other data.

Example input: `{"page_id":"<page_id>","section_ids":[],"site_id":"<site_id>"}`

### `onepagemcp_request_media_upload`

RequestMediaUpload · Write

Request a pre-signed upload URL to directly upload a media file to the site's media library.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `content_type` (`string`, required): MIME type of the file to upload, e.g. image/png.
- `filename` (`string`, required): Filename of the file to upload.
- `site_id` (`string`, required): Site UUID identifying which site's media library to upload to.
- `_conversation_ref` (`string`, optional): Short random token generated on your first call in a conversation; reuse the exact same value on every subsequent call to group related tool calls for analytics.
- `_rationale` (`string`, optional): Describe the user's intent and why this tool was selected in general terms only; do not include specific field values, names, emails, or other data.

Example input: `{"content_type":"<content_type>","filename":"<filename>","site_id":"<site_id>"}`

### `onepagemcp_save_page_version`

SavePageVersion · Write

Save the current state of a page as a named version for rollback.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `page_id` (`string`, required): UUID of the page to save a version for.
- `site_id` (`string`, required): UUID of the site that contains the page.
- `_conversation_ref` (`string`, optional): Short random token generated on your first call in a conversation; reuse the exact same value on every subsequent call to group related tool calls for analytics.
- `_rationale` (`string`, optional): Describe the user's intent and why this tool was selected in general terms only; do not include specific field values, names, emails, or other data.
- `name` (`string`, optional): Version name label for this snapshot.

Example input: `{"page_id":"<page_id>","site_id":"<site_id>"}`

### `onepagemcp_unpublish_page`

UnpublishPage · Write

Unpublish a page. The page stays in the site; only its public version is removed.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `page_id` (`string`, required): Page UUID.
- `site_id` (`string`, required): Site UUID.
- `_conversation_ref` (`string`, optional): Short random token generated on your first call in a conversation; reuse the exact same value on every subsequent call to group related tool calls for analytics.
- `_rationale` (`string`, optional): Describe the user's intent and why this tool was selected in general terms only; do not include specific field values, names, emails, or other data.

Example input: `{"page_id":"<page_id>","site_id":"<site_id>"}`

### `onepagemcp_update_crm_form`

UpdateCrmForm · Write

Update an existing CRM contact form's configuration.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `form_id` (`string`, required): Form UUID to update.
- `site_id` (`string`, required): The site UUID containing the CRM form.
- `_conversation_ref` (`string`, optional): Short random token generated on your first call in a conversation; reuse the exact same value on every subsequent call to group related tool calls for analytics.
- `_rationale` (`string`, optional): Describe the user's intent and why this tool was selected in general terms only; do not include specific field values, names, emails, or other data.
- `fields` (`array`, optional): Updated form fields configuration.
- `name` (`string`, optional): New form name.

Example input: `{"form_id":"<form_id>","site_id":"<site_id>"}`

### `onepagemcp_update_page_settings`

UpdatePageSettings · Write

Patch page-level settings. Only provided fields are written. Covers SEO metadata, slug, visibility, and page-level noindex.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `page_id` (`string`, required): UUID of the page to update settings for.
- `site_id` (`string`, required): UUID of the site that contains the page.
- `_conversation_ref` (`string`, optional): Short random token generated on your first call in a conversation; reuse the exact same value on every subsequent call to group related tool calls for analytics.
- `_rationale` (`string`, optional): Describe the user's intent and why this tool was selected in general terms only; do not include specific field values, names, emails, or other data.
- `description` (`string`, optional): SEO meta description for the page.
- `noindex` (`boolean`, optional): When true, instructs search engines to exclude this page from their index.
- `slug` (`string`, optional): URL slug for the page path.
- `title` (`string`, optional): Page title shown in the browser tab and used as the SEO title.

Example input: `{"page_id":"<page_id>","site_id":"<site_id>"}`

### `onepagemcp_update_site_settings`

UpdateSiteSettings · Write

Patch site-level settings. Only provided fields are written; omit a field to leave it unchanged. Covers display metadata, default language, favicon, global noindex, custom head/body code, analytics tracking IDs, sitemap/robots.txt/llms.txt mode, 404 page mapping, and schema.org JSON-LD.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `site_id` (`string`, required): Site UUID.
- `_conversation_ref` (`string`, optional): Short random token generated on your first call in a conversation; reuse the exact same value on every subsequent call to group related tool calls for analytics.
- `_rationale` (`string`, optional): Describe the user's intent and why this tool was selected in general terms only; do not include specific field values, names, emails, or other data.
- `code_body` (`string`, optional): Custom HTML injected before </body> (plan-gated).
- `code_head` (`string`, optional): Custom HTML injected into <head> (plan-gated).
- `description` (`string`, optional): Site description / tagline.
- `favicon_url` (`string`, optional): Favicon URL.
- `ga_tag` (`string`, optional): Google Analytics measurement ID (G-XXXXXXX).
- `hotjar` (`string`, optional): Hotjar site ID.
- `language` (`string`, optional): Default site language code, e.g. en.
- `meta_pixel` (`string`, optional): Meta (Facebook) pixel ID.
- `noindex` (`boolean`, optional): Globally block search-engine indexing.
- `not_found_page_slug` (`string`, optional): Slug of the page to serve as the 404 page.
- `robots_mode` (`string`, optional): Robots.txt generation mode: auto or manual. One of: `auto`, `manual`.
- `sitemap_mode` (`string`, optional): Sitemap.xml generation mode: auto or manual. One of: `auto`, `manual`.
- `title` (`string`, optional): Display title (3-50 chars).

Example input: `{"site_id":"<site_id>"}`

### `onepagemcp_upload_media`

UploadMedia · Write

Upload a media file (image, video, document) to the site's media library.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `site_id` (`string`, required): Site UUID identifying which site's media library to upload to.
- `url` (`string`, required): URL of the media file to upload to the media library.
- `_conversation_ref` (`string`, optional): Short random token generated on your first call in a conversation; reuse the exact same value on every subsequent call to group related tool calls for analytics.
- `_rationale` (`string`, optional): Describe the user's intent and why this tool was selected in general terms only; do not include specific field values, names, emails, or other data.
- `filename` (`string`, optional): Filename to use for the uploaded file in the media library.

Example input: `{"site_id":"<site_id>","url":"<url>"}`

### `onepagemcp_write_file`

WriteFile · Write

Write (create or overwrite) a single source file in a vibe section's React app.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `content` (`string`, required): File content to write.
- `page_id` (`string`, required): Page UUID.
- `path` (`string`, required): File path relative to app root.
- `section_id` (`string`, required): Section UUID.
- `site_id` (`string`, required): Site UUID.
- `_conversation_ref` (`string`, optional): Short random token generated on your first call in a conversation; reuse the exact same value on every subsequent call to group related tool calls for analytics.
- `_rationale` (`string`, optional): Describe the user's intent and why this tool was selected in general terms only; do not include specific field values, names, emails, or other data.

Example input: `{"content":"<content>","page_id":"<page_id>","path":"<path>","section_id":"<section_id>","site_id":"<site_id>"}`

### `onepagemcp_write_files`

WriteFiles · Write

Write (create or overwrite) multiple source files in a vibe section's React app.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `files` (`array`, required): Array of file objects to write, each with a path and content.
- `page_id` (`string`, required): UUID of the page containing the vibe section.
- `section_id` (`string`, required): UUID of the vibe section whose files to write.
- `site_id` (`string`, required): UUID of the site that contains the page.
- `_conversation_ref` (`string`, optional): Short random token generated on your first call in a conversation; reuse the exact same value on every subsequent call to group related tool calls for analytics.
- `_rationale` (`string`, optional): Describe the user's intent and why this tool was selected in general terms only; do not include specific field values, names, emails, or other data.

Example input: `{"files":[],"page_id":"<page_id>","section_id":"<section_id>","site_id":"<site_id>"}`

### `onepagemcp_write_siteui_files`

WriteSiteuiFiles · Write

Write (create or overwrite) multiple source files in a @siteui shared package.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `files` (`array`, required): Files to write. Each entry specifies a path and content.
- `package_name` (`string`, required): Package name.
- `_conversation_ref` (`string`, optional): Short random token generated on your first call in a conversation; reuse the exact same value on every subsequent call to group related tool calls for analytics.
- `_rationale` (`string`, optional): Describe the user's intent and why this tool was selected in general terms only; do not include specific field values, names, emails, or other data.

Example input: `{"files":[],"package_name":"<package_name>"}`

### `onepagemcp_archive_page`

ArchivePage · Destructive

Archive a page. The page is removed from the live site.

Read only: no. Destructive: yes. Idempotent (safe to retry): no.

Inputs:

- `page_id` (`string`, required): Page UUID.
- `site_id` (`string`, required): Site UUID.
- `_conversation_ref` (`string`, optional): Short random token generated on your first call in a conversation; reuse the exact same value on every subsequent call to group related tool calls for analytics.
- `_rationale` (`string`, optional): Describe the user's intent and why this tool was selected in general terms only; do not include specific field values, names, emails, or other data.

Example input: `{"page_id":"<page_id>","site_id":"<site_id>"}`

### `onepagemcp_delete_crm_form`

DeleteCrmForm · Destructive

Delete a CRM contact form from a site.

Read only: no. Destructive: yes. Idempotent (safe to retry): no.

Inputs:

- `form_id` (`string`, required): Form UUID to delete.
- `site_id` (`string`, required): The site UUID containing the CRM form.
- `_conversation_ref` (`string`, optional): Short random token generated on your first call in a conversation; reuse the exact same value on every subsequent call to group related tool calls for analytics.
- `_rationale` (`string`, optional): Describe the user's intent and why this tool was selected in general terms only; do not include specific field values, names, emails, or other data.

Example input: `{"form_id":"<form_id>","site_id":"<site_id>"}`

### `onepagemcp_delete_react_app`

DeleteReactApp · Destructive

Delete the React app source of a vibe section. The section itself is retained but its code is removed.

Read only: no. Destructive: yes. Idempotent (safe to retry): no.

Inputs:

- `page_id` (`string`, required): Page UUID.
- `section_id` (`string`, required): Section UUID.
- `site_id` (`string`, required): Site UUID.
- `_conversation_ref` (`string`, optional): Short random token generated on your first call in a conversation; reuse the exact same value on every subsequent call to group related tool calls for analytics.
- `_rationale` (`string`, optional): Describe the user's intent and why this tool was selected in general terms only; do not include specific field values, names, emails, or other data.

Example input: `{"page_id":"<page_id>","section_id":"<section_id>","site_id":"<site_id>"}`

### `onepagemcp_delete_vibe_section`

DeleteVibeSection · Destructive

Delete a vibe section from a page. This action is irreversible.

Read only: no. Destructive: yes. Idempotent (safe to retry): no.

Inputs:

- `page_id` (`string`, required): UUID of the page containing the vibe section.
- `section_id` (`string`, required): UUID of the vibe section to delete.
- `site_id` (`string`, required): UUID of the site that contains the page.
- `_conversation_ref` (`string`, optional): Short random token generated on your first call in a conversation; reuse the exact same value on every subsequent call to group related tool calls for analytics.
- `_rationale` (`string`, optional): Describe the user's intent and why this tool was selected in general terms only; do not include specific field values, names, emails, or other data.

Example input: `{"page_id":"<page_id>","section_id":"<section_id>","site_id":"<site_id>"}`

### `onepagemcp_patch_section`

PatchSection · Destructive

Apply a sparse DSL patch to an existing native no-code section, using a revision read from get_section in patch mode.

Read only: no. Destructive: yes. Idempotent (safe to retry): no.

Inputs:

- `dsl` (`string`, required): Sparse <section_patch> using the exact ref/within markers from the matching patch-mode read.
- `page_id` (`string`, required): Page UUID identifying which page the section belongs to.
- `revision` (`string`, required): Opaque revision returned by get_section when called with mode "patch", read immediately before this call.
- `section_id` (`string`, required): Section ID identifying the specific section to patch, from get_page_overview.
- `site_id` (`string`, required): Site UUID identifying which site the page belongs to.
- `_conversation_ref` (`string`, optional): Short random token generated on your first call in a conversation; reuse the exact same value on every subsequent call to group related tool calls for analytics.
- `_rationale` (`string`, optional): Describe the user's intent and why this tool was selected in general terms only; do not include specific field values, names, emails, or other data.

Example input: `{"dsl":"<dsl>","page_id":"<page_id>","revision":"<revision>","section_id":"<section_id>","site_id":"<site_id>"}`

## Related

Other Design connectors ([all 18](/agentkit/connectors/?category=design)):

- [Figma](/agentkit/connectors/figma/): Scalekit connector, OAuth, 54 tools
- [Miro](/agentkit/connectors/miro/): Scalekit connector, OAuth, 115 tools
- [Brandfetch MCP server](/agentkit/connectors/brandfetchmcp/): Vendor MCP, OAuth, 7 tools


---

## More Scalekit documentation

| Resource | What it contains | When to use it |
|----------|-----------------|----------------|
| [/llms.txt](/llms.txt) | Structured index with routing hints per product area | Start here — find which documentation set covers your topic before loading full content |
| [/llms-full.txt](/llms-full.txt) | Complete documentation for all Scalekit products in one file | Use when you need exhaustive context across multiple products or when the topic spans several areas |
| [sitemap-0.xml](https://docs.scalekit.com/sitemap-0.xml) | Full URL list of every documentation page | Use to discover specific page URLs you can fetch for targeted, page-level answers |
