Get Resume
get_resumeFetch your resume as markdown. Select a specific variant such as full-stack-react or frontend-react to match a job target.
Instructions
Get the full resume in markdown format, or a specific generated resume variant
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| variant | No | Resume variant (e.g., 'full-stack-react', 'frontend-react', 'nextjs-focused', 'general-swe'). Leave empty for base resume. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes |
Implementation Reference
- api/mcp.ts:229-244 (handler)The handler function for the 'get_resume' tool. It reads the base resume (profile/resume.md) or a variant-specific resume using a manifest lookup, and returns the markdown content.
async ({ variant }) => { let resumePath = "profile/resume.md"; if (variant) { try { const manifest = await readJsonFile<ResumeManifest>("profile/resumes/latest-manifest.json"); const found = manifest.resumes.find(r => r.cluster === variant); if (found) { resumePath = `profile/resumes/${found.file}`; } } catch { // No manifest, fall back to base resume } } const resume = await readMarkdownFile(resumePath); return { content: [{ type: "text", text: resume }] }; } - api/mcp.ts:221-228 (schema)Input schema for the 'get_resume' tool. Defines an optional 'variant' string parameter. Output schema is textContentOutputSchema (text-only content array).
{ title: "Get Resume", description: "Get the full resume in markdown format, or a specific generated resume variant", inputSchema: { variant: z.string().optional().describe("Resume variant (e.g., 'full-stack-react', 'frontend-react', 'nextjs-focused', 'general-swe'). Leave empty for base resume."), }, outputSchema: textContentOutputSchema, }, - api/mcp.ts:218-245 (registration)Registration of the 'get_resume' tool on the MCP server via server.registerTool() with the name 'get_resume'.
// Tool: Get Resume server.registerTool( "get_resume", { title: "Get Resume", description: "Get the full resume in markdown format, or a specific generated resume variant", inputSchema: { variant: z.string().optional().describe("Resume variant (e.g., 'full-stack-react', 'frontend-react', 'nextjs-focused', 'general-swe'). Leave empty for base resume."), }, outputSchema: textContentOutputSchema, }, async ({ variant }) => { let resumePath = "profile/resume.md"; if (variant) { try { const manifest = await readJsonFile<ResumeManifest>("profile/resumes/latest-manifest.json"); const found = manifest.resumes.find(r => r.cluster === variant); if (found) { resumePath = `profile/resumes/${found.file}`; } } catch { // No manifest, fall back to base resume } } const resume = await readMarkdownFile(resumePath); return { content: [{ type: "text", text: resume }] }; } ); - api/mcp.ts:50-57 (schema)The textContentOutputSchema used as the output schema for get_resume and other tools.
const textContentOutputSchema = z.object({ content: z.array( z.object({ type: z.literal("text"), text: z.string(), }) ), }); - api/mcp.ts:45-47 (helper)Helper function readMarkdownFile used by the handler to fetch markdown resume content from GitHub.
async function readMarkdownFile(relativePath: string): Promise<string> { return fetchFromGitHub(relativePath); }