There was a long discussion about this in a different thread, in which I (a native speaker) found myself confused. My conclusion, at least, was that this structure of a sentence is an anomaly, probably an imitation of other languages and therefore there is no good answer for this. In more formal Hebrew you can drop the את. You are right, I think, in that the thing that is יש is supposed to be the subject but acts like a direct object here.
This has confused me as well. I think the only place where the את should be there is when the "object" is a personal pronoun.
E.g. I have you = יש לי אותך
I had also learned from somewhere else that מצרכים meant groceries. Any native speakers' opinions?
"Yesh" acts as a verb, (an action) and "mitsrachim" is a specific object receiving the action. "Et" is a direct object marker used before a specific noun, I.e. a noun with the prefix (ה), so the sentence is grammatically correct. We have "et" the ingredients (goods, groceries, etc.)
There is no action involved. We are talking about the state of presence (certain things, namely, "mitsrachim" are present among the things at my disposal). The word "yesh" acts as the state indicator, a function that can be performed by certain verbs and adjectives. However, technically, it's neither a verb, nor an adjective, but a separate part of speech (A famous Russian linguist professor V.Vinogradov called it "a category of state". In Russian, the words of this category are often identical to adverbs but are used predicatively). Such words are not supposed to have a direct object, therefore, originally the preposition "et" was not used after them. In modern Hebrew people started to use it because they mapped it on their mother tongues (e.g. Yiddish) where the transitive verb 'have' or its equivalent is used, so they keep thinking of the sentence subject as an object. In Turkic languages there are exact equivalents of the words "yesh" and "ein" and the nouns they introduce always function as sentence subjects. Those languages also use a special marker (suffix) for definite direct objects, but it is NEVER attached to nouns introduced by the words for "yesh" or "ein".
Thanks for the detailed reply. Very interesting. I didn't know any of this.