diff --git a/acquia_agent/acquia_agent.module b/acquia_agent/acquia_agent.module
index 849fc37..d56e683 100644
--- a/acquia_agent/acquia_agent.module
+++ b/acquia_agent/acquia_agent.module
@@ -76,6 +76,14 @@ function acquia_agent_menu() {
     'access arguments' => array('administer site configuration'),
     'type' => MENU_CALLBACK,
   );
+  $items['system/acquia-connector-status'] = array(
+    'title' => 'Site status',
+    'description' => 'Check the site status',
+    'page callback' => 'acquia_agent_site_status',
+    'access callback' => 'acquia_agent_site_status_access',
+    'file' => 'acquia_agent.pages.inc',
+    'type' => MENU_CALLBACK,
+  );
   return $items;
 }
 
@@ -110,6 +118,15 @@ function acquia_agent_init() {
     $message = t($text, array('!more' => url('https://docs.acquia.com/network/install/connector'), '!acquia-free' => url('admin/settings/acquia-agent'), '!library' => url('http://library.acquia.com'), '!settings' => url('admin/settings/acquia-agent/setup'), '!support' => url('http://www.acquia.com/drupal-support'), '!services' => url('http://www.acquia.com/products-services/acquia-network/cloud-services'), '!admin-modules' => url('admin/build/modules', array('fragment' => 'edit-modules-acquia-network-connector'))));
     drupal_set_message($message, 'warning', FALSE);
   }
+
+  // Disable caching and maintenance mode on the Connector status page.
+  if (arg(0) == 'system' && arg(1) == 'acquia-connector-status') {
+    // Preserve current values.
+    $GLOBALS['conf']['acquia_cache'] = $GLOBALS['conf']['cache'];
+    $GLOBALS['conf']['cache'] = FALSE;
+    $GLOBALS['conf']['acquia_site_offline'] = $GLOBALS['conf']['site_offline'];
+    $GLOBALS['conf']['site_offline'] = FALSE;
+  }
 }
 
 /**
@@ -125,6 +142,71 @@ function acquia_agent_theme() {
 }
 
 /**
+ * Access callback for acquia_agent_site_status().
+ */
+function acquia_agent_site_status_access() {
+  // If we don't have all the query params, leave now.
+  if (!isset($_GET['key'], $_GET['nonce'], $_GET['stamp'])) {
+    return FALSE;
+  }
+
+  $sub_data = acquia_agent_settings('acquia_subscription_data');
+  $sub_uuid = _acquia_agent_get_id_from_sub($sub_data);
+  if (!empty($sub_uuid)) {
+    // If the timestamp is 'newer' or more than 1 minute old.
+    $elapsed_time = time() - (int) $_GET['stamp'];
+    if ($elapsed_time < 0 || $elapsed_time > 60) {
+      return FALSE;
+    }
+
+    $expected_hash = hash('sha1', "{$sub_uuid}:{$_GET['nonce']}");
+    // If the generated hash matches the hash from $_GET['key'], we're good.
+    if ($_GET['key'] === $expected_hash) {
+      return TRUE;
+    }
+  }
+
+  // Log request if validation failed and debug is enabled.
+  $acquia_debug = variable_get('acquia_agent_debug', FALSE);
+  if ($acquia_debug) {
+    $info = array(
+      'sub_data' => $sub_data,
+      'sub_uuid_from_data' => $sub_uuid,
+      'expected_hash' => $expected_hash,
+      'get' => $_GET,
+      'server' => $_SERVER,
+      'request' => $_REQUEST,
+    );
+    watchdog('acquia_agent', 'Site status request: @data', array('@data' => var_export($info, TRUE)));
+  }
+
+  return FALSE;
+}
+
+/**
+ * Gets the subscription UUID from subscription data.
+ *
+ * @param array $sub_data
+ *   An array of subscription data
+ *   @see acquia_agent_settings('acquia_subscription_data')
+ *
+ * @return string
+ *   The UUID taken from the subscription data.
+ */
+function _acquia_agent_get_id_from_sub($sub_data) {
+  if (!empty($sub_data['uuid'])) {
+    return $sub_data['uuid'];
+  }
+
+  // Otherwise, get this form the sub url.
+  $url = parse_url($sub_data['href']);
+  $parts = explode('/', $url['path']);
+  // Remove '/dashboard'.
+  array_pop($parts);
+  return end($parts);
+}
+
+/**
  * Get subscription status from the Acquia Network, and store the result.
  *
  * This check also sends a heartbeat to the Acquia Network unless
diff --git a/acquia_agent/acquia_agent.pages.inc b/acquia_agent/acquia_agent.pages.inc
index 192a4bc..5bbc767 100644
--- a/acquia_agent/acquia_agent.pages.inc
+++ b/acquia_agent/acquia_agent.pages.inc
@@ -731,3 +731,18 @@ function acquia_agent_an_info_header() {
   return $output;
 }
 
+/**
+ * Returns basic site information in JSON.
+ */
+function acquia_agent_site_status() {
+  $data = array(
+    'version' => '1.0',
+    'data' => array(
+      'maintenance_mode' => (bool) variable_get('acquia_site_offline', 0),
+      'cache' => (bool) variable_get('acquia_cache', 0),
+      'block_cache' => (bool) variable_get('block_cache', 0),
+    ),
+  );
+
+  drupal_json($data);
+}
