{
  "schemaVersion": 1,
  "knowledgePackageVersion": "1.1.0",
  "purpose": "Public behavioral contracts, not source code or executable API definitions. IDs are documentation-only. Discover live MCP schemas before calling tools.",
  "verification": "Reviewed against implementation. This document does not claim end-to-end validation of every provider, environment, formula combination or proposed workflow.",
  "statusDefinitions": {"standard": "Implemented ordinary feature; prerequisites still apply", "experimental": "Optional experimental behavior; limits and settings apply", "unofficial": "Hidden/conditional behavior, not a formally supported product feature"},
  "capabilities": [
    {"id":"memo.edit","status":"standard","requires":[],"input":"Title, body, geometry and color","output":"Ordinary memo","mutates":"Canvas; connected storage may autosave","tools":["create_browser_cell","update_browser_cell","move_browser_cell","set_browser_cell_color"],"limits":["Purple identifies AI notes, not a neutral category", "Browser revision required for writes"]},
    {"id":"graph.structure","status":"standard","requires":[],"input":"Stable memo IDs and directed connections; explicit display-ID references in text","output":"Graph with branches, convergence, cycles and references","mutates":"Links or memo body when edited","tools":["connect_browser_cells","read_browser_cell","inspect_browser_layout"],"limits":["Array order is not execution order", "Proximity does not create a link", "A condition label is not automatically true", "Missing or cyclic references must be resolved"]},
    {"id":"memo.organization","status":"standard","requires":[],"input":"Notes, tags, selection, copy/instance operations","output":"Searchable/reusable groups of notes","mutates":"Depends on operation; search is read-only","tools":["list_browser_cells","batch_browser_cells"],"limits":["Copy and instance are different", "Verify links/references after copying", "Not every UI operation has a dedicated MCP command"]},
    {"id":"container.membership","status":"standard","requires":["Container memo"],"input":"Parent and child IDs","output":"Nested visual grouping","mutates":"Membership, not storage destination","tools":["set_browser_cell_parent","batch_browser_cells"],"limits":["Container is itself a memo, not a disk folder", "Preserve its own instruction and authored child structure"]},
    {"id":"attachment.material","status":"standard","requires":["User-selected file"],"input":"Image, audio or file attachment","output":"Attached material and metadata","mutates":"Memo attachment","tools":[],"limits":["Attachability is not model format support", "Metadata/filename is not inspected content"]},
    {"id":"canvas.scope","status":"standard","requires":[],"input":"Union or a registered Cluster; independent sidebar scope","output":"Overall workspace or focused project view","mutates":"View selection","tools":["list_clusters","list_browser_cells","focus_browser_cells"],"limits":["Union includes mounted Cluster notes plus its own notes", "Container membership is independent", "A viewport is not an export/import scope"]},
    {"id":"storage.folder","status":"standard","requires":["Folder permission and a valid connection"],"input":"Union/Cluster root with direct cells/ Markdown","output":"Folder-backed notes and canvas metadata","mutates":"Disk and browser state during save/reconciliation","tools":["list_cells","read_cell","update_cell"],"limits":["No recursive scan of arbitrary descendant Markdown", "Folders may be nested or physically unrelated", "External conflict direction must be explicit", "Browser save does not prove disk save", "Cluster display rename is not OS folder rename"]},
    {"id":"storage.unmount","status":"standard","requires":["Registered connection; save checks"],"input":"Union disconnect or Cluster unmount","output":"Connection removed; disk files retained","mutates":"Union disconnect retains browser notes; Cluster unmount removes its workspace notes","tools":["unmount_browser_cluster"],"limits":["Unsaved changes may block unmount", "Re-add folder to restore Cluster", "Discover whether connected server exposes this tool", "Not equivalent to deleting a memo"]},
    {"id":"transfer.snapshot","status":"standard","requires":[],"input":"Current Cluster or Union workspace","output":"JSON, data-embedded PNG or Markdown ZIP","mutates":"Export leaves source unchanged; import can append or reset scoped data","tools":[],"limits":["Union export covers whole workspace, not viewport", "Union ZIP integrates notes, not original folder split", "Reset replaces current canvas scope", "Container image export has separate scope", "External slide/report creation is not a native export", "Cloud sync and URL sharing are disabled"]},
    {"id":"ai.context","status":"standard","requires":["Authored AI task and readable inputs"],"input":"Upstream graph, explicit references and relevant container contents","output":"Structured generation context","mutates":"No, when inspecting only","tools":["prepare_generation"],"limits":["Direct upstream AI boundary includes that AI and normal outputs but not recursive traversal of its inputs", "prepare_generation uses configured folder, not browser-only notes", "Prompt inspector shows in-app outgoing context"]},
    {"id":"ai.generate","status":"standard","requires":["Provider API key and available supported model"],"input":"AI note, selected model, resolved context and optional supported Web setting","output":"Ordinary answer notes","mutates":"Overwrites connected ordinary outputs or creates new linked outputs","tools":[],"limits":["Some API errors also overwrite output text", "Gemini/OpenAI/Anthropic/xAI integrations do not imply arbitrary APIs", "Multiple text outputs; Web/image routes at most one", "MCP commit_generation does not invoke this route"]},
    {"id":"ai.pipeline","status":"standard","requires":["AI notes, dependencies, appropriate provider keys"],"input":"Connected AI tasks with model selections","output":"Dependency-ordered results for comparison or subsequent generation","mutates":"Generation output notes","tools":[],"limits":["Not arbitrary program execution, loops or scheduling", "Re-running can overwrite existing alternatives", "Model agreement is not fact verification"]},
    {"id":"ai.audio","status":"standard","requires":["Audio attached directly to AI instruction note", "Gemini or OpenAI and suitable credentials"],"input":"Source audio and instruction","output":"Text answer; OpenAI transcription precedes generation","mutates":"Generation outputs","tools":[],"limits":["Upstream audio is not a substitute for source attachment", "Web search disabled with source audio", "Provider/model format and size restrictions apply"]},
    {"id":"mcp.browser","status":"standard","requires":["Installed MCP/companion", "Open Karakuru and explicit browser connection"],"input":"Session and live canvas revision","output":"Live reads and authorized reversible edits","mutates":"Only write calls; batch is one Ctrl+Z operation","tools":["list_browser_sessions","list_clusters","list_browser_cells","read_browser_cell","batch_browser_cells","inspect_browser_layout","focus_browser_cells"],"limits":["No data-folder path required", "Connection switch location under experimental settings does not change MCP's standard classification", "Never reveal browser keys", "Read current schema and revision; reread after conflict"]},
    {"id":"mcp.folder","status":"standard","requires":["Installed MCP and configured data root"],"input":"Folder cells and folder revision","output":"Reads/edits; commit_generation appends linked assistant answer","mutates":"Folder files on writes","tools":["list_cells","read_cell","create_cell","update_cell","move_cell","connect_cells","prepare_generation","commit_generation"],"limits":["Separate from browser revisions and browser-only scope", "No browser container regrouping or deletion through folder tools", "No promise of browser Ctrl+Z for folder edits"]},
    {"id":"function.local","status":"experimental","requires":["Function expressions; enable experimental function UI to expose controls"],"input":"Body starting = and memo display-ID references","output":"Calculated result or reference/calculation error","mutates":"Function/result notes when calculation is applied","tools":[],"functions":["SUM","AVERAGE","COUNT","MIN","MAX","ROUND","CEILING","FLOOR","MOD","POWER","SQRT","IF","AND","OR","NOT","CONCATENATE","LEFT","RIGHT","MID","LEN","TITLE","UPSTREAM","DOWNSTREAM","CONTAINER"],"limits":["Limited expression parser, not general programming or full spreadsheet compatibility", "UPSTREAM/DOWNSTREAM select exact nth BFS layer with visited-node deduplication", "CONTAINER selects direct children sorted by display ID", "IF selects a value, not an execution branch", "Automatic recalculation after every external/MCP mutation is not guaranteed", "Hiding function UI does not disable existing expressions"]},
    {"id":"function.ai","status":"experimental","requires":["AI configuration and expression/instruction mode"],"input":"AI function instruction beginning ≒","output":"Model-generated result","mutates":"Generation results","tools":[],"limits":["Not deterministic local = calculation", "Depends on provider, context and instruction; inspect actual result"]},
    {"id":"jev.search","status":"experimental","requires":["TypeSafe AI Jev key; live-browser route also requires connection"],"input":"Natural-language query plus candidate titles/bodies","output":"Semantic candidates; optional coloring operation","mutates":"Search none; coloring changes colors","tools":["search_related_cells","search_related_browser_cells","color_related_browser_cells"],"limits":["Sends candidate note content to TypeSafe AI", "Similarity/confidence is not factual verification", "Folder and browser scopes differ"]},
    {"id":"jev.context-filter","status":"experimental","requires":["Enabled optional context selection and Jev key"],"input":"Generation task and upstream candidates","output":"Selected context with direct inputs and explicit references retained","mutates":"Outgoing generation context","tools":[],"limits":["More distant inputs are candidates for filtering", "Failure falls back to original context", "Not a privacy/redaction boundary or general routing engine"]},
    {"id":"x.import","status":"experimental","requires":["Experimental X toggle", "X credential and API access", "MCP route additionally needs browser connection"],"input":{"query":"X search query", "max_results":"10–100 requested; UI default 10, step 10", "language":["all","ja","en"],"period":["none","1h","24h","3d","7d","30d","90d","1y","all"],"include_retweets":"default false"},"output":"Newest-first imported post memos, source information, configured default memo color","mutates":"Imports as one browser undo operation","tools":["search_x_posts"],"limits":["Default period none is not unlimited archive access", "Beyond seven days requires full-archive access", "Actual count may be lower", "Browser token is not returned to MCP"]},
    {"id":"ai.image","status":"unofficial","requires":["Eligible Gemini/OpenAI media route, credentials and prompt/input conditions"],"input":"Image-generation wording; source/reference conditions","output":"Image if route and provider succeed","mutates":"Generation outputs","tools":[],"limits":["Not formally supported", "Selecting an image model alone does not guarantee routing", "Explanation/analysis wording and source audio suppress route", "OpenAI route excludes source/upstream images; Gemini can use image references", "At most one output destination"]}
  ]
}
