MCPThe studio

Make ads from the agent you already use.

Connect make.ad once and your agent can quote, make and follow ads, pictures, clips and movies on your team's credits. It works the studio, not around it: every ad still stops at each review, and it can look at the pictures before it passes one or sends it back.

Connect your client

https://www.make.ad/api/mcp
  1. In ChatGPT on the web, open Settings, then Security and login, and turn on Developer mode (Plus, Pro, Business, Enterprise and Edu plans).
  2. Go to chatgpt.com/plugins, select the plus button and create an app: name it make.ad, paste the address above, and choose OAuth. Your browser opens make.ad. Sign in and select Approve: that is the whole sign-in, with no key to copy.
  3. In a chat, choose Developer mode from the plus menu and pick make.ad. Then ask it: “Check my make.ad connection: who am I connected as, and what can I spend?”

ChatGPT asks you to confirm each action that changes something. That is ChatGPT's own check, on top of make.ad's reviews.

Then ask for what you want

In your own words. These are sentences that work as they are; the agent quotes the credits before it starts anything paid.

Things to ask an agent connected to make.ad
Check the connectionCheck the connectionCheck my make.ad connection: who am I connected as, and what can I spend?whoami
See the workflowsSee the workflowsWhat kinds of ad can make.ad make? Show me its workflows and what each needs from me.list_workflows
Make a whiteboard explainerMake a whiteboard explainerMake a whiteboard explainer for Lumo: why alarms wreck your morning, how light wakes you gently, and how Lumo does it. Quote it first.list_workflows, quote_narrated_ad, create_narrated_ad (workflow "whiteboard"), then each review
Make a song adMake a song adMake a 30-second song ad for Lumo, a sunrise alarm clock that wakes you with light instead of noise. Lead with never hearing an alarm again. Quote it first.quote_song_ad, create_song_ad, then each review
Put my product in a scenePut my product in a sceneHere is a photo of the clock: ~/Desktop/lumo.png. Put it on a bedside table at dawn, show me the picture, then animate the best one for 5 seconds.request_cast_upload, generate_image, view_pictures, generate_video
Clear my reviewsClear my reviewsGo through what is waiting on me in make.ad. For each one, look at it and tell me what the review shows before you pass anything.list_ads, get_ad, view_pictures, approve_stage
Change somethingChange somethingThe woman in the Lumo ad looks too young. Send the character back: about 60, grey hair, the same cardigan. Tell me what that costs first.get_ad, revise_stage; redraw_stills for the stills
Clone an ad that worksClone an ad that worksClone this ad for Lumo, keeping its structure and timing: ~/Downloads/competitor-ad.mp4request_clone_upload, create_film, then each review
Test five hooksTest five hooksMake five 20-second narrated ads for Lumo, each with a different hook. Show me the hooks and the total before you start.quote_batch, create_batch

What it can do

65 tools in 6 groups. Free unless it says otherwise; anything paid is quoted first and held from your team's shared credits.

Getting its bearingsWho it is acting as, what it may spend, and every choice there is.5
  • whoamiWho the connection acts as, at which desk, what it may do, what one call may spend, and what the team can spend now.FreeFree · needs Read
  • get_optionsEvery choice the other tools take: kinds of ad, languages, voices, and each image, video and lip-sync model with its sizes and lengths.FreeFree · needs Read
  • get_balanceThe credits the team can spend now, and what is held for work in flight.FreeFree · needs Read
  • get_usageWhat the team has been charged this allowance month; an owner also sees it by desk.FreeFree · needs Read
  • worker_statusWhether the studio is rendering right now.FreeFree · needs Read
AdsOne brief becomes one finished video. Every ad stops at each review until it is passed.18
  • list_workflowsThe ready-made kinds of ad (cartoon, whiteboard explainer, product showdown, podcast clip, …): each with a starting brief, the tool that makes it and the looks it takes.FreeFree · needs Read
  • quote_song_adWhat a song ad would cost, and whether this connection and the balance allow it.FreeFree · needs Read
  • create_song_adA song ad: the studio writes a jingle, Suno sings it, and the picture is cut to the song.Holds its quoteHolds its quote · needs Create ads
  • quote_narrated_adThe same quote for a narrated ad.FreeFree · needs Read
  • create_narrated_adA narrated ad: a voice reads the script, with music under it.Holds its quoteHolds its quote · needs Create ads
  • quote_ugc_adThe same quote for a UGC ad.FreeFree · needs Read
  • create_ugc_adA UGC ad: one person talking to their phone about the product.Holds its quoteHolds its quote · needs Create ads
  • get_quoteA quote for an ad made from the studio's full settings.FreeFree · needs Read
  • create_adAn ad from the studio's full settings, for anything the three above do not cover.Holds its quoteHolds its quote · needs Create ads
  • list_adsThe desk's ads (or the team's), with the ones waiting on a review or failed listed first.FreeFree · needs Read
  • get_adOne ad: where it is, what to do next, and with detail "full" everything a review shows. Can wait for it.FreeFree · needs Read
  • approve_stagePasses the review you name, and only passes it.FreeFree · needs Pass reviews
  • revise_stageSends a character, script or voice review back with a note, to be done again. A script is rewritten for nothing.Holds more firstHolds more first · needs Redo ads
  • redraw_stillsAt the stills review, draws the stills you name again (or all of them), each with what it should show now.Holds more firstHolds more first · needs Redo ads
  • cancel_adStops an ad that is queued, waiting at a review, or failed and still holding credits.Gives credits backGives credits back · needs Create ads
  • retry_adRuns a failed or cancelled ad's stage again.Holds more firstHolds more first · needs Redo ads
  • regenerate_beatMakes one beat's still or clip again, with a note on what to change.Holds more firstHolds more first · needs Redo ads
  • set_captionsBurns captions into a finished ad or movie, restyles them, or takes them off.FreeFree · needs Redo ads or Redo movies
