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
# Add 'Digitizing tools' plugin action (e.g., Merge)
dt = qgis.utils.plugins['DigitizingTools']
Which gives you this right away (left: QGIS tool, right: tool from
Digitizing 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.