# Bianca by FIFT Studio Bianca is an agent-native creative director MCP for AI image/video production. Canonical URL: https://fift.studio/bianca Agent instructions: https://fift.studio/bianca/llms.txt MCP endpoint: https://fift.studio/bianca/mcp Beta setup: https://fift.studio/bianca/beta-setup.md Demo prompt: https://fift.studio/bianca/demo-prompt.txt Beta onboarding: https://fift.studio/bianca/beta-onboarding.txt ## Version Bianca: Bianca Beta — June 2026. Public client surface is intentionally only three tools: bianca, bianca_access, bianca_status. Bianca is the creative director. Claude/Grok/ChatGPT are runners. Higgsfield is the user's camera/generator. Do not invent prompts, model IDs, workflow tools, or hidden tool names. ## Persona-first rule Bianca Valenti is a clearly disclosed synthetic/AI luxury persona and faceless brand character. Treat her as an IP character / brand vessel first: identity, taste, rituals, travel, social world, visual canon, and voice come before profession. Do not assume a lifestyle request is a finance, trading, forex, gold, or IB funnel. Lifestyle content is pure lifestyle unless the user explicitly asks for a finance/market/IB lane. If finance is explicitly requested, keep it disclosed-AI brand-character education only: no fake real-human claims, no fake trader/client/testimonial, no guaranteed results, and no undisclosed persuasion. ## The only public tools 1. bianca — primary workflow tool. Use this for every normal content ask. 2. bianca_access — request/recover/check access. 3. bianca_status — read-only connection and studio version check. Use only for setup questions. If the user asks for content, call bianca. Do not call status first unless the user asks what is connected. ## Normal content instruction If the user says “Bianca”, “make a carousel”, “create content”, “make my next drop”, or gives a creative brief, call: bianca with action=auto and request=. Bianca will return exactly one next_action. Follow it. If it says to generate in Higgsfield, copy Bianca-approved params only. Then return results to Bianca by following the requested action. In client language: return the frame, let Bianca review it, then deliver the pack. ## Async creative direction (important) prepare_drop answers immediately with a resolved_request echo (verify format and frame_count match the user's ask) and a direction_job. The Creative Director composes in the background for 2-5 minutes: poll bianca action=prepare_status with the job_id every ~30 seconds until status=prepared, then continue from the returned next_action. NEVER re-call prepare_drop on a timeout — identical retries replay the same job by design and never double-spend. Identical means the SAME request string for the same persona/format: do not paraphrase the brief into a new prepare_drop, that creates a second paid job. If prepare_status returns failed, follow the returned next_action. If the resolved_request echo does not match the user's ask, fix it with action=edit_contract — never with a second prepare_drop. ## Campaigns (multi-drop storylines) When the user wants a STORYLINE — a trip, a launch week, a seasonal series (“plan a week in Japan”, “make a 5-drop story”) — do not run single drops. Call: bianca with action=campaign_plan, request=, count=, frames_per_drop=. One Creative Director call authors the whole campaign: world bible, persistent continuity objects, wardrobe logic, and a production-ready brief per drop on a hard timeline. Present the plan to the user; nothing can run until they approve via bianca action=campaign_approve with the campaign_id. Then each drop is bianca action=prepare_drop with campaign_id — Bianca picks the next pending drop and enforces story continuity automatically. Check progress anytime with bianca action=campaign_status. ## Onboarding (fresh workspaces) A fresh workspace gets a staged welcome: Bianca's responses carry an `onboarding` block (stage 1-4: welcome, identity_card, the_face, debut) with a from_bianca message and exactly one next_action. RELAY from_bianca to the human word-for-word — Bianca is speaking to THEM, not to you — ask only what the stage needs, then follow next_action. The journey ends with Bianca proposing the persona's no-spend debut brief. ## Personas (two onboarding shapes) Every workspace needs exactly one thing before visual generation: a persona with an approved face anchor. Two paths: 1. Flagship persona (GRANT-GATED): bianca action=persona_seed installs Bianca Valenti (full creative canon + canonical face anchor) — but Bianca Valenti is FIFT Studio IP, and seeding only works in workspaces where FIFT has explicitly granted the flagship. Without a grant the call refuses and routes you to create your own persona; do not retry it. 2. Own persona: bianca action=persona_create (name, lane, gender), then bianca action=persona_refs_attach with ref_type=face_anchor, source_url (https image of the persona's face), and sha256 of those bytes (download the image and SHA-256 the exact served bytes; lowercase hex). Check bianca action=persona_readiness. If you created your own persona, pass persona_slug explicitly on every prepare_drop — the persona_slug default is the flagship 'bianca-valenti'. Visual generation stays locked until the face anchor exists — this is an identity-safety gate, not an error. 3. No face image at all: bianca action=persona_face_brief. Bianca compiles casting-headshot generation prompts from the persona's typed identity card (or names the missing identity fields to ask the human first). Generate the candidates in the user's own generator, show ALL of them to the human, let the HUMAN pick exactly one, then attach the pick via persona_refs_attach. Never auto-pick a face and never write your own face prompt — the chosen image is the persona's permanent identity anchor. If a drop is refused with persona_required_before_drop or "missing required persona identity refs", follow the returned next_action — it names the exact persona call to make. ## Access instruction If the user has no Bianca MCP Access Key, ask only for the email/contact to tie access to, then call bianca_access action=request (new user) or action=recover (has an email but no key). The request/recover response returns request_id + claim_token — keep BOTH until the operator approves (approval is human-gated; check bianca_access action=status every few minutes, not seconds). After approval, call bianca_access action=status with request_id + claim_token. If the host supports OAuth (Claude/ChatGPT/Grok hosted connectors), prefer the host's OAuth connector flow. For Hermes/OpenClaw/Cursor/local MCP clients, store the returned key in MCP config as an Authorization bearer header: Hermes YAML shape: mcp_servers: bianca: url: https://fift.studio/bianca/mcp enabled: true headers: Authorization: "Bearer YOUR_KEY" Equivalent JSON clients can use headers.Authorization = "Bearer YOUR_KEY". X-Bianca-Access-Key also works. Passing access_key as a tool argument is a fallback for clients that cannot set connector headers. KEY HYGIENE: the MCP Access Key is a SECRET. Never print, echo, or display it in normal chat, never store it in visible notes. Store it only in the MCP client's secret/config surface or pass it as access_key fallback. The key is claimable exactly once — if it is lost, recover by email with bianca_access action=recover. ## Help / capability questions If a human asks “what can Bianca do?”, “how do I connect?”, “how does this work?”, or “what should I do first?”, call bianca with action=capabilities, action=help, or action=faq. Use that structured result as the human-facing answer instead of inventing help copy. ## Generator boundary Bianca does not pay for Higgsfield credits by default. The user owns the Higgsfield account and credits. FIFT-operated generation is a separate DFY service only. ## Spend safety No generator spend unless Bianca returns spend_allowed / approved generator jobs and a next_action that explicitly instructs generation. Direct manual Higgsfield generation without Bianca proof chain is MANUAL_CONCEPT_ONLY, not Bianca production. Bianca uses asset-bound QA and output visibility gates before package/delivery: completed provider job proof, verified asset bytes, asset QA, then audited package output. ## Runner vocabulary Agents may see these machine labels while executing the Bianca flow. Do not repeat them to humans unless troubleshooting: - bianca://skill and bianca://session are MCP resources for canonical skill/session truth. - Look Sheet means Bianca has locked wardrobe, mood, world, palette, and frame references before final rendering. - Camera Plan means Bianca has approved the exact render instructions. - Bianca Review means generated assets are checked before delivery. - If Bianca says the client session is stale, refresh/reconnect the MCP server or start a new chat. No manual upgrade is required. ## Minimal workflow 1. call bianca with the user's request 2. if access is missing, call bianca_access 3. if Bianca returns a no-spend brief, ask/receive approval then call bianca again with action=prepare_drop 4. generate only from Bianca-approved Higgsfield params 5. return every generated job/asset to bianca 6. let Bianca QA, package, and deliver ## Do not do this - Do not ask the user to choose between Bianca tools. - Do not call or mention hidden internals. If a tool is not one of the three public tools, treat it as non-public machinery and continue through bianca. - Do not say the host platform needs to expose more tools. If you can see bianca, bianca_access, and bianca_status, the public surface is correct. - Do not generate prompts yourself. Bianca owns direction and prompt contracts. ## Action reference (bianca tool, action=…) Runner-only action map. Use these exact action names in tool calls, but speak to humans in Bianca language: Look Sheet, Camera Plan, Bianca Review, Delivery Pack. - auto — default; routes any plain creative request to the right workflow. - brief — no-spend direction preview for approval before production. - prepare_drop — create a production drop (async: returns a direction_job; poll prepare_status). With campaign_id, runs the campaign's next pending drop. - prepare_status — poll a background direction job until prepared/failed. - campaign_plan — author a multi-drop storyline plan (no spend until approved). - campaign_approve — approve a planned campaign so its drops can run. - campaign_status — campaign progress + next pending drop. - continue / next — resume from current contract state; returns the one legal next step. - visual_factsheet — Look Sheet: lock outfit, palette, world, and shot mood before final renders. - visual_factsheet_register / approve_visual_factsheet — approve the generated Look Sheet. - generator_plan — Camera Plan: Bianca-approved render jobs after the Look Sheet is approved. - validate_job — validate exact runner params per frame before any spend. - record_provider_job — Render Receipt: return proof that the camera rendered the approved plan. - attach_asset — Frame Return: bring the generated asset back to Bianca. - asset_qa — Bianca Review: submit visible findings after actually viewing the generated image. Never rubber-stamp. After 2 failed regenerations of the same frame, stop and ask the human before spending more credits. - package / delivery — Delivery Pack: finalize and deliver approved assets. - edit_contract — amend the open contract's goal/count before production. - archive_gate / close_contract / force_close / abort — close or abort the open contract (frees the lane). - persona_create / persona_get / persona_card / persona_update_canon / persona_interview / persona_readiness — persona bible management (creative DNA, identity canon, readiness). - persona_face_brief — face genesis: Bianca authors casting-headshot prompts from the persona's identity card; the human picks one candidate to become the permanent face anchor. - persona_refs_attach — Reference Lock: attach the persona's identity face anchor; required before visual generation for personas you create. Bianca vision-checks the anchor before accepting it. - persona_seed — install the flagship Bianca Valenti persona (full canon + canonical face anchor) into the workspace.