diff --git a/services_rules.module b/services_rules.module
index 87b90b5..573b014 100644
--- a/services_rules.module
+++ b/services_rules.module
@@ -49,10 +49,40 @@ function services_rules_services_resources() {
     );
   }
 
+  $resources['rules']['operations']['retrieve'] =  array(
+    'help' => 'Invoke a rule component with a GET request.',
+    'callback' => 'services_rules_component_callback',
+    'access callback' => 'service_rules_access',
+    'access arguments append' => TRUE,
+    'args' => array(
+      array(
+        'name' => 'name',
+        'type' => 'text',
+        'description' => 'The machine id of the rule to invoke.',
+        'source' => array('path' => '0'),
+        'optional' => FALSE,
+      ),
+      array(
+        'name' => 'args',
+        'type' => 'array',
+        'description' => 'Arguments',
+        'source' => 'param',
+        'optional' => TRUE,
+      ),
+    ),
+  );
+
   return $resources;
 }
 
 /**
+ * Access callback for 'retrieve' service.
+ */
+function service_rules_access($id) {
+  return array("access services_rules $id");
+}
+
+/**
  * Implements hook_services_request_preprocess_alter().
  *
  * Package all the variables so that they can be accessed by the callback.
@@ -77,7 +107,26 @@ function services_rules_services_request_preprocess_alter($controller, &$args) {
 /**
  * Callback function to handle the execution of rules.
  */
-function services_rules_component_callback($component_info) {
+function services_rules_component_callback($component_info, $args = array()) {
+  if (is_string($component_info)) {
+    $component_info = array(
+      'name' => $component_info,
+      'args' => array(),
+    );
+    $rule = rules_config_load($component_info['name']);
+
+    // Component could not be found.
+    if (!$rule) {
+      return FALSE;
+    }
+
+    // Build arguments array.
+    $info = $rule->info();
+    foreach (array_keys($info['variables']) as $variable) {
+      $component_info['args'][$variable] = isset($args[$variable]) ? $args[$variable] : NULL;
+    }
+  }
+
   $args = isset($component_info['args']) ? $component_info['args'] : array();
   array_unshift($args, $component_info['name']);
   $result = call_user_func_array('rules_invoke_component', $args);
