Looks like you have a typo of ':' instead of '.' in your grayscale import script. Try this:
on click do # make 1-bit dithered image i:read["image" "gray"] r:image[c.size] r.paste[i 0,0,r.size] r.transform["dither"] c.paste[r] end
Sometimes it's helpful to try things step-by-step in the Listener when they don't seem to work properly:
As for image export, you're only copying from the card's background image, which does not include the contents of any canvases stacked on top:
on click do write[card.image.copy[c.pos c.size]] end
If you want to export the image, you need to "copy[]" from the canvas:
on click do write[c.copy[]] end
And as in the examples for The Ornamented Ovum, you may want to map pattern 0 (transparent) to pattern 32 (opaque white) before exporting:
on click do write[c.copy[].map[0 dict 32]] end