Skip to main content
Glama

The provider's own price, right inside your chat. No markup, no subscription, no API key. Add this connector to Claude, ChatGPT or any MCP app and it can make pictures, video and voice with 400+ models on Vercel AI Gateway: Veo, Kling, Seedance, Nano Banana, GPT Image, FLUX and more. You run your own copy on your own Vercel account, so every call is paid from your own Gateway credits at the price the provider sets.

What you can make

Ask in plain words. Your chat does the thinking and the writing with everything it already knows about you; the connector makes the pictures, the video and the voice.

Costs are AI Gateway catalog prices from October 2026, for the example quantities shown. They are examples, not quotes: the provider's bill can differ from the catalog (see What it costs), and each call reports what it actually cost. Ask list_models for today's catalog.

Related MCP server: Aetherwave Studio

How it works

  1. You ask in chat. Claude, ChatGPT or any app that speaks MCP picks the right tool.

  2. Your own copy answers. It runs on your Vercel account and checks your secret link.

  3. AI Gateway runs the model, billed to your own credits at the provider's price. No API key: your copy signs in with Vercel's own token.

What is MCP? The Model Context Protocol is how chat apps plug in outside tools. This project is one of those tools: once you add its link, your chat app can make things with any model on AI Gateway.

Get started

You need a Vercel account and a GitHub, GitLab or Bitbucket account.

Then set a spend budget in the Vercel dashboard (AI Gateway → Budgets). It is the real limit on what your link can ever spend.

Your copy comes with its own setup page

Open your copy and it shows where you are: an arch of six stones, one per step. Set stones glow, the next one breathes, and clicking a stone opens its step.

Once every step is done, the guide steps aside for good. From then on your page opens on the brand and goes straight to your usage. If anything comes undone later (say MCP_SECRET_SHA256 is removed), the guide comes back by itself.

What it costs

Nothing from this project: it is free and MIT licensed, with no plan and no fee. You pay what each provider charges, with no markup, through your own AI Gateway credits, and every Vercel team gets free monthly credits for a set of models. In Vercel's words (AI Gateway pricing):

AI Gateway charges no markup and no platform fee on tokens. You pay the provider's list price on a pay-as-you-go basis.

You ask for

Model

Catalog price

A picture

recraft/recraft-v4.1-flash

$0.007

A picture

google/gemini-3-pro-image (Nano Banana Pro)

$0.134

An edit of your own photo

bfl/flux-kontext-pro

$0.04

8 seconds of video, with sound

google/veo-3.1-fast-generate-001

$1.20

10 seconds of motion copied onto a character

klingai/kling-v3.0-motion-control

$1.26

1,000 words read aloud

openai/tts-1-hd

about $0.17

An hour of speech written down

openai/whisper-1

$0.36

From the AI Gateway catalog, October 2026. The catalog is a guide, not the bill: the provider's charge can differ. In October 2026 bfl/flux-3-image was listed at $0.024 for a 1024x1024 picture while Black Forest Labs billed $0.048 (passed on with no surcharge); the catalog has since been corrected. Each call reports its actual cost; ask list_models for today's catalog.

This project is not made by or affiliated with Vercel. Version 1 means you run your own copy, so setup is as short as I could make it: the goal is for everyone to use AI at the price providers actually set.

Tools

Your chat app picks these for you; you never have to name them. Every tool returns readable errors that name the model: unknown model, not enough credits, video not on your plan, provider errors.

Tool

What it does

list_models({ type?, query? })

Lists the models in the AI Gateway catalog with their type (text, image, video, speech, transcription), capabilities (t2v, i2v, …) and catalog price.

generate_text({ model, prompt, system?, max_tokens?, file_urls? })

Generates text. Returns the text plus its cost when AI Gateway reports one. With file_urls (https links to images, videos, audio or PDFs, up to 10 files and 20 MB in total) the model reads them too, e.g. google/gemini-3.5-flash-lite summarizing a video. Pick a model tagged vision, video-input, audio-input or file-input in list_models.

generate_image({ model, prompt, size_or_aspect?, n?, estimate_only? })

Works with image models (bfl/flux-2-pro, openai/gpt-image-2, …) and image-capable LLMs (google/gemini-3-pro-image). Images come back inline, and as expiring links when Blob is connected. Models that take only exact sizes (Recraft, OpenAI) get the nearest size for a ratio like 16:9, and the reply says which.

edit_image({ model, prompt, image_urls, mask_url?, size_or_aspect?, n?, estimate_only? })

Changes existing images from an instruction. Works with edit-capable image models (bfl/flux-kontext-pro, openai/gpt-image-2, …) and image-capable LLMs. Takes https links; links this server returned work too, because it downloads the inputs itself.

upscale_image({ image_url, model?, prompt?, estimate_only? })

Makes an image sharper and larger. Uses topaz/wonder-3.5 unless you name another model.

start_video({ model, prompt, image_url?, end_image_url?, reference_urls?, duration?, aspect_ratio?, sound?, estimate_only? })

Starts a video job and returns a job_id right away: text-to-video, image-to-video, first-to-last frame, or reference-to-video with up to 4 pictures or clips of your characters.

motion_control({ image_url, video_url, prompt?, orientation?, quality?, keep_sound?, estimate_only? })

Makes the character in a picture move like the person in a reference video (Kling motion control).

upscale_video({ video_url, resolution?, model?, estimate_only? })

Makes a video sharper and larger and cleans up noise (Topaz Proteus by default).

edit_video({ video_url, prompt, estimate_only? })

