MCP clients may send numbers as strings in JSON parameters. Using
z.coerce.number() instead of z.number() across all 13 tool files
ensures string-to-number coercion happens automatically, preventing
"Expected number, received string" validation errors.