Portfolio MCP server exposing Djaouad Frih's profile, work, pricing, and project-brief intake to any AI client. Enables AI agents to search projects, check availability, retrieve pricing, and submit project briefs.
HireMe MCP demonstrates solid tool design with clear naming, comprehensive parameter schemas, and good descriptions. All 5 tools follow verb_noun convention (get_*, search_*, submit_*). Input schemas are well-defined using Zod with type constraints, min/max lengths, and field descriptions. However, output schemas are not formally documented, responses are plain text wrapped in a generic content structure, making it difficult for LLMs to parse structured data downstream. Error handling is minimal; handlers do not return actionable recovery guidance. The submit_project_brief tool includes input sanitization (clean() function), which is good security practice. Tool descriptions average ~120 chars, within the 10-1024 baseline, but lack explicit WHEN/WHY guidance for tool selection.
Current availability status plus the direct booking link.
Fixed-price service list in USD with ETAs. No hourly billing.
Who Djaouad Frih is: full-stack AI engineer, stack, live products, availability and contact links. Call this first.
Search Djaouad's production projects (AI receptionist, RAG document workspace, tool-calling support agent) for proof of relevant experience.
File a project brief on the client's behalf. Djaouad replies with a fixed quote within 24 hours. Use after confirming scope with the human.
Output schemas not formally documented. All handlers return plain text wrapped in generic {content: [{type: 'text', text: payload}]} structure. LLMs cannot parse structured fields for downstream tool chaining or data extraction.
Error handling lacks recovery guidance. Handlers do not validate inputs or return actionable error messages. E.g., if saveBrief() fails, the handler does not tell the LLM what to do next or why it failed.
Tool descriptions lack explicit WHEN/WHY guidance. E.g., get_profile says 'Call this first' but does not explain why or when to prefer it over search_projects. Descriptions should guide LLM tool selection.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 69 | 2026-07-28+ | v2 |
search_projects returns top 3 results as plain text. No pagination support, no total count, no structured result objects. If results exceed 3, LLM cannot iterate or refine the search.
submit_project_brief sanitizes input but does not validate contact format (email vs WhatsApp). No regex pattern or enum constraint. LLM could pass invalid contact info without detection.