A financial analysis MCP server that calculates ideal income based on expenses and provides financial health assessments
Single tool with significant quality gaps. The 'grana_ideal' tool has a lengthy, Portuguese-language description that conflates explanation with LLM intent-signaling. Input schema is present with proper types (float, integer) and descriptions, but lacks actionable context for LLM selection. The tool name 'grana_ideal' is idiomatic Portuguese ('ideal money') but does not follow verb_noun convention (should be 'calculate_ideal_income' or similar). Output is undocumented, returns a free-form formatted string rather than structured fields, forcing LLM to parse text. No parameter constraints (enums, ranges). No error handling guidance. The server also defines a prompt and resource, but the single tool is mediocre. Baseline for A-grade tools: verb-based names, 50 - 200 char descriptions with WHEN/WHY context, full schema with constraints, documented output structure. This tool meets ~40% of that standard.
É uma tool que calcula o valor ideal mensal que a pessoa deve receber e quanto custa a hora dela. Sendo que o argumento 'gastos_totais' é o valor total que a pessoa gasta no mês e 'horas_mes' é a quantidade de horas que a pessoa trabalha no mês. A partir disso, a função retorna uma string com uma explicação do cenário atual da pessoa.
Tool name does not follow verb_noun convention. 'grana_ideal' is a noun phrase; should start with an action verb like 'calculate_', 'compute_', or 'estimate_'. LLMs infer tool intent from names, non-standard naming increases selection errors.
Output schema is undocumented. Tool returns a free-form formatted string with financial calculations embedded in prose. No structured fields (ideal_income, hourly_rate, budget_breakdown). LLMs cannot extract fields reliably and cannot chain this tool's output to downstream operations.
Description is 450+ characters and written in Portuguese, mixing explanation for end-users with parameter docs. Effective tool descriptions should be 50 - 200 chars, English, and answer WHAT/WHEN/WHY for LLM selection. Current description does not help an LLM decide when to call this tool vs. an alternative.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 36 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 41 | - | v1 |
No parameter constraints. 'gastos_totais' (float) and 'horas_mes' (integer) lack ranges, validation rules, or currency specifications. An LLM could pass negative values, zero, or unrealistic numbers (e.g., 10,000 hours/month). Should declare: gastos_totais > 0, horas_mes >= 1, horas_mes <= 744 (max hours in a month).
No error handling guidance. Tool assumes valid inputs and performs division (gastos_totais / 0.55). If 'gastos_totais' is zero or negative, or 'horas_mes' is zero, the tool may produce invalid results or division errors. No message tells the LLM what to do if inputs are invalid.
Tool description written entirely in Portuguese. MCP servers should use English for descriptions to ensure compatibility with international agents and model context protocol tooling. Portuguese prose makes it harder for English-primary LLMs to infer tool intent.