{"ok":true,"site":{"host":"richardli.dev","url":"https://www.richardli.dev/","type":"live","desc":"Richard Li is a Full Stack Developer and Systems Design Engineering student at the University of Waterloo. Experienced in React, Next.js, Swift, TypeScript, and AI integration. View my portfolio,…","tools":[{"name":"list_pages","kind":"answer","impl":"imperative","description":"Every page on Richard Li's site, with a one-line summary. Start here.","title":"List pages","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/experiments","/transit/fanning","/transitplanner","/safuture"]},{"name":"describe_page","kind":"answer","impl":"imperative","description":"What's on the current page: its sections (for scroll_to_section) and the links and buttons on it, each with an id (for highlight and click). Call again after the page changes; ids are only valid until the next call.","title":"Describe this page","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/experiments","/transit/fanning","/transitplanner","/safuture"]},{"name":"open_page","kind":"act","impl":"imperative","description":"Go to another page on the site (paths from list_pages).","title":"Open a page","inputSchema":{"type":"object","properties":{"value":{"type":"string","description":"Page path, e.g. /transitplanner","enum":["/","/about","/resume","/chat","/side-quests","/transit/fanning","/4sight","/amd","/boink","/cec","/fatherfigure","/futureforward","/safuture","/salespatriot","/transitplanner","/yrhacks"]}},"required":["value"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/experiments","/transit/fanning","/transitplanner","/safuture"]},{"name":"scroll_to_section","kind":"act","impl":"imperative","description":"Scroll the current page to a section, by its id from describe_page.","title":"Scroll to a section","inputSchema":{"type":"object","properties":{"value":{"type":"string","description":"Section id from describe_page"}},"required":["value"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/experiments","/transit/fanning","/transitplanner","/safuture"]},{"name":"highlight","kind":"act","impl":"imperative","description":"Point at a link or button on the current page and highlight it for a moment, without clicking it. Uses an id from describe_page.","title":"Highlight something","inputSchema":{"type":"object","properties":{"value":{"type":"string","description":"Target id from describe_page, e.g. t7"}},"required":["value"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/experiments","/transit/fanning","/transitplanner","/safuture"]},{"name":"click","kind":"act","impl":"imperative","description":"Click a link or button on the current page, by its id from describe_page. Links that leave the site can't be clicked.","title":"Click something","inputSchema":{"type":"object","properties":{"value":{"type":"string","description":"Target id from describe_page, e.g. t5"}},"required":["value"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/experiments","/transit/fanning","/transitplanner","/safuture"]},{"name":"ask_richard","kind":"act","impl":"imperative","description":"Ask the site's chatbot, which answers as Richard Li using his projects, work history and writing. Good for questions the pages don't answer directly.","title":"Ask Richard","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"value":{"type":"string","description":"The question"}},"required":["value"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/experiments","/transit/fanning","/transitplanner","/safuture"]}],"category":"Media & Personal","favicon":"/favicons/richardli.dev.png","apiSurface":"spec","toolCount":7}}