{
  "aiendpoint": "1.0",
  "service": {
    "name": "Mike Henken",
    "description": "Personal site and career corpus for Mike Henken, software engineer and engineering leader. Static pages, writing, and My Assistant voice agent.",
    "category": ["developer", "search", "communication"],
    "language": ["en"]
  },
  "capabilities": [
    {
      "id": "get_llms_txt",
      "description": "Fetch the llms.txt career summary and discovery index",
      "endpoint": "/llms.txt",
      "method": "GET",
      "returns": "markdown plain text"
    },
    {
      "id": "get_openapi",
      "description": "Fetch the OpenAPI discovery contract for site and agent APIs",
      "endpoint": "/openapi.yaml",
      "method": "GET",
      "returns": "openapi yaml string"
    },
    {
      "id": "get_sitemap",
      "description": "Fetch the XML sitemap of public pages and articles",
      "endpoint": "/sitemap.xml",
      "method": "GET",
      "returns": "sitemap xml"
    },
    {
      "id": "get_rss",
      "description": "Fetch the RSS feed of writing articles",
      "endpoint": "/rss.xml",
      "method": "GET",
      "returns": "rss xml"
    },
    {
      "id": "get_mcp_stub",
      "description": "Read MCP capability stub on the static site",
      "endpoint": "/api/mcp",
      "method": "GET",
      "returns": "{status, protocol, capabilities}"
    },
    {
      "id": "agent_health",
      "description": "Check My Assistant Worker availability and route list",
      "endpoint": "https://agent.mikehenken.com/health",
      "method": "GET",
      "returns": "{ok, service, endpoints[]}"
    },
    {
      "id": "agent_config",
      "description": "Load My Assistant canvas config (persona, API URLs, deferred features)",
      "endpoint": "https://agent.mikehenken.com/v1/config",
      "method": "GET",
      "returns": "{version, persona, api, models, deferredFeatures[]}"
    },
    {
      "id": "agent_knowledge_search",
      "description": "Search Mike's career corpus via Vectorize RAG",
      "endpoint": "https://agent.mikehenken.com/v1/knowledge/search",
      "method": "POST",
      "params": {
        "query": "string, required -- natural language question",
        "top_k": "integer, optional, default 8, max 50"
      },
      "returns": "chunks[] {text, score, metadata}"
    }
  ],
  "auth": {
    "type": "none",
    "docs": "https://mikehenken.com/api/docs/"
  },
  "meta": {
    "last_updated": "2026-08-14",
    "changelog": "https://mikehenken.com/openapi.yaml"
  }
}
