MCP server exposing Ayush Tomar's AI project portfolio as queryable tools for Claude Desktop and other MCP clients
Portfolio server has 5 tools with clear naming (verb_noun pattern: list_, get_, search_) and reasonable descriptions (100-200 chars). All tools are READ_ONLY and well-scoped. However, input schemas are incomplete: list_projects and get_flagship_project have empty input objects ({}), while get_project_details, search_projects_by_stack, and get_resume_summary have minimal schemas. Output schemas are not documented anywhere. Parameter descriptions exist but are brief. No error handling guidance, no pagination support despite potentially large result sets, and no tool annotations (readOnlyHint, etc.). Tool composition is sound, each does one thing, but the server lacks production-grade polish in schema completeness and error recovery.
Get Ayush's flagship/best project — the one to look at first for a quick sense of his skill level.
Get full details for a single project by name (case-insensitive, partial match allowed, e.g. 'sales' matches 'SalesAgent'). Returns description, full stack, GitHub repo, live demo link, and writeup link if one exists.
Get a summary of Ayush's background: education, target role, core tech stack, and career highlights.
List all projects in Ayush's portfolio with a short summary of each. Returns a compact list (name, one-line description, stack) — use get_project_details for the full description, GitHub link, and demo URL.
Find all projects that use a given technology or tool, e.g. 'LangGraph', 'Groq', 'FastAPI', 'React'. Case-insensitive, partial match. Useful for answering "does Ayush have experience with X?"
Output schemas not documented. LLMs cannot plan downstream operations or extract fields without knowing what list_projects, get_project_details, and get_resume_summary return. Rubric requires 'Document the output schema' for all tools.
Empty input schemas for list_projects and get_flagship_project ({}). While correct for no-parameter tools, they lack explicit documentation of what they return. Rubric: 'Tools returning lists should accept page/offset and limit parameters and return a total count or next_cursor.'
No pagination support. list_projects returns all 10 projects without limit/offset. If portfolio grows to 100+ projects, response bloats context window. Rubric: 'cap results at a reasonable limit (e.g. 20-50) and offer pagination.'
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | 2026-07-28+ | v2 |
No error handling guidance. If get_project_details receives an invalid project name, the tool likely returns null or empty. No recovery hint (e.g., 'Try search_projects_by_stack() to find similar projects'). Rubric: 'Error responses must tell the LLM what to do next.'
No tool annotations. Tools lack readOnlyHint, destructiveHint, or idempotentHint. Rubric rewards 'tool annotations (readOnlyHint/destructiveHint/idempotentHint)' as current pattern. All 5 tools are read-only and should declare this.