> **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 Outline

The Outline connector lets your AI agent act in each user's Outline account. Each user signs in to Outline once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 82 tools.

**Authentication:** OAuth 2.0
**Categories:** Productivity, Files & Documents, Collaboration
**Tools:** 82: 42 read, 29 write, 11 destructive
**Users sign in with:** OAuth
**OAuth app:** Your own Outline app
**Built by:** Scalekit connector
**Try it:** [Playground in the Scalekit dashboard](https://app.scalekit.com/ws/signup?sk_intent=playground&provider=OUTLINE)

## 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 Outline connection

   In **AgentKit > Connections**, create an Outline connection and copy its redirect URI. The name you give it is the `connection_name` your code passes. See [Configure connections](/agentkit/connections/).

4. ### Register an OAuth app

   Outline connections use your own OAuth app. Register one with Outline and add the redirect URI you copied.

   Then enter the app's Client ID and Client Secret on the Outline connection.

5. ### 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 = 'outline'
   const identifier = 'user_123'

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

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

   # Make your first call
   result = actions.execute_tool(
       tool_input={},
       tool_name="outline_current_user_get",
       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: 'outline_attachments_list',
  toolInput: {},
  connector: 'outline',
  identifier: 'user_123',
})
```

**Python**

```python
result = actions.execute_tool(
    tool_name="outline_attachments_list",
    tool_input={},
    connection_name="outline",
    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.

### `outline_attachments_list`

List Attachments · Read-only

List files attached in the workspace, optionally for one document or uploaded by one user.
Returns attachments with id, name, contentType, size, documentId and url, plus pagination.
Use outline_attachments_list to find uploaded files. Use outline_attachment_create_from_url to add one from a link.

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

Inputs:

- `direction` (`string`, optional): Sort order: ASC (oldest or A first) or DESC (newest or Z first). One of: `ASC`, `DESC`.
- `document_id` (`string`, optional): UUID of a document whose attachments to list. Use the `id` field returned by outline_document_get or outline_documents_list (a UUID, not the short urlId).
- `limit` (`integer`, optional): Maximum number of results to return in this page. Outline's default is 25; up to 100 per page. Example: 25.
- `offset` (`integer`, optional): Number of results to skip, for paging. Use the previous offset plus limit to get the next page. Example: 25.
- `sort` (`string`, optional): Field to sort results by, such as updatedAt, createdAt, title or index. Example: updatedAt.
- `user_id` (`string`, optional): UUID of a user whose uploads to list. Get it from outline_users_list or outline_current_user_get.

Example input: `{}`

### `outline_collection_get`

Get Collection · Read-only

Get one collection by its ID.
Returns the collection's id, name, description, icon, color, permission, sharing settings and timestamps.
Use outline_collection_get for a collection's details. Use outline_collection_structure_get for the documents inside it.

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

Inputs:

- `id` (`string`, required): UUID of the collection. Get it from outline_collections_list.

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

### `outline_collection_group_memberships_list`

List Collection Group Memberships · Read-only

List the groups that have access to a collection and their permission.
Returns group memberships with the group and permission, plus pagination.
Use outline_collection_group_memberships_list to audit team access. Use outline_collection_memberships_list for individual users.

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

Inputs:

- `id` (`string`, required): UUID of the collection. Get it from outline_collections_list.
- `limit` (`integer`, optional): Maximum number of results to return in this page. Outline's default is 25; up to 100 per page. Example: 25.
- `offset` (`integer`, optional): Number of results to skip, for paging. Use the previous offset plus limit to get the next page. Example: 25.
- `permission` (`string`, optional): Only return memberships with this access level: `read` or `read_write`. One of: `read`, `read_write`.
- `query` (`string`, optional): Text to filter results by group name. Example: developers.

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

### `outline_collection_memberships_list`

List Collection Memberships · Read-only

List users with an individual membership on a collection and their permission. Group access is not included.
Returns memberships (user, permission) and the related users, plus pagination.
Use outline_collection_memberships_list to audit who was added directly. Use outline_collection_group_memberships_list for groups.

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

Inputs:

- `id` (`string`, required): UUID of the collection. Get it from outline_collections_list.
- `limit` (`integer`, optional): Maximum number of results to return in this page. Outline's default is 25; up to 100 per page. Example: 25.
- `offset` (`integer`, optional): Number of results to skip, for paging. Use the previous offset plus limit to get the next page. Example: 25.
- `permission` (`string`, optional): Only return memberships with this access level: `read` or `read_write`. One of: `read`, `read_write`.
- `query` (`string`, optional): Text to filter results by user name. Example: jenny.

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

### `outline_collection_structure_get`

Get Collection Document Tree · Read-only

Get the document tree of a collection: every published document and how they nest.
Returns a list of navigation nodes, each with id, title, url and its children.
Use outline_collection_structure_get to see a collection's hierarchy. Use outline_documents_list for a flat, paged list with document text.

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

Inputs:

- `id` (`string`, required): UUID of the collection. Get it from outline_collections_list.

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

### `outline_collections_list`

List Collections · Read-only

List the collections the user can access, optionally filtered by name.
Returns collections with id, name, description, icon, color, permission, sharing and timestamps, plus pagination.
Use outline_collections_list to find a collection ID. Use outline_collection_get for one collection, or outline_collection_structure_get for its document tree.

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

Inputs:

- `direction` (`string`, optional): Sort order: ASC (oldest or A first) or DESC (newest or Z first). One of: `ASC`, `DESC`.
- `filters` (`array`, optional): Advanced structured filters, combined with AND. Each entry is a condition with a field, an operator and usually a value, or a group with an operator of AND or OR and its own list of filters. Supported fields: name, createdAt, updatedAt, archivedAt, createdById and permission. Operators include eq, neq, lt, lte, gt, gte, contains, startsWith, endsWith, in, notIn, isNull and isNotNull. Date fields accept an ISO 8601 date or an ISO 8601 duration relative to now. Example: [{"field": "updatedAt", "operator": "gte", "value": "2026-01-01"}].
- `limit` (`integer`, optional): Maximum number of results to return in this page. Outline's default is 25; up to 100 per page. Example: 25.
- `name_contains` (`string`, optional): Only return collections whose name contains this text. Example: Engineering.
- `offset` (`integer`, optional): Number of results to skip, for paging. Use the previous offset plus limit to get the next page. Example: 25.
- `sort` (`string`, optional): Field to sort results by, such as updatedAt, createdAt, title or index. Example: updatedAt.

Example input: `{}`

### `outline_comment_get`

Get Comment · Read-only

Get one comment by ID.
Returns the comment's id, documentId, parentCommentId, body, createdBy, resolvedAt and timestamps.
Use outline_comment_get for a single comment. Use outline_comments_list for a whole discussion.

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

Inputs:

- `id` (`string`, required): UUID of the comment. Get it from outline_comments_list.
- `include_anchor_text` (`boolean`, optional): Set to true to include the document text the comment is attached to, if it is an inline comment.

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

### `outline_comments_list`

List Comments · Read-only

List comments on a document or across a collection.
Returns comments with id, documentId, parentCommentId, the comment body, createdBy, resolvedAt and timestamps, plus pagination.
Use outline_comments_list to read a discussion. Use outline_comment_get for a single comment.

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

Inputs:

- `collection_id` (`string`, optional): UUID of a collection to list comments for. Get it from outline_collections_list.
- `direction` (`string`, optional): Sort order: ASC (oldest or A first) or DESC (newest or Z first). One of: `ASC`, `DESC`.
- `document_id` (`string`, optional): UUID of a document to list comments for. Use the `id` field returned by outline_document_get or outline_documents_list (a UUID, not the short urlId).
- `include_anchor_text` (`boolean`, optional): Set to true to include the document text each inline comment is attached to.
- `limit` (`integer`, optional): Maximum number of results to return in this page. Outline's default is 25; up to 100 per page. Example: 25.
- `offset` (`integer`, optional): Number of results to skip, for paging. Use the previous offset plus limit to get the next page. Example: 25.
- `sort` (`string`, optional): Field to sort results by, such as updatedAt, createdAt, title or index. Example: updatedAt.

Example input: `{}`

### `outline_current_user_get`

Get Current User · Read-only

Get the Outline user and workspace that the connected account is signed in as.
Returns the user (id, name, email, role, avatar) and the team (id, name, URL, settings).
Use outline_current_user_get to find your own user ID or workspace URL. Use outline_user_get to look up another user.

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

Inputs: none.

Example input: `{}`

### `outline_document_children_get`

Get Child Document Tree · Read-only

Get the tree of documents nested under a document.
Returns navigation nodes for each child, with id, title, url and their own children.
Use outline_document_children_get to see what sits under a page. Use outline_collection_structure_get for a whole collection.

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

Inputs:

- `id` (`string`, required): ID of the document. Accepts the document UUID or its urlId, the short code at the end of the document URL (for https://acme.getoutline.com/doc/welcome-hDYep1TPAM it is hDYep1TPAM). Get it from outline_documents_list or outline_documents_search.

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

### `outline_document_export`

Export Document as Markdown · Read-only

Export a document's content as Markdown.
Returns the document body as a Markdown string in data.
Use outline_document_export when you only need the text. Use outline_document_get for the text plus title, IDs and metadata.

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

Inputs:

- `id` (`string`, required): ID of the document. Accepts the document UUID or its urlId, the short code at the end of the document URL (for https://acme.getoutline.com/doc/welcome-hDYep1TPAM it is hDYep1TPAM). Get it from outline_documents_list or outline_documents_search.

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

### `outline_document_get`

Get Document · Read-only

Get one Outline document by its ID or urlId, including its full Markdown text.
Returns the document's id, urlId, title, text (Markdown), collectionId, parentDocumentId, createdBy, updatedBy, timestamps and url.
Use outline_document_get to read a document you already know. Use outline_documents_search to find documents by content, or outline_document_export to get the content only.

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

Inputs:

- `id` (`string`, required): ID of the document. Accepts the document UUID or its urlId, the short code at the end of the document URL (for https://acme.getoutline.com/doc/welcome-hDYep1TPAM it is hDYep1TPAM). Get it from outline_documents_list or outline_documents_search.

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

### `outline_document_group_memberships_list`

List Document Group Memberships · Read-only

List the groups that have access to a document and their permission.
Returns group memberships with the group and permission, plus pagination.
Use outline_document_group_memberships_list to audit group access. Use outline_document_memberships_list for individual users.

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

Inputs:

- `id` (`string`, required): ID of the document. Accepts the document UUID or its urlId, the short code at the end of the document URL (for https://acme.getoutline.com/doc/welcome-hDYep1TPAM it is hDYep1TPAM). Get it from outline_documents_list or outline_documents_search.
- `limit` (`integer`, optional): Maximum number of results to return in this page. Outline's default is 25; up to 100 per page. Example: 25.
- `offset` (`integer`, optional): Number of results to skip, for paging. Use the previous offset plus limit to get the next page. Example: 25.
- `permission` (`string`, optional): Only return memberships with this access level: `read` or `read_write`. One of: `read`, `read_write`.
- `query` (`string`, optional): Text to filter results by group name. Example: engineering.

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

### `outline_document_memberships_list`

List Document Memberships · Read-only

List users with a direct membership on a document and their permission.
Returns memberships (user, permission) and the related users.
Use outline_document_memberships_list to audit direct access. Use outline_document_users_list for everyone with access, or outline_document_group_memberships_list for groups.

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

Inputs:

- `id` (`string`, required): ID of the document. Accepts the document UUID or its urlId, the short code at the end of the document URL (for https://acme.getoutline.com/doc/welcome-hDYep1TPAM it is hDYep1TPAM). Get it from outline_documents_list or outline_documents_search.
- `permission` (`string`, optional): Only return memberships with this access level: `read` or `read_write`. One of: `read`, `read_write`.
- `query` (`string`, optional): Text to filter results by user name. Example: jenny.

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

### `outline_document_users_list`

List Document Users · Read-only

List every user who has access to a document, through the collection, a group or a direct membership.
Returns users with id, name, email and role.
Use outline_document_users_list to see who can open a document. Use outline_document_memberships_list for direct memberships only.

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

Inputs:

- `id` (`string`, required): ID of the document. Accepts the document UUID or its urlId, the short code at the end of the document URL (for https://acme.getoutline.com/doc/welcome-hDYep1TPAM it is hDYep1TPAM). Get it from outline_documents_list or outline_documents_search.
- `query` (`string`, optional): Text to filter results by user name. Example: jenny.
- `user_id` (`string`, optional): UUID of a user to check for. Get it from outline_users_list or outline_current_user_get.

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

### `outline_documents_answer_question`

Answer Question from Documents · Read-only

Ask a natural-language question and get an AI-written answer drawn from the documents the user can access.
Returns search.answer with the answer text, plus the documents it drew on.
Use outline_documents_answer_question for a direct answer. Use outline_documents_search to get matching documents instead.
AI answers must be enabled for the Outline workspace.

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

Inputs:

- `query` (`string`, required): The question to answer. Example: What is our holiday policy?
- `collection_id` (`string`, optional): UUID of a collection to search within. Get it from outline_collections_list.
- `date_filter` (`string`, optional): Only use documents updated within this period: day, week, month or year. One of: `day`, `week`, `month`, `year`.
- `document_id` (`string`, optional): UUID of a document to search within. Use the `id` field returned by outline_document_get or outline_documents_list (a UUID, not the short urlId).
- `status_filter` (`string`, optional): Only use documents with this status: draft, archived or published. One of: `draft`, `archived`, `published`.
- `user_id` (`string`, optional): UUID of a user; only documents they edited are used. Get it from outline_users_list or outline_current_user_get.

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

### `outline_documents_archived_list`

List Archived Documents · Read-only

List archived documents the user can access, optionally in one collection.
Returns archived documents with id, title, archivedAt and deprecatedReason, plus pagination.
Use outline_documents_archived_list to find archived content. Use outline_document_restore to bring one back.

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

Inputs:

- `collection_id` (`string`, optional): UUID of a collection to limit the list to. Get it from outline_collections_list.
- `direction` (`string`, optional): Sort order: ASC (oldest or A first) or DESC (newest or Z first). One of: `ASC`, `DESC`.
- `limit` (`integer`, optional): Maximum number of results to return in this page. Outline's default is 25; up to 100 per page. Example: 25.
- `offset` (`integer`, optional): Number of results to skip, for paging. Use the previous offset plus limit to get the next page. Example: 25.
- `sort` (`string`, optional): Field to sort results by, such as updatedAt, createdAt, title or index. Example: updatedAt.

Example input: `{}`

### `outline_documents_deleted_list`

List Deleted Documents · Read-only

List documents in the trash that the user can access. Trashed documents are permanently deleted after 30 days.
Returns deleted documents with id, title, deletedAt and deletedBy, plus pagination.
Use outline_documents_deleted_list to find something deleted by mistake. Use outline_document_restore to recover it.

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

Inputs:

- `direction` (`string`, optional): Sort order: ASC (oldest or A first) or DESC (newest or Z first). One of: `ASC`, `DESC`.
- `filters` (`array`, optional): Advanced structured filters, combined with AND. Each entry is a condition with a field, an operator and usually a value, or a group with an operator of AND or OR and its own list of filters. Supported fields: deletedAt (date) and deletedById (user UUID, eq or in only). Operators include eq, neq, lt, lte, gt, gte, in, notIn, isNull and isNotNull. Date fields accept an ISO 8601 date or an ISO 8601 duration relative to now. Example: [{"field": "deletedAt", "operator": "gte", "value": "2026-01-01"}].
- `limit` (`integer`, optional): Maximum number of results to return in this page. Outline's default is 25; up to 100 per page. Example: 25.
- `offset` (`integer`, optional): Number of results to skip, for paging. Use the previous offset plus limit to get the next page. Example: 25.
- `sort` (`string`, optional): Field to sort results by, such as updatedAt, createdAt, title or index. Example: updatedAt.

Example input: `{}`

### `outline_documents_drafts_list`

List Draft Documents · Read-only

List the connected user's draft (unpublished) documents.
Returns draft documents with id, title, text, collectionId and timestamps, plus pagination.
Use outline_documents_drafts_list for unpublished work. Use outline_documents_list for published documents.

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

Inputs:

- `collection_id` (`string`, optional): UUID of a collection to limit drafts to. Get it from outline_collections_list.
- `date_filter` (`string`, optional): Only return drafts updated within this period: day, week, month or year. One of: `day`, `week`, `month`, `year`.
- `direction` (`string`, optional): Sort order: ASC (oldest or A first) or DESC (newest or Z first). One of: `ASC`, `DESC`.
- `limit` (`integer`, optional): Maximum number of results to return in this page. Outline's default is 25; up to 100 per page. Example: 25.
- `offset` (`integer`, optional): Number of results to skip, for paging. Use the previous offset plus limit to get the next page. Example: 25.
- `sort` (`string`, optional): Field to sort results by, such as updatedAt, createdAt, title or index. Example: updatedAt.

Example input: `{}`

### `outline_documents_list`

List Documents · Read-only

List published documents and the user's own drafts, optionally limited to one collection or to the children of a parent document.
Returns a page of documents with id, urlId, title, text, collectionId, parentDocumentId, timestamps and url, plus pagination.
Use outline_documents_list to browse documents. Use outline_documents_search for a keyword search of document content, or outline_documents_search_titles to match titles only.

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

Inputs:

- `backlink_document_id` (`string`, optional): UUID of a document; only documents that link to it are listed. Use the `id` field returned by outline_document_get or outline_documents_list (a UUID, not the short urlId).
- `collection_id` (`string`, optional): UUID of a collection to limit the list to. Get it from outline_collections_list.
- `direction` (`string`, optional): Sort order: ASC (oldest or A first) or DESC (newest or Z first). One of: `ASC`, `DESC`.
- `filters` (`array`, optional): Advanced structured filters, combined with AND. Each entry is a condition with a field, an operator and usually a value, or a group with an operator of AND or OR and its own list of filters. Supported fields: createdAt, updatedAt, publishedAt, archivedAt, title, templateId, collectionId, userId, documentId and parentDocumentId. Operators include eq, neq, lt, lte, gt, gte, contains, startsWith, endsWith, in, notIn, isNull and isNotNull. Date fields accept an ISO 8601 date or an ISO 8601 duration relative to now. Example: [{"field": "updatedAt", "operator": "gte", "value": "2026-01-01"}].
- `limit` (`integer`, optional): Maximum number of results to return in this page. Outline's default is 25; up to 100 per page. Example: 25.
- `offset` (`integer`, optional): Number of results to skip, for paging. Use the previous offset plus limit to get the next page. Example: 25.
- `parent_document_id` (`string`, optional): UUID of a parent document; only its direct children are listed. Use the `id` field returned by outline_document_get or outline_documents_list (a UUID, not the short urlId).
- `sort` (`string`, optional): Field to sort results by, such as updatedAt, createdAt, title or index. Example: updatedAt.

Example input: `{}`

### `outline_documents_search`

Search Documents · Read-only

Search the content of documents the user can access, by keyword, optionally within one collection.
Returns ranked results, each with a context snippet showing the match, a ranking score and the full document object, plus pagination.
Use outline_documents_search to find documents by what they say. Use outline_documents_search_titles for a faster title-only match, or outline_documents_answer_question for an AI answer.

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

Inputs:

- `query` (`string`, required): Keywords to search for in document titles and text. Supports quoted phrases. Example: hiring policy.
- `collection_id` (`string`, optional): UUID of a collection to search within. Get it from outline_collections_list.
- `direction` (`string`, optional): Sort order: ASC (oldest or A first) or DESC (newest or Z first). One of: `ASC`, `DESC`.
- `filters` (`array`, optional): Advanced structured filters, combined with AND. Each entry is a condition with a field, an operator and usually a value, or a group with an operator of AND or OR and its own list of filters. Supported fields: createdAt, updatedAt, publishedAt, archivedAt, title, templateId, collectionId, userId, documentId and parentDocumentId. Operators include eq, neq, lt, lte, gt, gte, contains, startsWith, endsWith, in, notIn, isNull and isNotNull. Date fields accept an ISO 8601 date or an ISO 8601 duration relative to now. Example: [{"field": "updatedAt", "operator": "gte", "value": "2026-01-01"}].
- `limit` (`integer`, optional): Maximum number of results to return in this page. Outline's default is 25; up to 100 per page. Example: 25.
- `offset` (`integer`, optional): Number of results to skip, for paging. Use the previous offset plus limit to get the next page. Example: 25.
- `snippet_max_words` (`integer`, optional): Maximum number of words in each result's context snippet. Outline's default is 30.
- `snippet_min_words` (`integer`, optional): Minimum number of words in each result's context snippet. Outline's default is 20.
- `sort` (`string`, optional): Field to sort results by: createdAt, updatedAt or title. Leave empty to sort by relevance (best match first). One of: `createdAt`, `updatedAt`, `title`.

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

### `outline_documents_search_titles`

Search Document Titles · Read-only

Search document titles by keyword, optionally within one collection. Faster than a full-text search.
Returns matching documents with id, urlId, title, collectionId, timestamps and url, plus pagination.
Use outline_documents_search_titles when you know part of a title. Use outline_documents_search to match words inside documents.

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

Inputs:

- `query` (`string`, required): Text to match against document titles. Example: onboarding.
- `collection_id` (`string`, optional): UUID of a collection to search within. Get it from outline_collections_list.
- `direction` (`string`, optional): Sort order: ASC (oldest or A first) or DESC (newest or Z first). One of: `ASC`, `DESC`.
- `filters` (`array`, optional): Advanced structured filters, combined with AND. Each entry is a condition with a field, an operator and usually a value, or a group with an operator of AND or OR and its own list of filters. Supported fields: createdAt, updatedAt, publishedAt, archivedAt, title, templateId, collectionId, userId, documentId and parentDocumentId. Operators include eq, neq, lt, lte, gt, gte, contains, startsWith, endsWith, in, notIn, isNull and isNotNull. Date fields accept an ISO 8601 date or an ISO 8601 duration relative to now. Example: [{"field": "updatedAt", "operator": "gte", "value": "2026-01-01"}].
- `limit` (`integer`, optional): Maximum number of results to return in this page. Outline's default is 25; up to 100 per page. Example: 25.
- `offset` (`integer`, optional): Number of results to skip, for paging. Use the previous offset plus limit to get the next page. Example: 25.
- `sort` (`string`, optional): Field to sort results by: createdAt, updatedAt or title. Leave empty to sort by relevance (best match first). One of: `createdAt`, `updatedAt`, `title`.

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

### `outline_documents_viewed_list`

List Recently Viewed Documents · Read-only

List documents the connected user viewed recently.
Returns documents with id, title, collectionId and timestamps, plus pagination.
Use outline_documents_viewed_list to pick up recent work. Use outline_views_list to see who viewed one document.

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

Inputs:

- `direction` (`string`, optional): Sort order: ASC (oldest or A first) or DESC (newest or Z first). One of: `ASC`, `DESC`.
- `limit` (`integer`, optional): Maximum number of results to return in this page. Outline's default is 25; up to 100 per page. Example: 25.
- `offset` (`integer`, optional): Number of results to skip, for paging. Use the previous offset plus limit to get the next page. Example: 25.
- `sort` (`string`, optional): Field to sort results by. One of: updatedAt, createdAt. One of: `updatedAt`, `createdAt`.

Example input: `{}`

### `outline_events_list`

List Events · Read-only

List the activity trail of the workspace, such as documents created, published or moved, optionally filtered by event, user, document or collection.
Returns events with id, name, actorId, documentId, collectionId, data and createdAt, plus pagination.
Use outline_events_list to see who did what. Set audit_log=true (admins only) for detailed audit events.

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

Inputs:

- `actor_id` (`string`, optional): UUID of a user; only events they performed are returned. Get it from outline_users_list or outline_current_user_get.
- `audit_log` (`boolean`, optional): Set to true for detailed events suitable for an audit log. Requires an admin.
- `collection_id` (`string`, optional): UUID of a collection; only events in it are returned. Get it from outline_collections_list.
- `direction` (`string`, optional): Sort order: ASC (oldest or A first) or DESC (newest or Z first). One of: `ASC`, `DESC`.
- `document_id` (`string`, optional): UUID of a document; only events on it are returned. Use the `id` field returned by outline_document_get or outline_documents_list (a UUID, not the short urlId).
- `limit` (`integer`, optional): Maximum number of results to return in this page. Outline's default is 25; up to 100 per page. Example: 25.
- `name` (`string`, optional): Only return this event type, written as objects.verb. Example: documents.publish.
- `offset` (`integer`, optional): Number of results to skip, for paging. Use the previous offset plus limit to get the next page. Example: 25.
- `sort` (`string`, optional): Field to sort results by, such as updatedAt, createdAt, title or index. Example: updatedAt.

Example input: `{}`

### `outline_file_operation_get`

Get File Operation · Read-only

Get the status of one import or export job.
Returns the file operation's id, type, state (creating, uploading, complete, error or expired), size and timestamps.
Use outline_file_operation_get to poll an export started with outline_collection_export until it is complete.

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

Inputs:

- `id` (`string`, required): UUID of the file operation, from outline_collection_export or outline_file_operations_list.

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

### `outline_file_operations_list`

List File Operations · Read-only

List import or export jobs in the workspace.
Returns file operations with id, type, state, format, size, collectionId and timestamps, plus pagination.
Use outline_file_operations_list to find past exports. Use outline_file_operation_get to check one job.

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

Inputs:

- `type` (`string`, required): Kind of job to list: export or import. One of: `export`, `import`.
- `direction` (`string`, optional): Sort order: ASC (oldest or A first) or DESC (newest or Z first). One of: `ASC`, `DESC`.
- `limit` (`integer`, optional): Maximum number of results to return in this page. Outline's default is 25; up to 100 per page. Example: 25.
- `offset` (`integer`, optional): Number of results to skip, for paging. Use the previous offset plus limit to get the next page. Example: 25.
- `sort` (`string`, optional): Field to sort results by, such as updatedAt, createdAt, title or index. Example: updatedAt.

Example input: `{"type":"export"}`

### `outline_group_get`

Get Group · Read-only

Get one group by ID.
Returns the group's id, name, memberCount and timestamps.
Use outline_group_get for a group's details. Use outline_group_memberships_list for its members.

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

Inputs:

- `id` (`string`, required): UUID of the group. Get it from outline_groups_list.

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

### `outline_group_memberships_list`

List Group Members · Read-only

List the members of a group, optionally filtered by name.
Returns group memberships and the member users with id, name and email, plus pagination.
Use outline_group_memberships_list to see who is in a group. Use outline_groups_list to find the group.

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

Inputs:

- `id` (`string`, required): UUID of the group. Get it from outline_groups_list.
- `limit` (`integer`, optional): Maximum number of results to return in this page. Outline's default is 25; up to 100 per page. Example: 25.
- `offset` (`integer`, optional): Number of results to skip, for paging. Use the previous offset plus limit to get the next page. Example: 25.
- `query` (`string`, optional): Text to filter results by user name. Example: jenny.

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

### `outline_groups_list`

List Groups · Read-only

List groups in the workspace, optionally only those a user belongs to or matching a name.
Returns groups with id, name, memberCount and timestamps, plus pagination.
Use outline_groups_list to find a group ID. Use outline_group_memberships_list for a group's members.

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

Inputs:

- `direction` (`string`, optional): Sort order: ASC (oldest or A first) or DESC (newest or Z first). One of: `ASC`, `DESC`.
- `external_id` (`string`, optional): Only return the group with this external ID, as set by a directory sync. Example: 00g1abcd2EFGH3ijk4l5.
- `limit` (`integer`, optional): Maximum number of results to return in this page. Outline's default is 25; up to 100 per page. Example: 25.
- `offset` (`integer`, optional): Number of results to skip, for paging. Use the previous offset plus limit to get the next page. Example: 25.
- `query` (`string`, optional): Text to match against group names. Example: engineering.
- `sort` (`string`, optional): Field to sort results by, such as updatedAt, createdAt, title or index. Example: updatedAt.
- `user_id` (`string`, optional): UUID of a user; only groups that include them are returned. Get it from outline_users_list or outline_current_user_get.

Example input: `{}`

### `outline_notifications_list`

List Notifications · Read-only

List the connected user's notifications, newest first, optionally by event type or archived state.
Returns notifications with id, event, actor, documentId, viewedAt, archivedAt and createdAt, plus pagination.
Use outline_notifications_list to see what needs attention. Use outline_notification_update to mark one viewed or archived.

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

Inputs:

- `archived` (`boolean`, optional): Set to true to return only archived notifications.
- `event_type` (`string`, optional): Only return notifications of this event type. Example: documents.mentioned.
- `limit` (`integer`, optional): Maximum number of results to return in this page. Outline's default is 25; up to 100 per page. Example: 25.
- `offset` (`integer`, optional): Number of results to skip, for paging. Use the previous offset plus limit to get the next page. Example: 25.

Example input: `{}`

### `outline_pins_list`

List Pinned Documents · Read-only

List documents pinned to a collection, or to the home screen when no collection is given.
Returns pins with id, documentId, collectionId and index, plus pagination.
Use outline_pins_list to see highlighted documents. Use outline_pin_create to pin one.

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

Inputs:

- `collection_id` (`string`, optional): UUID of a collection whose pins to list. Leave empty for home screen pins. Get it from outline_collections_list.
- `limit` (`integer`, optional): Maximum number of results to return in this page. Outline's default is 25; up to 100 per page. Example: 25.
- `offset` (`integer`, optional): Number of results to skip, for paging. Use the previous offset plus limit to get the next page. Example: 25.

Example input: `{}`

### `outline_revision_get`

Get Revision · Read-only

Get one revision of a document, including its content at that point in time.
Returns the revision's id, documentId, title, text, createdBy and createdAt.
Use outline_revision_get to read an old version. Use outline_revisions_list to find revision IDs.

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

Inputs:

- `id` (`string`, required): UUID of the revision. Get it from outline_revisions_list.

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

### `outline_revisions_list`

List Document Revisions · Read-only

List the saved revisions (history) of a document, without their content.
Returns revisions with id, title, createdBy and createdAt, plus pagination.
Use outline_revisions_list to see a document's history. Use outline_revision_get for one revision's content, or outline_document_restore to roll back.

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

Inputs:

- `document_id` (`string`, required): UUID of the document whose history to list. Use the `id` field returned by outline_document_get or outline_documents_list (a UUID, not the short urlId).
- `direction` (`string`, optional): Sort order: ASC (oldest or A first) or DESC (newest or Z first). One of: `ASC`, `DESC`.
- `limit` (`integer`, optional): Maximum number of results to return in this page. Outline's default is 25; up to 100 per page. Example: 25.
- `offset` (`integer`, optional): Number of results to skip, for paging. Use the previous offset plus limit to get the next page. Example: 25.
- `sort` (`string`, optional): Field to sort results by, such as updatedAt, createdAt, title or index. Example: updatedAt.

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

### `outline_share_get`

Get Share Link · Read-only

Get a share link by its ID, or the share link of a document.
Returns the share's id, url, published, documentId or collectionId and access details.
Use outline_share_get to check how something is shared. Use outline_share_create to create a link.
Provide either id or document_id.

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

Inputs:

- `document_id` (`string`, optional): UUID of a document whose share link you want. Provide this or id. Use the `id` field returned by outline_document_get or outline_documents_list (a UUID, not the short urlId).
- `id` (`string`, optional): UUID or slug of the share. Provide this or document_id.

Example input: `{}`

### `outline_shares_list`

List Share Links · Read-only

List the share links in the workspace, optionally filtered by document title.
Returns shares with id, url, documentId or collectionId, published, includeChildDocuments and lastAccessedAt, plus pagination.
Use outline_shares_list to audit what is shared. Use outline_share_get for one share.

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

Inputs:

- `direction` (`string`, optional): Sort order: ASC (oldest or A first) or DESC (newest or Z first). One of: `ASC`, `DESC`.
- `limit` (`integer`, optional): Maximum number of results to return in this page. Outline's default is 25; up to 100 per page. Example: 25.
- `offset` (`integer`, optional): Number of results to skip, for paging. Use the previous offset plus limit to get the next page. Example: 25.
- `query` (`string`, optional): Text to match against the shared documents' titles. Example: handbook.
- `sort` (`string`, optional): Field to sort results by, such as updatedAt, createdAt, title or index. Example: updatedAt.

Example input: `{}`

### `outline_stars_list`

List Starred Items · Read-only

List the documents and collections the connected user has starred.
Returns stars with id, documentId or collectionId and index, plus the starred documents, plus pagination.
Use outline_stars_list to see the user's bookmarks. Use outline_star_create to add one.

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

Inputs:

- `limit` (`integer`, optional): Maximum number of results to return in this page. Outline's default is 25; up to 100 per page. Example: 25.
- `offset` (`integer`, optional): Number of results to skip, for paging. Use the previous offset plus limit to get the next page. Example: 25.

Example input: `{}`

### `outline_subscriptions_list`

List Subscriptions · Read-only

List the connected user's subscription to a document or collection.
Returns subscriptions with id, documentId or collectionId, event and createdAt, plus pagination.
Use outline_subscriptions_list to check whether the user follows something. Use outline_subscription_create to follow it.
Provide exactly one of document_id or collection_id.

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

Inputs:

- `collection_id` (`string`, optional): UUID of a collection. Provide this or document_id. Get it from outline_collections_list.
- `document_id` (`string`, optional): UUID of a document. Provide this or collection_id. Use the `id` field returned by outline_document_get or outline_documents_list (a UUID, not the short urlId).
- `limit` (`integer`, optional): Maximum number of results to return in this page. Outline's default is 25; up to 100 per page. Example: 25.
- `offset` (`integer`, optional): Number of results to skip, for paging. Use the previous offset plus limit to get the next page. Example: 25.

Example input: `{}`

### `outline_template_get`

Get Template · Read-only

Get one template by ID, including its content.
Returns the template's id, title, content, collectionId and timestamps.
Use outline_template_get to inspect a template. Use outline_document_create with template_id to start a document from it.

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

Inputs:

- `id` (`string`, required): UUID or urlId of the template. Get it from outline_templates_list.

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

### `outline_templates_list`

List Templates · Read-only

List document templates available to the user, optionally in one collection or matching a title.
Returns templates with id, title, collectionId and timestamps, plus pagination.
Use outline_templates_list to find a template ID for outline_document_create. Use outline_template_get for a template's content.

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

Inputs:

- `collection_id` (`string`, optional): UUID of a collection to limit templates to. Get it from outline_collections_list.
- `direction` (`string`, optional): Sort order: ASC (oldest or A first) or DESC (newest or Z first). One of: `ASC`, `DESC`.
- `limit` (`integer`, optional): Maximum number of results to return in this page. Outline's default is 25; up to 100 per page. Example: 25.
- `offset` (`integer`, optional): Number of results to skip, for paging. Use the previous offset plus limit to get the next page. Example: 25.
- `query` (`string`, optional): Text to match against template titles. Example: meeting notes.
- `sort` (`string`, optional): Field to sort results by, such as updatedAt, createdAt, title or index. Example: updatedAt.

Example input: `{}`

### `outline_user_get`

Get User · Read-only

Get one user in the workspace by ID.
Returns the user's id, name, email, role, avatarUrl, lastActiveAt and timestamps.
Use outline_user_get to look up a user you have an ID for. Use outline_users_list to search users.

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

Inputs:

- `id` (`string`, required): UUID of the user. Get it from outline_users_list or outline_current_user_get.

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

### `outline_users_list`

List Users · Read-only

List users in the Outline workspace, optionally filtered by name or email text or by role.
Returns users with id, name, email, role, avatarUrl, lastActiveAt and timestamps, plus pagination.
Use outline_users_list to find a user ID. Use outline_user_get for one user, or outline_current_user_get for the connected user.

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

Inputs:

- `direction` (`string`, optional): Sort order: ASC (oldest or A first) or DESC (newest or Z first). One of: `ASC`, `DESC`.
- `filters` (`array`, optional): Advanced structured filters, combined with AND. Each entry is a condition with a field, an operator and usually a value, or a group with an operator of AND or OR and its own list of filters. Supported fields: id, name, email, role, createdAt, updatedAt, lastActiveAt and suspendedAt. Operators include eq, neq, lt, lte, gt, gte, contains, startsWith, endsWith, in, notIn, isNull and isNotNull. Date fields accept an ISO 8601 date or an ISO 8601 duration relative to now. Example: [{"field": "updatedAt", "operator": "gte", "value": "2026-01-01"}].
- `limit` (`integer`, optional): Maximum number of results to return in this page. Outline's default is 25; up to 100 per page. Example: 25.
- `offset` (`integer`, optional): Number of results to skip, for paging. Use the previous offset plus limit to get the next page. Example: 25.
- `query` (`string`, optional): Text to match against user names and emails. Example: jane.
- `role` (`string`, optional): Only return users with this role: admin, member, viewer or guest. One of: `admin`, `member`, `viewer`, `guest`.
- `sort` (`string`, optional): Field to sort results by, such as updatedAt, createdAt, title or index. Example: updatedAt.

Example input: `{}`

### `outline_views_list`

List Document Views · Read-only

List the users who viewed a document and how many times.
Returns views with the user, count, firstViewedAt and lastViewedAt.
Use outline_views_list to see a document's readers. Use outline_documents_viewed_list for documents the connected user viewed.

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

Inputs:

- `document_id` (`string`, required): UUID of the document. Use the `id` field returned by outline_document_get or outline_documents_list (a UUID, not the short urlId).
- `include_suspended` (`boolean`, optional): Set to true to include views from suspended users.

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

### `outline_attachment_create_from_url`

Create Attachment from URL · Write

Store a file from a public URL as an Outline attachment. Outline downloads the file itself.
Returns the attachment with its id, name, size and url, ready to use at once.
Use outline_attachment_create_from_url to add an image or file to Outline; then reference its url in a document's Markdown with outline_document_update.

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

Inputs:

- `url` (`string`, required): Public URL of the file to fetch. Example: https://example.com/diagram.png.
- `document_id` (`string`, optional): UUID of the document the attachment belongs to. Use the `id` field returned by outline_document_get or outline_documents_list (a UUID, not the short urlId).

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

### `outline_collection_archive`

Archive Collection · Write

Archive a collection, hiding it and its documents from the sidebar and search until restored.
Returns the archived collection.
Use outline_collection_archive to retire a collection. Use outline_collection_restore to undo it, or outline_collection_delete to remove it for good.

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

Inputs:

- `id` (`string`, required): UUID of the collection. Get it from outline_collections_list.
- `reason` (`string`, optional): Optional reason for archiving, stored as deprecatedReason. Example: Project finished.

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

### `outline_collection_create`

Create Collection · Write

Create a new collection to organize documents.
Returns the new collection with its id, name, description and permission.
Use outline_collection_create for a new collection. Use outline_collection_update to change an existing one.

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

Inputs:

- `name` (`string`, required): Name of the collection, up to 100 characters. Example: Human Resources.
- `color` (`string`, optional): Hex color for the collection icon. Example: #123123.
- `description` (`string`, optional): Short description of the collection in Markdown. Example: Policies and guides for the people team.
- `icon` (`string`, optional): Icon for the collection: an emoji or an outline-icons name. Example: 📚.
- `permission` (`string`, optional): Default access for all workspace members: `read` (view only) or `read_write` (view and edit). Leave empty to make the collection private to members you add. One of: `read`, `read_write`.
- `sharing` (`boolean`, optional): Set to true to allow documents in this collection to be shared publicly.

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

### `outline_collection_duplicate`

Duplicate Collection · Write

Copy a collection with its published documents and settings. Drafts and archived documents are not copied.
Returns the new collection; documents are copied in the background, so it may fill in over a few moments.
Use outline_collection_duplicate to clone a collection. Use outline_collection_create to start an empty one.

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

Inputs:

- `id` (`string`, required): UUID of the collection to copy. Get it from outline_collections_list.
- `name` (`string`, optional): Name for the copy. Leave empty to reuse the original name. Example: Human Resources (copy).

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

### `outline_collection_export`

Export Collection · Write

Start an export of a whole collection, with its documents and attachments, as a zip file.
Returns a fileOperation with its id and state; the export runs in the background.
Use outline_collection_export for a bulk export. Poll outline_file_operation_get with the returned fileOperation id until state is complete; the finished file can then be downloaded from Outline. Use outline_document_export for one document.

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

Inputs:

- `id` (`string`, required): UUID of the collection. Get it from outline_collections_list.
- `format` (`string`, optional): Export format: outline-markdown (Markdown files), json, html or okf. One of: `outline-markdown`, `json`, `html`, `okf`.

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

### `outline_collection_group_add`

Add Group to Collection · Write

Give every member of a group access to a collection.
Returns the new group membership.
Use outline_collection_group_add to share a collection with a team. Use outline_collection_user_add for one person.

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

Inputs:

- `group_id` (`string`, required): UUID of the group to add. Get it from outline_groups_list.
- `id` (`string`, required): UUID of the collection. Get it from outline_collections_list.
- `permission` (`string`, optional): Access level for the group's collection access: `read` (view only) or `read_write` (view and edit). One of: `read`, `read_write`.

Example input: `{"group_id":"<group_id>","id":"<id>"}`

### `outline_collection_restore`

Restore Collection · Write

Restore an archived collection so it and its documents show in the sidebar and search again.
Returns the restored collection.
Use outline_collection_restore to undo outline_collection_archive.

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

Inputs:

- `id` (`string`, required): UUID of the collection. Get it from outline_collections_list.

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

### `outline_collection_update`

Update Collection · Write

Update a collection's name, description, icon, color, default permission or sharing setting.
Returns the updated collection.
Use outline_collection_update to change collection settings. Use outline_collection_user_add or outline_collection_group_add to give specific people access.

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

Inputs:

- `id` (`string`, required): UUID of the collection. Get it from outline_collections_list.
- `color` (`string`, optional): Hex color for the collection icon. Example: #4E5C6E.
- `description` (`string`, optional): New description in Markdown. Example: Everything about hiring and benefits.
- `icon` (`string`, optional): New icon: an emoji or an outline-icons name. Example: 🧑‍🤝‍🧑.
- `name` (`string`, optional): New name for the collection. Example: People Team.
- `permission` (`string`, optional): Default access for all workspace members: `read` or `read_write`. One of: `read`, `read_write`.
- `sharing` (`boolean`, optional): Set to true to allow public sharing of documents in this collection, false to disallow it.

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

### `outline_collection_user_add`

Add User to Collection · Write

Give a user access to a collection.
Returns the new membership and the user.
Use outline_collection_user_add to share a collection with a person. Use outline_collection_group_add for a team, or outline_document_user_add for one document.

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

Inputs:

- `id` (`string`, required): UUID of the collection. Get it from outline_collections_list.
- `user_id` (`string`, required): UUID of the user to add. Get it from outline_users_list or outline_current_user_get.
- `permission` (`string`, optional): Access level for the user's collection access: `read` (view only) or `read_write` (view and edit). One of: `read`, `read_write`.

Example input: `{"id":"<id>","user_id":"<user_id>"}`

### `outline_comment_create`

Create Comment · Write

Add a comment to a document, reply to a comment, or attach an inline comment to a passage of text.
Returns the new comment with its id and body.
Use outline_comment_create to start or reply to a discussion. Use outline_comment_update to edit a comment.

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

Inputs:

- `document_id` (`string`, required): UUID of the document to comment on. Use the `id` field returned by outline_document_get or outline_documents_list (a UUID, not the short urlId).
- `text` (`string`, required): Body of the comment in Markdown. Example: Looks good, but can we add a timeline?
- `anchor_prefix` (`string`, optional): Text just before anchor_text, to pick the right occurrence when it appears more than once. Needs anchor_text.
- `anchor_suffix` (`string`, optional): Text just after anchor_text, to pick the right occurrence when it appears more than once. Needs anchor_text.
- `anchor_text` (`string`, optional): Exact text in the document to attach an inline comment to. The first match is used unless anchor_prefix or anchor_suffix narrows it. Example: launch date.
- `parent_comment_id` (`string`, optional): UUID of the comment to reply to. Leave empty for a new top-level comment.

Example input: `{"document_id":"<document_id>","text":"<text>"}`

### `outline_comment_resolve`

Resolve Comment Thread · Write

Mark a comment thread as resolved, hiding it from the document by default.
Returns the resolved comment with resolvedAt and resolvedBy.
Use outline_comment_resolve when a discussion is done. Use outline_comment_unresolve to reopen it.

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

Inputs:

- `id` (`string`, required): UUID of the comment. Get it from outline_comments_list.

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

### `outline_comment_unresolve`

Unresolve Comment Thread · Write

Reopen a resolved comment thread so it shows on the document again.
Returns the comment.
Use outline_comment_unresolve to undo outline_comment_resolve.

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

Inputs:

- `id` (`string`, required): UUID of the comment. Get it from outline_comments_list.

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

### `outline_comment_update`

Update Comment · Write

Edit the text of an existing comment.
Returns the updated comment.
Use outline_comment_update to change what a comment says. Use outline_comment_resolve to close a thread instead.

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

Inputs:

- `id` (`string`, required): UUID of the comment. Get it from outline_comments_list.
- `text` (`string`, required): New body of the comment in Markdown. Example: Updated: timeline added below.

Example input: `{"id":"<id>","text":"<text>"}`

### `outline_document_archive`

Archive Document · Write

Archive a document, hiding it from the sidebar while keeping it searchable and restorable.
Returns the archived document with its archivedAt time.
Use outline_document_archive to retire outdated content. Use outline_document_restore to bring it back, or outline_document_delete to move it to the trash.

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

Inputs:

- `id` (`string`, required): ID of the document. Accepts the document UUID or its urlId, the short code at the end of the document URL (for https://acme.getoutline.com/doc/welcome-hDYep1TPAM it is hDYep1TPAM). Get it from outline_documents_list or outline_documents_search.
- `reason` (`string`, optional): Optional reason for archiving, stored on the document as deprecatedReason. Example: Replaced by the 2026 handbook.

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

### `outline_document_create`

Create Document · Write

Create a new Outline document with Markdown text, as a draft or published in a collection or under a parent document.
Returns the new document with its id, urlId, title, text and url.
Use outline_document_create for a new document. Use outline_document_update to change an existing one, or outline_document_duplicate to copy one.
To publish, pass publish=true with collection_id or parent_document_id (get IDs from outline_collections_list or outline_documents_list).

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

Inputs:

- `collection_id` (`string`, optional): UUID of the collection to create the document in. Needed to publish unless parent_document_id is set. Get it from outline_collections_list.
- `color` (`string`, optional): Hex color for the document icon. Example: #FF5733.
- `full_width` (`boolean`, optional): Set to true to display the document in full width.
- `icon` (`string`, optional): Icon shown next to the title: an emoji or an outline-icons name. Example: 🚀.
- `parent_document_id` (`string`, optional): UUID of a parent document to nest the new document under. Needed to publish unless collection_id is set. Use the `id` field returned by outline_document_get or outline_documents_list (a UUID, not the short urlId).
- `publish` (`boolean`, optional): Set to true to publish the document immediately so other workspace members can see it. Leave empty or false to create a draft. Publishing needs collection_id or parent_document_id.
- `template_id` (`string`, optional): UUID of a template to base the document on. Get it from outline_templates_list.
- `text` (`string`, optional): Body of the document in Markdown. Example: # Goals\n- Ship the new onboarding flow.
- `title` (`string`, optional): Title of the new document, up to 100 characters. Example: Q3 Planning.

Example input: `{}`

### `outline_document_duplicate`

Duplicate Document · Write

Copy a document, optionally with all of its child documents, into the same or another location.
Returns the new documents.
Use outline_document_duplicate to copy existing content. Use outline_document_create to start from scratch, or outline_document_templatize to make a reusable template.

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

Inputs:

- `id` (`string`, required): ID of the document. Accepts the document UUID or its urlId, the short code at the end of the document URL (for https://acme.getoutline.com/doc/welcome-hDYep1TPAM it is hDYep1TPAM). Get it from outline_documents_list or outline_documents_search.
- `collection_id` (`string`, optional): UUID of the collection to copy the document into. Get it from outline_collections_list.
- `parent_document_id` (`string`, optional): UUID of the parent document to copy the document under. Use the `id` field returned by outline_document_get or outline_documents_list (a UUID, not the short urlId).
- `publish` (`boolean`, optional): Set to true to publish the copy; otherwise it is created as a draft.
- `recursive` (`boolean`, optional): Set to true to also copy every child document.
- `title` (`string`, optional): Title for the copy. Leave empty to reuse the original title. Example: Q3 Planning (copy).

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

### `outline_document_group_add`

Add Group to Document · Write

Give every member of a group access to a document.
Returns the new group membership.
Use outline_document_group_add to share a document with a team. Use outline_document_user_add for one person.

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

Inputs:

- `group_id` (`string`, required): UUID of the group to add. Get it from outline_groups_list.
- `id` (`string`, required): ID of the document. Accepts the document UUID or its urlId, the short code at the end of the document URL (for https://acme.getoutline.com/doc/welcome-hDYep1TPAM it is hDYep1TPAM). Get it from outline_documents_list or outline_documents_search.
- `permission` (`string`, optional): Access level for the group's document access: `read` (view only) or `read_write` (view and edit). One of: `read`, `read_write`.

Example input: `{"group_id":"<group_id>","id":"<id>"}`

### `outline_document_move`

Move Document · Write

Move a document to another collection, under another parent document, or to a new position.
Returns the moved documents and the affected collections.
Use outline_document_move to change where a document lives. Use outline_document_update to change its content.
With no parent_document_id, the document moves to the root of the collection.

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

Inputs:

- `id` (`string`, required): ID of the document. Accepts the document UUID or its urlId, the short code at the end of the document URL (for https://acme.getoutline.com/doc/welcome-hDYep1TPAM it is hDYep1TPAM). Get it from outline_documents_list or outline_documents_search.
- `collection_id` (`string`, optional): UUID of the collection to move the document into. Get it from outline_collections_list.
- `index` (`integer`, optional): Zero-based position among its new siblings. Example: 0 puts it first.
- `parent_document_id` (`string`, optional): UUID of the new parent document. Leave empty to move to the collection root. Use the `id` field returned by outline_document_get or outline_documents_list (a UUID, not the short urlId).

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

### `outline_document_restore`

Restore Document · Write

Restore an archived or deleted document, or roll a document back to an earlier revision.
Returns the restored document.
Use outline_document_restore to undo outline_document_archive or outline_document_delete. Use outline_revisions_list to find a revision ID to roll back to.

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

Inputs:

- `id` (`string`, required): ID of the document. Accepts the document UUID or its urlId, the short code at the end of the document URL (for https://acme.getoutline.com/doc/welcome-hDYep1TPAM it is hDYep1TPAM). Get it from outline_documents_list or outline_documents_search.
- `collection_id` (`string`, optional): UUID of the collection to restore the document into, if its original collection is gone. Get it from outline_collections_list.
- `revision_id` (`string`, optional): UUID of a revision to restore the document to. Get it from outline_revisions_list.

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

### `outline_document_templatize`

Create Template from Document · Write

Create a new template from an existing document's content.
Returns the new template with its id and title.
Use outline_document_templatize to reuse a document as a starting point. Use outline_templates_list to see existing templates.

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

Inputs:

- `id` (`string`, required): UUID of the document to turn into a template. Use the `id` field returned by outline_document_get or outline_documents_list (a UUID, not the short urlId).
- `publish` (`boolean`, required): Set to true to make the template available to other members; false keeps it as a draft only you can see.
- `collection_id` (`string`, optional): UUID of the collection the template belongs to. Leave empty for a workspace-wide template. Get it from outline_collections_list.

Example input: `{"id":"<id>","publish":true}`

### `outline_document_unpublish`

Unpublish Document · Write

Unpublish a document, turning it back into a draft and removing it from its collection.
Returns the document, now a draft.
Use outline_document_unpublish to take a page out of circulation while keeping it editable. Use outline_document_archive to keep it searchable but hidden.

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

Inputs:

- `id` (`string`, required): ID of the document. Accepts the document UUID or its urlId, the short code at the end of the document URL (for https://acme.getoutline.com/doc/welcome-hDYep1TPAM it is hDYep1TPAM). Get it from outline_documents_list or outline_documents_search.
- `detach` (`boolean`, optional): Set to true to also detach the draft from its collection.

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

### `outline_document_update`

Update Document · Write

Update an Outline document's title or text, or publish a draft. Text can replace the body, be appended or prepended, or replace one passage.
Returns the updated document with its id, title, text, revision number and url.
Use outline_document_update to edit content. Use outline_document_move to change its location, or outline_document_archive to retire it.

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

Inputs:

- `id` (`string`, required): ID of the document. Accepts the document UUID or its urlId, the short code at the end of the document URL (for https://acme.getoutline.com/doc/welcome-hDYep1TPAM it is hDYep1TPAM). Get it from outline_documents_list or outline_documents_search.
- `color` (`string`, optional): Hex color for the document icon. Example: #4E5C6E.
- `edit_mode` (`string`, optional): How text is applied: `replace` the body, `append` to the end, `prepend` to the start, or `patch` to replace the first occurrence of find_text with text. One of: `append`, `prepend`, `replace`, `patch`.
- `find_text` (`string`, optional): Existing text to replace with `text`. Required when edit_mode is `patch`. Example: Status: draft.
- `full_width` (`boolean`, optional): Set to true to display the document in full width, false for normal width.
- `icon` (`string`, optional): New icon: an emoji or an outline-icons name. Example: 📘.
- `last_revision` (`integer`, optional): Revision number you last read (the `revision` field of the document). If the document has changed since, Outline rejects the update with 409 instead of overwriting. Example: 12.
- `publish` (`boolean`, optional): Set to true to publish the document if it is still a draft.
- `text` (`string`, optional): Markdown text to write. How it is applied depends on edit_mode; by default it replaces the whole body. Example: ## Update\nShipped on time.
- `title` (`string`, optional): New title for the document. Example: Q3 Planning (final).

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

### `outline_document_user_add`

Add User to Document · Write

Give a user direct access to a document.
Returns the new membership and the user.
Use outline_document_user_add to share one document with a person. Use outline_collection_user_add for a whole collection, or outline_document_group_add for a group.

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

Inputs:

- `id` (`string`, required): ID of the document. Accepts the document UUID or its urlId, the short code at the end of the document URL (for https://acme.getoutline.com/doc/welcome-hDYep1TPAM it is hDYep1TPAM). Get it from outline_documents_list or outline_documents_search.
- `user_id` (`string`, required): UUID of the user to add. Get it from outline_users_list or outline_current_user_get.
- `permission` (`string`, optional): Access level for the user's document access: `read` (view only) or `read_write` (view and edit). One of: `read`, `read_write`.

Example input: `{"id":"<id>","user_id":"<user_id>"}`

### `outline_notification_update`

Update Notification · Write

Mark a notification as viewed or archived by setting the matching timestamp.
Returns the updated notification.
Use outline_notification_update to clear a notification. Get the ID from outline_notifications_list.

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

Inputs:

- `id` (`string`, required): UUID of the notification. Get it from outline_notifications_list.
- `archived_at` (`string`, optional): When the notification was archived, as an ISO 8601 date-time. Set it to archive the notification. Example: 2026-10-14T09:00:00Z.
- `viewed_at` (`string`, optional): When the notification was viewed, as an ISO 8601 date-time. Set it to mark the notification viewed. Example: 2026-10-14T09:00:00Z.

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

### `outline_pin_create`

Pin Document · Write

Pin a document to the top of a collection, or to the home screen. Pins are visible to every workspace member.
Returns the new pin with its id.
Use outline_pin_create to highlight a document for everyone. Use outline_star_create for a personal bookmark.

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

Inputs:

- `document_id` (`string`, required): UUID of the document to pin. Use the `id` field returned by outline_document_get or outline_documents_list (a UUID, not the short urlId).
- `collection_id` (`string`, optional): UUID of the collection to pin the document in. Leave empty to pin to the home screen. Get it from outline_collections_list.

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

### `outline_share_create`

Create Share Link · Write

Create a share link for a document or a collection. New links are unpublished, so only signed-in workspace members can open them.
Returns the share with its id and url. Asking again for the same item returns the existing share.
Use outline_share_create to get a link. Use outline_share_update with published=true to make it public.
Provide exactly one of document_id or collection_id.

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

Inputs:

- `collection_id` (`string`, optional): UUID of the collection to share. Provide this or document_id, not both. Get it from outline_collections_list.
- `document_id` (`string`, optional): UUID of the document to share. Provide this or collection_id, not both. Use the `id` field returned by outline_document_get or outline_documents_list (a UUID, not the short urlId).

Example input: `{}`

### `outline_share_update`

Update Share Link · Write

Publish or unpublish a share link, and set the title or icon shown on the public page.
Returns the updated share.
Use outline_share_update to make a link public (published=true) or private again. Use outline_share_revoke to disable it.

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

Inputs:

- `id` (`string`, required): UUID of the share. Get it from outline_shares_list or outline_share_create.
- `published` (`boolean`, required): Set to true to make the link public, so anyone with it can view without signing in; false to require sign-in.
- `icon_url` (`string`, optional): URL of an icon to show on the public page instead of the workspace logo. Example: https://example.com/logo.png.
- `title` (`string`, optional): Title shown on the public page instead of the document or collection title. Example: Acme Product Handbook.

Example input: `{"id":"<id>","published":true}`

### `outline_star_create`

Star Document or Collection · Write

Star a document or collection so it appears in the user's sidebar.
Returns the new star with its id.
Use outline_star_create to bookmark something. Use outline_star_delete to remove a star.
Provide document_id or collection_id.

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

Inputs:

- `collection_id` (`string`, optional): UUID of the collection to star. Provide this or document_id. Get it from outline_collections_list.
- `document_id` (`string`, optional): UUID of the document to star. Provide this or collection_id. Use the `id` field returned by outline_document_get or outline_documents_list (a UUID, not the short urlId).

Example input: `{}`

### `outline_subscription_create`

Subscribe to Document or Collection · Write

Subscribe the connected user to a document or collection so they get notified when it changes.
Returns the new subscription with its id.
Use outline_subscription_create to follow changes. Use outline_subscription_delete to stop.
Provide exactly one of document_id or collection_id.

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

Inputs:

- `collection_id` (`string`, optional): UUID of the collection to follow. Provide this or document_id. Get it from outline_collections_list.
- `document_id` (`string`, optional): UUID of the document to follow. Provide this or collection_id. Use the `id` field returned by outline_document_get or outline_documents_list (a UUID, not the short urlId).

Example input: `{}`

### `outline_collection_delete`

Delete Collection · Destructive

Delete a collection and every document in it. This cannot be undone.
Returns success: true.
Use outline_collection_delete only to remove a collection for good. Use outline_collection_archive to hide it and keep the option to restore.

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

Inputs:

- `id` (`string`, required): UUID of the collection. Get it from outline_collections_list.
- `reason` (`string`, optional): Optional reason for the deletion, stored as deprecatedReason. Example: Team disbanded.

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

### `outline_collection_group_remove`

Remove Group from Collection · Destructive

Revoke a group's access to a collection.
Returns success: true.
Use outline_collection_group_remove to stop sharing a collection with a team. Members may keep access through other memberships.

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

Inputs:

- `group_id` (`string`, required): UUID of the group to remove. Get it from outline_groups_list.
- `id` (`string`, required): UUID of the collection. Get it from outline_collections_list.

Example input: `{"group_id":"<group_id>","id":"<id>"}`

### `outline_collection_user_remove`

Remove User from Collection · Destructive

Remove a user's individual membership from a collection.
Returns success: true.
Use outline_collection_user_remove to revoke direct access. The user may keep access through a group or the collection's default permission.

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

Inputs:

- `id` (`string`, required): UUID of the collection. Get it from outline_collections_list.
- `user_id` (`string`, required): UUID of the user to remove. Get it from outline_users_list or outline_current_user_get.

Example input: `{"id":"<id>","user_id":"<user_id>"}`

### `outline_comment_delete`

Delete Comment · Destructive

Delete a comment. Deleting a top-level comment also deletes its replies.
Returns success: true.
Use outline_comment_delete to remove a comment. Use outline_comment_resolve to close a thread but keep it.

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

Inputs:

- `id` (`string`, required): UUID of the comment. Get it from outline_comments_list.

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

### `outline_document_delete`

Delete Document · Destructive

Delete a document by moving it to the trash, where it can be restored for 30 days, or delete it permanently.
Returns success: true.
Use outline_document_delete to remove a document. Use outline_document_archive to hide it without deleting, and outline_document_restore to undo a delete.

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

Inputs:

- `id` (`string`, required): ID of the document. Accepts the document UUID or its urlId, the short code at the end of the document URL (for https://acme.getoutline.com/doc/welcome-hDYep1TPAM it is hDYep1TPAM). Get it from outline_documents_list or outline_documents_search.
- `permanent` (`boolean`, optional): Set to true to destroy the document immediately with no way to recover it, instead of moving it to the trash.
- `reason` (`string`, optional): Optional reason for the deletion, stored as deprecatedReason. Example: Duplicate of the onboarding guide.

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

### `outline_document_group_remove`

Remove Group from Document · Destructive

Revoke a group's access to a document.
Returns success: true.
Use outline_document_group_remove to stop sharing a document with a team. Members may keep access through other memberships.

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

Inputs:

- `group_id` (`string`, required): UUID of the group to remove. Get it from outline_groups_list.
- `id` (`string`, required): ID of the document. Accepts the document UUID or its urlId, the short code at the end of the document URL (for https://acme.getoutline.com/doc/welcome-hDYep1TPAM it is hDYep1TPAM). Get it from outline_documents_list or outline_documents_search.

Example input: `{"group_id":"<group_id>","id":"<id>"}`

### `outline_document_user_remove`

Remove User from Document · Destructive

Remove a user's direct membership from a document.
Returns success: true.
Use outline_document_user_remove to revoke direct access. The user may keep access through the collection or a group; check with outline_document_users_list.

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

Inputs:

- `id` (`string`, required): ID of the document. Accepts the document UUID or its urlId, the short code at the end of the document URL (for https://acme.getoutline.com/doc/welcome-hDYep1TPAM it is hDYep1TPAM). Get it from outline_documents_list or outline_documents_search.
- `user_id` (`string`, required): UUID of the user to remove. Get it from outline_users_list or outline_current_user_get.

Example input: `{"id":"<id>","user_id":"<user_id>"}`

### `outline_pin_delete`

Unpin Document · Destructive

Remove a pin. The document itself is not affected.
Returns success: true.
Use outline_pin_delete to unpin. Get the pin ID from outline_pins_list.

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

Inputs:

- `id` (`string`, required): UUID of the pin (not the document). Get it from outline_pins_list.

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

### `outline_share_revoke`

Revoke Share Link · Destructive

Disable a share link so it can no longer be used.
Returns success: true.
Use outline_share_revoke to stop sharing. Use outline_share_update with published=false to keep the link for members only.

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

Inputs:

- `id` (`string`, required): UUID of the share to revoke. Get it from outline_shares_list.

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

### `outline_star_delete`

Remove Star · Destructive

Remove a star from the user's sidebar. The document or collection is not affected.
Returns success: true.
Use outline_star_delete to unstar. Get the star ID from outline_stars_list.

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

Inputs:

- `id` (`string`, required): UUID of the star (not the document). Get it from outline_stars_list.

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

### `outline_subscription_delete`

Unsubscribe · Destructive

Unsubscribe the connected user from a document or collection.
Returns success: true.
Use outline_subscription_delete to stop notifications. Get the subscription ID from outline_subscriptions_list.

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

Inputs:

- `id` (`string`, required): UUID of the subscription. Get it from outline_subscriptions_list.

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

## Related

Other Productivity connectors ([all 144](/agentkit/connectors/?category=productivity)):

- [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 |
