Most failures are a missing follow-up call, not a down server. Check which rail you are on first: catalog (public), captions (guest/session), credits face swap, or MPP.
The agent drew an ASCII meme
Point it at llms.txt. "Done" is render_meme_still + imageBase64, or a /create link. Not a markdown table.
The agent invented a finished CDN URL
cdn.magicmeme.com/templates/… is the blank template. Finished stills are bytes. Call render_meme_still or POST /api/render with "format": "jpeg".
HTTP render returned a video
You omitted format. Default is mp4. MCP render_meme_still defaults to jpeg. HTTP does not.
Captions returned 429
Guest daily cap. Sign in at /login or tell the human to.
OTP never arrives
Production needs RESEND_API_KEY, EMAIL_FROM, and a verified domain. Local without Resend: watch the server log for [auth-otp]. If Resend is set but the domain is unverified, local also falls back to the console.
Face swap 401 / verified email
Credits rail needs a non-anonymous session and emailVerified: true. Complete OTP. Guests cannot face-swap.
Face swap stopped at 402
Expected on the first POST to paymentLink. Retry with a Shared Payment Token, consentAttested, and the face image. Stopping at 402 generates nothing.
Local face swap says missing key
Stdio settlement=local needs OPENROUTER_API_KEY in that process. If you started bun dev before the secret existed, restart it. Customer agents should use hosted MCP + MPP, not their own key.
Template not found
The slug is not in the catalog. Call search_templates or GET /api/memes. Don't invent boxes.
CORS on captions from a random origin
There is none. Call from the agent server or our hosted MCP, not from browser JS on another site.