Changes an existing video from an instruction (Grok Imagine Video, up to 720p).

extend_video({ video_url, prompt, duration?, estimate_only? })

Continues a video from its last frame (Grok Imagine Video).

estimate_only: true

On the image and video tools: returns the price from the AI Gateway catalog instead of running. Nothing is generated or charged. Often a range, because resolution or audio is left to the model's defaults; token-priced models (e.g. openai/gpt-image-2, Seedance 2) have no estimate. The provider can bill more than the catalog price: bfl/flux-3-image was once listed at half of what was billed.

get_video({ job_id })

For every video tool above: reports whether the job is still generating. When it finishes, the video is saved to your Blob store and you get an expiring link; call it again later for a fresh one.

generate_speech({ model, text, voice?, instructions?, speed?, language?, format? })

Turns text into speech (openai/tts-1-hd, google/gemini-3.8-flash-tts, fish-audio/s2-pro, …). The audio comes back inline and as an expiring link.

transcribe({ model, audio_url, timestamps? })

Turns speech in an audio or video file (up to 25 MB) into text, optionally with timestamps.

check_credits()

Shows the team's AI Gateway credits and what this connector spent in the last 30 days. The spend part needs AI Gateway's usage report, which Vercel offers on paid plans only; on Hobby it says so, and each reply still shows what that call cost.

list_files({ kind?, limit? })

Lists the pictures, videos and audio this connector made, newest first, with fresh expiring links.

Inline viewer. In chat apps that support MCP Apps (Claude on the web, desktop and phone), generate_image, edit_image, upscale_image, get_video and list_files show their result right in the conversation: a picture grid, a video player and audio players, with Download, Upscale and Extend. Upscale and Extend ask the chat to run the tool, so nothing is spent behind your back. Other apps get the same pictures and links as plain content.

Keep it safe

  • Your link works like a password that spends money. Anyone who has it can use your AI Gateway credits. Keep it private.

  • Set an AI Gateway budget. Only Vercel's budget limits your total spend.

  • If the link leaks, make a new secret on your setup page, put its fingerprint in Project Settings → Environment Variables and redeploy. The old link stops working at once.

  • Your usage is yours. Anyone can open your setup page, but the numbers only appear for someone who has your secret.

  • Your connector URL works like a password that spends money. Anyone who has it can use your AI Gateway credits and generate content under your Vercel account.

  • Set an AI Gateway budget. This server caps each call (MAX_VIDEO_SECONDS, MAX_IMAGES_PER_CALL, MAX_SPEECH_CHARACTERS, ALLOWED_MODELS), but only Vercel's budget limits your total spend. Tools that start from your own video (motion_control, upscale_video, edit_video) follow its length, which the per-call caps cannot see.

  • Rotate the secret if the URL leaks. Set a new fingerprint (or MCP_SECRET) and redeploy. The old URL stops working right away, and any unfinished video jobs are abandoned.

  • Optional: rate-limit the endpoint. Guessing is hopeless, but every wrong request still counts toward your project's usage. If your plan includes Vercel Firewall rate limiting, add a rule for paths starting with /mcp/ (for example, by IP). Do not turn on Attack Challenge Mode for it: Claude's and ChatGPT's servers cannot solve the challenge, so your connector would stop working.

  • Files are private, but links are not. Pictures, videos and audio are stored in a private Blob store. Anyone who holds one of the links returned in chat can open that file until the link expires (SIGNED_URL_TTL_HOURS).

  • Usage stats need the secret. POST /api/stats checks it in constant time and answers 404 otherwise. Remembering the secret in a browser lets anyone using that browser see your usage; "Forget" removes it.

  • Logs: this app never logs the secret or request URLs. Vercel's own request logs record request paths, so members of your Vercel team can see the secret there.

  • Generated media is stored exactly as the provider returns it. Watermarks and metadata are never removed.

Reference

Your secret

Your connector link is your deployment's address plus the secret. The setup page builds it in your browser:

https://<your-project>.vercel.app/mcp/<your-secret>

The secret is a random value of at least 32 characters. The Deploy button doesn't ask for it: a fresh copy starts with the endpoint off, and its setup page makes one in your browser and remembers it there, so your link is filled in after the redeploy.

Vercel never gets the secret itself, only its SHA-256 fingerprint as MCP_SECRET_SHA256. A fingerprint can't be turned back into the secret, so anyone who can read your environment variables, or the chat you pasted the setup prompt into, still can't use your connector. The other side of this: Vercel can't show you your secret either. If you lose the browser that holds it (and it isn't in your phone or your chat app's connector settings), make a new one and redeploy.

To do it yourself: make a secret with openssl rand -hex 32, and set MCP_SECRET_SHA256 to the output of printf %s '<your-secret>' | shasum -a 256 (the hex part). For local development a plain MCP_SECRET=<your-secret> is simpler; the fingerprint wins when both are set. Use URL-safe characters only; hex is ideal.

A random 64-character hex secret holds 256 bits: guessing it over the network is not possible in practice, and every wrong guess gets the same 404 as any unknown URL, compared in constant time. Secrets typed by hand are the weak spot, so the endpoint also stays off when the secret has fewer than 8 different characters or repeats one short block (aaaa…, passwordpassword…).

claude.ai custom connectors only support OAuth or no auth, and they can't send custom headers, so the secret goes in the URL path. If no secret is set (or a plain MCP_SECRET is shorter than 32 characters, or the fingerprint isn't 64 hex characters), the MCP endpoint is disabled. A wrong secret gets the same 404 page as any unknown URL.

