Connect Codex to Memelord
Set up in minutes
Choose where it runs
On your computer through your own Codex, or hosted in the cloud. The rest of setup adapts to your choice:
Pick what it can do in Memelord
A preset of real Memelord operations. Each one becomes a tool the agent can call, and it can't touch anything outside the list.
Connect Memelord
One sign-in. The agent acts through your account, scoped to the operations you picked.
Add your personal MCP link
The last step mints a private MCP URL for this agent and walks you through exactly this, with your real link filled in. The page flips to Connected the moment your Codex first calls in. Codex connects when a session starts — run codex, or restart a running one (in the Codex app, Restart).
Run this in your terminal. The Codex app shares its config, so it gets the server too
<your-link> is your personal server URL — setup mints it for you.
Tools Codex gets
Memelord
17 toolsSearch Memelord's template library of memes, video clips, and stickers. Default method "semantic_context" matches what a meme MEANS or depicts (natural-language queries like "when the deploy works on the first try"). Use "fulltext" for exact names and proper nouns ("drake", "spongebob"), "fuzzy" for misspellings, "semantic_combined" when visual identity matters, or "semantic_media" with media_url to find templates that look like a given image. Results come best match first and include ids you can pass as template_id to generate_caption_meme / generate_ai_meme / generate_video_meme / get_meme_template. Paging: each response has has_more and next_offset; to get the next page, repeat the exact same call (same query, method, filters, limit, min_score) with offset set to next_offset, and stop when has_more is false (next_offset is null). Pass ids you already have in exclude_ids only when starting a fresh search, not while paging, or the pages shift. Free.
Fetch one template asset by id: name, type (meme | video | sticker), media URL, description, tags, dimensions, and how many text slots its layout has. Use it to inspect a search result before generating with template_id. Free.
What's trending right now: the most recent curated trending templates with a short cultural-context blurb explaining the format. Use it to pick timely templates for generate_caption_meme / generate_ai_meme / generate_video_meme, or to answer "what memes are hot this week". NSFW drops are never included. Free.
Catalog of one-shot image tools you can run with run_image_tool: celebrity face swaps (Trump, Elon, Zuck, Vance, …), filters (Bust Down, Wojakify, GigaChad, Looksmaxxing, mugshot, Windows 95), and text-to-image generators (mascots, logos, Pokémon-style cards). Each entry lists its tool_id, whether it needs an image and/or a prompt, and any extra params. Free.
Classic caption memes: Jester picks a real meme template from the library (or uses template_id), writes new text for its caption slots, and renders that text on the unchanged template image. The picture is never AI-edited or repainted — use generate_ai_meme for that. Returns signed image URLs plus template_id, caption_slots, and an edit_handle you can hand to edit_meme to change the wording. Use search_memes or get_trending_memes first if you want to pick the template yourself. Billed against your usage balance.
AI-remixed image memes: Jester picks a meme template (or uses template_id), AI-edits the picture itself to fit the joke — swapping subjects, adding objects, or painting in people and products from reference_image_urls — then captions it. Use generate_caption_meme instead when you only want new text on an unchanged classic template. Returns signed image URLs plus template_id, caption_slots, and an edit_handle for edit_meme. Billed against your usage balance.
Change the text of an image meme you already generated. Pass the edit_handle from a generate_caption_meme / generate_ai_meme (or previous edit_meme) result together with a plain-language instruction; use the slot numbers from that result's caption_slots as target_index to change just one box. Re-renders the image and returns a fresh URL, the updated caption_slots, and a new edit_handle (earlier handles stay valid, so you can branch from any version). Handles only work for the account that created them. Billed against your usage balance.
Generate AI-captioned video memes from a topic. Jester picks video templates (or uses template_id), writes the caption text, and starts render jobs. Rendering is asynchronous: this returns job_ids immediately — poll check_video_status (or list_video_jobs) until status is "completed" to get the MP4 URL. Billed against your usage balance.
Rewrite the caption of a video meme and re-render it. Provide the template_id and the current caption from a previous generate_video_meme job plus a plain-language instruction. Starts a new render job — poll check_video_status for the MP4. Billed against your usage balance.
Check one video job from any video-producing tool. Returns status (pending / processing → completed | failed) and the MP4 download URL once complete. Free — poll every few seconds after a tool returns a job_id.
List the pro AI video models this account can run — Kling 3.0, Kling O3, Seedance, Wan 3.0, Cinema Studio 4.0 (run with run_video_model), Genjutsu character transpose (run with run_genjutsu), and Gemini Omni, Google's Gemini video model for editing a clip, animating a still, or generating from a prompt (run with run_gemini_omni). Each entry lists required and optional inputs, rules, and params (options, ranges, defaults). Call this before run_video_model to pick a model and valid params. Free.
Generate new AI video footage with one model from list_video_models: from a prompt alone, a start frame (image_url, optional end_image_url), or reference images / clips / audio. Use this for original footage ("a cinematic drone shot over Tokyo at night", "animate this photo"). For a meme template turned into a captioned video clip use generate_video_meme; for still images use run_image_tool or generate_ai_meme; to put a person into an existing clip use run_genjutsu. Media must be public URLs the user provided — never invent or guess them; if the user gave you local files, upload them with upload_media and pass the returned url. Invalid requests come back as status "invalid_request" listing every problem, with nothing charged. The request's full cost is reserved from your usage balance before it starts; a balance that cannot cover it gets the usual usage-balance error and nothing is started or charged. Returns a job_id; poll check_video_status until completed (usually a few minutes). Billed against your usage balance per generated second once the job finishes; the reservation is released if it fails.
Genjutsu character transpose: put a person or character into an existing video clip while keeping its motion, choreography, camera, timing, and audio ("put me in this music video", "swap the dancer for my character"). Needs the source clip (video_url, or video_job_id of a finished video on this account) and 1-8 photos in total of who to put in (character_image_urls for one person). Several people can be recast in ONE call: pass characters=[{target, image_urls}] with one entry per person, where target is who in the source clip they replace ("the king", "the guy playing chess") and image_urls are that person's own photos; all entries share the 8-photo cap. Both must be real media the user provided — never invent, guess, or substitute URLs. When the user gives you local photos or a local clip, upload each with upload_media first (clips over 3 MB via create_media_upload_url) and pass the returned urls. If anything is missing the call returns status "needs_input" listing everything still needed, with nothing started or charged: ask the user once, then call again. To generate new footage use run_video_model; for meme-template video clips use generate_video_meme. The clip's full cost is reserved from your usage balance before it starts; a balance that cannot cover it gets the usual usage-balance error and nothing is started or charged. Returns a job_id; poll check_video_status until completed. Billed against your usage balance per second of the source clip once the job finishes; the reservation is released if it fails.
Run Gemini Omni, Google's Gemini video model, by name. Three lanes, picked from the inputs: EDIT an existing clip with a plain-language instruction (video_url, or video_job_id of a finished video on this account, plus prompt — "make it snow", "turn the car red", "add a top hat on the dog"); ANIMATE a still (image_url + prompt); or GENERATE a short clip from the prompt alone. Up to 3 reference_image_urls can ground identity, product, or style. Media must be public URLs the user provided — never invent or guess them; if the user gave you local files, upload them with upload_media first and pass the returned url. This runs Omni only: a safety-filter block comes back as an error instead of being re-routed to another model (for an edit that may try other engines use run_agent; for captioned meme clips use generate_video_meme; for other AI video models use run_video_model). Invalid requests come back as status "invalid_request" listing every problem, with nothing charged. Returns a job_id; poll check_video_status until completed (usually a couple of minutes). Billed against your usage balance once the render finishes.
Hand a natural-language request to Jester, Memelord's full meme agent — the same brain behind the Memelord chat. Jester decides what to do: search templates, caption a meme, remix a format, edit or generate an image, face-swap, make or caption a video, add text-to-speech or lipsync, convert to GIF, and more. Use this when a request does not map cleanly onto a specific tool ("turn this photo into a 3-panel meme about my cat", "make a video meme with the drake format about Mondays", "put my face on Elon"). Pass thread_id from a previous result to continue the conversation. Returns the assistant's message plus any images; videos come back as job_ids to poll with check_video_status. Billed against your usage balance.
Run one specific image tool from list_image_tools by tool_id — e.g. "donald-trump-face-swapper" with a face photo, "bust-down-filter" on a portrait, or "mascot-generator" with a prompt. Provide image_url for image-to-image tools, prompt for text-to-image tools, and params for any extra inputs the tool lists. Returns the resulting image URL(s). Prefer this over run_agent when you already know exactly which tool you want. Billed against your usage balance.
Return the authenticated Memelord account: user id, display name, email, usage balance (USD, rounded to cents), whether billable tools can run, where to add credits, how this MCP session is authenticated (OAuth or API key), and on API-key sessions the end_user_id received from the X-Memelord-End-User header (null when none was sent). Call this to confirm who you are acting as or to check whether billable tools will succeed. Free.
About Codex
Frequently asked questions
More ways to connect
Open your Codex agent in one click.
NoClick runs Codex for you with Memelord wired in as tools. Connect your account and run.