“[業務委託](https://eikaiwa.dmm.com/uknow/questions/50304/)契約” というのは“outsourcing contract”または“contract” のところを “agreement” とも言いますが、同時に業界によっては“service contract/agreement”というところもありますね。特に決まっていない場合はどちらでも良いと思います。
同時に、“[働いています](https://eikaiwa.dmm.com/uknow/questions/75261/)” = “I work” という表現を言わなくても対象が就職形態を表すものとして理解されるので “I’m on a/an” と言えば “就いています” という表現で自動的に解ってくれるはずですね。
これが短期であれば“I’m on a short term service contract.”、長期でしたら“long-term” と入れ替えればok!
様々な様々な言い方がありますが、[業界](https://eikaiwa.dmm.com/uknow/questions/46354/)や場合によって一番相応しい言い方が変わるかも知れない。
一番一般的に使われているのは "I'm working as a subcontractor." だと思います。
他には "I'm working under an outsourcing agreement."(私は業務委託契約で働いています)
この場合の"I have"は、「契約を結んでいる/交わしている」という意味になります。
なので、"I have an outsourcing agreement"(業務委託契約を結んでいる)というニュアンスです。
また、"I have an agreement with"は「~と契約を結んでいる/交わしている」という意味になります。
例:"I have an outsourcing agreement with that company"(その会社と業務委託の契約を結んでいます)です。