Variable

Default

Purpose

MCP_SECRET_SHA256

none (this or MCP_SECRET required)

SHA-256 fingerprint (hex) of the secret in the connector URL. Set by the setup page; wins over MCP_SECRET.

MCP_SECRET

none

The secret itself, at least 32 characters. Simpler for local development.

MAX_VIDEO_SECONDS

8

Longest video start_video and extend_video accept.

MAX_IMAGES_PER_CALL

4

Highest n that generate_image and edit_image accept.

MAX_SPEECH_CHARACTERS

5000

Longest text generate_speech accepts in one call.

ALLOWED_MODELS

empty (all models)

Comma-separated allowlist of model ids.

SIGNED_URL_TTL_HOURS

24

How long file links stay valid. The maximum is 168 (7 days).

AI_GATEWAY_API_KEY

unset

Optional. Use it for local development. When set, it replaces the OIDC token.

Vercel sets the Blob variables (BLOB_STORE_ID, plus BLOB_READ_WRITE_TOKEN as a fallback) and VERCEL_OIDC_TOKEN automatically when the store is connected. Without a Blob store, text, pictures and voice still work inline; video and file links need one. Create a private Blob store under the project's Storage tab, connect it and redeploy. The setup page links there.

npm install
vercel link && vercel env pull   # pulls MCP_SECRET_SHA256, Blob and a 12-hour OIDC token into .env.local
# or put AI_GATEWAY_API_KEY=... and MCP_SECRET=... in .env.local
npm run dev

Test the server with the MCP Inspector:

npx @modelcontextprotocol/inspector@latest

Choose Streamable HTTP and connect to http://localhost:3000/mcp/<MCP_SECRET>.

The same tools also run over stdio, for local MCP clients and for directories that start the server to list its tools (Glama does this). Your deployment does not use it.

npm run build:stdio   # bundles scripts/stdio.ts into dist/stdio.mjs
AI_GATEWAY_API_KEY=... MCP_SECRET=... node dist/stdio.mjs

A stdio server is a process you start yourself, so it has no secret check: it spends whatever Gateway key it is given. MCP_SECRET only signs video job ids there. Listing the tools needs no variables at all.

Two development-only addresses preview states you cannot reach without a deployment: /?preview-open shows the page as it looks once setup is done, and /?sample-stats fills the usage with sample numbers.

  • Setup page: / checks the deployment live and guides each step, then hides the guide once every required step is done (a gateway-open cookie, ignored whenever a server check fails). Black and white, drawn in code, with motion that rests finished under reduced motion. /setup redirects there.

  • Usage stats: every call from this server carries AI Gateway tags (ai-gateway-mcp, tool:<name>, client:<app>, the app guessed from its User-Agent). The setup page reads AI Gateway's own spend report filtered by those tags, so there is no database. The report is a paid-plan feature: on Hobby, Vercel answers 403 and the page says so instead (credits still show). Keeping our own log in Blob was ruled out: Hobby includes 2,000 Blob advanced operations a month, and going over blocks Blob for 30 days.

  • Inline viewer: one MCP Apps resource, ui://gateway-mcp/media.html, built from ui/ by scripts/build-ui.mjs (esbuild, before dev, build and typecheck). Its CSP allows https://*.blob.vercel-storage.com for images and media.

  • Stack: Next.js (App Router) and TypeScript. MCP is served over Streamable HTTP using mcp-handler v2, and model calls go through the AI SDK with the AI Gateway provider.

  • Secret check: proxy.ts rejects a wrong secret before routing by rewriting it to the standard 404 page. The route handler then checks the secret again, in constant time.

  • Media in, media out: files you give a tool are downloaded by the server (https only, size-capped), so this server's own private links work as input. Video jobs send theirs as links, since AI Gateway keeps a job's start request small.

  • Video jobs: no database. Each job_id holds the model and the AI Gateway job id, signed with a key derived from the fingerprint (or MCP_SECRET) and only accepted from callers holding the secret, so it can't be forged.

License

MIT

Available Tools

15 tools
check_creditsA

Show how many AI Gateway credits are left on this Vercel team, and what this connector spent in the last 30 days. Use it before big jobs (many videos) to check there is enough.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It discloses that this is a read-style lookup, that it is team-scoped, and that spend is measured over a 30-day window, but says nothing about auth/permission requirements, caching or freshness of the numbers, or whether the call itself consumes anything.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero waste: the first defines the payload, the second defines the trigger. The purpose is front-loaded before the guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter lookup with no output schema, the description compensates by naming the returned facts (credits remaining, 30-day spend). It is nearly complete; only freshness/permission caveats are absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters and the schema is an empty object, so there is nothing to document; per baseline this warrants a 4. The description correctly implies no input is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Show how many AI Gateway credits are left') plus the exact data window for spend ('last 30 days'). It is unmistakably distinct from every sibling, which are all generative/edit operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly tells the agent when to call it: 'Use it before big jobs (many videos) to check there is enough.' No alternatives or when-not conditions are named, but there is no sibling that overlaps this function, so the omission is minor.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

edit_imageA

Change existing images with an instruction: remove or replace the background, add or remove things, restyle, extend the canvas (outpaint), change the framing, or combine several images. Give https links to the images (links returned by this server work). Good models: "bfl/flux-kontext-pro", "openai/gpt-image-2", "google/gemini-3-pro-image". Pass mask_url (white = area to change) for precise edits with models that take one, e.g. "bfl/flux-pro-1.0-fill".

