TScriptInterface only works with classes which inherit the interface natively (ie. if it’s a blueprint class, it must be a descendant of a C++ class which derives from IMarionettistInterface).
When you implement an interface by adding it in a blueprint, tests like Implements() will return true, but you can’t cast your object to the interface type. If you need to work with classes that may have inherited the interface in blueprint, then you can call the interface functions as follows (this will work for natively implemented interfaces too):
auto name = IMarionettistInterface::Execute_GetWorldUniqueMarionettistName(MyActor);
In this case, I’m not sure that there is currently any way to pass it back to blueprint as an interface. I think you’d need to just return the actor, and then convert it to an interface in the blueprint if necessary.