01
Get your la_ key
Subscribe to BYOA, Starter, Growth, or Scale. Generate a key under Settings → API. It starts with la_.
Free cannot create keys

Muse × Lazy Ads MCP
Ask about waste. Approve before the pause.
Believable operator theater: chat, then tool findings, then an Allow card. Writes stay gated.
Muse chatCustom connector · Lazy Ads
Which Meta ad sets look like wasted spend this week, and should we pause the underperformers?
1Two prospecting sets show rising frequency and flat downstream actions.
2One retargeting set is overlapping broader audiences and diluting efficiency.
3I can pause those three sets. No budget edits until you Allow.
get_campaign_performance · pause_resume_ad_set
Meta Muse · custom connector
Four steps to connect Meta Muse
Educational path only. No photography. Free cannot create keys. BYOA and above unlock the bridge.
01
Subscribe to BYOA, Starter, Growth, or Scale. Generate a key under Settings → API. It starts with la_.
Free cannot create keys
02
Muse chat has no MCP settings screen. One message names the hosted server and tells Muse to build the connector.
mcp.lazyads.ai/mcp
03
Paste the key into Muse's secure credential prompt. Leave it out of the chat. There is no OAuth sign-in link.
Bearer la_ · not chat paste
04
Muse lists tools, reads connected platforms, and waits before it pauses, edits, or publishes anything.
Writes wait for Allow
Meta = Facebook + Instagram as one network · nine total
https://mcp.lazyads.ai/mcp
One message connects Muse chat, the mobile apps, and WhatsApp. Approve the credential prompt it opens. Do not type the key into the chat.
Add my Lazy Ads connector: https://mcp.lazyads.ai/mcp Setup: this is a remote MCP server over streamable HTTP. There is no OAuth sign-in. Auth is the header "Authorization: Bearer <token>". My key starts with la_. Ask me for it through the secure credential prompt and never in this chat. The server is stateless. Do not require an Mcp-Session-Id between calls. A classic initialize handshake and a direct tools/list both work. Skill: save one so every question about my ads goes through Lazy Ads tools first. Do not pause, edit, publish, or change a budget yet. List the tools, call list_platform_connections, and tell me which ad platforms are connected plus one thing I should look at today.
Once connected, Muse reads the accounts you already linked. Start with questions like these:
Which Meta ad sets look like wasted spend this week? Checked linked Meta campaigns. A few ad sets are burning budget with weak conversion signals versus the rest of the account. Want me to pause the underperformers after you Allow? via Lazy Ads · Meta
Also try
These match tools the server actually exposes. Numbers in any reply come from your accounts, not from this page.
All networks
“Which ad platforms am I connected to, and can each account spend right now?”
Uses list_platform_connections and check_platform_billing.
Performance
“Sync every linked campaign, then summarise spend, conversions, and ROAS by platform for the last 7 days.”
Uses sync_all_campaign_performance and get_campaign_performance.
Meta
“Show me the headline on my best Meta ad, then wait for me to approve a new one before you change it.”
update_ad writes Lazy Ads and the live platform when that API allows the field.
Meta
“Build a Meta sales campaign for my best seller at $50/day and leave it for review.”
Lazy Ads AI builds need Starter or above. BYOA can still create a campaign from a strategy you supply.
Tell it again that Lazy Ads has no OAuth login. The header is Authorization: Bearer and the key comes from Settings → API. A probe with no key returns 401 invalid_token and does not point at an authorization server.
The key never reached the request. Enter it in the secure credential prompt, not the chat, with no quotes or trailing spaces. Revoked keys and Free accounts fail the same way. Regenerate under Settings → API.
BYOA has the bridge (list, sync, pause, budgets, update_ad, update_ad_set). AI campaign builds, chat, and creative generation need Starter, Growth, or Scale.
Per-key limits are BYOA 60, Starter 30, Growth 100, Scale 500 requests a minute. Ask Muse to sync all campaigns in one call instead of one sync per campaign.
The Muse chat app (muse.ai, iOS, Android, and WhatsApp) does not. Paste the setup prompt and Muse writes an MCP client on its own cloud VM, then saves a skill. Muse Code, the separate terminal agent, is the product with a settings file: ~/.config/muse/settings.json.
No. Lazy Ads authenticates with an API key on Authorization: Bearer. A call with no key returns HTTP 401 invalid_token and a WWW-Authenticate: Bearer challenge. That challenge does not include an OAuth resource_metadata URL, so there is no sign-in link to approve. Put the key in Muse’s secure credential prompt.
Any paid plan. BYOA gets the bridge tools (list, sync, pause, budgets, live ad and ad-set edits). Starter, Growth, and Scale also unlock Lazy Ads AI tools such as campaign builds and creative generation. Free accounts cannot create API keys. The REST API is a separate Growth+ surface and is not required for Muse.
Into Muse’s secure credential prompt, which stores it outside the chat. Never paste the key into the message. Keys from Settings → API start with la_. In Muse Code, set LAZY_ADS_API_KEY in the environment and reference it as ${LAZY_ADS_API_KEY} in settings.json.
The URL must be exactly https://mcp.lazyads.ai/mcp, the header must be Authorization: Bearer plus the key, and the key must belong to a paid plan. Regenerate it under Settings → API if it was revoked. The server is stateless, so do not require an Mcp-Session-Id between calls.
The setup prompt tells Muse to stop after a read of your connections. Meta’s default is to ask before important actions. Keep that approval on. Disconnect the custom connector in Muse settings, or revoke the API key, to cut access.
Meta does not review custom connectors. You are granting Muse access to the ad accounts behind this API key. Revoke the key under Settings → API to cut that access. The same server is documented for other agents on the MCP page.
