{
  "version": "2",
  "generatedAt": "2026-11-06T20:51:57.517Z",
  "listing": {
    "slug": "timothepoznanski--poznote",
    "name": "Poznote",
    "tagline": "Self-hosted note-taking app with a REST API and an MCP server of about 60 tools.",
    "shortTagline": "Self-hosted notes, MCP",
    "description": "Poznote is a PHP and SQLite note app with markdown and HTML notes, task lists, reminders, workspaces, sharing and revisions. It ships a documented REST API and a separate mcp-server container in the same docker-compose.yml. MCP tools cover notes, tasks, folders, snapshots, backups and app settings.",
    "capabilities": [
      "adaptable",
      "operable"
    ],
    "vertical": "notes-knowledge",
    "alternativeTo": [
      "Notion",
      "Obsidian",
      "Evernote",
      "OneNote"
    ],
    "shape": "product",
    "formFactor": "web-app",
    "executionModel": "deterministic",
    "provenance": "unknown",
    "codeStack": {
      "languages": [
        "PHP",
        "JavaScript",
        "Python"
      ],
      "frameworks": [],
      "packageManager": null,
      "database": [
        "SQLite"
      ],
      "hostingTarget": [
        "docker"
      ]
    },
    "modelStack": null,
    "repos": [
      {
        "url": "https://github.com/timothepoznanski/poznote",
        "owner": "timothepoznanski",
        "name": "poznote",
        "license": "MIT",
        "stars": 996,
        "lastCommit": "2026-11-05"
      }
    ],
    "interface": {
      "kind": "mcp",
      "url": "https://github.com/timothepoznanski/poznote/blob/main/docs/MCP-SERVER.md",
      "official": true,
      "hosted": "local"
    },
    "operability": "official",
    "recommendedWrapper": null,
    "reach": [
      {
        "job": "Create, read, update, delete and search notes",
        "reachable": true,
        "evidence": "MCP tools create_note, get_note, update_note, delete_note, search_notes, list_notes"
      },
      {
        "job": "Manage task lists and subtasks",
        "reachable": true,
        "evidence": "MCP tools list_tasks, add_task, update_task, complete_task, add_subtask"
      },
      {
        "job": "Set reminders",
        "reachable": true,
        "evidence": "MCP tools set_reminder, get_reminder, remove_reminder, list_reminders"
      },
      {
        "job": "Organize folders and workspaces",
        "reachable": true,
        "evidence": "MCP tools create_folder, move_folder, create_workspace, move_note"
      },
      {
        "job": "Attach files",
        "reachable": true,
        "evidence": "MCP tools add_attachment, list_attachments (MAX_ATTACHMENT_BYTES is 25 MB in server.py)"
      },
      {
        "job": "Browse and restore note revisions",
        "reachable": true,
        "evidence": "MCP tools list_snapshots, get_snapshot, restore_snapshot"
      },
      {
        "job": "Share notes publicly",
        "reachable": true,
        "evidence": "MCP tools share_note, unshare_note, list_shared"
      },
      {
        "job": "Start notes from templates and diaries",
        "reachable": true,
        "evidence": "MCP tools list_templates, create_note from_template_id, create_folder is_diary"
      },
      {
        "job": "Backups, Git sync and app settings",
        "reachable": true,
        "evidence": "MCP tools create_backup, restore_backup, git_push, git_pull, update_app_setting (admin scope)"
      },
      {
        "job": "Manage users, OIDC sign-in and webhooks",
        "reachable": false,
        "evidence": "No such tool in TOOL_SCOPES in server.py; update_app_setting has no documented OIDC or webhook keys. REST /api/v1/admin/users covers users but not through MCP; OIDC and webhooks sit under Settings > Admin Tools with no REST section"
      }
    ],
    "editions": [
      {
        "name": "Free",
        "price": null,
        "open": true,
        "distributions": [
          {
            "kind": "source",
            "url": "https://github.com/timothepoznanski/poznote"
          },
          {
            "kind": "container",
            "url": "https://github.com/timothepoznanski/poznote/pkgs/container/poznote",
            "command": "curl -o .env https://raw.githubusercontent.com/timothepoznanski/poznote/main/.env.template && curl -o docker-compose.yml https://raw.githubusercontent.com/timothepoznanski/poznote/main/docker-compose.yml && docker compose pull && docker compose up -d"
          },
          {
            "kind": "one-click",
            "url": "https://www.pikapods.com/apps/poznote"
          }
        ]
      }
    ],
    "skills": {
      "kind": "none",
      "paths": [],
      "install": null,
      "note": "No skill found; agent access is the MCP server."
    },
    "customization": {
      "summary": "The .env file holds deployment values: HTTP_WEB_PORT, OIDC client credentials, MCP auth mode, token and scope. The README says day-to-day behavior is set in the Settings UI, and templates are ordinary notes. App settings can be changed through the API or the update_app_setting MCP tool.",
      "envVars": [
        "HTTP_WEB_PORT",
        "POZNOTE_MCP_PORT",
        "POZNOTE_MCP_AUTH_TOKEN",
        "POZNOTE_MCP_SCOPE",
        "POZNOTE_MCP_AUTH_PROVIDER",
        "POZNOTE_USER_ID",
        "POZNOTE_OIDC_CLIENT_ID",
        "POZNOTE_OIDC_CLIENT_SECRET",
        "POZNOTE_SETTINGS_PASSWORD"
      ],
      "configFiles": [
        ".env.template",
        "docker-compose.yml"
      ],
      "promptFiles": [],
      "effort": "config-only",
      "surfaceKind": "admin-ui",
      "editCount": 11
    },
    "useWhen": [
      "you want a self-hosted notes app your coding agent can read and write over MCP",
      "you want read-only, write or admin scopes on what an agent may touch in your notes"
    ],
    "accounts": [],
    "active": true,
    "lastActivity": "2026-11-05",
    "gotchas": [
      "MCP is HTTP only and published on 127.0.0.1 by default; set POZNOTE_MCP_AUTH_TOKEN before exposing it",
      "In classic mode any client that reaches the MCP port can act on any profile",
      "MCP tools above POZNOTE_MCP_SCOPE are not registered at all",
      "Local accounts start with default passwords listed in docs/API-REST.md; change them before exposing Poznote",
      "PikaPods and the other hosts on poznote.com/hosting.html are third parties with their own prices"
    ],
    "fit": {
      "adaptable": 2,
      "operable": 3
    },
    "evidence": {
      "formFactor": "README: Docker-hosted web app with PWA, Chrome extension and mobile share",
      "executionModel": "notes, tasks and sync are deterministic; the optional AI Assistant calls a model you configure",
      "operability": "docs/MCP-SERVER.md lists 62 tools and TOOL_SCOPES in mcp-server/src/poznote_mcp/server.py has the same 62 (24 read, 25 write, 13 admin) at 6.141.1; mcp-server service in docker-compose.yml; docs/API-REST.md documents Basic Auth and app passwords",
      "effort": "README Change Settings: .env is for deployment values and most settings are in the interface; .env.template read in full",
      "editions": "MIT repo; README says free; hosting partners are third-party, no paid edition from the Builder seen",
      "active": "latest commit 2026-11-05; release 6.141.1 on 2026-11-05",
      "alternativeTo": "README heading: alternative to Notion, Obsidian, Evernote, or OneNote. This is the Builder's own claim. The README documents an Obsidian vault import; it documents no Notion, Evernote or OneNote import"
    },
    "confidence": {
      "formFactor": 0.9,
      "executionModel": 0.85,
      "operability": 0.9,
      "effort": 0.7,
      "reach": 0.95,
      "editions": 0.85
    },
    "openQuestions": [],
    "sources": [
      {
        "url": "https://poznote.com",
        "foundBy": "sourcing:notes-knowledge:github"
      },
      {
        "url": "https://github.com/timothepoznanski/poznote/blob/main/docs/MCP-SERVER.md",
        "foundBy": "analysis:notes-knowledge"
      }
    ],
    "published": true,
    "lastCheckedAt": "2026-11-06",
    "research": {
      "stage": "verified",
      "verdict": "dispute",
      "reason": "Gates pass: MIT, commits and release on 2026-11-05, 996 stars, outside issue authors. MCP server is in the Builder's repo with 62 tools, so about 60 holds. Effort is config-only on deployment values only, so it carries admin-ui and stays disputed.",
      "disputed": [
        {
          "field": "customization.effort",
          "reason": "Named env vars set ports, SSO and MCP auth. Note behavior, display, custom CSS and AI options are Settings UI values in the database, so config-only covers the deployment step only."
        }
      ]
    },
    "url": "apps/timothepoznanski--poznote.html",
    "coverage": "partial",
    "paid": false,
    "source": "research/verified/timothepoznanski--poznote.json"
  }
}
