RYLA
Generate AI influencer photos, face swaps, and character sheets with a consistent face.
사용해야 할까요
품질 및 안전성
발견 사항 (1)
- LOWryla_generate_face_swap에서
도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.
컨텍스트 비용
이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.
설치
원클릭 설치
`claude_desktop_config.json` 파일에 다음을 추가하세요:
{
"mcpServers": {
"ryla": {
"url": "https://mcp.ryla.ai/mcp"
}
}
}원격 엔드포인트
https://mcp.ryla.ai/mcpstreamable-http할 수 있는 일
도구 목록
도구 (14)
⚪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.
입력 스키마
{
"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.
입력 스키마
{
"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.
입력 스키마
{
"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.
입력 스키마
{
"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.
입력 스키마
{
"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.
입력 스키마
{
"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.
입력 스키마
{
"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.
입력 스키마
{
"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.
입력 스키마
{
"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.
입력 스키마
{
"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.
입력 스키마
{
"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.
입력 스키마
{
"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.
입력 스키마
{
"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
입력 스키마
{
"type": "object",
"properties": {},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}권장 프롬프트
ryla_account_gallery_listryla_account_gallery_list커뮤니티
증거