{"ok":true,"site":{"host":"bookhand.dev","url":"https://bookhand.dev/","type":"live","desc":"Bookhand is a local-first ebook reader and WebMCP study environment.","tools":[{"name":"get_design_context","kind":"answer","impl":"imperative","description":"Read Bookhand’s composition guidance and the current state of its surfaces before changing how anything looks or building study material. Returns the semantic roles, accessibility floors, what each change can and cannot reach, and the reversal actions the person has. Read-only: it changes nothing and stores nothing.","inputSchema":{"type":"object","properties":{"surface":{"type":"string","enum":["library","reader","study"],"description":"Which surface you are about to work on. Defaults to whichever is on screen."}},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"ok":{"type":"boolean"},"message":{"type":"string"},"error":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false},"readingContext":{"type":"object","properties":{"guidance":{"type":"object","properties":{"state":{"type":"string","enum":["absent","guiding","yielded"]},"canBack":{"type":"boolean"},"revision":{"type":"integer","minimum":0}},"required":["state","canBack","revision"],"additionalProperties":false}},"required":["guidance"],"additionalProperties":true},"tableOfContents":{"type":"array"},"passage":{"type":"object"},"destination":{"type":"object"},"annotation":{"type":"object"},"receipt":{"type":["object","null"]},"items":{"type":"array"},"books":{"type":"array"},"candidates":{"type":"array"},"storageMode":{"type":["string","null"]},"bookId":{"type":"string"},"title":{"type":"string"},"surface":{"type":"string"},"guidanceVersion":{"type":"string"},"code":{"type":"string"},"focus":{"oneOf":[{"type":"object","properties":{"outcome":{"type":"string","enum":["applied","superseded","unavailable"]},"guidance":{"type":"object","properties":{"state":{"type":"string","enum":["absent","guiding","yielded"]},"canBack":{"type":"boolean"},"revision":{"type":"integer","minimum":0}},"required":["state","canBack","revision"],"additionalProperties":false}},"required":["outcome","guidance"],"additionalProperties":false},{"type":"object","properties":{"outcome":{"const":"rejected"},"guidance":{"type":"object","properties":{"state":{"type":"string","enum":["absent","guiding","yielded"]},"canBack":{"type":"boolean"},"revision":{"type":"integer","minimum":0}},"required":["state","canBack","revision"],"additionalProperties":false},"code":{"type":"string"},"detail":{"type":"string","maxLength":1000}},"required":["outcome","guidance","code","detail"],"additionalProperties":false}]},"control":{"oneOf":[{"type":"object","properties":{"outcome":{"type":"string","enum":["restored","no_back_target","unresolvable"]},"guidance":{"type":"object","properties":{"state":{"type":"string","enum":["absent","guiding","yielded"]},"canBack":{"type":"boolean"},"revision":{"type":"integer","minimum":0}},"required":["state","canBack","revision"],"additionalProperties":false}},"required":["outcome","guidance"],"additionalProperties":false},{"type":"object","properties":{"outcome":{"const":"cleared"},"wasActive":{"type":"boolean"},"guidance":{"type":"object","properties":{"state":{"type":"string","enum":["absent","guiding","yielded"]},"canBack":{"type":"boolean"},"revision":{"type":"integer","minimum":0}},"required":["state","canBack","revision"],"additionalProperties":false}},"required":["outcome","wasActive","guidance"],"additionalProperties":false}]}},"required":["ok","message"],"additionalProperties":true},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"list_books","kind":"answer","impl":"imperative","description":"List the books in this person's local library, with how far through each one they are. Use this to find the book to open before reading anything.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"ok":{"type":"boolean"},"message":{"type":"string"},"error":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false},"readingContext":{"type":"object","properties":{"guidance":{"type":"object","properties":{"state":{"type":"string","enum":["absent","guiding","yielded"]},"canBack":{"type":"boolean"},"revision":{"type":"integer","minimum":0}},"required":["state","canBack","revision"],"additionalProperties":false}},"required":["guidance"],"additionalProperties":true},"tableOfContents":{"type":"array"},"passage":{"type":"object"},"destination":{"type":"object"},"annotation":{"type":"object"},"receipt":{"type":["object","null"]},"items":{"type":"array"},"books":{"type":"array"},"candidates":{"type":"array"},"storageMode":{"type":["string","null"]},"bookId":{"type":"string"},"title":{"type":"string"},"surface":{"type":"string"},"guidanceVersion":{"type":"string"},"code":{"type":"string"},"focus":{"oneOf":[{"type":"object","properties":{"outcome":{"type":"string","enum":["applied","superseded","unavailable"]},"guidance":{"type":"object","properties":{"state":{"type":"string","enum":["absent","guiding","yielded"]},"canBack":{"type":"boolean"},"revision":{"type":"integer","minimum":0}},"required":["state","canBack","revision"],"additionalProperties":false}},"required":["outcome","guidance"],"additionalProperties":false},{"type":"object","properties":{"outcome":{"const":"rejected"},"guidance":{"type":"object","properties":{"state":{"type":"string","enum":["absent","guiding","yielded"]},"canBack":{"type":"boolean"},"revision":{"type":"integer","minimum":0}},"required":["state","canBack","revision"],"additionalProperties":false},"code":{"type":"string"},"detail":{"type":"string","maxLength":1000}},"required":["outcome","guidance","code","detail"],"additionalProperties":false}]},"control":{"oneOf":[{"type":"object","properties":{"outcome":{"type":"string","enum":["restored","no_back_target","unresolvable"]},"guidance":{"type":"object","properties":{"state":{"type":"string","enum":["absent","guiding","yielded"]},"canBack":{"type":"boolean"},"revision":{"type":"integer","minimum":0}},"required":["state","canBack","revision"],"additionalProperties":false}},"required":["outcome","guidance"],"additionalProperties":false},{"type":"object","properties":{"outcome":{"const":"cleared"},"wasActive":{"type":"boolean"},"guidance":{"type":"object","properties":{"state":{"type":"string","enum":["absent","guiding","yielded"]},"canBack":{"type":"boolean"},"revision":{"type":"integer","minimum":0}},"required":["state","canBack","revision"],"additionalProperties":false}},"required":["outcome","wasActive","guidance"],"additionalProperties":false}]}},"required":["ok","message"],"additionalProperties":true},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"open_book","kind":"transact","impl":"imperative","description":"Open one book so its reading tools become available. Supply exactly ONE selector: bookId from list_books OR a distinctive title fragment. Omit the other field entirely, not an empty placeholder or null. Minimal JSON: {\"title\":\"Calculus\"}. An ambiguous title opens nothing and returns bounded candidates; select a returned bookId instead of guessing.","inputSchema":{"type":"object","oneOf":[{"required":["bookId"],"not":{"required":["title"]}},{"required":["title"],"not":{"required":["bookId"]}}],"properties":{"bookId":{"type":"string","description":"An id returned by list_books."},"title":{"type":"string","description":"Part of the title, matched case-insensitively."}},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"ok":{"type":"boolean"},"message":{"type":"string"},"error":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false},"readingContext":{"type":"object","properties":{"guidance":{"type":"object","properties":{"state":{"type":"string","enum":["absent","guiding","yielded"]},"canBack":{"type":"boolean"},"revision":{"type":"integer","minimum":0}},"required":["state","canBack","revision"],"additionalProperties":false}},"required":["guidance"],"additionalProperties":true},"tableOfContents":{"type":"array"},"passage":{"type":"object"},"destination":{"type":"object"},"annotation":{"type":"object"},"receipt":{"type":["object","null"]},"items":{"type":"array"},"books":{"type":"array"},"candidates":{"type":"array"},"storageMode":{"type":["string","null"]},"bookId":{"type":"string"},"title":{"type":"string"},"surface":{"type":"string"},"guidanceVersion":{"type":"string"},"code":{"type":"string"},"focus":{"oneOf":[{"type":"object","properties":{"outcome":{"type":"string","enum":["applied","superseded","unavailable"]},"guidance":{"type":"object","properties":{"state":{"type":"string","enum":["absent","guiding","yielded"]},"canBack":{"type":"boolean"},"revision":{"type":"integer","minimum":0}},"required":["state","canBack","revision"],"additionalProperties":false}},"required":["outcome","guidance"],"additionalProperties":false},{"type":"object","properties":{"outcome":{"const":"rejected"},"guidance":{"type":"object","properties":{"state":{"type":"string","enum":["absent","guiding","yielded"]},"canBack":{"type":"boolean"},"revision":{"type":"integer","minimum":0}},"required":["state","canBack","revision"],"additionalProperties":false},"code":{"type":"string"},"detail":{"type":"string","maxLength":1000}},"required":["outcome","guidance","code","detail"],"additionalProperties":false}]},"control":{"oneOf":[{"type":"object","properties":{"outcome":{"type":"string","enum":["restored","no_back_target","unresolvable"]},"guidance":{"type":"object","properties":{"state":{"type":"string","enum":["absent","guiding","yielded"]},"canBack":{"type":"boolean"},"revision":{"type":"integer","minimum":0}},"required":["state","canBack","revision"],"additionalProperties":false}},"required":["outcome","guidance"],"additionalProperties":false},{"type":"object","properties":{"outcome":{"const":"cleared"},"wasActive":{"type":"boolean"},"guidance":{"type":"object","properties":{"state":{"type":"string","enum":["absent","guiding","yielded"]},"canBack":{"type":"boolean"},"revision":{"type":"integer","minimum":0}},"required":["state","canBack","revision"],"additionalProperties":false}},"required":["outcome","wasActive","guidance"],"additionalProperties":false}]}},"required":["ok","message"],"additionalProperties":true},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"}],"category":"Health & Education","favicon":"/favicons/bookhand.dev.png","apiSurface":"spec","toolCount":3}}