Easy-Peasy.AI MCP
An official Model Context Protocol server that exposes Easy-Peasy.AI's full suite of generative AI tools, including text generation, image creation, video production, and audio transcription, directly within AI chat clients like ChatGPT and Claude.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://easy-peasy.ai/mcpWhat you can do with it
- Generate text using 200+ writing templates
- Create images with models like Seedream 5.0 Pro
- Generate videos from text or images
- Transcribe audio and video files
Source and maintenance
- Maintenance checked
Protocol and capabilities
- Server
- easy-peasy-ai 1.3.2
- MCP protocol
- 2025-06-18
- Tools
- 13 advertised
- Resources
- 1 advertised
- Resource templates
- 0 advertised
- Prompts
- Not advertised
{
"tools": {},
"resources": {}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
13 advertised
get_account — Check account connection
Check connection status only when the user explicitly asks whether Easy-Peasy.AI is connected. Returns only a boolean. Do not call for general knowledge, account deletion, or requests for credentials or personal details; those requests are unsupported by this tool.
{
"type": "object",
"properties": {},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}list_templates — List writing templates
List a page of Easy-Peasy.AI writing templates (presets), optionally filtered by category. Returns slug, title, description, and category, plus total, categories, and next_offset (null on the last page). Use get_template to inspect a known slug directly, then generate_text to run it.
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"default": 20,
"maximum": 50,
"minimum": 1,
"description": "Maximum results to return (default 20, maximum 50)."
},
"offset": {
"type": "integer",
"default": 0,
"minimum": 0,
"description": "Start position. Use next_offset from the previous result to read another page."
},
"category": {
"type": "string",
"description": "Optional category name to filter templates by."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_template — Get writing template
Get one text generation template by slug, including its input fields (name, label, type, options). Field names like "keywords" and "extra1".."extra14" map directly onto generate_text parameters.
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "Template slug from list_templates."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}generate_text — Generate text
Generate text with an Easy-Peasy.AI template (preset). Synchronous — returns the generated text. Uses the account word quota and requires available API token allowance. Call get_template first to learn which fields a template accepts; pass template-specific fields via extra_fields (e.g. {"extra1": "..."}).
{
"type": "object",
"required": [
"preset"
],
"properties": {
"tone": {
"type": "string",
"description": "Optional tone of voice, e.g. \"Friendly\"."
},
"preset": {
"type": "string",
"description": "Template slug, e.g. \"blog-post-intro\" (see list_templates)."
},
"outputs": {
"type": "number",
"description": "How many variations to generate (default 1)."
},
"keywords": {
"type": "string",
"description": "Main topic / input text for the template. Required by almost all templates."
},
"language": {
"type": "string",
"description": "Output language name in English, e.g. \"English\", \"Spanish\"."
},
"extra_fields": {
"type": "object",
"description": "Template-specific fields keyed by field name from get_template, e.g. {\"extra1\": \"value\"}.",
"additionalProperties": {
"type": "string"
}
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}generate_image — Generate or edit image
Generate or edit an image with Easy-Peasy.AI. Synchronous — returns image URL(s) when generation finishes (can take up to a few minutes). Uses image credits and requires a paid plan for API access. To edit existing images, pass their URLs in source_images; model then picks the edit model. display_media shows the returned image IDs in an embedded gallery.
{
"type": "object",
"required": [
"prompt"
],
"properties": {
"model": {
"type": "string",
"description": "Image model name. For new images, e.g. \"Nano Banana 2\" (default), \"Nano Banana Pro\", \"FLUX.2 [max]\", \"OpenAI GPT Image 2.5 Flare Medium\", \"OpenAI GPT Image 2 Medium\", \"Seedream 5.0 Pro\". With source_images, model also picks the edit model, so it must be one of the edit models (a subset), e.g. \"Nano Banana 2\", \"Nano Banana Pro\", \"OpenAI GPT Image 2.5 Flare Medium\", \"OpenAI GPT Image 2.5 Sunburst Medium\", \"Seedream 5.0 Pro\", \"FLUX.2 [max]\" or \"Qwen Image\"; any other name is rejected with the list of edit models. Omit model when editing to use \"OpenAI GPT Image 2.5 Flare Medium\"."
},
"style": {
"type": "string",
"description": "Optional style preset name."
},
"prompt": {
"type": "string",
"description": "Description of the image to generate."
},
"outputs": {
"type": "number",
"description": "Number of images to generate (default 1)."
},
"dimensions": {
"type": "string",
"description": "Aspect ratio such as \"1:1\", \"16:9\" or \"9:16\" (supported ratios vary by model), or a pixel size \"WIDTHxHEIGHT\" such as \"1792x1024\" (default \"1024x1024\"). Nano Banana 2, Nano Banana Pro and GPT Image models map a pixel size to the nearest aspect ratio they support; other models may not, so prefer an aspect ratio."
},
"resolution": {
"type": "string",
"description": "For models that support it: \"1K\" or \"2K\"."
},
"source_images": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional image URLs to edit/transform (image-to-image). Up to 10."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"media"
],
"properties": {
"media": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"type",
"url",
"status"
],
"properties": {
"id": {
"type": "integer",
"minimum": 1
},
"url": {
"type": "string"
},
"type": {
"enum": [
"image",
"video"
],
"type": "string"
},
"model": {
"type": "string"
},
"prompt": {
"type": "string"
},
"status": {
"enum": [
"processing",
"completed",
"failed"
],
"type": "string"
},
"used_credits": {
"type": "number",
"minimum": 0
}
},
"additionalProperties": false
}
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}get_image — Get generated image
Get a previously generated image by its numeric id (returned by generate_image).
{
"type": "object",
"required": [
"image_id"
],
"properties": {
"image_id": {
"type": "number",
"description": "Numeric image id."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"media"
],
"properties": {
"media": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"type",
"url",
"status"
],
"properties": {
"id": {
"type": "integer",
"minimum": 1
},
"url": {
"type": "string"
},
"type": {
"enum": [
"image",
"video"
],
"type": "string"
},
"model": {
"type": "string"
},
"prompt": {
"type": "string"
},
"status": {
"enum": [
"processing",
"completed",
"failed"
],
"type": "string"
},
"used_credits": {
"type": "number",
"minimum": 0
}
},
"additionalProperties": false
}
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}generate_video — Generate video
Start an AI video generation. Defaults to MiniMax H3 Max: 5 seconds, 768p, native audio, 4 credits per second at 768p. With an image and no model, uses MiniMax H3 Max Image. ASYNC — returns a video id. display_media shows the video and checks its progress in an embedded player; get_video also checks that same id. Uses video credits (billed per second of output).
{
"type": "object",
"required": [
"prompt"
],
"properties": {
"image": {
"type": "string",
"description": "Optional image URL used as the first frame. With no model, selects MiniMax H3 Max Image. For an explicit model, select the matching Image variant."
},
"model": {
"type": "string",
"description": "Optional video model. Omit for \"MiniMax H3 Max\" (or \"MiniMax H3 Max Image\" when image is supplied). Other examples: \"Veo 3.1\", \"Veo 3.1 Fast\", \"Seedance 2.5\", \"Seedance 2.0 Mini\". An explicit model is used as supplied; choose its Image variant for image-to-video."
},
"prompt": {
"type": "string",
"description": "Description of the video to generate."
},
"duration": {
"type": "string",
"description": "Clip length in seconds as a string. MiniMax H3 Max supports \"5\" through \"15\" (default \"5\"). Veo 3.1 supports only \"4\", \"6\", or \"8\" seconds. Must be supported by the selected model. If omitted, uses a supported model default."
},
"resolution": {
"type": "string",
"description": "Model-dependent output resolution. MiniMax H3 Max supports \"768p\" (default) or \"480p\". Other models may support \"720p\", \"1080p\", or \"2k\"."
},
"aspect_ratio": {
"type": "string",
"description": "Aspect ratio, e.g. \"16:9\" (default), \"9:16\", \"1:1\"."
},
"generate_audio": {
"type": "boolean",
"description": "Whether to generate a soundtrack on models with an audio toggle. MiniMax H3 Max always generates audio and cannot accept false. For a silent video, select a model with an audio toggle, such as Veo 3.1 Fast."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"media"
],
"properties": {
"media": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"type",
"url",
"status"
],
"properties": {
"id": {
"type": "integer",
"minimum": 1
},
"url": {
"type": "string"
},
"type": {
"enum": [
"image",
"video"
],
"type": "string"
},
"model": {
"type": "string"
},
"prompt": {
"type": "string"
},
"status": {
"enum": [
"processing",
"completed",
"failed"
],
"type": "string"
},
"used_credits": {
"type": "number",
"minimum": 0
}
},
"additionalProperties": false
}
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}get_video — Get generated video
Check a video generation started with generate_video. Returns { video: { id, url, status } } — status is "processing" until the video is ready, then "completed" with the download url.
{
"type": "object",
"required": [
"video_id"
],
"properties": {
"video_id": {
"type": "number",
"description": "Video id returned by generate_video."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"media"
],
"properties": {
"media": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"type",
"url",
"status"
],
"properties": {
"id": {
"type": "integer",
"minimum": 1
},
"url": {
"type": "string"
},
"type": {
"enum": [
"image",
"video"
],
"type": "string"
},
"model": {
"type": "string"
},
"prompt": {
"type": "string"
},
"status": {
"enum": [
"processing",
"completed",
"failed"
],
"type": "string"
},
"used_credits": {
"type": "number",
"minimum": 0
}
},
"additionalProperties": false
}
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}display_media — Show generated images or videos
Show Easy-Peasy.AI images in an embedded gallery or videos in an embedded player. Use IDs returned by generate_image, get_image, generate_video, or get_video. Can display a processing video and check its progress. Reads existing results in the connected account; does not generate content or spend credits. Clients without embedded UI still receive the media links.
{
"type": "object",
"required": [
"media_type",
"ids"
],
"properties": {
"ids": {
"type": "array",
"items": {
"type": "integer",
"minimum": 1
},
"maxItems": 8,
"minItems": 1,
"description": "Existing image or video IDs to display, in order (up to 8)."
},
"media_type": {
"enum": [
"image",
"video"
],
"type": "string"
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"media"
],
"properties": {
"media": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"type",
"url",
"status"
],
"properties": {
"id": {
"type": "integer",
"minimum": 1
},
"url": {
"type": "string"
},
"type": {
"enum": [
"image",
"video"
],
"type": "string"
},
"model": {
"type": "string"
},
"prompt": {
"type": "string"
},
"status": {
"enum": [
"processing",
"completed",
"failed"
],
"type": "string"
},
"used_credits": {
"type": "number",
"minimum": 0
}
},
"additionalProperties": false
}
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}list_voices — List text-to-speech voices
List a page of text-to-speech voices (id, name, language, accent), including the account’s custom/cloned voices. Filter by language and optionally accent. Returns total and next_offset (null on the last page). Choose a suitable returned id and pass it as voice_id to generate_speech; additional pages are optional.
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"default": 20,
"maximum": 50,
"minimum": 1,
"description": "Maximum results to return (default 20, maximum 50)."
},
"accent": {
"type": "string",
"description": "Optional accent filter."
},
"offset": {
"type": "integer",
"default": 0,
"minimum": 0,
"description": "Start position. Use next_offset from the previous result to read another page."
},
"language": {
"type": "string",
"description": "Optional language filter, e.g. \"Dutch\"."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}generate_speech — Generate speech
Convert text to speech (ElevenLabs-powered). Synchronous — returns the audio file URL. Billed against the account’s monthly text-to-speech character quota.
{
"type": "object",
"required": [
"text",
"voice_id"
],
"properties": {
"text": {
"type": "string",
"description": "Text to speak."
},
"speed": {
"type": "number",
"description": "Playback speed 0.7-1.2 (default 1.0)."
},
"voice_id": {
"type": "string",
"description": "Voice id from list_voices."
},
"output_format": {
"type": "string",
"description": "Audio format, e.g. \"mp3_44100_128\" (default) or \"wav\"."
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}transcribe_audio — Transcribe audio
Transcribe audio or video from a public link: a media file, or a page with a video or audio in it — YouTube, X (Twitter) posts and broadcasts, Instagram, TikTok, Google Drive, SoundCloud, Loom and most other video sites (up to 6 hours). ASYNC — returns a uuid once the job has started (checking a page link can take up to a minute); then poll get_transcription until the transcript is ready, which takes a few minutes for a long video. A link without a video or audio, or a private or live one, is usually refused at once with the reason; a download that fails later shows as status "failed" in get_transcription. Requires a paid plan.
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "Public link to an audio/video file, or to a page with a video or audio on it (a YouTube video, an X post, an Instagram reel, a TikTok, a Google Drive file…)."
},
"name": {
"type": "string",
"description": "Optional name for the transcription."
},
"language": {
"type": "string",
"description": "Spoken language name in English, e.g. \"English\" (helps accuracy)."
},
"detect_speakers": {
"type": "boolean",
"description": "Label different speakers in the transcript (default true). When off, a YouTube video that has captions is transcribed from them at once."
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}get_transcription — Get transcription
Get a transcription started with transcribe_audio using its exact returned uuid and the same connected account. The content field is empty until transcription finishes. If the job is not found or fails, report the error; do not start a replacement transcription unless the user explicitly requests a new job.
{
"type": "object",
"required": [
"audio_id"
],
"properties": {
"audio_id": {
"type": "string",
"description": "Transcription uuid from transcribe_audio."
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}Prompts
Not advertised
Resources
1 advertised
easy-peasy-media-viewer — Easy-Peasy.AI media viewer
An image gallery and video player for existing Easy-Peasy.AI generations.
ui://easy-peasy/media-viewer-v3.html30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 747 ms
- 95th percentile latency
- 747 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 747 ms · metadata changed · 13 tool(s), 1 resource(s), 0 resource template(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http easy-peasy-ai-mcp https://easy-peasy.ai/mcpCodex
codex mcp add easy-peasy-ai-mcp --url https://easy-peasy.ai/mcpCursor
{
"mcpServers": {
"easy-peasy-ai-mcp": {
"url": "https://easy-peasy.ai/mcp"
}
}
}Cline
{
"mcpServers": {
"easy-peasy-ai-mcp": {
"type": "streamableHttp",
"url": "https://easy-peasy.ai/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"easy-peasy-ai-mcp": {
"type": "http",
"url": "https://easy-peasy.ai/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http easy-peasy-ai-mcp https://easy-peasy.ai/mcpClaude Desktop
{
"mcpServers": {
"easy-peasy-ai-mcp": {
"url": "https://easy-peasy.ai/mcp"
}
}
}Windsurf
{
"mcpServers": {
"easy-peasy-ai-mcp": {
"serverUrl": "https://easy-peasy.ai/mcp"
}
}
}Let your agent find its tools
Find servers like Easy-Peasy.AI MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other ai and machine learning servers
Do you run Easy-Peasy.AI MCP?
Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.