{"ok":true,"site":{"host":"dhanur.me","url":"https://dhanur.me/","type":"live","desc":"Backend systems engineering, distributed architecture, and technical writing from Dhanur — exploring cloud infrastructure, Linux, and developer tools.","tools":[{"name":"tools.list","kind":"answer","impl":"imperative","description":"List all available imperative WebMCP tools exposed by this page.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/appreciation/","/archive/","/categories/","/design/","/blog/building-scalable-apis/"]},{"name":"system.ping","kind":"act","impl":"imperative","description":"Return a timestamp and protocol metadata for health checks.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/appreciation/","/archive/","/categories/","/design/","/blog/building-scalable-apis/"]},{"name":"app.getState","kind":"answer","impl":"imperative","description":"Get page state including route, theme, UI toggles, and connectivity.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/appreciation/","/archive/","/categories/","/design/","/blog/building-scalable-apis/"]},{"name":"nav.prev","kind":"act","impl":"imperative","description":"Navigate to the previous item/page link.","inputSchema":{"type":"object","additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/appreciation/","/archive/","/categories/","/design/","/blog/building-scalable-apis/"]},{"name":"nav.next","kind":"act","impl":"imperative","description":"Navigate to the next item/page link.","inputSchema":{"type":"object","additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/appreciation/","/archive/","/categories/","/design/","/blog/building-scalable-apis/"]},{"name":"nav.home","kind":"act","impl":"imperative","description":"Navigate to the site home page.","inputSchema":{"type":"object","additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/appreciation/","/archive/","/categories/","/design/","/blog/building-scalable-apis/"]},{"name":"nav.goto","kind":"act","impl":"imperative","description":"Navigate to an internal route.","inputSchema":{"type":"object","properties":{"href":{"type":"string"},"path":{"type":"string"}},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/appreciation/","/archive/","/categories/","/design/","/blog/building-scalable-apis/"]},{"name":"nav.reload","kind":"act","impl":"imperative","description":"Reload the current page.","inputSchema":{"type":"object","additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/appreciation/","/archive/","/categories/","/design/","/blog/building-scalable-apis/"]},{"name":"nav.back","kind":"act","impl":"imperative","description":"Navigate browser history back.","inputSchema":{"type":"object","additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/appreciation/","/archive/","/categories/","/design/","/blog/building-scalable-apis/"]},{"name":"nav.forward","kind":"act","impl":"imperative","description":"Navigate browser history forward.","inputSchema":{"type":"object","additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/appreciation/","/archive/","/categories/","/design/","/blog/building-scalable-apis/"]},{"name":"theme.get","kind":"answer","impl":"imperative","description":"Read current theme mode and resolved theme.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/appreciation/","/archive/","/categories/","/design/","/blog/building-scalable-apis/"]},{"name":"theme.set","kind":"act","impl":"imperative","description":"Set theme mode to auto, light, or dark.","inputSchema":{"type":"object","properties":{"mode":{"type":"string","enum":["auto","light","dark"]}},"required":["mode"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/appreciation/","/archive/","/categories/","/design/","/blog/building-scalable-apis/"]},{"name":"theme.toggle","kind":"act","impl":"imperative","description":"Cycle theme mode through auto/light/dark.","inputSchema":{"type":"object","additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/appreciation/","/archive/","/categories/","/design/","/blog/building-scalable-apis/"]},{"name":"search.open","kind":"answer","impl":"imperative","description":"Open the search modal.","inputSchema":{"type":"object","additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/appreciation/","/archive/","/categories/","/design/","/blog/building-scalable-apis/"]},{"name":"search.close","kind":"answer","impl":"imperative","description":"Close the search modal.","inputSchema":{"type":"object","additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/appreciation/","/archive/","/categories/","/design/","/blog/building-scalable-apis/"]},{"name":"search.toggle","kind":"act","impl":"imperative","description":"Toggle search modal visibility.","inputSchema":{"type":"object","additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/appreciation/","/archive/","/categories/","/design/","/blog/building-scalable-apis/"]},{"name":"search.query","kind":"answer","impl":"imperative","description":"Set a search query in the modal and return the current rendered results.","inputSchema":{"type":"object","properties":{"query":{"type":"string"}},"required":["query"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/appreciation/","/archive/","/categories/","/design/","/blog/building-scalable-apis/"]},{"name":"search.results","kind":"answer","impl":"imperative","description":"Read currently rendered search results from the modal.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"limit":{"type":"number"}},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/appreciation/","/archive/","/categories/","/design/","/blog/building-scalable-apis/"]},{"name":"ai.status","kind":"answer","impl":"imperative","description":"Read Ask AI runtime status and effective configuration.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/appreciation/","/archive/","/categories/","/design/","/blog/building-scalable-apis/"]},{"name":"ai.buildContext","kind":"act","impl":"imperative","description":"Build an Ask AI context payload from query, page state, and profile context.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"query":{"type":"string"},"source":{"type":"string"}},"required":["query"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/appreciation/","/archive/","/categories/","/design/","/blog/building-scalable-apis/"]},{"name":"ai.context.get","kind":"answer","impl":"imperative","description":"Read a previously stored Ask AI context payload from session storage by key.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"ctxKey":{"type":"string"},"key":{"type":"string"}},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/appreciation/","/archive/","/categories/","/design/","/blog/building-scalable-apis/"]},{"name":"ai.ask","kind":"act","impl":"imperative","description":"Execute Ask AI for a query using current runtime configuration.","inputSchema":{"type":"object","properties":{"query":{"type":"string"},"source":{"type":"string"},"newTab":{"type":"boolean"}},"required":["query"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/appreciation/","/archive/","/categories/","/design/","/blog/building-scalable-apis/"]},{"name":"toc.open","kind":"act","impl":"imperative","description":"Expand/open the table of contents panel.","inputSchema":{"type":"object","additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/appreciation/","/archive/","/categories/","/design/","/blog/building-scalable-apis/"]},{"name":"toc.close","kind":"act","impl":"imperative","description":"Collapse/close the table of contents panel.","inputSchema":{"type":"object","additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/appreciation/","/archive/","/categories/","/design/","/blog/building-scalable-apis/"]},{"name":"toc.toggle","kind":"act","impl":"imperative","description":"Toggle the table of contents panel.","inputSchema":{"type":"object","additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/appreciation/","/archive/","/categories/","/design/","/blog/building-scalable-apis/"]},{"name":"sidebar.open","kind":"act","impl":"imperative","description":"Expand/open the sidebar panel.","inputSchema":{"type":"object","additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/appreciation/","/archive/","/categories/","/design/","/blog/building-scalable-apis/"]},{"name":"sidebar.close","kind":"act","impl":"imperative","description":"Collapse/close the sidebar panel.","inputSchema":{"type":"object","additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/appreciation/","/archive/","/categories/","/design/","/blog/building-scalable-apis/"]},{"name":"sidebar.toggle","kind":"act","impl":"imperative","description":"Toggle sidebar panel state.","inputSchema":{"type":"object","additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/appreciation/","/archive/","/categories/","/design/","/blog/building-scalable-apis/"]},{"name":"content.listHeadings","kind":"answer","impl":"imperative","description":"List all heading anchors found in main content.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/appreciation/","/archive/","/categories/","/design/","/blog/building-scalable-apis/"]},{"name":"content.scrollToHeading","kind":"act","impl":"imperative","description":"Scroll to a heading by its id.","inputSchema":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/appreciation/","/archive/","/categories/","/design/","/blog/building-scalable-apis/"]},{"name":"content.copyPermalink","kind":"act","impl":"imperative","description":"Copy permalink for current page or a specific heading id.","inputSchema":{"type":"object","properties":{"id":{"type":"string"}},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/appreciation/","/archive/","/categories/","/design/","/blog/building-scalable-apis/"]},{"name":"playlist.prev","kind":"act","impl":"imperative","description":"Navigate to previous playlist item if available.","inputSchema":{"type":"object","additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/appreciation/","/archive/","/categories/","/design/","/blog/building-scalable-apis/"]},{"name":"playlist.next","kind":"act","impl":"imperative","description":"Navigate to next playlist item if available.","inputSchema":{"type":"object","additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/appreciation/","/archive/","/categories/","/design/","/blog/building-scalable-apis/"]},{"name":"pwa.status","kind":"answer","impl":"imperative","description":"Get service worker and PWA capability status.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/appreciation/","/archive/","/categories/","/design/","/blog/building-scalable-apis/"]},{"name":"pwa.checkForUpdate","kind":"act","impl":"imperative","description":"Trigger service worker update check.","inputSchema":{"type":"object","additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/appreciation/","/archive/","/categories/","/design/","/blog/building-scalable-apis/"]}],"category":"Media & Personal","favicon":"/favicons/dhanur.me.png","apiSurface":"spec","toolCount":35}}