# ModelsLab (remote · modelslab.com)

Generate images, video, speech and music, and run LLM chat, across 10,000+ models on ModelsLab.

- Trust score: 36/100 (low)
- Change this week: 0
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-10-23

## Components

- remote · `modelslab.com`: 36/100 (this document), [markdown](https://verifymcp.io/servers/modelslab-modelslab/mcp-v7.md), [page](https://verifymcp.io/servers/modelslab-modelslab/mcp-v7)

## Channel facts

- Endpoint: `https://modelslab.com/mcp/v7`
- Transports: `streamable-http`
- Auth: `required`
- Version: `1.0.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-10-23.

- **Endpoint Security**: 91/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - The endpoint enforces authorisation, advertised via RFC 9728 protected-resource metadata.
  - HTTPS is enforced; there's no plaintext access path.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC is configured correctly; the domain's records validate against the full chain to the root.
  - The authorisation server offers only Dynamic Client Registration (RFC 7591), which MCP 2026-07-28 deprecated in favour of Client ID Metadata Documents.
- **Transport & Reachability**: 0/100
  - Transport blocked by authentication: the endpoint requires auth we don't have to verify streamable-http.
- **Schema Quality & AI Usability**: 0/100
  - Schema blocked by authentication: the endpoint requires auth we don't have to read it.
- **Stability & Change Management**: 0/100
  - Stability not yet verified: not enough scan history yet (needs a 30-day window).
- **Tool Coverage**: 0/100
  - Tool coverage blocked by authentication: the endpoint requires auth we don't have to read its tools.
- **Tool Safety**: 0/100
  - Tool safety blocked by authentication: the endpoint requires auth we don't have to read its tools.
- **Capabilities**: 0/100
  - Capabilities blocked by authentication: the endpoint requires auth we don't have to read them.

**Unverified: 6 categories.** Categories scored 0 because we could not verify them: authentication we do not have, an unreachable endpoint, or not enough scan history. We only credit what we can confirm.

## Install

### How do I install the ModelsLab MCP server?

ModelsLab is a hosted endpoint at https://modelslab.com/mcp/v7, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http modelslab-modelslab 'https://modelslab.com/mcp/v7'
```

### Cursor

```json
{
  "mcpServers": {
    "modelslab-modelslab": {
      "url": "https://modelslab.com/mcp/v7"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "modelslab-modelslab": {
      "type": "http",
      "url": "https://modelslab.com/mcp/v7"
    }
  }
}
```

### Codex

```toml
[mcp_servers.modelslab-modelslab]
url = "https://modelslab.com/mcp/v7"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "modelslab-modelslab": {
      "type": "remote",
      "url": "https://modelslab.com/mcp/v7",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add modelslab-modelslab --url 'https://modelslab.com/mcp/v7' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  modelslab-modelslab:
    url: "https://modelslab.com/mcp/v7"
```

### Netclaw

```json
{
  "McpServers": {
    "modelslab-modelslab": {
      "Transport": "http",
      "Url": "https://modelslab.com/mcp/v7"
    }
  }
}
```

### Vellum

```bash
assistant mcp add modelslab-modelslab -t streamable-http -u 'https://modelslab.com/mcp/v7'
```

### Other

```json
{
  "mcpServers": {
    "modelslab-modelslab": {
      "type": "http",
      "url": "https://modelslab.com/mcp/v7"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-10-07 (score 36, −30)

- [security regression] Endpoint reachability: reachable → behind authorisation
- [security regression] Tool safety: pass → unverified
- [security regression] Stability: 0.07 → unverified
- [security regression] Transport: pass → unverified
- [security improvement] Authorization: unverified → pass
- [security improvement] DNSSEC: fail → pass
- [security] First check of Authorization: partial
- [functional regression] Capabilities: pass → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional regression] Schema quality: 100 → unverified

### 2026-10-04 (score 66, +1)

No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-03 (score 65, 0)

- [functional improvement] Stability: unverified → 0.03

### 2026-10-02 (score 65)

First indexed and scored.

## MCP tools (23)

### `list-models` (~288 tokens)

List Models

List available AI models on the ModelsLab platform.
    Filter by category (imagen, video, audio, llm, 3d), provider, tags, and more.
    Returns model IDs that can be used with generation tools.

Input parameters:

- `category` (string): Filter by model category (e.g., "stable_diffusion", "stable_diffusion_xl", "flux", "llm", "video", "voice_cloning").
- `feature` (string): Filter by product feature: "imagen" (images), "videofusion" (videos), "audiogen" (audio/voice), "llmaster" (LLMs), "threedverse" (3D).
- `limit` (integer): Maximum number of models to return (1-100).
- `nsfw` (boolean): Set to false to exclude NSFW models, true to include them. Defaults to user preference.
- `provider` (string): Filter by model provider (e.g., "modelslab", "civitai").
- `search` (string): Search models by name, ID, description, or tags.
- `sort` (string): Sort order: "recommended" (default), "latest", "most-used".
- `subcategory` (string): Filter by model subcategory (e.g., "lora", "controlnet", "embeddings", "checkpoint").

### `list-providers` (~128 tokens)

List Providers

List all available model providers on the ModelsLab platform.
    Returns provider names with model counts for each.
    Use provider names to filter models in the list-models tool.

Input parameters:

- `category` (string): Filter providers by model category (e.g., "stable_diffusion", "flux", "llm", "video").
- `feature` (string): Filter providers by product feature: "imagen" (images), "videofusion" (videos), "audiogen" (audio/voice), "llmaster" (LLMs), "threedverse" (3D).

### `text-to-image` (~208 tokens)

Text to Image

Generate images from text prompts using AI models.
    Returns a request ID that can be used with fetch-image to retrieve results.
    Supports various AI image generation models.

Input parameters:

- `aspect_ratio` (string): Aspect ratio for the image (e.g., "1:1", "16:9", "9:16").
- `height` (integer): Image height in pixels (512-1024).
- `model_id` (string, required): The model ID to use for image generation (e.g., "flux-dev", "sdxl").
- `negative_prompt` (string): Text describing what to avoid in the image.
- `prompt` (string, required): Text description of the image to generate.
- `samples` (integer): Number of images to generate (1-4).
- `track_id` (string): Custom tracking ID for the request.
- `webhook` (string): URL to receive webhook notification when generation completes.
- `width` (integer): Image width in pixels (512-1024).

### `image-to-image` (~227 tokens)

Image to Image

Transform existing images based on text prompts.
    Takes an input image and modifies it according to the provided prompt.
    Returns a request ID that can be used with fetch-image to retrieve results.

Input parameters:

- `aspect_ratio` (string): Aspect ratio for the output image.
- `height` (integer): Output image height in pixels (512-1024).
- `init_image` (string, required): Input image URL or base64 string to transform.
- `model_id` (string, required): The model ID to use for image transformation.
- `negative_prompt` (string): Text describing what to avoid in the output.
- `prompt` (string, required): Text description of how to transform the image.
- `samples` (integer): Number of images to generate (1-4).
- `strength` (number): Transformation strength (0-1). Higher values mean more change from the original.
- `track_id` (string): Custom tracking ID for the request.
- `webhook` (string): URL to receive webhook notification when generation completes.
- `width` (integer): Output image width in pixels (512-1024).

### `inpaint-image` (~199 tokens)

Inpaint Image

Edit specific areas of images using masks.
    Provide an image, a mask indicating the area to edit, and a prompt describing the desired changes.
    Returns a request ID that can be used with fetch-image to retrieve results.

Input parameters:

- `init_image` (string, required): URL or base64 string of the input image to edit.
- `mask_image` (string, required): URL or base64 string of the mask image (white areas will be edited, black areas preserved).
- `model_id` (string, required): The model ID to use for inpainting.
- `negative_prompt` (string): Things to avoid in the generated content.
- `prompt` (string, required): Text description of what to paint in the masked area.
- `strength` (number): Strength of the transformation (0-1). Higher values mean more change.
- `track_id` (string): Custom tracking ID for the request.
- `webhook` (string): URL to receive webhook notification when generation completes.

### `fetch-image` (~58 tokens)

Fetch Image Result

Retrieve the status and results of an image generation request.
    Use the request ID returned from text-to-image, image-to-image, or inpaint-image tools.

Input parameters:

- `id` (integer, required): The request ID returned from a previous image generation call.

### `text-to-video` (~282 tokens)

Text to Video

Generate videos from text descriptions.
    Creates AI-generated videos based on your text prompt.
    Returns a request ID that can be used with fetch-video to retrieve results.

Input parameters:

- `aspect_ratio` (string): Aspect ratio for the video (e.g., "16:9", "9:16").
- `camera_fixed` (boolean): Keep camera position fixed during generation.
- `duration` (integer): Video duration in seconds (minimum 4).
- `enhance_prompt` (boolean): Use AI to enhance the prompt.
- `fps` (integer): Frames per second for the output video.
- `generate_audio` (boolean): Generate audio for the video.
- `height` (integer): Video height in pixels (512-1024).
- `init_audio` (string): URL of audio to sync with the video.
- `model_id` (string, required): The model ID to use for video generation.
- `negative_prompt` (string): Things to avoid in the generated video.
- `portrait` (boolean): Generate in portrait orientation.
- `prompt` (string, required): Text description of the video to generate.
- `resolution` (string): Output resolution preset.
- `track_id` (string): Custom tracking ID for the request.
- `webhook` (string): URL to receive webhook notification when generation completes.
- `width` (integer): Video width in pixels (512-1024).

### `image-to-video` (~204 tokens)

Image to Video

Animate static images into videos.
    Takes input image(s) and creates a video based on the prompt.
    Returns a request ID that can be used with fetch-video to retrieve results.

Input parameters:

- `aspect_ratio` (string): Aspect ratio for the video.
- `duration` (integer): Video duration in seconds (minimum 4).
- `init_audio` (string): URL of audio to sync with the video.
- `init_image` (string, required): Input image URL or base64 string to animate.
- `model_id` (string, required): The model ID to use for video generation.
- `negative_prompt` (string): Things to avoid in the generated video.
- `portrait` (boolean): Generate in portrait orientation.
- `prompt` (string): Text description of the video motion/transformation.
- `resolution` (string): Output resolution preset.
- `track_id` (string): Custom tracking ID for the request.
- `webhook` (string): URL to receive webhook notification when generation completes.

### `video-to-video` (~252 tokens)

Video to Video

Transform existing videos with AI.
    Takes input video(s) and modifies them based on the prompt.
    Returns a request ID that can be used with fetch-video to retrieve results.

Input parameters:

- `aspect_ratio` (string): Aspect ratio for the output video.
- `duration` (integer): Video duration in seconds (minimum 4).
- `image_timestamps` (array): Optional seconds into the video where each init_image applies, in the same order. Images without a timestamp are spread evenly across the clip.
- `init_image` (array): Optional guidance image URLs applied in order across the input video.
- `init_video` (string, required): Input video URL to transform.
- `model_id` (string, required): The model ID to use for video transformation.
- `negative_prompt` (string): Things to avoid in the generated video.
- `prompt` (string, required): Text description of how to transform the video.
- `public_figure_threshold` (string): Threshold for public figure detection.
- `seed` (integer): Random seed for reproducible results (0-4294967295).
- `track_id` (string): Custom tracking ID for the request.
- `webhook` (string): URL to receive webhook notification when generation completes.

### `lip-sync` (~139 tokens)

Lip Sync

Sync video with audio for lip movements.
    Takes a video and audio file and syncs the lip movements to match the audio.
    Returns a request ID that can be used with fetch-video to retrieve results.

Input parameters:

- `init_audio` (string, required): URL or base64 string of the audio file to sync lips with.
- `init_video` (string, required): URL or base64 string of the input video containing the face to sync.
- `model_id` (string, required): The model ID to use for lip sync.
- `track_id` (string): Custom tracking ID for the request.
- `webhook` (string): URL to receive webhook notification when processing completes.

### `motion-control` (~192 tokens)

Motion Control

Control motion in video generation.
    Uses an image and video to create motion-controlled output.
    Returns a request ID that can be used with fetch-video to retrieve results.

Input parameters:

- `character_orientation` (string, required): Use character orientation from image or video.
- `init_image` (string, required): URL or base64 string of the input image (character/subject).
- `init_video` (string, required): URL or base64 string of the video for motion reference.
- `keep_original_sound` (string): Keep original sound from the video.
- `mode` (string): Processing mode: std (standard) or pro (professional).
- `model_id` (string, required): The model ID to use for motion control.
- `prompt` (string): Optional text prompt (max 2500 characters).
- `track_id` (string): Custom tracking ID for the request.
- `webhook` (string): URL to receive webhook notification when processing completes.

### `fetch-video` (~64 tokens)

Fetch Video Result

Retrieve the status and results of a video generation request.
    Use the request ID returned from text-to-video, image-to-video, video-to-video, lip-sync, or motion-control tools.

Input parameters:

- `id` (string, required): The request ID returned from a previous video generation call.

### `text-to-speech` (~138 tokens)

Text to Speech

Convert text to natural speech audio.
    Takes text and generates realistic speech using the specified voice.
    Returns a request ID that can be used with fetch-audio to retrieve results.

Input parameters:

- `model_id` (string, required): The model ID to use for text-to-speech.
- `prompt` (string, required): The text to convert to speech.
- `temperature` (number): Temperature for voice variation (0-1).
- `track_id` (string): Custom tracking ID for the request.
- `voice_id` (string, required): The voice ID to use for speech generation.
- `webhook` (string): URL to receive webhook notification when generation completes.

### `speech-to-text` (~111 tokens)

Speech to Text

Transcribe audio to text.
    Takes an audio file and converts it to text transcription.
    Returns a request ID that can be used with fetch-audio to retrieve results.

Input parameters:

- `init_audio` (string, required): URL or base64 string of the audio file to transcribe.
- `model_id` (string, required): The model ID to use for speech-to-text.
- `track_id` (string): Custom tracking ID for the request.
- `webhook` (string): URL to receive webhook notification when transcription completes.

### `speech-to-speech` (~125 tokens)

Speech to Speech

Voice conversion and transformation.
    Takes an audio file and converts it to a different voice.
    Returns a request ID that can be used with fetch-audio to retrieve results.

Input parameters:

- `init_audio` (string, required): URL or base64 string of the audio file to transform.
- `model_id` (string, required): The model ID to use for voice conversion.
- `track_id` (string): Custom tracking ID for the request.
- `voice_id` (string, required): The target voice ID to convert to.
- `webhook` (string): URL to receive webhook notification when conversion completes.

### `sound-generation` (~117 tokens)

Sound Generation

Generate sound effects from text descriptions.
    Creates audio sound effects based on your prompt.
    Returns a request ID that can be used with fetch-audio to retrieve results.

Input parameters:

- `duration` (integer): Duration of the sound effect in seconds.
- `model_id` (string, required): The model ID to use for sound generation.
- `prompt` (string, required): Text description of the sound effect to generate.
- `track_id` (string): Custom tracking ID for the request.
- `webhook` (string): URL to receive webhook notification when generation completes.

### `music-generation` (~150 tokens)

Music Generation

Create music from text prompts.
    Generates original music based on your description, optional tags, and lyrics.
    Returns a request ID that can be used with fetch-audio to retrieve results.

Input parameters:

- `lyrics` (string): Lyrics to include in the generated song.
- `model_id` (string, required): The model ID to use for music generation.
- `music_length_ms` (number): Duration of the music in milliseconds.
- `prompt` (string, required): Text description of the music to generate.
- `tags` (array): Array of genre/style tags for the music.
- `track_id` (string): Custom tracking ID for the request.
- `webhook` (string): URL to receive webhook notification when generation completes.

### `song-extender` (~198 tokens)

Song Extender

Extend existing music tracks.
    Takes an existing audio file and extends it from either the beginning or end.
    Returns a request ID that can be used with fetch-audio to retrieve results.

Input parameters:

- `crop_duration` (number): Duration to crop from the original.
- `extend_duration` (number): Duration to extend in seconds.
- `init_audio` (string, required): URL or base64 string of the audio file to extend.
- `lyrics` (string): Lyrics for the extended portion.
- `model_id` (string, required): The model ID to use for song extension.
- `prompt` (string): Optional text description for the extended portion.
- `side` (string, required): Which side to extend: left (beginning) or right (end).
- `tags` (array): Array of genre/style tags.
- `track_id` (string): Custom tracking ID for the request.
- `webhook` (string): URL to receive webhook notification when extension completes.

### `song-inpaint` (~208 tokens)

Song Inpaint

Edit specific sections of songs.
    Takes an audio file and regenerates a specific section defined by start and end times.
    Returns a request ID that can be used with fetch-audio to retrieve results.

Input parameters:

- `init_audio` (string, required): URL or base64 string of the audio file to edit.
- `instrumental` (boolean): Generate instrumental only (no vocals).
- `lyrics` (string): Lyrics for the regenerated section.
- `model_id` (string, required): The model ID to use for song inpainting.
- `prompt` (string): Optional text description for the regenerated section.
- `sections` (array, required): Array of 2 numbers: [start_time, end_time] in seconds for the section to regenerate.
- `selection_crop` (boolean): Return only the regenerated section.
- `tags` (array): Array of genre/style tags.
- `track_id` (string): Custom tracking ID for the request.
- `webhook` (string): URL to receive webhook notification when inpainting completes.

### `dubbing` (~149 tokens)

Dubbing

Create dubbed audio content.
    Takes a video and translates/dubs the audio from one language to another.
    Returns a request ID that can be used with fetch-audio to retrieve results.

Input parameters:

- `init_video` (string, required): URL or base64 string of the video to dub.
- `model_id` (string, required): The model ID to use for dubbing.
- `output_lang` (string, required): Target language code for the dubbed output.
- `source_lang` (string, required): Source language code (e.g., "en", "es", "fr").
- `track_id` (string): Custom tracking ID for the request.
- `webhook` (string): URL to receive webhook notification when dubbing completes.

### `fetch-audio` (~62 tokens)

Fetch Audio Result

Retrieve the status and results of an audio generation request.
    Use the request ID returned from text-to-speech, speech-to-text, music-generation, and other audio tools.

Input parameters:

- `id` (integer, required): The request ID returned from a previous audio generation call.

### `fetch-generation` (~235 tokens)

Fetch Generation Status

Check the status of a queued or processing generation request on the ModelsLab V7 API.

    Use this tool when a generation tool returns a `status` of `"processing"`, and call it again
    while the status stays `"processing"`. Image jobs usually finish in seconds; video and music
    jobs can take several minutes, so tell the user the job is still running if it has not
    finished after a few polls.

    Pass the `id` from the original generation response and the `type` matching the category
    of the original request (e.g. "images" for text-to-image, image-to-image, or inpaint-image).

    The response will contain:
    - `status`: "success", "processing", or "error"
    - `output`: array of URLs when status is "success"

Input parameters:

- `id` (integer, required): The numeric id returned by a generation tool when status was "processing".
- `type` (string, required): The generation category matching the original request: "images" for image tools, "videos" for video tools, "audios" for audio tools.

### `chat-completion` (~338 tokens)

Chat Completion

Chat with AI language models.
    Send messages to an LLM and receive AI-generated responses.
    Supports various models and configuration options.
    A message may carry a PDF as a {"type":"file","file":{"filename":...,"file_data":"data:application/pdf;base64,..."}} content part.

Input parameters:

- `frequency_penalty` (number): Penalty for frequent tokens (-2 to 2).
- `max_tokens` (integer): Maximum number of tokens to generate.
- `messages` (array, required): Array of message objects with "role" (system/user/assistant) and "content" keys.
- `model_id` (string, required): The LLM model ID to use (e.g., "gpt-4", "claude-3").
- `n` (integer): Number of completions to generate (1-10).
- `plugins` (array): OpenRouter plugins. Send [{"id":"file-parser","pdf":{"engine":"native"}}] alongside a {"type":"file"} content part to have a PDF attachment parsed.
- `presence_penalty` (number): Penalty for new topics (-2 to 2).
- `response_format` (object): Response format configuration (e.g., {"type": "json_object"}).
- `seed` (integer): Random seed for reproducible results.
- `stop` (array): Up to 4 sequences where the API will stop generating.
- `temperature` (number): Sampling temperature (0-2). Higher values make output more random.
- `top_k` (integer): Top-k sampling parameter.
- `top_p` (number): Nucleus sampling parameter (0-1).

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/modelslab-modelslab/mcp-v7#diagnostics

## Score history

- 2026-10-23: 36
- 2026-10-22: 36
- 2026-10-21: 36
- 2026-10-20: 36
- 2026-10-19: 36
- 2026-10-18: 36
- 2026-10-17: 36
- 2026-10-16: 36
- 2026-10-15: 36
- 2026-10-14: 36
- 2026-10-13: 36
- 2026-10-12: 36
- 2026-10-10: 36
- 2026-10-07: 36
- 2026-10-04: 66
- 2026-10-03: 65
- 2026-10-02: 65

## Common questions

### What is the ModelsLab MCP server?

ModelsLab is an MCP server listed in the public MCP registry as io.github.ModelsLab/modelslab. Generate images, video, speech and music, and run LLM chat, across 10,000+ models on ModelsLab. This page covers its hosted endpoint (https://modelslab.com/mcp/v7).

### Is the ModelsLab MCP server safe to use?

ModelsLab scores 36 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the ModelsLab MCP server expose?

ModelsLab exposes 23 tools: list-models, list-providers, text-to-image, image-to-image, inpaint-image, and 18 more. Their descriptions and schemas cost roughly 4,072 tokens of context every time the server is loaded.

### Does the ModelsLab MCP server require authentication?

Yes. ModelsLab asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.

### Is the ModelsLab MCP server still maintained?

ModelsLab is still listed as active in the MCP registry. We last reached this channel on 23 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://modelslab.com/mcp/v7
- Authorisation metadata: https://modelslab.com/.well-known/oauth-protected-resource/mcp/v7
- Repository: https://github.com/ModelsLab/modelslab-mcp
- Website: https://docs.modelslab.com/mcp-web-api/overview
- Changelog RSS feed: https://verifymcp.io/servers/modelslab-modelslab/mcp-v7.xml
- Changelog JSON feed: https://verifymcp.io/servers/modelslab-modelslab/mcp-v7.json
- HTML version of this page: https://verifymcp.io/servers/modelslab-modelslab/mcp-v7
