Skip to main content
Glama

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/mcp

No 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/mcp

The 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.json in 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/mcp

Compatibility 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 roo

Free 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

list_models

No

List RunAPI models from the embedded catalog. Supports modality, service, and action filters.

get_model_info

No

Return service, action, modality, input constraints, and current runtime pricing for a model slug. Use service + action when a model appears in multiple endpoints.

list_actions

No

Group endpoint action names by modality.

check_pricing

No

Return current runtime pricing for a service + action + model combination.

search_prompts

No

Search reusable prompt examples by modality, category, tags, q, model, featured, and pagination.

login

No

Start browser login and save RunAPI credentials to shared local config.

create_task

Yes

Create a media task with a required caller-generated idempotency_key; wait for completion by default or return immediately with wait: false.

get_task

Yes

Fetch status and latest payload for an existing media task.

check_balance

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:

  1. The assistant calls list_models with modality: "image".

  2. It summarizes the returned model slugs, services, actions, and required fields.

  3. It avoids quoting stale prices unless it calls check_pricing.

Search Prompt Examples

Find image prompt examples for a logo.

Expected behavior:

  1. The assistant calls search_prompts with modality: "image" and q: "logo".

  2. It summarizes returned titles, prompt text, model slugs, categories, and tags.

  3. It uses the selected prompt with get_model_info before creating a task.

Inspect A Model

Show me the required parameters for this model slug: <model-slug>

Expected behavior:

  1. The assistant calls get_model_info.

  2. If the response is ambiguous, it chooses the relevant service/action from the returned matches and calls get_model_info again with service and action.

  3. It shows required fields, enum constraints, range constraints, conditional input rules, supported action, and current runtime pricing if available.

  4. It tells you to choose another slug with list_models if the slug is not found.

Create A Media Task

Generate a square product image with RunAPI. Pick a suitable image model.

Expected behavior:

  1. The assistant calls list_models to choose a compatible image model.

  2. It calls get_model_info with the selected service/action/model to validate parameters and any conditional input rules.

  3. It asks for confirmation if the request is expensive, long-running, or a batch.

  4. It generates one opaque idempotency_key for this logical task and calls create_task.

  5. 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:

  1. The assistant generates one opaque idempotency_key and calls create_task with wait: false.

  2. It returns the task ID.

  3. 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:

  1. The assistant calls check_balance.

  2. If no key is configured, it calls login for browser login, or explains RUNAPI_API_KEY for 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

list_models with modality: "image"

Video

list_models with modality: "video"

Audio and music

list_models with modality: "audio"

Utility

list_models with modality: "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:

  1. Call list_models to find a candidate model.

  2. Call check_pricing with service, action, and model.

  3. 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/mcp

Use -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 claude

This writes .mcp.json in the current directory.

Cursor fallback:

npx @runapi.ai/mcp init cursor

This writes .cursor/mcp.json. Open Cursor settings to verify the MCP server is enabled.

VS Code fallback:

npx @runapi.ai/mcp init vscode

This 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 windsurf

This writes the generated config for the Windsurf target used by the init command.

Roo Code

Run:

npx @runapi.ai/mcp init roo

This 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/mcp

Configuration

The server reads configuration in this order:

  1. RUNAPI_API_KEY environment variable, useful for headless and CI hosts

  2. ~/.config/runapi/config.json, created by the MCP login tool or runapi login

  3. No 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:data

Contract 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-run

Run the server locally:

npm run dev

Manual 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.ts

Package Contents

The npm package includes:

  • compiled dist/ files

  • embedded data/ files

  • platform 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 tools
check_balanceAInspect

Return the authenticated RunAPI account balance and spending metrics.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNoRunAPI model slug
actionYesRunAPI endpoint name, for example text_to_image or text_to_music
serviceYesRunAPI service slug returned by list_models

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
waitNoWait for the completed result when the endpoint requires durable processing.
modelNoRunAPI model slug
actionYesRunAPI endpoint name, for example text_to_image
paramsNoEndpoint parameters validated against data/contract.json where constrained.
serviceYesRunAPI service slug returned by list_models
timeout_msNoRequested completion deadline in milliseconds; values above the endpoint limit are capped.
idempotency_keyYesOpaque caller-generated key for safely replaying one logical task creation.
poll_interval_msNoStatus check interval while waiting for completion.

TDQS

B3.1/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 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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelYesRunAPI model slug returned by list_models
actionNoRunAPI endpoint name returned by list_models; use with service to disambiguate multi-endpoint models
serviceNoRunAPI service slug returned by list_models; use with action to disambiguate multi-endpoint models

TDQS

A4.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 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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionNoRunAPI endpoint name. Provide this when using media task routes.
serviceYes
task_idYes

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionNo
serviceNo
modalityNo

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNoRe-run browser login when the current credential comes from the local config file.

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoText query matched against prompt title and prompt text.
pageNo
tagsNoTags to match. All provided tags must be present.
modelNoRunAPI model slug, for example flux-kontext-pro or suno-v5.
categoryNo
featuredNo
modalityNo
per_pageNo

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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. 1 tool updatev0.12.2
    • Changedcreate_task3 fields changed
      • changedInput schema / properties / poll_interval_ms / description
        Previous value: -"Polling interval for asynchronous endpoints."New value: +"Status check interval while waiting for completion."
      • changedInput schema / properties / timeout_ms / description
        Previous 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."
      • changedInput schema / properties / wait / description
        Previous 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."
  2. 1 tool updatev0.12.0
    • Changedlist_models1 field changed
      • changedInput schema / properties / modality / enum
        Previous value: -[
        -  "image",
        -  "video",
        -  "audio",
        -  "utility",
        -  "llm"
        -]New value: +[
        +  "image",
        +  "video",
        +  "audio",
        +  "utility"
        +]
  3. 2 tool updatesv0.6.0
    • Changedcreate_task3 fields changed
      • addedInput schema / properties / idempotency_key
        Added value: +{
        +  "description": "Opaque caller-generated key for safely replaying one logical task creation.",
        +  "maxLength": 512,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • changedInput schema / properties / timeout_ms / description
        Previous value: -"Polling timeout for asynchronous endpoints."New value: +"Requested Completion Wait deadline for asynchronous endpoints; values above 300000 milliseconds are capped."
      • changedInput schema / required
        Previous value: -[
        -  "service",
        -  "action"
        -]New value: +[
        +  "service",
        +  "action",
        +  "idempotency_key"
        +]
    • Addedsearch_prompts
  4. 2 tool updatesv0.2.1
    • Changedcreate_task3 fields changed
      • addedInput schema / properties / poll_interval_ms / description
        Added value: +"Polling interval for asynchronous endpoints."
      • addedInput schema / properties / timeout_ms / description
        Added value: +"Polling timeout for asynchronous endpoints."
      • changedInput schema / properties / wait / description
        Previous value: -"Poll until the task reaches a terminal status."New value: +"For asynchronous endpoints, poll until the task reaches a terminal status."
    • Removedsearch_prompts
  5. 1 tool updatev0.1.16
    • Addedlogin
  6. 2 tool updatesv0.1.5
    • Removedchat
    • Addedsearch_prompts
  7. 8 tool updatesv0.1.4
    • First observedchat
    • First observedcheck_balance
    • First observedcheck_pricing
    • First observedcreate_task
    • First observedget_model_info
    • First observedget_task
    • First observedlist_actions
    • First observedlist_models

TDQS

A3.7/5.0

Scored across 9 tools

Disambiguation4/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness4/5

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

ActivityActive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers