K-3D's internal data structures will support anything in terms of data. Geometry can be "tagged" with arbitrary name-value pairs using a variety of types including scalars, colors, vectors, strings, and matrices. Texture coordinates and per-vertex color are straightforward uses of this capability, but it can be extended any way.
All the RenderMan primitives and calls group together the individual parameters by name in the final output parameter list. Of course, the order of values in the output parameter list is strictly defined so the correct value is associated with the correct point, face, opcode, or what-have-you. In k3dsdk/renderman.cpp you will see that we have a special type, "grouped_parameters_t", and a bunch of overloaded build_parameters() functions that use it to do the work of grouping parameters for different primitive types.
Folks can assign any arbitrary parameters they want, and they will be passed-along to the render engine where they can be accessed within shaders.