Script/API - Snap selection to grid, but only one axis
Ditch the operator

IMO far simpler to ditch the operator and round the desired axis component to the nearest gradation.

Test script, Run in edit mode, moves all selected verts local z coordinate to nearest multiple of 0.125

import bpy
import bmesh

context = bpy.context

ob = context.edit_object
me = ob.data
bm = bmesh.from_edit_mesh(me)

grid_spacing = 0.125

sel_verts = [v for v in bm.verts if v.select]

for v in sel_verts:
    v.co.z = round(v.co.z / grid_spacing) * grid_spacing

bmesh.update_edit_mesh(me)


Considering the grid to be a global system, will convert the vert coordinate to global mw @ v.co find the nearest gradation point, then convert back to local mwi @ v.co

Please Note script written for and tested on 2.8. For prior replace  @ with *

import bpy
import bmesh


context = bpy.context
ob = context.edit_object
mw = ob.matrix_world
mwi = mw.inverted()
me = ob.data
bm = bmesh.from_edit_mesh(me)

grid_spacing = 0.125

sel_verts = [v for v in bm.verts if v.select]

for v in sel_verts:
    g = mw @ v.co # use * prior 2.8
    g.z = round(g.z / grid_spacing) * grid_spacing
    v.co = mwi @ g

bmesh.update_edit_mesh(me)