MCP server to help candidates apply to Gupy job openings (PT-BR)
Server has 6 tools with complete Zod schemas and basic descriptions. However, descriptions are minimal (10-50 chars), parameter descriptions lack detail on constraints and formats, and error handling returns generic Portuguese text without recovery guidance. Tool names use Portuguese verbs (buscar, detalhe, carregar, analisar, preparar, monitorar) which are action-oriented but non-standard for English-speaking LLM ecosystems. No output schemas documented. No tool annotations (readOnlyHint, destructiveHint). Error messages do not guide LLM recovery. Composition is reasonable, tools chain logically (search → detail → analyze → prepare), but lack of structured output and missing parameter descriptions significantly reduce LLM usability.
Analisa a aderência do perfil a uma vaga.
Busca vagas públicas no Gupy com filtros opcionais.
Carrega e valida o perfil do candidato a partir de um arquivo JSON.
Detalha uma vaga pelo ID.
Monitora os prazos de inscrição de uma lista de vagas.
Gera a entrega (currículo, carta ou formulário) para uma vaga com base no perfil.
No output schemas documented. Tools return JSON strings without declaring field structure, forcing LLMs to parse unstructured text. Downstream tool calls cannot reliably extract required IDs.
Parameter descriptions lack constraint details. 'limit' has min/max in schema but description only says 'Padrão: 10'. 'caminhoPerfil' lacks format guidance (absolute path? relative? must exist?). LLMs cannot infer validation rules from schema alone.
Error handling returns generic Portuguese text (erroPTBR) without recovery guidance. 'Perfil inválido: ...' or 'buscar_vagas: ...' tells LLM nothing about next steps. No distinction between retryable vs fatal errors.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | 2026-07-28+ | v2 |
Tool names in Portuguese (buscar_vagas, detalhe_vaga) diverge from English-language LLM conventions (search_jobs, get_job_details). Non-standard naming increases LLM confusion when many tools are available.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). All tools are read-only but this is not declared. Agents cannot distinguish safe vs risky operations.