ParametersJSON Schema
NameRequiredDescriptionDefault
nNoNumber of results (image-only models). Default 1.
modelYesImage model id from list_models with type "image"
promptYesWhat to change, e.g. "remove the background, keep the product"
mask_urlNohttps link to a mask image (white = change, black = keep)
image_urlsYeshttps links to 1–4 input images
estimate_onlyNoOnly return the estimated price from AI Gateway's list prices. Nothing is started or charged.
size_or_aspectNoAspect ratio like "16:9" or size like "1024x1024". Support varies by model.

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It does disclose input constraints (https links, links from this server are valid) and mask color semantics, but says nothing about cost, credit consumption, whether the call is synchronous or queued, or whether edits are non-reversible. Useful but incomplete for a paid generation endpoint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose, then practical usage details, then parameter hints. Every sentence carries information; the model-id list is slightly dense but directly actionable rather than filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, yet the description covers inputs, model selection, and mask usage, and the schema documents all seven parameters. The remaining gap is behavioral: nothing about latency, async behavior, or billing, which an agent invoking a paid image edit would benefit from knowing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% so the baseline is 3, but the description adds value beyond it: it names specific model ids to use for model, and clarifies the mask convention (white = area to change) and the models that accept a mask, which the schema only states generically.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb (change/edit) and resource (existing images) and enumerates the concrete edit operations supported: background removal/replacement, add/remove objects, restyle, outpaint, reframe, and multi-image combine. The word 'existing' plus the operation list separates it cleanly from the sibling generate_image.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives actionable guidance: supply https links (and notes that links returned by this server work), recommends concrete good models, and explains when to pass mask_url with which model. It does not explicitly state the negative case (use generate_image for brand-new images), so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

edit_videoA

Change an existing video with an instruction, like "give the person sunglasses" or "make it snow". Uses "spacexai/grok-imagine-video". The result keeps the input's length and shape, at up to 720p. Returns a job_id for get_video. Links must be https; links returned by this server work. If this call times out or returns no answer, do not call it again on your own: the job may already be running and a retry pays twice. Tell the user and let them decide.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNoA Grok Imagine Video model id. Default "spacexai/grok-imagine-video".
promptYesWhat to change
video_urlYesThe video to change
estimate_onlyNoOnly return the estimated price from AI Gateway's list prices. Nothing is started or charged.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does so: it discloses the double-charge/idempotency hazard on retry after timeout, the job_id handoff to get_video, resolution and shape-preservation guarantees, and the https constraint on inputs. This is unusually strong behavioral disclosure for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose and example, then constraints, then the critical retry-safety warning last. Every sentence contributes distinct information (examples, model, output shape, return value, link rule, retry hazard) with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema or annotations exist, so the description must cover the essentials alone, and it does: what it does, return value (job_id for get_video), input constraints, output characteristics (720p, length/shape preserved), and failure handling. An agent has everything needed to call it correctly and safely.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds value beyond the schema by giving concrete prompt examples and stating that links must be https and that server-returned links are valid, which clarifies the video_url contract; estimate_only and model remain schema-only.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (edit an existing video) with concrete prompt examples ('give the person sunglasses', 'make it snow') and names the backing model. This clearly separates it from generate/start/extend/motion_control siblings, which create rather than modify an input video.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides rich contextual guidance: result preserves input length/shape at up to 720p, returns a job_id for get_video, links must be https and server-returned links work, and explicit when-not-to-act behavior on timeout (do not retry, tell the user). It does not name sibling alternatives (e.g., extend_video vs edit_video) for disambiguation, so it stops short of 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

extend_videoA

Continue a video from its last frame, so a scene keeps going ("the cat jumps off the windowsill"). Uses "spacexai/grok-imagine-video". Returns a job_id for get_video; the result is the new part. Links must be https; links returned by this server work. If this call times out or returns no answer, do not call it again on your own: the job may already be running and a retry pays twice. Tell the user and let them decide.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNoA Grok Imagine Video model id. Default "spacexai/grok-imagine-video".
promptYesWhat happens next
durationNoSeconds to add
video_urlYesThe video to continue
estimate_onlyNoOnly return the estimated price from AI Gateway's list prices. Nothing is started or charged.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations the description carries the full burden and does so well: it discloses the return mechanism (job_id consumed by get_video, result is the new part), the underlying model, URL provenance constraints, and a cost-safety warning that a timeout retry pays twice. Cost, failure handling and output routing are all covered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the purpose, then layers model, return value, constraints and failure handling in a logical order, with every sentence carrying information. Minor redundancy: the hard-coded model string and the estimate_only 'nothing is charged' point are already present in the schema descriptions.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema and no annotations, so the description must explain returns and mutation-side effects; it does both by routing results through get_video via job_id and warning about double-billing on retry. Nothing an agent needs to invoke this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% so the baseline is 3, but the description adds real meaning beyond the schema: 'Links must be https; links returned by this server work' clarifies acceptable video_url values, and the get_video/job_id note frames video_url as an existing job artifact. It does not add much for duration or prompt beyond what the schema already states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource with a concrete behavior: 'Continue a video from its last frame, so a scene keeps going', plus an illustrative example. This operationally separates it from start_video (new video), edit_video (alter existing), and upscale_video/motion_control without needing to name them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear context for when to reach for it (continuing an existing scene) and an example, and adds explicit retry guidance for timeouts. It does not, however, explicitly contrast itself with siblings like start_video or edit_video, leaving some selection inference to the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_imageB

