diff -dur rules.orig/rules/modules/taxonomy.rules_forms.inc rules/rules/modules/taxonomy.rules_forms.inc
--- rules.orig/rules/modules/taxonomy.rules_forms.inc	2009-05-15 06:03:12.000000000 -0700
+++ rules/rules/modules/taxonomy.rules_forms.inc	2009-06-10 00:56:19.000000000 -0700
@@ -10,6 +10,77 @@
  */
 
 /**
+ * Action: Create a new term configuration form.
+ *
+ * @see rules_action_taxonomy_add_term_submit().
+ */
+function rules_action_taxonomy_add_term_form($settings, &$form, $form_state) {
+  $settings += array('vocabulary' => 0);
+  if (empty($settings['vocabulary'])) {
+    // Get existing taxonomy vocabularies.
+    $options = _rules_action_taxonomy_get_vocab();
+    $form['settings']['vocabulary'] = array(
+      '#type' => 'select',
+      '#title' => t('Vocabulary'),
+      '#options' => $options,
+      '#description' => !empty($options) ? t('Select the vocabulary where the term will be added.') : t('There are no existing vocabularies, you should <a href="@add-url">add</a> one.', array('@add-url' => url('/admin/content/taxonomy/add/vocabulary'))),
+      '#required' => TRUE,
+      '#disabled' => empty($options),
+    );
+
+    // Hide some form elements in the first step.
+    $form['new']['#access'] = FALSE;
+    $form['input_help']['#access'] = FALSE;
+    $form['weight']['#access'] = FALSE;
+
+    // Replace the usual submit handlers with our own handler.
+    $form['submit']['#submit'] = array('rules_action_taxonomy_load_term_form_step_submit');
+    $form['submit']['#value'] = t('Continue');
+  }
+  else {
+    module_load_include('inc', 'taxonomy', 'taxonomy.admin');
+    $form['settings']['term'] = array(
+      '#type' => 'fieldset',
+      '#title' => t('Term settings'),
+    );
+
+    $vocabulary = taxonomy_vocabulary_load($settings['vocabulary']);
+    $form['settings']['term']['info'] = array(
+      '#value' => t('Define the term to add to vocabulary !vocab', array('!vocab' => $vocabulary->name)),
+    );
+
+    //$settings_without_vocabulary = $settings;
+    //unset($settings_without_vocabulary['vocabulary'])
+    $form['settings']['term']['term_add'] = taxonomy_form_term($form_state, $vocabulary, !empty($settings) ? $settings : array());
+
+    // Remove the 'Save' button.
+    unset($form['settings']['term']['term_add']['submit']);
+  }
+}
+
+/**
+ * Action: Create a new term submit handler.
+ *
+ * Flatten the term settings so they can be passed back to
+ * taxonomy_form_term().
+ */
+function rules_action_taxonomy_add_term_submit(&$settings, $form, $form_state) {
+  $term = array();
+  $term['vocabulary'] = $settings['vocabulary']; // keep the vocabulary as is
+  if (!empty($settings['term'])) {
+    foreach ($settings['term']['term_add'] as $key => $values) {
+      if (is_array($values)) {
+        $term += $values;
+      }
+      else {
+        $term[$key] = $values;
+      }
+    }
+  }
+  $settings = $term;
+}
+
+/**
  * Action: Load a term configuration form.
  *
  * Multistep form.
diff -dur rules.orig/rules/modules/taxonomy.rules.inc rules/rules/modules/taxonomy.rules.inc
--- rules.orig/rules/modules/taxonomy.rules.inc	2009-05-18 05:05:20.000000000 -0700
+++ rules/rules/modules/taxonomy.rules.inc	2009-06-10 01:53:51.000000000 -0700
@@ -62,6 +62,18 @@
 function taxonomy_rules_action_info() {
   $info = array();
   // Term actions.
+  $info['rules_action_taxonomy_add_term'] = array(
+    'label' => t('Add a new term'),
+    'new variables' => array(
+      'taxonomy_term' => array(
+        'type' => 'taxonomy_term',
+        'label' => t('Taxonomy term'),
+      ),
+    ),
+    'eval input' => array('name', 'description'),
+    'help' => t('Create a new term in the specified vocabulary. The term can be acted on afterward (i.e. to add a parent term.)'),
+    'module' => 'Taxonomy',
+  );
   $info['rules_action_taxonomy_load_term'] = array(
     'label' => t('Load a term'),
     'new variables' => array(
@@ -129,6 +141,14 @@
 }
 
 /**
+ * Action: Add a term.
+ */
+function rules_action_taxonomy_add_term($settings) {
+  taxonomy_save_term($settings);
+  return array('taxonomy_term' => taxonomy_get_term($settings['tid']));
+}
+
+/**
  * Action: Load a term.
  */
 function rules_action_taxonomy_load_term($settings) {
