Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,547Letters: 14Defects: 1,324counted 3 min ago
teppi

Server definition

Hash
sha256:67e43d855fdc8a93a69daf89fb11d299db9ef46f0bb70b7011555666ad337e3a
What it is
What a remote MCP server returned when asked what it offers: 14 tools

The blob, as servednamed by its sha256

{ "instructions": "RYLA MCP Server - Generate AI influencer content directly from your assistant.\n\nIMPORTANT: this server generates content FOR characters (AI influencers) that\nalready exist on the account. There is NO tool to create a new character --\ncharacter creation (appearance, voice, persona) is an app.ryla.ai-only flow\nwith its own guided wizard. If asked to \"create an influencer\" or similar,\ntell the user to set that up in the app first, then come back here to\ngenerate content for it. Use ryla_list_characters to see what already exists.\n\n**Discovery:**\n- ryla_list_characters: list your existing characters (no creation tool exists)\n\n**Generation (primary, full-featured):**\n- ryla_generate_image: full Studio image generation (scene/outfit/pose/\n lighting/expression/style/LoRA/reference-face-consistency) - prefer this\n- ryla_generate_video: image-to-video generation\n- ryla_generate_voice: text-to-speech in a character's voice\n\n**Generation (narrower, v1):**\n- ryla_generate_base_image: generate base character images from a niche/vibe\n- ryla_generate_face_swap: swap a character face onto a reference image\n- ryla_generate_character_sheet: generate a multi-angle character sheet\n\n**Status & account:**\n- ryla_generation_status: check a job's status by jobId\n- ryla_account_credits_balance: check your current RYLA credit balance\n- ryla_account_gallery_list: list your most recent generated images/jobs\n\nAuthenticate with a personal API key from app.ryla.ai (Settings > API Keys),\nset as the RYLA_MCP_API_KEY environment variable. Each key is scoped to your\nown account; credits are deducted from your own balance the same way they\nare in the RYLA web app.", "tools": [ { "description": "Check the authenticated user's current RYLA credit balance.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": {}, "type": "object" }, "name": "ryla_account_credits_balance", "outputSchema": null }, { "description": "List the authenticated user's most recent generated images/jobs.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "limit": { "description": "Max number of items to return (default 20, max 50)", "maximum": 50, "minimum": 1, "type": "integer" } }, "type": "object" }, "name": "ryla_account_gallery_list", "outputSchema": null }, { "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.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "aspectRatio": { "description": "Video aspect ratio (default 16:9)", "enum": [ "1:1", "9:16", "16:9" ], "type": "string" }, "audioUrl": { "description": "URL of the audio file (MP3/WAV/M4A, max 5MB, 2-60s). Required unless voiceNoteId is set.", "format": "uri", "type": "string" }, "characterId": { "description": "Character UUID to use as the avatar face", "format": "uuid", "type": "string" }, "duration": { "default": 5, "description": "Video duration in seconds", "enum": [ 5, 10 ], "type": "number" }, "modelTier": { "description": "Model quality tier (default pro)", "enum": [ "standard", "pro" ], "type": "string" }, "prompt": { "description": "Optional prompt/description for the avatar video", "type": "string" }, "sourceImageId": { "description": "UUID of a specific image to use as the face source. If omitted, the character base image is used.", "format": "uuid", "type": "string" }, "voiceNoteId": { "description": "UUID of a saved voice note to use as the audio track instead of audioUrl", "format": "uuid", "type": "string" } }, "required": [ "characterId" ], "type": "object" }, "name": "ryla_generate_avatar_video", "outputSchema": null }, { "description": "Generate base character images from a niche/vibe/prompt. Returns a jobId; poll with ryla_generation_status.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "niche": { "description": "Content niche, e.g. \"fitness\"", "type": "string" }, "nsfwEnabled": { "default": false, "description": "Enable unrestricted fan content generation", "type": "boolean" }, "promptInput": { "description": "Free-form prompt text", "type": "string" }, "vibe": { "description": "Overall vibe/style descriptor", "type": "string" } }, "type": "object" }, "name": "ryla_generate_base_image", "outputSchema": null }, { "description": "Generate a multi-angle character sheet from a base image. Returns a jobId; poll with ryla_generation_status.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "angles": { "description": "Optional list of angle presets", "items": { "type": "string" }, "type": "array" }, "baseImageUrl": { "description": "Base image URL for PuLID character sheet generation", "format": "uri", "type": "string" }, "characterId": { "description": "Character UUID", "format": "uuid", "type": "string" }, "nsfw": { "default": false, "description": "Enable unrestricted fan content generation", "type": "boolean" } }, "required": [ "baseImageUrl" ], "type": "object" }, "name": "ryla_generate_character_sheet", "outputSchema": null }, { "description": "Swap a character face onto a reference base image. Returns the generation result.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "baseImageUrl": { "description": "Reference/base image URL to swap the face from", "format": "uri", "type": "string" }, "characterId": { "description": "Character UUID", "format": "uuid", "type": "string" }, "nsfw": { "default": false, "description": "Enable unrestricted fan content generation", "type": "boolean" }, "prompt": { "description": "Prompt for the target image", "type": "string" }, "seed": { "description": "Random seed for reproducibility", "type": "integer" } }, "required": [ "baseImageUrl", "prompt" ], "type": "object" }, "name": "ryla_generate_face_swap", "outputSchema": null }, { "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.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "antiDetectPreset": { "description": "Anti-detection intensity (default moderate); advanced/maximum require Pro", "enum": [ "subtle", "moderate", "aggressive", "advanced", "maximum" ], "type": "string" }, "aspectRatio": { "description": "Image aspect ratio", "enum": [ "1:1", "9:16", "2:3", "4:5", "3:4", "4:3", "16:9", "3:2" ], "type": "string" }, "characterId": { "description": "Character UUID to generate images for", "format": "uuid", "type": "string" }, "count": { "default": 1, "description": "Number of images to generate", "maximum": 10, "minimum": 1, "type": "integer" }, "enableFaceSwap": { "description": "Route through face-swap for the reference image", "type": "boolean" }, "environment": { "description": "Environment preset or description", "type": "string" }, "expression": { "description": "Facial expression preset, e.g. \"positive.smile\"", "type": "string" }, "lighting": { "description": "Lighting preset, e.g. \"natural.goldenHour\"", "type": "string" }, "loraId": { "description": "LoRA id to use, if not the default for this character", "type": "string" }, "loraStrength": { "description": "LoRA strength, 0.1-2.0", "maximum": 2, "minimum": 0.1, "type": "number" }, "nsfw": { "default": false, "description": "Enable unrestricted fan content generation", "type": "boolean" }, "outfit": { "description": "Outfit description", "type": "string" }, "poseId": { "description": "Pose preset id, e.g. \"standing-casual\"", "type": "string" }, "promptEnhance": { "description": "Enable AI prompt enhancement (default true)", "type": "boolean" }, "quality": { "description": "Quality tier: \"standard\" (HD, default) or \"ultra\" (4K)", "type": "string" }, "realismStyle": { "description": "Apply realism post-processing style", "type": "boolean" }, "referenceImageUrl": { "description": "Reference image URL for face consistency (InstantID/PuLID), as an alternative to LoRA", "type": "string" }, "referenceMethod": { "description": "Reference image method (default instantid)", "enum": [ "instantid", "pulid", "ipadapter" ], "type": "string" }, "referenceStrength": { "description": "Reference image strength, 0.1-1.0", "maximum": 1, "minimum": 0.1, "type": "number" }, "scene": { "description": "Scene preset or description", "type": "string" }, "seed": { "description": "Base seed; each image increments it", "type": "integer" }, "shotType": { "description": "Camera framing, e.g. \"close-up-portrait\", \"full-body\"", "type": "string" }, "socialMediaReady": { "description": "Apply anti-AI-detection post-processing", "type": "boolean" }, "stylePreset": { "description": "Visual style preset (default ultraRealistic)", "enum": [ "ultraRealistic", "instagramReady", "editorialFashion", "casualSelfie", "professionalPortrait" ], "type": "string" }, "useLora": { "description": "Use the character LoRA for face consistency, if trained", "type": "boolean" } }, "required": [ "characterId", "scene", "aspectRatio" ], "type": "object" }, "name": "ryla_generate_image", "outputSchema": null }, { "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.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "audioUrl": { "description": "Audio track URL (RYLA-hosted storage URL you own)", "format": "uri", "type": "string" }, "portraitImageUrl": { "description": "Portrait/face image URL (RYLA-hosted storage URL you own)", "format": "uri", "type": "string" }, "prompt": { "description": "Prompt describing the desired output (required)", "minLength": 1, "type": "string" } }, "required": [ "portraitImageUrl", "audioUrl", "prompt" ], "type": "object" }, "name": "ryla_generate_lip_sync", "outputSchema": null }, { "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.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "aspectRatio": { "description": "Video aspect ratio", "enum": [ "1:1", "9:16", "16:9" ], "type": "string" }, "characterId": { "description": "Character UUID to generate video for", "format": "uuid", "type": "string" }, "duration": { "default": 4, "description": "Video duration in seconds", "enum": [ 2, 4, 5, 6, 8 ], "type": "number" }, "fps": { "description": "Frames per second (default 24)", "enum": [ 24, 30 ], "type": "number" }, "nsfw": { "default": false, "description": "Enable unrestricted fan content generation", "type": "boolean" }, "prompt": { "description": "Optional prompt/description for the video", "type": "string" }, "realismStyle": { "description": "Apply photorealism post-processing", "type": "boolean" }, "seed": { "description": "Optional seed for reproducibility", "type": "integer" }, "useLora": { "description": "Use character LoRA for face consistency (default true)", "type": "boolean" } }, "required": [ "characterId", "aspectRatio" ], "type": "object" }, "name": "ryla_generate_video", "outputSchema": null }, { "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.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "backgroundEnabled": { "description": "Enable a background-change prompt", "type": "boolean" }, "backgroundPrompt": { "description": "Background description, used only when backgroundEnabled is true", "type": "string" }, "characterId": { "description": "Character UUID whose face is swapped into the video", "format": "uuid", "type": "string" }, "outfitEnabled": { "description": "Enable an outfit-change prompt", "type": "boolean" }, "outfitPrompt": { "description": "Outfit description, used only when outfitEnabled is true", "type": "string" }, "sourceType": { "description": "Source type (default upload)", "enum": [ "instagram", "tiktok", "youtube", "upload" ], "type": "string" }, "videoUrl": { "description": "URL of the source video to swap (must be a RYLA-hosted storage URL you own)", "format": "uri", "type": "string" } }, "required": [ "characterId", "videoUrl" ], "type": "object" }, "name": "ryla_generate_video_swap", "outputSchema": null }, { "description": "Generate speech audio (TTS) in an existing character's voice. Character must already exist; use ryla_list_characters to find a characterId.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "characterId": { "description": "Character UUID", "format": "uuid", "type": "string" }, "emotion": { "description": "Emotion style for the voice", "enum": [ "neutral", "happy", "sad", "whisper", "laugh", "seductive", "angry" ], "type": "string" }, "gender": { "description": "Character gender, to pick a default voice when voiceIdentityId is absent", "enum": [ "female", "male" ], "type": "string" }, "speed": { "description": "Speech speed multiplier, 0.5-2.0", "maximum": 2, "minimum": 0.5, "type": "number" }, "text": { "description": "Text to convert to speech (max 1000 chars)", "maxLength": 1000, "type": "string" }, "voiceIdentityId": { "description": "Specific voice identity id, if known (otherwise the character default is used)", "type": "string" } }, "required": [ "characterId", "text" ], "type": "object" }, "name": "ryla_generate_voice", "outputSchema": null }, { "description": "Check the status of a generation job by its jobId.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "jobId": { "description": "The jobId returned by a ryla_generate_* tool call", "type": "string" } }, "required": [ "jobId" ], "type": "object" }, "name": "ryla_generation_status", "outputSchema": null }, { "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.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": {}, "type": "object" }, "name": "ryla_list_characters", "outputSchema": null }, { "description": "Get RYLA external MCP server configuration and connection info", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": {}, "type": "object" }, "name": "ryla_server_info", "outputSchema": null } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:67e43d855fdc8a93a69daf89fb11d299db9ef46f0bb70b7011555666ad337e3a | sha256sum