Generate images with an AI Gateway image model (e.g. "bfl/flux-2-pro", "openai/gpt-image-2") or an image-capable LLM (e.g. "google/gemini-3-pro-image"). Images are returned inline; if a Blob store is connected, private download links that expire are returned too.

ParametersJSON Schema
NameRequiredDescriptionDefault
nNoNumber of images (image-only models). Default 1.
modelYesImage model id from list_models with type "image"
promptYes
estimate_onlyNoOnly return the estimated price from AI Gateway's list prices. Nothing is generated or charged.
size_or_aspectNoAspect ratio like "16:9" or size like "1024x1024". Support varies by model.

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It usefully discloses return behavior (images returned inline; expiring private download links when a Blob store is connected), but says nothing about cost/credits, latency, permissions, or failure modes for what is a charged external generation call.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with the core purpose front-loaded and output behavior second; the examples earn their place by clarifying valid model ids. No wasted preamble.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations and no output schema, the description must carry behavioral and return semantics. It covers return format adequately, but cost/credit implications and when-not-to-use are left to the schema's estimate_only field, leaving real gaps for a multi-sibling generation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 80%, so the baseline is 3. The description's model examples ('bfl/flux-2-pro', 'openai/gpt-image-2') add slight context for the required model param, but it adds no syntax or format detail for prompt, n, size_or_aspect, or estimate_only.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Generate images') and distinguishes two accepted model classes (AI Gateway image models vs image-capable LLMs) with concrete ids. It is clearly separable from edit_image/upscale_image by verb, but never names those siblings explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance: it never says when to pick this over edit_image, upscale_image, or which model class to choose for a given task. Only the schema's estimate_only param hints at a preview workflow, and that is not surfaced in the description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_speechA

Turn text into spoken audio: narration, voice-overs, audiobook chapters, podcast intros. Returns the audio inline and, if a Blob store is connected, a private download link that expires. Models: "openai/tts-1-hd", "google/gemini-3.8-flash-tts", "fish-audio/s2-pro", "microsoft/mai-voice-2.1" (list_models with type "speech" shows all and their prices). Voices are model-specific, e.g. "alloy", "nova" or "onyx" on OpenAI.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesWhat to say
modelYesSpeech model id from list_models with type "speech"
speedNo1 is normal; 0.5 is half speed, 2 is double
voiceNoVoice name for this model, e.g. "nova" (OpenAI)
formatNoAudio format like "mp3" or "wav". Default depends on the model.
languageNoISO 639-1 code like "en" or "th", or "auto"
instructionsNoHow to say it, e.g. "warm and slow, like a bedtime story" (models that support it)

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the full burden, and it does disclose two real behaviors: audio is returned inline, and a private, expiring download link is produced only if a Blob store is connected. It omits cost, text-length limits, latency, and whether the link's expiry/size is configurable, leaving meaningful gaps for a no-annotation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the core action, then return behavior, then model/voice discovery. No filler, no restatement of the tool name, and the list_models pointer is placed exactly where model selection becomes relevant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description correctly compensates by describing the return (inline audio plus conditional expiring Blob link). Combined with a fully-described 7-param schema, an agent has enough to invoke correctly; only cost/length/rate expectations are unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 100%, so the baseline is 3, but the description adds genuine selection value: it enumerates concrete model ids ("openai/tts-1-hd", "google/gemini-3.8-flash-tts", etc.) and voice examples ("alloy", "nova", "onyx") that the schema only describes generically. It stops short of explaining interactions like model-dependent support for "instructions" or "language".

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource ('Turn text into spoken audio') and immediately scopes the domain with concrete use cases (narration, voice-overs, audiobook chapters, podcast intros). It is unmistakably distinct from siblings generate_text, generate_image, transcribe, and start_video without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It routes the agent to list_models with type "speech" to discover models and prices, and warns that voices are model-specific with per-model examples. However it gives no explicit exclusions or when-not-to-use guidance relative to siblings like transcribe (speech-to-text) or generate_text.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_textA

Generate text with any AI Gateway language model (e.g. "openai/gpt-5.5", "anthropic/claude-sonnet-5"). Billed to this deployment owner's AI Gateway credits. With file_urls, the model reads images, videos, audio or PDFs too, e.g. Gemini ("google/gemini-3.5-flash-lite") watching a video to summarize it; list_models shows what each model reads. Links must be https; links returned by this server work.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelYesModel id from list_models, e.g. "google/gemini-3-flash"
promptYes
systemNoOptional system instructions
file_urlsNoImages, videos, audio or PDFs for the model to read, 20 MB in total at most
max_tokensNo

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does meaningful work: it discloses billing against the deployment owner's credits, that only https links are accepted, and that links returned by this server are valid. It omits return shape, latency, and rate/limit behavior, which keeps it short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action and cost, and every sentence carries information. The second half is one long run-on with stacked parenthetical examples, which costs some readability without adding waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 5-param, no-annotation, no-output-schema tool it covers purpose, cost, model selection, and the media-input path. Remaining gaps are return format and failure behavior, which are secondary for a single-shot generation call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 60%, so the schema documents model, system, and file_urls but leaves prompt and max_tokens bare. The description compensates by explaining what file_urls actually does (media the model reads, per-model capability) and pointing at list_models for valid model ids, adding real semantics over the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (generate text) plus the concrete mechanism (AI Gateway language models) with an example model id. It is immediately distinguishable from siblings such as generate_image, generate_speech, and transcribe.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the agent to list_models for model discovery and explains the file_urls branch (use it when the model must read media). It does not state exclusions against siblings, but the text-generation scope is unambiguous from the verb.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_videoA

