Spring Boot Digital Currency Agent extended with MCP (Model Context Protocol) for AI-powered investment analysis, market predictions, and portfolio optimization using Azure OpenAI
Server has 6 tools with complete descriptions and basic schemas. All tools are READ_ONLY and well-intentioned, but lack critical production-grade patterns. Naming is verb-based and clear (analyze_, predict_, optimize_, get_, list_, compare_). Descriptions are adequate (100-200 chars) and explain WHEN to use each tool. However, input schemas are minimal, most parameters lack type constraints, enums, or validation guidance. Output schemas are not documented. Error handling is absent, no recovery guidance, no categorization of failures. Parameter descriptions are sparse (e.g., 'Currency code e.g. BTC, ETH, SOL' lacks format constraints). No pagination, no result limits stated, no idempotency hints. Tools are well-composed (each does one thing) but lack the depth expected of production tools.
Generates an AI-powered investment analysis for a specific digital currency using Azure OpenAI. Returns analysis covering market trends, risk assessment, investment recommendation, potential returns, and time horizon. Use this when asked about whether to invest in a specific currency.
Compares two digital currencies side by side using stored data and generates an AI comparison analysis via Azure OpenAI. Returns data for both currencies plus an AI-generated comparative investment insight. Use this when asked to compare or choose between two currencies.
Retrieves the stored data for a specific digital currency from the database. Returns the currency code, name, current value (USD), market cap, and timestamps. Use this to get current stored price/market cap before analysis.
Returns a list of all digital currencies currently tracked in the database, ordered by market cap (highest first). Includes code, name, value, and market cap for each. Use this to see what currencies are available.
Generates AI-powered portfolio optimization recommendations based on all currencies currently tracked in the database. Returns asset allocation suggestions, diversification strategies, risk management techniques, and recommended rebalancing frequency. Use this when asked about portfolio strategy or balancing investments.
Input schemas lack type constraints and enums. 'currencyCode' parameter accepts free-form strings with only an example hint ('e.g. BTC, ETH, SOL'). LLMs will hallucinate invalid codes. Should declare enum: ['BTC', 'ETH', 'SOL', 'ADA', 'DOT', ...] or regex pattern.
Output schemas are not documented. Tools return JSON responses (e.g., 'analysis' field, 'currencyCode' field) but the LLM has no schema to understand structure, field types, or what to extract for downstream use. Agents cannot reliably chain these tools.
No error handling or recovery guidance. If a currency code is invalid or not found, the tool will fail silently or return a generic error. Descriptions do not explain what to do if a lookup fails (e.g., 'If currency not found, try list_currencies() first').
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | 2026-07-28+ | v2 |
Generates AI-powered market trend predictions for the top digital currencies currently in the database. Returns short-term (1-3 month) and medium-term (3-12 month) outlooks, key price factors, and risk factors to watch. Use this for broad market overview questions.
list_currencies and predict_market_trends lack pagination and result limits. If the database grows to thousands of currencies, these tools will return unbounded lists, exhausting context windows. Descriptions should state 'Returns top 50 currencies by market cap' and accept limit/offset parameters.
No idempotency or confirmation hints. Tools like analyze_investment and compare_currencies call Azure OpenAI, which may have rate limits or costs. Descriptions should note 'This tool calls Azure OpenAI and may incur charges' and whether results are cached or fresh on each call.