update_changeset
Modify an existing ServiceNow changeset by updating its name, description, state, or assigned developer to reflect current project requirements.
Instructions
Update an existing changeset in ServiceNow
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| changeset_id | Yes | Changeset ID or sys_id | |
| name | No | Name of the changeset | |
| description | No | Description of the changeset | |
| state | No | State of the changeset | |
| developer | No | Developer responsible for the changeset |
Implementation Reference
- The main handler function that executes the update_changeset tool. It validates parameters using UpdateChangesetParams, prepares a PATCH request to the ServiceNow sys_update_set table, and returns the updated changeset or error.def update_changeset( auth_manager: AuthManager, server_config: ServerConfig, params: Union[Dict[str, Any], UpdateChangesetParams], ) -> Dict[str, Any]: """ Update an existing changeset in ServiceNow. Args: auth_manager: The authentication manager. server_config: The server configuration. params: The parameters for updating a changeset. Can be a dictionary or a UpdateChangesetParams object. Returns: The updated changeset. """ # Unwrap and validate parameters result = _unwrap_and_validate_params( params, UpdateChangesetParams, required_fields=["changeset_id"] ) if not result["success"]: return result validated_params = result["params"] # Prepare the request data data = {} # Add optional fields if provided if validated_params.name: data["name"] = validated_params.name if validated_params.description: data["description"] = validated_params.description if validated_params.state: data["state"] = validated_params.state if validated_params.developer: data["developer"] = validated_params.developer # If no fields to update, return error if not data: return { "success": False, "message": "No fields to update", } # Get the instance URL instance_url = _get_instance_url(auth_manager, server_config) if not instance_url: return { "success": False, "message": "Cannot find instance_url in either server_config or auth_manager", } # Get the headers headers = _get_headers(auth_manager, server_config) if not headers: return { "success": False, "message": "Cannot find get_headers method in either auth_manager or server_config", } # Add Content-Type header headers["Content-Type"] = "application/json" # Make the API request url = f"{instance_url}/api/now/table/sys_update_set/{validated_params.changeset_id}" try: response = requests.patch(url, json=data, headers=headers) response.raise_for_status() result = response.json() return { "success": True, "message": "Changeset updated successfully", "changeset": result["result"], } except requests.exceptions.RequestException as e: logger.error(f"Error updating changeset: {e}") return { "success": False, "message": f"Error updating changeset: {str(e)}", }
- Pydantic BaseModel defining the input schema for the update_changeset tool, including required changeset_id and optional fields for update.class UpdateChangesetParams(BaseModel): """Parameters for updating a changeset.""" changeset_id: str = Field(..., description="Changeset ID or sys_id") name: Optional[str] = Field(None, description="Name of the changeset") description: Optional[str] = Field(None, description="Description of the changeset") state: Optional[str] = Field(None, description="State of the changeset") developer: Optional[str] = Field(None, description="Developer responsible for the changeset")
- src/servicenow_mcp/utils/tool_utils.py:642-648 (registration)MCP tool registration in get_tool_definitions() dictionary, associating 'update_changeset' name with its handler (aliased import), input schema, return type hint, description, and serialization method."update_changeset": ( update_changeset_tool, UpdateChangesetParams, str, # Expects JSON string "Update an existing changeset in ServiceNow", "json_dict", # Tool returns Pydantic model ),
- src/servicenow_mcp/tools/__init__.py:40-40 (registration)Export of the update_changeset handler function from the tools package __init__ for easy import.update_changeset,