Check a video job from start_video, motion_control, upscale_video, edit_video or extend_video. Returns "still generating" or, when done, what AI Gateway billed and private download links (they expire; calling again issues fresh links).

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYesThe job_id returned by a video tool

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, this description carries the full load and does so well: it discloses the two outcome states ('still generating' vs done), that returned download links are private and expire, and that calling again reissues fresh links. It also mentions billing attribution (AI Gateway billed), so the agent knows the cost-inspection aspect is bundled into the call.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two dense sentences, front-loaded with the action and source tool list, followed by the return semantics and expiry caveat. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-input polling tool with no output schema, the description covers the call trigger, the two possible return shapes, link expiry behavior, and re-issuance behavior. Nothing an agent needs to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description adds value by indicating job_id must come from one of the specified video tools, which reinforces the dependency beyond the schema's generic 'returned by a video tool' phrasing.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Check) and resource (a video job) and explicitly names all five sibling tools that produce the job (start_video, motion_control, upscale_video, edit_video, extend_video), so an agent can route unambiguously.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description identifies the source of the job_id via the named sibling tools and explains the re-call behavior for expired links. It does not explicitly state when NOT to use it (e.g., use start_video for launching new jobs), but the input dependency makes the trigger condition clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_filesA

List pictures, videos and audio this connector made before, newest first, with fresh private links (they expire). Needs a connected Blob store.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNoOnly this kind of file
limitNoHow many to return, newest first. Default 10.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it discloses three non-obvious traits: results are ordered newest first, the returned links are freshly minted and expire, and a Blob store connection is required. It omits auth requirements and anything about pagination beyond the limit cap already in the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense sentence front-loads the resource and scope, then appends the two operational caveats (link expiry, Blob store requirement). Nothing is padded and nothing important is buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-optional-parameter read tool with 100% schema coverage and no output schema, the description supplies what the schema cannot: ordering, link volatility, and the connection prerequisite. Return-value detail beyond 'links' is thin, but adequate for this complexity level.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so 'kind' and 'limit' are already documented with enum values, defaults, and bounds. The description only restates the media kinds and the newest-first ordering, which the schema already conveys — baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb (list) plus a tightly scoped resource — the media assets this connector previously generated — with ordering ('newest first') and payload shape ('fresh private links'). It is easily distinguished from siblings like list_models, which enumerate models rather than generated files.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Names a hard prerequisite ('Needs a connected Blob store'), which tells the agent when the call is even viable, and implies the retrieval use case for prior outputs. It does not name an alternative or an explicit when-not-to-use condition, but no sibling competes for this job.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_modelsA

List AI Gateway models this server can call. Filter by type (text, image, video, speech for text-to-speech, transcription for speech-to-text) and/or a search query. Returns one line per model: id | type | capabilities | price.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoOnly models of this type
queryNoCase-insensitive match on model id or name, e.g. "veo" or "flux"

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the full behavioral burden. It does add real value by disclosing the return shape ('one line per model: id | type | capabilities | price'), which is not in any schema. It omits anything about ordering, pagination, or read-only/auth characteristics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, each earning its place: purpose, filters, and return format. The core purpose is front-loaded and nothing is repeated from the schema verbatim without added meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-optional-parameter list tool with no output schema, the description is nearly self-sufficient: it names the filter axes and describes the returned line format. Only minor gaps remain (ordering, result limits, whether an empty filter returns everything).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, which sets a baseline of 3, but the description goes beyond it: it decodes the ambiguous enum values ('speech for text-to-speech, transcription for speech-to-text') and explains the query semantics ('case-insensitive match on model id or name'). That is genuine semantic uplift over the raw schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('List') and resource ('AI Gateway models this server can call'), and the filtering dimensions make clear this is a discovery/catalog tool. This cleanly distinguishes it from every sibling, which are all generation or file-manipulation actions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes the tool's role and its two filter dimensions clear, so usage is implied (discover available models before invoking generate_*). However, it never states when to reach for this versus an alternative, nor any prerequisite such as needing a resolved model id before generation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

motion_controlA

Make the character in a picture move like the person in a reference video (a dance, a gesture, a walk). Uses "klingai/kling-v3.0-motion-control" by default. The result is as long as the reference video: up to 10 seconds with orientation "image" (the default). Returns a job_id for get_video. Links must be https; links returned by this server work. If this call times out or returns no answer, do not call it again on your own: the job may already be running and a retry pays twice. Tell the user and let them decide.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNoA motion-control model id. Default "klingai/kling-v3.0-motion-control".
promptNoOptional scene or camera notes
qualityNo"std" (default) or "pro" (costs more)
image_urlYesThe character: a .jpg or .png, at most 10 MB
video_urlYesThe motion to copy: an .mp4 or .mov, at least 3 seconds, at most 100 MB
keep_soundNoKeep the reference video's sound. Default true.
orientationNoFace the way the picture does ("image", up to 10 s) or the way the video does ("video", up to 30 s). Default "image".
estimate_onlyNoOnly return the estimated price from AI Gateway's list prices. Nothing is started or charged.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations present, the description carries the full behavioral burden and does so well: it discloses the default model, that output length is tied to the reference video (up to 10 s with orientation "image"), that only https links are accepted, that server-returned links work, and a non-obvious timeout/retry hazard that would otherwise cause double billing. That retry warning is exactly the kind of trait structured fields cannot express.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose sentence is front-loaded, followed by default model, output length, return value, and the retry caveat in roughly priority order. Every sentence carries information an agent needs; nothing is padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter generation tool with no annotations and no output schema, the definition covers inputs, defaults, output (job_id for get_video), duration, link requirements and failure behavior. Remaining gaps are modest – no cost framing outside the schema's estimate_only, and no permission or async-polling detail – but nothing essential to a correct call is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3 and the schema already documents every parameter including defaults and enums. The description adds practical meaning beyond the schema by explaining the https constraint on both URLs and that links produced by this server are acceptable, plus the duration consequence of the orientation choice.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource – animate the character in an image using the motion from a reference video – and implicitly separates itself from siblings like start_video, extend_video and edit_video by naming both inputs (image_url + video_url). The agent can identify exactly what the tool produces without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete operational guidance: it names get_video as the follow-up for the returned job_id, and explicitly says not to retry on timeout because a job may already be running and a retry pays twice. It does not explicitly contrast itself with start_video or other video siblings, so the when-to-use-vs-alternative story is clear from context rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

