@imageat/mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@@imageat/mcpGenerate an image of a futuristic city skyline at night"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
@imageat/mcp
Model Context Protocol (MCP) server for ImageAT. Gives any MCP client (Claude Desktop, Cursor, etc.) tools to generate images, generate video, and run ImageAT's image-edit features — billed against your ImageAT account credits.
Tools
Tool | What it does |
| Text-to-image / image-to-image. Returns CDN image URL(s). |
| Text-to-video / image-to-video. Returns a CDN mp4 URL. |
| Current credit balance. |
| One tool per edit feature, fetched live at startup — e.g. |
If the feature catalog can't be reached at startup, a single generic imageat_edit_image tool
(taking a feature id parameter) is registered instead, so the server still works.
Related MCP server: Imaginode
Setup
Create an API key on your ImageAT Projects page (starts with
iat_live_).Add the server to your MCP client config:
{
"mcpServers": {
"imageat": {
"command": "npx",
"args": ["-y", "@imageat/mcp"],
"env": {
"IMAGEAT_API_KEY": "iat_live_xxxxxxxxxxxx"
}
}
}
}Restart the client. The
imageat_*tools will be available.
Environment variables
Var | Required | Default | Notes |
| yes | — | Your |
| no |
| The web app that serves the |
Remote server (claude.ai, ChatGPT, other web clients)
The npx setup above is stdio — it works in desktop apps that launch a local process
(Claude Desktop, Cursor, Claude Code). Browser clients like claude.ai and chatgpt.com
instead connect to a remote MCP endpoint over Streamable HTTP.
The same tools are served over HTTP by dist/http.js. Each MCP session carries the user's
own API key via the Authorization: Bearer iat_live_... header (multi-user), so this is what
you point a hosted connector at.
# Run the remote server locally against a local ImageAT instance:
IMAGEAT_BASE_URL=http://localhost:3000 PORT=8787 npm run start:http
# MCP endpoint: http://localhost:8787/mcp · health: /healthDeploy it (e.g. on Dokploy as mcp.imageat.com) with the included Dockerfile, then add it as
a custom connector:
claude.ai — Settings → Connectors → Add custom connector → URL
https://mcp.imageat.com/mcp.ChatGPT — Connectors / Developer mode → add server URL
https://mcp.imageat.com/mcp.
Browser clients run the OAuth flow: after adding the connector they open a consent page
served by this server where you paste your iat_live_ key, and the client receives a short-lived
access token bound to it. Non-browser clients (mcp-remote, MCP Inspector, curl) can still send
a raw iat_live_ key directly as Authorization: Bearer iat_live_....
The OAuth layer (src/oauth.ts) is a minimal, stateless authorization server: it exposes the
RFC 8414/9728 discovery docs, RFC 7591 dynamic client registration, and PKCE /authorize +
/token. Access/refresh tokens are the API key encrypted (AES-256-GCM) under MCP_OAUTH_SECRET,
so there is no session store.
Var | Where | Default | Notes |
| remote only |
| HTTP listen port. |
| both |
| Upstream web app serving |
| remote only | (random per boot) | Long random string that encrypts issued OAuth tokens. Set this in production or tokens are invalidated on every restart. |
| remote only | derived from request | Public origin, e.g. |
Local development
npm install
npm run build
# Inspect the stdio server with the official MCP Inspector against a local ImageAT instance:
IMAGEAT_API_KEY=iat_live_... IMAGEAT_BASE_URL=http://localhost:3000 \
npx @modelcontextprotocol/inspector node dist/index.jsAuth roadmap
Today the server authenticates with a static iat_live_ API key (the remote server reads it
per-session from the Authorization header). Auth is isolated behind an AuthProvider interface
(src/auth.ts), so a future "Sign in with ImageAT" OAuth provider can be dropped in without
changing the tools, the HTTP client, or the backend /v1 routes.
Available Tools
4 toolsimageat_check_creditsCheck CreditsAInspect
Return the current credit balance for the API key's account.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the core behavior and the account scope, but it does not mention whether the call consumes credits, what response format is returned, or whether authentication is required beyond the assumed API key.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, focused sentence that front-loads the purpose and contains no filler or redundant phrasing. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only balance check with no output schema, the description covers the essential invocation intent. It could be slightly more complete by indicating the response shape or that the call does not modify any state, but nothing critical is missing for basic selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. The description appropriately adds no parameter details because there are none; the empty schema is complete and no further parameter semantics are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('Return') and resource ('current credit balance'), scoped to the API key's account. This is immediately distinct from the sibling generation/edit tools, which all perform creative/media operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it — whenever the agent needs the current credit balance — but it does not explicitly discuss when not to use it or mention alternatives. The sibling tools are so different in purpose that confusion is unlikely, but explicit guidance is still absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
imageat_edit_imageEdit ImageCInspect
Edit an image using one of ImageAT's edit features. Pass the feature id (e.g. remove-background, object-eraser, relight, virtual-try-on, city-teleport, ai-edit-pro).
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | No | ||
| feature | Yes | Edit feature id. | |
| maskUrl | No | ||
| options | No | ||
| imageUrl | Yes | Image to edit: base64 data URL or http(s) URL. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for behavioral disclosure, yet it only says 'edit'. It does not disclose whether the edit is applied in place, returns a new image, consumes credits, requires authentication, or behaves asynchronously.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single compact sentence with no filler. It front-loads the purpose and adds useful concrete examples of allowed feature ids.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter tool with nested options, no annotations, and no output schema, this description is incomplete. An agent cannot know which features require which optional parameters or what a successful call returns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 40%, and the description contributes little beyond feature id examples. prompt, maskUrl, and options are left undefined, and options is a free-form nested object that needs more explanation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action and resource ('Edit an image') and lists concrete feature ids, so an agent can tell this is an image-editing tool. It does not explicitly compare to the sibling generate tools, but the edit verb is enough to distinguish it from generation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance or mention of when generate_image or generate_video would be preferable. The only usage hint is to pass a feature id, which is already required by the schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
imageat_generate_imageGenerate ImageBInspect
Generate an image from a text prompt (text-to-image), optionally with reference images for image-to-image editing. Returns CDN image URL(s).
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | Model id. One of: "nano-banana-pro" (default), "nano-banana-2", "nano-banana", "gpt-image-2" (OpenAI GPT Image 2), "seedream-5.0-lite", "krea-2-large", "krea-2-medium". Use these exact ids — do not invent variants like gpt-image-2.0. | |
| images | No | Reference images as base64 data URLs or http(s) URLs for image-to-image. | |
| prompt | Yes | What to generate. | |
| numImages | No | ||
| resolution | No | ||
| aspectRatio | No | e.g. "1:1", "16:9", "9:16", "4:5". | |
| outputFormat | No | ||
| enableWebSearch | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of disclosing behavior, and it does reveal the return type: 'Returns CDN image URL(s).' It also clarifies that reference images enable image-to-image editing. However, it does not mention whether generation is asynchronous, consumes credits, has content policy limits, or what happens if generation fails.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler: the first states the core operation and optional mode, the second states the return behavior. The most important information is front-loaded and every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple generation call with only 'prompt' required, the description provides enough to get started and specifies the return format. However, it lacks guidance on sibling-tool selection, default behaviors, and API-specific constraints such as credit usage or async behavior, leaving some operational gaps for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds some conceptual meaning by framing 'prompt' as the text-to-image input and 'images' as reference inputs for image-to-image editing, which maps to the schema. With 8 parameters and only 50% schema description coverage, it does not compensate for undocumented parameters like numImages limits, resolution defaults, or enableWebSearch semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the specific action ('Generate an image from a text prompt') and resource (text-to-image, with optional reference images for image-to-image editing), which clearly exceeds a tautology. It differentiates from imageat_generate_video, but the overlap with imageat_edit_image is not explicitly addressed.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives such as imageat_edit_image. It does not state conditions, exclusions, or the preferred tool for pure editing vs. generation with reference images, leaving the choice to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
imageat_generate_videoGenerate VideoBInspect
Generate a video from a text prompt (text-to-video) or from a starting image (image-to-video). Returns a CDN mp4 URL.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | e.g. "veo", "veo-lite", "kling", "kling3", "seedance2", "pixverse". | |
| prompt | Yes | What the video should show. | |
| duration | No | e.g. "8s". | |
| imageUrl | No | Starting image URL for image-to-video. | |
| resolution | No | e.g. "720p", "1080p". | |
| aspectRatio | No | ||
| generateAudio | No | ||
| negativePrompt | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the two input modes and the returned CDN URL, but it does not disclose important behaviors like whether generation is asynchronous, how long it might take, whether costs or rate limits apply, or what happens if generation fails. For a generative tool with no safety annotations, this is a notable gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no wasted words. The core capability and return type are front-loaded, and the text-to-video/image-to-video distinction is packed efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that this tool has 8 parameters, no annotations, and no output schema, the description is too sparse to be fully actionable. It conveys the basic function and output but omits guidance on model choice, duration, resolution, aspect ratio, audio generation, and negative prompts, all of which would help an agent select values correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides descriptions for 5 of 8 parameters, and the description adds high-level context that prompt and imageUrl correspond to text-to-video and image-to-video modes. However, parameters like aspectRatio, generateAudio, and negativePrompt have empty descriptions in the schema and are not addressed by the tool description. The description helps but does not fully compensate for those gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as generating a video using either a text prompt or a starting image, and explicitly states the output is a CDN mp4 URL. It differentiates from the sibling tools by naming the video-specific capability, making confusion with image editing or image generation unlikely.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes it clear this tool is for video generation, which implies when to use it, but it does not explicitly contrast it with alternatives or state when not to use it. No usage context such as model selection guidance or provider preferences is provided, leaving the decision to the agent's inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
v0.2.0- First observed
imageat_check_credits - First observed
imageat_edit_image - First observed
imageat_generate_image - First observed
imageat_generate_video
TDQS
Scored across 4 tools
check_credits is clearly distinct. edit_image and generate_image could overlap, since generate_image supports reference images for image-to-image editing, but descriptions clarify that generate is text-prompt driven while edit uses specific feature IDs. Overall, boundaries are mostly clear.
All tools follow a consistent snake_case verb_noun pattern with the imageat_ prefix: check_credits, edit_image, generate_image, generate_video. The naming is predictable and uniform.
Four tools cover the core actions for an image/video generation and editing API: credit checking, image generation, image editing, and video generation. This is appropriately scoped with no redundancy.
The server covers the primary workflows: generating images and videos, editing images, and checking credits. A minor gap is the lack of a way to list available edit features, but agents can likely infer them from the documentation provided in the tool description.
Maintenance
Related MCP Connectors
Generate images with any major model — one API key, one prepaid balance, one MCP.
MCP server for Pixapi: check live credit pricing and balance, then generate images and video.
Create images & video from any MCP agent — 17 models, spend limits, one URL.
Multi-model AI image and video generator. 14 models behind one OAuth-secured MCP endpoint.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables any MCP-compatible AI client to use the Flatkey API for generating text, images, video, speech, sound effects, and music, with credit consumption tracking.MIT
- AlicenseNot gradedqualityBmaintenanceGenerate AI images and videos from Claude, Cursor or any MCP client: 48+ models on one account (Flux 2, Nano Banana 2, Seedream 5, Kling V3, Seedance 2.5, Veo 3.1), with the exact cost in credits returned on every call.MIT
- AlicenseNot gradedqualityCmaintenanceEnables MCP-compatible clients to generate and upscale AI images, videos, music, and sound effects, manage generation jobs, access model catalogs, and track credits.2MIT

pixapi-mcpofficial
AlicenseNot gradedqualityBmaintenanceEnables MCP clients to use Pixapi's AI image and video generation tools, including checking pricing and balance, starting asynchronous generation tasks, and retrieving results.88 npmMIT