{"openapi":"3.1.0","info":{"title":"Junha.dev Portfolio Read-only API","version":"1.0.0","description":"Junha.dev는 성능 최적화, 인터랙션, 확장 가능한 아키텍처를 고민하는 김준하의 포트폴리오와 기술 블로그입니다. 공개 콘텐츠와 에이전트용 문서를 읽기 위한 인증 없는 API입니다.","contact":{"name":"김준하","email":"rlawnsgk0610@gmail.com","url":"https://kimjunha.vercel.app/"}},"servers":[{"url":"https://kimjunha.vercel.app/","description":"Junha.dev production (Vercel)"}],"externalDocs":{"description":"Developer guide and MCP usage","url":"https://kimjunha.vercel.app/developers"},"paths":{"/llms.txt":{"get":{"operationId":"getAgentIndex","summary":"Get the short agent index","description":"Returns profile, project, blog, developer resource and when-to-use guidance in Markdown.","responses":{"200":{"description":"UTF-8 Markdown or plain-text document","content":{"text/markdown":{"schema":{"type":"string"}},"text/plain":{"schema":{"type":"string"}}}}}}},"/llms-full.txt":{"get":{"operationId":"getFullAgentContext","summary":"Get the full agent context","description":"Returns all published project and blog Markdown in one text response.","responses":{"200":{"description":"Full text context","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/skill.md":{"get":{"operationId":"getPortfolioSkill","summary":"Get the portfolio skill document","responses":{"200":{"description":"UTF-8 Markdown or plain-text document","content":{"text/markdown":{"schema":{"type":"string"}},"text/plain":{"schema":{"type":"string"}}}}}}},"/agent-instructions.md":{"get":{"operationId":"getAgentInstructions","summary":"Get instructions for when and how to use Junha.dev","responses":{"200":{"description":"UTF-8 Markdown or plain-text document","content":{"text/markdown":{"schema":{"type":"string"}},"text/plain":{"schema":{"type":"string"}}}}}}},"/projects":{"get":{"operationId":"getProjectsIndex","summary":"Get the projects collection","responses":{"200":{"description":"HTML collection page"}}}},"/projects/{slug}/raw":{"get":{"operationId":"getProjectMarkdown","summary":"Get a project as Markdown","description":"Returns the published canonical Markdown source. No authentication is required.","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"}}],"responses":{"200":{"description":"UTF-8 Markdown or plain-text document","content":{"text/markdown":{"schema":{"type":"string"}},"text/plain":{"schema":{"type":"string"}}}},"404":{"description":"Published slug not found"}}}},"/blog":{"get":{"operationId":"getBlogIndex","summary":"Get the blog collection","responses":{"200":{"description":"HTML collection page"}}}},"/blog/{slug}/raw":{"get":{"operationId":"getBlogPostMarkdown","summary":"Get a blog post as Markdown","description":"Returns the published canonical Markdown source. No authentication is required.","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"}}],"responses":{"200":{"description":"UTF-8 Markdown or plain-text document","content":{"text/markdown":{"schema":{"type":"string"}},"text/plain":{"schema":{"type":"string"}}}},"404":{"description":"Published slug not found"}}}},"/.well-known/agent-skills/index.json":{"get":{"operationId":"getAgentSkillsDiscovery","summary":"Discover the portfolio skill","responses":{"200":{"description":"Agent Skills discovery JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/.well-known/mcp":{"get":{"operationId":"getMcpServerCard","summary":"Get the Junha.dev MCP server card","responses":{"200":{"description":"MCP server card","content":{"application/json":{"schema":{"type":"object"}}}}}},"post":{"operationId":"callMcp","summary":"Send a JSON-RPC request to the MCP server","description":"Streamable HTTP JSON-RPC endpoint using MCP protocol 2025-11-25. Read-only tools only; no authentication is required.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["jsonrpc","method"],"properties":{"jsonrpc":{"const":"2.0"},"id":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"null"}]},"method":{"type":"string"},"params":{"type":"object"}}}}}},"responses":{"200":{"description":"JSON-RPC response","content":{"application/json":{"schema":{"type":"object"}}}},"202":{"description":"JSON-RPC notification accepted"},"400":{"description":"Invalid protocol or JSON"},"403":{"description":"Origin rejected"}}}}},"x-agent-readonly":true,"x-mcp-protocol-version":"2025-11-25"}