start_videoA

Start an asynchronous AI Gateway video and return a job_id immediately. Then call get_video with that job_id every ~30 seconds until it is done (usually 1–5 minutes). Text-to-video needs only a prompt. image_url animates a picture (i2v models); add end_image_url to move from the first picture to the last (Veo, Kling, Seedance). reference_urls (pictures or videos of characters or objects) makes a new scene with them (r2v models such as "alibaba/wan-v2.6-r2v": call them character1, character2… in the prompt). For dialogue, write the lines in the prompt and set sound (models with audio, e.g. Veo 3.1, HeyGen). Links must be https; links returned by this server work. If this call times out or returns no answer, do not call it again on your own: the job may already be running and a retry pays twice. Tell the user and let them decide.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelYesVideo model id from list_models with type "video", e.g. "google/veo-3.1-fast-generate-001"
soundNoGenerate audio with the video (models that support it). Costs more on some models.
promptYes
durationNoLength in seconds; supported values vary by model
image_urlNoStart image for image-to-video (i2v)
aspect_ratioNoe.g. "16:9" or "9:16"
end_image_urlNoLast frame to end on; needs image_url too
estimate_onlyNoOnly return the estimated price from AI Gateway's list prices. Nothing is started or charged.
reference_urlsNoReference pictures or videos for reference-to-video (r2v)

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations present, the description carries the full burden and does so well: it discloses the async job model, expected polling cadence (~30s) and duration (1-5 min), the fact that retries are charged twice, the https-only URL constraint, and that estimate_only starts nothing and charges nothing. Almost no behavioral gap remains for a job-launching tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The start-and-poll instruction is correctly front-loaded and every sentence carries non-redundant information - no filler. It is dense and parenthesis-heavy, though, which slightly hurts scannability for an agent parsing modality branches.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema and no annotations, yet the description covers the return value (job_id), the polling loop, typical completion time, the timeout/retry hazard, and cost caveats. For a 9-parameter async-launch tool, nothing needed to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is already 89%, so the baseline is 3. The description adds real meaning beyond the schema by mapping parameters to model families and conventions - i2v for image_url, Veo/Kling/Seedance for end_image_url, r2v plus the 'character1, character2…' prompt convention for reference_urls, and audio-capable models for sound. It does not, however, add anything for duration or aspect_ratio beyond what the schema states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Start an asynchronous AI Gateway video') and immediately pairs it with the return contract ('return a job_id immediately'). The follow-up instruction to poll get_video makes it distinguishable from generate_image, edit_video, and extend_video without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes by modality: prompt-only for text-to-video, image_url for i2v, end_image_url for first-to-last-frame, reference_urls for r2v with named characters, and sound for dialogue. It also names the alternative action on timeout ('do not call it again... let them decide'), which is exactly the when/when-not guidance an agent needs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

transcribeA

Turn speech in an audio or video file into text, optionally with timestamps (for subtitles, notes or translating a voice-over). Give an https link to the file, up to 25 MB. Models: "openai/gpt-4o-transcribe", "openai/whisper-1", "google/gemini-3.5-transcribe" (list_models with type "transcription").

ParametersJSON Schema
NameRequiredDescriptionDefault
modelYesTranscription model id from list_models with type "transcription"
audio_urlYeshttps link to an audio or video file
timestampsNoInclude a timestamp on each line, when the model returns them. Default false.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden and delivers real constraints: the 25 MB upload cap and the https-link requirement. It also notes timestamps are returned only 'when the model returns them', which preempts a false expectation of guaranteed timestamps. It stops short of describing error behavior or output formatting.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three compact sentences with the core purpose front-loaded, then the optional capability, then the operational constraint and model routing. Every sentence carries information; only slight density loss from the parenthetical use-cases.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-parameter tool with no output schema and no annotations, the description covers purpose, input constraints, model selection path, and the optional timestamps behavior. A brief note on the returned text format would close the remaining gap, but nothing needed to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description earns above baseline by enumerating concrete model ids ("openai/gpt-4o-transcribe", "openai/whisper-1", "google/gemini-3.5-transcribe") that the schema has no enum for, and by restating the 25 MB ceiling on audio_url that the schema omits.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (turn speech in audio/video into text) and immediately scopes it with the optional-timestamps variant, distinguishing it from audio-adjacent siblings like generate_speech (text→speech) and generate_text. An agent can tell exactly what this tool produces without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete invocation guidance: supply an https link, max 25 MB, and pick a model from list_models with type "transcription", explicitly pointing to the sibling that resolves the model argument. It does not explicitly state when-not to use it, but the transcription framing is unambiguous against the sibling set.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

