The idea of a simple standalone .stl to .stp converter is deceptively seductive but a practical impossibility for any .stl that's been produced from a model with a notionally curved surface.
Not necessarily. The vertices depicting an edge in an STL file are spot on, with the lines being approximations. Therefore, re-constructing a circle using TurboCAD's Circle by 3 Points tool would be accurate. Deriving a curve from a series of vertices is also feasible if the conversion utility uses a bit of Artificial Intelligence.
Here's what I meant, Jeff: consider an internal hole in an .stl that's designed to accommodate a fastener. It should give clearance for the fastener, the facets are arranged so that the material closest to the notional axis of the hole is at the mid-point of a facet, ie the vertices are not on the edge of the hole, the mid-points of the edges are. In the case of an external fillet, the notional cylindrical-section fillet may interpolate with the vertices of the .stl triangles, or the designer might have intended that the .stl could be smoothed by removing the high points of the facet to make a true cylindrical section. If the .stl's vertices interpolate with the edge or slice plane of the cylindrical section, smoothing it will make the cylindrical surface minutely undersize. Unless these sorts of notes are carried with an .stl, the nuance is lost. That's one of the reasons that the Microsoft-led consortium is allowing provision for that sort of detail with the .3mf format. Another point is that all 3D kernels work to tolerances, and you alter the tolerances, how accurately the facets represent the curved surface, when you change the ACIS settings in TC. The tolerances mean that the vertices are within a designated distance from the true surface, but they can't all interpolate with it.
This can be recognised to some extent with AI, but no AI algorithm can achieve a perfect result.