MCP server for IcoGenie - Enable AI agents to generate icons programmatically
IcoGenie MCP server presents well-structured tool definitions with solid naming conventions and comprehensive parameter schemas. All 12 tools follow verb_noun pattern (generate_icon, download_icon, etc.) and include substantive descriptions (avg ~150 chars). Parameter schemas are detailed with type constraints, enums, and format documentation. However, several tools lack output schema documentation, and error handling guidance is sparse. No tool annotations (readOnlyHint/destructiveHint) are present despite clear semantic distinctions between read and write operations. The schema completeness and description quality place this in the B/A- range, but missing error recovery patterns and output shape documentation prevent a higher score.
Check the current credit balance and account information. Free to use.
Claim 2 free daily credits. Once per day.
Finalize a regeneration by selecting one of the 4 candidates. Free — credit was charged during regenerate_icon.
Re-download from library. Free for previously exported items. Provide outputPath to save to file.
Download the final SVG + PNG package for an icon. Costs 3 credits (single) or 2 credits/icon (bundle). Provide outputPath to save to file. Always save to the user's working directory with a descriptive filename.
Generate a bundle of icons. Costs 0.5 credit per icon. Keep descriptions minimal - verbose prompts create cluttered icons. Use normalize_bundle first or provide icons directly. Note: previews are watermarked and low-resolution — for display/evaluation only, not production use. Use download_icon to get the final unwatermarked assets.
Missing output schema documentation. Tools define input schemas precisely but provide no documented return type structures. LLMs cannot infer what fields (e.g., generationId, bundleId, credit cost) the response contains, forcing interpretation of unstructured JSON and risking context loss in multi-step workflows.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite semantic clarity. Tools are explicitly marked as READ_ONLY or WRITE in comments but lack formal MCP annotations. Agents cannot automatically distinguish safe from risky operations, increasing accidental misuse risk.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 64 | 2025-06-18+ | v2 |
| 2026-03-09 | F | 42 | - | v1 |
Generate an AI-powered icon preview. Costs 1 credit. Keep prompts minimal - the system normalizes them internally. Verbose descriptions create cluttered icons. Returns generationId for download. Note: previews are watermarked and low-resolution — for display/evaluation only, not production use. Use download_icon to get the final unwatermarked assets.
Browse your saved icons. Free. Use download_from_library with a library item's id.
List available style library presets. Free. Use a style name with generate_icon or generate_bundle via the styleRef parameter.
Plan an icon bundle from a description. Free but rate-limited. Returns bundleId — pass it to generate_bundle for traceability.
Regenerate a specific icon variation. Costs 1 credit. Returns 4 candidate previews + regenToken. Use confirm_regeneration with regenToken and selectedIndex (0-3) to finalize.
Save a generated icon to your library for free re-downloads. Free. Use generationId from generate_icon or bundleId from generate_bundle.
Sparse error handling and recovery guidance. Tool descriptions mention cost ('Costs 1 credit') and watermarking but do not guide LLM recovery if credit check fails, API errors occur, or generation times out. No pattern like 'If credits insufficient, call claim_daily_credits()' or timeout retry strategy is documented.
Parameters accept file paths (outputPath, referenceImagePath) without explicit path traversal or sandbox validation documentation. Tools should document whether paths are restricted to working directory and sanitized against injection.
check_credits and claim_daily_credits lack parameter descriptions for empty input schemas. While {} is valid, descriptions should clarify 'No parameters required' or similar to prevent LLM confusion about whether parameters are optional.