I suspect you're running into a problem relating to the fact that pipelines only seem to be willing to deliver parameters they know about to jobs. And since the first time a job runs, the system doesn't know about parameters, it can't deliver yours.
As a workaround, I'd probably just adjust the pipeline to recognize the first-run case, declare its parameters, and stop (possibly w/ some magic code that enables the caller to check for it).
You could then have the caller job recognize that case and trigger the job again.
I haven't really looked into this much. We hit it – whenever we add a new value to a parameter, we can't use that value until we let the system build once normally.