GovTribe

Update automation MCP tool

Update an existing GovTribe AI automation. Pass govtribe_ai_project_name to rename the existing GovTribe AI project (the same project is reused). If the original project was deleted, a fresh project is created and linked to this automation.

Examples

Update_Automation is a version-gated patch. First request version_number, start_nodes, and total_triggers_count from Search_Automations. Then send the current version as expected_version_number with only the automation fields or start-node operations you want to change.

Add a government-record trigger to a scheduled monitor

{
  "tool": "Search_Automations",
  "arguments": {
    "query": "\"Weekly award review\"",
    "fields_to_return": [
      "govtribe_id",
      "name",
      "version_number",
      "start_nodes",
      "total_triggers_count"
    ],
    "max_triggers": 50,
    "past_runs_limit": 0
  }
}
{
  "tool": "Update_Automation",
  "arguments": {
    "workflow_id": "<automation_govtribe_id>",
    "expected_version_number": 4,
    "start_node_changes": [
      {
        "action": "add",
        "data": {
          "trigger_type": "trigger-entity-activity",
          "trigger_config": {
            "target_govtribe_type": "federal_contract_award",
            "target_govtribe_id": "<award_govtribe_id>"
          }
        }
      }
    ]
  }
}

The new start node is appended. The existing schedule remains in place, so either trigger can start the same automation.

Change one schedule without replacing the other triggers

{
  "tool": "Update_Automation",
  "arguments": {
    "workflow_id": "<automation_govtribe_id>",
    "expected_version_number": 5,
    "name": "Monday award and recompete review",
    "start_node_changes": [
      {
        "action": "update",
        "start_node_id": "<schedule_start_node_id>",
        "data": {
          "trigger_config": {
            "rrule": "RRULE:FREQ=WEEKLY;BYDAY=MO;BYHOUR=8;BYMINUTE=30",
            "rrule_timezone": "America/New_York"
          }
        }
      }
    ]
  }
}

Repoint a saved-search trigger

{
  "tool": "Search_Saved_Searches",
  "arguments": {
    "query": "Healthcare IT recompetes",
    "fields_to_return": [
      "govtribe_id",
      "name",
      "frequency"
    ]
  }
}
{
  "tool": "Update_Automation",
  "arguments": {
    "workflow_id": "<automation_govtribe_id>",
    "expected_version_number": 6,
    "on_completion_notify_user": "conditionally",
    "completion_notification_instructions": "Email me only when a new result looks like a priority pursuit. Keep the email short and start with the recommended action.",
    "start_node_changes": [
      {
        "action": "update",
        "start_node_id": "<saved_search_start_node_id>",
        "data": {
          "trigger_config": {
            "saved_search_model_id": "<saved_search_govtribe_id>",
            "frequency": "weekly"
          }
        }
      }
    ]
  }
}

Include the saved-search ID and frequency together when repointing so the target and cadence are explicit. Repointing begins listening at update time and does not replay earlier results.

To change only the polling cadence, update the same start node with trigger_config.frequency set to instant, daily, or weekly and omit saved_search_model_id. GovTribe keeps the trigger's result progress and schedules its next check at the new cadence. Saved-search email preference changes never update this value.

Remove one start trigger

{
  "tool": "Update_Automation",
  "arguments": {
    "workflow_id": "<automation_govtribe_id>",
    "expected_version_number": 7,
    "start_node_changes": [
      {
        "action": "delete",
        "start_node_id": "<start_node_id_to_remove>"
      }
    ]
  }
}

Payload patterns

workflow_id and expected_version_number are required for every update, including a name-only or prompt-only change. If another edit creates a newer version first, GovTribe rejects the stale update; search again and prepare the patch against the current version.

Omitted top-level fields keep their existing values:

FieldPatch behavior
govtribe_ai_project_nameOmit to keep the project name. Include it to rename the linked project. If the linked project was deleted, the update creates a replacement.
nameOmit to keep the automation name.
promptOmit to keep the saved prompt.
reasoning_levelOmit to keep the saved level. Send none, low, medium, or high to change it.
skill_hintsOmit or send null to keep them. Send [] to clear them.
Completion email fieldsOmit both to keep the setting. Include them to change it, or set on_completion_notify_user to never to turn email off.
start_node_changesOmit to keep every start trigger unchanged.

start_node_changes applies ordered operations by stable start_node_id:

ActionRequired fieldsBehavior
adddata.trigger_type and matching data.trigger_configAppends a new independent start trigger.
updatestart_node_id and dataPreserves its position. Supplied config keys are shallow-merged into the existing trigger.
deletestart_node_idRemoves the trigger unless it is the automation's final start node.

When an update changes trigger_type, include the required configuration for the new type. Set optional scope IDs such as pipeline_model_id or stage_model_id to null when you need to clear them.

Do not send the retired start_nodes, triggers, trigger, trigger_type, or trigger_config update shapes. Update accepts start-trigger edits only through start_node_changes.

A field-only patch still requires the expected version:

{
  "tool": "Update_Automation",
  "arguments": {
    "workflow_id": "<automation_govtribe_id>",
    "expected_version_number": 8,
    "name": "Updated automation name"
  }
}

To change only the automation run's reasoning level, send a patch such as:

{
  "tool": "Update_Automation",
  "arguments": {
    "workflow_id": "<automation_govtribe_id>",
    "expected_version_number": 9,
    "reasoning_level": "medium"
  }
}

Do not send null to preserve the current reasoning level; omit the field. Start with low for routine work, use none for mechanical rules, and raise the level only when the automation needs more judgment.

Completion email fields do not accept custom recipients. The completion email is for the authenticated user who owns the automation run.