{"contract":"handoff-1","destinations":["prompt","document"],"minTurns":2,"parallel":{"field":"tools","min":1,"max":3,"sameSources":true,"atomic":true,"onRefusal":"nothing-runs","onFailure":"others-return","cost":"sum","costField":"cost.perTool","order":"first-alone-then-rest-parallel","results":"one-per-tool"},"length":{"unit":"characters","enabled":false,"combine":"multiply","short":{"upTo":450000,"model":"claude-haiku-4-5-20251001","credits":1,"freeToolsFree":true,"modelExceptions":{"confront":"claude-sonnet-5","decide":"claude-sonnet-5","pushback":"claude-sonnet-5","verify":{"judge":"claude-sonnet-5","extract":"claude-haiku-4-5-20251001","note":"two steps: extraction on the band's model, the judge always on its own"}},"modelNote":"the band's model; modelExceptions tools keep their own at every length","tasks":{"tools":["handoff","switch","memo","merge","summarize","ai-profile"],"model":"gpt-6-luna","provider":"openai","oneChat":["summarize","memo"],"relay":"claude-haiku-4-5-20251001"}},"beyond":{"behavior":"refuses","raison":"long-reading-not-enabled","cuts":false,"status":400},"bands":[{"upTo":450000,"credits":1,"freeToolsFree":true,"model":"claude-haiku-4-5-20251001"}],"platform":{"maxRequestBytes":4500000,"unit":"bytes","enforcedBy":"platform","status":413,"note":"measure the encoded body, not the character count"},"tokenGuard":{"countedAbove":250000,"raison":"too-many-tokens","remedy":"remove-a-source","status":400,"models":{"claude-haiku-4-5-20251001":185000,"claude-sonnet-5":985000},"model":"claude-haiku-4-5-20251001","maxTokens":185000},"overLimit":{"decided":"2026-11-05 Kevin","oneClick":true,"turnByTurn":false,"choices":["readAll","topics","recent"],"thresholdByTier":{"free":60000,"pack":200000,"pro":450000,"unit":"characters","per":"task, all sources"},"tools":["handoff","switch","memo","merge","summarize"],"summarize":{"freeUpTo":60000,"beyond":"thresholdByTier"},"exempt":{"tools":["ai-profile"],"free":true,"beyond":"free topics/recent or named refusal","reads":{"upTo":60000,"beyond":"ai-profile-over-limit"},"costCap":{"perJob":0.3,"perAccount":3,"perAccountPerDay":1,"usd":true,"utc":true,"active":false,"status":"decided by LEAD 2026-11-05"}},"above":{"60000":{"free":["topics","recent"],"paid":"normal"},"450000":{"choices":["topics","recent"],"readAll":"slicesPro"}},"readAll":{"tiers":["pack"],"from":200001,"upTo":450000,"price":{"tasks":2,"unit":"task","perSlice":false},"thenTask":1},"freeRefusal":{"raison":"free-task-over-threshold","status":402,"charged":false,"active":true},"v1Refusal":{"raison":"task-over-v1-limit","status":400,"charged":false,"active":true},"slicesPro":{"per":450000,"tasksPerSlice":1,"maxSlices":6,"maxChars":2500000,"tiers":["pro"]},"topics":{"sameAs":"catalogue.options.scope","tools":"lineup8.options.scope.tools","maxTopics":5,"asides":true,"sends":"kept turns, n = original ([#N] + 1), turnsTotal (default: max n)","footer":"k of turnsTotal, never all","warning":{"proven":"corrects","reinject":false}},"recent":{"sameAs":"range","send":{"range":{"mode":"recent","maxChars":"thresholdByTier"}},"where":"sources[], sections[] or beside turns","wholeMessages":true,"fromEnd":true,"measure":"chars + 14 per message","multiSource":"longest loses oldest first, ≥ 2 each","computedBy":"server","preview":"?quote=1 → selection; 400 → overLimit.recent","onResult":"selection","fields":["fromTurn","toTurn","turnsKept","turnsTotal","chars","charsTotal","firstKeptAt"],"numbering":"original"}}},"links":{"refused":[{"match":"claude.ai/cowork/cse_…","pattern":"^https?:\\/\\/(?:www\\.)?claude\\.ai\\/cowork\\/cse_[A-Za-z0-9_-]+","raison":"cowork-no-share-link","message":"Cowork sessions have no share link. Copy the conversation and paste it here instead.","remedies":["close"],"v4":{"message":"Cowork sessions have no share link, and the Uncook extension can't read them. Open a chat in ChatGPT, Claude or Gemini in Chrome, then click the Uncook icon.","remedies":["extension"]},"status":422,"note":"a Cowork session is readable only by its owner, so no link to read — paste the conversation, or the extract Close makes"},{"match":"chatgpt.com/s/cx_…","pattern":"^https?:\\/\\/(?:www\\.)?chatgpt\\.com\\/s\\/cx_[A-Za-z0-9_-]+","raison":"codex-link-not-readable-yet","message":"Shared Codex chats can't be read from their link yet — use Close inside the chat, or paste the conversation.","remedies":["close","paste"],"status":422,"note":"a shared Codex chat: the engine's share API answers 500 (measured 23/09 15:09 UTC) — not read yet, said instead of a provider error"}]},"geminiPdf":{"route":"POST /api/ingest/ { provider: \"gemini-pdf\", raw: \"<the PDF's text>\" }","readBy":"the browser: pdf.js extracts the text (site/pdf-gemini.js); the PDF itself never leaves the device","shape":["line 1: the conversation title","line 2: https://gemini.google.com/app/<id>","then « User prompt: » / « Response: » at line start, alternating"],"labels":["User prompt:","Response:"],"labelsLanguage":"English only (the only form measured; Kevin's French interface exports these)","returns":"{ ok, source: \"gemini\", title, turns, counts, coverage } — a share link's shape","refusals":{"pdf-not-a-conversation":"a PDF that is not a Gemini conversation (quote, contract…) — 422","gemini-pdf-unrecognised":"a Gemini PDF whose labels were not recognised — 422"},"notInTheExport":["a Deep Research report is one line (« I've completed your research ») → coverage partial, tool_outputs_dropped"],"modelCall":false,"cost":{"credits":0},"ocr":false},"vitals":{"where":"extension only — a conversation pasted on the site is finished: a diagnosis there is a finding, not an alert","serverCall":false,"newSignals":false,"modelCall":false,"signals":{"from":"site/engine.js analyze()","families":["assistant repetition (exact, paraphrase)","user re-asks (exact, paraphrase)","explicit recall"],"trends":["answer length (answerBloat)","share of new words (noveltyTrend)"]},"window":{"module":"/vitals-fenetre.js","fn":"tendancesFenetre(turns, { W, marge })","W":8,"span":"the last 2W assistant turns; earlier ones fold into one seed turn, so novelty is measured against all history","minAssistantTurns":8,"returns":"null | { window, bloat, novelty, bloatTrend, noveltyTrend } — trends up | down | flat","trendMargin":0.15},"stages":{"fresh":"nothing","watch":"amber gauge, interrupts nothing (first reliable sign)","act":"one line, one click to accept, one to dismiss (sign confirmed)"},"confirm":{"watchHoldTurns":3,"cooldownTurns":10},"accept":{"proposes":"close","copies":"close.prompt (this contract), byte for byte","sends":"nothing","cost":{"credits":0}},"note":"Vitals says when; the product says what."},"knowledge":{"registry":{"decided":"2026-09-23 22:25 (LEAD ①) ; conditions EMIL 23:08","who":"a signed-in account only; a guest has no registry","journal":{"route":"GET /api/account/espace/?vue=registre under X-Uck-Session","types":["projet.cree","projet.document","doc.garde","doc.efface","doc.corbeille","doc.restaure","decision.posee","run.fait","partage.cree","partage.retire","commentaire.ajoute","commentaire.statut","doc.version","doc.devenir","compte.connexion","cle.creee","cle.revoquee","invitation.utilisee","email.envoye"],"line":"identifiers, closed lists, numbers only — never conversation/document text, a name, an amount or an email","maxAge":"13 months","maxLines":2000,"rule":"no line outlives its object (deleted with it; the morning sweep removes lines of expired documents)"},"search":{"route":"POST /api/account/espace/ { search: { q, devise: \"EUR\", min, max, du: \"YYYY-MM-DD\", au: \"YYYY-MM-DD\" } } under X-Uck-Session — POST since 24/09 (searched text never in a URL); GET ?vue=recherche → 405 search-is-post","amountsAndDates":"indexed at Keep by rule (no model, 0 cost); index member = the document key only","text":"searched by decrypting the account's own documents at query time; no index of names"},"stats":{"counters":"stats:obj:<type>:<YYYY-MM>, no identity, 400 days"},"documentMetadata":{"measuredOn":"2026-09-24 (code of main), not on stored records","stored":{"owner":{"by":"server","from":"the session / device actor","encrypted":false},"space":{"by":"server","default":"derived from the actor (private)","encrypted":false},"visibility":{"by":"server","value":"always private","encrypted":false},"consentedScope":{"by":"server","encrypted":false},"project":{"by":"page (workspace)","fields":["id","label"],"encrypted":"label"},"category":{"by":"page if the result carries one","encrypted":true},"title":{"by":"page","encrypted":true},"content":{"by":"page","encrypted":true},"stamp":{"by":"page, copied from the job response","keys":8,"encrypted":false},"decisions":{"by":"page (sidecar of the job response)","encrypted":"statement"},"jobId":{"by":"page","encrypted":false},"parent":{"by":"page","encrypted":false},"lang":{"by":"page","note":"the workspace sends \"en\" today"},"provenance":{"by":"page — V4 pages don't send it today","encrypted":"shareUrl"}},"notCapturedToday":{"chain":"stored if the page sends it (V4 Keep doesn't); tool order lives only in project.tools and the registry (run.fait.after)","fate":"ON since 2026-09-24 (copied, exported, relaunched — no abandoned): POST /api/account/espace/ { fate: { docId, kind, format?, destination? } } under X-Uck-Session — format: copy|markdown|docx|pdf|html|text|slides|other, destination: clipboard|download|google_drive|notion|slack|email|gamma|presentation|whatsapp|open_in_ai|other (one export object each); page-sent (PIX-WORKSPACE)","coverageManifest":"built on EVERY job response (manifest[]), never stored: Keep refuses it in the sidecar; pages don't send `coverage`","turnModel":"per turn into the job manifest when the source says it (else warning no_model), never stored"}}},"retention":{"free":"30 days after the document is kept","pack":"while the pack is valid (12 months after purchase), then 12 months; read and export stay open during those 12 months","pro":"while the subscription is active, then 12 months after it ends; read and export stay open during those 12 months","combine":"the longest that applies","recomputedOn":["pack purchase","subscription start","subscription end"],"days":{"free":30,"afterPro":null},"packMonths":12,"monthsAfterEnd":12,"shown":"each kept document carries its own `expiresAt` (null = no expiry while Pro is active), recomputed on those three events"},"prompts":{"object":"prompt","fields":["id","title","text","variables","origin","project","createdAt","lastUsedAt","uses","expiresAt"],"variables":"{{name}} — kept as written; Uncook never fills them in","from":["written or pasted by the person","the REUSABLE PROMPT block of a kept Playbook document (origin = it)"],"limits":{"maxChars":20000,"maxPrompts":200},"lifecycle":"like a document: encrypted, same retention (recomputed with it), in export and erasure","routes":{"list":"GET /api/account/espace/?vue=prompts under X-Uck-Session","keep":"POST /api/account/espace/ { prompt: { title, text, project? } } or { prompt: { fromDoc: <id> } }","use":"POST /api/account/espace/ { usePrompt: <id> }","delete":"POST /api/account/espace/ { deletePrompt: <id> }"}},"sharing":{"modes":{"public":"one link: anyone who holds it","invited":"one link per invited address (1 to 10), sent to that address only; the address is not stored, only its fingerprint"},"rights":["read","comment","download"],"rightsNote":"read always on; the owner picks comment and download, one by one","comments":{"max":100,"maxChars":2000,"perDay":50,"asRework":"read by the owner as ONE rework objection (rework.objection), launched by them — nothing re-runs automatically"},"reworkLoop":{"decided":"2026-09-23 23:45 (LEAD ④) — conversations not kept: a new version comes from the kept document, its structured lines and objection","status":{"route":"POST /api/account/partage/ { commentStatus: { docId, id, status: accepted | dismissed | open } } under X-Uck-Session (owner only)","values":["open","accepted","dismissed","addressed"],"addressed":"set by the engine when a new version is kept"},"rework":"POST /api/rescue/ { rework: { fromDoc: <document key>, fromComments: true, objection? } } under X-Uck-Session — source and <previous> = the document (+ its decisions); objection = the ACCEPTED comments (+ the owner's text); the document's tool; 1 credit","newVersion":"Keep with parent = document id: shares FOLLOW the new version (same links); accepted comments → addressed","fullSources":"full redo: the page resends the conversations (rework.previous + sources)"},"lifetime":"a share never outlives its document (same expiry); revocable anytime","task":{"field":"task","value":true,"tools":["summarize","digest","brief","checkpoint","cross"],"toolsNote":"Summarize, Memo and Compare engines; Export stays on the device, never shared","rights":["read"],"comments":false,"ask":false,"page":"/shared/<link token>/ — public, no sign-in, noindex, no script, no third party; footer: Made with Uncook · try it free · Report this page · Privacy","whatsapp":"the create answer carries `whatsapp` (a wa.me link to the page); we send nothing","email":{"perShare":10,"perDay":20,"refusal":"share-invites-daily (429)","declineAll":"the decline page's second button declines every Uncook invitation, from anyone"},"report":"/shared/<link token>/report/ — same form; the report row keeps the share's fingerprint (page_reports.task_share), never the link; child sexual abuse removes the share at once","refusals":["share-not-a-task (400)","share-invites-daily (429)"]},"invitationEmail":{"from":"the owner is named (account email); without it no invitation is sent (share-owner-unnamed)","decline":"each email has a decline link (one button, no account, no confirmation) → link removed, the (owner, invitee) pair kept as a fingerprint only; no later invitation to that pair is sent; the owner reads: This person declined invitations from you.","oneClick":"List-Unsubscribe + List-Unsubscribe-Post (RFC 8058) on the same decline address","task":{"text":"E28 (COPY 47 §5 and 49; EMIL 27/10 22:31): sender, task title, tool's public name, /shared/ link, « You don't need an account to read it. »","languages":["en","fr","de","es","pt","es-419","pt-PT","it","ja"],"languagesNote":"es-419, pt-PT, it, ja ship with these languages' other emails (EMAILS_LANGUES_V4); until then es, pt, en","decline":"global: the link and List-Unsubscribe carry &all=1 — one click, then no owner can invite that address via Uncook"}},"ask":{"field":"askPaidByOwner","default":false,"set":"POST /api/account/partage/ { …, askPaidByOwner: true } — an unticked box at share time","use":"POST /api/rescue { tool: \"ask\", memory: { share: <link token> } } — that document only, billed to the owner, ≤ 10 questions per link per day; box unticked: 402 link-ask-not-allowed"},"branding":{"field":"branding","when":"launch lineup only (lineup.active); absent otherwise","default":true,"set":"POST /api/account/partage/ { …, branding: false } — Pro only (else ignored: the answer says branding: true)","open":"GET ?t= → branding: true + madeWith { label, url }, or false — only while the owner is Pro AND removed it on this share or account-wide (espace: madeWith false)"},"routes":{"create":"POST /api/account/partage/ { docId, mode, rights, emails?, askPaidByOwner?, branding? } under X-Uck-Session","open":"GET /api/account/partage/?t=<link token>","comment":"POST /api/account/partage/ { t, comment }","owner":"GET /api/account/partage/?doc=<id> under X-Uck-Session → { shares, comments, objection }","revoke":"POST /api/account/partage/ { revoke: <share> } under X-Uck-Session"}},"formerly":"memory","memoryKeysKept":"the `memory` block and routes keep their names (read today)","shelves":["documents","decisions","playbook","prompts"],"ask":"Ask queries all of it (tool `ask`)","decision":{"statuses":["active","superseded","unresolved","rejected"],"fields":["id","statement (≤ 300)","status","provenance (sourced | inferred)","source_refs [{ source, turn }] (≤ 20, never text)","rationale_refs [{ source, turn }] — why; REQUIRED (≥ 1 turn) for rejected and superseded, else refused at entry (the schema's rule, engine-applied — 24/09)","refs_from (conversation | closure)","decided_at (a real date only)","supersedes_decision_id","created_by_run_id","scope? / stakes? (inferred; absent = not assessed, never a default)"],"perDocument":50,"producers":[{"from":"a Close extract among the sources","map":{"DECIDED BY THE PERSON":"active","DISCARDED + WHY":"rejected","OPEN + NEXT ACTIONS":"unresolved"},"modelCall":false,"refsFrom":"closure","provenance":"inferred — turn numbers cited by the AI from a conversation the engine did not read"}],"openQuestion":"a decision with status unresolved"},"projects":{"object":"project","ownerOnly":"a signed-in account — a guest has no Knowledge, so no project","fields":{"id":"uuid (sent by the client with each job, or server-minted)","label":"≤ 80, as the person named it; absent otherwise","createdAt":"first kept document","lastActivityAt":"last kept document","tools":"the tools launched, in order","documents":"the kept documents (keys, never content)","decisions":"counts by status: active, superseded, unresolved, rejected"},"written":"on Keep (POST /api/synthese/ with `project`), best-effort — a failed project write never fails the keep","read":"GET /api/account/espace/?vue=projets under X-Uck-Session → { projects: [...] }, most recent first","never":"no conversation or document text — identifiers and counts only"}},"confront":{"stage":"before closure — the last check before Close","inputs":{"sources":"1 to 3 AI conversations (the work) — as for every tool","references":"1 to 3 reference documents in their own field `references` — never in `sources`"},"reference":{"fields":["title","text","format"],"formats":["pdf_text","pasted_text"],"minChars":40,"maxChars":150000,"totalMaxChars":300000,"pdf":"extracted in the browser (site/pdf-gemini.js texteDuPdf); the PDF never leaves the device","ocr":false},"pdfException":"a PDF that is not a conversation, refused as a source (pdf-not-a-conversation), is accepted here as a reference — only here","headers":["MEETS THE REFERENCE","MISSING","CONTRADICTS"],"anchors":"each item cites a reference (R1…) and, if the work shows it, a conversation turn (⟨sourced N:T⟩); CONTRADICTS quotes both sides, settles nothing","refusals":["references-count","reference-format","reference-no-text","reference-too-long","references-too-long","references-required"],"model":"claude-sonnet-5","price":{"base":2,"status":"decided","decidedBy":"LEAD 23/09 13:32 ④","note":"Compare's base (several inputs read against each other, large model)"},"public":false,"note":"engine only until a page carries it; off-catalogue: a step before Close, not a tool"},"deliverable":{"field":"deliverable","version":1,"modelCall":false,"cost":{"credits":0},"on":"every 200 response carrying a document (`result`), except the tools under `not`","not":["recognize","mask","voice","handoff"],"shape":{"prompt":"the text to copy, whole","counts":"{ decided, open, checked, chars }"},"fills":["decisions[] (status active → DECIDED, unresolved → STILL OPEN)","verify.claims[] (verdict, evidence url and date)","the document, whole, between <<< and >>>"],"rules":["Use only what is in the document below. Do not add facts, figures, names, dates, prices or commitments that are not in it.","What is marked decided stays decided. What is still open stays open: say that it is open, never settle it for me.","Claims checked on the web: state the \"supported\" ones as checked, with their source. Never state the \"contradicted\", \"uncertain\" or \"unverifiable\" ones as facts.","If the deliverable needs something the document does not contain, list it at the end under \"Missing\" instead of inventing it."],"placeholder":"[say what you need — a proposal, an email, a one-page memo, slides — and for whom]","button":"at the end of each document: « Write the deliverable » — copies `deliverable.prompt`; by PIX-WORKSPACE","note":"a filled template, no model call: Uncook hands the reasoning to the person's own AI, which writes the deliverable"},"chamber":{"detected":{"field":"detected","on":"every 200 run (result, handoff, note)","shape":"{ deliverableType, deadline, stage } — each { value, confidence 0..1 } or null (nothing said → nothing proposed; never « other »), + classifier","deliverableType":["email","memo_note","deck","report","legal_doc","spec","decision","plan"],"stage":["exploring","drafting","finalizing"],"deadline":"YYYY-MM-DD, only a date SAID near a deadline word (by, due, avant le, hasta, até, bis…); never computed, never past","classifier":"livrable-regles-v2","model":"none (rules, no model call)","confirmed":"never by the engine: only the person, via the route below"},"orientation":{"field":"orientation","when":"exploring → Compare · Challenge ; finalizing or due within 7 days → Close · Decide ; never the tool just run","shape":"{ reason: exploring | finalizing | deadline-near, tools: [{ engine, name, page }], line }","wording":"EXPLORER draft, EMIL to confirm"},"choice":{"route":"POST /api/account/espace/ + session","gesture":"{ choice: { jobId, target: { type, id? | key? }, choice, previous?, next? } } → { ok, choiceId }","confirm":"{ choice: { jobId, confirm: { deliverableType?, deadline?: YYYY-MM-DD | null (No deadline), stage? } } } → { ok, choiceIds, confirmed, project }","carry":"POST /api/rescue/ { …, carry: { from: jobId, kept: [choiceId], dropped: [choiceId] } }","errors":["401 no-session","400 job-id | target-type | target-key | target-missing | choice | value | confirm-empty | deliverable-type | deadline | stage","404 run-not-found","503 base-unavailable"]}},"workspace":{"page":"/workspace-v4/","url":"https://www.uncook.app/workspace-v4/","signIn":"/sign-in-v4/","memory":"/workspace-v4/lot2/","pricing":"/pricing/","api":"GET /api/account/espace/","session":"X-Uck-Session","internal":false,"note":"account addresses keep their -v4 path, noindex; one constant each in api/account/_lib/adresses.js"},"freeDaily":{"role":"offer","free":3,"paid":20,"unit":"analyses","per":"day","tools":["summarize"],"capital":[],"legacy":["mask"],"countedBy":"actor","together":true,"resetsAt":"00:00 UTC","raison":"plafond-gratuit","status":402,"channels":["browser"],"payerSize":{"freeUpTo":60000,"beyond":null,"unit":"characters","who":"a proven account with Pro or credits","preflightCounted":true,"sameAsFree":true,"note":"one bound for all, paying or free: free up to freeUpTo characters (the short band); above, the length band prices the job (length). Decide's preflight counts in the daily free count."}},"recognition":{"tool":"recognize","free":true,"credits":0,"countsAgainst":"recognition.perActor","actorRequired":true,"boundedBy":["freeGate","perActor"],"guard":"free-ip-cap","withoutActor":{"status":401,"raison":"actor-required","note":"only when no token can be issued (KV down, none given); else the server issues one"},"actor":{"name":"dv","format":"16 hex","issuedBy":"server","registered":true,"field":"visitor.dv","ttlSeconds":172800,"unknownToken":"replaced: the server issues a new one and the counter restarts","note":"the client adopts visitor.dv when issued is true"},"perIp":{"guard":"freeGate","max":30,"per":"day","key":"network-block","network":{"ipv4":"/24","ipv6":"/56"},"fullIpStored":false,"status":429,"raison":"free-ip-cap","separateFrom":"rateLimit.perIp","resetsAt":"00:00 UTC","note":"the one anti-abuse door, shared by all free jobs; not a recognition limit"},"perActor":{"role":"offer","max":5,"per":"day","status":402,"raison":"recognize-daily","notIn":"freeDaily","note":"a quote is never counted in what it prices"},"model":"claude-haiku-4-5-20251001","reading":{"mode":"diagonal","budgetChars":30000,"anchors":[0,0.25,0.5,0.75,1],"wholeTurns":true,"coversWholeConversation":true,"originalTurnNumbers":true,"note":"start, spaced windows, end — never the first N characters only"},"proposals":{"max":3,"ordered":true,"orderedBy":"execution","orderNote":"the order to run them — compare, then plan — not a ranking of relevance (Kevin, 22/09)","whyPerTool":true,"catalogue":["handoff","compare","merge","brief","switch","decide","plan","challenge","mask","aiprofile","summarize","verify","playbook","draft"],"respectsSourceBounds":true,"fallback":"engine"},"quote":{"before":"launch","computedBy":"engine","fields":["credits","band","perTool","aboveThreshold"],"threshold":375000,"aboveThreshold":"which source to remove to get back under, and what it saves"},"commits":false,"launchVia":"parallel","launchField":"tools","maxTools":3,"measures":{"agreementRate":"tools/bancs/explorer-2026-09/taux-accord-reconnaissance.mjs","costPerRecognition":"LEDGER"}},"verify":{"tool":"verify","public":true,"page":"/use-cases/two-ais-two-answers/","note":"public since 23/09 (LEAD 16:50): page live; LEDGER measured a real job on the build (2 supported · 1 contradicted checked word for word, $0.29)","steps":[{"step":1,"reads":"the whole corpus","model":"the reading model of the length band","output":"the AI's checkable claims, each with its turn"},{"step":2,"reads":"the claims only, never the conversation","model":"claude-sonnet-5","tool":{"type":"web_search_20260209","name":"web_search","max_uses":6,"allowed_callers":["direct"]},"fetch":{"type":"web_fetch_20260209","name":"web_fetch","max_uses":4,"citations":{"enabled":true},"max_content_tokens":12000,"allowed_callers":["direct"]},"cacheControl":true,"pauseTurn":{"resumed":true,"max":3}}],"verdicts":["supported","contradicted","uncertain","unverifiable"],"claimsMax":10,"price":{"base":3,"condition":"cache_control on step 2 (without it: base 4)","searchUsd":0.01,"announcedBefore":"tools.verify.cost (base × length band), read before launch; a person without enough credits is refused before any call; search fees are never billed to the person"},"runtime":{"maxDurationSeconds":300,"setIn":"vercel.json functions[api/rescue.js]","measured":false,"note":"real duration (searches included) measured by LEDGER's first real job"},"mask":{"layer":"pattern (layer 1: URL · EMAIL · KEY · IBAN · CARD · PHONE · HANDLE)","default":true,"modelSees":false,"optOut":"mask: false"},"rules":{"noVerdictWithoutSource":"supported/contradicted need a source from this job's searches AND an excerpt in text the API returned for it (a citation, the page web_fetch read, or search-code output naming that URL or its domain), never one written by the model alone; a source without a cited excerpt → uncertain at best; no source → unverifiable; since 23/09 the excerpt must also be ON THE PAGE of that source, read in this job by the API (web_fetch) or else downloaded by the engine (reco LEDGER, LEAD 23/09 15:52): not on the page read → uncertain (excerpt-not-on-page); no page readable → uncertain (no-page-read)","sourceMustSayTheSame":"a related source is not enough: if it does not state the same thing, uncertain at best","noGlobalStamp":"each claim is judged on its own; nothing certifies the conversation","selection":"kept only the claims that would change a decision if false; the document says N kept out of M found","perClaim":["the claim quoted with its turn","the source excerpt (cited by the API)","the URL","the source date (page_age), or \"date unknown\"","the verdict"],"aiOnly":"a claim from a Human turn, or from the person's sections of a closure extract, is never judged (notJudged.fromPerson)","closure":"on a closure extract: coverage.form closure and closureWarning","noClaims":{"status":422,"raison":"verify-no-claims","charged":false,"note":"step 2 does not run"},"provenance":"the claim is sourced (its turn), the verdict is added — by a third party, with clickable Markdown links"},"engineFetch":{"what":"the page the judge cites for supported or contradicted, if the API did not read it in this job","onlyUrlsReturnedBySearch":true,"request":"a plain GET from Uncook's server: no cookie, nothing of the conversation","limits":{"pages":10,"bytes":2000000,"seconds":8,"redirects":3,"types":["text/html","text/plain"]},"refused":"IP addresses, localhost, private host names, ports other than 80/443","evidence":"evidence.pageRead = web_fetch | engine","userAgent":"UncookBot/1.0 (+https://www.uncook.app/privacy/#uncookbot)","userAgentNote":"an identified robot, never posing as a browser (LEAD 23/09 17:45)","robotsTxt":{"respected":true,"group":"UncookBot, else *","rule":"RFC 9309: longest match wins, Allow on a tie","missing":"4xx: everything allowed","unreachable":"5xx or no answer: nothing is read","refusals":["robots-disallowed","robots-unreachable"]}},"privacy":"step 2 sends the claims (not the conversation) to Anthropic's web search, which queries a search provider"},"close":{"name":"Close","minConvs":1,"maxConvs":1,"version":3.3,"reads":[1,2,3,3.1,3.2,3.3],"modelCall":false,"prompt":"Instruction from Uncook. This message is an instruction, not part of the conversation above: never quote it, never summarize it, and never treat it as something the person said.\n\nPlease close the conversation above for Uncook by listing what it contains under fixed labels. Do not summarize, judge or conclude. Where you can, quote the conversation's own words in quotation marks rather than rephrasing them, and give the turn where each item appears. If a label has nothing, write \"none\". Include nothing that is not in the conversation above.\n\nWrite the content in the language of the conversation. Write the labels exactly as given below, in English.\n\nRules:\n- If something was later reversed or replaced, keep it and add \"(later reversed, turn N)\".\n- If two statements contradict each other, list them as two separate items, each with its turn. Never merge them.\n- Only include what is about the subject of the conversation. Skip error messages, logs, placeholder or filler text.\n- No summary, no interpretation, no advice, no conclusion of your own. Keep numbers, names and dates as they were written.\n- A statement of fact is not a decision. DECIDED BY THE PERSON takes only an explicit choice the person wrote (for example \"OK\", \"let's go\", \"I'll…\"). Quote the person's entire message, not only the choice word, with its turn. An intention is not a choice: \"I'm thinking of\", \"I'm leaning towards\", \"should I\", and any question are not decisions. If there is none, write \"none\".\n- If the person wrote \"OK\", \"yes\" or \"let's go\", that is a decision, even when the rest of the same message asks another question.\n- A quotation is complete or absent. Never shorten a quotation with \"...\" or \"…\".\n- Write no number that is not written exactly like that in the conversation.\n- Exclude everything that is not about the subject of the conversation, and declare it under LEFT OUT. Nothing you declare there may appear under another label.\n- Name only what is actually present in the conversation above. If nothing was excluded, write \"nothing\".\n- Go through the whole conversation, down to its last turn, before you write. The last turns count as much as the first ones.\n\nYour answer has three parts.\n\n1) Start with a line that reads exactly: === UNCOOK CLOSURE v3.3 ===\nThen three lines:\nSOURCE AI: the name of the assistant you are (for example ChatGPT, Gemini or Claude)\nLEFT OUT: what you did not include and why (for example long code blocks or pasted documents), or \"nothing\"\nREAD: \"N of M turns\", where N is the last turn you went through and M is the number of turns in the conversation. If N is smaller than M, write it anyway: it tells the person what this closure does not cover.\n\n2) Then these seven labels, in this order, each on its own line starting with \"## \", each followed by its items as lines starting with \"- \":\nDECIDED BY THE PERSON: only an explicit choice the person wrote, quoted in full. A suggestion that the person did not confirm is not a decision.\nRECOMMENDED BY THE AI: what the assistant recommended or concluded.\nDISCARDED + WHY: the options that were set aside, with the reason given.\nOPEN + NEXT ACTIONS: the open questions and the next actions that were named.\nAI CLAIMS + SOURCES: the factual claims the assistant made about the subject, each with the source it gave, or \"no source given\".\nOPTIONS COMPARED + CRITERIA: the options that were compared and the criteria used.\nPERSON'S KEY MESSAGES, VERBATIM: the person's messages that carry a decision, a constraint or a change of mind, in quotation marks.\n\n3) End with a line that reads exactly: === END OF UNCOOK CLOSURE ===\nThen one line for the person: \"Paste this result on uncook.app.\"","mark":"=== UNCOOK CLOSURE v3.3 ===","end":"=== END OF UNCOOK CLOSURE ===","headers":["SOURCE AI","LEFT OUT","READ"],"labels":["DECIDED BY THE PERSON","RECOMMENDED BY THE AI","DISCARDED + WHY","OPEN + NEXT ACTIONS","AI CLAIMS + SOURCES","OPTIONS COMPARED + CRITERIA","PERSON'S KEY MESSAGES, VERBATIM"],"labelsLanguage":"English, fixed (machine-read); content in the conversation's language","reversedMark":"(later reversed, turn N)","read":{"header":"READ: N of M turns (v3.3)","engine":"closure.read = { turns, of, partial } as the AI states it, never guessed; a partial read is said in the note","rule":"go through the whole conversation, down to its last turn"},"rulesV3":["DECIDED BY THE PERSON: an explicit choice, the person's whole message quoted — never an intention or a question — else none","no quotation shortened with ...","no number not written as is","exclude what is off-subject and declare it under LEFT OUT; it never reappears","v3.2: \"OK\", \"yes\" or \"let's go\" is a decision even if the same message asks another question","v3.2: LEFT OUT names only what is present; nothing excluded → \"nothing\""],"gemini":{"reliability":"reduced","advice":"prefer the PDF export","pdfImport":"available — POST /api/ingest/ { provider: \"gemini-pdf\" } (text extracted in the browser)"},"pasteBack":"uncook.app","engine":{"detects":"the mark at a line start, in any source (the prompt cites it only mid-sentence)","coverageForm":"closure","neverSays":"full conversation","thin":{"sectionsFilledBelow":3,"charsBelow":400,"advice":"paste-full-conversation"},"reliability":"lower than the full conversation","warnedBy":["blindspot","verify"]},"card":"pending: the catalogue change (Kevin 22/09) waits for LEAD's order; the prompt is served here first","document":{"publicName":"Close","title":"The first line is the mark, exactly: '=== UNCOOK CLOSURE v3.3 ===' (MARQUE, VERSION_CLOTURE 3.3). Engine reads it only at the start of a line (light formatting…","subtitle":"Three header lines right after the mark: 'SOURCE AI: <assistant name>', 'LEFT OUT: <what was not included and why | not…","sections":[{"name":"SOURCE AI","type":"header line","required":true},{"name":"LEFT OUT","type":"header line","required":true},{"name":"READ","type":"header line","required":true},{"name":"## DECIDED BY THE PERSON","type":"list ('- ' items), quotations","required":true},{"name":"## RECOMMENDED BY THE AI","type":"list ('- ')","required":true},{"name":"## DISCARDED + WHY","type":"list ('- ')","required":true},{"name":"## OPEN + NEXT ACTIONS","type":"list ('- ')","required":true},{"name":"## AI CLAIMS + SOURCES","type":"list ('- ')","required":true},{"name":"## OPTIONS COMPARED + CRITERIA","type":"list ('- ')","required":true},{"name":"## PERSON'S KEY MESSAGES, VERBATIM","type":"list of quotations","required":true},{"name":"=== END OF UNCOOK CLOSURE ===","type":"end mark line","required":true},{"name":"Paste this result on uncook.app.","type":"final line for the person","required":true}],"emptyStates":["none","nothing","This extract is thin — paste the full conversation for a reliable reading."],"provenance":["(turn N)","quotation marks","(later reversed, turn N)","no source given","two items for two contradicting statements","engine side: provenance 'inferred', refs_from 'closure'"],"fields":["GET contract `close`","coverage.form / coverage.fullConversation / coverage.closure","advice","closureWarning"],"frame":"documentFrame","example":"/api/rescue/?documents=1#close"}},"documentFrame":{"fields":["jobId","tool","lang","coverage","coverageNote","cutOff / cutOffNote / cutFragment? / guard?","trimmed / cut? / partial?","foreignNumbers / foreignNumbersRaw / foreignNumbersOrigin / foreignNote?","provenanceNote / langNote?","options","maskList / unmasked / maskNote / unmaskedNote? / unmaskedAt?","READER / TONE (prompt effect, not a field)","stamp","manifest[]","usage / costUsd","cost","quota","visitor","deliverable","stated?","tools-path only","legacy-only","mock"],"full":"/api/rescue/?documents=1"},"freeGate":{"role":"guard","perNetwork":30,"perIp":30,"per":"day","key":"network-block","network":{"ipv4":"/24","ipv6":"/56"},"storedKey":"rl:free:<network block>:<day>","fullIpStored":false,"status":429,"raison":"free-ip-cap","resetsAt":"00:00 UTC","separateFrom":"rateLimit.perIp","appliesTo":["the three free tools","recognition","the unaccounted fail-open (non-compte)","detect (/api/detect, the site's topic pre-pass, if it calls the model)"],"notTo":["credits","Pro","API keys","detect for a paying caller (API key, or a signed-in session — sessions are for paying accounts only)"],"pairing":{"from":"detect","to":"the next free job from the same network","withinSeconds":900,"note":"a site Handoff (detect, then the tool) takes ONE place, not two"},"note":"the network, not identity, bounds anonymous access: per network block (/24 IPv4, /56 IPv6), full address never stored; per-actor numbers (freeDaily, recognition.perActor) are the OFFER, not a guard."},"visitorToken":{"name":"dv","purpose":"anti-abuse and free-offer counting only","strictlyNecessary":true,"usedFor":["freeDaily","recognition.perActor","withoutActor"],"notUsedFor":["analytics","audience","events","dashboards","profiling","payment (never sent to Stripe or any third party)"],"linkedToPerson":false},"rework":{"field":"rework","fields":["previous","objection","of"],"objectionMax":2000,"previousMax":60000,"sameSources":true,"cost":{"credits":1,"rule":"min(1, jobCredits)","appliesToolBase":false,"appliesLengthBand":false,"freeToolsFree":true},"oneTool":true,"chain":"of → chain.after","cacheWindow":"5m","perTool":"tools[id].rework","tools":["draft","playbook","cross","review","checkpoint","decide","scope","blindspot","pushback","loop","plan","summarize","ask"],"refusals":["rework-not-offered","rework-one-tool","rework-objection-empty","rework-objection-too-long","rework-previous-empty","rework-previous-too-long"],"status":400},"memory":{"askByLink":{"payer":"the Memory's owner, only with their express consent","consent":{"field":"askPaidByOwner","default":false,"set":"POST /api/account/lien/ { action: \"consulter\", askPaidByOwner: true } — an unticked box at link sharing","setOnShare":"POST /api/account/partage/ { …, askPaidByOwner: true } — same unticked box on a shared document; Ask then takes memory.share (?share= token), that document only"},"perLinkPerDay":10,"resetsAt":"00:00 UTC","refusals":{"link-ask-not-allowed":402,"link-ask-cap":429},"privacy":"text of /privacy/ by EMIL"},"field":"memory","ids":{"min":1,"max":5,"form":"<prefix>:<uuid>","prefixes":["syn","mrg","dig","dec","tool"],"definedBy":"the document's KV key — the `id` of the Memory list (GET /api/account/espace/?vue=memoire, documents[].id) and of the share link"},"access":["session","link-token"],"tokenField":"memory.t","tools":["ask"],"chosenBy":"person","never":"all-that-fits","notFound":{"status":410,"raison":"memory-document-expired"},"refusals":["memory-access-required","memory-ids-required","memory-too-many","memory-document-expired","memory-unavailable","parallel-memory","documents-too-long","link-ask-not-allowed","link-ask-cap"],"refusalStatus":{"link-ask-not-allowed":402,"link-ask-cap":429,"memory-access-required":400,"memory-ids-required":400,"memory-too-many":400,"memory-document-expired":410,"memory-unavailable":503,"parallel-memory":400,"documents-too-long":400}},"unavailable":{"status":503,"reasons":["model-busy","model-refused","model-empty","engine-error"],"charged":false,"retryField":"retry","retryAfterSeconds":30,"incidentField":"incident","phrases":{"model-busy":"Uncook is busy right now, try again in a minute. Nothing was charged.","model-refused":"Uncook could not run this analysis. Nothing was charged — this one is on us, and it has been logged.","model-empty":"The analysis came back empty. Try again — nothing was charged.","engine-error":"Uncook hit an error, try again shortly. Nothing was charged."}},"extension":{"version":"0.33","retention":{"days":0,"ms":0,"where":"device","conversation":false,"holds":"nothing of the chat is kept; sent only on Send to Uncook","server":false,"pages":[],"promised":false},"installId":{"where":"device","until":"uninstall","holds":"a random install number, sent only with a conversation the person sends — it says nothing about them or their device","server":false,"pages":["/privacy/"],"promised":true},"toolChoice":{"where":"device","storage":"session","until":"used or browser closes","holds":"which tool was picked on uncook.app before opening a chat — nothing else — erased once a chat is sent or an export is made with it, or when the browser closes; the site page can read it without erasing it","server":false,"pages":["/privacy/"],"promised":true},"firstSends":{"keys":["uck_envois_reussis"],"where":"device","storage":"local","until":"sign-in or uninstall","max":4,"holds":"until the person signs in, how many chats they sent to Uncook (up to 4), to suggest a free account — a number only, nothing of the chat; it never leaves the extension","server":false,"pages":["/privacy/"],"promised":true},"firstSendsInvite":{"keys":["uck_invitation_eligible"],"where":"device","storage":"session","until":"dismissed, sign-in or browser closes","holds":"true only, after an early chat sent signed out, to offer a free account once; no chat data, never sent","server":false,"pages":[],"promised":false},"exportsInvite":{"keys":["uck_exports_reussis"],"where":"device","storage":"local","until":"uninstall","max":4,"holds":"export count (0-4) to offer a free account once; never sent","server":false,"pages":[],"promised":false},"reloadAuto":{"keys":["uck_reload_auto"],"where":"device","storage":"local","until":"uninstall","holds":"daily reload: on/off, time, date turned on, last run (result, chats, error), missed run; no chat address, title or content","server":false,"pages":[],"promised":false},"reloadAutoToken":{"keys":["uck_reload_auto_jeton"],"where":"device","storage":"session","until":"used, 2 minutes or browser closes","holds":"one-time token for the workspace tab at the daily time; no chat data","server":false,"pages":[],"promised":false},"pageUHidden":{"keys":["uck_u_masques"],"where":"device","storage":"local","until":"local storage cleared or uninstall","holds":"AI site hostnames where the person clicked Hide on this site, with true values only — no chat address, title or content; hides the page U, not Vitals or the Chrome action; never sent","server":false,"pages":["/privacy/"],"promised":true},"vitals":{"keys":["uck_vitals","uck_vitals_annonce","uck_vitals_ia"],"where":"device","storage":"local","until":"uninstall","holds":"whether Vitals is on, on which sites you confirmed you don't use a work account (0.25, uck_vitals_ia), and when its notice was seen — nothing of the chat","server":false,"pages":["/privacy/","/privacy/"],"promised":true},"vitalsAlerts":{"keys":["uck_vitals_alertes"],"where":"device","storage":"session","until":"browser closes","max":20,"hours":24,"holds":"until you close your browser, its recent alerts (which AI, the chat's address and when), so the Uncook page open in your browser can show them — nothing of the chat; they never reach our servers","server":false,"pages":["/privacy/"],"promised":true},"newTab":{"keys":["uck_new_onglet"],"where":"device","storage":"session","until":"browser closes","holds":"the tab and address of an open uncook.app New page, so a chat sent from the extension goes there instead of a new tab — nothing of the chat","server":false,"pages":["/privacy/"],"promised":true},"recentsAccounts":{"keys":["uck_recents_comptes"],"where":"device","storage":"local","until":"uninstall","holds":"per AI site, whether you confirmed \"It's my account, continue\" for recent chats (on, when), and the AIs removed with \"Show in list\" — no chat address, title or content; never sent to Uncook","server":false,"pages":[],"promised":false},"recentsWorkspace":{"keys":["uck_recents_espace"],"where":"device","storage":"session","until":"workspace tab closed or reloaded, leaving the workspace, Off, 3 hours without use, the extension-panel window closed (its entry), or browser closes","max":300,"holds":"in memory only, per workspace tab or extension-panel window (8 entries at most in all): the addresses of the recent chats offered to the workspace (300 at most), AI ids, flags and times — never a title, date or content","server":false,"pages":[],"promised":false}},"lineup":{"active":false},"rateLimit":{"status":429,"raison":"rate-limit","perIp":{"max":15,"windowSeconds":600,"key":"network-block","network":{"ipv4":"/24","ipv6":"/56"},"fullIpStored":false},"perKey":{"max":60,"windowSeconds":600,"header":"x-uck-key","replaces":"perIp","revisable":true,"note":"revised on a real client, not on intuition"},"global":{"max":600,"windowSeconds":3600},"perQuote":{"max":120,"windowSeconds":600,"query":"quote","key":"network-block or key","countsInPerIp":false,"countsInGlobal":false},"perExtension":{"max":30,"windowSeconds":600,"actions":["deposit","retrieve"],"key":"network-block or key","countsInPerIp":false,"countsInGlobal":false},"retryAfterHeader":true,"retryAfterIsRemaining":true},"actorRequired":false,"withoutActor":{"upTo":375000,"beyond":{"status":401,"raison":"actor-required"},"note":"no session, API key or visitor token: short band only; a long read needs one of the three"},"auth":{"header":"x-uck-key","format":"uck_ + 40 hex","status":401,"unknown":"key-unknown","revoked":"key-revoked","unavailable":{"status":503,"raison":"unavailable"},"noCredits":{"status":402,"raison":"cle-sans-credits"},"freeDaily":false,"issue":"POST /api/account/espace/ { cle: \"creer\" } under X-Uck-Session","maxPerAccount":5,"lastSeen":{"field":"vuLe","granularity":"minute","retentionDays":90,"absentWhenNeverSeen":true,"note":"last seen, not proof a key is unused"},"openCode":{"issue":"POST /api/account/session/ { action: \"open-code\" } under X-Uck-Session → { code, expiresIn: 60 }","open":"/workspace-v4/#<section>&open=<code> — in the FRAGMENT, never a query","exchange":"POST /api/account/session/ { code } → { ok: true, session, expiresAt } — a new session for this browser; the page strips &open= first","code":"32 characters base64url (192 random bits), one use, 60 seconds; only a keyed hash kept","refused":"401 { ok: false, reason: \"code-invalid\" } — same whether the code expired, was used or never existed"}},"marketing":{"field":"marketing","values":"true (ticked) | false (unticked: changes nothing, an earlier consent stays; 02/11) — absent: box not shown, nothing recorded","versionField":"marketing_version","versions":{"2026-09-23-account":{"screen":"account","defaultTicked":false,"text":"Email me about Uncook updates and offers. Tick this if you'd like us to email you about Uncook updates and offers. You can unsubscribe from any of those emails."},"2026-09-24-checkout":{"screen":"checkout","defaultTicked":false,"text":"Email me about Uncook updates and offers. Tick this if you'd like us to email you about Uncook updates and offers. You can unsubscribe from any of those emails."},"2026-10-30-optin":{"screen":"account","defaultTicked":false,"text":"Email me a few times about what I can do next with Uncook, including offers. I can unsubscribe in one click."},"2026-11-02-accountcourt":{"screen":"account","defaultTicked":false,"text":"News and offers from Uncook by email · Unsubscribe anytime"}},"label":"Email me about Uncook updates and offers","screens":{"checkout":{"default":false,"text":"Email me about Uncook updates and offers. Tick this if you'd like us to email you about Uncook updates and offers. You can unsubscribe from any of those emails.","version":"2026-09-24-checkout","legacyText":"We may email you about Uncook updates and offers. If you'd rather not, untick this — or unsubscribe from any of those emails.","legacyStatus":"LEGACY pre-ticked box text (served until 24/09): sent without a version, grants nothing (LEAD 24/09 21:47)","basis":"consent — unticked by default; a tick counts ONLY with a known marketing_version","route":"POST /api/billing/checkout/ { produit, email?, marketing, marketing_version }"},"account":{"default":false,"text":"Tick this if you'd like us to email you about Uncook updates and offers. You can unsubscribe from any of those emails.","version":"2026-09-23-account","basis":"consent (a free account bought nothing), unticked by default","route":"POST /api/account/lien/ { email, action, marketing, marketing_version, lang } · POST /api/account/session/ { google, marketing, marketing_version, lang }","short":{"version":"2026-11-02-accountcourt","texts":{"en":"News and offers from Uncook by email · Unsubscribe anytime","fr":"Nouveautés et offres d’Uncook par e-mail · Désinscription à tout moment","de":"Neuigkeiten und Angebote von Uncook per E-Mail · Jederzeit abmelden","es":"Novedades y ofertas de Uncook por email · Date de baja cuando quieras"},"note":"sign-in page's one-line label: marketing_version sent with the link AND Google; the proof keeps the label in the shown language (en, fr, de, es; else en)"}}},"withdrawal":"never overwritten by the system; only the person's own tick re-grants (LEAD 24/09 21:47). An unticked box withdraws nothing (02/11): withdrawal = the unsubscribe link, the mailbox's one-click unsubscribe, or an explicit setting","recordedWhen":"once the email is proven: payment webhook (checkout), sign-in link used (account)","unsubscribe":"one click, in every such email (/api/unsubscribe/, purpose updates-offers); marketing emails also carry List-Unsubscribe + List-Unsubscribe-Post (RFC 8058): the mailbox's POST unsubscribes at once, no page, no sign-in","purpose":"updates-offers","settings":{"route":"GET|POST /api/account/marketing/ + X-Uck-Session (Authorization: Bearer accepted)","read":"GET → 200 { ok:true, abonne: true|false, version: \"<version>\"|null, depuis: \"<ISO>\"|null }","withdraw":"POST { choix:false } (Content-Type: application/json) → 200 { ok:true, abonne:false }, idempotent: proof erased, keyed fingerprint on the opt-out list, marketing_consents → withdrawn (withdrawn_via settings), consent_withdrawn in audit_log","subscribe":"POST { choix:true } → 409 no-settings-version: no settings text exists, so nothing is granted from Settings","errors":["401 no-session","400 json-required | body-invalid","405 method-not-allowed","409 no-settings-version","429 rate-limited","503 unavailable"],"errorShape":"{ ok:false, reason, error }: reason and error carry one value","scope":"the session's own account only (its fingerprint); no address in body or URL","failure":"any KV or database error, read or write (per-command pipeline error, unexpected result, timeout included) → 503 unavailable, never 200; abonne:false only after a re-read confirms the proof gone and the opt-out set"}},"invitations":{"grants":"Pro for 90 days by default (each lot says its own `proDays`), no payment","costCapUsdPerMonth":30,"activations":"GET /api/account/invitation/?stats=1 (cron secret) — code, circle, activation, Pro until, costUsd since activation, account fingerprint","singleUse":true,"provenEmail":"the code becomes an email link; using it grants Pro and opens a session","lots":{"fractionals-united":{"codes":20,"redeemBy":"2026-12-31T23:59:59.000Z","proDays":90},"lead-fractional":{"codes":20,"redeemBy":"2026-12-31T23:59:59.000Z","proDays":90},"linkedin-kevin":{"codes":20,"redeemBy":"2026-12-31T23:59:59.000Z","proDays":45},"agences":{"codes":10,"redeemBy":"2026-12-31T23:59:59.000Z","proDays":90},"equipe-budapest":{"codes":30,"redeemBy":"2026-12-31T23:59:59.000Z","proDays":45}},"route":"POST /api/account/invitation/ { email, code, lang? } → email link ; POST /api/account/invitation/ { t } → { session, proUntil }","refusals":{"invite-invalid":400,"invite-expired":410,"invite-used":409,"already-pro":409},"after":"after its lot's Pro days the account is read-only (not Pro); kept documents follow the retention rule: 30 days after the end"},"costCap":{"measuredOn":"costUsd of each delivered tool job and paid debrief model reply, per account, per UTC month","refusal":{"status":429,"raison":"monthly-cost-cap"},"appliesTo":"every account, free included, on the site, API keys and MCP: plans.costCapUsdMonth; 5 for brl/mxn/cop/inr/mad/ngn","note":"a model-cost safety net, never shown as a price; a refusal charges nothing"},"range":{"field":"range","unit":"messages","wholeMessages":true,"minMessages":2,"auto":false,"onResult":"partial","refusal":"long-reading-not-enabled","cuts":false},"coverage":{"onEvery":"200","field":"coverage","turnsRead":"coverage.turnsKept","turnsTotal":"coverage.turnsTotal","charsRead":"coverage.charsKept","charsTotal":"coverage.charsTotal","perSource":"coverage.sources[] { kept, total, unreadParts?, windows? }","form":["head","range","headTail","diagonal","closure"],"note":"coverageNote (a sentence a person reads)","partial":"partial[] when a range was chosen","recognition":"form diagonal — windows per source, turnsKept < turnsTotal on a long conversation","closure":"form closure when a source carries the Uncook closure mark — an extract written by the AI, never the full conversation; see close"},"alternatives":{"keyedBy":"sourceCount","sourceCounts":[1,2,3],"ordered":true,"unit":"tool-id","reasons":["before","after","angle","narrower"],"events":["alt_shown","alt_clicked","alt_launched","result_kept"]},"tools":{"confront":{"minConvs":1,"maxConvs":3,"needsQuestion":false,"needsDestination":false,"blocks":{"machineRead":false,"headers":["MEETS THE REFERENCE","MISSING","CONTRADICTS"]},"formats":["text","markdown"],"shape":"sources","cost":{"credits":2,"unit":"job","perSource":375000,"perJob":375000,"toolBase":2,"lengthCredits":1,"combine":"multiply"},"rework":false,"alternatives":{"1":[{"tool":"decide","why":"after"},{"tool":"blindspot","why":"angle"}],"2":[{"tool":"decide","why":"after"},{"tool":"blindspot","why":"angle"}],"3":[{"tool":"decide","why":"after"},{"tool":"blindspot","why":"angle"}]},"document":{"title":"None. The prompt forbids anything but the three blocks: 'Output ONLY the report — no preamble, no closing remark.' The engine adds no title and the tool respon…","subtitle":null,"sections":[{"name":"MEETS THE REFERENCE","type":"bulleted list ('- '), one line per item","required":true},{"name":"MISSING","type":"bulleted list ('- ')","required":true},{"name":"CONTRADICTS","type":"bulleted list ('- ') quoting both sides","required":true}],"emptyStates":["Nothing.","need the reference documents","reference N: this PDF has no readable text (a scan?). Uncook does not read images — paste the text instead.","need 1 to 3 reference documents"],"provenance":["R1 / R2 / R3 (reference anchor)","⟨sourced N:T⟩","'— not in the conversations' (literal text, stays in the document)","common level-mark directive (⟨sourced⟩/⟨inferred⟩/⟨added⟩) is also appended to the system prompt"],"fields":["no tool-specific sidecar","model / cost","footer lines appended to result (and returned as fields cov…"],"frame":"documentFrame","example":"/api/rescue/?documents=1#confront"},"inCatalogue":false,"role":"step"},"draft":{"minConvs":1,"maxConvs":3,"needsQuestion":false,"needsDestination":false,"blocks":{"machineRead":true,"headers":["WHAT THIS IS ABOUT","FIXED","RULED OUT","OPEN POINTS","TO CONFIRM","NEXT ACTIONS"],"markers":["NOTHING TO DRAFT YET"]},"formats":["text","markdown"],"shape":"sources","cost":{"credits":1,"unit":"job","perSource":375000,"perJob":375000,"toolBase":1,"lengthCredits":1,"combine":"multiply"},"rework":true,"alternatives":{"1":[{"tool":"plan","why":"after"},{"tool":"summarize","why":"narrower"}],"2":[{"tool":"cross","why":"before"},{"tool":"plan","why":"after"}],"3":[{"tool":"cross","why":"before"},{"tool":"plan","why":"after"}]},"public":{"name":"Draft","slug":"draft","page":"/use-cases/from-chat-to-document/"},"document":{"publicName":"Draft","title":"None produced by the engine. The prompt says 'Output ONLY the draft. No preamble'; the first block WHAT THIS IS ABOUT is not a title. The tool response has no …","subtitle":"null as such. The closest element the code exposes is the sidecar `about` = the FIRST LINE of the WHAT THIS IS ABOUT bl…","sections":[{"name":"WHAT THIS IS ABOUT","type":"paragraph (1-2 lines)","required":true},{"name":"FIXED","type":"bulleted list ('- '), each bullet ENDS with '→ [O1]' (one or more existing ids, e.g. '→ […","required":true},{"name":"RULED OUT","type":"bulleted list ('- '), same '→ [Ox]' form","required":true},{"name":"OPEN POINTS","type":"bulleted list, each bullet OPENS with its id [O1] [O2]…","required":true},{"name":"TO CONFIRM","type":"bulleted list, each bullet opens with [C1] [C2]…","required":true},{"name":"NEXT ACTIONS","type":"bulleted list, each bullet opens with [A1] [A2]…","required":true}],"emptyStates":["NOTHING TO DRAFT YET",{"rule":"(prose line in FIXED) e.g. 'nothing settled constrains what is open'"}],"provenance":["[O#] / [C#] / [A#] ids and '→ [O#]' references","⟨sourced n:t⟩ / ⟨inferred⟩ / ⟨added⟩"],"fields":["about, fixed[], ruledOut[], openPoints[], toConfirm[], next…","draftTally {fuites, seauxBrief, blocs, orphelines, pendante…","structure","footer lines appended to result (and returned as fields cov…"],"frame":"documentFrame","example":"/api/rescue/?documents=1#draft"},"exports":{"download":{"formats":["markdown","docx","pdf"],"where":"browser"},"google_drive":{"format":"docx","becomes":"google_docs","scope":"https://www.googleapis.com/auth/drive.file","clientId":"227186412311-qh082f0ndtmc2smjoqo2fvrjr0i408j7.apps.googleusercontent.com","token":"browser only, never reaches Uncook","popup":true,"fallback":{"mode":"redirect","flow":"auth code + PKCE","exchange":"/api/connect/google-drive/","returnTo":["https://www.uncook.app/workspace-v4/","https://www.uncook.app/_p/test-drive/"]},"recordedAs":"exports row + `exported` (POST /api/account/espace/ { fate }), kept docs only"}}},"playbook":{"minConvs":1,"maxConvs":3,"needsQuestion":false,"needsDestination":false,"blocks":{"machineRead":true,"headers":["REUSABLE PROMPT","GOAL","WHEN TO USE","WHAT YOU NEED","STEPS","PITFALLS","OPEN POINTS"],"markers":["NO PROCEDURE FOUND"],"segments":["— check:"]},"formats":["text","markdown"],"shape":"sources","cost":{"credits":2,"unit":"job","perSource":375000,"perJob":375000,"toolBase":2,"lengthCredits":1,"combine":"multiply"},"rework":true,"alternatives":{"1":[{"tool":"plan","why":"after"},{"tool":"summarize","why":"narrower"}],"2":[{"tool":"plan","why":"after"}],"3":[{"tool":"plan","why":"after"}]},"public":{"name":"Playbook","slug":"playbook","page":"/use-cases/from-chat-to-document/"},"document":{"publicName":"Playbook","title":"None: OUTPUT DISCIPLINE says 'no title of your own'. GOAL is a one-sentence statement, not a title.","subtitle":null,"sections":[{"name":"REUSABLE PROMPT","type":"paste-ready prompt (prose) with {{variables}}","required":true},{"name":"GOAL","type":"one sentence","required":true},{"name":"WHEN TO USE","type":"short paragraph","required":true},{"name":"WHAT YOU NEED","type":"short paragraph","required":true},{"name":"STEPS","type":"numbered list '1. ' (ONE line per step: verb + object), optional segment ' — check: <how …","required":true},{"name":"PITFALLS","type":"bulleted list '- '","required":true},{"name":"OPEN POINTS","type":"bulleted list '- '","required":true}],"emptyStates":["NO PROCEDURE FOUND"],"provenance":["⟨sourced n:t⟩","⟨inferred⟩","⟨added⟩"],"fields":["steps[] {seq, text, check, level, declared, verified, refs}","pitfalls[], openPoints[] {text, level, declared, refs}","variables[] {name}","playbookTally {steps, withCheck, pitfalls, variables, sourc…","structure {complete, empty, missing, blocs, defauts[], play…","footer lines appended to result (and returned as fields cov…"],"frame":"documentFrame","example":"/api/rescue/?documents=1#playbook"},"exports":{"download":{"formats":["markdown","docx","pdf"],"where":"browser"},"google_drive":{"format":"docx","becomes":"google_docs","scope":"https://www.googleapis.com/auth/drive.file","clientId":"227186412311-qh082f0ndtmc2smjoqo2fvrjr0i408j7.apps.googleusercontent.com","token":"browser only, never reaches Uncook","popup":true,"fallback":{"mode":"redirect","flow":"auth code + PKCE","exchange":"/api/connect/google-drive/","returnTo":["https://www.uncook.app/workspace-v4/","https://www.uncook.app/_p/test-drive/"]},"recordedAs":"exports row + `exported` (POST /api/account/espace/ { fate }), kept docs only"}},"inCatalogue":false,"role":"capital"},"cross":{"minConvs":2,"maxConvs":3,"needsQuestion":false,"needsDestination":false,"blocks":{"machineRead":false,"headers":["CORROBORATED","DIVERGING","ONLY ONE SAID","NOT COVERED","THE MAP AT A GLANCE"]},"formats":["text","markdown"],"shape":"sources","cost":{"credits":1,"unit":"job","perSource":375000,"perJob":375000,"toolBase":1,"lengthCredits":1,"combine":"multiply"},"rework":true,"alternatives":{"1":[{"tool":"decide","why":"after"},{"tool":"blindspot","why":"angle"},{"tool":"plan","why":"after"}],"2":[{"tool":"decide","why":"after"},{"tool":"blindspot","why":"angle"},{"tool":"plan","why":"after"}],"3":[{"tool":"decide","why":"after"},{"tool":"blindspot","why":"angle"},{"tool":"plan","why":"after"}]},"public":{"name":"Compare","slug":"compare","page":"/use-cases/two-ais-two-answers/"},"document":{"publicName":"Compare","title":"No title line. Output starts with a two-part INTRO (2-3 lines): (1) one line on what the report maps for these N conversations; (2) the conversations received,…","subtitle":null,"sections":[{"name":"(INTRO, no header)","type":"paragraph, 2 parts","required":true},{"name":"CORROBORATED","type":"bulleted list ('· ') each followed by an indented robustness line","required":true},{"name":"DIVERGING","type":"bulleted list, both sides attributed, + indented robustness line","required":true},{"name":"ONLY ONE SAID","type":"grouped list: sub-block per source (sub-header = source identity), bullets + indented rob…","required":true},{"name":"NOT COVERED","type":"bulleted list of open questions + indented robustness line","required":true},{"name":"THE MAP AT A GLANCE","type":"bulleted telegraphic recap (one line per angle, block order)","required":true},{"name":"(CLOSING LINE, no header)","type":"fixed sentence","required":true},{"name":"(END NOTE, no header)","type":"fixed sentence","required":false}],"emptyStates":[{"rule":"(free wording) a single honest line"},"CUT SHORT","not found in what I read"],"provenance":["Source identity '{lab} — {name}' (or {name} alone when no lab)","STRONG / MODERATE / THIN — {grounds}","⟨sourced S:T[, S:T…]⟩ · ⟨inferred⟩ · ⟨added⟩ (engine-wide mark)"],"fields":[],"frame":"documentFrame","example":"/api/rescue/?documents=1#cross"},"exports":{"download":{"formats":["markdown","docx","pdf"],"where":"browser"},"google_drive":{"format":"docx","becomes":"google_docs","scope":"https://www.googleapis.com/auth/drive.file","clientId":"227186412311-qh082f0ndtmc2smjoqo2fvrjr0i408j7.apps.googleusercontent.com","token":"browser only, never reaches Uncook","popup":true,"fallback":{"mode":"redirect","flow":"auth code + PKCE","exchange":"/api/connect/google-drive/","returnTo":["https://www.uncook.app/workspace-v4/","https://www.uncook.app/_p/test-drive/"]},"recordedAs":"exports row + `exported` (POST /api/account/espace/ { fate }), kept docs only"}}},"voice":{"minConvs":1,"maxConvs":3,"needsQuestion":false,"needsDestination":false,"blocks":{"machineRead":false,"headers":["VOICE","PREFERENCES","HOW THEY DECIDE","CONSTRAINTS THEY REPEAT","SEEN ONCE","USE THIS PROFILE"],"optional":["SEEN ONCE"]},"formats":["text","markdown"],"shape":"sources","cost":{"credits":0,"unit":"job","perSource":375000,"perJob":375000,"payerFreeUpTo":375000},"rework":false,"alternatives":{"1":[{"tool":"blindspot","why":"angle"},{"tool":"summarize","why":"narrower"}],"2":[{"tool":"blindspot","why":"angle"}],"3":[{"tool":"blindspot","why":"angle"}]},"public":{"name":"AI Profile","slug":"aiprofile","page":"/ai-profile/"},"document":{"publicName":"AI Profile","title":"No title line. Opens with one or two short sentences addressed to the future AI instituting it (never spoke with the user; inherits a profile drawn from N past…","subtitle":null,"sections":[{"name":"(INTRO, no header)","type":"paragraph addressed to a future AI (second person)","required":true},{"name":"VOICE","type":"paragraph / lines","required":true},{"name":"PREFERENCES","type":"bulleted list ('· ')","required":true},{"name":"HOW THEY DECIDE","type":"bulleted list","required":true},{"name":"CONSTRAINTS THEY REPEAT","type":"bulleted list","required":true},{"name":"SEEN ONCE","type":"bulleted list","required":false},{"name":"USE THIS PROFILE","type":"single instruction line","required":true}],"emptyStates":[{"rule":"(free wording) one honest line inside the relevant section"},{"rule":"section omitted"},"CUT SHORT","not found in what I read"],"provenance":["Trace: frequency ('seen in 3 of 4 conversations') or a SHORT verbatim quote in quotes","'seen once'","⟨sourced S:T[, S:T…]⟩ · ⟨inferred⟩ · ⟨added⟩ (engine-wide mark)"],"fields":[],"frame":"documentFrame","example":"/api/rescue/?documents=1#voice"},"exports":{"download":{"formats":["markdown","docx","pdf"],"where":"browser"},"google_drive":{"format":"docx","becomes":"google_docs","scope":"https://www.googleapis.com/auth/drive.file","clientId":"227186412311-qh082f0ndtmc2smjoqo2fvrjr0i408j7.apps.googleusercontent.com","token":"browser only, never reaches Uncook","popup":true,"fallback":{"mode":"redirect","flow":"auth code + PKCE","exchange":"/api/connect/google-drive/","returnTo":["https://www.uncook.app/workspace-v4/","https://www.uncook.app/_p/test-drive/"]},"recordedAs":"exports row + `exported` (POST /api/account/espace/ { fate }), kept docs only"}},"inCatalogue":false,"role":"capital"},"recall":{"minConvs":1,"maxConvs":3,"needsQuestion":true,"needsDestination":false,"blocks":{"machineRead":false,"headers":["ANSWER","SOURCE","ALSO SAID"],"optional":["ALSO SAID"],"alternate":["NOT IN THESE CONVERSATIONS"]},"formats":["text","markdown"],"shape":"sources","cost":{"credits":1,"unit":"job","perSource":375000,"perJob":375000,"toolBase":1,"lengthCredits":1,"combine":"multiply"},"rework":false,"alternatives":{"1":[{"tool":"summarize","why":"narrower"},{"tool":"plan","why":"after"}],"2":[{"tool":"plan","why":"after"}],"3":[{"tool":"plan","why":"after"}]},"document":{"title":"No title. INTRO (2-3 lines): (1) 'I searched your N conversation(s) for: \"…\"' with the user's own words and real count; (2) the conversations provided, each '{…","subtitle":null,"sections":[{"name":"(INTRO, no header)","type":"gesture line + list of sources","required":true},{"name":"ANSWER","type":"paragraph","required":true},{"name":"SOURCE","type":"citation line","required":true},{"name":"ALSO SAID","type":"citation line + one plain line noting the difference","required":false},{"name":"NOT IN THESE CONVERSATIONS","type":"alternate whole output (replaces ANSWER/SOURCE/ALSO SAID)","required":false}],"emptyStates":["NOT IN THESE CONVERSATIONS","NOT FOUND IN THE PARTS I READ","need what to look for","CUT SHORT","not found in what I read"],"provenance":["SOURCE / ALSO SAID line: '{lab} — {name}, position — \"verbatim quote\"'","⟨sourced S:T[, S:T…]⟩ · ⟨inferred⟩ · ⟨added⟩ (engine-wide mark)"],"fields":[],"frame":"documentFrame","example":"/api/rescue/?documents=1#recall"}},"review":{"minConvs":1,"maxConvs":1,"needsQuestion":false,"needsDestination":false,"formats":["text","markdown"],"shape":"sources","cost":{"credits":1,"unit":"job","perSource":375000,"perJob":375000,"toolBase":1,"lengthCredits":1,"combine":"multiply"},"rework":true,"alternatives":{"1":[{"tool":"blindspot","why":"angle"},{"tool":"decide","why":"after"}],"2":[{"tool":"blindspot","why":"angle"},{"tool":"decide","why":"after"}],"3":[{"tool":"blindspot","why":"angle"},{"tool":"decide","why":"after"}]},"document":{"title":"No title, no intro: sections in the exact order, 'nothing else around them'. Output starts with WHAT WAS ASKED.","subtitle":null,"sections":[{"name":"WHAT WAS ASKED","type":"paragraph","required":true},{"name":"WHAT GOT DECIDED","type":"bulleted list, chronological","required":true},{"name":"WHERE IT LOOPED","type":"bulleted list","required":true},{"name":"LEFT OPEN","type":"bulleted list","required":true},{"name":"ONE LINE","type":"one-line verdict","required":true}],"emptyStates":["No real loop — the thread moved forward.","CUT SHORT","not found in what I read"],"provenance":["Attribution 'set by the user' / 'proposed by the AI' + a relative moment","⟨sourced S:T[, S:T…]⟩ · ⟨inferred⟩ · ⟨added⟩ (engine-wide mark)"],"fields":["max_tokens"],"frame":"documentFrame","example":"/api/rescue/?documents=1#review"}},"checkpoint":{"minConvs":2,"maxConvs":3,"needsQuestion":false,"needsDestination":false,"blocks":{"machineRead":false,"headers":["AGREED","DIVERGING","NOT SETTLED","THE TALLY"],"titles":{"English":["Where your chats agree","Where they differ","What's still open","At a glance"],"French":["Là où vos chats s'accordent","Là où ils divergent","Ce qui reste ouvert","En bref"],"German":["Worin deine Chats übereinstimmen","Worin sie sich unterscheiden","Was noch offen ist","Auf einen Blick"],"Spanish":["En qué coinciden tus chats","En qué difieren","Lo que sigue abierto","De un vistazo"],"Portuguese":["Onde seus chats concordam","Onde eles divergem","O que ainda está em aberto","Em resumo"],"Japanese":["チャット間で一致している点","食い違っている点","まだ決まっていないこと","ひと目でわかるまとめ"],"Italian":["Dove le tue chat concordano","Dove divergono","Cosa resta aperto","In sintesi"],"Latin American Spanish":["En qué coinciden tus chats","En qué difieren","Lo que sigue abierto","De un vistazo"],"European Portuguese":["Onde as suas conversas concordam","Onde divergem","O que continua em aberto","Em resumo"]},"titlesReplaceHeaders":"always: the model writes `headers`, the engine swaps them for `titles` in the output language before returning"},"formats":["text","markdown"],"shape":"sources","cost":{"credits":1,"unit":"job","perSource":375000,"perJob":375000,"toolBase":1,"lengthCredits":1,"combine":"multiply"},"rework":true,"alternatives":{"1":[{"tool":"plan","why":"after"},{"tool":"decide","why":"after"}],"2":[{"tool":"cross","why":"angle"},{"tool":"plan","why":"after"},{"tool":"decide","why":"after"}],"3":[{"tool":"cross","why":"angle"},{"tool":"plan","why":"after"},{"tool":"decide","why":"after"}]},"document":{"title":"No title. TWO-PART INTRO (2-3 lines): (1) one line on what this memo does for these N conversations; (2) every conversation received by its source identity. No…","subtitle":null,"sections":[{"name":"(INTRO, no header)","type":"paragraph, 2 parts","required":true},{"name":"Where your chats agree","type":"bulleted list","required":true},{"name":"Where they differ","type":"bulleted list, both sides attributed","required":true},{"name":"What's still open","type":"bulleted list","required":true},{"name":"At a glance","type":"count line","required":true},{"name":"(CLOSING LINE, no header)","type":"fixed sentence","required":true}],"emptyStates":["Nothing agreed across sources yet.","No point where the sources contradict each other.","Nothing left open in the sources.","0 agreed · 0 diverging · 0 still open — the sources gave this memo nothing to hold.","CUT SHORT","not found in what I read"],"provenance":["Source identity '{lab} — {name}' or {name} alone","⟨sourced S:T[, S:T…]⟩ · ⟨inferred⟩ · ⟨added⟩ (engine-wide mark)"],"fields":[],"frame":"documentFrame","example":"/api/rescue/?documents=1#checkpoint"}},"mask":{"minConvs":1,"maxConvs":1,"needsQuestion":false,"needsDestination":false,"blocks":{"machineRead":true,"headers":[],"layers":["pattern","read"],"listMarker":"SENSITIVE ITEMS"},"formats":["text","markdown","csv"],"shape":"sources","cost":{"credits":0,"unit":"job","perSource":375000,"perJob":375000,"payerFreeUpTo":375000,"layers":{"pattern":{"families":["URL","EMAIL","KEY","IBAN","CARD","PHONE","HANDLE"],"guarantee":"exact","modelSees":false,"maxWord":2048},"read":{"families":["PERSON","ORG","PLACE","HEALTH","ID","AMOUNT","URL","EMAIL","KEY","IBAN","CARD","PHONE","HANDLE"],"guarantee":"best-effort","modelSees":true}}},"rework":false,"alternatives":{"1":[{"tool":"summarize","why":"narrower"},{"tool":"handoff","why":"angle"}],"2":[],"3":[]},"public":{"name":"Mask","slug":"mask","page":"/privacy/"},"document":{"publicName":"Mask","title":"None. The model outputs only a list; the code builds the output. The first line of `result` is a fixed disclosure line (not a title).","subtitle":null,"sections":[{"name":"(truncation line, optional) 'THE LIST WAS CUT SHORT: the {n} items below were masked, but more were being found when the limit was reached. Assume names remain readable.'","type":"single line","required":false},{"name":"(head line) Emails, links, keys, card and bank numbers, phone numbers and handles are masked by pattern. Names, companies, places, health details, ID numbers and personal amounts are masked as best we can: a different spelling of the same name can escape. Read it once with your own eyes before sharing.","type":"fixed paragraph (constant, 5 languages)","required":true},{"name":"(body) '[turn N · Human]' / '[turn N · AI]' blocks","type":"the whole conversation re-emitted turn by turn, originals replaced by aliases '[FAMILY-n]'","required":true},{"name":"MASK LIST (separate field maskList, never in result)","type":"warning line, then groups: FAMILY header line followed by '[ALIAS] — FAMILY — original' l…","required":true}],"emptyStates":["Nothing was masked. Read it once more with your own eyes before sharing.","SENSITIVE ITEMS: NONE"],"provenance":["none — Mask has no level marks (sansNiveaux: no level directive, no mark expected)","layers {pattern: guarantee 'exact', modelSees false; read: guarantee 'best-effort', modelSees true} + counts","footer provenance line 'Source read: … Not verified outside this conversation.' still appended"],"fields":["maskList, entries[] {alias, family, original}, csv","masked {pattern, read, total}, layers, families, modelCall:…","notFound[] (families), duplicates, unparsed, truncated","unmasked[] (aliases), unmaskedNote, unmaskedAt[] {alias, li…","no deliverable","footer lines appended to result (and returned as fields cov…"],"frame":"documentFrame","example":"/api/rescue/?documents=1#mask"},"exports":{"download":{"formats":["markdown","docx","pdf"],"where":"browser"},"google_drive":{"format":"docx","becomes":"google_docs","scope":"https://www.googleapis.com/auth/drive.file","clientId":"227186412311-qh082f0ndtmc2smjoqo2fvrjr0i408j7.apps.googleusercontent.com","token":"browser only, never reaches Uncook","popup":true,"fallback":{"mode":"redirect","flow":"auth code + PKCE","exchange":"/api/connect/google-drive/","returnTo":["https://www.uncook.app/workspace-v4/","https://www.uncook.app/_p/test-drive/"]},"recordedAs":"exports row + `exported` (POST /api/account/espace/ { fate }), kept docs only"}},"inCatalogue":false,"role":"legacy"},"decide":{"minConvs":1,"maxConvs":3,"needsQuestion":{"preflight":false,"call":true},"needsDestination":{"preflight":false,"call":true},"phases":["preflight","call"],"messageQuestion":"need the decision","blocks":{"machineRead":true,"headers":["OUR CALL","WHY THIS WINS","THE BEST CASE AGAINST","WHAT COULD CHANGE THE CALL"],"alternate":["NO CALL YET","WHY IT'S TOO CLOSE","WHAT'S MISSING","PROMPT TO CLARIFY"]},"formats":["text","markdown"],"shape":"sources","cost":{"credits":2,"unit":"job","perSource":375000,"perJob":375000,"toolBase":2,"lengthCredits":1,"combine":"multiply","freePhases":["preflight"],"freePhasesUpTo":375000,"phased":true,"bands":[{"upTo":375000,"per":187500,"creditsPerUnit":1,"rounding":"started-slice-counts","freeToolsFree":false}],"perSlice":{"chars":187500,"credits":2,"from":0,"rounding":"started-slice-counts"}},"rework":{"preflight":false,"call":true},"alternatives":{"1":[{"tool":"blindspot","why":"angle"},{"tool":"plan","why":"after"}],"2":[{"tool":"blindspot","why":"angle"},{"tool":"cross","why":"before"},{"tool":"plan","why":"after"}],"3":[{"tool":"blindspot","why":"angle"},{"tool":"cross","why":"before"},{"tool":"plan","why":"after"}]},"public":{"name":"Decide","slug":"decide","page":"/use-cases/stuck-on-a-decision/"},"document":{"publicName":"Decide","title":"The engine writes NO title. The closest title-like string the engine returns is the preflight's `decision` field — the one-sentence decision read from the line…","subtitle":null,"sections":[{"name":"Some conversations were longer than this tool can read: for {source names}, only the most recent {N} of {M} turns were weighed — earlier turns were NOT.","type":"single line (truncation warning)","required":false},{"name":"PHASE preflight — THE DECISION WE UNDERSTOOD: {one sentence}","type":"machine marker line + one editable sentence","required":true},{"name":"PHASE preflight — VERDICT: CALL | VERDICT: NO CALL YET","type":"machine verdict line","required":true},{"name":"[call, prompt destination only] framing line","type":"single line addressed to the next AI","required":false},{"name":"OUR CALL","type":"decision/verdict paragraph","required":true},{"name":"WHY THIS WINS","type":"reasons, each tied to its source","required":true},{"name":"THE BEST CASE AGAINST","type":"paragraph(s), tied to sources the same way","required":true},{"name":"WHAT COULD CHANGE THE CALL","type":"list of concrete reversal conditions","required":true},{"name":"NO CALL YET","type":"alternate output (abstention): replaces the four call blocks entirely","required":false},{"name":"(footer, engine-appended)","type":"footer lines","required":true}],"emptyStates":["NO CALL YET","VERDICT: NO CALL YET\n\nNO CALL YET\nUncook could not read this file to a call: the model's reasoning used the whole output budget before a single line came out. Nothing below comes from the conversations. ⟨added⟩\n\nWHY IT'S TOO CLOSE\nNot established — the reading did not complete, so no reading of the sources is reported here. ⟨added⟩\n\nWHAT'S MISSING\nA reading that completes. Name in one sentence the decision you are trying to settle, or run it again with fewer or shorter conversations. ⟨added⟩\n\nPROMPT TO CLARIFY\nWhat decision are you trying to settle from this conversation?\nWhich options are on the table?\nWhat would make one of them unacceptable to you? ⟨added⟩"],"provenance":["{lab} — {title}: … \"a few quoted words\"","<echoes> pairs (duplicate | derived)","⟨sourced N:T⟩ / ⟨inferred⟩ / ⟨added⟩","⟨added⟩ on every line"],"fields":["decision / verdict (preflight)","mode / structure (call)","echoes","abstainOrigin / stopReason"],"frame":"documentFrame","example":"/api/rescue/?documents=1#decide"},"exports":{"download":{"formats":["markdown","docx","pdf"],"where":"browser"},"google_drive":{"format":"docx","becomes":"google_docs","scope":"https://www.googleapis.com/auth/drive.file","clientId":"227186412311-qh082f0ndtmc2smjoqo2fvrjr0i408j7.apps.googleusercontent.com","token":"browser only, never reaches Uncook","popup":true,"fallback":{"mode":"redirect","flow":"auth code + PKCE","exchange":"/api/connect/google-drive/","returnTo":["https://www.uncook.app/workspace-v4/","https://www.uncook.app/_p/test-drive/"]},"recordedAs":"exports row + `exported` (POST /api/account/espace/ { fate }), kept docs only"}}},"scope":{"minConvs":1,"maxConvs":3,"needsQuestion":false,"needsDestination":true,"formats":["text","markdown"],"shape":"sources","cost":{"credits":1,"unit":"job","perSource":375000,"perJob":375000,"toolBase":1,"lengthCredits":1,"combine":"multiply"},"rework":true,"alternatives":{"1":[{"tool":"summarize","why":"narrower"},{"tool":"plan","why":"after"}],"2":[{"tool":"plan","why":"after"}],"3":[{"tool":"plan","why":"after"}]},"document":{"title":"No fixed title rule of its own: Scope REUSES the four base templates of api/rescue.js. Document destination (SYSTEM_NOTE) opens with '[One or two plain sentenc…","subtitle":null,"sections":[{"name":"DOCUMENT, 1 source (SYSTEM_NOTE) — intro","type":"one or two plain sentences","required":true},{"name":"WHAT THIS IS ABOUT","type":"paragraph","required":true},{"name":"DECIDED (validated in the conversation)","type":"bulleted list ('· ')","required":true},{"name":"TO CONFIRM (proposed, not yet validated)","type":"bulleted list ('· ')","required":true},{"name":"CONTRADICTIONS / REVISIONS","type":"bulleted list","required":false},{"name":"NEXT ACTIONS","type":"bulleted list ('· ')","required":true},{"name":"OPEN QUESTIONS","type":"bulleted list","required":false},{"name":"\"This note only reorganises what was in the conversation. Anything unconfirmed is flagged as such.\"","type":"closing line","required":true},{"name":"DOCUMENT, 2-3 sources (SYSTEM_NOTE + MULTI_SOURCE_NOTE_SPEC)","type":"same structure plus a two-part intro","required":false},{"name":"PROMPT, 1 source (SYSTEM handoff)","type":"handoff addressed to a future AI","required":false},{"name":"PROMPT, 2-3 sources (SYSTEM_SECTIONED + source bridge)","type":"sectioned handoff","required":false},{"name":"(footer, engine-appended)","type":"footer lines","required":true}],"emptyStates":[{"rule":"none fixed"}],"provenance":["DECIDED vs TO CONFIRM buckets","\"{lab} — {title}\" / \"decided in <title>\"","⟨sourced N:T⟩ / ⟨inferred⟩ / ⟨added⟩"],"fields":["category"],"frame":"documentFrame","example":"/api/rescue/?documents=1#scope"}},"blindspot":{"minConvs":1,"maxConvs":3,"needsQuestion":false,"needsDestination":true,"blocks":{"machineRead":true,"headers":["WHAT THIS COVERS","NEVER ASKED","WHAT WAS COVERED"],"markers":["sits next to","not addressed anywhere"]},"formats":["text","markdown"],"shape":"sources","cost":{"credits":2,"unit":"job","perSource":375000,"perJob":375000,"toolBase":2,"lengthCredits":1,"combine":"multiply"},"rework":true,"alternatives":{"1":[{"tool":"decide","why":"after"},{"tool":"plan","why":"after"},{"tool":"summarize","why":"narrower"}],"2":[{"tool":"decide","why":"after"},{"tool":"plan","why":"after"}],"3":[{"tool":"decide","why":"after"},{"tool":"plan","why":"after"}]},"public":{"name":"Challenge","slug":"challenge","page":"/use-cases/stuck-on-a-decision/"},"document":{"publicName":"Challenge","title":"The engine writes NO title. The first block WHAT THIS COVERS is a one-line statement of the subject (the nearest thing to a title in the output). Kept-document…","subtitle":null,"sections":[{"name":"Not everything was read: {the unread ranges, per source}. A question listed below may have been asked in the part that was not read.","type":"single line (coverage warning)","required":false},{"name":"[prompt destination only] framing line","type":"single line addressed to the next AI","required":false},{"name":"WHAT THIS COVERS","type":"one line","required":true},{"name":"NEVER ASKED","type":"bulleted list of questions ('· ' items)","required":true},{"name":"WHAT WAS COVERED","type":"short lines","required":true},{"name":"(footer, engine-appended)","type":"footer lines","required":true}],"emptyStates":[{"rule":"(no fixed string) ONE honest line under NEVER ASKED: nothing is left unasked"},"Nothing left unasked in what was read — this conversation closed the questions its subject required."],"provenance":["— sits next to \"<3 to 8 words copied verbatim>\"","— not addressed anywhere","⟨sourced N:T⟩ / ⟨inferred⟩ / ⟨added⟩"],"fields":["structure"],"frame":"documentFrame","example":"/api/rescue/?documents=1#blindspot"},"exports":{"download":{"formats":["markdown","docx","pdf"],"where":"browser"},"google_drive":{"format":"docx","becomes":"google_docs","scope":"https://www.googleapis.com/auth/drive.file","clientId":"227186412311-qh082f0ndtmc2smjoqo2fvrjr0i408j7.apps.googleusercontent.com","token":"browser only, never reaches Uncook","popup":true,"fallback":{"mode":"redirect","flow":"auth code + PKCE","exchange":"/api/connect/google-drive/","returnTo":["https://www.uncook.app/workspace-v4/","https://www.uncook.app/_p/test-drive/"]},"recordedAs":"exports row + `exported` (POST /api/account/espace/ { fate }), kept docs only"}}},"pushback":{"minConvs":1,"maxConvs":3,"needsQuestion":true,"needsDestination":true,"messageQuestion":"need the decision","blocks":{"machineRead":true,"headers":["THE CASE AGAINST","HOW STRONG THIS IS"],"markers":["CONTRADICTED BY THE FILE","RAISED, NEVER WEIGHED","NOT IN THE FILE","THIS SHOULD MAKE YOU RECONSIDER","WORTH WEIGHING BEFORE YOU GO","THE CASE AGAINST IS THIN"]},"formats":["text","markdown"],"shape":"sources","cost":{"credits":1,"unit":"job","perSource":375000,"perJob":375000,"toolBase":1,"lengthCredits":1,"combine":"multiply"},"rework":true,"alternatives":{"1":[{"tool":"blindspot","why":"angle"},{"tool":"decide","why":"after"}],"2":[{"tool":"blindspot","why":"angle"},{"tool":"decide","why":"after"}],"3":[{"tool":"blindspot","why":"angle"},{"tool":"decide","why":"after"}]},"document":{"title":"The engine writes NO title. The user's decision (one line, sent as `question`) is the subject; it is placed in <decision> for the model but not repeated as a h…","subtitle":null,"sections":[{"name":"Not everything was read: {the unread ranges, per source}. An objection may sit in the part that was not read.","type":"single line (coverage warning)","required":false},{"name":"[prompt destination only] framing line","type":"single line addressed to the next AI","required":false},{"name":"THE CASE AGAINST","type":"bulleted arguments ('· ' items), each tagged with its matter","required":true},{"name":"HOW STRONG THIS IS","type":"verdict line + short justification","required":true},{"name":"(footer, engine-appended)","type":"footer lines","required":true}],"emptyStates":["THE CASE AGAINST IS THIN",{"rule":"(no fixed string) ONE line: nothing in the file argues against the decision"},{"rule":"the whole document when nothing argues against it — built from constants; see the example"}],"provenance":["CONTRADICTED BY THE FILE: \"<3-8 verbatim words carrying a refusal>\" AGAINST: \"<words copied from the decision>\"","RAISED, NEVER WEIGHED: \"<3-8 verbatim words>\"","NOT IN THE FILE","(\"…\" ({lab} — {title}))","⟨sourced N:T⟩ / ⟨inferred⟩ / ⟨added⟩"],"fields":["verdict","verdictModel / verdictSansVerrous","structure","echoes"],"frame":"documentFrame","example":"/api/rescue/?documents=1#pushback"}},"loop":{"minConvs":1,"maxConvs":1,"needsQuestion":false,"needsDestination":true,"blocks":{"machineRead":true,"headers":["WHAT CAME BACK","WHAT ONLY LOOKS DECIDED","WHAT IS ACTUALLY SETTLED"],"markers":["Nothing looped, and everything proposed was taken up. This conversation moved."]},"formats":["text","markdown"],"shape":"sources","cost":{"credits":1,"unit":"job","perSource":375000,"perJob":375000,"toolBase":1,"lengthCredits":1,"combine":"multiply"},"rework":true,"alternatives":{"1":[{"tool":"decide","why":"after"},{"tool":"plan","why":"after"}],"2":[{"tool":"decide","why":"after"},{"tool":"cross","why":"angle"},{"tool":"plan","why":"after"}],"3":[{"tool":"decide","why":"after"},{"tool":"cross","why":"angle"},{"tool":"plan","why":"after"}]},"document":{"title":"The engine writes NO title. Kept-document title: res.title (none) → source title → '' (120 chars).","subtitle":null,"sections":[{"name":"Not everything was read: {the unread ranges}. A return or a decision may sit in the part that was not read.","type":"single line (coverage warning)","required":false},{"name":"Nothing looped, and everything proposed was taken up. This conversation moved.","type":"empty-state marker line","required":false},{"name":"[prompt destination only] framing line","type":"single line addressed to the next AI","required":false},{"name":"WHAT CAME BACK","type":"bulleted list ('· ')","required":true},{"name":"WHAT ONLY LOOKS DECIDED","type":"bulleted list ('· ')","required":true},{"name":"WHAT IS ACTUALLY SETTLED","type":"bulleted list ('· ')","required":true},{"name":"(footer, engine-appended)","type":"footer lines","required":true}],"emptyStates":["Nothing looped, and everything proposed was taken up. This conversation moved.","Nothing came back without being settled.","Nothing was left merely proposed: what the AI proposed, the user took up or dropped explicitly.",{"rule":"(no fixed string) ONE honest line: the user settled nothing"}],"provenance":["— turns n, m: \"verbatim quotation\"","— turn n: \"verbatim quotation\"","⟨sourced N:T⟩ / ⟨inferred⟩ / ⟨added⟩"],"fields":["moved","structure","echoes"],"frame":"documentFrame","example":"/api/rescue/?documents=1#loop"}},"plan":{"minConvs":1,"maxConvs":3,"needsQuestion":false,"needsDestination":true,"blocks":{"machineRead":true,"headers":["NEXT STEPS","THE PLAN","NOT SETTLED"],"markers":["NO DECISIONS FOUND TO PLAN","No objective found to act on."],"groups":["Now","Then","Waiting on"]},"formats":["text","markdown","csv"],"shape":"sources","cost":{"credits":1,"unit":"job","perSource":375000,"perJob":375000,"toolBase":1,"lengthCredits":1,"combine":"multiply"},"rework":true,"alternatives":{"1":[{"tool":"decide","why":"before"},{"tool":"blindspot","why":"angle"},{"tool":"summarize","why":"narrower"}],"2":[{"tool":"decide","why":"before"},{"tool":"cross","why":"before"},{"tool":"blindspot","why":"angle"}],"3":[{"tool":"decide","why":"before"},{"tool":"cross","why":"before"},{"tool":"blindspot","why":"angle"}]},"public":{"name":"Plan","slug":"plan","page":"/use-cases/what-to-do-next/"},"document":{"publicName":"Plan","title":"The engine writes NO title: 'no title of your own'. The output opens directly on NEXT STEPS (or on the coverage line / the empty-state line / the prompt framin…","subtitle":null,"sections":[{"name":"Not everything was read: {the unread ranges, per source}. A decision may sit in the part that was not read.","type":"single line (coverage warning)","required":false},{"name":"NO DECISIONS FOUND TO PLAN","type":"empty-state marker line + ONE translated line pointing to Loop","required":false},{"name":"[prompt destination only] framing line","type":"single paragraph addressed to the successor AI","required":false},{"name":"NEXT STEPS","type":"numbered steps (one running sequence 1., 2., …) in three labelled groups: 'Now' · 'Then' …","required":true},{"name":"THE PLAN","type":"machine order line, then a list of settled steps — document: markdown checkboxes '- [ ] '…","required":true},{"name":"NOT SETTLED","type":"plain list — document: '- ' (never a checkbox); prompt: '· '","required":true},{"name":"(footer, engine-appended)","type":"footer lines","required":true}],"emptyStates":["NO DECISIONS FOUND TO PLAN","No objective found to act on.","Nothing here was settled, so there is nothing to extract into a plan. What went round without being settled is what Loop is for.","No step could be extracted: this conversation settled nothing."],"provenance":["— src N, turn M: \"3 to 10 words copied verbatim\"","⟨sourced N:T⟩ / ⟨inferred⟩ / ⟨added⟩ (level mark)","sourced = the conversation says the user WILL do it · inferred = follows from something settled · added = Uncook's proposal, never the user's decision","stated","' — third-party' / 'internal'","ORDER: AS THE CONVERSATION STATED IT | ORDER: AS THINGS WERE DECIDED"],"fields":["empty","order","structure","steps / stepTally","actions / actionTally","csv"],"frame":"documentFrame","example":"/api/rescue/?documents=1#plan"},"exports":{"download":{"formats":["markdown","docx","pdf","csv"],"where":"browser"},"google_drive":{"format":"docx","becomes":"google_docs","scope":"https://www.googleapis.com/auth/drive.file","clientId":"227186412311-qh082f0ndtmc2smjoqo2fvrjr0i408j7.apps.googleusercontent.com","token":"browser only, never reaches Uncook","popup":true,"fallback":{"mode":"redirect","flow":"auth code + PKCE","exchange":"/api/connect/google-drive/","returnTo":["https://www.uncook.app/workspace-v4/","https://www.uncook.app/_p/test-drive/"]},"recordedAs":"exports row + `exported` (POST /api/account/espace/ { fate }), kept docs only"}}},"summarize":{"minConvs":1,"maxConvs":1,"needsQuestion":false,"needsDestination":false,"blocks":{"machineRead":false,"headers":[]},"formats":["text","markdown"],"shape":"sources","cost":{"credits":0,"unit":"job","perSource":375000,"perJob":375000,"payerFreeUpTo":60000},"rework":true,"alternatives":{"1":[{"tool":"plan","why":"after"},{"tool":"blindspot","why":"angle"}],"2":[{"tool":"plan","why":"after"},{"tool":"blindspot","why":"angle"}],"3":[{"tool":"plan","why":"after"},{"tool":"blindspot","why":"angle"}]},"public":{"name":"Summarize","slug":"summarize","page":"/summarize/"},"document":{"publicName":"Summarize","title":"None: 'no title', 'no intro, no closing, no headers'. The output is only bullet lines.","subtitle":null,"sections":[{"name":"(no headers — ENTETES = [])","type":"bulleted list in source order ('· ' one point per line)","required":true}],"emptyStates":["need 1 conversation","Summarize compresses one conversation only: remove the note you added","CUT SHORT","not found in what I read"],"provenance":["⟨sourced 1:N⟩ at the end of EVERY line","⟨sourced S:T[, S:T…]⟩ · ⟨inferred⟩ · ⟨added⟩ (engine-wide mark)"],"fields":["summaryTally"],"frame":"documentFrame","example":"/api/rescue/?documents=1#summarize"},"exports":{"download":{"formats":["markdown","docx","pdf"],"where":"browser"},"google_drive":{"format":"docx","becomes":"google_docs","scope":"https://www.googleapis.com/auth/drive.file","clientId":"227186412311-qh082f0ndtmc2smjoqo2fvrjr0i408j7.apps.googleusercontent.com","token":"browser only, never reaches Uncook","popup":true,"fallback":{"mode":"redirect","flow":"auth code + PKCE","exchange":"/api/connect/google-drive/","returnTo":["https://www.uncook.app/workspace-v4/","https://www.uncook.app/_p/test-drive/"]},"recordedAs":"exports row + `exported` (POST /api/account/espace/ { fate }), kept docs only"}}},"ask":{"minConvs":1,"maxConvs":5,"needsQuestion":true,"needsDestination":false,"messageQuestion":"need the question","blocks":{"machineRead":false,"headers":["ANSWER","FROM"],"alternate":["NOT IN THESE DOCUMENTS"]},"formats":["text","markdown"],"shape":"documents","memory":{"field":"memory","ids":{"min":1,"max":5}},"cost":{"credits":1,"unit":"job","perSource":375000,"perJob":375000,"toolBase":1,"lengthCredits":1,"combine":"multiply"},"rework":true,"alternatives":{"1":[{"tool":"summarize","why":"narrower"},{"tool":"plan","why":"after"}],"2":[{"tool":"plan","why":"after"}],"3":[{"tool":"plan","why":"after"}]},"document":{"title":"No title. INTRO (2-3 lines): (1) 'I looked through your N document(s) for: \"…\"' with the person's words and real count; (2) the documents read, one per line, n…","subtitle":null,"sections":[{"name":"(INTRO, no header)","type":"gesture line + list of documents","required":true},{"name":"ANSWER","type":"paragraph","required":true},{"name":"FROM","type":"citation lines","required":true},{"name":"NOT IN THESE DOCUMENTS","type":"alternate whole-output shape","required":false}],"emptyStates":["NOT IN THESE DOCUMENTS","need the question","need 1 to 5 documents","CUT SHORT","not found in what I read"],"provenance":["FROM line: '{document name}, \"verbatim quote\"'","Document identity: title + (tool)","⟨sourced S:T[, S:T…]⟩ · ⟨inferred⟩ · ⟨added⟩ (engine-wide mark)"],"fields":["memory","document date"],"frame":"documentFrame","example":"/api/rescue/?documents=1#ask"}},"recognize":{"minConvs":1,"maxConvs":3,"needsQuestion":false,"needsDestination":false,"blocks":{"machineRead":true,"headers":[]},"formats":["text","markdown"],"shape":"sources","cost":{"credits":0,"unit":"job","perSource":375000,"perJob":375000,"payerFreeUpTo":375000},"rework":false,"alternatives":{"1":[{"tool":"brief","why":"after"},{"tool":"handoff","why":"after"}],"2":[{"tool":"brief","why":"after"}],"3":[{"tool":"brief","why":"after"}]},"actorRequired":true,"document":{"title":"None. The model outputs strict JSON only; there is no document text.","subtitle":null,"sections":[{"name":"proposals[] (response field, not text)","type":"ordered list of 1..3 tools in EXECUTION order ('compare, then plan'), each {tool (engine …","required":true},{"name":"quote (response field)","type":"object","required":true},{"name":"reading (response field)","type":"object","required":true}],"emptyStates":[{"rule":"the engine's fallback (repli): one source → brief · plan · handoff; 2+ sources → compare · brief · handoff, each with its fixed why"},"You've used today's recognitions. They come back at 00:00 UTC; you can still pick a tool yourself. Nothing was charged.",{"rule":"401 actor-required"}],"provenance":["none in the output; 'why' must be 'grounded in what you actually read'","proposalsOrigin 'model' | 'engine'"],"fields":["proposals, proposalsOrigin, recognition:true, reading, quot…","no deliverable"],"frame":"documentFrame","example":"/api/rescue/?documents=1#recognize"}},"verify":{"minConvs":1,"maxConvs":3,"needsQuestion":false,"needsDestination":false,"blocks":{"machineRead":true,"headers":["SUPPORTED","CONTRADICTED","UNCERTAIN","UNVERIFIABLE","NOT JUDGED"]},"formats":["text","markdown"],"shape":"sources","cost":{"credits":3,"unit":"job","perSource":375000,"perJob":375000,"toolBase":3,"lengthCredits":1,"combine":"multiply"},"rework":false,"alternatives":{"1":[{"tool":"blindspot","why":"after"},{"tool":"decide","why":"after"}],"2":[{"tool":"blindspot","why":"after"},{"tool":"decide","why":"after"}],"3":[{"tool":"blindspot","why":"after"},{"tool":"decide","why":"after"}]},"public":{"name":"Verify","slug":"verify","page":"/use-cases/two-ais-two-answers/"},"document":{"publicName":"Verify","title":"The document is COMPOSED BY THE ENGINE (not the model). Its first line is a title line: 'VERIFY — {K} claim(s) kept out of {M} checkable claim(s) the AI made, …","subtitle":null,"sections":[{"name":"SUPPORTED","type":"grouped list of judged claims (claim line + indented '  → ' verdict line)","required":true},{"name":"CONTRADICTED","type":"same item form","required":true},{"name":"UNCERTAIN","type":"same item form","required":true},{"name":"UNVERIFIABLE","type":"same item form (no Source part)","required":true},{"name":"NOT JUDGED","type":"one sentence","required":false}],"emptyStates":["No checkable claim from the AI was found in these conversations (numbers, facts, standards, laws, prices, dates). Nothing was charged.","none","This is too long for Verify to read in one go. Remove a source, or verify one conversation at a time. Nothing was charged.",{"rule":"503 model-empty, no document"}],"provenance":["⟨sourced s:t⟩","⟨added⟩","Markdown link [title](url) + 'dated <page_age>' or 'date unknown'","footer provenance line 'Source(s) read: … The AI's claims were checked on the web: only against the sources linked above.'"],"fields":["verify {claims[], selection{found,kept,rule}, tally, search…","pages read","options.mask 'layer-1', maskDefault:true, maskList, unmaske…","closureWarning","footer lines appended to result (and returned as fields cov…"],"frame":"documentFrame","example":"/api/rescue/?documents=1#verify"},"exports":{"download":{"formats":["markdown","docx","pdf"],"where":"browser"},"google_drive":{"format":"docx","becomes":"google_docs","scope":"https://www.googleapis.com/auth/drive.file","clientId":"227186412311-qh082f0ndtmc2smjoqo2fvrjr0i408j7.apps.googleusercontent.com","token":"browser only, never reaches Uncook","popup":true,"fallback":{"mode":"redirect","flow":"auth code + PKCE","exchange":"/api/connect/google-drive/","returnTo":["https://www.uncook.app/workspace-v4/","https://www.uncook.app/_p/test-drive/"]},"recordedAs":"exports row + `exported` (POST /api/account/espace/ { fate }), kept docs only"}}},"handoff":{"minConvs":1,"maxConvs":1,"needsQuestion":false,"needsDestination":false,"shape":"turns","cost":{"credits":1,"unit":"job","perSource":375000,"perJob":375000,"toolBase":1,"lengthCredits":1,"combine":"multiply"},"rework":false,"alternatives":{"1":[{"tool":"plan","why":"after"},{"tool":"summarize","why":"narrower"},{"tool":"mask","why":"angle"}],"2":[{"tool":"plan","why":"after"}],"3":[{"tool":"plan","why":"after"}]},"public":{"name":"Handoff","slug":"handoff","page":"/handoff/"},"document":{"publicName":"Handoff","title":"No title. The prompt forbids any preamble ('Output ONLY the handoff prompt. No preamble, no \"here is\"…'), and the engine strips a leading markdown heading line…","subtitle":null,"sections":[{"name":"(no header) successor opening","type":"paragraph","required":true},{"name":"ROOT CONTEXT (non-negotiable)","type":"paragraph (dense lines)","required":true},{"name":"LOCKED DECISIONS (settled by the previous conversation — you inherit them, you didn't make them)","type":"bulleted list ('·' bullets in the template)","required":true},{"name":"WHAT'S STILL MISSING (blocking)","type":"bulleted list ('·')","required":true},{"name":"USER CONTEXT","type":"bulleted list ('·')","required":false},{"name":"COLLABORATION STYLE","type":"bulleted list ('·')","required":false},{"name":"RECENT CIRCUMSTANCES","type":"bulleted list ('·')","required":false},{"name":"MY ROLE:","type":"single inline line","required":true},{"name":"TO CONTINUE I'll say either \"[resume signal 1]\" or \"[resume signal 2]\".","type":"closing line (resume signals + instruction 'Be operational and factual. Don't reopen anyt…","required":true},{"name":"(engine footer block)","type":"deterministic lines","required":true}],"emptyStates":[{"rule":"section omitted"},"need the conversation turns","The analysis came back empty. Try again — nothing was charged.",{"rule":"no foreign-numbers line"}],"provenance":["none inline","NUMBERS AND DATES ARE COPIED, NEVER PRODUCED (system rule)","Number(s) not found in your sources: X. Check it/them before use.","Source read: {lab — title | title | 'the pasted conversation'}. Not verified outside this conversation.","person's own note ('stated by you')"],"fields":["handoff","trimmed / turnsUsed","promptVersion","contract","category","wall?"],"premium":{"sections":[{"name":"ADDRESS","type":"paragraph","required":true},{"name":"WHO","type":"list/paragraph (not fixed)","required":true},{"name":"THE STATE","type":"list/paragraph","required":true},{"name":"THE STORY","type":"chronological narrative","required":true},{"name":"CONSTRAINTS","type":"list","required":true},{"name":"DECIDED","type":"list","required":true},{"name":"DISCARDED","type":"list","required":true},{"name":"CORRECTIONS","type":"list","required":true},{"name":"NUMBERS","type":"table (value, unit, what it measures, when it was true)","required":true},{"name":"THE PLAN","type":"numbered/step-by-step list","required":true},{"name":"OPEN","type":"list","required":true},{"name":"EXACT RESUME POINT","type":"paragraph","required":true},{"name":"THE TONE","type":"paragraph/list","required":true},{"name":"(engine footer block, WITHOUT coverage line)","type":"deterministic lines","required":true}]},"frame":"documentFrame","example":"/api/rescue/?documents=1#handoff"},"exports":{"download":{"formats":["markdown","docx","pdf"],"where":"browser"},"google_drive":{"format":"docx","becomes":"google_docs","scope":"https://www.googleapis.com/auth/drive.file","clientId":"227186412311-qh082f0ndtmc2smjoqo2fvrjr0i408j7.apps.googleusercontent.com","token":"browser only, never reaches Uncook","popup":true,"fallback":{"mode":"redirect","flow":"auth code + PKCE","exchange":"/api/connect/google-drive/","returnTo":["https://www.uncook.app/workspace-v4/","https://www.uncook.app/_p/test-drive/"]},"recordedAs":"exports row + `exported` (POST /api/account/espace/ { fate }), kept docs only"}}},"switch":{"minConvs":1,"maxConvs":1,"needsQuestion":false,"needsDestination":false,"shape":"turns","fields":["target","destinationAI"],"destinationAI":["chatgpt","claude","gemini","copilot","perplexity","mistral","notebooklm","aistudio"],"cost":{"credits":1,"unit":"job","perSource":375000,"perJob":375000,"toolBase":1,"lengthCredits":1,"combine":"multiply"},"rework":false,"alternatives":{"1":[{"tool":"handoff","why":"angle"},{"tool":"plan","why":"after"}],"2":[{"tool":"plan","why":"after"}],"3":[{"tool":"plan","why":"after"}]},"public":{"name":"Switch","slug":"switch","page":"/handoff/"},"document":{"publicName":"Switch","title":"No title (same rules as handoff).","subtitle":null,"sections":[{"name":"(no header) successor opening","type":"paragraph","required":true},{"name":"ROOT CONTEXT (non-negotiable)","type":"paragraph","required":true},{"name":"LOCKED DECISIONS (settled by the previous conversation — you inherit them, you didn't make them)","type":"bulleted list","required":true},{"name":"WHAT'S STILL MISSING (blocking)","type":"bulleted list","required":true},{"name":"USER CONTEXT / COLLABORATION STYLE / RECENT CIRCUMSTANCES","type":"bulleted lists","required":false},{"name":"MY ROLE:","type":"single line","required":true},{"name":"TO CONTINUE I'll say either …","type":"closing line","required":true},{"name":"(engine footer block)","type":"deterministic lines","required":true}],"emptyStates":[{"rule":"section omitted"},{"rule":"decision given plainly, no invented why"},"need the conversation turns","The analysis came back empty. Try again — nothing was charged."],"provenance":["reason only when stated ('BECAUSE' clause)","PORTABILITY flag","footer provenance + foreign-numbers lines; person's note (light invite)"],"fields":["handoff","trimmed / turnsUsed","promptVersion","contract","category","wall?","stamp.tool_version"],"frame":"documentFrame","example":"/api/rescue/?documents=1#switch"},"exports":{"download":{"formats":["markdown","docx","pdf"],"where":"browser"},"google_drive":{"format":"docx","becomes":"google_docs","scope":"https://www.googleapis.com/auth/drive.file","clientId":"227186412311-qh082f0ndtmc2smjoqo2fvrjr0i408j7.apps.googleusercontent.com","token":"browser only, never reaches Uncook","popup":true,"fallback":{"mode":"redirect","flow":"auth code + PKCE","exchange":"/api/connect/google-drive/","returnTo":["https://www.uncook.app/workspace-v4/","https://www.uncook.app/_p/test-drive/"]},"recordedAs":"exports row + `exported` (POST /api/account/espace/ { fate }), kept docs only"}}},"merge":{"minConvs":2,"maxConvs":3,"needsQuestion":false,"needsDestination":false,"shape":"sections","fields":["destinationAI"],"destinationAI":["chatgpt","claude","gemini","copilot","perplexity","mistral","notebooklm","aistudio"],"cost":{"credits":1,"unit":"job","perSource":375000,"perJob":375000,"toolBase":1,"lengthCredits":1,"combine":"multiply"},"rework":false,"alternatives":{"1":[{"tool":"plan","why":"after"}],"2":[{"tool":"cross","why":"angle"},{"tool":"plan","why":"after"}],"3":[{"tool":"cross","why":"angle"},{"tool":"plan","why":"after"}]},"public":{"name":"Merge","slug":"merge","page":"/merge/"},"document":{"publicName":"Merge","title":"No document title. Output ONLY the handoff; leading markdown title stripped. (Caution: the strip regex removes the FIRST line only if it starts with '#'; secti…","subtitle":null,"sections":[{"name":"(no header) opening line","type":"single line","required":true},{"name":"## {label of the block}","type":"repeated section, one per <topic> block, in given order","required":true},{"name":"- STATE:","type":"labelled bullet","required":true},{"name":"- KEY DECISIONS:","type":"labelled bullet","required":true},{"name":"- NEXT STEP:","type":"labelled bullet","required":true},{"name":"(no header) closing line","type":"single line","required":true},{"name":"(engine footer block)","type":"deterministic lines","required":true}],"emptyStates":["need 2 to 3 conversations","The analysis came back empty. Try again — nothing was charged."],"provenance":["isolation (no cross-references)","footer lines"],"fields":["handoff","trimmed / turnsUsed","promptVersion","contract","category","wall?"],"frame":"documentFrame","example":"/api/rescue/?documents=1#merge"},"exports":{"download":{"formats":["markdown","docx","pdf"],"where":"browser"},"google_drive":{"format":"docx","becomes":"google_docs","scope":"https://www.googleapis.com/auth/drive.file","clientId":"227186412311-qh082f0ndtmc2smjoqo2fvrjr0i408j7.apps.googleusercontent.com","token":"browser only, never reaches Uncook","popup":true,"fallback":{"mode":"redirect","flow":"auth code + PKCE","exchange":"/api/connect/google-drive/","returnTo":["https://www.uncook.app/workspace-v4/","https://www.uncook.app/_p/test-drive/"]},"recordedAs":"exports row + `exported` (POST /api/account/espace/ { fate }), kept docs only"}}},"brief":{"minConvs":1,"maxConvs":3,"needsQuestion":false,"needsDestination":false,"shape":"sources","blocks":{"machineRead":false,"headers":["WHAT THIS WAS ABOUT","DECIDED","SET ASIDE","CHANGED","CONTRADICTIONS"],"titles":{"English":["What this is about","What's decided","What was set aside","What changed along the way","What doesn't add up"],"French":["De quoi il s'agit","Ce qui est décidé","Ce qui a été écarté","Ce qui a changé en route","Ce qui ne colle pas"],"German":["Worum es geht","Was entschieden ist","Was verworfen wurde","Was sich unterwegs geändert hat","Was nicht zusammenpasst"],"Spanish":["De qué se trata","Lo que está decidido","Lo que se descartó","Lo que cambió por el camino","Lo que no cuadra"],"Portuguese":["Do que se trata","O que está decidido","O que foi descartado","O que mudou no caminho","O que não bate"],"Japanese":["概要","決まったこと","見送ったこと","途中で変わったこと","かみ合わない点"],"Italian":["Di cosa si tratta","Cosa è deciso","Cosa è stato scartato","Cosa è cambiato strada facendo","Cosa non torna"],"Latin American Spanish":["De qué se trata","Lo que está decidido","Lo que se descartó","Lo que cambió en el camino","Lo que no cuadra"],"European Portuguese":["Do que se trata","O que está decidido","O que foi descartado","O que mudou pelo caminho","O que não bate certo"]},"titlesReplaceHeaders":"always: the output carries `titles` in the output language, not `headers`","oneChat":{"headers":["WHERE YOU ARE","DECIDED","STILL OPEN","NEXT STEP"],"titles":{"English":["Where you are","Settled","What's left","Next step"],"French":["Où vous en êtes","Acté","Ce qui reste","Prochaine étape"],"German":["Wo Sie stehen","Entschieden","Was noch offen ist","Nächster Schritt"],"Spanish":["Dónde estás","Decidido","Lo que queda","Siguiente paso"]},"formerTitles":{"French":["Où tu en es","Acté","Ce qui reste","Prochaine étape"],"German":["Wo du stehst","Entschieden","Was noch offen ist","Nächster Schritt"]},"when":"one conversation"}},"cost":{"credits":1,"unit":"job","perSource":375000,"perJob":375000,"toolBase":1,"lengthCredits":1,"combine":"multiply"},"rework":false,"alternatives":{"1":[{"tool":"draft","why":"after"},{"tool":"summarize","why":"narrower"},{"tool":"plan","why":"after"}],"2":[{"tool":"draft","why":"after"},{"tool":"plan","why":"after"}],"3":[{"tool":"draft","why":"after"},{"tool":"plan","why":"after"}]},"public":{"name":"Brief","slug":"brief","page":"/memo/"},"document":{"publicName":"Brief","title":"No title. 'Output ONLY the brief. No preamble…'. The first block WHAT THIS WAS ABOUT carries the subject in one line ('Without it nothing can be handed on'). N…","subtitle":null,"sections":[{"name":"WHAT THIS WAS ABOUT","type":"one line (the subject)","required":true},{"name":"DECIDED","type":"bulleted list ('·')","required":true},{"name":"SET ASIDE","type":"bulleted list ('·')","required":true},{"name":"CHANGED","type":"bulleted list ('·')","required":true},{"name":"CONTRADICTIONS","type":"bulleted list ('·') or one sentence","required":true},{"name":"STILL OPEN","type":"bulleted list ('·') or one sentence","required":false},{"name":"(closing line)","type":"single line","required":true},{"name":"(engine footer block)","type":"deterministic lines","required":true}],"emptyStates":[{"rule":"one plain line saying the conversation settled nothing"},{"rule":"say nothing contradicts"},{"rule":"line saying the reason was not given"},"need 1 to 3 conversations","need the conversation turns","The analysis came back empty. Try again — nothing was charged."],"provenance":["NUMBERS carry their unit and what they measure","\"{lab} — {title}\" or \"{title}\" (never 'Unknown AI', never 'source A'/'Conversation 2')","person's note (JUDGE invite)","footer lines"],"fields":["note"],"frame":"documentFrame","example":"/api/rescue/?documents=1#brief"},"exports":{"download":{"formats":["markdown","docx","pdf"],"where":"browser"},"google_drive":{"format":"docx","becomes":"google_docs","scope":"https://www.googleapis.com/auth/drive.file","clientId":"227186412311-qh082f0ndtmc2smjoqo2fvrjr0i408j7.apps.googleusercontent.com","token":"browser only, never reaches Uncook","popup":true,"fallback":{"mode":"redirect","flow":"auth code + PKCE","exchange":"/api/connect/google-drive/","returnTo":["https://www.uncook.app/workspace-v4/","https://www.uncook.app/_p/test-drive/"]},"recordedAs":"exports row + `exported` (POST /api/account/espace/ { fate }), kept docs only"}}},"digest":{"minConvs":2,"maxConvs":3,"needsQuestion":false,"needsDestination":false,"shape":"sources","cost":{"credits":1,"unit":"job","perSource":375000,"perJob":375000,"toolBase":1,"lengthCredits":1,"combine":"multiply"},"rework":false,"alternatives":{"1":[{"tool":"plan","why":"after"}],"2":[{"tool":"cross","why":"angle"},{"tool":"merge","why":"angle"},{"tool":"plan","why":"after"}],"3":[{"tool":"cross","why":"angle"},{"tool":"merge","why":"angle"},{"tool":"plan","why":"after"}]},"document":{"title":"No title: 'Output ONLY the note. No preamble…'.","subtitle":null,"sections":[{"name":"(no header) two-part intro","type":"short paragraph/lines","required":true},{"name":"(no header) opening sentences","type":"paragraph","required":true},{"name":"WHAT THIS IS ABOUT","type":"paragraph","required":true},{"name":"DECIDED (validated in the conversation)","type":"bulleted list ('·')","required":true},{"name":"TO CONFIRM (proposed, not yet validated)","type":"bulleted list ('·')","required":true},{"name":"CONTRADICTIONS / REVISIONS","type":"bulleted list ('·')","required":false},{"name":"NEXT ACTIONS","type":"bulleted list ('·')","required":true},{"name":"OPEN QUESTIONS","type":"bulleted list ('·')","required":false},{"name":"(closing line)","type":"single line","required":true},{"name":"(engine footer block)","type":"deterministic lines","required":true}],"emptyStates":[{"rule":"section omitted"},{"rule":"say it is open"},{"rule":"separate short blocks, stated as unrelated"},"need 2 to 3 conversations","a source exceeds {length.short.upTo in the contract} characters","The analysis came back empty. Try again — nothing was charged."],"provenance":["\"{lab} — {title}\" / \"{title}\"","DECIDED vs TO CONFIRM","reinforced by several sources","person's note (JUDGE invite) + footer lines"],"fields":["note"],"frame":"documentFrame","example":"/api/rescue/?documents=1#digest"}},"challenge":{"aliasOf":"blindspot","accepted":true,"readAs":"blindspot","note":"one tool, one price, one card: read tools[aliasOf]"}},"capital":["voice","playbook"],"steps":["confront"],"legacy":["mask"],"plans":{"appliesTo":["the site","API keys","MCP"],"armed":true,"unit":"task","length":{"perResultChars":450000,"rule":"1 task up to length.overLimit.thresholdByTier[tier]; pack readAll: 2; else topics/recent","announcedBefore":true},"result":{"charsPerResult":450000},"maxConvsEngine":5,"compareCounts":1,"rework":"min(1, the job's own cost)","share":{"account":true,"trial":false,"free":true,"pack":true,"pro":true,"tasks":["summarize","memo"]},"status":"served","tiers":{"essai":{"resultats":1,"une":true,"sources":1},"free":{"resultatsParMois":5,"sources":2,"consultableJours":30},"pack":{"id":"pack-6","prixUsd":5,"resultats":20,"validiteMois":12,"cumulable":true,"lectureSeuleMois":12,"preavisJours":30},"pro":{"prixUsdMois":12,"prixUsdMoisAnnuel":9,"resultatsParMois":100,"sources":5,"lectureSeuleMois":12,"preavisJours":30},"plafondCoutMoisUsd":10,"plafondCoutMoisUsdBas":5,"devisesBas":["brl","mxn","cop","inr","mad","ngn"],"conservation":{"apresFinMois":12,"preavisJours":30}},"trial":{"results":1,"once":true,"account":false,"maxConvs":1},"free":{"resultsPerMonth":5,"maxConvs":2,"keptDays":30,"freeTools":["summarize","ai-profile"],"freeToolsPerDay":null},"task":{"tools":["handoff","summarize","merge","memo"],"cost":1,"sharedCounter":true,"quote":["cost","unit","balance","readAll"],"summarize":{"freeUpTo":60000,"freePerDay":3,"freePerDayPayer":20,"freePerDayPack":"freePerDay","beyond":"length.overLimit"}},"pack":{"product":"pack-6","priceUsd":5,"results":20,"validMonths":12,"stackable":true,"maxConvs":5,"noticeDays":30},"pro":{"products":{"monthly":"pro-monthly","annual":"pro-annual"},"priceUsdMonth":12,"priceUsdMonthAnnual":9,"priceUsdYear":108,"resultsPerMonth":100,"maxConvs":5,"library":true,"readOnlyMonths":12,"noticeDays":30},"costCapUsdMonth":10},"extensionEntry":{"route":"POST /api/rescue/","deposit":{"body":"{ extension: { action: \"deposit\", tool: <a lineup8 slug>, destinationAI?: <handoff only: a switchToAnotherAI choice, other lab>, conversation: { platform, title?, turns: [{ role: user|assistant|document, text }] } } }","fields":["destinationAI","turns[].n","turnsTotal"],"returns":"{ ok, url: /bring-<slug>-v4/#bring=<id>, page, expiresAt, turns, chars, destinationAI?, credits: 0 }","sameShapeAs":"a pasted conversation","platforms":["chatgpt","claude","gemini","mistral","grok","copilot","perplexity","notebooklm","aistudio","other"],"minTurns":2,"maxTurns":100000,"maxChars":4400000,"maxBytes":4400000,"unknownTool":"/handoff-v4/"},"retrieve":{"body":"{ extension: { action: \"retrieve\", id } }","returns":"{ ok, conversation, destinationAI?, credits: 0 }","once":true,"idIn":"the URL fragment (#bring=), never a query"},"ttlSeconds":1800,"stored":"encrypted, ephemeral store, deleted on first read or after ttlSeconds","counted":false,"modelCall":false,"shareLinks":"never read by the server: the extension reads the open chat in-browser","reads":["chatgpt","claude","gemini","copilot","perplexity","mistral","notebooklm","aistudio"]},"lineup8":{"decided":"2026-10-26 16:05 UTC (Kevin, yes to the relaunch plan) — docs/decisions/2026-10-26-kevin.md","status":"served beside `catalogue`","regime":"v4 — the engine's bounds and costs on the site, the workspace, API keys and MCP; maxConvsByTier caps tools above 1 chat","maxConvsByTier":{"trial":1,"free":2,"pack":5,"pro":5},"groups":[{"id":"keep-going","tools":["handoff","merge","ai-profile"]},{"id":"make-something","tools":["export","summarize","memo"]}],"apart":[],"tools":{"handoff":{"name":"Handoff","engine":"handoff","engineFor":{"1":"handoff"},"page":"/handoff/","minConvs":1,"maxConvs":1,"free":false,"cost":{"credits":1,"unit":"task","perSource":375000,"perJob":375000,"toolBase":1,"lengthCredits":1,"combine":"multiply"},"scope":true},"merge":{"name":"Merge","engine":"merge","engineFor":{"2":"merge"},"page":"/merge/","minConvs":2,"maxConvs":5,"free":false,"cost":{"credits":1,"unit":"task","perSource":375000,"perJob":375000,"toolBase":1,"lengthCredits":1,"combine":"multiply"},"scope":true},"switch":{"name":"Switch","engine":"switch","engineFor":{"1":"switch"},"page":"/handoff/","minConvs":1,"maxConvs":1,"free":false,"cost":{"credits":1,"unit":"task","perSource":375000,"perJob":375000,"toolBase":1,"lengthCredits":1,"combine":"multiply"},"scope":false},"summarize":{"name":"Summarize","engine":"summarize","engineFor":{"1":"summarize","2+":"digest"},"page":"/summarize/","minConvs":1,"maxConvs":5,"free":false,"cost":{"credits":0,"unit":"job","perSource":375000,"perJob":375000,"payerFreeUpTo":60000},"costFor":{"summarize":{"credits":0,"unit":"job","perSource":375000,"perJob":375000,"payerFreeUpTo":60000},"digest":{"credits":1,"unit":"task","perSource":375000,"perJob":375000,"toolBase":1,"lengthCredits":1,"combine":"multiply"}},"scope":true},"memo":{"name":"Memo","engine":"brief","engineFor":{"1":"brief","2+":"checkpoint"},"page":"/memo/","minConvs":1,"maxConvs":5,"free":false,"cost":{"credits":1,"unit":"task","perSource":375000,"perJob":375000,"toolBase":1,"lengthCredits":1,"combine":"multiply"},"scope":true},"export":{"name":"Export","local":true,"engine":null,"engineFor":{},"page":null,"minConvs":1,"maxConvs":1,"free":true,"cost":{"credits":0},"formats":["pdf","markdown","text"],"where":"device","sends":"nothing","scope":false},"compare":{"name":"Compare","engine":"cross","engineFor":{"2":"cross"},"page":"/use-cases/two-ais-two-answers/","minConvs":2,"maxConvs":5,"free":false,"cost":{"credits":1,"unit":"task","perSource":375000,"perJob":375000,"toolBase":1,"lengthCredits":1,"combine":"multiply"},"scope":false},"ai-profile":{"name":"AI Profile","engine":"voice","engineFor":{"1":"voice"},"page":"/ai-profile/","minConvs":1,"maxConvs":5,"free":true,"cost":{"credits":0,"unit":"job","perSource":60000,"perJob":60000,"payerFreeUpTo":60000},"scope":false}},"options":{"scope":{"tools":["handoff","merge","summarize","memo"],"engine":"detect","mode":"scope","effect":"after the paste the subjects found are shown; the person ticks those to keep; only their turns are sent"},"mask":"all"},"calling":"POST /api/rescue/, `tool` = engineFor[number of conversations] (highest key ≤ it), body shape tools[engine].shape","out":["decide","blindspot","verify","draft","close","digest","checkpoint","scope","reconcile","plan"]},"lineupV1":{"decided":"2026-11-05 07:06 Budapest (Kevin) — V1 catalogue, beta","status":"served beside lineup8; pages and the extension switch to it when ready; prices: plans.task","beta":true,"tools":{"handoff":{"sameAs":"lineup8.tools.handoff","destinations":{"here":{"engine":"handoff","label":"Continue here"},"switchToAnotherAI":{"engine":"switch","toggle":"Switch to another AI","field":"destinationAI","choices":[{"id":"chatgpt","name":"ChatGPT","lab":"openai"},{"id":"claude","name":"Claude","lab":"anthropic"},{"id":"gemini","name":"Gemini","lab":"google"},{"id":"copilot","name":"Copilot","lab":"microsoft"},{"id":"perplexity","name":"Perplexity","lab":"perplexity"},{"id":"mistral","name":"Mistral Vibe","lab":"mistral"},{"id":"notebooklm","name":"Gemini Notebook","lab":"google"},{"id":"aistudio","name":"Google AI Studio","lab":"google"}],"exclude":"same-lab-as-source","sourceField":"platform"}}},"summarize":{"sameAs":"lineup8.tools.summarize","engineFor":{"1":"summarize"},"maxConvs":1,"free":true,"costFor":null},"merge":{"sameAs":"lineup8.tools.merge"},"memo":{"sameAs":"lineup8.tools.memo","engineFor":{"1":"brief"},"maxConvs":1},"export":{"sameAs":"lineup8.tools.export"},"ai-profile":{"sameAs":"lineup8.tools.ai-profile"}},"groups":[{"id":"keep-going","tools":["handoff","merge","ai-profile"]},{"id":"make-something","tools":["summarize","memo","export"]}],"aiProfile":{"listed":true,"free":true,"engine":"voice","page":"/ai-profile/","entry":"listed in keep-going, like the other tools; its page stays in the header and footer","scope":"style only — language, tone, way of deciding, form preferences; never the facts of the work","refusals":{"ai-profile-account-required":401,"ai-profile-over-limit":400,"ai-profile-limit":429},"retryAt":["ai-profile-limit"]},"retired":["compare","switch"],"maxConvsByTier":{"trial":1,"free":2,"pack":5,"pro":5},"options":{"sameAs":"lineup8.options"},"calling":{"sameAs":"lineup8.calling"}},"catalogue":{"decided":"2026-09-22 (Kevin, evening) — PRODUIT.md §7","families":{"keep-going":[{"name":"Handoff","engine":"handoff","free":true},{"name":"Switch","engine":"switch"},{"name":"Merge","engine":"merge"},{"name":"Close","engine":null,"free":true,"servedAt":"close","note":"a prompt served by the contract — no model call on our side"}],"make-sense":[{"name":"Compare","engine":"cross"},{"name":"Decide","engine":"decide"},{"name":"Challenge","engine":"blindspot"},{"name":"Verify","engine":"verify"}],"turn-into-work":[{"name":"Summarize","engine":"summarize","free":true},{"name":"Brief","engine":"brief"},{"name":"Draft","engine":"draft"},{"name":"Plan","engine":"plan"}]},"capital":{"placement":"header, not the catalogue","entries":[{"name":"AI Profile","engine":"voice","free":true,"placement":"header, alone"},{"name":"Playbook","engine":"playbook","placement":"Knowledge (a shelf, with Documents, Decisions and Prompts)"}]},"options":{"lang":{"field":"lang","values":["English","French","German","Spanish","Portuguese","Latin American Spanish","European Portuguese","Italian","Japanese"],"effect":"forces the output language, headers included (a footer line says so if it differs from the conversations)","default":"the conversations' language"},"recipient":{"field":"recipient","values":["client","teammate","developer","manager","myself"],"effect":"a READER block: register, vocabulary, context — never what's found","appliesTo":"document tools; not the six Intelligence tools (blindspot, cross, loop, checkpoint, decide, pushback) → options.recipient: \"not-applied\"","chamber":{"My team":"teammate","A client":"client","A developer":"developer","Just me":"myself","Leadership":"manager"}},"tone":{"field":"tone","values":["direct","warm","executive","formal"],"effect":"a TONE block: how it is said, never what","appliesTo":"same as recipient","chamber":{"Clear and direct":"direct","Warm and collaborative":"warm","Concise and executive":"executive","Formal":"formal"},"decided":"2026-09-24 00:43 (LEAD ①, audit of the options)"},"mask":{"name":"Mask","field":"mask","values":[true,false],"role":"option, everywhere","effect":"layer 1 (links, emails, keys, IBAN, cards, phones, handles) masked in the sources BEFORE the model; the response lists it (maskList)","proposedBy":"recognition"},"scope":{"name":"Scope","role":"option, everywhere (the sas)","credits":0,"route":"POST /api/detect/ { turns, mode: \"scope\" }","returns":"topics[] and asides[] { kind: other-client | personal | unrelated, label, gist, turn_ranges } in the [#N] full-thread indices","chars":"each topic and aside, and the conversation: its turns' text as ?quote=1 counts it (no role label; 2026-11-12)","then":"the person unticks what they drop; the page sends ONLY the kept turns — the engine never drops a turn itself","bound":{"perTurnChars":800,"perTurnCharsMin":120,"totalChars":40000,"maxOutputTokens":900,"model":"the short lane (Haiku)","longConversations":"each turn read by its start (40000 / turns, 120 at least); sampled only beyond ~333 turns"},"measured":{"at":"2026-09-23T21:45Z","usd":{"10 turns":0.0031,"40 turns":0.0067,"300 turns":0.0119}},"freeGate":"detect's per-network free gate (a paying caller is not counted)","decided":"2026-09-23 22:25 (LEAD ②)"}},"free":["handoff","close","summarize","voice","recognize"],"outOfTools":{"voice":"capital","playbook":"capital","mask":"legacy","confront":"step"}},"connector":{"oauth":true,"server":"https://www.uncook.app/api/mcp/","ais":["claude","mistral-vibe","chatgpt"]}}