I am not sure if this functionality can be supported by all scm providers but in subversion one can tag a revision using the copy command. I would love to see support added to SCM so that a) one can determine the current working revision and b) based on the working revision ID create a tag. In subversion on can do this by using the following set of commands.
#get the working copy revision information
#create a tag from the trunk using revision 1204
svn copy -r1204 http://svn.example.com/repos/calc/trunk http://svn.example.com/repos/calc/tags/release-1.0 -m "revision tag"
My understanding is that SCM API currently does support getting the revision of the current working copy.