{
  "registry_version": "1.3.0",
  "last_updated": "2026-08-09",
  "honesty": {
    "downloads": "Not tracked.",
    "rating": "Not tracked.",
    "verified": "false until contracts + human review.",
    "core_duplicates": "browser-stealth, session-health, multi-account are thin core wrappers (v1.3.0+)."
  },
  "plugins": [
    {
      "name": "auto-refresh",
      "version": "1.2.0",
      "description": "CloakBrowser live session revalidation using site_config / target_url",
      "author": "Tokenade Team",
      "category": "authentication",
      "tags": [
        "refresh",
        "daemon",
        "auto",
        "browser",
        "session",
        "cloak"
      ],
      "type": "session_refresh",
      "entry_point": "plugin.py",
      "entry_class": "AutoRefreshPlugin",
      "dependencies": [],
      "min_version": "1.0.0",
      "verified": false,
      "icon": "🔄",
      "api_version": "1.3.0",
      "browser": {
        "default": "cloak",
        "allowed": [
          "cloak",
          "playwright",
          "brave",
          "firefox",
          "edge",
          "chrome"
        ],
        "notes": "Chrome is last-choice. CloakBrowser is project default for automation."
      },
      "run": {
        "enabled": true,
        "default_method": "process",
        "methods": {
          "process": {
            "arguments": {
              "session_file": {
                "type": "path",
                "required": true
              },
              "site_config": {
                "type": "path",
                "required": false,
                "default": null
              },
              "target_url": {
                "type": "string",
                "required": false,
                "default": null
              },
              "output": {
                "type": "path",
                "required": false,
                "default": null
              },
              "browser": {
                "type": "string",
                "required": false,
                "default": "cloak"
              },
              "headless": {
                "type": "bool",
                "required": false,
                "default": true
              },
              "wait_seconds": {
                "type": "int",
                "required": false,
                "default": 8
              }
            }
          }
        }
      }
    },
    {
      "name": "bulk-export",
      "version": "1.0.0",
      "description": "Export all sessions from all browsers at once",
      "author": "Tokenade Team",
      "category": "utility",
      "tags": [
        "export",
        "bulk",
        "batch",
        "utility"
      ],
      "type": "export_format",
      "entry_point": "plugin.py",
      "entry_class": "BulkExportPlugin",
      "dependencies": [],
      "min_version": "1.0.0",
      "verified": false,
      "icon": "📦",
      "api_version": "1.3.0"
    },
    {
      "name": "cookie-export",
      "version": "1.1.0",
      "description": "Multi-format cookie export (Netscape, JSON, curl)",
      "author": "Tokenade Team",
      "category": "export-formats",
      "tags": [
        "export",
        "netscape",
        "json",
        "curl",
        "cookies"
      ],
      "type": "export_format",
      "entry_point": "plugin.py",
      "entry_class": "CookieExportPlugin",
      "dependencies": [],
      "min_version": "1.0.0",
      "verified": false,
      "icon": "📤",
      "api_version": "1.3.0"
    },
    {
      "name": "discord-handler",
      "version": "1.2.0",
      "description": "Site handler for Discord (discord.com, discordapp.com)",
      "author": "Tokenade Team",
      "category": "site-handlers",
      "tags": [
        "discord",
        "chat",
        "site-handler"
      ],
      "type": "handler",
      "entry_point": "plugin.py",
      "entry_class": "DiscordSiteHandler",
      "dependencies": [],
      "min_version": "1.0.0",
      "verified": false,
      "icon": "💬",
      "api_version": "1.3.0"
    },
    {
      "name": "generic-handler",
      "version": "2.0.0",
      "description": "Multi-site handler: cookie-simple sites via sites/*.json; generic fallback",
      "author": "Tokenade Team",
      "category": "site-handlers",
      "tags": [
        "multi-site",
        "generic",
        "handler",
        "site_config"
      ],
      "type": "handler",
      "entry_point": "plugin.py",
      "entry_class": "GenericSiteHandler",
      "dependencies": [],
      "min_version": "1.0.0",
      "verified": false,
      "icon": "🌐",
      "api_version": "1.3.0",
      "run": {
        "enabled": true,
        "default_method": "process",
        "methods": {
          "process": {
            "arguments": {
              "session_file": {
                "type": "path",
                "required": true
              },
              "site": {
                "type": "string",
                "required": false,
                "default": null
              },
              "action": {
                "type": "string",
                "required": false,
                "default": "validate"
              }
            }
          }
        }
      }
    },
    {
      "name": "google-flow-handler",
      "version": "1.1.0",
      "description": "OAuth automation for labs.google/fx/tools/flow with multi-account support",
      "author": "MiHiR",
      "category": "site-handlers",
      "tags": [
        "google",
        "oauth",
        "automation",
        "labs.google",
        "site-handler",
        "multi-account"
      ],
      "type": "handler",
      "entry_point": "plugin.py",
      "entry_class": "GoogleFlowPlugin",
      "dependencies": [],
      "min_version": "1.0.0",
      "verified": false,
      "icon": "⚡",
      "api_version": "1.3.0",
      "run": {
        "enabled": true,
        "default_method": "process",
        "methods": {
          "process": {
            "arguments": {
              "session_file": {
                "type": "path",
                "required": true
              },
              "output_dir": {
                "type": "path",
                "required": false,
                "default": null
              },
              "headless": {
                "type": "bool",
                "required": false,
                "default": true
              },
              "target_email": {
                "type": "string",
                "required": false,
                "default": null,
                "help": "Specific Google email to use for OAuth (for multi-account sessions)"
              },
              "account_index": {
                "type": "int",
                "required": false,
                "default": 0,
                "help": "Index of account to use if target_email not found (0-based)"
              },
              "max_retries": {
                "type": "int",
                "required": false,
                "default": 3,
                "help": "Maximum number of retry attempts with different accounts"
              }
            }
          },
          "refresh_session": {
            "arguments": {
              "session": {
                "type": "object",
                "required": true
              }
            }
          }
        }
      }
    },
    {
      "name": "oauth-flow-handler",
      "version": "1.0.0",
      "description": "Generic OAuth2 authorization code flow with PKCE support",
      "author": "MiHiR",
      "category": "site-handlers",
      "tags": [
        "oauth2",
        "oauth",
        "pkce",
        "authorization-code",
        "site-handler"
      ],
      "type": "handler",
      "entry_point": "plugin.py",
      "entry_class": "OAuthFlowHandler",
      "dependencies": [],
      "min_version": "1.0.0",
      "verified": false,
      "icon": "🔑",
      "api_version": "1.3.0"
    },
    {
      "name": "oauth2",
      "version": "1.2.0",
      "api_version": "1.3.0",
      "description": "OAuth2 token refresh for Google, GitHub, and Microsoft providers",
      "author": "Tokenade Team",
      "category": "authentication",
      "tags": [
        "oauth2",
        "google",
        "github",
        "microsoft",
        "refresh",
        "token"
      ],
      "type": "session_refresh",
      "entry_point": "plugin.py",
      "entry_class": "OAuth2RefreshPlugin",
      "dependencies": [],
      "min_version": "1.0.0",
      "verified": false,
      "icon": "🔐"
    },
    {
      "name": "proxy-health",
      "version": "1.0.0",
      "description": "Monitor proxy health and rotation status",
      "author": "Tokenade Team",
      "category": "monitoring",
      "tags": [
        "proxy",
        "health",
        "monitoring",
        "rotation"
      ],
      "type": "proxy",
      "entry_point": "plugin.py",
      "entry_class": "ProxyHealthPlugin",
      "dependencies": [],
      "min_version": "1.0.0",
      "verified": false,
      "icon": "🔄",
      "api_version": "1.3.0"
    },
    {
      "name": "proxy-rotate",
      "version": "1.1.0",
      "description": "Rotating proxy support for browser traffic during refresh",
      "author": "Tokenade Team",
      "category": "security",
      "tags": [
        "proxy",
        "rotate",
        "traffic",
        "anonymity"
      ],
      "type": "proxy",
      "entry_point": "plugin.py",
      "entry_class": "ProxyRotatePlugin",
      "dependencies": [],
      "min_version": "1.0.0",
      "verified": false,
      "icon": "🔀",
      "api_version": "1.3.0"
    },
    {
      "name": "session-backup",
      "version": "1.0.1",
      "description": "Auto-backup sessions to encrypted archive with rotation",
      "author": "Tokenade Team",
      "category": "utility",
      "tags": [
        "backup",
        "archive",
        "encrypted",
        "rotation"
      ],
      "type": "handler",
      "entry_point": "plugin.py",
      "entry_class": "SessionBackupPlugin",
      "dependencies": [],
      "min_version": "1.0.0",
      "verified": false,
      "icon": "💾",
      "api_version": "1.3.0"
    },
    {
      "name": "session-encrypt",
      "version": "1.2.0",
      "description": "Session encryption via core TokenadeEncryptor (AES-256-GCM, PBKDF2 600k). Prefer `tokenade encrypt`.",
      "author": "Tokenade Team",
      "category": "security",
      "tags": [
        "encryption",
        "aes",
        "gcm",
        "security",
        "at-rest",
        "core-wrapper"
      ],
      "type": "session_refresh",
      "entry_point": "plugin.py",
      "entry_class": "SessionEncryptPlugin",
      "dependencies": [],
      "min_version": "1.0.0",
      "verified": false,
      "icon": "🔒",
      "api_version": "1.3.0"
    },
    {
      "name": "session-expiry-alert",
      "version": "1.0.0",
      "description": "Alert when sessions are about to expire",
      "author": "Tokenade Team",
      "category": "monitoring",
      "tags": [
        "expiry",
        "alert",
        "monitoring",
        "notification"
      ],
      "type": "notification",
      "entry_point": "plugin.py",
      "entry_class": "SessionExpiryAlertPlugin",
      "dependencies": [],
      "min_version": "1.0.0",
      "verified": false,
      "icon": "⏰",
      "api_version": "1.3.0",
      "config": {
        "schema": {
          "warning_hours": {
            "type": "int",
            "default": 24,
            "min": 1,
            "max": 720,
            "description": "Hours before expiry to warn"
          },
          "sessions_dir": {
            "type": "string",
            "default": "",
            "description": "Sessions directory (empty = ~/.tokenade/sessions)"
          },
          "webhook_url": {
            "type": "string",
            "default": "",
            "description": "Optional webhook for expiry alerts",
            "env_var": "TOKENADE_EXPIRY_WEBHOOK_URL"
          }
        }
      }
    },
    {
      "name": "session-merge",
      "version": "1.0.0",
      "description": "Merge multiple sessions for the same site, deduplicating cookies",
      "author": "Tokenade Team",
      "category": "utility",
      "tags": [
        "merge",
        "deduplicate",
        "combine",
        "utility"
      ],
      "type": "handler",
      "entry_point": "plugin.py",
      "entry_class": "SessionMergePlugin",
      "dependencies": [],
      "min_version": "1.0.0",
      "verified": false,
      "icon": "🔀",
      "api_version": "1.3.0"
    },
    {
      "name": "session-share",
      "version": "1.1.0",
      "description": "Session sharing via encrypted URLs and QR codes",
      "author": "Tokenade Team",
      "category": "security",
      "tags": [
        "share",
        "url",
        "qr",
        "encrypted",
        "transfer"
      ],
      "type": "session_refresh",
      "entry_point": "plugin.py",
      "entry_class": "SessionSharePlugin",
      "dependencies": [],
      "min_version": "1.0.0",
      "verified": false,
      "icon": "🔗",
      "api_version": "1.3.0"
    },
    {
      "name": "telegram-handler",
      "version": "1.1.0",
      "api_version": "1.3.0",
      "description": "Site handler for Telegram Web (auth in localStorage)",
      "author": "Tokenade Team",
      "category": "site-handlers",
      "tags": [
        "telegram",
        "web",
        "localStorage",
        "site-handler"
      ],
      "type": "handler",
      "entry_point": "plugin.py",
      "entry_class": "TelegramSiteHandler",
      "dependencies": [],
      "min_version": "1.0.0",
      "verified": false,
      "icon": "📱"
    },
    {
      "name": "webhook-notify",
      "version": "1.2.0",
      "api_version": "1.3.0",
      "description": "Send webhook notifications on session events (refresh, expiry, error)",
      "author": "Tokenade Team",
      "category": "notifications",
      "tags": [
        "webhook",
        "notify",
        "slack",
        "discord",
        "alerts",
        "monitoring"
      ],
      "type": "notification",
      "entry_point": "plugin.py",
      "entry_class": "WebhookNotifyPlugin",
      "dependencies": [],
      "min_version": "1.0.0",
      "verified": false,
      "icon": "🔔",
      "config": {
        "schema": {
          "webhook_url": {
            "type": "string",
            "required": true,
            "description": "Webhook URL (Slack/Discord/generic HTTPS)",
            "env_var": "TOKENADE_WEBHOOK_URL"
          },
          "secret": {
            "type": "string",
            "required": false,
            "default": "",
            "description": "Optional HMAC secret for signing payloads",
            "env_var": "TOKENADE_WEBHOOK_SECRET"
          },
          "timeout": {
            "type": "int",
            "default": 10,
            "min": 1,
            "max": 120,
            "description": "HTTP timeout seconds"
          }
        }
      }
    },
    {
      "name": "whatsapp-handler",
      "version": "1.0.0",
      "api_version": "1.3.0",
      "description": "End-to-end WhatsApp Web transfer including Chromium IndexedDB",
      "author": "Tokenade Team",
      "category": "site-handlers",
      "tags": [
        "whatsapp",
        "web",
        "indexeddb",
        "site-handler"
      ],
      "type": "handler",
      "entry_point": "plugin.py",
      "entry_class": "WhatsAppSiteHandler",
      "dependencies": [],
      "min_version": "1.1.90",
      "verified": true,
      "icon": "WA"
    }
  ]
}
