{"specVersion":"1.0","entries":[{"@context":"https://agenticresourcediscovery.org/context/v1","identifier":"urn:air:new.peterschmalfeldt.com:webmcp:website-tools","displayName":"Peter Schmalfeldt website tools","type":"application/vnd.peterschmalfeldt.webmcp+json","description":"Read-only browser tools for current website content, published Projects and Insights, contact options, and selected GitHub repositories.","representativeQueries":["What experience and skills does Peter Schmalfeldt share on his website?","Find projects Peter has created or contributed to.","Find Peter's articles about web applications and AI.","How can I contact Peter, and what is his published availability?"],"capabilities":["get_profile","list_services","list_testimonials","get_contact_options","get_resume","search_projects","get_project","get_prototype_showcase","search_insights","get_insight","list_github_repositories"],"data":{"protocol":"WebMCP","transport":"browser","url":"https://new.peterschmalfeldt.com/","instructions":"Open the website in a browser with WebMCP support and use its registered tools. This is not a remote MCP server endpoint.","links":{"llms":"https://new.peterschmalfeldt.com/llms.txt","markdown":"https://new.peterschmalfeldt.com/index.md"},"tools":[{"name":"get_profile","description":"Read Peter Schmalfeldt's current website biography, site skill labels, complete experience metrics, and public profile links. LinkedIn is a link only. Site labels are not a complete resume skill inventory.","inputSchema":{"type":"object","properties":{},"required":[],"additionalProperties":false},"annotations":{"readOnlyHint":true,"untrustedContentHint":false}},{"name":"list_services","description":"Read Peter's current capabilities, working approach, booking options, and published availability. The consulting category includes current booking options and hands-on work. No prices or live appointment slots.","inputSchema":{"type":"object","properties":{"category":{"type":"string","maxLength":500,"description":"Section to return. Defaults to all.","enum":["all","consulting","services","process","engagement"]}},"required":[],"additionalProperties":false},"annotations":{"readOnlyHint":true,"untrustedContentHint":false}},{"name":"list_testimonials","description":"Read attributed testimonials published on the About page, including inactive slides. These are personal recommendations, not independently verified outcomes.","inputSchema":{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":10,"description":"Maximum quotes. Defaults to 10."}},"required":[],"additionalProperties":false},"annotations":{"readOnlyHint":true,"untrustedContentHint":true}},{"name":"get_contact_options","description":"Read Peter's current email, Calendly links, engagement options, and full published availability. Does not open windows, send email, or book appointments. Live slots and rates are available only through Calendly.","inputSchema":{"type":"object","properties":{},"required":[],"additionalProperties":false},"annotations":{"readOnlyHint":true,"untrustedContentHint":false}},{"name":"get_resume","description":"Read the current website's experience and qualifications, with the public resume link. Does not fetch or parse the external resume/PDF. No old resume snapshot or inferred proficiency claims.","inputSchema":{"type":"object","properties":{},"required":[],"additionalProperties":false},"annotations":{"readOnlyHint":true,"untrustedContentHint":false}},{"name":"search_projects","description":"Search the current published Sanity Project case studies by title, excerpt, and tags. Technology matches published tags, ignoring punctuation and case. This is a selection of case studies, not a complete contribution history. Use list_github_repositories for additional curated public repositories. Missing matches do not establish lack of experience.","inputSchema":{"type":"object","properties":{"query":{"type":"string","maxLength":500,"description":"Search title, excerpt, and tags. Defaults to all."},"technology":{"type":"string","maxLength":500,"description":"Exact published tag, ignoring punctuation and case."},"page":{"type":"integer","minimum":1,"maximum":100,"description":"Page number. Defaults to 1."},"per_page":{"type":"integer","minimum":1,"maximum":30,"description":"Results per page. Defaults to 10."}},"required":[],"additionalProperties":false},"annotations":{"readOnlyHint":true,"untrustedContentHint":true}},{"name":"get_project","description":"Read a published Sanity Project case study by the stable ID returned by search_projects. Returns its Challenge, Solution, Outcome, media, and external links. Does not infer sole authorship or fetch repository code.","inputSchema":{"type":"object","properties":{"id":{"type":"string","maxLength":500,"description":"Stable Sanity project ID returned by search_projects."}},"required":["id"],"additionalProperties":false},"annotations":{"readOnlyHint":true,"untrustedContentHint":true}},{"name":"get_prototype_showcase","description":"Read the current Rapid Prototypes Sanity case study and its video/repository links. Does not play or transcribe the video. This compatibility tool uses the current case study, using its published fields.","inputSchema":{"type":"object","properties":{},"required":[],"additionalProperties":false},"annotations":{"readOnlyHint":true,"untrustedContentHint":true}},{"name":"search_insights","description":"Search published Insights by title, excerpt, and tags. Returns stable IDs, source URLs, publication dates, and summaries. Older posts describe technology at their publication date.","inputSchema":{"type":"object","properties":{"query":{"type":"string","maxLength":500,"description":"Search title, excerpt, and tags. Defaults to all."},"tag":{"type":"string","maxLength":500,"description":"Exact published tag, ignoring punctuation and case."},"page":{"type":"integer","minimum":1,"maximum":100,"description":"Page number. Defaults to 1."},"per_page":{"type":"integer","minimum":1,"maximum":30,"description":"Results per page. Defaults to 10."}},"required":[],"additionalProperties":false},"annotations":{"readOnlyHint":true,"untrustedContentHint":true}},{"name":"get_insight","description":"Read a published Insight by the stable ID returned by search_insights. Returns article text, code as data, image references, and source links. Does not execute code or follow external links.","inputSchema":{"type":"object","properties":{"id":{"type":"string","maxLength":500,"description":"Stable article ID returned by search_insights."}},"required":["id"],"additionalProperties":false},"annotations":{"readOnlyHint":true,"untrustedContentHint":true}},{"name":"list_github_repositories","description":"Fetch live public repository metadata for the configured repository allowlist, including work beyond this site's case studies. Excluded repositories stay excluded. API pagination can contain an empty filtered page. Ownership, language, and updated_at do not establish Peter's contributions, full technology stack, or code quality. Does not fetch source code or private repositories.","inputSchema":{"type":"object","properties":{"owner":{"type":"string","maxLength":500,"description":"Account. Defaults to manifestinteractive.","enum":["manifestinteractive","FindByColor","PoliceScorecard","sfccdevops","opensfcc"]},"page":{"type":"integer","minimum":1,"maximum":100,"description":"Page number. Defaults to 1."},"per_page":{"type":"integer","minimum":1,"maximum":30,"description":"Results per page. Defaults to 10."}},"required":[],"additionalProperties":false},"annotations":{"readOnlyHint":true,"untrustedContentHint":true}}]}}]}