Session-based conversational image generation MCP server using OpenAI's advanced models
Two tools with complete input schemas and descriptions, but significant gaps in output documentation and error handling. Tool names follow verb_noun pattern (create_image_session, generate_image_in_session). Descriptions are present (95-120 chars) but lack WHEN/WHY guidance. Parameters have types and descriptions, but output schemas are only documented in docstrings, not formally specified. Error handling returns success/error flags but lacks recovery guidance or categorization. No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Both tools are WRITE operations but descriptions don't explicitly state side effects.
Create new conversational image generation session.
Generate image within existing session context.
Output schemas not formally documented in tool definitions. Docstrings describe return structure but LLMs cannot parse docstring-only schemas. Tool definitions lack explicit output schema declarations.
Error responses lack recovery guidance. Returns {success: false, error: str, error_type: str} but does not tell LLM what to do next (retry? ask user? call another tool?). No error categorization (retryable vs user-fixable vs fatal).
Tool descriptions lack WHEN/WHY context. 'Create new conversational image generation session' does not explain when to call this vs alternatives, or what prerequisites exist. Descriptions are 95-120 chars but should be 50-200 chars with actionable context.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | <=2025-11-25 | v2 |
No tool annotations. Both tools are destructive (WRITE risk) but lack destructiveHint annotation. generate_image_in_session is idempotent (same prompt + session = same image) but lacks idempotentHint. Annotations guide agent safety reasoning.
Parameter 'model' in create_image_session has enum values in description ('gpt-4o, gpt-4.1, gpt-4o-mini') but not declared as formal enum constraint. LLMs may hallucinate invalid model names. Use JSON Schema enum field.