{"probe":"0.1","subject":"https://xandwr.com","spec":"https://xandwr.com/.well-known/probe/SPEC.md","verifier":"https://xandwr.com/.well-known/probe/verify.mjs","assertions":[{"id":"llms-txt","describe":"An llms.txt site map is served as plain text and names the author","request":{"path":"/llms.txt"},"expect":[{"status":200},{"header":"content-type","contains":"text/plain"},{"body":"contains","value":"Xander Pickering"}]},{"id":"resume-json","describe":"The resume is served as valid JSON Resume with a non-empty name","request":{"path":"/resume.json"},"expect":[{"status":200},{"header":"content-type","contains":"application/json"},{"json":"$.basics.name","type":"string","nonEmpty":true}]},{"id":"resume-json-preset","describe":"The resume honors ?preset= and still returns valid JSON Resume","request":{"path":"/resume.json?preset=software"},"expect":[{"status":200},{"json":"$.basics.name","type":"string","nonEmpty":true}]},{"id":"projects-json","describe":"Projects are a schema.org ItemList with at least one item","request":{"path":"/projects.json"},"expect":[{"status":200},{"header":"content-type","contains":"application/json"},{"json":"$.@type","equals":"ItemList"},{"json":"$.itemListElement","type":"array","minLength":1},{"json":"$.itemListElement[0].item.codeRepository","type":"string","nonEmpty":true}]},{"id":"blog-json","describe":"The blog index is served as JSON","request":{"path":"/blog.json"},"expect":[{"status":200},{"header":"content-type","contains":"application/json"}]},{"id":"sitemap","describe":"A sitemap is served as XML","request":{"path":"/sitemap.xml"},"expect":[{"status":200},{"header":"content-type","contains":"xml"},{"body":"contains","value":"<urlset"}]},{"id":"feed","describe":"An RSS feed is served as XML","request":{"path":"/blog/feed.xml"},"expect":[{"status":200},{"header":"content-type","contains":"xml"}]},{"id":"now-playing","describe":"The now-playing API returns JSON with a nowPlaying key (track or null)","request":{"path":"/api/now-playing"},"expect":[{"status":200},{"header":"content-type","contains":"application/json"},{"json":"$.nowPlaying","present":true}]},{"id":"probe-self","describe":"This very manifest is served as JSON and declares the PROBE version","request":{"path":"/.well-known/probe.json"},"expect":[{"status":200},{"header":"content-type","contains":"application/json"},{"json":"$.probe","type":"string","nonEmpty":true}]}],"affordances":[{"id":"fetch-resume","describe":"Retrieve a structured résumé in JSON Resume (jsonresume.org) format, optionally tailored to a role.","requires":["resume-json","resume-json-preset"],"via":{"method":"GET","path":"/resume.json","params":{"preset":"software | embedded | it | content"}},"returns":"application/json (jsonresume.org schema)"},{"id":"list-projects","describe":"Enumerate the author's live source projects as schema.org SoftwareSourceCode.","requires":["projects-json"],"via":{"method":"GET","path":"/projects.json"},"returns":"application/json (schema.org ItemList)"},{"id":"read-writing","describe":"Discover blog posts and fetch their raw markdown for ingestion.","requires":["blog-json","feed"],"via":{"method":"GET","path":"/blog.json"},"returns":"application/json (post metadata + links to raw markdown)"},{"id":"site-map-for-llms","describe":"Get a concise, link-rich map of the entire site written for LLMs.","requires":["llms-txt"],"via":{"method":"GET","path":"/llms.txt"},"returns":"text/plain (llmstxt.org)"},{"id":"now-playing","describe":"Read the author's current or last-played Spotify track.","requires":["now-playing"],"via":{"method":"GET","path":"/api/now-playing"},"returns":"application/json ({ nowPlaying: track | null })"},{"id":"self-verify","describe":"Independently confirm every capability on this domain by re-running this manifest's assertions.","requires":["probe-self"],"via":{"method":"GET","path":"/.well-known/probe.json"},"returns":"application/json (this PROBE manifest)"}]}