Intersection of objects taking into account plane scale
In the end I did was to cast a ray, from that ray create a bisection with a flat plane, then I got the closest edge and vertex in the bisection from the ray hit position then explored the topology of the mesh getting only the vertices I could reach from that point:
# Perform bisection
        bmesh.ops.bisect_plane(
            bm,
            geom=bm.faces[:] + bm.edges[:] + bm.verts[:],
            clear_inner=True,
            clear_outer=True,
            plane_co=plane_co,
            plane_no=plane_no
        )

        # Bisection cleanup
        closest_edge = self.find_closest_edge(bm)
        vertex_list = self.get_reachable_vertices(closest_edge)
        for v in [v for v in bm.verts if v not in vertex_list]:
            bm.verts.remove(v)

Example of exploring topology:
    def get_reachable_vertices(self, closest_edge):
    edge_list = [closest_edge]
    vertex_list = [v for v in closest_edge.verts]
    for v in vertex_list:
        for e in [edge for edge in v.link_edges if edge not in edge_list]:
            edge_list.append(e)
            if (e.other_vert(v) not in vertex_list):
                vertex_list.append(e.other_vert(v))

    return vertex_list