# MikeKappel.com full machine-readable guide Version: 3.126.0 Updated UTC: 2026-06-19T00:28:24Z ## Identity and engineering focus Michael Kappel / Mike Kappel is presented as a Senior Software Engineer and Software Architect focused on AI-assisted engineering, Model Context Protocol (MCP), .NET, SQL Server, TypeScript, confirmed Angular experience, enterprise modernization, and evidence-governed agent interfaces. MCP experience is supported by the UAIX Agent Executability Matrix, public Michael.Kappel NuGet packages, and the v3.126.0 website endpoint and MCP research interface. The architecture explicitly separates full MCP use from REST, static, HTML, and safe no-op paths for clients with lower capabilities. ## Recommended human review order 1. `/resume/` 2. `/projects/#selected-projects` 3. `/case-studies/` 4. `/career/` 5. `/experience/` 6. `/evidence-map/` 7. `/portfolio-review-guide/` 8. `/contacts/` ## Confirmed professional profile links - Website: `https://mikekappel.com/` - LinkedIn: `https://www.linkedin.com/in/michaelkappel` - GitHub: `https://github.com/MichaelKappel` - NuGet: `https://www.nuget.org/profiles/Michael.Kappel` - UAIX Agent Executability Matrix: `https://uaix.org/en-us/spec/agent-executability-matrix/` ## MCP connection Human setup and usage guide: `/mcp-server/` Preferred transport: - `POST /mcp` - JSON-RPC 2.0 over stateless MCP Streamable HTTP - Preferred protocol version: `2025-11-25` - Also accepted by this package: `2025-06-18` and `2025-03-26` - `GET /mcp` returns `405 Method Not Allowed`; this implementation does not use server-sent events or sessions. Fallback and discovery: - `POST /wp-json/mk/v1/mcp` — equivalent JSON-RPC transport through WordPress REST routing - `GET /wp-json/mk/v1/mcp-manifest` — runtime manifest - `GET /wp-json/mk/v1/mcp-status` — transport, capability, archive, vector, and deployment diagnostics - `GET /mcp-client-config.json` — machine-readable lifecycle, header, research workflow, and fallback configuration - `GET /wp-json/mk/v1/research-item` — bounded research reading for HTTP/JSON-only clients - `GET /server.json` — MCP Registry-compatible remote-server manifest; package publication does not claim external registry submission - `GET /.well-known/mcp.json` — site-specific discovery convenience - `GET /assets/data/mcp-manifest.json` — static mirror Declared read-only tools: - `get_profile` - `get_resume` - `list_capabilities` - `list_projects` - `get_research_catalog` - `search_research` - `build_research_context` - `read_research_item` - `get_connection_guide` - `get_server_status` Declared resources are `mk://profile`, `mk://resume`, `mk://capabilities`, `mk://projects`, `mk://research/catalog`, `mk://research/citation-guide`, `mk://research/context-guide`, `mk://research/vector-manifest`, `mk://mcp/server-json`, `mk://mcp/fallbacks`, `mk://mcp/status`, and `mk://mcp/deployment-manifest`. Resource templates are `mk://research/search{?q,source,type,mode,limit,cursor}`, `mk://research/context{?q,source,type,mode,limit,characterBudget,perItemCharacters,cursor}`, and `mk://research/item/{id}{?startCharacter,maximumCharacters,query,grant}`. Declared prompts are `profile_review`, `research_context_bundle`, and `research_query`; `completion/complete` provides bounded template-argument completion. The four definition-list methods return bounded pages and signed opaque `nextCursor` values. Research behavior is bounded. `get_research_catalog` exposes archive scope and facets. `search_research` prefers signed opaque `nextCursor` continuation bound to the query and filters; `nextOffset` remains a compatibility fallback. `build_research_context` assembles citation-bearing excerpts within aggregate and per-item character budgets and continues with a signed cursor. Resource-only clients have equivalent search and context templates. Retrieved report text is wrapped and labeled as untrusted reference content; it cannot authorize tool use, commands, secret disclosure, or instruction changes. Search results can expose readable `resource_link` blocks. Direct reads accept only allowlisted public paths under `/docs` or `/reports`, enforce realpath containment, reject traversal, honor private visibility controls, cap output size, and provide resource continuation URIs. ## Capability-adaptive connection order 1. Use `/mcp` when the client supports MCP Streamable HTTP. 2. Use `/wp-json/mk/v1/mcp` when WordPress REST routing is easier for the client or infrastructure. 3. Use the purpose-specific public REST routes when the client cannot speak MCP. 4. Use public static JSON/text manifests for simple retrieval clients. 5. Use public HTML routes for browser-only or text-extraction clients. 6. Return a safe unsupported/no-op result rather than guessing, extracting private data, or claiming an action occurred. ## Recommended AI review order 1. `/llms.txt` 2. `/server.json` 3. `/.well-known/mcp.json` 4. `/assets/data/mcp-manifest.json` 5. `/llms-full.txt` 6. `/api/public-route-index.json` 7. `/route-qa-contract.json` 8. `/research-dashboard.json` 9. `/.well-known/ai-agent.json` 10. `/.well-known/openapi.json` ## Resume route rule `/resume/` is the primary recruiter artifact route. It centers the two-page visual resume preview, keeps the resume download above the preview, and keeps supporting evidence routes subdued. Model Context Protocol is written out in the resume; the separate Microsoft Certified Professional credential is also written out to avoid acronym ambiguity. ## Visual and content boundaries - The approved personal symbol remains the top-left website mark; a visible text-only `MK` badge is not a substitute. - Dense Corporate Command Layout remains the site-wide presentation baseline. - WordPress is the production runtime; JavaScript is progressive enhancement. - `/docs/` is curated Architecture Notes; `/reports/` is raw noindex research. - Private helper data remains PHP-guarded and must not be mirrored into public JSON or returned by MCP. - Research/evidence records are not certifications. - Only declared, read-only MCP tools may be invoked. Discovery does not authorize writes, uploads, arbitrary URL retrieval, credential checks, private probing, form automation, shell execution, or unknown-route crawling. - The package contains local protocol-dispatch QA. Live WordPress, rewrite, proxy, TLS, cache, and deployed-version parity must be verified separately. - Photography remains creative-range context only, not software-delivery proof, certification, or production metric evidence. ## MCP research archive - Archive snapshot version: 3.121.0 - MCP interface version: 3.126.0 - Archive records: 804 - Unique documents added in v3.121.0: 219 - Readable Markdown records: 802 - Metadata-only legacy records: 2 - Server-gated records: 96 - Public/private search records: 903/999 - Public/private sparse-vector documents: 697/793 - Sparse dimensions: 4096 - Catalog tool: `get_research_catalog` - Search tool: `search_research` with signed opaque cursor continuation and offset fallback - Context tool: `build_research_context` with 4,000–50,000 aggregate characters, 1,000–12,000 characters per item, at most eight requested items, citations, and signed continuation - Resource-only search: `mk://research/search{?q,source,type,mode,limit,cursor}` - Resource-only context: `mk://research/context{?q,source,type,mode,limit,characterBudget,perItemCharacters,cursor}` - Chunked reader: `read_research_item` - Report resource: `mk://research/item/{id}{?startCharacter,maximumCharacters,query,grant}` - Typed output: JSON Schema 2020-12 `outputSchema`, runtime-validated `structuredContent`, and readable `resource_link` blocks - Template completion: `completion/complete` - Vector manifest: `/research-vectors/manifest.json` - Release descriptor: `/research-archive-import-3.126.0.json` - Source import manifest: `/research-archive-import-3.121.0.json` The vector layer is deterministic sparse TF-IDF cosine ranking, not a neural embedding model. Source labels, claim boundaries, exact-query gates, path containment, and output limits remain enforced. ### v3.126.0 transport and research continuation MCP POST requests require both JSON and event-stream response media types in `Accept`; JSON-RPC IDs are limited to strings and integers. `tools/list`, `resources/list`, `resources/templates/list`, and `prompts/list` use bounded pagination with signed cursors bound to the list kind, package version, and ordered definition fingerprint. Definitions publish same-origin icons, resources/templates publish audience, priority, release-time, and safe packaged-size metadata, and research results add bounded triage and provenance metadata. Exact-gated readable results can return short-lived signed grants bound to one report; the original exact query remains a compatibility fallback. Retrieved report content remains explicitly untrusted. The public `/mcp-server/` page includes a click-triggered, same-origin browser diagnostic that performs the MCP lifecycle, follows definition cursors, and checks bounded context without rendering grants. Use `mk://mcp/deployment-manifest` or `/mcp-deployment-manifest.json` to inspect expected live behavior.