The renderman/arnold/vray procedurals transfers transfer all the agent metadata to the meshes (all the metadatas metadata names has a have "atoms_" as prefix during rendering). It is possible to use these metadata inside shaders. This can give you more control on agents variation during rendering.
For example, you can create an agent group and with an addMetadata module, you can create a metadata called myColor. Use the agent override dialog to set a different value on some agents.
Create a simple renderman pxrsurface shader and as diffuse color connect a pxrattribute node. Set the name attribute of the pxrattribute node to atoms_myColor and set the type to vector3.
Now you can export this material using the Renderman material exporter from the Atoms menu. And you can prepare an agent variation that use uses this shader. The you You can render and you will see something like in the picture on the right, where the shader color is taken from the myColor metadata.
This can be done also in arnold using the aiUserDataVector/Int/Float/... node or in vray using a VrayUserColor node as well.