Documentation
MCP server
Let an AI assistant check images for you. TIA runs a remote MCP server with one tool, check_image_contrast, that returns the same report as the HTTP API.
Server
- URL
https://tia.dohunkim.xyz/api/mcp- Transport
- Streamable HTTP, stateless.
POSTonly; replies are plain JSON (no event stream and no session ID). - Protocol versions
- 2025-11-25, 2025-06-18, and 2025-03-26
- Sign-in
- None. No API key.
- Tools
check_image_contrast
Setup
Claude Code
Run this once in a terminal:
claude mcp add --transport http tia https://tia.dohunkim.xyz/api/mcpThen run /mcp in Claude Code to confirm that tia is connected.
Other MCP clients
Most clients that support remote servers take a JSON entry like this one. Key names differ between clients (some use servers instead of mcpServers, and some name the transport differently), so check your client’s docs for its exact format.
{
"mcpServers": {
"tia": {
"type": "http",
"url": "https://tia.dohunkim.xyz/api/mcp"
}
}
}The tool: check_image_contrast
Checks the text in one image against WCAG contrast requirements.
| Argument | Type | Description |
|---|---|---|
image_url | string | An https URL of a PNG, JPEG, or WebP image. TIA fetches it from its own server, so the image must be publicly reachable: localhost, private network addresses, and pages behind a sign-in will not work. Up to 12 MB. Use this for large images. |
image_base64 | string | The image bytes, base64-encoded. Use this for local files and screenshots up to about 3 MB: the hosting platform refuses a call over 4.5 MB, and base64 makes the image a third bigger. |
level | string | "AA" or "AAA". Optional; defaults to "AA". |
Send exactly one of image_url or image_base64.
{
"image_url": "https://example.com/images/hero-banner.png",
"level": "AA"
}{
"image_base64": "iVBORw0KGgoAAAANSUhEUgAA...",
"level": "AAA"
}What it returns
The same JSON report as the HTTP API: the image size, the level, a summary, one entry per text region with its verdict and ratio, notes, and provenance. It comes back twice in the tool result, as text content and as structuredContent, so clients that read either one get the full report. Every field is described in the API response reference.
If the image cannot be checked (a bad URL, an unsupported file, an image that is too large, or the service is busy), the tool returns a result with isError set and a short plain message instead of a report.
Try it
Once the server is added, ask in plain words. For example:
- “Check the hero image on my landing page for contrast.”
- “Does the text in public/og-card.png meet WCAG AAA?”
- “Check every banner in the marketing folder and list the ones with failing text.”
The assistant finds the image, calls check_image_contrast, and explains the result. Ask it to show the notes too: they say what the result does and does not cover.
Limits
- One image per call: up to 12 MB by
image_url, or about 3 MB byimage_base64. - Desktop and command-line clients work. A web page on another site cannot call the server from the browser, because it does not allow cross-origin requests.
- The same soft rate limit as the API applies, counted separately: about 20 calls per 60 seconds per IP address, best effort.
- The first call after a quiet period can take up to a minute.
- Results are an automated aid, not a certification. Read where TIA can be wrong, and what happens to your image.