> **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 Slite MCP server

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

**Authentication:** OAuth 2.1/DCR
**Categories:** Collaboration, Productivity, Files & Documents
**Tools:** 40: 18 read, 12 write, 10 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=SLITEMCP)

## 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 Slite MCP connection

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

   Scalekit credentials are available for Slite 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 = 'slitemcp'
   const identifier = 'user_123'

   // Generate an authorization link for the user
   const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
   console.log('Authorize Slite 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: 'slitemcp_list-channels',
     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 = "slitemcp"
   identifier = "user_123"

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

   # Make your first call
   result = actions.execute_tool(
       tool_input={},
       tool_name="slitemcp_list-channels",
       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: 'slitemcp_ask-slite',
  toolInput: {
    question: '<question>',
  },
  connector: 'slitemcp',
  identifier: 'user_123',
})
```

**Python**

```python
result = actions.execute_tool(
    tool_name="slitemcp_ask-slite",
    tool_input={
        "question": "<question>",
    },
    connection_name="slitemcp",
    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.

### `slitemcp_ask-slite`

Ask Slite · Read-only

Ask a question and get an AI-generated answer with source citations from your workspace.

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

Inputs:

- `question` (`string`, required): The question to ask Slite.
- `parentNoteId` (`string`, optional): Optional filter to only search within notes under this parent note id.

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

### `slitemcp_get-comment-thread-on-note`

Get Comment Thread On Note · Read-only

Retrieve a single comment thread by its note and thread IDs.

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

Inputs:

- `noteId` (`string`, required): The ID of the note the thread belongs to.
- `threadId` (`string`, required): The ID of the comment thread to retrieve.

Example input: `{"noteId":"<noteId>","threadId":"<threadId>"}`

### `slitemcp_get-note`

Get Note · Read-only

Retrieve a note's content by ID, returning sliteml with block IDs or plain Markdown.

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

Inputs:

- `noteId` (`string`, required): The ID of the note to retrieve.
- `cursor` (`string`, optional): Pass the nextCursor from a previous partial response to continue reading the document.
- `endBlockId` (`string`, optional): Return only blocks up to and including this one (inclusive). Combine with startBlockId for a slice.
- `format` (`string`, optional): Content format to return: 'sliteml' (default, with block IDs) or 'md' (plain Markdown). One of: `md`, `html`, `sliteml`, `collection`.
- `fullContent` (`boolean`, optional): Return the full document. Defaults to true; set false to fetch only a preview.
- `includeArchivedRows` (`boolean`, optional): Only applies to format=collection. Archived rows are excluded by default. Set to true to also return archived rows, each marked with archived: true.
- `startBlockId` (`string`, optional): Return only blocks from this block onward (inclusive). Combine with endBlockId for a slice.

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

### `slitemcp_get-note-children`

Get Note Children · Read-only

List child notes under a parent note (paginated).

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

Inputs:

- `noteId` (`string`, required): The ID of the parent note.
- `cursor` (`string`, optional): Cursor to use to continue fetching the note children (for pagination when there are more than 50 children).

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

### `slitemcp_get-user`

Get User · Read-only

Retrieve a user by ID, including their name, email, and role.

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

Inputs:

- `userId` (`string`, required): The ID of the user to retrieve.

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

### `slitemcp_get-user-group`

Get User Group · Read-only

Retrieve a user group by ID, including its name, description, and members.

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

Inputs:

- `userGroupId` (`string`, required): The ID of the user group to retrieve.

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

### `slitemcp_list-channels`

List Channels · Read-only

List channels accessible to the current user (paginated).

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

Inputs:

- `cursor` (`string`, optional): Cursor for pagination when there are more results.

Example input: `{}`

### `slitemcp_list-comment-threads`

List Comment Threads · Read-only

List all non-archived comment threads on a note, oldest-first, with full content.

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

Inputs:

- `noteId` (`string`, required): The ID of the note to list threads on.

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

### `slitemcp_list-empty-notes-for-knowledge-management`

List Empty Notes For Knowledge Management · Read-only

List empty notes for knowledge management, filterable by channel, owner, and pagination cursor.

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

Inputs:

- `channelIdList` (`array`, optional): Optional channel IDs to filter notes by channel.
- `cursor` (`string`, optional): Cursor for pagination when there are more results.
- `first` (`integer`, optional): Maximum number of notes to return. Defaults to 20.
- `ownerIdList` (`array`, optional): Optional user or user group IDs to filter notes by owner.

Example input: `{}`

### `slitemcp_list-inactive-notes-for-knowledge-management`

List Inactive Notes For Knowledge Management · Read-only

List inactive notes for knowledge management, filterable by channel, owner, and pagination cursor.

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

Inputs:

- `channelIdList` (`array`, optional): Optional channel IDs to filter notes by channel.
- `cursor` (`string`, optional): Cursor for pagination when there are more results.
- `first` (`integer`, optional): Maximum number of notes to return. Defaults to 20.
- `ownerIdList` (`array`, optional): Optional user or user group IDs to filter notes by owner.

Example input: `{}`

### `slitemcp_list-notes-for-knowledge-management`

List Notes For Knowledge Management · Read-only

List notes for knowledge management, filterable by review state, channel, owner, and age.

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

Inputs:

- `channelIdList` (`array`, optional): Optional channel IDs to filter notes by channel.
- `cursor` (`string`, optional): Cursor for pagination when there are more results.
- `first` (`integer`, optional): Maximum number of notes to return. Defaults to 20.
- `ownerIdList` (`array`, optional): Optional user or user group IDs to filter notes by owner.
- `reviewStateList` (`array`, optional): Optional filter to return notes in special review states.
- `sinceDaysAgo` (`number`, optional): Optional time window for popularity.

Example input: `{}`

### `slitemcp_list-public-notes-for-knowledge-management`

List Public Notes For Knowledge Management · Read-only

List public notes for knowledge management, filterable by review state, channel, owner, and age.

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

Inputs:

- `channelIdList` (`array`, optional): Optional channel IDs to filter notes by channel.
- `cursor` (`string`, optional): Cursor for pagination when there are more results.
- `first` (`integer`, optional): Maximum number of notes to return. Defaults to 20.
- `ownerIdList` (`array`, optional): Optional user or user group IDs to filter notes by owner.
- `reviewStateList` (`array`, optional): Optional filter to return notes in special review states.
- `sinceDaysAgo` (`number`, optional): Optional time window for public notes.

Example input: `{}`

### `slitemcp_list-recently-edited-notes`

List Recently Edited Notes · Read-only

List the last 10 notes recently edited by the current user.

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

Inputs:

- `cursor` (`string`, optional): Cursor for pagination when there are more results.

Example input: `{}`

### `slitemcp_list-recently-visited-notes`

List Recently Visited Notes · Read-only

List the last 10 notes recently visited by the current user.

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

Inputs:

- `cursor` (`string`, optional): Cursor for pagination when there are more results.

Example input: `{}`

### `slitemcp_read_thread`

Read Thread · Read-only

Read an AI thread back as question/answer rounds. Use it to poll a processing response from ask-slite or slite-agent, or to read a past conversation.

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

Inputs:

- `threadId` (`string`, required): The thread id — from a processing response, a prior threadId, or the trailing segment of a thread URL.

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

### `slitemcp_search-notes`

Search Notes · Read-only

Search notes by keywords and return matching titles, IDs, and text highlights.

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

Inputs:

- `query` (`string`, required): The search query to perform.
- `hitsPerPage` (`number`, optional): Specify how many notes to return per page.
- `includeArchived` (`boolean`, optional): Optional filter to also include archived notes in the search results (default to false).
- `lastEditedAfter` (`string`, optional): Optional filter to only return notes edited after a specific date (ISO 8601 format).
- `page` (`number`, optional): Used to perform pagination on search.
- `parentNoteId` (`string`, optional): Optional filter to only return notes under this parent note id.
- `reviewState` (`string`, optional): Optional filter to return notes in a special review state. One of: `Verified`, `Outdated`, `VerificationRequested`, `VerificationExpired`.

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

### `slitemcp_search-user-groups`

Search User Groups · Read-only

Search and list user groups in the organization by name.

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

Inputs:

- `cursor` (`string`, optional): Cursor for pagination when there are more results.
- `query` (`string`, optional): Optional search query to filter groups by name.

Example input: `{}`

### `slitemcp_search-users`

Search Users · Read-only

Search and list users in the organization by name or email.

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

Inputs:

- `cursor` (`string`, optional): Cursor for pagination when there are more results.
- `includeArchived` (`boolean`, optional): Set to true to also include archived (deactivated) users. Defaults to false.
- `query` (`string`, optional): Optional search query to filter users by name, email, or username.

Example input: `{}`

### `slitemcp_append-blocks`

Append Blocks · Write

Append sliteml content blocks to an existing note, optionally anchoring them before or after a specific block.

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

Inputs:

- `noteId` (`string`, required): The ID of the note to append blocks to.
- `sliteml` (`string`, required): sliteml content blocks to insert. Block IDs are auto-generated and returned in changedContent.
- `afterBlockId` (`string`, optional): Block ID to insert after; read from trailing {#blockId} markers in a get-note response.
- `beforeBlockId` (`string`, optional): Block ID to insert before; read from trailing {#blockId} markers in a get-note response.
- `returnFullDocument` (`boolean`, optional): If true, include the full updated document in the response. Defaults to false.

Example input: `{"noteId":"<noteId>","sliteml":"<sliteml>"}`

### `slitemcp_create-channel`

Create Channel · Write

Create a new channel (top-level container for notes) and become its first member.

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

Inputs:

- `name` (`string`, required): The name of the channel to create.
- `iconColor` (`string`, optional): Optional icon color. Paired with iconShape. One of: `dark`, `grey`, `yellow`, `orange`, `pink`, `purple`, `blue`, `turquoise`, `green`.
- `iconShape` (`string`, optional): Optional icon shape. Use an icon key like 'rocket' or 'book' (no colons). One of: `100`, `bulb`, `iphone`, `desktop_computer`, `computer`, `phone`, `email`, `video_camera`, `studio_microphone`, `microphone`, `radio`, `writing_hand`, `thought_balloon`, `speech_balloon`, `memo`, `mega`, `hammer`, `hammer_and_wrench`, `gear`, `frame_with_picture`, `file_folder`, `spiral_note_pad`, `briefcase`, `chart`, `bar_chart`, `books`, `scroll`, `calendar`, `book`, `pencil2`, `clipboard`, `paperclip`, `mag`, `eyes`, `eye`, `world_map`, `triangular_flag_on_post`, `globe_with_meridians`, `rocket`, `airplane`, `car`, `motorway`, `dart`, `sparkles`, `electric_plug`, `zap`, `handshake`, `wave`, `fire`, `crystal_ball`, `no_entry_sign`, `department_store`, `crossed_swords`, `building_construction`, `construction`, `muscle`, `boom`, `earth_americas`, `sunny`, `money_with_wings`, `test_tube`, `couch_and_lamp`, `tennis`, `balloon`, `anchor`, `school_satchel`, `apple`, `basket`, `scales`, `pushpin`, `art`, `mortar_board`, `robot_face`, `peach`, `package`, `key`, `seedling`, `palm_tree`, `house`, `heart`, `bell`, `trophy`, `slightly_smiling_face`, `crescent_moon`, `bust_in_silhouette`, `busts_in_silhouette`, `ring_buoy`, `+1`, `dollar`, `moneybag`, `credit_card`, `heavy_dollar_sign`, `warning`, `negative_squared_cross_mark`, `information_source`, `white_check_mark`, `heavy_check_mark`, `x`, `question`, `exclamation`, `one`, `two`, `three`, `arrow_left`, `arrow_right`, `arrow_up`, `arrow_down`, `arrows_counterclockwise`, `heavy_plus_sign`.
- `type` (`string`, optional): Channel visibility. "public" (default) is open to all org members, "private" is restricted to invited members. One of: `public`, `private`.

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

### `slitemcp_create-collection`

Create Collection · Write

Create a new collection (structured database of notes) with typed columns.

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

Inputs:

- `columns` (`array`, required): Column definitions for the collection. The Title column is always included automatically.
- `title` (`string`, required): The title of the collection to create.
- `parentNoteId` (`string`, optional): Optional ID of the parent note. If not specified, the collection will be created in your personal channel.

Example input: `{"columns":[],"title":"<title>"}`

### `slitemcp_create-comment-thread`

Create Comment Thread · Write

Create a new comment thread on a note, optionally anchored to a specific block or highlighted text.

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

Inputs:

- `content` (`string`, required): Plain-text content of the first comment.
- `noteId` (`string`, required): The ID of the note to open the thread on.
- `blockId` (`string`, optional): Optional: when anchoring inline, the ID of the block to edit. Same as `modify-block`.
- `highlight` (`string`, optional): Optional quoted snippet shown alongside the thread in the sidebar.
- `sliteml` (`string`, optional): For inline anchoring, the updated block sliteml containing a <comment> tag with the thread ID.

Example input: `{"content":"<content>","noteId":"<noteId>"}`

### `slitemcp_create-note`

Create Note · Write

Create a new note with a title, optional sliteml content, and optional parent.

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

Inputs:

- `title` (`string`, required): The title of the note to create.
- `contentWidth` (`string`, optional): Doc layout: 'regular' (default centered) or 'wide' (expanded). One of: `regular`, `wide`.
- `fields` (`object`, optional): Field values for collection records, keyed by column ID. Only applies when parentNoteId is a collection.
- `iconColor` (`string`, optional): Optional icon color. Paired with iconShape. One of: `dark`, `grey`, `yellow`, `orange`, `pink`, `purple`, `blue`, `turquoise`, `green`.
- `iconShape` (`string`, optional): Optional icon shape. Use an icon key like 'rocket' or 'book' (no colons).
- `parentNoteId` (`string`, optional): Optional ID of the parent note. If not specified, the note will be created in your personal channel.
- `sliteml` (`string`, optional): Optional sliteml content for the note body. Do not duplicate the title as a heading.

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

### `slitemcp_reply-to-comment-thread`

Reply To Comment Thread · Write

Add a reply to an existing comment thread and return the updated thread.

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

Inputs:

- `content` (`string`, required): Plain-text content of the reply.
- `threadId` (`string`, required): The ID of the comment thread to reply to.

Example input: `{"content":"<content>","threadId":"<threadId>"}`

### `slitemcp_resolve-comment-thread`

Resolve Comment Thread · Write

Mark a comment thread as resolved.

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

Inputs:

- `threadId` (`string`, required): The ID of the comment thread to resolve.

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

### `slitemcp_restore-note`

Restore Note · Write

Restore an archived note, making it visible in navigation and search again.

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

Inputs:

- `noteId` (`string`, required): The ID of the archived note to restore.

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

### `slitemcp_slite_agent`

Slite Agent · Write

Invoke Slite Agent on the workspace knowledge base. Stateful: returns a threadId for follow-ups; can edit, create, or organize docs as well as read.

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

Inputs:

- `task` (`string`, required): The task or question for Slite Agent. Free-form natural language.
- `context` (`string`, optional): Optional briefing for Slite Agent: what you're working on, why you're asking, what you've already established. Keep concise.
- `threadId` (`string`, optional): Existing thread id to continue. Omit to start a new conversation. Persists across calls.

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

### `slitemcp_unresolve-comment-thread`

Unresolve Comment Thread · Write

Reopen a previously resolved comment thread.

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

Inputs:

- `threadId` (`string`, required): The ID of the comment thread to unresolve.

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

### `slitemcp_update-channel`

Update Channel · Write

Rename a channel or change its icon color and shape.

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

Inputs:

- `channelId` (`string`, required): The ID of the channel to update.
- `iconColor` (`string`, optional): Optional new icon color. Pass null to clear.
- `iconShape` (`string`, optional): Optional new icon shape. Pick an icon dictionary key (e.g. "book", "rocket") — no colons. Pass null to clear.
- `name` (`string`, optional): Optional new name for the channel.

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

### `slitemcp_verify-note`

Verify Note · Write

Mark a note as verified, optionally with an expiration date.

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

Inputs:

- `noteId` (`string`, required): The ID of the note to verify.
- `until` (`string`, optional): Optional ISO 8601 date in the future when the verification should expire.

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

### `slitemcp_archive-note`

Archive Note · Destructive

Archive a note, hiding it from navigation and search until restored.

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

Inputs:

- `noteId` (`string`, required): The ID of the note to archive.

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

### `slitemcp_edit_document`

Edit Document · Destructive

Apply many block edits to a single note as one atomic change — insert, replace a range, or remove blocks — instead of calling append-blocks/modify-range/remove-blocks repeatedly.

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

Inputs:

- `edits` (`array`, required): The ordered list of block edits to apply atomically. Each entry is an insert, modifyRange, or remove operation.
- `noteId` (`string`, required): The ID of the note to edit.
- `dryRun` (`boolean`, optional): If true, validate and return the resulting document without committing.
- `returnFullDocument` (`boolean`, optional): If true, also include the full updated document (slitemlHybrid) in the response.

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

### `slitemcp_modify-block`

Modify Block · Destructive

Replace a single block in a note with new sliteml content, identified by block ID.

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

Inputs:

- `blockId` (`string`, required): ID of the block to replace; read from {#blockId} markers in a get-note response.
- `noteId` (`string`, required): The ID of the note containing the block.
- `sliteml` (`string`, required): Replacement sliteml content for the block. Do not include the block ID in the content.
- `returnFullDocument` (`boolean`, optional): If true, include the full updated document in the response. Defaults to false.

Example input: `{"blockId":"<blockId>","noteId":"<noteId>","sliteml":"<sliteml>"}`

### `slitemcp_modify-range`

Modify Range · Destructive

Replace a consecutive range of blocks in a note with new sliteml content.

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

Inputs:

- `endBlockId` (`string`, required): ID of the last block in the range to replace (inclusive); must follow startBlockId in document order.
- `noteId` (`string`, required): The ID of the note containing the blocks.
- `sliteml` (`string`, required): Replacement sliteml content. Pass an empty string to delete the range.
- `startBlockId` (`string`, required): ID of the first block in the range to replace (inclusive).
- `returnFullDocument` (`boolean`, optional): If true, include the full updated document in the response. Defaults to false.

Example input: `{"endBlockId":"<endBlockId>","noteId":"<noteId>","sliteml":"<sliteml>","startBlockId":"<startBlockId>"}`

### `slitemcp_move-note`

Move Note · Destructive

Move a note to become a child of another parent note.

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

Inputs:

- `noteId` (`string`, required): The ID of the note to move.
- `parentNoteId` (`string`, required): The ID of the target parent note to move the note into.

Example input: `{"noteId":"<noteId>","parentNoteId":"<parentNoteId>"}`

### `slitemcp_remove-blocks`

Remove Blocks · Destructive

Remove one or more blocks from a note by their block IDs.

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

Inputs:

- `blockIds` (`array`, required): The block IDs to remove. Use get-note with format="sliteml" to see available block IDs.
- `noteId` (`string`, required): The ID of the note containing the blocks.

Example input: `{"blockIds":[],"noteId":"<noteId>"}`

### `slitemcp_set-note-review-state`

Set Note Review State · Destructive

Set the review state and optional review owner of a note.

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

Inputs:

- `noteId` (`string`, required): The ID of the note.
- `message` (`string`, optional): Optional message. Only applicable for "out_of_date" and "verification_requested" states.
- `reviewState` (`string`, optional): The new review state to set. Optional if only updating the review owner. One of: `none`, `final`, `out_of_date`, `verification_requested`.
- `reviewStateManagedBy` (`string`, optional): Optional user ID to set as the review owner for this note.
- `reviewStateManagedByUserGroup` (`string`, optional): Optional user group ID to set as the review owner for this note. Mutually exclusive with reviewStateManagedBy.

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

### `slitemcp_update_table`

Update Table · Destructive

Make a structured edit to an in-document table (a table embedded in a doc's body) without re-emitting the whole table — add/remove columns or rows, set cell values.

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

Inputs:

- `noteId` (`string`, required): The ID of the note that contains the table.
- `tableBlockId` (`string`, required): The block id of the table — the id attribute on its <database> element from get-note.
- `addRows` (`array`, optional): Rows to append to the table, optionally with initial fields keyed by column id.
- `columns` (`array`, optional): New typed columns to add to the table.
- `removeColumns` (`array`, optional): Column ids to remove. Deletes all data in those columns. Cannot be reverted.
- `removeRows` (`array`, optional): Row ids to delete.
- `setCells` (`array`, optional): Cell values to set. For select/multi-select use the option label(s); for a text column pass the cell content; for a users/notes column pass a JSON array of resolved refs from search-users/search-notes.

Example input: `{"noteId":"<noteId>","tableBlockId":"<tableBlockId>"}`

### `slitemcp_update-collection`

Update Collection · Destructive

Add or remove columns in a collection (structured database of notes).

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

Inputs:

- `noteId` (`string`, required): The ID of the collection note to update.
- `columns` (`array`, optional): New columns to add to the collection.
- `removeColumns` (`array`, optional): Column IDs to remove. Errors if any ID does not match an existing column.

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

### `slitemcp_update-note`

Update Note · Destructive

Update an existing note's title, content, icon, or layout settings.

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

Inputs:

- `noteId` (`string`, required): The ID of the note to update.
- `contentWidth` (`string`, optional): Doc layout: 'regular' (default centered) or 'wide' (expanded). One of: `regular`, `wide`.
- `fields` (`object`, optional): Field values for collection records, keyed by column ID. Only applies when the note is inside a collection.
- `iconColor` (`string`, optional): Optional new icon color. Pass null to clear.
- `iconShape` (`string`, optional): Optional new icon shape. Use an icon key like 'rocket' or '#collection_table' for collection views.
- `sliteml` (`string`, optional): Optional new sliteml content. Replaces the entire note body.
- `title` (`string`, optional): Optional new title for the note.

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

## Related

Other Collaboration connectors ([all 43](/agentkit/connectors/?category=collaboration)):

- [Slack](/agentkit/connectors/slack/): Scalekit connector, OAuth, 96 tools
- [Microsoft 365](/agentkit/connectors/microsoft365/): Scalekit connector, OAuth, 317 tools
- [Notion](/agentkit/connectors/notion/): Scalekit connector, OAuth, 51 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 |
