{"version":"0.20.0","name":"kanvas_draft","description":"Collaborative text drafting held on the server: read (text, suggestions, versions, optional word diff), edit (revisioned replace/find-replace/append), suggest (span suggestions with reasons), review (accept/reject). Required: operation. Required fields by operation: read(sessionId,displayId); edit(sessionId,displayId,expectedRevision,requestId); suggest(sessionId,displayId,expectedRevision,requestId,suggestions); review(sessionId,displayId,expectedRevision,requestId).","inputSchema":{"type":"object","properties":{"operation":{"type":"string","enum":["read","edit","suggest","review"],"description":"Required operation; supply only the fields in its matching branch."},"sessionId":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"},"displayId":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"},"fromCharacter":{"description":"Text window start (default 0).","type":"integer","minimum":0,"maximum":100000},"maxCharacters":{"description":"Text window size (default 20000).","type":"integer","minimum":200,"maximum":30000},"compareToRevision":{"description":"Word diff from this retained revision.","type":"integer","minimum":0,"maximum":9007199254740991},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991},"requestId":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"},"edits":{"description":"Non-overlapping; offsets refer to the text at expectedRevision.","minItems":1,"maxItems":50,"type":"array","items":{"type":"object","properties":{"op":{"type":"string","enum":["replace","find-replace","append","set-text"]},"start":{"description":"replace: start offset.","type":"integer","minimum":0,"maximum":100000},"end":{"description":"replace: exclusive end (= start inserts).","type":"integer","minimum":0,"maximum":100000},"find":{"description":"find-replace: exact text.","type":"string","minLength":1,"maxLength":4000},"occurrence":{"description":"find-replace: which occurrence (default 1).","type":"integer","minimum":1,"maximum":10000},"all":{"description":"find-replace: every occurrence.","type":"boolean"},"text":{"description":"New text.","type":"string","maxLength":100000}},"required":["op"],"additionalProperties":false}},"draftStatus":{"type":"string","enum":["drafting","reviewing","ready"]},"purpose":{"description":"Short purpose hint; null removes it.","anyOf":[{"type":"string","minLength":1,"maxLength":160},{"type":"null"}]},"focus":{"description":"Highlighted passage after the edits; null clears it.","anyOf":[{"type":"object","properties":{"start":{"type":"integer","minimum":0,"maximum":100000},"end":{"type":"integer","minimum":0,"maximum":100000},"label":{"type":"string","maxLength":160}},"required":["start","end"],"additionalProperties":false},{"type":"null"}]},"suggestions":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"object","properties":{"id":{"description":"Reuse an id to replace that suggestion.","type":"string","minLength":1,"maxLength":128,"pattern":"^[a-zA-Z0-9_.:-]+$"},"start":{"type":"integer","minimum":0,"maximum":100000},"end":{"type":"integer","minimum":0,"maximum":100000},"find":{"description":"Anchor text, instead of start/end.","type":"string","minLength":1,"maxLength":4000},"occurrence":{"type":"integer","minimum":1,"maximum":10000},"replacement":{"type":"string","maxLength":4000,"description":"Proposed text; empty proposes deletion."},"reason":{"type":"string","maxLength":500}},"required":["replacement"],"additionalProperties":false}},"replaceSuggestions":{"description":"Replace all existing suggestions.","type":"boolean"},"accept":{"description":"Ids to accept (apply).","minItems":1,"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[a-zA-Z0-9_.:-]+$"}},"reject":{"description":"Ids to reject (discard).","minItems":1,"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[a-zA-Z0-9_.:-]+$"}},"all":{"description":"Decide every remaining one.","type":"string","enum":["accept","reject"]}},"required":["operation"],"oneOf":[{"properties":{"operation":{"const":"read"},"sessionId":{},"displayId":{},"fromCharacter":{},"maxCharacters":{},"compareToRevision":{}},"required":["operation","sessionId","displayId"],"additionalProperties":false},{"properties":{"operation":{"const":"edit"},"sessionId":{},"displayId":{},"expectedRevision":{},"requestId":{},"edits":{},"draftStatus":{},"purpose":{},"focus":{}},"required":["operation","sessionId","displayId","expectedRevision","requestId"],"additionalProperties":false,"description":"Edit the draft text in place (replace, find-replace, append or set-text)."},{"properties":{"operation":{"const":"suggest"},"sessionId":{},"displayId":{},"expectedRevision":{},"requestId":{},"suggestions":{},"replaceSuggestions":{}},"required":["operation","sessionId","displayId","expectedRevision","requestId","suggestions"],"additionalProperties":false,"description":"Propose inline replacements without changing the draft text."},{"properties":{"operation":{"const":"review"},"sessionId":{},"displayId":{},"expectedRevision":{},"requestId":{},"accept":{},"reject":{},"all":{},"draftStatus":{}},"required":["operation","sessionId","displayId","expectedRevision","requestId"],"additionalProperties":false,"description":"Accept (apply) or reject draft suggestions by id, or all remaining ones."}],"examples":[{"operation":"read","sessionId":"s","displayId":"d"},{"operation":"edit","sessionId":"s","displayId":"d","expectedRevision":3,"requestId":"r1","edits":[{"op":"find-replace","find":"Dear team","text":"Hi all"}]},{"operation":"suggest","sessionId":"s","displayId":"d","expectedRevision":3,"requestId":"r2","suggestions":[{"find":"asap","replacement":"by Friday","reason":"Give a concrete date"}]},{"operation":"review","sessionId":"s","displayId":"d","expectedRevision":3,"requestId":"r3","accept":["s4-1"],"reject":["s4-2"]}]},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}}