# RYLA (remote · mcp.ryla.ai)

Generate AI influencer photos, face swaps, and character sheets with a consistent face.

- Trust score: 73/100 (medium)
- Change this week: +3
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-09-27

## Components

- remote · `mcp.ryla.ai`: 73/100 (this document), [markdown](https://verifymcp.io/servers/ai-ryla-ryla/mcp.md), [page](https://verifymcp.io/servers/ai-ryla-ryla/mcp)

## Channel facts

- Endpoint: `https://mcp.ryla.ai/mcp`
- 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-09-27.

- **Endpoint Security**: 57/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not fully verified: no authorisation is required to call this server, and 14 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.
  - HTTPS is enforced; there's no plaintext access path.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 69/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 2241 tokens (~160/item across 14 items; 14 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 70/100
  - Stability observed for 21 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 14 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 15 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

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

RYLA is a hosted endpoint at https://mcp.ryla.ai/mcp, 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 ai-ryla-ryla 'https://mcp.ryla.ai/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "ai-ryla-ryla": {
      "url": "https://mcp.ryla.ai/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "ai-ryla-ryla": {
      "type": "http",
      "url": "https://mcp.ryla.ai/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.ai-ryla-ryla]
url = "https://mcp.ryla.ai/mcp"
```

### opencode

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

### OpenClaw

```bash
openclaw mcp add ai-ryla-ryla --url 'https://mcp.ryla.ai/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  ai-ryla-ryla:
    url: "https://mcp.ryla.ai/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "ai-ryla-ryla": {
      "Transport": "http",
      "Url": "https://mcp.ryla.ai/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add ai-ryla-ryla -t streamable-http -u 'https://mcp.ryla.ai/mcp'
```

### Other

```json
{
  "mcpServers": {
    "ai-ryla-ryla": {
      "type": "http",
      "url": "https://mcp.ryla.ai/mcp"
    }
  }
}
```

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-09-26 (score 73, +1)

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

### 2026-09-25 (score 72, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-09-23 (score 72, +1)

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

### 2026-09-21 (score 71, +1)

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

### 2026-09-19 (score 70, +1)

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

### 2026-09-17 (score 69, +16)

- [security improvement] Injection markers: unverified → pass
- [security] Authorization: Authorisation not fully verified: no authorisation is required to call this server, and 14 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.
- [functional regression] Schema quality: unverified → fail
- [functional improvement] Schema quality: 384 → 160
- [functional improvement] Tool coverage: unverified → 100
- [functional] This server's schema is too large to store in full, so we cannot compare its tools day to day

### 2026-09-16 (score 53, −15)

- [security regression] Tool safety: pass → unverified
- [security] Authorization: Authorisation not fully verified: no authorisation is required to connect, but we couldn't read the whole tool list to see what that exposes.
- [functional regression] Schema quality: 151 → 384
- [functional regression] Schema quality: fail → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional] This server's schema is too large to store in full, so we cannot compare its tools day to day

### 2026-09-14 (score 68, +1)

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

## MCP tools (14)

### `ryla_generate_base_image` (~87 tokens)

Generate base character images from a niche/vibe/prompt. Returns a jobId; poll with ryla_generation_status.

Input parameters:

- `niche` (string): Content niche, e.g. "fitness"
- `nsfwEnabled` (boolean): Enable unrestricted fan content generation
- `promptInput` (string): Free-form prompt text
- `vibe` (string): Overall vibe/style descriptor

### `ryla_generate_face_swap` (~91 tokens)

Swap a character face onto a reference base image. Returns the generation result.

Input parameters:

- `baseImageUrl` (string, required): Reference/base image URL to swap the face from
- `characterId` (string): Character UUID
- `nsfw` (boolean): Enable unrestricted fan content generation
- `prompt` (string, required): Prompt for the target image
- `seed` (integer): Random seed for reproducibility

### `ryla_generate_character_sheet` (~88 tokens)

Generate a multi-angle character sheet from a base image. Returns a jobId; poll with ryla_generation_status.

Input parameters:

- `angles` (array): Optional list of angle presets
- `baseImageUrl` (string, required): Base image URL for PuLID character sheet generation
- `characterId` (string): Character UUID
- `nsfw` (boolean): Enable unrestricted fan content generation

### `ryla_generation_status` (~42 tokens)

Check the status of a generation job by its jobId.

Input parameters:

- `jobId` (string, required): The jobId returned by a ryla_generate_* tool call

### `ryla_account_credits_balance` (~23 tokens)

Check the authenticated user's current RYLA credit balance.

### `ryla_account_gallery_list` (~42 tokens)

List the authenticated user's most recent generated images/jobs.

Input parameters:

- `limit` (integer): Max number of items to return (default 20, max 50)

### `ryla_list_characters` (~58 tokens)

List the authenticated user's existing characters (AI influencers) so you can pick a characterId for the other generation tools. There is no tool to CREATE a character -- that happens in the RYLA app at app.ryla.ai.

### `ryla_generate_image` (~513 tokens)

Generate Studio-quality images for an existing character with full creative control (scene, outfit, pose, lighting, expression, style). This is the primary, full-featured image tool -- prefer it over ryla_generate_base_image. Character must already exist; use ryla_list_characters to find a characterId. Returns a jobId; poll with ryla_generation_status.

Input parameters:

- `antiDetectPreset` (string): Anti-detection intensity (default moderate); advanced/maximum require Pro
- `aspectRatio` (string, required): Image aspect ratio
- `characterId` (string, required): Character UUID to generate images for
- `count` (integer): Number of images to generate
- `enableFaceSwap` (boolean): Route through face-swap for the reference image
- `environment` (string): Environment preset or description
- `expression` (string): Facial expression preset, e.g. "positive.smile"
- `lighting` (string): Lighting preset, e.g. "natural.goldenHour"
- `loraId` (string): LoRA id to use, if not the default for this character
- `loraStrength` (number): LoRA strength, 0.1-2.0
- `nsfw` (boolean): Enable unrestricted fan content generation
- `outfit` (string): Outfit description
- `poseId` (string): Pose preset id, e.g. "standing-casual"
- `promptEnhance` (boolean): Enable AI prompt enhancement (default true)
- `quality` (string): Quality tier: "standard" (HD, default) or "ultra" (4K)
- `realismStyle` (boolean): Apply realism post-processing style
- `referenceImageUrl` (string): Reference image URL for face consistency (InstantID/PuLID), as an alternative to LoRA
- `referenceMethod` (string): Reference image method (default instantid)
- `referenceStrength` (number): Reference image strength, 0.1-1.0
- `scene` (string, required): Scene preset or description
- `seed` (integer): Base seed; each image increments it
- `shotType` (string): Camera framing, e.g. "close-up-portrait", "full-body"
- `socialMediaReady` (boolean): Apply anti-AI-detection post-processing
- `stylePreset` (string): Visual style preset (default ultraRealistic)
- `useLora` (boolean): Use the character LoRA for face consistency, if trained

### `ryla_generate_video` (~175 tokens)

Generate a Studio video for an existing character (image-to-video). Character must already exist; use ryla_list_characters to find a characterId. Returns a jobId; poll with ryla_generation_status.

Input parameters:

- `aspectRatio` (string, required): Video aspect ratio
- `characterId` (string, required): Character UUID to generate video for
- `duration` (number): Video duration in seconds
- `fps` (number): Frames per second (default 24)
- `nsfw` (boolean): Enable unrestricted fan content generation
- `prompt` (string): Optional prompt/description for the video
- `realismStyle` (boolean): Apply photorealism post-processing
- `seed` (integer): Optional seed for reproducibility
- `useLora` (boolean): Use character LoRA for face consistency (default true)

### `ryla_generate_voice` (~144 tokens)

Generate speech audio (TTS) in an existing character's voice. Character must already exist; use ryla_list_characters to find a characterId.

Input parameters:

- `characterId` (string, required): Character UUID
- `emotion` (string): Emotion style for the voice
- `gender` (string): Character gender, to pick a default voice when voiceIdentityId is absent
- `speed` (number): Speech speed multiplier, 0.5-2.0
- `text` (string, required): Text to convert to speech (max 1000 chars)
- `voiceIdentityId` (string): Specific voice identity id, if known (otherwise the character default is used)

### `ryla_generate_avatar_video` (~232 tokens)

Generate a talking avatar video from a character face + an audio track (kie.ai InfiniTalk). Pro plan required. Character must already exist; use ryla_list_characters to find a characterId. Returns a jobId; poll with ryla_generation_status.

Input parameters:

- `aspectRatio` (string): Video aspect ratio (default 16:9)
- `audioUrl` (string): URL of the audio file (MP3/WAV/M4A, max 5MB, 2-60s). Required unless voiceNoteId is set.
- `characterId` (string, required): Character UUID to use as the avatar face
- `duration` (number): Video duration in seconds
- `modelTier` (string): Model quality tier (default pro)
- `prompt` (string): Optional prompt/description for the avatar video
- `sourceImageId` (string): UUID of a specific image to use as the face source. If omitted, the character base image is used.
- `voiceNoteId` (string): UUID of a saved voice note to use as the audio track instead of audioUrl

### `ryla_generate_video_swap` (~195 tokens)

Swap a character face into an existing video (face swap onto uploaded footage). Pro plan required. videoUrl must be a video you already uploaded to your RYLA account. Character must already exist; use ryla_list_characters to find a characterId. Returns a jobId; poll with ryla_generation_status.

Input parameters:

- `backgroundEnabled` (boolean): Enable a background-change prompt
- `backgroundPrompt` (string): Background description, used only when backgroundEnabled is true
- `characterId` (string, required): Character UUID whose face is swapped into the video
- `outfitEnabled` (boolean): Enable an outfit-change prompt
- `outfitPrompt` (string): Outfit description, used only when outfitEnabled is true
- `sourceType` (string): Source type (default upload)
- `videoUrl` (string, required): URL of the source video to swap (must be a RYLA-hosted storage URL you own)

### `ryla_generate_lip_sync` (~145 tokens)

Generate a talking video by lip-syncing a portrait image to an audio track (kie.ai InfiniTalk). Both portraitImageUrl and audioUrl must be RYLA-hosted URLs you own. Pro plan required. This capability may not be available on your account yet (internal rollout, pricing not finalized) -- an unavailable-feature error means it is not yet live for you.

Input parameters:

- `audioUrl` (string, required): Audio track URL (RYLA-hosted storage URL you own)
- `portraitImageUrl` (string, required): Portrait/face image URL (RYLA-hosted storage URL you own)
- `prompt` (string, required): Prompt describing the desired output (required)

### `ryla_server_info` (~22 tokens)

Get RYLA external MCP server configuration and connection info

## Diagnostics

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

## Score history

- 2026-09-27: 73
- 2026-09-26: 73
- 2026-09-25: 72
- 2026-09-24: 72
- 2026-09-23: 72
- 2026-09-22: 71
- 2026-09-21: 71
- 2026-09-20: 70
- 2026-09-19: 70
- 2026-09-18: 69
- 2026-09-17: 69
- 2026-09-16: 53
- 2026-09-15: 68
- 2026-09-14: 68
- 2026-09-13: 67
- 2026-09-12: 67
- 2026-09-11: 66
- 2026-09-10: 33
- 2026-09-09: 65
- 2026-09-08: 65
- 2026-09-07: 65
- 2026-09-06: 64
- 2026-09-05: 45

## Common questions

### What is the RYLA MCP server?

RYLA is an MCP server listed in the public MCP registry as ai.ryla/ryla. Generate AI influencer photos, face swaps, and character sheets with a consistent face. This page covers its hosted endpoint (https://mcp.ryla.ai/mcp).

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

RYLA scores 73 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 RYLA MCP server expose?

RYLA exposes 14 tools: ryla_generate_base_image, ryla_generate_face_swap, ryla_generate_character_sheet, ryla_generation_status, ryla_account_credits_balance, and 9 more. Their descriptions and schemas cost roughly 1,857 tokens of context every time the server is loaded.

### Does the RYLA MCP server require authentication?

No. We connected to RYLA without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

### Is the RYLA MCP server still maintained?

RYLA is still listed as active in the MCP registry. We last reached this channel on 27 September 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://mcp.ryla.ai/mcp
- Authorisation metadata: https://mcp.ryla.ai/.well-known/oauth-protected-resource/mcp
- Website: https://ryla.ai/en/mcp
- Changelog RSS feed: https://verifymcp.io/servers/ai-ryla-ryla/mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/ai-ryla-ryla/mcp.json
- HTML version of this page: https://verifymcp.io/servers/ai-ryla-ryla/mcp
