{"ok":true,"site":{"host":"matteopolak.com","url":"https://matteopolak.com/","type":"live","desc":"Software Engineer with experience at Microsoft, Shopify, and Solace. CS student at University of Ottawa building fast, scalable systems.","tools":[{"name":"get_profile","kind":"answer","impl":"imperative","description":"Matthew Polak's profile from his portfolio: name, headline, contact links, experience, selected work, education, skills and achievements. Pass `section` to get only one part.","title":"Get profile","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"section":{"type":"string","description":"Return only this part of the profile.","enum":["contact","experience","projects","education","skills","achievements"]}},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/projects","/blog","/playground","/playground/minecraft","/playground/jacket"]},{"name":"list_projects","kind":"answer","impl":"imperative","description":"Lists the projects on the site, newest first, with slug, date, tags and links. Optionally keep only projects with one tag (for example \"rust\").","title":"List projects","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"tag":{"type":"string","description":"Only projects with this tag (case-insensitive).","maxLength":60}},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/projects","/blog","/playground","/playground/minecraft","/playground/jacket"]},{"name":"get_project","kind":"answer","impl":"imperative","description":"Returns one project by slug (from list_projects): description in markdown, tags, links and how AI was used to build it, if at all.","title":"Get project","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"slug":{"type":"string","description":"The project slug, for example \"quasi\".","minLength":1,"maxLength":80}},"required":["slug"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/projects","/blog","/playground","/playground/minecraft","/playground/jacket"]},{"name":"search_blog","kind":"answer","impl":"imperative","description":"Finds blog posts whose title, description or tags contain every word of the query. An empty result means no match.","title":"Search blog","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"Words to look for, for example \"axum extract\".","minLength":1,"maxLength":120}},"required":["query"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/projects","/blog","/playground","/playground/minecraft","/playground/jacket"]},{"name":"get_post","kind":"answer","impl":"imperative","description":"Returns one blog post by slug: title, date, description, URL and the full markdown body.","title":"Get blog post","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"slug":{"type":"string","description":"The post slug, for example \"axum-extract\".","minLength":1,"maxLength":120}},"required":["slug"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/projects","/blog","/playground","/playground/minecraft","/playground/jacket"]},{"name":"navigate","kind":"act","impl":"imperative","description":"Opens one of this site's own pages in the current tab (for example /projects, /blog or /playground/quasi). Other sites are refused.","title":"Navigate","inputSchema":{"type":"object","properties":{"path":{"type":"string","description":"A site path such as \"/projects\".","minLength":1,"maxLength":200}},"required":["path"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/projects","/blog","/playground","/playground/minecraft","/playground/jacket"]},{"name":"set_theme","kind":"act","impl":"imperative","description":"Changes the site colour theme and remembers the choice. Pass a theme id or name, or \"next\" for the next one. Without an argument it only lists the themes.","title":"Set theme","inputSchema":{"type":"object","properties":{"theme":{"type":"string","description":"A theme id or name, or \"next\".","maxLength":40}},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/projects","/blog","/playground","/playground/minecraft","/playground/jacket"]},{"name":"run_code","kind":"act","impl":"imperative","description":"Loads code into the open in-browser playground (Jai, Quasi or BaerScript, whichever is on this page), runs it and returns its output. The editor contents are replaced. Returns stdout, stderr, the exit status and diagnostics; output is cut at 20 KB and the run is stopped after 30 seconds. Jai restarts its compiler session first, so it takes longer.","title":"Run code in the playground","annotations":{"consequentialHint":true},"inputSchema":{"type":"object","properties":{"code":{"type":"string","description":"The complete program to run.","minLength":1,"maxLength":100000},"filename":{"type":"string","description":"Jai workspace only: the file to write the code to (default main.jai). Ignored by single-file playgrounds.","maxLength":200}},"required":["code"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/playground/jacket","pages":["/playground/jacket"]}],"category":"Media & Personal","favicon":"/favicons/matteopolak.com.png","apiSurface":"spec","toolCount":8}}