code: function api_act() {
      var argsarr = new Array(arguments.length)
      for (var l = 0; l < argsarr.length; ++l) {
        argsarr[l] = arguments[l]
      }
  
      var self = this
      var spec = Common.build_message(self, argsarr, 'reply:f?', self.fixedargs)
      var msg = spec.msg
      var reply = spec.reply
  
      if (opts.$.debug.act_caller || opts.$.test) {
        msg.caller$ =
          '\n    Action call arguments and location: ' +
          (new Error(Util.inspect(msg).replace(/\n/g, '')).stack + '\n')
            .replace(/Error: /, '')
            .replace(/.*\/gate-executor\.js:.*\n/g, '')
            .replace(/.*\/seneca\.js:.*\n/g, '')
            .replace(/.*\/seneca\/lib\/.*\.js:.*\n/g, '')
      }
  
      do_act(self, msg, reply)
      return self
    }
docs: Perform an action. The properties of the first argument are matched against known patterns, and the most specific one wins.