Open-source chat application with support for multiple AI providers and MCP (Model Context Protocol) servers for tool integration
LibreChat exposes 2 OpenAI image tools with moderate schema definition. Both tools have acceptable descriptions (150-180 chars, within baseline 34-392 range) and complete input schemas with typed parameters. However, tool names lack clear action verbs, 'image_gen_oai' and 'image_edit_oai' are abbreviated and unclear about what 'oai' means to an LLM unfamiliar with the prefix. Parameter descriptions are present but minimal (10-30 chars), below the 72-char baseline for param annotations. Output schemas are completely undocumented, no return type specification for either tool. Error handling is absent from the visible code. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite both tools being WRITE operations. These tools would require an LLM to guess what fields they return, defeating composition. Missing documentation on whether these are idempotent, whether they support retry, or how to recover from failures.
Image Editing Tool - Edits existing images using OpenAI's image editing API with prompt-based modifications
Image Generation Tool - Generates images using OpenAI's image generation API with support for different formats, sizes, qualities, and background options
Tool names lack action verbs and use unclear abbreviation 'oai'. Names should be 'generate_image' and 'edit_image' to clearly signal intent to LLM. Current names force the LLM to read descriptions to understand what the tools do.
No output schemas documented for either tool. LLMs cannot plan downstream operations (e.g. storing generated image IDs, using edit results in subsequent calls) without knowing what fields are returned. This violates the composition pattern.
Parameter descriptions are minimal (10-30 chars) vs. baseline 72 chars. E.g., 'Background type for the image (default: auto)' lacks guidance on what valid values are, when to use it, or how it affects output. Should expand to: 'Background style for generated image (default: auto). Valid values: auto (transparent or matching context), white, black, blur. Use auto for product shots, white for document mockups.'
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 52 | <=2025-11-25 | v2 |
| 2026-03-09 | D | 51 | 1.27.1+ | v1 |
No error handling documented. Tools are WRITE operations (image generation consumes API credits, image editing modifies state). Calling code must answer: What errors can occur? Are they retryable? Should the LLM prompt the user? Current code shows no error classification or recovery guidance.
No tool annotations despite both being destructive (they consume API quota and/or modify images). Add destructiveHint: true to warn agents these are not safe to retry blindly. Add idempotentHint: false if retrying with same params generates new images (most likely).
'image_ids' parameter in image_edit_oai is an array of strings with no clear format. Are these internal LibreChat IDs, OpenAI image IDs, or file paths? No description of how to obtain valid image_ids. Bidirectional reference broken: image_gen_oai return value is not documented, so LLM cannot know what value to pass to image_edit_oai.