{
  "version": "2",
  "generatedAt": "2026-11-03T22:49:39.280Z",
  "listing": {
    "slug": "outline--outline",
    "name": "Outline",
    "tagline": "Team knowledge base with a documented REST API and an in-repo MCP route, self-hostable under BUSL.",
    "shortTagline": "Team knowledge base",
    "description": "Outline is a collaborative wiki for teams: collections, documents, comments, templates, and integrations, with a hosted edition at getoutline.com. The server ships an MCP endpoint (server/routes/mcp) beside the REST API, so an agent can read and write documents on either the cloud or a self-hosted instance. Self-hosting is free under the Business Source License, which forbids reselling it as a document service.",
    "capabilities": [
      "adaptable",
      "operable"
    ],
    "vertical": "notes-knowledge",
    "alternativeTo": [
      "Notion",
      "Confluence"
    ],
    "shape": "business-app",
    "formFactor": "web-app",
    "executionModel": "deterministic",
    "provenance": "mixed",
    "codeStack": {
      "languages": [
        "TypeScript"
      ],
      "frameworks": [
        "React",
        "Node.js",
        "Koa",
        "Sequelize"
      ],
      "packageManager": "yarn",
      "database": [
        "PostgreSQL",
        "Redis"
      ],
      "hostingTarget": [
        "docker"
      ]
    },
    "modelStack": null,
    "repos": [
      {
        "url": "https://github.com/outline/outline",
        "owner": "outline",
        "name": "outline",
        "license": "BUSL-1.1",
        "stars": 40428,
        "lastCommit": "2026-09-03"
      }
    ],
    "interface": {
      "kind": "mcp",
      "url": "https://github.com/outline/outline/tree/main/server/routes/mcp",
      "official": true,
      "hosted": "both"
    },
    "operability": "official",
    "recommendedWrapper": null,
    "reach": [
      {
        "job": "Create, read, update, and search documents",
        "reachable": true,
        "evidence": "server/routes/mcp/index.ts imports tools/documents; tool names not read individually"
      },
      {
        "job": "Organize documents into collections",
        "reachable": true,
        "evidence": "tools/collections module"
      },
      {
        "job": "Comment on documents",
        "reachable": true,
        "evidence": "tools/comments module"
      },
      {
        "job": "Attach files",
        "reachable": true,
        "evidence": "tools/attachments module"
      },
      {
        "job": "Use and manage templates",
        "reachable": true,
        "evidence": "tools/templates module"
      },
      {
        "job": "Look up users",
        "reachable": true,
        "evidence": "tools/users module"
      },
      {
        "job": "Fetch a document by URL or id",
        "reachable": true,
        "evidence": "tools/fetch module"
      },
      {
        "job": "Share documents publicly and manage permissions",
        "reachable": null,
        "evidence": "no shares or memberships tool module seen; REST API has shares.* and collections.add_user"
      },
      {
        "job": "Slack, GitHub, Linear, Notion integrations",
        "reachable": false,
        "evidence": "configured with env vars and OAuth in the UI; no MCP tool module"
      },
      {
        "job": "AI question answering",
        "reachable": false,
        "evidence": "hosted-plan feature per getoutline.com/pricing; not an MCP tool"
      }
    ],
    "editions": [
      {
        "name": "Self-hosted",
        "price": null,
        "open": false,
        "distributions": [
          {
            "kind": "source",
            "url": "https://github.com/outline/outline"
          },
          {
            "kind": "container",
            "url": "https://hub.docker.com/r/outlinewiki/outline",
            "command": "docker compose up -d"
          }
        ]
      },
      {
        "name": "Starter",
        "price": {
          "amount": 10,
          "currency": "USD",
          "period": "month"
        },
        "open": false,
        "distributions": [
          {
            "kind": "hosted",
            "url": "https://www.getoutline.com/pricing"
          }
        ]
      },
      {
        "name": "Team",
        "price": {
          "amount": 79,
          "currency": "USD",
          "period": "month"
        },
        "open": false,
        "distributions": [
          {
            "kind": "hosted",
            "url": "https://www.getoutline.com/pricing"
          }
        ]
      },
      {
        "name": "Business",
        "price": {
          "amount": 249,
          "currency": "USD",
          "period": "month"
        },
        "open": false,
        "distributions": [
          {
            "kind": "hosted",
            "url": "https://www.getoutline.com/pricing"
          }
        ]
      }
    ],
    "skills": {
      "kind": "none",
      "paths": [],
      "install": null,
      "note": "No SKILL.md, Claude Code plugin, or published skill found in the repo."
    },
    "customization": {
      "summary": ".env.sample documents the whole surface: SECRET_KEY and UTILS_SECRET, DATABASE_URL and REDIS_URL, URL and PORT, FILE_STORAGE (local or s3 with AWS_S3_* vars), one or more auth providers (OIDC_*, GOOGLE_*, AZURE_*, GITHUB_*), SMTP_*, and per-integration client ids for Slack, Linear, Notion, Figma, Dropbox, Iframely. docker-compose.yml wires Postgres and Redis. No code edits for a standard deployment.",
      "envVars": [
        "SECRET_KEY",
        "UTILS_SECRET",
        "DATABASE_URL",
        "REDIS_URL",
        "URL",
        "PORT",
        "FORCE_HTTPS",
        "FILE_STORAGE",
        "FILE_STORAGE_LOCAL_ROOT_DIR",
        "AWS_S3_UPLOAD_BUCKET_NAME",
        "AWS_ACCESS_KEY_ID",
        "AWS_SECRET_ACCESS_KEY",
        "OIDC_CLIENT_ID",
        "OIDC_CLIENT_SECRET",
        "OIDC_AUTH_URI",
        "OIDC_TOKEN_URI",
        "OIDC_USERINFO_URI",
        "GOOGLE_CLIENT_ID",
        "GOOGLE_CLIENT_SECRET",
        "SLACK_CLIENT_ID",
        "SLACK_CLIENT_SECRET",
        "SMTP_SERVICE",
        "SMTP_USERNAME",
        "SMTP_PASSWORD",
        "SMTP_FROM_EMAIL",
        "DEFAULT_LANGUAGE",
        "RATE_LIMITER_ENABLED",
        "IFRAMELY_URL",
        "LOG_LEVEL"
      ],
      "configFiles": [
        ".env",
        "docker-compose.yml"
      ],
      "promptFiles": [],
      "effort": "config-only",
      "editCount": 31
    },
    "useWhen": [
      "your team needs a wiki with SSO and you want an agent to draft and file docs into the right collection",
      "you want Notion-style docs on your own Postgres without a per-seat bill"
    ],
    "accounts": [
      "an OIDC, Google, Azure, GitHub, GitLab, Discord, or Slack identity provider (at least one is required for sign-in)",
      "S3-compatible storage (optional)"
    ],
    "active": true,
    "lastActivity": "2026-09-03",
    "gotchas": [
      "BUSL-1.1 Additional Use Grant forbids offering Outline as a Document Service to third parties; converts to Apache-2.0 on 2030-09-01",
      "Requires an external identity provider; there is no local email-and-password login",
      "Maintainers reject AI-generated pull requests (README)",
      "MCP tools are filtered by OAuth scopes; the client needs an OAuth token, not a plain API key"
    ],
    "fit": {
      "adaptable": 2,
      "operable": 3
    },
    "evidence": {
      "formFactor": "README: React and Node.js web app; container images on Docker Hub",
      "executionModel": "no model SDK in .env.sample; AI question answering is a hosted-plan feature",
      "operability": "server/routes/mcp in the outline/outline repo; tool modules documents, collections, comments, attachments, templates, users, fetch",
      "effort": ".env.sample with 90+ documented variables; docs.getoutline.com/s/hosting",
      "editions": "getoutline.com/pricing: Starter $10, Team $79, Business $249 per month; LICENSE: BUSL-1.1 with free self-host grant",
      "active": "pushedAt 2026-09-03",
      "provenance": "CLAUDE.md and AGENTS.md at root; project dates to 2016"
    },
    "confidence": {
      "formFactor": 0.95,
      "executionModel": 0.7,
      "operability": 0.9,
      "effort": 0.9,
      "reach": 0.7,
      "editions": 0.85,
      "provenance": 0.4
    },
    "openQuestions": [
      "Read the exact MCP tool names and OAuth scopes in server/routes/mcp/tools",
      "Is AI question answering available self-hosted, and which provider key does it need?",
      "Are the cloud prices per workspace or per seat band?"
    ],
    "sources": [
      {
        "url": "https://github.com/outline/outline",
        "foundBy": "sourcing:notes-knowledge:curated"
      },
      {
        "url": "https://www.getoutline.com/pricing",
        "foundBy": "analysis"
      },
      {
        "url": "https://github.com/outline/outline/blob/main/LICENSE",
        "foundBy": "analysis"
      }
    ],
    "research": {
      "stage": "verified",
      "verdict": "unverified",
      "reason": "Official MCP route and REST API on a real product with a hosted edition; config-only self-host, but BUSL is source-available rather than open, which caps Adaptable at 2.",
      "disputed": []
    },
    "url": "apps/outline--outline.html",
    "coverage": "partial",
    "paid": true,
    "source": "research/verified/outline--outline.json"
  }
}
