diff --git a/indra/llcommon/lleventdispatcher.cpp b/indra/llcommon/lleventdispatcher.cpp
index 5d18d8f6c475ef431a05708e5436da18a9f4668a..99e2e74376ece5f2865aa50e4b615a135817e99b 100644
--- a/indra/llcommon/lleventdispatcher.cpp
+++ b/indra/llcommon/lleventdispatcher.cpp
@@ -394,10 +394,9 @@ struct LLEventDispatcher::LLSDDispatchEntry: public LLEventDispatcher::DispatchE
         return mFunc(event);
     }
 
-    LLSD addMetadata(LLSD meta) const override
+    LLSD getMetadata() const override
     {
-        meta["required"] = mRequired;
-        return meta;
+        return llsd::map("required", mRequired);
     }
 };
 
@@ -485,15 +484,14 @@ struct LLEventDispatcher::ArrayParamsDispatchEntry: public LLEventDispatcher::Pa
         return ParamsDispatchEntry::call(desc, args, fromMap, argskey);
     }
 
-    LLSD addMetadata(LLSD meta) const override
+    LLSD getMetadata() const override
     {
         LLSD array(LLSD::emptyArray());
         // Resize to number of arguments required
         if (mArity)
             array[mArity - 1] = LLSD();
         llassert_always(array.size() == mArity);
-        meta["required"] = array;
-        return meta;
+        return llsd::map("required", array);
     }
 };
 
@@ -568,11 +566,9 @@ struct LLEventDispatcher::MapParamsDispatchEntry: public LLEventDispatcher::Para
         return ParamsDispatchEntry::call(desc, mMapper.map(args), fromMap, argskey);
     }
 
-    LLSD addMetadata(LLSD meta) const override
+    LLSD getMetadata() const override
     {
-        meta["required"] = mRequired;
-        meta["optional"] = mOptional;
-        return meta;
+        return llsd::map("required", mRequired, "optional", mOptional);
     }
 };
 
@@ -733,10 +729,10 @@ LLSD LLEventDispatcher::getMetadata(const std::string& name) const
     {
         return LLSD();
     }
-    LLSD meta;
+    LLSD meta{ found->second->getMetadata() };
     meta["name"] = name;
     meta["desc"] = found->second->mDesc;
-    return found->second->addMetadata(meta);
+    return meta;
 }
 
 std::ostream& operator<<(std::ostream& out, const LLEventDispatcher& self)
diff --git a/indra/llcommon/lleventdispatcher.h b/indra/llcommon/lleventdispatcher.h
index db67d1b36186461b26f577c59c814544d4384511..939e3730e10c208909a37ba433df769809324528 100644
--- a/indra/llcommon/lleventdispatcher.h
+++ b/indra/llcommon/lleventdispatcher.h
@@ -472,7 +472,7 @@ class LL_COMMON_API LLEventDispatcher
 
         virtual LLSD call(const std::string& desc, const LLSD& event,
                           bool fromMap, const std::string& argskey) const = 0;
-        virtual LLSD addMetadata(LLSD) const = 0;
+        virtual LLSD getMetadata() const = 0;
 
         template <typename... ARGS>
         LLSD callFail(ARGS&&... args) const