Set the normal
The default values of cutting plane coordinate and normal are (0, 0, 0). A zero length normal is invalid and quite likely does nothing.
Here is a minimal working example of a script, adds a cube, runs the operator with plane coordinate at origin and its normal as the x axis. Recommend setting up a little script like below when asking questions
from bpy import context
ob = context.object
me = ob.data
bm = bmesh.new()
print('Nverts0',len(bm.verts), len([v for v in bm.verts if v.is_valid]))
plane_co=(0, 0, 0),
plane_no=(1, 0, 0),
print('Nverts1',len(bm.verts), len([v for v in bm.verts if v.is_valid]))
Nverts0 8 8
Nverts1 12 12
Effectively bisecting all x axis aligned edges, creating 4 ngons with 6 verts. Nothing to clear as faces are not "ripped".
For clear to work on a mesh that has faces, we are going to need to add the faces and verts to the geometry input of the operator. Recommend with
geom giving all geometry of a region of interest will make all options work as expected.
geom=bm.verts[:] + bm.edges[:] + bm.faces[:],
making this change an running again
Nverts0 8 8
Nverts1 8 8
Has bisected cube, same vert count one less face. The "outer" is cleared, ie all resultant geometry on the input normal's side of cutting plane.
Bmesh operators return information in a dictionary.
ret = bmesh.ops.foo.bar(blah)
in the case of bisect plane it has members "geom_cut" the edges and verts of the cut and "geom".
Some Examples of using bmesh bisect plane operator.
Python: Bisect mesh into n parts, without separate 'LOOSE'
using bisect but still failing
Slice up terrain mesh into chunks
How to get part of a mesh with Python API, which requires breaking down some faces?
Cutting a mesh in half
How to extract side-view outline (e.g. top view) of a 3D object to 2D surface?
Transform cylinder to flat plane - cylinder maze map