Try using global fields for your find criteria. Then when the find comes up empty, create a new record and move the data from the global fields to fields in the new record.
#using one global field just for example purposes
Enter Find Mode 
Set Field [YourTable::Name ; YourTable::GlobalNameField ]
Set Error Capture [on] // suppresses "no records found" dialog so it doesn't interrupt the script.
If [ Get ( FoundCount ) = 0 ]
Set field [Yourtable::Name ; YourTable::GlobalNameField]
Your user can enter a name into YourTable::GlobalNameField and then perform the above script. It will either find the record with this name or create a new one with that name.
"...but seem stuck on how to programmatically access the text entered into a field in Find mode"
I think that a script like this could work:
Set Error Capture [ On ]
Enter Find Mode [ Pause ]
Set Variable [ $values ; Value: YourTable::FirstField & ¶ & YourTable::SecondField ]
Perform Find [ ]
If [ Get ( LastError ) ]
Set Field [ YourTable::FirstField ; GetValue ( $values ; 1 ) ]
Set Field [ YourTable::SecondField ; GetValue ( $values ; 2 ) ]