{"name":"ai.ryla/ryla","slug":"ryla","title":"RYLA","description":"Generate AI influencer photos, face swaps, and character sheets with a consistent face.","url":"https://mcp.market/server/ryla","rating":null,"grade":"C","score":67,"certified":false,"status":"active","category":"productivity","tags":["productivity"],"presence":{"score":8,"stars":null,"forks":null,"downloads_week":null,"last_push_at":null,"license":null},"uptime":{"percent":100,"checks":6,"ok":6,"last_checked_at":"2026-09-20T19:31:15.148Z","last_ok_at":"2026-09-20T19:31:15.148Z","latency_ms":381},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":null,"website":"https://ryla.ai/en/mcp","version":"1.0.0","remotes":[{"type":"streamable-http","url":"https://mcp.ryla.ai/mcp","headers":[{"description":"Bearer token using a personal RYLA MCP API key, created at app.ryla.ai under Settings > API Keys. Each key is scoped to your own account and generations spend that account's credits.","isRequired":true,"isSecret":true,"name":"Authorization"}]}],"packages":[],"tools":[{"name":"ryla_account_credits_balance","description":"Check the authenticated user's current RYLA credit balance.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"ryla_account_gallery_list","description":"List the authenticated user's most recent generated images/jobs.","write_action":false,"price_micros":0,"input_schema":{"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#"}},{"name":"ryla_generate_avatar_video","description":"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.","write_action":false,"price_micros":0,"input_schema":{"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#"}},{"name":"ryla_generate_base_image","description":"Generate base character images from a niche/vibe/prompt. Returns a jobId; poll with ryla_generation_status.","write_action":false,"price_micros":0,"input_schema":{"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#"}},{"name":"ryla_generate_character_sheet","description":"Generate a multi-angle character sheet from a base image. Returns a jobId; poll with ryla_generation_status.","write_action":false,"price_micros":0,"input_schema":{"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#"}},{"name":"ryla_generate_face_swap","description":"Swap a character face onto a reference base image. Returns the generation result.","write_action":false,"price_micros":0,"input_schema":{"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#"}},{"name":"ryla_generate_image","description":"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.","write_action":false,"price_micros":0,"input_schema":{"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#"}},{"name":"ryla_generate_lip_sync","description":"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.","write_action":false,"price_micros":0,"input_schema":{"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#"}},{"name":"ryla_generate_video","description":"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.","write_action":false,"price_micros":0,"input_schema":{"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#"}},{"name":"ryla_generate_video_swap","description":"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.","write_action":false,"price_micros":0,"input_schema":{"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#"}},{"name":"ryla_generate_voice","description":"Generate speech audio (TTS) in an existing character's voice. Character must already exist; use ryla_list_characters to find a characterId.","write_action":false,"price_micros":0,"input_schema":{"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#"}},{"name":"ryla_generation_status","description":"Check the status of a generation job by its jobId.","write_action":false,"price_micros":0,"input_schema":{"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#"}},{"name":"ryla_list_characters","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"ryla_server_info","description":"Get RYLA external MCP server configuration and connection info","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}}],"scan":{"score":67,"grade":"C","scanned_at":"2026-09-20T11:39:43.965Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-20T11:39:43.860Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 1368ms"]},"poisoning":{"score":15,"max":15,"notes":["14 tool descriptions checked"]},"auth":{"score":8,"max":15,"notes":["API key sent as a header"]},"maintenance":{"score":3,"max":15,"notes":["no repository listed"]},"identity":{"score":4,"max":10,"notes":["verified namespace with website, no repo"]}},"findings":[{"id":"maint.no-repo","severity":"low","component":"maintenance","title":"No source repository listed"}],"inputs":{"probes":[{"url":"https://mcp.ryla.ai/mcp","reachable":true,"authRequired":false,"latencyMs":1368,"serverInfo":{"name":"ryla","version":"1.0.0"}}],"packages":[],"repo":{"found":false},"icon":{"url":"https://ryla.ai/favicon/apple-touch-icon.png","source":"site","width":180,"height":180},"presence":{"stars":null,"forks":null,"downloadsWeek":null,"license":null,"lastPushAt":null,"score":8}}}},"grade_history":[],"reviews":[]}