-- 0022_mcp_probe_and_oauth -- Add probe status fields and auth_type to mcp_connections; create mcp_oauth_tokens table ALTER TABLE mcp_connections ADD COLUMN IF NOT EXISTS status TEXT NOT NULL DEFAULT 'unknown', ADD COLUMN IF NOT EXISTS tools_cache JSONB NOT NULL DEFAULT '[]'::jsonb, ADD COLUMN IF NOT EXISTS last_probed_at TIMESTAMPTZ, ADD COLUMN IF NOT EXISTS status_message TEXT NOT NULL DEFAULT '', ADD COLUMN IF NOT EXISTS auth_type TEXT NOT NULL DEFAULT 'none'; CREATE TABLE IF NOT EXISTS mcp_oauth_tokens ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), connection_id UUID NOT NULL UNIQUE REFERENCES mcp_connections(id) ON DELETE CASCADE, resource_metadata_url TEXT NOT NULL DEFAULT '', authorization_server_url TEXT NOT NULL DEFAULT '', authorization_endpoint TEXT NOT NULL DEFAULT '', token_endpoint TEXT NOT NULL DEFAULT '', registration_endpoint TEXT NOT NULL DEFAULT '', scopes_supported TEXT[] NOT NULL DEFAULT '{}', client_id TEXT NOT NULL DEFAULT '', client_secret TEXT NOT NULL DEFAULT '', access_token TEXT NOT NULL DEFAULT '', refresh_token TEXT NOT NULL DEFAULT '', token_type TEXT NOT NULL DEFAULT 'Bearer', expires_at TIMESTAMPTZ, scope TEXT NOT NULL DEFAULT '', pkce_code_verifier TEXT NOT NULL DEFAULT '', state_param TEXT NOT NULL DEFAULT '', resource_uri TEXT NOT NULL DEFAULT '', created_at TIMESTAMPTZ NOT NULL DEFAULT now(), updated_at TIMESTAMPTZ NOT NULL DEFAULT now() ); CREATE INDEX IF NOT EXISTS idx_mcp_oauth_tokens_connection_id ON mcp_oauth_tokens(connection_id);