'GET', 'callback' => array( 'Abilities_Bridge_OAuth_Discovery_Handler', 'handle_metadata_request' ), 'permission_callback' => '__return_true', ) ); // OAuth Protected Resource Metadata. register_rest_route( 'abilities-bridge-mcp/v1', '/.well-known/oauth-protected-resource', array( 'methods' => 'GET', 'callback' => array( 'Abilities_Bridge_OAuth_Discovery_Handler', 'handle_protected_resource_request' ), 'permission_callback' => '__return_true', ) ); // MCP discovery metadata. register_rest_route( 'abilities-bridge-mcp/v1', '/.well-known/mcp', array( 'methods' => 'GET', 'callback' => array( 'Abilities_Bridge_OAuth_Discovery_Handler', 'handle_mcp_discovery' ), 'permission_callback' => '__return_true', ) ); // OAuth authorization endpoint (GET - display consent screen). register_rest_route( 'abilities-bridge-mcp/v1', '/authorize', array( 'methods' => 'GET', 'callback' => array( 'Abilities_Bridge_OAuth_Authorization_Handler', 'handle_authorize_request' ), 'permission_callback' => '__return_true', // Auth checked inside handler. ) ); // OAuth authorization endpoint (POST - process consent). register_rest_route( 'abilities-bridge-mcp/v1', '/authorize', array( 'methods' => 'POST', 'callback' => array( 'Abilities_Bridge_OAuth_Authorization_Handler', 'handle_authorize_approval' ), 'permission_callback' => '__return_true', // Auth checked inside handler. ) ); // OAuth token endpoint. register_rest_route( 'abilities-bridge-mcp/v1', '/oauth/token', array( 'methods' => 'POST', 'callback' => array( 'Abilities_Bridge_OAuth_Token_Handler', 'handle_token_request' ), 'permission_callback' => '__return_true', // Public endpoint. ) ); // OAuth token endpoint (OPTIONS - CORS preflight). register_rest_route( 'abilities-bridge-mcp/v1', '/oauth/token', array( 'methods' => 'OPTIONS', 'callback' => array( 'Abilities_Bridge_OAuth_Discovery_Handler', 'handle_preflight' ), 'permission_callback' => '__return_true', // Public endpoint. ) ); // OAuth revoke endpoint. register_rest_route( 'abilities-bridge-mcp/v1', '/oauth/revoke', array( 'methods' => 'POST', 'callback' => array( 'Abilities_Bridge_OAuth_Token_Handler', 'handle_revoke_request' ), 'permission_callback' => '__return_true', // Public endpoint (requires valid token). ) ); } }