To answer your question of
Is there a way to fill in the ??? with the email above?
No. The Razor code is similar to, say, PHP, or any other server-side templating language - it's evaluated on the server before the response is sent. So, if you had something like
@Url.Action("checkdirectory", "home")
in your script, assuming it's directly in a view, it would get replaced by a generated URL, like
/home/checkdirectory
Your code, which uses 
@Html.Action("checkdirectory", "home")
actually executes a separate action, and injects the response as a string into the view where it's called. Probably not what you were intending.
So, let's try to get you on the right path. Assuming your controller action looks something like
[HttpGet]
public ActionResult CheckDirectory(string email = "")
{
    bool exists = false;
    if(!string.IsNullOrWhiteSpace(email))
    {
        exists = YourCodeToVerifyEmail(email);
    }
    return Json(new { exists = exists }, JsonRequestBehavior.AllowGet);
}
You could, using jQuery (because XMLHttpRequests are not fun to normalize), do something like
$(function(){
    var url = '@Url.Action("checkdirectory", "home")';
    var data = { email : $('#email').val() };
    $.get(url, data)
        .done(function(response, status, jqxhr) {  
            if(response.exists === true) {
                /* your "email exists" action */
            }
            else {
                /* your "email doesn't exist" action */
            }
        })
        .fail(function(jqxhr, status, errorThrown) { 
            /* do something when request errors */
        });
});
This assumes you have an <input /> element with an id of email. Adjust accordingly. Also, the Url helper can only be used within a view; if you're doing this in a separate JavaScript file, replace it with a hard-coded string (or whatever else works for you).
Edit:
Since it seems I didn't entirely get what you were trying to do, here's an example of returning a different view based on the "type" of user:
public ActionResult ScheduleMe(string email = "")
{
    if(!string.IsNullOrWhiteSpace(email))
    {
        ActionResult response = null;
        var userType = YourCodeToVerifyEmail(email);
        // Assuming userType would be strings like below
        switch(userType)
        {
            case "STAFF":
                response = View("StaffScheduler");
                break;
            case "STUDENT":
                response = View("StudentScheduler");
                break;
            default:
                response = View("ReadOnlyScheduler");
                break;
        }
        return response;
    }
    return View("NoEmail");
}
This assumes you would have 4 possible views: the three you mentioned, plus an "error" view when no email parameter was given (you could also handle that by redirecting to another action). This variation also assumes a user has somehow navigated to something like hxxp://yourdomain.tld/home/scheduleme?email=peter@innotech.com