Pictures, clips and tracksOne prompt, one file back. A picture it made can be edited, animated, or kept in the cast.12
  • quote_imageWhat a picture would cost, and whether it can be made as asked.FreeFree · needs Read
  • generate_imageA picture from a prompt, or an edit of pictures you already have (renders and cast, up to sixteen).Holds its quoteHolds its quote · needs Make renders
  • quote_videoWhat a clip would cost.FreeFree · needs Read
  • generate_videoA clip from a prompt, or one of your pictures animated.Holds its quoteHolds its quote · needs Make renders
  • quote_shotWhat a shot from the cast would cost.FreeFree · needs Read
  • generate_shotA shot on Seedance handed your cast: characters, places, props, voices and clips.Holds its quoteHolds its quote · needs Make renders
  • quote_musicWhat a track would cost.FreeFree · needs Read
  • generate_musicA song with your lyrics, or an instrumental, on Suno.Holds its quoteHolds its quote · needs Make renders
  • list_rendersThe desk's renders, newest first.FreeFree · needs Read
  • get_renderOne render and, once done, a link to its file. Can wait for it.FreeFree · needs Read
  • cancel_renderCancels a render the studio has not started.Gives credits backGives credits back · needs Make renders
  • view_picturesShows the agent the pictures themselves: an ad's character or stills, a render, a cast picture, a movie's frames.FreeFree · needs Read
Video RemixOne take, a new scene: a clip's motion, camera and timing carried onto 1 to 8 reference pictures. Only where the studio has switched it on; get_options says whether it is.6
  • request_transform_uploadSomewhere to put the clip or one reference picture: a signed PUT, with the headers to send, for one file of the type and size the provider takes.FreeFree · needs Make renders
  • quote_video_transformWhat a clip of this length at this size would be held at: its seconds in and the same seconds out.FreeFree · needs Read
  • create_video_transformQueues one from your uploads, each reference with a role (person, product, location, look). One per idempotency key; the real files are measured before anything is sent.Holds its quoteHolds its quote · needs Make renders
  • get_video_transformOne transform's progress and, once done, a link to the finished video in the studio's own storage. Can wait for it.FreeFree · needs Read
  • list_video_transformsThe desk's Video Remixes, newest first.FreeFree · needs Read
  • cancel_video_transformCancels one that is still waiting for the studio. One already sent to the provider cannot be taken back, and is not refunded.Gives credits backGives credits back · needs Make renders
Movies and batchesA storyboarded film from the cast, an ad cloned from a video, or many ads at once.13
  • quote_filmWhat a movie or an ad movie would be held at.FreeFree · needs Read
  • create_filmA movie from the cast, or an ad movie: for a saved brand, or cloned from a video you upload.Holds its quoteHolds its quote · needs Make movies
  • list_filmsThe desk's movies.FreeFree · needs Read
  • get_filmOne movie: where it is, what to do next, and with detail "full" its storyboard and clips. Can wait for it.FreeFree · needs Read
  • approve_film_stagePasses the review you name, topping the hold up first when the storyboard asks for more.Holds more firstHolds more first · needs Pass movie reviews
  • cancel_filmStops a movie that is queued, waiting at a review, or failed and still holding credits.Gives credits backGives credits back · needs Make movies
  • retry_filmRuns a failed movie's stage again.Holds more firstHolds more first · needs Redo movies
  • revise_filmSends a movie's storyboard back with a note, to be written again.FreeFree · needs Redo movies
  • quote_batchWhat a batch of ads would hold in all.FreeFree · needs Read
  • create_batchMany ads at once: your angles, or a theme the studio writes angles from.Holds its quoteHolds its quote · needs Make batches
  • list_batchesThe desk's batches.FreeFree · needs Read
  • get_batchOne batch and the ads it has made. Can wait for them.FreeFree · needs Read
  • cancel_batchCancels a batch the studio has not started.Gives credits backGives credits back · needs Make batches
