Yes, it is possible! The following is a very short and effective example (that I'll explain below):
toolbar = iface.addToolBar("My ToolBar")
# Add QGIS action from iface
toolbar.addAction(iface.actionIdentify())
# Add 'Digitizing tools' plugin action (e.g., Merge)
dt = qgis.utils.plugins['DigitizingTools']
toolbar.addAction(dt.merger.act)
Which gives you this right away (left: QGIS tool, right: tool fromDigitizing tools
plugin):

Using QGIS actions
It is true that you can search for actions giving their object names (e.g., mActionIdentify
). However, the QGIS API is friendly enough to give you access to commonly used actions directly (i.e., no need to find them for yourself). It is done via the iface
object (see QgisInterface).
For instance, for accessing the QGIS Identify action, you can use iface.actionIdentify()
See the docs.
Using actions from another plugin
This case depends on how well or flexible is the plugin written. For instance, the Digitizing tools plugin is very friendly for you to reuse its tools/actions. You can have a look at its tools in this code fragment.
Continuing with such example, if you're interested in the Merge tool from the 'Digitizing tools' plugin, then you can use the merger
object. To get the action related to that tool, you use merger.act
(which is very specific for the Digitizing tools
plugin). Other plugins may need other ways to access their actions, or may even not allow you to reuse their actions at all.