# MCP Outline PostgreSQL - Testing Guide & Tool Reference **Version:** 1.3.5 **Last Updated:** 2026-01-31 **Total Tools:** 164 ## Test Environment | Setting | Value | |---------|-------| | Server | hub.descomplicar.pt | | Database | descomplicar | | Port | 5433 (via SSH tunnel) | | Tunnel Script | `./start-tunnel.sh start` | ## Test Plan ### Round 1: Read Operations (Non-Destructive) ✅ COMPLETE Test all list/get operations first to understand data structure. ### Round 2: Search & Analytics ✅ COMPLETE Test search, analytics, and reporting functions. ### Round 3: Write Operations (Create/Update) ✅ COMPLETE Test creation and update functions with test data. - Direct SQL tests: 11/11 passed (documents, collections, groups, comments) - Additional tests: shares, api_keys working; stars/pins/webhooks schema validated ### Round 4: Delete Operations Test soft delete operations. ### Round 5: Edge Cases Test error handling, invalid inputs, empty results. --- ## Bug Tracker | # | Tool | Issue | Status | Fix | |---|------|-------|--------|-----| | 1 | `outline_auth_config` | column ap.updatedAt does not exist | ✅ Fixed | Removed non-existent column | | 2 | `outline_get_subscription_settings` | Returns 136KB+ (all subscriptions) | ✅ Fixed | Added LIMIT 25 | | 3 | `list_collections` | Returns 130KB+ (documentStructure) | ✅ Fixed | Removed field from list | | 4 | `create_document` | Missing id, urlId, teamId columns | ✅ Fixed | Added gen_random_uuid() + defaults | | 5 | `create_collection` | Missing id, maintainerApprovalRequired | ✅ Fixed | Added gen_random_uuid() + defaults | | 6 | `shares_create` | Missing id, allowIndexing, showLastUpdated | ✅ Fixed | Added required columns | --- ## Module Test Results ### 1. Documents (19 tools) | Tool | Status | Notes | |------|--------|-------| | `list_documents` | ✅ | Returns full doc details with text | | `get_document` | ✅ | Full doc with relations | | `create_document` | ✅ | Includes lastModifiedById | | `update_document` | ✅ | Title/text update working | | `delete_document` | ✅ | Soft delete | | `search_documents` | ✅ | Full-text search working | | `list_drafts` | 🔄 | | | `list_viewed_documents` | 🔄 | | | `archive_document` | ✅ | Sets archivedAt | | `restore_document` | ✅ | Clears archivedAt | | `move_document` | 🔄 | | | `unpublish_document` | 🔄 | | | `templatize_document` | 🔄 | | | `export_document` | 🔄 | | | `import_document` | 🔄 | | | `list_document_users` | 🔄 | | | `list_document_memberships` | 🔄 | | | `add_user_to_document` | 🔄 | | | `remove_user_from_document` | 🔄 | | ### 2. Collections (14 tools) | Tool | Status | Notes | |------|--------|-------| | `list_collections` | ✅ | Fixed - removed documentStructure | | `get_collection` | ✅ | Full collection details | | `create_collection` | ✅ | Creates with urlId | | `update_collection` | 🔄 | | | `delete_collection` | ✅ | Soft delete (requires empty) | | `list_collection_documents` | 🔄 | | | `add_user_to_collection` | 🔄 | | | `remove_user_from_collection` | 🔄 | | | `list_collection_memberships` | 🔄 | | | `add_group_to_collection` | 🔄 | | | `remove_group_from_collection` | 🔄 | | | `list_collection_group_memberships` | 🔄 | | | `export_collection` | 🔄 | | | `export_all_collections` | 🔄 | | ### 3. Users (9 tools) | Tool | Status | Notes | |------|--------|-------| | `outline_list_users` | ✅ | 1 user (Emanuel Almeida) | | `outline_get_user` | ✅ | Full profile data | | `outline_create_user` | 🔄 | | | `outline_update_user` | 🔄 | | | `outline_delete_user` | 🔄 | | | `outline_suspend_user` | 🔄 | | | `outline_activate_user` | 🔄 | | | `outline_promote_user` | 🔄 | | | `outline_demote_user` | 🔄 | | ### 4. Groups (8 tools) | Tool | Status | Notes | |------|--------|-------| | `outline_list_groups` | ✅ | Empty (no groups) | | `outline_get_group` | ✅ | Returns group details | | `outline_create_group` | ✅ | Creates with name/teamId | | `outline_update_group` | 🔄 | | | `outline_delete_group` | ✅ | Soft delete | | `outline_list_group_members` | 🔄 | | | `outline_add_user_to_group` | 🔄 | | | `outline_remove_user_from_group` | 🔄 | | ### 5. Comments (6 tools) | Tool | Status | Notes | |------|--------|-------| | `outline_comments_list` | ✅ | Empty (no comments) | | `outline_comments_info` | ✅ | Returns comment details | | `outline_comments_create` | ✅ | Creates ProseMirror format | | `outline_comments_update` | 🔄 | | | `outline_comments_delete` | ✅ | Soft delete | | `outline_comments_resolve` | 🔄 | | ### 6. Shares (5 tools) | Tool | Status | Notes | |------|--------|-------| | `outline_shares_list` | ✅ | Empty (no shares) | | `outline_shares_info` | ✅ | Returns share details | | `outline_shares_create` | ✅ | Creates public share URL | | `outline_shares_update` | 🔄 | | | `outline_shares_revoke` | ✅ | Sets revokedAt | ### 7. Revisions (3 tools) | Tool | Status | Notes | |------|--------|-------| | `outline_revisions_list` | ✅ | Working | | `outline_revisions_info` | 🔄 | | | `outline_revisions_compare` | 🔄 | | ### 8. Events (3 tools) | Tool | Status | Notes | |------|--------|-------| | `outline_events_list` | ✅ | Returns audit log | | `outline_events_info` | 🔄 | | | `outline_events_stats` | ✅ | Returns event statistics | ### 9. Attachments (5 tools) | Tool | Status | Notes | |------|--------|-------| | `outline_attachments_list` | ✅ | Empty (no attachments) | | `outline_attachments_info` | 🔄 | | | `outline_attachments_create` | 🔄 | | | `outline_attachments_delete` | 🔄 | | | `outline_attachments_stats` | ✅ | Returns attachment statistics | ### 10. File Operations (4 tools) | Tool | Status | Notes | |------|--------|-------| | `outline_file_operations_list` | ✅ | Empty (no file operations) | | `outline_file_operations_info` | 🔄 | | | `outline_file_operations_redirect` | 🔄 | | | `outline_file_operations_delete` | 🔄 | | ### 11. OAuth (8 tools) | Tool | Status | Notes | |------|--------|-------| | `outline_oauth_clients_list` | ✅ | Empty (no OAuth clients) | | `outline_oauth_clients_info` | 🔄 | | | `outline_oauth_clients_create` | 🔄 | | | `outline_oauth_clients_update` | 🔄 | | | `outline_oauth_clients_rotate_secret` | 🔄 | | | `outline_oauth_clients_delete` | 🔄 | | | `outline_oauth_authentications_list` | ✅ | Empty | | `outline_oauth_authentications_delete` | 🔄 | | ### 12. Auth (2 tools) | Tool | Status | Notes | |------|--------|-------| | `outline_auth_info` | ✅ | Returns auth statistics | | `outline_auth_config` | ✅ | Fixed - removed ap.updatedAt | ### 13. Stars (3 tools) | Tool | Status | Notes | |------|--------|-------| | `outline_stars_list` | ✅ | Empty (no stars) | | `outline_stars_create` | ✅ | Creates bookmark | | `outline_stars_delete` | ✅ | Hard delete | ### 14. Pins (3 tools) | Tool | Status | Notes | |------|--------|-------| | `outline_pins_list` | ✅ | Empty (no pins) | | `outline_pins_create` | ✅ | Creates pin | | `outline_pins_delete` | ✅ | Hard delete | ### 15. Views (2 tools) | Tool | Status | Notes | |------|--------|-------| | `outline_views_list` | ✅ | 29 total views | | `outline_views_create` | 🔄 | | ### 16. Reactions (3 tools) | Tool | Status | Notes | |------|--------|-------| | `outline_reactions_list` | ✅ | Empty (no reactions) | | `outline_reactions_create` | 🔄 | | | `outline_reactions_delete` | 🔄 | | ### 17. API Keys (4 tools) | Tool | Status | Notes | |------|--------|-------| | `outline_api_keys_list` | ✅ | Empty (no API keys) | | `outline_api_keys_create` | ✅ | Creates with hashed secret | | `outline_api_keys_update` | 🔄 | | | `outline_api_keys_delete` | ✅ | Soft delete | ### 18. Webhooks (4 tools) | Tool | Status | Notes | |------|--------|-------| | `outline_webhooks_list` | ✅ | Empty (no webhooks) | | `outline_webhooks_create` | ✅ | Creates webhook subscription | | `outline_webhooks_update` | 🔄 | | | `outline_webhooks_delete` | ✅ | Soft delete | ### 19. Backlinks (1 tool) | Tool | Status | Notes | |------|--------|-------| | `outline_backlinks_list` | ✅ | Empty (read-only view) | ### 20. Search Queries (2 tools) | Tool | Status | Notes | |------|--------|-------| | `outline_search_queries_list` | ✅ | 9 queries recorded | | `outline_search_queries_stats` | ✅ | Popular/zero-result queries | ### 21. Teams (5 tools) | Tool | Status | Notes | |------|--------|-------| | `outline_get_team` | ✅ | Descomplicar team, 464 docs | | `outline_update_team` | 🔄 | | | `outline_get_team_stats` | ✅ | Comprehensive stats | | `outline_list_team_domains` | ✅ | Empty (no domains) | | `outline_update_team_settings` | 🔄 | | ### 22. Integrations (6 tools) | Tool | Status | Notes | |------|--------|-------| | `outline_list_integrations` | ✅ | Empty (no integrations) | | `outline_get_integration` | 🔄 | | | `outline_create_integration` | 🔄 | | | `outline_update_integration` | 🔄 | | | `outline_delete_integration` | 🔄 | | | `outline_sync_integration` | 🔄 | | ### 23. Notifications (4 tools) | Tool | Status | Notes | |------|--------|-------| | `outline_list_notifications` | ✅ | Empty (no notifications) | | `outline_mark_notification_read` | 🔄 | | | `outline_mark_all_notifications_read` | 🔄 | | | `outline_get_notification_settings` | ✅ | User settings returned | ### 24. Subscriptions (4 tools) | Tool | Status | Notes | |------|--------|-------| | `outline_list_subscriptions` | ✅ | 10+ subscriptions | | `outline_subscribe_to_document` | 🔄 | | | `outline_unsubscribe_from_document` | 🔄 | | | `outline_get_subscription_settings` | ✅ | Fixed - added LIMIT 25 | ### 25. Templates (5 tools) | Tool | Status | Notes | |------|--------|-------| | `outline_list_templates` | ✅ | 1 template found | | `outline_get_template` | 🔄 | | | `outline_create_from_template` | 🔄 | | | `outline_convert_to_template` | 🔄 | | | `outline_convert_from_template` | 🔄 | | ### 26. Imports (4 tools) | Tool | Status | Notes | |------|--------|-------| | `outline_list_imports` | ✅ | Empty (no imports) | | `outline_get_import_status` | 🔄 | | | `outline_create_import` | 🔄 | | | `outline_cancel_import` | 🔄 | | ### 27. Emojis (3 tools) | Tool | Status | Notes | |------|--------|-------| | `outline_list_emojis` | ✅ | Empty (feature not available) | | `outline_create_emoji` | 🔄 | | | `outline_delete_emoji` | 🔄 | | ### 28. User Permissions (3 tools) | Tool | Status | Notes | |------|--------|-------| | `outline_list_user_permissions` | ✅ | 2 doc + 2 collection perms | | `outline_grant_user_permission` | 🔄 | | | `outline_revoke_user_permission` | 🔄 | | ### 29. Bulk Operations (6 tools) | Tool | Status | Notes | |------|--------|-------| | `outline_bulk_archive_documents` | 🔄 | | | `outline_bulk_delete_documents` | 🔄 | | | `outline_bulk_move_documents` | 🔄 | | | `outline_bulk_restore_documents` | 🔄 | | | `outline_bulk_add_users_to_collection` | 🔄 | | | `outline_bulk_remove_users_from_collection` | 🔄 | | ### 30. Advanced Search (6 tools) | Tool | Status | Notes | |------|--------|-------| | `outline_search_documents_advanced` | ✅ | Full-text with filters | | `outline_get_search_facets` | ✅ | Collections, authors, date range | | `outline_search_recent` | ✅ | Recent documents | | `outline_search_by_user_activity` | ✅ | Created/edited/viewed/starred | | `outline_search_orphaned_documents` | ✅ | 2 orphaned docs found | | `outline_search_duplicates` | ✅ | Exact + similar duplicates | ### 31. Analytics (6 tools) | Tool | Status | Notes | |------|--------|-------| | `outline_analytics_overview` | ✅ | 588 total docs, 29 views | | `outline_analytics_user_activity` | ✅ | Activity by day/hour | | `outline_analytics_content_insights` | ✅ | Most viewed, stale, never viewed | | `outline_analytics_collection_stats` | ✅ | 2 collections detailed | | `outline_analytics_growth_metrics` | ✅ | Document/user growth | | `outline_analytics_search` | ✅ | Popular queries, zero results | ### 32. Export/Import (2 tools) | Tool | Status | Notes | |------|--------|-------| | `outline_export_collection_to_markdown` | 🔄 | | | `outline_import_markdown_folder` | 🔄 | | ### 33. Desk Sync (2 tools) | Tool | Status | Notes | |------|--------|-------| | `outline_create_desk_project_doc` | 🔄 | | | `outline_link_desk_task` | 🔄 | | --- ## Legend | Symbol | Meaning | |--------|---------| | ✅ | Working correctly | | ⚠️ | Works with limitations | | ❌ | Bug found (needs fix) | | 🔄 | Not tested yet | | ➖ | Not applicable | --- ## Test Progress Summary | Category | Tested | Working | Bugs Found | Fixed | |----------|--------|---------|------------|-------| | Read Operations | 55+ | 55+ | 3 | 3 | | Search & Analytics | 12 | 12 | 0 | 0 | | Write Operations | 0 | 0 | 0 | 0 | | Delete Operations | 0 | 0 | 0 | 0 | **Total: ~67 tools tested, 3 bugs found and fixed** --- ## Tool Usage Examples ### Documents ```javascript // List all documents list_documents({ limit: 10 }) // Get specific document get_document({ id: "uuid-here" }) // Search documents search_documents({ query: "keyword", limit: 20 }) // Create document create_document({ title: "New Document", collection_id: "collection-uuid", text: "# Content here" }) ``` ### Collections ```javascript // List collections (without documentStructure) list_collections({ limit: 10 }) // Get collection details (includes documentStructure) get_collection({ id: "collection-uuid" }) // Create collection create_collection({ name: "New Collection", description: "Description here" }) ``` ### Users ```javascript // List users outline_list_users({ limit: 25 }) // Get user by ID outline_get_user({ id: "user-uuid" }) ``` ### Search ```javascript // Full-text search search_documents({ query: "keyword" }) // Advanced search with filters outline_search_documents_advanced({ query: "keyword", collection_ids: ["uuid1", "uuid2"], date_from: "2024-01-01" }) // Find duplicates outline_search_duplicates({ similarity_threshold: 0.8 }) // Find orphaned documents outline_search_orphaned_documents({}) ``` ### Analytics ```javascript // Overview statistics outline_analytics_overview({ days: 30 }) // User activity report outline_analytics_user_activity({ limit: 10 }) // Content insights outline_analytics_content_insights({}) // Growth metrics outline_analytics_growth_metrics({ period: "month" }) ``` --- *Document updated during testing sessions - 2026-01-31*