{"openapi":"3.0.0","info":{"title":"DeerDawn Session Memory API","version":"1.0.0","description":"AI session memory API — the brief every new AI session reads."},"servers":[{"url":"http://localhost:8080","description":"Localhost"},{"url":"https://api.deerdawn.com","description":"Production"}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-Key"},"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"Error":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"}},"required":["error"],"description":"Standard error response"},"BriefItem":{"type":"object","properties":{"text":{"type":"string","example":"Shipped the brief-spine data model"},"trust":{"type":"string","enum":["high","inferred","unverified"],"description":"Per-item confidence band derived from provenance: high (verified or confidence ≥ 0.75), inferred (0.4–0.75 or date_inferred), unverified (below that or absent)."},"source_tool":{"type":"string","nullable":true,"example":"claude_code"},"date":{"type":"string","nullable":true,"description":"ISO timestamp this item was recorded/decided/shipped."},"importance":{"type":"string","enum":["low","normal","high","critical"]},"reasoning":{"type":"string","nullable":true,"description":"DECIDED items only — why the decision was made."},"paths":{"type":"array","items":{"type":"string"},"description":"LANDMINE items only — related file paths."},"commit_ref":{"type":"string","nullable":true,"description":"SHIPPED items only — the commit this shipped in."},"pinned":{"type":"boolean"},"from_card":{"type":"boolean","description":"SHIPPED items only — true when the line came from a board card moved to Done. Label it \"Shipped\": a Done card is a reported completion, not a checked one."}},"required":["text","trust"],"description":"One brief line with its trust band and provenance."},"BriefSpine":{"type":"object","properties":{"shipped":{"type":"array","items":{"$ref":"#/components/schemas/BriefItem"},"description":"SHIPPED slot — deterministic completion events (newest first)."},"decided":{"type":"array","items":{"$ref":"#/components/schemas/BriefItem"},"description":"DECIDED slot — unresolved recent decisions."},"open":{"type":"array","items":{"$ref":"#/components/schemas/BriefItem"},"description":"OPEN slot — open questions."},"landmine":{"type":"array","items":{"$ref":"#/components/schemas/BriefItem"},"description":"LANDMINE slot — sharp, durable watch-outs."},"shipped_header":{"type":"object","properties":{"text":{"type":"string"},"verified":{"type":"boolean"}},"required":["text","verified"],"description":"Optional SHIPPED header (current_status)."}},"required":["shipped","decided","open","landmine"],"description":"The structured 4-slot brief — SHIPPED / DECIDED / OPEN / LANDMINE."},"BriefPayload":{"type":"object","properties":{"tool":{"type":"string","example":"claude_code"},"format":{"type":"string","example":"code"},"verbosity":{"type":"string","enum":["light","standard","detailed"]},"body":{"type":"string","description":"The brief TEXT the AI reads. Default shape unless ?shape=spine, which renders the 4 labeled slots."},"provenance":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["active_project","related_project","session","global"]},"label":{"type":"string"},"project_id":{"type":"string"},"node_id":{"type":"string"},"confidence":{"type":"number","minimum":0,"maximum":1}},"required":["kind","label"]}},"brief_spine":{"allOf":[{"$ref":"#/components/schemas/BriefSpine"},{"nullable":true}]},"stale":{"type":"boolean"},"stale_tier":{"type":"string","nullable":true},"requires_refresh":{"type":"boolean"}},"required":["tool","format","verbosity","body"],"description":"Brief payload: the text body the AI reads plus the structured 4-slot brief_spine with per-item trust."},"ActiveBriefResponse":{"type":"object","properties":{"brief":{"type":"string","nullable":true,"description":"The brief text for the active project (null if none)."},"brief_spine":{"allOf":[{"$ref":"#/components/schemas/BriefSpine"},{"nullable":true}]},"project_name":{"type":"string","nullable":true},"project_id":{"type":"string","nullable":true},"last_updated":{"type":"string","nullable":true},"match_kind":{"type":"string","nullable":true},"recently_loaded":{"type":"boolean"}},"required":["brief","project_name","project_id","last_updated"],"description":"The active project brief, resolved from cwd/workspace."},"InjectResponse":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/BriefPayload"}},"required":["payload"],"description":"Wrapper for a project brief injection payload."},"ProjectSummary":{"type":"object","properties":{"project_id":{"type":"string"},"project_name":{"type":"string"},"updated_at":{"type":"string"},"context":{"nullable":true}},"required":["project_id","project_name"],"description":"A project record."}},"parameters":{}},"paths":{"/healthz":{"get":{"tags":["System"],"summary":"Health Check","responses":{"200":{"description":"Server is healthy","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/healthz/dashboard":{"get":{"tags":["System"],"summary":"Dashboard reachability, as measured by the API","responses":{"200":{"description":"The state is in the body: operational, degraded or unknown","content":{"application/json":{"schema":{"type":"object","properties":{"dashboard":{"type":"string","enum":["operational","degraded","unknown"]},"checked_at":{"type":"string"}},"required":["dashboard","checked_at"]}}}}}}},"/api/v1/auth/login":{"post":{"tags":["Auth"],"summary":"Login","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","minLength":5,"maxLength":254,"format":"email"},"password":{"type":"string"}},"required":["email","password"]}}}},"responses":{"200":{"description":"Login successful","content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string"},"user":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"role":{"type":"string"},"org_id":{"type":"string"}},"required":["id","email","role","org_id"]}},"required":["token","user"]}}}}}}},"/api/v1/auth/signup":{"post":{"tags":["Auth"],"summary":"Signup","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","minLength":5,"maxLength":254,"format":"email"},"password":{"type":"string","minLength":8},"org_name":{"type":"string","minLength":2},"account_type":{"type":"string","enum":["organization"],"default":"organization"},"plan":{"type":"string","enum":["free","starter","growth","scale","developer_basic","developer_pro","personal_basic","personal_developer","lifetime"]},"referral_code":{"type":"string","minLength":4,"maxLength":20}},"required":["email","password"]}}}},"responses":{"201":{"description":"Signup successful","content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string"},"user":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"role":{"type":"string"},"org_id":{"type":"string"}},"required":["id","email","role","org_id"]}},"required":["token","user"]}}}}}}},"/api/v1/keys":{"get":{"tags":["Keys"],"summary":"List API Keys","security":[{"BearerAuth":[]}],"responses":{"200":{"description":"List of keys","content":{"application/json":{"schema":{"type":"object","properties":{"keys":{"type":"array","items":{"type":"object","properties":{"key_id":{"type":"string"},"prefix":{"type":"string"},"name":{"type":"string"},"environment":{"type":"string","enum":["sandbox","production"]},"status":{"type":"string"},"last_used":{"type":"string","nullable":true,"format":"date-time","description":"ISO 8601 timestamp"},"created_at":{"type":"string","format":"date-time","description":"ISO 8601 timestamp"}},"required":["key_id","prefix","name","environment","status","last_used","created_at"]}}},"required":["keys"]}}}}}},"post":{"tags":["Keys"],"summary":"Create API Key","security":[{"BearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"environment":{"type":"string","enum":["sandbox","production"],"default":"sandbox"},"scopes":{"type":"array","items":{"type":"string","enum":["decisions:evaluate","context:read","context:write","context:admin"]},"minItems":1,"maxItems":8,"default":["context:read","context:write"]}}}}}},"responses":{"201":{"description":"Key created","content":{"application/json":{"schema":{"type":"object","properties":{"key":{"type":"object","properties":{"key_id":{"type":"string"},"prefix":{"type":"string"},"name":{"type":"string"},"environment":{"type":"string","enum":["sandbox","production"]},"status":{"type":"string"},"last_used":{"type":"string","nullable":true,"format":"date-time","description":"ISO 8601 timestamp"},"created_at":{"type":"string","format":"date-time","description":"ISO 8601 timestamp"},"key":{"type":"string"}},"required":["key_id","prefix","name","environment","status","last_used","created_at","key"]}},"required":["key"]}}}}}}},"/api/v1/context/active":{"get":{"tags":["Session Memory"],"summary":"Read the active project brief","description":"Resolves the active project from cwd/workspace and returns the brief the AI reads at session start, plus the structured 4-slot brief_spine.","security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":false,"name":"tool","in":"query"},{"schema":{"type":"string","enum":["light","standard","detailed"]},"required":false,"name":"verbosity","in":"query"},{"schema":{"type":"string"},"required":false,"name":"cwd","in":"query"},{"schema":{"type":"string","description":"Comma-separated sections incl. landmines, shipped."},"required":false,"description":"Comma-separated sections incl. landmines, shipped.","name":"sections","in":"query"},{"schema":{"type":"string","enum":["spine"],"description":"Opt-in: ?shape=spine renders the 4-slot brief TEXT body (SHIPPED / DECIDED / OPEN / LANDMINE). Default keeps the current text shape. brief_spine is attached either way."},"required":false,"description":"Opt-in: ?shape=spine renders the 4-slot brief TEXT body (SHIPPED / DECIDED / OPEN / LANDMINE). Default keeps the current text shape. brief_spine is attached either way.","name":"shape","in":"query"}],"responses":{"200":{"description":"The active brief","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActiveBriefResponse"}}}}}}},"/api/v1/context/projects/{projectId}/inject":{"get":{"tags":["Session Memory"],"summary":"Read a project brief (injection payload)","description":"Returns the brief injection payload for a specific project. ?shape=spine renders the 4-slot text; ?format=json returns the raw context object.","security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"projectId","in":"path"},{"schema":{"type":"string"},"required":false,"name":"tool","in":"query"},{"schema":{"type":"string","enum":["light","standard","detailed"]},"required":false,"name":"verbosity","in":"query"},{"schema":{"type":"string","description":"Comma-separated sections incl. landmines, shipped."},"required":false,"description":"Comma-separated sections incl. landmines, shipped.","name":"sections","in":"query"},{"schema":{"type":"string","enum":["spine"],"description":"Opt-in: ?shape=spine renders the 4-slot brief TEXT body (SHIPPED / DECIDED / OPEN / LANDMINE). Default keeps the current text shape. brief_spine is attached either way."},"required":false,"description":"Opt-in: ?shape=spine renders the 4-slot brief TEXT body (SHIPPED / DECIDED / OPEN / LANDMINE). Default keeps the current text shape. brief_spine is attached either way.","name":"shape","in":"query"}],"responses":{"200":{"description":"The project brief payload","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InjectResponse"}}}},"204":{"description":"No brief (suppressed by dedup or preferences)"},"404":{"description":"Project not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"}},"required":["error"],"description":"Standard error response"}}}}}}},"/api/v1/context/projects":{"get":{"tags":["Session Memory"],"summary":"List projects","security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}],"responses":{"200":{"description":"Projects","content":{"application/json":{"schema":{"type":"object","properties":{"projects":{"type":"array","items":{"$ref":"#/components/schemas/ProjectSummary"}}},"required":["projects"],"description":"All projects for the workspace."}}}}}},"post":{"tags":["Session Memory"],"summary":"Create a project","description":"Creates a session-memory project. Supports the additive landmines[] slot.","security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"project_name":{"type":"string","minLength":1},"description":{"type":"string"},"goals":{"type":"array","items":{"type":"string"}},"current_status":{"type":"string"},"current_task":{"type":"string"},"open_questions":{"type":"array","items":{"type":"string"}},"tech_stack":{"type":"array","items":{"type":"string"}},"recent_decisions":{"type":"array","items":{"type":"object","properties":{"summary":{"type":"string"},"decided_at":{"type":"string","format":"date-time"}},"required":["summary","decided_at"]}},"landmines":{"type":"array","items":{"type":"object","properties":{"summary":{"type":"string","minLength":1},"paths":{"type":"array","items":{"type":"string"}},"added_at":{"type":"string","format":"date-time"},"importance":{"type":"string","enum":["low","normal","high","critical"]}},"required":["summary"]},"description":"LANDMINE slot — sharp watch-outs. Object entries so per-item trust works."}},"required":["project_name"],"description":"Create a session-memory project (with optional landmines[])."}}}},"responses":{"201":{"description":"Project created","content":{"application/json":{"schema":{"type":"object","properties":{"project":{"$ref":"#/components/schemas/ProjectSummary"}},"required":["project"],"description":"A single project record."}}}},"400":{"description":"Invalid payload","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"}},"required":["error"],"description":"Standard error response"}}}}}}},"/api/v1/context/extraction":{"post":{"tags":["Session Memory"],"summary":"Push a brief update (extraction)","description":"Records a context update into the brief. Used by update_context / update_brief.","security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"session_id":{"type":"string","minLength":1},"tool":{"type":"string"},"project_id":{"type":"string"},"summary":{"type":"string"},"chunks":{"type":"array","items":{"type":"object","properties":{"role":{"type":"string"},"text":{"type":"string"}},"required":["role","text"]}}},"required":["session_id","tool"],"description":"Push a context update / extraction for the brief."}}}},"responses":{"200":{"description":"Extraction result","content":{"application/json":{"schema":{"type":"object","properties":{"match_decision":{"type":"string","enum":["matched_existing","new_project","ambiguous","ignored"]},"confidence":{"type":"number","minimum":0,"maximum":1},"project_candidate":{"type":"object","nullable":true,"properties":{"project_id":{"type":"string"},"project_name":{"type":"string","minLength":1},"reason":{"type":"string","default":""},"score":{"type":"number","minimum":0,"maximum":1}},"required":["project_name"]},"delta":{"type":"object","properties":{"category":{"type":"string","enum":["coding","topic"]},"description":{"type":"string"},"goals":{"type":"array","items":{"type":"string"},"maxItems":15},"current_status":{"type":"string"},"recent_decisions":{"type":"array","items":{"type":"object","properties":{"summary":{"type":"string","minLength":1},"headline":{"type":"string","maxLength":200},"reasoning":{"type":"string"},"decided_at":{"type":"string","format":"date-time"},"importance":{"type":"string","enum":["low","normal","high","critical"],"default":"normal"},"resolved":{"type":"boolean","default":false},"resolved_at":{"type":"string","format":"date-time"},"date_inferred":{"type":"boolean"},"confidence":{"type":"number","minimum":0,"maximum":1},"source_tool":{"type":"string"},"source_session_id":{"type":"string"},"verified_at":{"type":"string","format":"date-time"},"verified_commit":{"type":"string"},"contributed_by":{"type":"string","nullable":true},"confirmed_by":{"type":"string","nullable":true},"confirmed_at":{"type":"string","format":"date-time"},"author_email":{"type":"string","nullable":true}},"required":["summary","decided_at"]},"maxItems":20},"recurring_context":{"type":"array","items":{"type":"string"},"maxItems":15},"tech_stack":{"type":"array","items":{"type":"string"},"maxItems":15},"file_structure_summary":{"type":"array","items":{"type":"string"},"maxItems":15},"current_task":{"type":"string"},"open_questions":{"type":"array","items":{"type":"string"},"maxItems":15},"landmines":{"type":"array","items":{"type":"object","properties":{"summary":{"type":"string","minLength":1},"paths":{"type":"array","items":{"type":"string","minLength":1},"default":[]},"added_at":{"type":"string","format":"date-time"},"importance":{"type":"string","enum":["low","normal","high","critical"],"default":"high"},"pinned":{"type":"boolean"},"confidence":{"type":"number","minimum":0,"maximum":1},"source_tool":{"type":"string"},"source_session_id":{"type":"string"},"date_inferred":{"type":"boolean"},"verified_at":{"type":"string","format":"date-time"},"verified_commit":{"type":"string"},"contributed_by":{"type":"string","nullable":true}},"required":["summary","added_at"]},"maxItems":20},"shipped":{"type":"array","items":{"type":"object","properties":{"summary":{"type":"string","minLength":1},"shipped_at":{"type":"string","format":"date-time"},"source_tool":{"type":"string"},"confidence":{"type":"number","minimum":0,"maximum":1},"commit_ref":{"type":"string"},"pinned":{"type":"boolean"},"contributed_by":{"type":"string","nullable":true},"card_id":{"type":"string"}},"required":["summary","shipped_at"]},"maxItems":15},"resolved_questions":{"type":"array","items":{"type":"string"},"default":[]},"resolved_decisions":{"type":"array","items":{"type":"string"},"default":[]},"resolved_landmines":{"type":"array","items":{"type":"string"},"default":[]},"completed_goals":{"type":"array","items":{"type":"string"},"default":[]},"commands":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string","minLength":1},"run":{"type":"string","minLength":1},"note":{"type":"string"}},"required":["label","run"]},"maxItems":20},"hot_paths":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string","minLength":1},"path":{"type":"string","minLength":1},"purpose":{"type":"string","default":""},"importance":{"type":"string","enum":["low","normal","high","critical"]},"pinned":{"type":"boolean"},"contributed_by":{"type":"string","nullable":true}},"required":["label","path"]},"maxItems":40},"entrypoints":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string","minLength":1},"path":{"type":"string","minLength":1},"purpose":{"type":"string","default":""}},"required":["label","path"]},"maxItems":20},"surfaces":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string","minLength":1},"paths":{"type":"array","items":{"type":"string","minLength":1},"default":[]},"purpose":{"type":"string","default":""}},"required":["label"]},"maxItems":20},"debugging_notes":{"type":"array","items":{"type":"object","properties":{"summary":{"type":"string","minLength":1},"paths":{"type":"array","items":{"type":"string","minLength":1},"default":[]},"added_at":{"type":"string","format":"date-time"},"commit_ref":{"type":"string"},"diff_ref":{"type":"string"},"confidence":{"type":"number","minimum":0,"maximum":1},"source_tool":{"type":"string"},"source_session_id":{"type":"string"},"verified_at":{"type":"string","format":"date-time"},"importance":{"type":"string","enum":["low","normal","high","critical"]},"pinned":{"type":"boolean"},"contributed_by":{"type":"string","nullable":true}},"required":["summary","added_at"]},"maxItems":30},"source_summary":{"type":"string"},"blocking_issue":{"type":"string"},"task_progress":{"type":"string"},"next_action":{"type":"string"},"task_steps":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1},"status":{"type":"string","enum":["todo","in_progress","done"]}},"required":["name","status"]},"maxItems":20},"you_profile":{"type":"object","properties":{"expertise_areas":{"type":"array","items":{"type":"string"}},"goals":{"type":"array","items":{"type":"string"}},"working_style":{"type":"string"},"values":{"type":"array","items":{"type":"string"}},"communication_preferences":{"type":"string"}}},"add_todos":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","properties":{"title":{"type":"string","minLength":1},"phase":{"type":"string"},"body":{"type":"string"},"assignee":{"type":"string","nullable":true},"completed_at":{"type":"string"}},"required":["title"]}]}},"move_todos":{"type":"array","items":{"type":"object","properties":{"match":{"type":"string","minLength":1},"phase":{"type":"string","minLength":1},"assignee":{"type":"string","nullable":true}},"required":["match"]}},"complete_todos":{"type":"array","items":{"type":"string"}},"remove_todos":{"type":"array","items":{"type":"string"}}},"default":{}},"should_create_project":{"type":"boolean"},"needs_user_confirmation":{"type":"boolean"},"no_material_change":{"type":"boolean","default":false},"routing_state":{"type":"string","enum":["matched","ambiguous","stale_match","global_only"]},"suppression_reason":{"type":"string"},"graph":{"type":"object","properties":{"nodes":{"type":"array","items":{"type":"object","properties":{"node_type":{"type":"string","enum":["project","repo","file","component","feature","decision","task","person","company","service","concept","knowledge","question","tool","environment","database","capability","workflow","preference"]},"canonical_key":{"type":"string","minLength":1},"title":{"type":"string","minLength":1}},"required":["node_type","canonical_key","title"]},"default":[]},"edges":{"type":"array","items":{"type":"object","properties":{"edge_type":{"type":"string","enum":["depends_on","implements","mentions","related_to","used_in","decided_by","blocks","owns","same_as","contains","tracks","supports","uses","prefers","rule"]},"from_node_id":{"type":"string"},"to_node_id":{"type":"string"},"summary":{"type":"string"}},"required":["edge_type"]},"default":[]}}}},"required":["match_decision","confidence","should_create_project","needs_user_confirmation"]}}}}}}},"/api/v1/context/export":{"get":{"tags":["Session Memory"],"summary":"Export all briefs","description":"Full data export — JSON by default, or human-readable markdown with ?format=markdown.","security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}],"parameters":[{"schema":{"type":"string","enum":["markdown"]},"required":false,"name":"format","in":"query"}],"responses":{"200":{"description":"Export payload"}}}},"/api/v1/context/match":{"post":{"tags":["Session Memory"],"summary":"Resolve which project a session belongs to","security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"cwd":{"type":"string"},"workspace_key":{"type":"string"},"text":{"type":"string"}},"description":"Resolve which project a session/cwd belongs to."}}}},"responses":{"200":{"description":"Match result","content":{"application/json":{"schema":{"type":"object","properties":{"match_decision":{"type":"string","enum":["matched_existing","new_project","ambiguous","ignored"]},"confidence":{"type":"number","minimum":0,"maximum":1},"project_candidate":{"type":"object","nullable":true,"properties":{"project_id":{"type":"string"},"project_name":{"type":"string","minLength":1},"reason":{"type":"string","default":""},"score":{"type":"number","minimum":0,"maximum":1}},"required":["project_name"]},"should_create_project":{"type":"boolean"},"needs_user_confirmation":{"type":"boolean"}},"required":["match_decision","confidence","should_create_project","needs_user_confirmation"]}}}}}}},"/api/v1/context/preferences":{"get":{"tags":["Session Memory"],"summary":"Read injection preferences","security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}],"responses":{"200":{"description":"Preferences","content":{"application/json":{"schema":{"type":"object","properties":{"paused":{"type":"boolean"},"tools":{"type":"object","additionalProperties":{"nullable":true}}},"description":"Per-tool injection preferences."}}}}}},"patch":{"tags":["Session Memory"],"summary":"Update injection preferences","security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"paused":{"type":"boolean"},"tools":{"type":"object","additionalProperties":{"nullable":true}}},"description":"Update injection preferences."}}}},"responses":{"200":{"description":"Updated preferences","content":{"application/json":{"schema":{"type":"object","properties":{"paused":{"type":"boolean"},"tools":{"type":"object","additionalProperties":{"nullable":true}}},"description":"Per-tool injection preferences."}}}}}}}}}