RYLA

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

¿Debería usar esto?

Calidad y seguridad

A
Calidad de la descripción
98%
Integridad del esquema
84%
Calidad de los nombres
80%
Riesgo de envenenamiento
100%
Coincidencia de permisos
100%
Cumplimiento del protocolo
100%

Hallazgos (1)

  • LOWTool 'ryla_generate_face_swap' description lacks action verben ryla_generate_face_swap

Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.

Costo de contexto

~2,918Tokens (definiciones de herramientas)
~2.0 KBTamaño de respuesta típico
Impacto significativo en la atención (2.28% del contexto de 128k)

Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.

Instalar

Instalación con un clic

Agrega esto a tu archivo `claude_desktop_config.json`:

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

Puntos de conexión remotos

https://mcp.ryla.ai/mcpstreamable-http

Qué puede hacer

Inventario de herramientas

Herramientas (14)

🟢 Solo lectura🟡 Escritura🔴 Eliminación⚪ Desconocido
⚪ryla_generate_base_image(niche, vibe, nsfwEnabled, promptInput)

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

Esquema de entrada

{
  "type": "object",
  "properties": {
    "niche": {
      "type": "string",
      "description": "Content niche, e.g. \"fitness\""
    },
    "vibe": {
      "type": "string",
      "description": "Overall vibe/style descriptor"
    },
    "nsfwEnabled": {
      "type": "boolean",
      "default": false,
      "description": "Enable unrestricted fan content generation"
    },
    "promptInput": {
      "type": "string",
      "description": "Free-form prompt text"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
⚪ryla_generate_face_swap(characterId, baseImageUrl, prompt, nsfw, seed)

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

Esquema de entrada

{
  "type": "object",
  "properties": {
    "characterId": {
      "type": "string",
      "format": "uuid",
      "description": "Character UUID"
    },
    "baseImageUrl": {
      "type": "string",
      "format": "uri",
      "description": "Reference/base image URL to swap the face from"
    },
    "prompt": {
      "type": "string",
      "description": "Prompt for the target image"
    },
    "nsfw": {
      "type": "boolean",
      "default": false,
      "description": "Enable unrestricted fan content generation"
    },
    "seed": {
      "type": "integer",
      "description": "Random seed for reproducibility"
    }
  },
  "required": [
    "baseImageUrl",
    "prompt"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
⚪ryla_generate_character_sheet(characterId, baseImageUrl, nsfw, angles)

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

Esquema de entrada

{
  "type": "object",
  "properties": {
    "characterId": {
      "type": "string",
      "format": "uuid",
      "description": "Character UUID"
    },
    "baseImageUrl": {
      "type": "string",
      "format": "uri",
      "description": "Base image URL for PuLID character sheet generation"
    },
    "nsfw": {
      "type": "boolean",
      "default": false,
      "description": "Enable unrestricted fan content generation"
    },
    "angles": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Optional list of angle presets"
    }
  },
  "required": [
    "baseImageUrl"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢ryla_generation_status(jobId)

Check the status of a generation job by its jobId.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "jobId": {
      "type": "string",
      "description": "The jobId returned by a ryla_generate_* tool call"
    }
  },
  "required": [
    "jobId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢ryla_account_credits_balance

Check the authenticated user's current RYLA credit balance.

Esquema de entrada

{
  "type": "object",
  "properties": {},
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢ryla_account_gallery_list(limit)

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

Esquema de entrada

{
  "type": "object",
  "properties": {
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50,
      "description": "Max number of items to return (default 20, max 50)"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡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.

Esquema de entrada

{
  "type": "object",
  "properties": {},
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢ryla_generate_image(characterId, scene, environment, outfit, poseId, ...)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "characterId": {
      "type": "string",
      "format": "uuid",
      "description": "Character UUID to generate images for"
    },
    "scene": {
      "type": "string",
      "description": "Scene preset or description"
    },
    "environment": {
      "type": "string",
      "description": "Environment preset or description"
    },
    "outfit": {
      "type": "string",
      "description": "Outfit description"
    },
    "poseId": {
      "type": "string",
      "description": "Pose preset id, e.g. \"standing-casual\""
    },
    "lighting": {
      "type": "string",
      "description": "Lighting preset, e.g. \"natural.goldenHour\""
    },
    "expression": {
      "type": "string",
      "description": "Facial expression preset, e.g. \"positive.smile\""
    },
    "shotType": {
      "type": "string",
      "description": "Camera framing, e.g. \"close-up-portrait\", \"full-body\""
    },
    "aspectRatio": {
      "type": "string",
      "enum": [
        "1:1",
        "9:16",
        "2:3",
        "4:5",
        "3:4",
        "4:3",
        "16:9",
        "3:2"
      ],
      "description": "Image aspect ratio"
    },
    "quality": {
      "type": "string",
      "description": "Quality tier: \"standard\" (HD, default) or \"ultra\" (4K)"
    },
    "count": {
      "type": "integer",
      "minimum": 1,
      "maximum": 10,
      "default": 1,
      "description": "Number of images to generate"
    },
    "nsfw": {
      "type": "boolean",
      "default": false,
      "description": "Enable unrestricted fan content generation"
    },
    "promptEnhance": {
      "type": "boolean",
      "description": "Enable AI prompt enhancement (default true)"
    },
    "seed": {
      "type": "integer",
      "description": "Base seed; each image increments it"
    },
    "useLora": {
      "type": "boolean",
      "description": "Use the character LoRA for face consistency, if trained"
    },
    "loraId": {
      "type": "string",
      "description": "LoRA id to use, if not the default for this character"
    },
    "loraStrength": {
      "type": "number",
      "minimum": 0.1,
      "maximum": 2,
      "description": "LoRA strength, 0.1-2.0"
    },
    "referenceImageUrl": {
      "type": "string",
      "description": "Reference image URL for face consistency (InstantID/PuLID), as an alternative to LoRA"
    },
    "enableFaceSwap": {
      "type": "boolean",
      "description": "Route through face-swap for the reference image"
    },
    "referenceStrength": {
      "type": "number",
      "minimum": 0.1,
      "maximum": 1,
      "description": "Reference image strength, 0.1-1.0"
    },
    "referenceMethod": {
      "type": "string",
      "enum": [
        "instantid",
        "pulid",
        "ipadapter"
      ],
      "description": "Reference image method (default instantid)"
    },
    "socialMediaReady": {
      "type": "boolean",
      "description": "Apply anti-AI-detection post-processing"
    },
    "realismStyle": {
      "type": "boolean",
      "description": "Apply realism post-processing style"
    },
    "stylePreset": {
      "type": "string",
      "enum": [
        "ultraRealistic",
        "instagramReady",
        "editorialFashion",
        "casualSelfie",
        "professionalPortrait"
      ],
      "description": "Visual style preset (default ultraRealistic)"
    },
    "antiDetectPreset": {
      "type": "string",
      "enum": [
        "subtle",
        "moderate",
        "aggressive",
        "advanced",
        "maximum"
      ],
      "description": "Anti-detection intensity (default moderate); advanced/maximum require Pro"
    }
  },
  "required": [
    "characterId",
    "scene",
    "aspectRatio"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢ryla_generate_video(characterId, prompt, duration, fps, aspectRatio, ...)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "characterId": {
      "type": "string",
      "format": "uuid",
      "description": "Character UUID to generate video for"
    },
    "prompt": {
      "type": "string",
      "description": "Optional prompt/description for the video"
    },
    "duration": {
      "type": "number",
      "enum": [
        2,
        4,
        5,
        6,
        8
      ],
      "default": 4,
      "description": "Video duration in seconds"
    },
    "fps": {
      "type": "number",
      "enum": [
        24,
        30
      ],
      "description": "Frames per second (default 24)"
    },
    "aspectRatio": {
      "type": "string",
      "enum": [
        "1:1",
        "9:16",
        "16:9"
      ],
      "description": "Video aspect ratio"
    },
    "nsfw": {
      "type": "boolean",
      "default": false,
      "description": "Enable unrestricted fan content generation"
    },
    "seed": {
      "type": "integer",
      "description": "Optional seed for reproducibility"
    },
    "useLora": {
      "type": "boolean",
      "description": "Use character LoRA for face consistency (default true)"
    },
    "realismStyle": {
      "type": "boolean",
      "description": "Apply photorealism post-processing"
    }
  },
  "required": [
    "characterId",
    "aspectRatio"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢ryla_generate_voice(characterId, text, emotion, speed, voiceIdentityId, ...)

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

Esquema de entrada

{
  "type": "object",
  "properties": {
    "characterId": {
      "type": "string",
      "format": "uuid",
      "description": "Character UUID"
    },
    "text": {
      "type": "string",
      "maxLength": 1000,
      "description": "Text to convert to speech (max 1000 chars)"
    },
    "emotion": {
      "type": "string",
      "enum": [
        "neutral",
        "happy",
        "sad",
        "whisper",
        "laugh",
        "seductive",
        "angry"
      ],
      "description": "Emotion style for the voice"
    },
    "speed": {
      "type": "number",
      "minimum": 0.5,
      "maximum": 2,
      "description": "Speech speed multiplier, 0.5-2.0"
    },
    "voiceIdentityId": {
      "type": "string",
      "description": "Specific voice identity id, if known (otherwise the character default is used)"
    },
    "gender": {
      "type": "string",
      "enum": [
        "female",
        "male"
      ],
      "description": "Character gender, to pick a default voice when voiceIdentityId is absent"
    }
  },
  "required": [
    "characterId",
    "text"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢ryla_generate_avatar_video(characterId, audioUrl, voiceNoteId, prompt, duration, ...)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "characterId": {
      "type": "string",
      "format": "uuid",
      "description": "Character UUID to use as the avatar face"
    },
    "audioUrl": {
      "type": "string",
      "format": "uri",
      "description": "URL of the audio file (MP3/WAV/M4A, max 5MB, 2-60s). Required unless voiceNoteId is set."
    },
    "voiceNoteId": {
      "type": "string",
      "format": "uuid",
      "description": "UUID of a saved voice note to use as the audio track instead of audioUrl"
    },
    "prompt": {
      "type": "string",
      "description": "Optional prompt/description for the avatar video"
    },
    "duration": {
      "type": "number",
      "enum": [
        5,
        10
      ],
      "default": 5,
      "description": "Video duration in seconds"
    },
    "aspectRatio": {
      "type": "string",
      "enum": [
        "1:1",
        "9:16",
        "16:9"
      ],
      "description": "Video aspect ratio (default 16:9)"
    },
    "modelTier": {
      "type": "string",
      "enum": [
        "standard",
        "pro"
      ],
      "description": "Model quality tier (default pro)"
    },
    "sourceImageId": {
      "type": "string",
      "format": "uuid",
      "description": "UUID of a specific image to use as the face source. If omitted, the character base image is used."
    }
  },
  "required": [
    "characterId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢ryla_generate_video_swap(characterId, videoUrl, sourceType, outfitEnabled, outfitPrompt, ...)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "characterId": {
      "type": "string",
      "format": "uuid",
      "description": "Character UUID whose face is swapped into the video"
    },
    "videoUrl": {
      "type": "string",
      "format": "uri",
      "description": "URL of the source video to swap (must be a RYLA-hosted storage URL you own)"
    },
    "sourceType": {
      "type": "string",
      "enum": [
        "instagram",
        "tiktok",
        "youtube",
        "upload"
      ],
      "description": "Source type (default upload)"
    },
    "outfitEnabled": {
      "type": "boolean",
      "description": "Enable an outfit-change prompt"
    },
    "outfitPrompt": {
      "type": "string",
      "description": "Outfit description, used only when outfitEnabled is true"
    },
    "backgroundEnabled": {
      "type": "boolean",
      "description": "Enable a background-change prompt"
    },
    "backgroundPrompt": {
      "type": "string",
      "description": "Background description, used only when backgroundEnabled is true"
    }
  },
  "required": [
    "characterId",
    "videoUrl"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
⚪ryla_generate_lip_sync(portraitImageUrl, audioUrl, prompt)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "portraitImageUrl": {
      "type": "string",
      "format": "uri",
      "description": "Portrait/face image URL (RYLA-hosted storage URL you own)"
    },
    "audioUrl": {
      "type": "string",
      "format": "uri",
      "description": "Audio track URL (RYLA-hosted storage URL you own)"
    },
    "prompt": {
      "type": "string",
      "minLength": 1,
      "description": "Prompt describing the desired output (required)"
    }
  },
  "required": [
    "portraitImageUrl",
    "audioUrl",
    "prompt"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢ryla_server_info

Get RYLA external MCP server configuration and connection info

Esquema de entrada

{
  "type": "object",
  "properties": {},
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Prompts recomendados

list_items
List all [items] available in RYLA
Herramientas esperadas: ryla_account_gallery_list
browse_collection
Show me the [collection] from RYLA
Herramientas esperadas: ryla_account_gallery_list

Comunidad

Califica este servidor

Evidencia

Observaciones recientes

verificadoversión no registrada14 herramientas
verificadoversión no registrada14 herramientas