upscale_imageA

Make an image sharper and larger without changing what is in it. Uses "topaz/wonder-3.5" (Topaz) unless you name another model. Give an https link to the image (links returned by this server work).

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNoImage model id. Default "topaz/wonder-3.5".
promptNoOptional guidance, e.g. "restore the faces" or "keep the film grain"
image_urlYeshttps link to the image to upscale
estimate_onlyNoOnly return the estimated price from AI Gateway's list prices. Nothing is started or charged.

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations, so the description carries the burden. It discloses the default model and the cost-free nature of estimate_only indirectly, but never states what a normal invocation returns (a URL? an image?), whether the real run is charged, or any latency/rate limit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the core action and constraint before the model default and link requirement. Nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations and no output schema, the description should explain what comes back from an upscale call; it does not. It is adequate for invoking the tool but leaves the agent guessing about the return shape and cost implications of a real run.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents model, prompt, image_url and estimate_only. The description adds only the model default and the provenance hint for image_url, which is a marginal gain over the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (sharpen and enlarge an image) and, crucially, the scope constraint 'without changing what is in it', which separates it from edit_image and generate_image without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives practical context (default model applies unless you name another; image_url must be an https link and 'links returned by this server work'), but never states when to choose this over upscale_video, edit_image, or generate_image.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

upscale_videoA

Make a video sharper and larger, and clean up noise, blur and compression. Uses "topaz/proteus" (Topaz) by default; "topaz/starlight-precise-2.6" is the other choice. Priced by the length of the input video. Returns a job_id for get_video. Links must be https; links returned by this server work. If this call times out or returns no answer, do not call it again on your own: the job may already be running and a retry pays twice. Tell the user and let them decide.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNoDefault "topaz/proteus"
video_urlYesThe video to upscale (.mp4, .mov or .webm link)
resolutionNoOutput size like "1920x1080" (default) or "3840x2160"
estimate_onlyNoOnly return the estimated price from AI Gateway's list prices. Nothing is started or charged.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and delivers: it discloses pricing is based on input video length, that a job_id is returned for get_video, the link scheme constraint, and the critical failure-mode warning that a timeout/empty response may mean the job is already running and a retry double-charges. This is exactly the behavioral context an agent needs before invoking a paid async job.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the purpose, then layers model choice, pricing, return value, link constraint, and the retry warning. Every sentence carries actionable content, though the paragraph is dense and could be slightly tighter.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a paid asynchronous video job with no output schema, the description covers what it does, what it returns (job_id for get_video), how it is priced, the input constraints, and the retry hazard. An agent has everything needed to invoke it responsibly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema already documents each parameter including the default model, so the baseline is 3. The description adds the alternative model name and the https-link constraint, but nothing about resolution syntax or the estimate_only semantics beyond what the schema states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb set (sharpen, enlarge, denoise) on a specific resource (video), which cleanly distinguishes it from siblings like upscale_image and edit_video. It even names the underlying models used, so an agent knows exactly what this call produces.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear context: default vs alternative model choice, the https link requirement, and the explicit instruction not to auto-retry on timeout because a retry pays twice. It does not explicitly frame when to choose this over upscale_image or edit_video, so it stops short of full alternative routing.

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.

  1. 15 tool updatesv0.1.0
    • First observedcheck_credits
    • First observededit_image
    • First observededit_video
    • First observedextend_video
    • First observedgenerate_image
    • First observedgenerate_speech
    • First observedgenerate_text
    • First observedget_video
    • First observedlist_files
    • First observedlist_models
    • First observedmotion_control
    • First observedstart_video
    • First observedtranscribe
    • First observedupscale_image
    • First observedupscale_video

TDQS

A4/5.0

Scored across 15 tools

Disambiguation4/5

Most tools target a clearly distinct modality+action (generate_text, generate_image, transcribe, generate_speech), and the video family is well-separated by purpose (start_video vs motion_control vs upscale_video vs edit_video vs extend_video). The only mild risk is telling apart the six video-job tools at a glance and distinguishing generate_image/edit_image/upscale_image, but descriptions resolve these.

Naming Consistency4/5

The set largely follows a verb_noun pattern (generate_text, edit_image, start_video, upscale_video, check_credits). Minor deviations exist: 'transcribe' is a bare verb and 'motion_control' is a noun phrase with no verb, breaking the otherwise consistent convention.

Tool Count5/5

15 tools is well within the ideal 3-15 range and each maps to a distinct operation (generation, editing, upscaling, async job polling, credits, model listing). No tool feels redundant or padded.

Completeness4/5

The surface covers the full multimodal lifecycle: discover models, generate/edit/upscale text, image, speech, audio, and video, plus transcription and credit checks. Minor gaps include no explicit file retrieval/deletion beyond list_files and no embedding or batch operations, but core workflows are covered.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    One MCP server for music, image, video, and audio generation across Suno, Grok Imagine, Seedance, Kling, Hailuo, Wan, VEO, Ideogram, and GPT Image 2. Generate, edit, upscale, reframe, and master through one API key and one credit pool.
    16
    98 npm
    6
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Keyless, pay-per-call AI gateway: 248 LLMs plus image/video/voice/music generation and live crypto, DeFi, markets, web-search and research tools through one MCP server. Pay per call in USDC via x402 on Base/Solana — no API key, no signup, free tier.
    -