Hey, Colin! Glad the scripts are helping out!
What you have going is a case of operational order... Muler detects the {& mule text and immediately parses it, looking to load the mule. Since it runs before your outer ScriptCard call, you haven't filled your [&Name] variable... so that is the very text ([&Name]) that is fed to Muler as the name of the mule character, and it will never be found. To fix that, we need to defer the Mule detection until after SC has a chance to process the variable and supply it to the command line. Luckily for you, where you need it is in an API call within SC... meaning that you start another cycle of:
Roll20 parsing => MetaScript parsing => Recipient Script
Since you want the Mule available to the Recipient script, you want the mule to be found in this cycle, not in the initial cycle that processed already before handing off to ScriptCards.
Kurt built into SC a deferral character (hard-coded, so you can't change it) of a ^ for these outbound api script calls. In fact, it looks like you're already doing that for a Fetch call in that script outbound command! So, to prevent the Mule from being detected and the mule get statements from processing until the script call runs, for example, you'd do something like:
--@script|_#hideCard|1 _#title|SettingVars| _#debug|1 _&Side|get^.[&Form] {^& mule [&Name].WSMule} _=hp|@^([&Name]'s [&reentryval]|npc_hpformula) {& log}
An interesting side note is that your {&log} statement here will run at the top level of the ScriptCard (before the outbound call is sent). That's because ZeroFrame will detect that construction without respect to where it occurs in your command line, or what that position means to the way the script will process. Basically, if a metascript can see it, it's going to take care of it. By the time your outbound call is sent, then you've already gotten your log and that construct is removed from the line. If you want a downstream log (of the outbound call message), then you'd want to defer your log construct the same way:
{^& log}
In fact, you could actually have both:
{&log}{^& log}
The first one will run at the top level, logging the outer ScriptCard, and the second would run after SC removes the deferral character and dispatches the new command.