Use Terrads in Cursor
Once Terrads is connected, you can ask Cursor's agent to make ads for your brand in plain words: "make three feed ads for our new serum". It finds your brand, product and angle, can show you the price and wait for your go, starts the run, answers its questions with you, and hands back the finished images, videos or audio ads. It can also check on, answer or cancel runs you started earlier, here or in the app. Everything it makes lands in Creatives, next to the ads you make in the app.
Before you start
- A plan that includes API access. Without one, Terrads refuses every request from the agent. If your plan doesn't include it, Settings → API keys tells you which plan does.
- An API key. Create one in Settings → API keys. It's shown once, so copy it before you close the dialog. A key acts for your whole team: whatever the agent makes or cancels, everyone on the team sees.
1. Set your key where Cursor can read it
Cursor reads your key from an environment variable called TERRADS_API_KEY, which Cursor's docs say to set in your shell profile or system environment. For example, add export TERRADS_API_KEY=your-key to your shell profile (~/.zshrc on a Mac), then quit Cursor completely and reopen it. Exporting it in an already-open terminal isn't enough.
2. Add Terrads to your MCP settings
Open ~/.cursor/mcp.json (create it if it doesn't exist) and add the Terrads server:
{
"mcpServers": {
"terrads": {
"url": "https://terrads.com/api/mcp",
"headers": {
"Authorization": "Bearer ${env:TERRADS_API_KEY}"
}
}
}
}
If the file already lists other servers, add the terrads entry next to them inside mcpServers. Copy it exactly: ${env:TERRADS_API_KEY} is Cursor's way of reading the variable, so the file never holds the key itself and is safe to keep in a dotfiles repo.
3. Optional: teach the agent the workflow
The server alone is enough to make ads. To give the agent the same know-how the Terrads plugin carries — confirm the brief, agree a credit ceiling before spending, walk you through each question — you can also add the Terrads skill. Cursor supports Agent Skills: it loads the skills it finds in a skills folder, such as .cursor/skills/ in your project or in your home folder. One way to put the Terrads skill there is the open-source skills installer:
npx skills add terrads-hq/agent-mode
The skill never reads a key and doesn't connect anything; it only works once the server above is connected.
Check it works
Start a new chat with the agent and ask:
List my Terrads brands.
The agent calls Terrads and answers with your team's brands by name. If it says it has no Terrads tools, or the call fails, see Troubleshooting below.
Then make something real:
Make two feed ads for one of my products, on one of its saved angles. Show me the price before you start.
The agent looks up your products, angles and models, tells you the brief and an estimated price, and waits for your yes (the skill in step 3 teaches it to; without it, ask it to). After that it starts the run, checks on it while it works, brings any questions or ad text to you for approval, and finishes with links to the finished ads. Those links expire, so ask it to download the files if you want to keep them.
Things to ask
- "Make ads for the Summer Serum in Feed and Story sizes, in English and German. Let me approve the text first."
- "Make a short video ad for the Summer Serum. Show me the plan and the price before you approve it."
- "Make an audio ad for the new candle and read me the script before it's made."
- "What's the status of my last run? If it's waiting on me, show me what it needs."
- "Download the finished ads from my last run into an
adsfolder in this project." - "Cancel the run I just started."
The agent can only work with brands, products, angles and audiences you've already set up in Terrads; set those up in the app first (set up your brand). For the full list of what the agent can do, see the MCP server reference.
Troubleshooting
Terrads refuses the connection with invalid_api_key. Your client may show this as the Terrads server failing to connect rather than as the code. The key didn't reach Terrads. Usually TERRADS_API_KEY isn't set in the environment Cursor started from: nothing prompts you, the reference is sent as written, and Terrads refuses it. Set it as in step 1, then quit Cursor completely and reopen it. The same error means the key was revoked, or the person who created it left the team; create a new one.
Terrads refuses the connection with upgrade_required or no_subscription. Your team's plan doesn't include API access, or there's no active plan. Your team's owner can change it in Settings → Billing; your existing key starts working again as soon as the plan does.
Terrads refuses the connection with past_due. The last payment failed. Your team's owner updates the card in Settings → Billing, and the key works again.
The agent reports insufficient_credits. The run costs more credits than your team has, and nothing was charged. Buy more or ask for a smaller run; see how credits work.
Terrads refuses requests with rate_limited. The agent made too many calls in a short time. Wait a moment and ask again.
Every other code and what it means is on the errors page.