Skip to content
Scalekit Docs
Talk to an Engineer Dashboard

Connect AI agents to Outline

Scalekit connector
Open markdown

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.

Tools
82
What they doRead · write · destructive
42 · 29 · 1142 read29 write11 destructive
Users sign in with
OAuth app
Your own Outline app

Setup

  1. Install the SDK

    Terminal window
    npm install @scalekit-sdk/node dotenv
  2. Set your credentials

    Add your Scalekit credentials to your .env file. Find values in app.scalekit.com > Developers > API Credentials.

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

  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

    quickstart.mts
    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)
    Terminal window
    npx tsx quickstart.mts

    Each user signs in once. See Authorize a user for the full flow and statuses.

Tools

Pass the exact name to execute_tool
Try in PlaygroundRequest a tool
  • outline_attachments_listList files attached in the workspace, optionally for one document or uploaded by one user.Read-only

    List Attachments

    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.

    Inputs

    directionstring
    Sort order: ASC (oldest or A first) or DESC (newest or Z first).one of ASCDESC
    document_idstring
    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).
    limitinteger
    Maximum number of results to return in this page. Outline's default is 25; up to 100 per page. Example: 25.
    offsetinteger
    Number of results to skip, for paging. Use the previous offset plus limit to get the next page. Example: 25.
    sortstring
    Field to sort results by, such as updatedAt, createdAt, title or index. Example: updatedAt.
    user_idstring
    UUID of a user whose uploads to list. Get it from outline_users_list or outline_current_user_get.
  • outline_collection_getGet one collection by its ID.Read-only

    Get Collection

    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.

    Inputs

    idstringrequired
    UUID of the collection. Get it from outline_collections_list.
  • outline_collection_group_memberships_listList the groups that have access to a collection and their permission.Read-only

    List Collection Group Memberships

    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.

    Inputs

    idstringrequired
    UUID of the collection. Get it from outline_collections_list.
    limitinteger
    Maximum number of results to return in this page. Outline's default is 25; up to 100 per page. Example: 25.
    offsetinteger
    Number of results to skip, for paging. Use the previous offset plus limit to get the next page. Example: 25.
    permissionstring
    Only return memberships with this access level: `read` or `read_write`.one of readread_write
    querystring
    Text to filter results by group name. Example: developers.
  • outline_collection_memberships_listList users with an individual membership on a collection and their permission.Read-only

    List Collection Memberships

    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.

    Inputs

    idstringrequired
    UUID of the collection. Get it from outline_collections_list.
    limitinteger
    Maximum number of results to return in this page. Outline's default is 25; up to 100 per page. Example: 25.
    offsetinteger
    Number of results to skip, for paging. Use the previous offset plus limit to get the next page. Example: 25.
    permissionstring
    Only return memberships with this access level: `read` or `read_write`.one of readread_write
    querystring
    Text to filter results by user name. Example: jenny.
  • outline_collection_structure_getGet the document tree of a collection: every published document and how they nest.Read-only

    Get Collection Document Tree

    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.

    Inputs

    idstringrequired
    UUID of the collection. Get it from outline_collections_list.
  • outline_collections_listList the collections the user can access, optionally filtered by name.Read-only

    List Collections

    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.

    Inputs

    directionstring
    Sort order: ASC (oldest or A first) or DESC (newest or Z first).one of ASCDESC
    filtersarray
    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"}].
    limitinteger
    Maximum number of results to return in this page. Outline's default is 25; up to 100 per page. Example: 25.
    name_containsstring
    Only return collections whose name contains this text. Example: Engineering.
    offsetinteger
    Number of results to skip, for paging. Use the previous offset plus limit to get the next page. Example: 25.
    sortstring
    Field to sort results by, such as updatedAt, createdAt, title or index. Example: updatedAt.
  • outline_comment_getGet one comment by ID.Read-only

    Get Comment

    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.

    Inputs

    idstringrequired
    UUID of the comment. Get it from outline_comments_list.
    include_anchor_textboolean
    Set to true to include the document text the comment is attached to, if it is an inline comment.
  • outline_comments_listList comments on a document or across a collection.Read-only

    List Comments

    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.

    Inputs

    collection_idstring
    UUID of a collection to list comments for. Get it from outline_collections_list.
    directionstring
    Sort order: ASC (oldest or A first) or DESC (newest or Z first).one of ASCDESC
    document_idstring
    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_textboolean
    Set to true to include the document text each inline comment is attached to.
    limitinteger
    Maximum number of results to return in this page. Outline's default is 25; up to 100 per page. Example: 25.
    offsetinteger
    Number of results to skip, for paging. Use the previous offset plus limit to get the next page. Example: 25.
    sortstring
    Field to sort results by, such as updatedAt, createdAt, title or index. Example: updatedAt.