# RYLA

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

- name: ai.ryla/ryla
- version: 1.0.0
- connection class: R1 (autonomous)
- trust: 80/100 flags: no-repository
- quality: 73/100 (needs work)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/ai.ryla%2Fryla
- tools: https://api.protogrid.dev/v1/servers/ai.ryla%2Fryla/tools

**An agent can connect on its own if it already holds `RYLA_TOKEN`.** Remote endpoint behind a static API key or header. The registry never sees the value; the agent fills the placeholder.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "ryla": {
      "type": "http",
      "url": "https://mcp.ryla.ai/mcp",
      "headers": {
        "Authorization": "Bearer ${RYLA_TOKEN}"
      }
    }
  }
}
```

Placeholders to fill: `${RYLA_TOKEN}`.

## Trust

- hygiene: 80
- liveness: 100
- freshness: 85
- provenance: 55
- drivers: +dns-namespace +website +reachable +uptime-100% ~updated-46d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 73/100 (needs work)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 71 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- fail `tools.annotations`: no tool declares readOnlyHint or destructiveHint, so clients cannot tell safe calls from risky ones
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: ryla_generate_base_image (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); ryla_generation_status (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); ryla_generate_face_swap (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); …
- pass `tools.token_cost`: about 3,055 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 75 (weight 15)

- warn `stability.changes`: 14 tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 14, about 3,055 tokens to load them all
- tool set hash: d422b63a11697b9d8aa861eb31a90cd6
- tools last changed: 2026-09-23T21:34:57.905Z
- badge: [![protogrid quality](https://protogrid.dev/badge/ai.ryla/ryla.svg)](https://protogrid.dev/servers/ai.ryla/ryla)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-09-23 `ryla_server_info` added
  - Get RYLA external MCP server configuration and connection info
- 2026-09-23 `ryla_generate_lip_sync` added
  - 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.
- 2026-09-23 `ryla_generate_video_swap` added
  - 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.
- 2026-09-23 `ryla_generate_avatar_video` added
  - 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.
- 2026-09-23 `ryla_generate_voice` added
  - Generate speech audio (TTS) in an existing character's voice. Character must already exist; use ryla_list_characters to find a characterId.
- 2026-09-23 `ryla_generate_video` added
  - 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.
- 2026-09-23 `ryla_generate_image` added
  - 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.
- 2026-09-23 `ryla_list_characters` added
  - 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.
- 2026-09-23 `ryla_account_gallery_list` added
  - List the authenticated user's most recent generated images/jobs.
- 2026-09-23 `ryla_account_credits_balance` added
  - Check the authenticated user's current RYLA credit balance.

Full history: https://api.protogrid.dev/v1/servers/ai.ryla%2Fryla/changes

## Remotes

- https://mcp.ryla.ai/mcp (streamable-http, auth api_key ${RYLA_TOKEN}, reachable true, uptime30d 1)

## Packages

_none_

## Tools (14)

- `ryla_account_credits_balance`: Check the authenticated user's current RYLA credit balance.
- `ryla_account_gallery_list`: List the authenticated user's most recent generated images/jobs.
- `ryla_generate_avatar_video`: 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.
- `ryla_generate_base_image`: Generate base character images from a niche/vibe/prompt. Returns a jobId; poll with ryla_generation_status.
- `ryla_generate_character_sheet`: Generate a multi-angle character sheet from a base image. Returns a jobId; poll with ryla_generation_status.
- `ryla_generate_face_swap`: Swap a character face onto a reference base image. Returns the generation result.
- `ryla_generate_image`: 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.
- `ryla_generate_lip_sync`: 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.
- `ryla_generate_video`: 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.
- `ryla_generate_video_swap`: 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.
- `ryla_generate_voice`: Generate speech audio (TTS) in an existing character's voice. Character must already exist; use ryla_list_characters to find a characterId.
- `ryla_generation_status`: Check the status of a generation job by its jobId.
- `ryla_list_characters`: 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_server_info`: Get RYLA external MCP server configuration and connection info
