RunAPI MCP Server
OfficialThe RunAPI MCP Server connects MCP-compatible AI coding tools to RunAPI's 130+ models from 18+ providers, enabling model discovery, media generation, LLM interaction, and account management across image, video, audio, and utility modalities.
No API key required:
Browse Models (
list_models): Discover available models, filterable by modality (image,video,audio,llm,utility), service, or action.Inspect Model Details (
get_model_info): Retrieve supported endpoints, input constraints, required parameters, enum/range rules, and pricing snapshots for any model.List Endpoint Actions (
list_actions): View all available endpoint action names grouped by output modality.Check Pricing (
check_pricing): Get pricing snapshot data for a specific service + action + model combination.Search Prompt Examples (
search_prompts): Find reusable prompt examples filtered by modality, category, tags, keywords, or model.
Requires API key:
Create Media Tasks (
create_task): Submit image, video, audio, music, or speech generation tasks and optionally poll until completion.Poll Task Status (
get_task): Fetch the current status and output payload for an existing task by ID.Chat with LLMs (
chat): Send prompts to LLM endpoints (e.g., Claude, GPT, Gemini) and receive responses with usage metadata.Check Account Balance (
check_balance): View your RunAPI account balance and spending metrics.
Provides access to ElevenLabs text-to-speech models through the RunAPI platform, enabling AI voice synthesis.
Provides access to Flux image generation models through the RunAPI platform, enabling AI image creation.
Provides access to Suno music generation models through the RunAPI platform, enabling AI music creation.
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., "@RunAPI MCP ServerGenerate an image of a futuristic city using Flux"
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.
What Is This?
RunAPI MCP Server connects MCP-compatible coding tools to RunAPI. It lets an assistant browse the RunAPI catalog, inspect model inputs, check current runtime pricing, create media tasks, poll task status, and check account balance.
The discovery tools work without an API key because they use the embedded build-time catalog.
Authenticated operations use the login tool, runapi login, RUNAPI_API_KEY, or shared RunAPI config.
This package is a pure client. It does not run a local generation backend and only needs RunAPI sign-in for authenticated tools.
Related MCP server: Google AI Studio MCP Server
Hosted MCP
Remote MCP clients can connect directly to:
https://mcp.runapi.ai/mcpNo Node.js installation is required. Use OAuth when the client supports remote MCP authorization, or configure a RunAPI API key as the bearer credential. See the Hosted MCP setup page for Cursor, Claude Desktop, VS Code, and Windsurf configurations.
Hosted MCP exposes the eight Business Tools documented below. Local Login remains available only in the Local MCP package.
Quick Start
For Local MCP over stdio, install RunAPI with Claude Code's MCP command:
claude mcp add runapi -s user -- npx -y @runapi.ai/mcpThe scope flag controls where the MCP server is stored:
-s user: global, available in all projects for your user.-s project: team-shared, written to.mcp.jsonin the current repo so it can be committed.
Use project scope when you want the whole team to share the same server config:
claude mcp add runapi -s project -- npx -y @runapi.ai/mcpCompatibility fallback for non-Claude Code platforms or manual JSON config:
{
"mcpServers": {
"runapi": {
"command": "npx",
"args": ["-y", "@runapi.ai/mcp"]
}
}
}If your host needs a generated config file, use the legacy init command as a fallback:
npx @runapi.ai/mcp init claude
npx @runapi.ai/mcp init cursor
npx @runapi.ai/mcp init vscode
npx @runapi.ai/mcp init windsurf
npx @runapi.ai/mcp init rooFree catalog tools work before sign-in.
For task creation, task status, and balance checks, ask your assistant to call the login tool. It opens a browser login and saves credentials to ~/.config/runapi/config.json, the same file used by runapi login.
Headless and CI hosts can still set RUNAPI_API_KEY before starting the MCP host.
Tools
Tool | Auth | Purpose |
| No | List RunAPI models from the embedded catalog. Supports |
| No | Return service, action, modality, input constraints, and current runtime pricing for a model slug. Use |
| No | Group endpoint action names by modality. |
| No | Return current runtime pricing for a |
| No | Search reusable prompt examples by |
| No | Start browser login and save RunAPI credentials to shared local config. |
| Yes | Create a media task with a required caller-generated |
| Yes | Fetch status and latest payload for an existing media task. |
| Yes | Return account balance and spending metrics. |
The catalog, pricing, and prompt search tools are designed for funnel-top discovery inside coding tools. The task and balance tools are designed for authenticated workflows.
Examples
Ask your assistant natural-language questions. The assistant should use the tools to discover current model slugs and pricing instead of relying on memorized names.
Browse The Catalog
What RunAPI image models are available?Expected behavior:
The assistant calls
list_modelswithmodality: "image".It summarizes the returned model slugs, services, actions, and required fields.
It avoids quoting stale prices unless it calls
check_pricing.
Search Prompt Examples
Find image prompt examples for a logo.Expected behavior:
The assistant calls
search_promptswithmodality: "image"andq: "logo".It summarizes returned titles, prompt text, model slugs, categories, and tags.
It uses the selected prompt with
get_model_infobefore creating a task.
Inspect A Model
Show me the required parameters for this model slug: <model-slug>Expected behavior:
The assistant calls
get_model_info.If the response is ambiguous, it chooses the relevant service/action from the returned matches and calls
get_model_infoagain withserviceandaction.It shows required fields, enum constraints, range constraints, conditional input rules, supported action, and current runtime pricing if available.
It tells you to choose another slug with
list_modelsif the slug is not found.
Create A Media Task
Generate a square product image with RunAPI. Pick a suitable image model.Expected behavior:
The assistant calls
list_modelsto choose a compatible image model.It calls
get_model_infowith the selected service/action/model to validate parameters and any conditional input rules.It asks for confirmation if the request is expensive, long-running, or a batch.
It generates one opaque
idempotency_keyfor this logical task and callscreate_task.It returns task ID, status, output URLs, and cost fields when available.
Wait For Completion
Hosted MCP keeps an asynchronous create_task call with wait: true open as request-scoped SSE for up to 300 seconds. It polls about every 5 seconds, sends an SSE heartbeat about every 15 seconds, and sends standard notifications/progress only when the MCP client supplied a progressToken. The terminal JSON-RPC response arrives in that same stream and then closes it.
The terminal tool result includes matching structuredContent and text content with task_id, final status, completed: true, and the RunAPI result. See examples/create-task-and-wait.arguments.json.
Submit Without Waiting
Create the task but do not wait for completion.Expected behavior:
The assistant generates one opaque
idempotency_keyand callscreate_taskwithwait: false.It returns the task ID.
You can later ask for status with
get_task.
Replay A Task Creation Safely
create_task requires an opaque idempotency_key from 1 to 512 characters. Generate one new key for each logical task and retain it with the exact service, action, model, and params used for that task.
If the create result is unknown because the connection closed or timed out, do not automatically create another task. Retry only when intended, using the same key with the same input. Reusing the key with different input returns a conflict. Do not derive the key from a JSON-RPC request ID or X-Client-Request-Id.
When Completion Wait reaches its deadline, task creation remains successful. The non-error result has matching structured and text content with task_id, latest status, completed: false, wait_deadline_reached: true, and next_action: "get_task". Continue with get_task; do not create a replacement task.
If polling fails or the connection closes after task creation, the task may still be processing. Continue with get_task; do not create a replacement task.
See examples/create-task.arguments.json for submit-only arguments.
Check Account Balance
Check my RunAPI balance.Expected behavior:
The assistant calls
check_balance.If no key is configured, it calls
loginfor browser login, or explainsRUNAPI_API_KEYfor headless hosts.
Catalog Coverage
The MCP Embedded Catalog is generated from RunAPI's contract snapshot. It includes only models executable by this server release.
Modality | What To Use |
Image |
|
Video |
|
Audio and music |
|
Utility |
|
Catalog contents can change between releases.
Use list_models for current service/action/model slugs and get_model_info for each model's current constraints.
Pricing
RunAPI pricing is exposed through the check_pricing tool and the public pricing page.
Do not rely on examples in README files for exact prices.
Useful flows:
Call
list_modelsto find a candidate model.Call
check_pricingwithservice,action, andmodel.Show the returned current price or link to runapi.ai/pricing.
Free catalog tools do not create tasks and do not consume account balance.
Platform Setup
Claude Code, Cursor, Windsurf, And VS Code
Run:
claude mcp add runapi -s user -- npx -y @runapi.ai/mcpUse -s user for a global install available in all projects.
Use -s project when you want Claude Code to write .mcp.json in the repo for team-shared config.
Restart or reload your MCP host after changing MCP configuration.
Compatibility Fallback: Generated Config
Use init only when a host needs a platform-specific JSON file or cannot use the Claude Code MCP command.
Claude Code fallback:
npx @runapi.ai/mcp init claudeThis writes .mcp.json in the current directory.
Cursor fallback:
npx @runapi.ai/mcp init cursorThis writes .cursor/mcp.json.
Open Cursor settings to verify the MCP server is enabled.
VS Code fallback:
npx @runapi.ai/mcp init vscodeThis writes .vscode/mcp.json.
VS Code uses a top-level servers key and type: "stdio" in generated config.
Windsurf fallback:
npx @runapi.ai/mcp init windsurfThis writes the generated config for the Windsurf target used by the init command.
Roo Code
Run:
npx @runapi.ai/mcp init rooThis writes .roo/mcp.json.
Manual Configuration
Use the example files in examples/ as starting points.
Each platform has slightly different wrapper keys and file paths, but all run the same command:
npx -y @runapi.ai/mcpConfiguration
The server reads configuration in this order:
RUNAPI_API_KEYenvironment variable, useful for headless and CI hosts~/.config/runapi/config.json, created by the MCPlogintool orrunapi loginNo key, which still allows free catalog tools
The config file is normally managed by login. A pre-provisioned headless config can use:
{
"apiKey": "your_runapi_key"
}You can also set a custom base URL for local testing:
{
"apiKey": "your_runapi_key",
"baseUrl": "https://runapi.ai"
}Do not commit real API keys.
Data Sync
This package ships build-time contract data:
data/contract.json: catalog, actions, model slugs, and input constraints
Refresh data from the RunAPI source tree before a release:
npm run sync:dataContract updates require a new package release. Pricing is queried from the RunAPI runtime API and does not use a package snapshot.
Development
npm install
npm run typecheck
npm test
npm pack --dry-runRun the server locally:
npm run devManual initialize smoke test:
printf '%s\n' '{"jsonrpc":"2.0","method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"test","version":"0.1.0"}},"id":1}' | npx tsx src/index.tsPackage Contents
The npm package includes:
compiled
dist/filesembedded
data/filesplatform examples
eval scenarios, when generated by this repo
README, changelog, license, and package metadata
It does not include node_modules, .env, local config files, or API keys.
Also Available Via CLI
RunAPI also has a separate command-line client for terminal workflows. Use this MCP server when you want RunAPI available inside an MCP host. Use the CLI when you want direct shell commands, scripts, or CI integration.
License
Licensed under the Apache License, Version 2.0.
Available Tools
9 toolscheck_balanceAInspect
Return the authenticated RunAPI account balance and spending metrics.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose all behavioral traits. It only states output (balance and spending metrics) without mentioning authentication needs, rate limits, or side effects, leaving significant gaps.
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, concise sentence that immediately conveys the tool's purpose. No extraneous information is present.
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 0-parameter read tool, the description is mostly adequate but lacks specificity on the 'spending metrics' (e.g., what metrics are included). Without an output schema, more detail would improve completeness.
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 has no parameters (schema coverage 100%), and the description adds no parameter details. Baseline 4 applies as the schema fully covers parameters.
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 the specific action 'Return' and the exact resource 'authenticated RunAPI account balance and spending metrics'. It distinguishes from siblings like check_pricing and create_task.
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?
No explicit when-to-use or when-not-to-use guidance is provided. The tool's purpose is implied but not differentiated from sibling tools such as check_pricing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_pricingAInspect
Return current runtime pricing for a RunAPI model/action pair.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | RunAPI model slug | |
| action | Yes | RunAPI endpoint name, for example text_to_image or text_to_music | |
| service | Yes | RunAPI service slug returned by list_models |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses the tool is read-only (returns pricing), but does not mention authentication requirements, rate limits, or potential errors. The behavior is straightforward but lacks depth.
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 sentence with no fluff. It is concise and to the point, though it could include slightly more context without becoming verbose.
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 no output schema, the description does not specify return format or error conditions. It is adequate for a simple query but lacks completeness regarding behavioral details and expected response.
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 description coverage is 100%, so each parameter is already described. The tool description adds minimal extra meaning ('for a model/action pair'), but does not significantly enhance understanding beyond the schema.
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 the verb 'return' and the resource 'current runtime pricing' for a specific scope ('RunAPI model/action pair'). It effectively distinguishes from sibling tools like list_models and check_balance by focusing on pricing for a model/action combination.
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?
No explicit when-to-use or when-not-to-use guidance is provided. The description implies usage for fetching pricing, but does not mention alternatives or contexts where other sibling tools might be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_taskBInspect
Run a RunAPI operation with a caller-generated idempotency key. Asynchronous operations can optionally poll until completion.
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No | Wait for the completed result when the endpoint requires durable processing. | |
| model | No | RunAPI model slug | |
| action | Yes | RunAPI endpoint name, for example text_to_image | |
| params | No | Endpoint parameters validated against data/contract.json where constrained. | |
| service | Yes | RunAPI service slug returned by list_models | |
| timeout_ms | No | Requested completion deadline in milliseconds; values above the endpoint limit are capped. | |
| idempotency_key | Yes | Opaque caller-generated key for safely replaying one logical task creation. | |
| poll_interval_ms | No | Status check interval while waiting for completion. |
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. It does disclose meaningful behavior: caller-generated idempotency and optional polling until completion. However, it omits important behavioral details such as replay semantics, side effects, failure modes, and what happens after submission.
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 concise at two sentences with no wasted words and front-loads the core purpose. It loses a point because the opening phrase is somewhat vague and could have been sharpened to explicitly mention task creation.
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 an 8-parameter asynchronous tool with no annotations and no output schema, the description is too sparse. It does not explain how to retrieve the resulting task via get_task, how wait/timeout/poll_interval relate, or what the response contains after 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 input schema has 100% parameter description coverage with useful per-parameter explanations, so the baseline of 3 applies. The description adds little beyond idempotency and polling, and it does not elaborate on how service, action, params, wait, timeout_ms, or poll_interval_ms should be used together.
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 a specific action ('Run a RunAPI operation') and mentions the caller-generated idempotency key, which hints at task creation. It can be distinguished from siblings like list_models or get_task because it executes an operation rather than listing or retrieving, but it never explicitly says 'create task', leaving mild ambiguity.
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 explicit guidance on when to use this tool versus alternatives such as get_task or list_actions. The statement that asynchronous operations can optionally poll implies use for long-running work, but no exclusions or alternative-selection criteria are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_model_infoAInspect
Get supported endpoint, current runtime pricing, and input constraints for a RunAPI model slug. Add service and action when the model supports multiple endpoints.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes | RunAPI model slug returned by list_models | |
| action | No | RunAPI endpoint name returned by list_models; use with service to disambiguate multi-endpoint models | |
| service | No | RunAPI service slug returned by list_models; use with action to disambiguate multi-endpoint models |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that the tool returns endpoint, pricing, and constraints, but does not explain side effects, authentication requirements, or data freshness. The description is adequate but lacks deeper behavioral context.
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 wasted words. The first sentence delivers the core purpose; the second adds important usage nuance. Efficient and well-structured.
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?
While there is no output schema, the description gives a high-level summary of the return values (endpoint, pricing, constraints). For a simple info retrieval tool with well-described parameters, this is nearly complete. Minor gap: no mention of return format or pagination, but not critical.
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 100%, so baseline is 3. The description adds value by explaining that 'model' is a RunAPI model slug from list_models and that 'service'/'action' disambiguate multi-endpoint models. This provides meaningful context beyond the schema descriptions.
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 the tool retrieves supported endpoint, current runtime pricing, and input constraints for a RunAPI model slug. It distinguishes itself from sibling tools like list_models (which lists all models) and check_pricing (focused only on pricing) by specifying the exact information gathered.
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 provides guidance on when to use the 'service' and 'action' parameters (for multi-endpoint models). While it doesn't explicitly exclude alternatives or state when not to use this tool, the usage context is clear enough for an agent to decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_taskBInspect
Fetch the current status and latest payload for an existing RunAPI task.
| Name | Required | Description | Default |
|---|---|---|---|
| action | No | RunAPI endpoint name. Provide this when using media task routes. | |
| service | Yes | ||
| task_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It labels the operation as 'fetch' (read-only) but omits details on error handling, rate limits, or side effects, leaving gaps.
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 clear sentence with no waste, but it could be structured with bullets or more details without losing conciseness.
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 3 parameters, no output schema, and no annotations, the description is insufficient. It does not explain return values, error conditions, or usage prerequisites, making it incomplete for real-world use.
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 description coverage is only 33% (only 'action' has a description). The description adds no extra meaning for the required parameters 'service' and 'task_id', failing to compensate for the schema's 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 states the verb 'Fetch' and the resource 'current status and latest payload for an existing RunAPI task', distinguishing it from siblings like 'create_task' which creates tasks.
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 usage for checking task status but provides no explicit when/when-not guidance or alternatives, leaving the agent to infer context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_actionsAInspect
List RunAPI endpoint names grouped by output modality.
| 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 bears full responsibility for behavioral disclosure. It only states it lists endpoint names, implying a read-only operation, but does not discuss whether results are cached, paginated, or any side effects. This is insufficient for full transparency.
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 sentence that conveys the essential purpose without any extraneous words. It is front-loaded and every word contributes meaning.
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 zero parameters, no output schema, and no annotations, the description is complete enough for the tool's simplicity. It adequately explains the output and grouping, covering the necessary context for use.
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 no parameters, so the baseline for this dimension is 4. The description does not need to add parameter information, and it correctly omits any, leading to a high score.
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 it lists RunAPI endpoint names grouped by output modality. It uses specific verb 'List' and resource 'endpoint names', and the grouping detail distinguishes it from sibling tools like check_balance or create_task, which have different purposes.
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 does not provide explicit guidance on when to use this tool versus alternatives. While the purpose is clear, it lacks context such as when listing endpoints is appropriate or any exclusions. The score is minimally viable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_modelsCInspect
List RunAPI models from the embedded catalog. Optional filters: modality, service, or action.
| Name | Required | Description | Default |
|---|---|---|---|
| action | No | ||
| service | No | ||
| modality | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only says 'List RunAPI models,' which implicitly suggests a read operation but does not explicitly state side-effect-free behavior, authentication requirements, or any potential limits. There is no mention of whether the operation is safe, such as a read-only guarantee.
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, front-loaded sentence that states the primary function and the available filters. It's concise and to the point, with no filler.
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?
The description gives only the most basic gist. It doesn't mention what the returned list contains, whether any authentication is required, or the meaning of each filter. With no output schema, the agent is left to guess the response structure. The sibling tools (get_model_info, list_actions) suggest a catalog context, but this description alone is insufficient for confident use.
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 schema provides no descriptions (0% coverage), so the description must compensate. It does so by stating the three parameters are optional filters, which clarifies their purpose. However, it doesn't explain the domain of 'service' or 'action' (e.g., what values are valid for action, or whether service is a name or ID). This is adequate but not thorough.
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 specifies the action (list) and resource (RunAPI models) with clear optional filters, making the purpose evident. It does not explicitly contrast with siblings like get_model_info, but the wording is distinct enough to avoid major ambiguity.
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?
No guidance is provided on when to use this tool versus alternatives like list_actions or search_prompts. The description does not mention any exclusions or context where this tool is preferred, leaving the agent to infer based on the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
loginAInspect
Authenticate RunAPI by opening a browser PKCE login flow and saving the API key to ~/.config/runapi/config.json.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Re-run browser login when the current credential comes from the local config file. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It discloses the interactive browser flow and the file write side effect (config.json). However, it does not mention that it may overwrite existing credentials or that it could block waiting for user input, though these are implied.
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, well-structured sentence that front-loads the action ('Authenticate RunAPI') and provides necessary details without extraneous information.
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 login tool with one optional parameter and no output schema, the description covers the core purpose and side effect. It lacks an explicit statement that this is a prerequisite for other tools, but that is implied.
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 description coverage is 100% (the only parameter 'force' has a description). The tool description adds no additional meaning about parameters beyond the schema, so the baseline of 3 applies.
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 the tool's purpose with a specific verb ('Authenticate'), target resource ('RunAPI'), method ('browser PKCE login flow'), and side effect (saving to config.json). It is distinct from sibling tools, none of which relate to authentication.
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 usage (to authenticate RunAPI) but does not explicitly say when to run it (e.g., before other RunAPI tools) or when to use the 'force' parameter. Since there are no alternative auth tools among siblings, 'vs alternatives' is not applicable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_promptsAInspect
Search RunAPI prompt examples by modality, category, tags, text query, model, or featured status. Free, no API key required.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Text query matched against prompt title and prompt text. | |
| page | No | ||
| tags | No | Tags to match. All provided tags must be present. | |
| model | No | RunAPI model slug, for example flux-kontext-pro or suno-v5. | |
| category | No | ||
| featured | No | ||
| modality | No | ||
| per_page | 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. It discloses the tool is free and requires no API key, implying it is a safe, read-only operation suitable for public search. Lacks details on pagination or mutation.
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 consists of two short sentences with no fluff. It efficiently communicates the tool's purpose and key usage condition (free, no API key).
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 8 parameters, no output schema, and no annotations, the description lacks completeness. Missing details on result format, pagination behavior, and filter logic (AND/OR) leave gaps for effective tool selection.
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 description coverage is only 38%. The description lists searchable fields but adds no extra meaning for parameters like page, per_page, category, or modality, which lack schema descriptions. More detail is needed to compensate.
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 the tool searches prompt examples by multiple criteria (modality, category, tags, text query, model, featured status). It distinguishes itself from sibling tools like list_models or list_actions by focusing on prompts.
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 mentions the tool is free and requires no API key, which guides usage. However, it does not explicitly state when to use this tool vs alternatives, or provide specific conditions for omission.
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 tool update
v0.12.2- Changed
create_task3 fields changed- changed
Input schema / properties / poll_interval_ms / descriptionPrevious value: -"Polling interval for asynchronous endpoints."New value: +"Status check interval while waiting for completion." - changed
Input schema / properties / timeout_ms / descriptionPrevious value: -"Requested Completion Wait deadline for asynchronous endpoints; values above 300000 milliseconds are capped."New value: +"Requested completion deadline in milliseconds; values above the endpoint limit are capped." - changed
Input schema / properties / wait / descriptionPrevious value: -"For asynchronous endpoints, poll until the task reaches a terminal status."New value: +"Wait for the completed result when the endpoint requires durable processing."
1 tool update
v0.12.0- Changed
list_models1 field changed- changed
Input schema / properties / modality / enumPrevious value: -[ - "image", - "video", - "audio", - "utility", - "llm" -]New value: +[ + "image", + "video", + "audio", + "utility" +]
2 tool updates
v0.6.0- Changed
create_task3 fields changed- added
Input schema / properties / idempotency_keyAdded value: +{ + "description": "Opaque caller-generated key for safely replaying one logical task creation.", + "maxLength": 512, + "minLength": 1, + "type": "string" +} - changed
Input schema / properties / timeout_ms / descriptionPrevious value: -"Polling timeout for asynchronous endpoints."New value: +"Requested Completion Wait deadline for asynchronous endpoints; values above 300000 milliseconds are capped." - changed
Input schema / requiredPrevious value: -[ - "service", - "action" -]New value: +[ + "service", + "action", + "idempotency_key" +]
- Added
search_prompts
2 tool updates
v0.2.1- Changed
create_task3 fields changed- added
Input schema / properties / poll_interval_ms / descriptionAdded value: +"Polling interval for asynchronous endpoints." - added
Input schema / properties / timeout_ms / descriptionAdded value: +"Polling timeout for asynchronous endpoints." - changed
Input schema / properties / wait / descriptionPrevious value: -"Poll until the task reaches a terminal status."New value: +"For asynchronous endpoints, poll until the task reaches a terminal status."
- Removed
search_prompts
1 tool update
v0.1.16- Added
login
2 tool updates
v0.1.5- Removed
chat - Added
search_prompts
8 tool updates
v0.1.4- First observed
chat - First observed
check_balance - First observed
check_pricing - First observed
create_task - First observed
get_model_info - First observed
get_task - First observed
list_actions - First observed
list_models
TDQS
Scored across 9 tools
Most tools have clearly distinct purposes: model discovery, pricing, prompt search, balance, tasks, and auth. The only mild overlap is between get_model_info and check_pricing, both of which can provide pricing information.
Tool names consistently follow a lowercase verb_noun pattern: list_models, get_model_info, check_pricing, create_task, get_task. The single exception is login, but it still fits the imperative verb style and is easily predictable.
Nine tools is a well-scoped size for a server covering model catalog, actions, pricing, prompts, authentication, balance, and task execution. Each tool contributes to a distinct part of the workflow without unnecessary bloat.
The server covers the core workflow well: discover models/actions, check pricing, authenticate, create a task, and retrieve results. Minor gaps include no task cancellation or task listing, and no logout/authentication status, but these are not essential to the primary run-operation purpose.
Maintenance
Related MCP Connectors
Use AI models for chat, image, and video generation from Claude Code and other MCP hosts.
Generate AI images and videos from any compatible MCP client.
Generate AI images, video, music, and sound effects, and upscale them, from any MCP client.
Generate AI music via the Lacuna Music API from MCP clients like Claude Desktop & Code.
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables AI photo generation, editing, and video creation from MCP-compatible clients like Claude Desktop, Cursor, and Windsurf.815 npmMIT
- FlicenseNot gradedqualityBmaintenanceExposes Google AI Studio models (Gemini, Imagen, Veo) as MCP tools for text generation, image generation, and video generation, integrating with code editors and LLM clients.-

Runware MCPofficial
AlicenseNot gradedqualityBmaintenanceMCP server that gives AI agents access to Runware's full API for image, video, audio, 3D, upscaling, and other media generation and processing tasks via natural language.123 npmMIT
ImageAPI AI MCP Serverofficial
AlicenseAqualityBmaintenanceMCP server for ImageAPI AI that lets AI assistants generate high-resolution images, refine prompts for free, and inspect account credits directly in development workflows and chat sessions.46 npmMIT