Cast, brands and filesWhat the agent brings of yours: a product photo, a character, a brand, a recording.11
  • list_castThe desk's cast: characters, objects, places, styles and clips, by id.FreeFree · needs Read
  • request_cast_uploadSomewhere to put a picture from your machine (png, jpeg or webp, up to 15 MB).FreeFree · needs Add to the cast
  • create_cast_memberAdds that picture to the cast under a handle.FreeFree · needs Add to the cast
  • add_render_to_castKeeps a finished render in the cast, so later work can be made from it.FreeFree · needs Add to the cast
  • list_brandsThe team's saved brands.FreeFree · needs Read
  • save_brandSaves a brand, or updates one: what it sells, who for, how it talks, and its product photo.FreeFree · needs Create ads
  • request_clone_uploadSomewhere to put a video an ad movie will be cloned from (up to 500 MB).FreeFree · needs Make movies
  • request_transcript_uploadSomewhere to put a video or a recording to transcribe (up to 500 MB).FreeFree · needs Transcribe
  • create_transcriptTranscribes it, with timings.FreeFree · needs Transcribe
  • list_transcriptsThe desk's transcripts.FreeFree · needs Read
  • get_transcriptOne transcript's text, which an ad can say or sing word for word. Can wait for it.FreeFree · needs Read

What it cannot do: edit a script's lines or a storyboard by hand, or switch an ad to run without its reviews. Those are yours, on the site, and every answer links to the ad there. Nor can it delete anything, or touch billing, the team or its people.

Credits and reviews

  • It spends your team's shared credits. There is no separate balance for agents. A quote holds nothing; starting something holds its quote, and what is not spent comes back when it finishes, fails or is cancelled.
  • Nothing expensive renders unseen. An ad made by an agent stops at every review (character, script, voice, stills), a movie at its storyboard, its frames and its clips. The clips are most of what an ad costs, and they render only after the stills are passed.
  • Sending something back costs what it renders again. A new character sheet, a new track, a still drawn again: each is quoted before it is asked for and held first. A script or a storyboard is rewritten for nothing.
  • A picture or a clip costs exactly its quote. An ad or a movie can spend somewhat past its hold as it renders (a line that runs long, an extra shot); its spent credits show what it really cost.
  • A retry never charges twice. Every paid call carries a key the agent makes up; sent again, it answers with the same ad and holds nothing more.
  • It works from your own pictures. A product photo goes into your cast once, and every ad, picture and clip after that is drawn from it. Nothing is fetched from a link.

A key, for what cannot sign in

A server, a script or a scheduled job has no browser to sign in with. It sends a key instead.

  1. An owner opens Team, finds MCP keys, names a key and selects Create key. It acts as them, at their desk.
  2. Copy it straight away. It is shown once: make.ad keeps only a fingerprint of it. It lasts 90 days.
  3. Send it as a header on every call: Authorization: Bearer mad_YOUR_KEY.
Claude Code, with a key
claude mcp add --transport http make-ad https://www.make.ad/api/mcp \
  --header "Authorization: Bearer mad_YOUR_KEY"

A client configured with JSON, with a key
{
  "mcpServers": {
    "make-ad": {
      "type": "http",
      "url": "https://www.make.ad/api/mcp",
      "headers": {
        "Authorization": "Bearer mad_YOUR_KEY"
      }
    }
  }
}

Check a key with curl
curl -s https://www.make.ad/api/mcp \
  -H "Authorization: Bearer mad_YOUR_KEY" \
  -H "Content-Type: application/json" -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"whoami","arguments":{}}}'

Anyone holding a key can spend your team's credits up to its limits. Keep it out of repositories, shared files and chats. An owner revokes one on Team and it stops on its very next call; a password reset does not end it.

Manage keys and connections

When something is not working

It will not connect, or keeps asking me to sign in

Check the address is exactly https://www.make.ad/api/mcp, with the www: another host redirects, and a redirect drops the sign-in. Then remove make.ad in your client and add it again. A connection lasts 90 days, and ends sooner if an owner revokes it on Team or the person leaves the team.

It says the team cannot use the studio (a 403)

The sign-in is fine, but your team is still on its free ad, or its plan was cancelled. An owner fixes that on Billing; connecting again will not help.

A tool is missing

The agent sees only what its connection may do. A connection made from this page may do everything listed here. A key an owner made with fewer permissions sees fewer tools: ask it “what can you do on make.ad?” and whoami lists them.

It was refused for credits, or for a limit

The answer says which. The team's balance is on Billing. A connection has no most-per-call limit of its own: what the team can spend, and any monthly cap set on the team, are what refuse a call. A key an owner made with a kind of spending switched off is refused that kind; ask the owner, or do it on the site.

An ad is not moving

It is almost always waiting on a review. Ask your agent to go through what is waiting on you. If the studio itself is not rendering, worker_status says so, and a queued ad starts when it is back.

It says too many calls

One connection may make 60 calls at once and then about 2 a second. An agent that asks again and again whether a render is done hits it; told to wait instead, it does (the reads take a wait of up to 40 seconds).

A tool says “something went wrong on our side”

That one is ours. It ends with a reference such as mcp_3f2a…. Try again in a minute; if it keeps happening, send us that reference and roughly when. Never send a key.