Documentation Index
Fetch the complete documentation index at: https://mintlify.com/davidbuenov/dbv-mcp-server/llms.txt
Use this file to discover all available pages before exploring further.
Why explicit registration is required
Despite what Unreal’sunreal.ToolsetDefinition documentation may suggest about UHT and the runtime UToolRegistry, there is no automatic reflection-based scan that discovers subclasses of UToolsetDefinition. The engine source makes this explicit. Inside ToolsetRegistrySubsystem.cpp (the ToolsetRegistry plugin), Initialize() contains exactly one registration call:
UAgentSkillToolset. Every other toolset — EditorToolset, AutomationTestToolset, SlateInspectorToolset, and any custom toolset you write — is registered explicitly by its own module’s startup code.
The fix: custom module implementation
The default project entry point generated by Epic contains an emptyFDefaultGameModuleImpl. You need to replace it with a custom IModuleInterface subclass that hooks OnPostEngineInit and calls RegisterToolsetClass.
Why OnPostEngineInit and not StartupModule?UToolsetRegistrySubsystem (and therefore UToolsetRegistry) does not exist yet during StartupModule(). Attempting to register at that point fails silently. OnPostEngineInit is the earliest safe point where the subsystem is guaranteed to be initialized.
Registration code
Replace the contents ofSource/<YourProjectName>/<YourProjectName>.cpp with the following, substituting <YourProjectName> and the toolset class name as appropriate:
Key points
-
OnPostEngineInit, notStartupModule— the subsystem is not available earlier; registration before this point fails silently. -
UnregisterToolsetClassinShutdownModule— prevents dangling references when Live Coding or hot-reload unloads and reloads the module. Without this, reloading can leave a stale pointer in the registry. -
Multiple toolsets — call
RegisterToolsetClassonce per class inside the sameOnPostEngineInit(): -
No regeneration needed — this change touches only
<YourProjectName>.cpp, not.Build.csor.uproject. A Live Coding recompile (Ctrl+Alt+F11) is sufficient after this edit.
Before and after
Before registration —list_toolsets returns only the built-in subsystem toolset, with no trace of your custom class:
AICallable methods are discoverable as tools:
Verifying in the Output Log
When registration succeeds, Unreal logs the following line in the Output Log during Editor startup:<YourProjectName>.cpp contains the custom module class with the OnPostEngineInit callback. That missing callback is the cause in virtually every case of this silent failure.