Param
private class Param(val name: String, val description: String, val required: Boolean = false, val enum: List<String>? = null, val default: String? = null, val type: String = "string")
One tool parameter. enum and default are structured schema fields, so the prose never has to name them; default is written as a string whatever type says, and emitted as that type.