# memeworld > A meme and GIF generator. Browse ≈2,000 captioned-meme templates and render captioned > PNGs and GIFs from them over a REST API or MCP. Rendering is restricted to memeworld's own templates — there is no arbitrary image URL input. Browsing, the on-site editor and downloads need no account; rendering through the API does. ## API - OpenAPI: https://memeworld.afterlume.workers.dev/api/openapi.json - Search templates: GET https://memeworld.afterlume.workers.dev/api/v1/templates?q=drake&kind=still - One template (with its text box ids and a captioning guide): GET https://memeworld.afterlume.workers.dev/api/v1/templates/{idOrSlug} - Tags: GET https://memeworld.afterlume.workers.dev/api/v1/tags - Suggest (no account needed): POST https://memeworld.afterlume.workers.dev/api/v1/suggest {"prompt": "this meeting could have been a Slack message"} Returns templates already captioned for the idea, each with an editor link. Pass its captions to /render for a file. - Render: POST https://memeworld.afterlume.workers.dev/api/v1/render {"templateId": 123, "captions": ["top", "bottom"]} - Face swap: POST https://memeworld.afterlume.workers.dev/api/v1/face-swap {"templateId": 123, "faceImage": ""} Puts a photographed face into a still template. Costs 2 credits; the photo is sent to the image model and never stored. A failure refunds itself. - Credits: GET https://memeworld.afterlume.workers.dev/api/v1/credits Authenticate with `x-api-key: ` or `Authorization: Bearer `. Create a key at https://memeworld.afterlume.workers.dev/settings/api-keys. ## MCP - Endpoint: https://memeworld.afterlume.workers.dev/api/mcp (streamable HTTP, spec 2026-07-28) - Manifest: https://memeworld.afterlume.workers.dev/.well-known/mcp-manifest.json - Authorization: OAuth 2.1, discovered from https://memeworld.afterlume.workers.dev/.well-known/oauth-protected-resource - Tools: search_templates, get_template, list_tags, get_editor_url (open); suggest_memes, caption_meme, face_swap_meme, open_meme_editor (authenticated) ## Docs - https://memeworld.afterlume.workers.dev/agents