Replace a project's context
set_project_contextSave the product definition and design context for a brand project so every later proposal is grounded in it. Replaces all stored fields, so retrieve the current context first, then resend the full object.
Instructions
Store what the product is, so every later proposal is grounded in it and you never re-send a paragraph of prose. This REPLACES the whole context: nothing is merged, so any field you leave out is deleted, not kept. That is deliberate — a merging update would let you drop a surface from the list and silently keep the old one — but it means the safe way to edit is get_project_context first, then send the whole object back with your change applied. product is the only required field and must be a real sentence rather than a label; a description under 12 characters is refused, because a proposal built on one reads as grounded while being generic. Every string is bounded and an over-long field is refused by name rather than truncated, so nothing is silently cut. Requires the kits:write scope; reading needs only kits:read.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| avoid | No | Directions already ruled out, in the user's own words. "We tried playful and customers hated it" is worth more here than any other field. | |
| moods | No | Mood ids from the discovery vocabulary; the feel being aimed at. | |
| stack | No | What the brand has to be implemented in. Free text, so an unrecognised stack is read by the model rather than rejected. | |
| product | Yes | What the product does, in a sentence or two. The one field a proposal cannot be specific without. | |
| audience | No | Who uses it. | |
| industry | No | Industry id from the discovery vocabulary. | |
| surfaces | No | The screens the product has. This is what narrows candidates: a kit judged unfit for every surface is not a candidate. An empty list is honest and common early on. | |
| projectId | Yes | Owned brand project id from list_brand_projects. | |
| constraints | No | What the design must respect: an accessibility target, a parent brand, an existing component library, a locale, a regulator. |