Categorizes financial transactions (expenses and income) from transaction files into predefined categories and outputs them in CSV format
This server has a fundamental architectural flaw: it registers a PROMPT, not a TOOL. The @mcp_server.prompt() decorator creates a prompt template, not an executable tool. The categorise_transactions function returns PromptMessage objects, not actionable results. LLMs cannot invoke this as a tool, they can only retrieve the prompt template. The input schema exists (transaction_folder: string) but is never used for tool execution. No actual transaction processing logic is visible. This is a prompt-generation server masquerading as a tool server, making it unsuitable for agent automation.
Read the transaction files from {transaction_folder}, extract and categorise expense transactions into predefined expense categories, extract and categorise income transactions into predefined income categories, and output both in CSV format 'Date, Amount, Description, Category'
Tool is registered as a PROMPT, not a TOOL. The @mcp_server.prompt() decorator returns PromptMessage objects, not executable results. LLMs cannot invoke this for automation, only retrieve the prompt template. This violates the fundamental tool pattern.
Description is vague and task-like rather than tool-like. It reads as a user instruction ('Read the transaction files...') instead of explaining what the tool does, when to call it, and what it returns. No mention of output format, error cases, or prerequisites.
No output schema documented. The description mentions CSV output format but provides no structured schema for the response. LLMs cannot plan downstream operations without knowing the return type.
No error handling or recovery guidance. If transaction files are missing, malformed, or unreadable, there is no error classification or actionable recovery message for the LLM.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 46 | 2026-07-28+ | v2 |
Input parameter 'transaction_folder' lacks validation constraints. No description of expected directory structure, file formats, or size limits. LLMs will pass arbitrary paths without guidance.