sim_prompt
Ask an LLM to derive something from a stored entity: a variant model, a report, a piece of generated code — whatever the prompt asks for. The parent's JSON rides along as context after a fixed instruction: answer a request for a new or changed model with only the complete model JSON (the shape sim_create_model takes), and anything else in plain text or markdown. The parent is looked up as a model first, then a prompt, then an artifact, then a map — whichever resolves — and the context block is labelled by what kind it found ("## Parent model", "## Parent prompt", ...), so the LLM is never told a report is a Petri net. When the parent is a prompt with no requestTemplate, its text and system are withheld from its readers (sim_get_artifact says why), and so is the content of an artifact such a prompt produced; unless you are its author, the LLM gets the document sim_get_artifact serves in its place, without them. The prompt is stored first and content-addressed like a model, so it has an id of its own before the LLM ever answers; both the prompt and whatever came back are placed in lineage under the parent (sim_prompt as the activity), so Ancestry walks parent -> prompt -> result. A Relation{prompt, "produced", result} is recorded alongside — sim_reroll's forward index, and queryable directly via sim_edges/sim_neighbors. Returns promptId, id, kind and url. A reply that decodes and passes the validation sim_create_model applies is stored as a NEW model you own (kind "model"; read it with sim_get_model), with warnings, when there are any, saying what sim_create_model would warn about it (a transition left at the default rate, a guard no run enforces, staff taken and given back in one firing, ...). Any other reply is stored as an artifact (kind "artifact") and returned inline as content, cut at 16384 bytes with truncated: true and contentBytes (the whole reply's length) when longer; sim_get_artifact reads all of it. When that reply held model JSON (an object with places or transitions) that failed to decode or validate, modelErrors lists every reason at once, as sim_create_model words its refusal (a key repeated across elements once, at most 20 of each kind with the rest counted). Needs sign-in (opens OAuth the first time). Refused if this deployment has no LLM provider configured. The stored prompt, text and system both, is readable without sign-in through sim_get_artifact by anyone who has its promptId or the id of anything derived from it, since lineage names the prompt behind every result: leave out of text and system what you would not share with whoever gets a result's id.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | the natural-language instruction; stored with the prompt, and readable by anyone with its id or a result's | |
| parent | Yes | id to run the prompt against — a model, prompt, artifact, or map | |
| system | No | optional system-level instructions, in addition to the parent context this tool always supplies; stored with the prompt, and readable by anyone with its id or a result's |