{"ok":true,"site":{"host":"rafaaudibert.dev","url":"https://rafaaudibert.dev/","type":"live","desc":"The personal site of Rafa Audibert","tools":[{"name":"get_profile","kind":"answer","impl":"imperative","description":"Who Rafa Audibert is in one call: name, headline, location, current job, website and social links. Start here.","title":"Profile","annotations":{"readOnlyHint":true},"inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/resume/","/travel/","/changelog/","/mcp/","/blog/migrating-from-aws-to-cloudflare-with-claude"]},{"name":"get_resume","kind":"answer","impl":"imperative","description":"Rafa's resume, the same content as rafaaudibert.dev/resume: background, work experience with bullet points, education and achievements, spoken languages, and technologies. Optionally narrow to one section.","title":"Resume","annotations":{"readOnlyHint":true},"inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"section":{"description":"Return only this section. Omit for the whole resume.","type":"string","enum":["background","experience","education","languages","technologies"]}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/resume/","/travel/","/changelog/","/mcp/","/blog/migrating-from-aws-to-cloudflare-with-claude"]},{"name":"list_visited_countries","kind":"answer","impl":"imperative","description":"Countries and territories Rafa has visited, with the years of each visit. Brazil is home and counts for every year. Optionally filter to a single year.","title":"Visited countries","annotations":{"readOnlyHint":true},"inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"year":{"description":"Only countries visited in this year.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/resume/","/travel/","/changelog/","/mcp/","/blog/migrating-from-aws-to-cloudflare-with-claude"]},{"name":"list_flights","kind":"answer","impl":"imperative","description":"Flights Rafa has taken, as drawn on the globe at rafaaudibert.dev/travel. Every international flight is listed; repetitive domestic hops are left out. Filter by year and/or airport IATA code.","title":"Flights","annotations":{"readOnlyHint":true},"inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"year":{"description":"Only flights in this year.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"airport":{"description":"Only flights departing from or arriving at this IATA code, e.g. POA.","type":"string","minLength":3,"maxLength":3}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/resume/","/travel/","/changelog/","/mcp/","/blog/migrating-from-aws-to-cloudflare-with-claude"]},{"name":"get_travel_summary","kind":"answer","impl":"imperative","description":"Aggregate travel numbers: how many countries, flights and airports, a per-year breakdown, and the most used airports.","title":"Travel summary","annotations":{"readOnlyHint":true},"inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/resume/","/travel/","/changelog/","/mcp/","/blog/migrating-from-aws-to-cloudflare-with-claude"]},{"name":"list_blog_posts","kind":"answer","impl":"imperative","description":"Rafa's blog posts, newest first, with title, description, publish date, tags and URL. Use get_blog_post for the full text. Optionally filter by tag.","title":"Blog posts","annotations":{"readOnlyHint":true},"inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"tag":{"description":"Only posts carrying this tag (case-insensitive).","type":"string"}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/resume/","/travel/","/changelog/","/mcp/","/blog/migrating-from-aws-to-cloudflare-with-claude"]},{"name":"get_blog_post","kind":"answer","impl":"imperative","description":"The full Markdown source of one blog post, by slug (see list_blog_posts).","title":"Blog post","annotations":{"readOnlyHint":true},"inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"slug":{"type":"string","description":"Post slug, e.g. applying-for-a-job-in-2024."}},"required":["slug"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/resume/","/travel/","/changelog/","/mcp/","/blog/migrating-from-aws-to-cloudflare-with-claude"]}],"category":"Media & Personal","favicon":"/favicons/rafaaudibert.dev.png","apiSurface":"spec","toolCount":7}}