MCP server for AltText.ai — generate alt text, manage image libraries, and audit web pages for accessibility
Strong foundation with 12 well-defined tools covering a cohesive domain (alt text generation and image management). All tools have names starting with action verbs (get_, create/generate_, update_, delete_, list_, search_, translate_). Every tool has a substantive description (194 - 500 chars, well above the 10-char minimum). Input schemas are comprehensive with typed parameters, proper constraints (min/max, enums, format declarations), and descriptions for each field. Output schemas are documented in tool descriptions. Error handling uses structured error objects with HTTP status codes and error codes. Strengths: parameter naming consistency (snake_case, clear type suffixes like asset_id), enum constraints (sort direction, page limits), reasonable defaults (page=1, limit=20, max=100). Weaknesses: Some descriptions are action-heavy but lack explicit 'when to call' guidance. A few parameter descriptions could be more prescriptive about format expectations. No documented dependency relationships between parameters (e.g., 'url' and 'html' in scrape_page are alternatives but not explicitly marked as mutually exclusive). Output structure is well-formatted in response handlers but not fully JSON Schema-documented for downstream chaining.
Create multiple images from a CSV file. The file should contain columns: url, alt_text (optional), tags (optional), metadata (optional). Returns a job status or error details.
Delete an image from your AltText.ai library
Generate AI-powered alt text for an image URL. Returns the result synchronously (may take a few seconds). Uses account credits; additional languages and image conversion can increase the total. Can overwrite existing alt text when requested.
Generate alt text from a local image file. Reads a file on the MCP server machine and uploads it to AltText.ai. Uses account credits; additional languages and image conversion can increase the total. Can overwrite existing alt text when requested.
Get your AltText.ai account info including credit balance, usage, and settings
Parameter mutual exclusivity not documented. 'scrape_page' accepts both 'url' and 'html' (should be exclusive); 'generate_alt_text' and 'generate_alt_text_from_file' are separate tools where one might expect conditional parameters. Descriptions should explicitly state 'Provide either url OR html, not both' to prevent LLM confusion.
No confirmation or dry-run mode for destructive operations. 'delete_image' directly deletes without a confirmation step. Given the permanent nature of deletion, a 'dry_run' parameter or a separate 'confirm_delete_image' tool would align with the confirmation-request pattern and prevent accidental data loss from LLM mistakes.
Output schemas not fully documented in JSON Schema format. Tool descriptions mention return structure (e.g., 'Returns the result synchronously', 'Returns discovered images and processing status') but do not provide formal JSON Schema definitions for responses. This forces LLMs to infer output structure and complicates downstream tool chaining. All tools should return documented, typed response objects.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 67 | 2026-07-28+ | v2 |
| 2026-03-09 | C | 65 | - | v1 |
Get details of a specific image by asset ID
List images in your AltText.ai library with pagination
Scrape a webpage for images and generate alt text for all discovered images. Can use either a public URL or raw HTML content. Returns discovered images and processing status.
Search images in your library by keywords, tags, or metadata
Add alt text in a new language for an existing image. Uses the asset_id to find the image and generates a translation. Uses account credits for each newly generated language.
Update your AltText.ai account settings (name, webhook URL, notification email)
Update alt text, tags, or metadata for an existing image
File path validation in 'generate_alt_text_from_file' accepts any absolute path. No documentation of allowed directories or security boundaries. If the server runs with broad file access, an LLM could be tricked into reading sensitive files. Should either restrict to a sandboxed directory or document the security model explicitly.
API credentials (AltText.ai API key) are passed at server initialization but method of injection is not visible in provided code. Best practice confirmation needed: verify credentials are injected via environment variables only, never as tool parameters.
Error recovery guidance is basic. Errors return HTTP status codes and error codes but do not always suggest next actions. E.g., if 'generate_alt_text' fails with a 403 (insufficient credits), the error should explicitly suggest 'Check account balance via get_account() or upgrade your plan.' Currently, LLM must infer recovery strategy.
'bulk_create_images' accepts CSV as either base64-encoded content OR file path. This dual mode is not clearly documented in parameter description. If path is provided, which directory is searched? Is the path relative or absolute? Adding explicit examples ('path: /home/user/images.csv' or 'base64: SGVhZGVyLHVybA...') would clarify intent.
No rate limit or quota documentation in tool descriptions. Tools that consume credits (generate_alt_text, translate_image, scrape_page) do not warn about cost implications or suggest checking balance first. A note like 'Consumes 1+ credits per image depending on language count and image conversion' in each description would guide agent planning.