{"ok":true,"site":{"host":"jeremylondon.com","url":"https://jeremylondon.com/","type":"live","desc":"Engineering leader and builder working across AI platforms, distributed systems, security, and reliability.","tools":[{"name":"search_blog_posts","kind":"answer","impl":"imperative","description":"Searches Jeremy London's blog posts by text, category, tag, year, or month and returns matching post metadata. Does not navigate or change the page.","title":"Search blog posts","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"Free-text search across titles, excerpts, categories, and tags."},"category":{"type":"string","description":"One or more category slugs, comma-separated."},"tag":{"type":"string","description":"One or more tag slugs, comma-separated."},"year":{"type":"string","description":"One or more years, comma-separated."},"month":{"type":"string","description":"A month in YYYY-MM format."},"sort":{"type":"string","enum":["newest","oldest","short","long"],"default":"newest","description":"Sort order for the returned posts."},"limit":{"type":"integer","minimum":1,"maximum":20,"default":10,"description":"Maximum number of posts to return."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/blog","/blog?q=Denver","/blog?q=ai+platforms","/blog?q=security","/blog?q=systems"]},{"name":"open_blog_archive","kind":"act","impl":"imperative","description":"Opens the blog archive with the requested search, category, tag, year, month, or sort filters applied. Changes the current page.","title":"Open blog archive","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"Free-text search query."},"category":{"type":"string","description":"Category slug or comma-separated category slugs."},"tag":{"type":"string","description":"Tag slug or comma-separated tag slugs."},"year":{"type":"string","description":"Year or comma-separated years."},"month":{"type":"string","description":"A month in YYYY-MM format."},"sort":{"type":"string","enum":["newest","oldest","short","long"],"default":"newest","description":"Sort order."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/blog","/blog?q=Denver","/blog?q=ai+platforms","/blog?q=security","/blog?q=systems"]},{"name":"open_site_page","kind":"act","impl":"imperative","description":"Opens one of the main site pages. Changes the current page.","title":"Open site page","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"page":{"type":"string","enum":["home","blog","about","contact","rss"],"description":"The page to open."}},"required":["page"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/blog","/blog?q=Denver","/blog?q=ai+platforms","/blog?q=security","/blog?q=systems"]},{"name":"set_site_theme","kind":"act","impl":"imperative","description":"Changes the site theme to system, light, or dark by dispatching the existing theme switch event.","title":"Set site theme","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"theme":{"type":"string","enum":["system","light","dark"],"description":"Theme preference to apply."}},"required":["theme"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/blog","/blog?q=Denver","/blog?q=ai+platforms","/blog?q=security","/blog?q=systems"]},{"name":"open_rss_feed","kind":"act","impl":"imperative","description":"Opens Jeremy London's RSS feed. Changes the current page.","title":"Open RSS feed","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/blog","/blog?q=Denver","/blog?q=ai+platforms","/blog?q=security","/blog?q=systems"]},{"name":"open_contact_channel","kind":"act","impl":"imperative","description":"Opens Jeremy London's email, contact form, GitHub profile, or LinkedIn profile. Changes the current page or opens a mail client.","title":"Open contact channel","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"channel":{"type":"string","enum":["email","form","github","linkedin"],"description":"The contact channel to open."}},"required":["channel"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/blog","/blog?q=Denver","/blog?q=ai+platforms","/blog?q=security","/blog?q=systems"]}],"category":"Media & Personal","favicon":"/favicons/jeremylondon.com.png","apiSurface":"spec","toolCount":6}}