       ip = get_client_remote_address(req)
       addresses = get_client_remote_addresses(req)
       uid = get_ip_with_tripcode(ip)
-      target_uid = params.target_uid
+      target_id = parseInt(params.target_id)
       callback = params.callback
 
-      try
-        self.browserCheck(req)
-        self.blacklistCheck(ip)
-        self.fragtableCheck(address) for address in addresses
-        fragdata = self.fragtable[target_uid]
-        target_uid = if fragdata then get_ip_with_tripcode(fragdata.ip) else null
-        throw 'UID Not Found' if not target_uid
-        if self.fragtable[target_uid].flag[uid]
-          nodeirc.action("\u000307#{target_uid} has been reported by #{uid})")
-        else
-          self.fragtable[target_uid].flag[uid] = 1
-          if object_length(self.fragtable[target_uid].flag) >= 2
-            self.ban(target_uid, uid, 'Online Report', 86400)
+      self.findMessage target_id, (items) ->
+        try
+          self.browserCheck(req)
+          self.blacklistCheck(ip)
+          self.fragtableCheck(address) for address in addresses
+          throw 'Message ID Not Found' if items.length == 0
+          item = items[0]
+          target_uid = item.uid
+          target_message = item.text
+          if self.fragtable[target_uid].flag[uid]
+            nodeirc.action("\u000307#{target_uid} has been reported by #{uid})")
           else
-            self.system_say("#{target_uid} is reported by #{uid}", color: '255,128,0,0.9')
-      catch error
-        switch error
-          when 'BLACKLIST'
-            ret['message'] = 'I\'m a teapot'
-          else
-            ret['message'] = error
-        WARN('%s (%s)', error, ip)
-        if not self.mute && self.last_blacklist_uid != uid
-          nodeirc.action("\u000306#{uid}\u000314 is trying to report #{target_uid} \u000304(#{error})")
-        self.last_blacklist_uid = uid
-      res.send(jsonp_stringify(ret, callback))
+            self.fragtable[target_uid].flag[uid] = 1
+            if object_length(self.fragtable[target_uid].flag) >= 2
+              self.ban(target_uid, uid, 'Online Report', 86400, target_message)
+            else
+              self.system_say("“#{target_message}” is reported by #{uid}", color: '255,128,0,0.9')
+        catch error
+          switch error
+            when 'BLACKLIST'
+              ret['message'] = 'I\'m a teapot'
+            else
+              ret['message'] = error
+          WARN('%s (%s)', error, ip)
+          if self.last_blacklist_uid != uid
+            nodeirc.action("\u000306#{uid}\u000314 is trying to report ##{target_id} \u000304(#{error})")
+          self.last_blacklist_uid = uid
+        res.send(jsonp_stringify(ret, callback))
 
     self.routes['GET']['/status'] = (req, res) ->
       res.setHeader('Content-Type', 'application/json; charset=utf-8')

      self.addresslistCheck(ip)

      if user_last_id < self.last_record_id
        self.query user_last_id, (items) ->
          ret.data = items
          res.send(jsonp_stringify(ret, callback))
          return
      else
        # DEBUG('Hook from %s', ip)
        self.listener_count++

    self.history_limit = 50
    self.polliing_timeout = 60000

    self.last_response_time = (new Date()).getTime()
    self.metadata = {}
    self.metadata_updated = false
