For a personOAuth 2.1 in the browser
Claude, ChatGPT, Cursor and Claude Code open a sign-in window. You approve, the client keeps the token, and nothing is pasted.
Find the ads that pay, and launch the next one paused. Claude, ChatGPT, Cursor or any MCP client gets 88 tools for your ad account.
7 days free with every feature. Cancel anytime.
https://winandscale.com/api/mcprsk_ API key as a Bearer instead.Win & Scale is a Meta ads MCP server for AI agents. Claude, ChatGPT, Cursor or any MCP client reads your ad account, briefs the next test, and launches every ad paused. Every dashboard action is also a meta_* tool.
Paste one URL into your client and approve the sign-in in the browser. No key and no config file to keep secret.
One command adds the server. Run /mcp afterwards and approve the sign-in in the browser.
claude mcp add --transport http winandscale https://winandscale.com/api/mcpClaude: Customize, then Connectors, then Add custom connector. ChatGPT: a developer-mode app with OAuth. Both take the URL as is.
https://winandscale.com/api/mcpAdd the server to your MCP config. The file holds no credential, so it is safe to commit. Each person signs in as themselves.
{ "mcpServers": { "winandscale":
{ "url": "https://winandscale.com/api/mcp" } } }Register a streamable HTTP server with the URL above. The client discovers OAuth 2.1 on its own. The agent guides cover every client.
Each tool is badged read-only, write, or needs approval. Your agent can read everything, and anything that spends waits for you.
What ran, what each creative is, and what it bought.
meta_get_overviewAccount totals, the funnel and the top ads for a window.meta_get_ad_performancePer-ad spend, results and cost for a period.meta_suggest_nextCut, keep, double down or watch: a verdict on every live ad.meta_get_evidence_healthWhether the data is fit to judge anything yet.meta_get_history_winnersWhat wins and loses across the account's whole history.meta_get_strategy_rollupSpend and results per angle, persona, format and offer.meta_get_performance_cubeGroup and cross performance on any dimension.meta_get_cross_analysisTwo dimensions against each other inside one funnel.meta_get_breakdownsPlacement, age and gender, or video retention, read live from Meta.meta_get_audience_breakdownWho responds to each Value, by age, gender or placement.meta_get_account_historyEverything that ever ran on the account, with its copy.meta_list_campaignsCampaigns and ad sets with their status and objective.meta_list_creativesThe library's creatives, with Values and lifetime results.meta_get_creativeOne creative to look at: its image, tags and transcript.meta_list_taxonomyThe creative taxonomy and the workspace's Values.meta_set_creative_linksSet a creative's Values by hand.meta_tag_creativesTag many creatives at once by Value name.meta_update_creativeRename and re-tag one library upload.meta_create_taxonomy_valueAdd a persona, angle, offer or other Value.meta_update_taxonomy_valueRename, describe, approve or archive a Value.meta_merge_taxonomy_valuesFold two names for one idea into one.meta_answer_merge_suggestionMerge or keep apart a pair the reconcile pass flagged.meta_transcribe_creativeRead a video's transcript now, or retry one.meta_delete_creativesDelete library uploads that never became an ad.meta_list_report_viewsSaved views of the Ads report, and the templates.meta_get_report_viewOpen a report view and read its rows.meta_save_report_viewSave an Ads report as a named view.meta_set_thresholdsSet the goal event, targets and the funnel the account is judged on.meta_get_workspaceWhich workspace and ad account this session is on.meta_list_workspacesEvery workspace you belong to.meta_switch_workspaceMove the session to another workspace.meta_sync_nowPull the latest insights and ads from Meta.meta_backfill_insightsFill the daily warehouse back in time.meta_pull_account_historyPull every ad's lifetime insights and creative.meta_pull_account_defaultsRead audience and link defaults from the best recent campaign.meta_get_api_usageThis hour's Meta API quota.Customer language, competitors' ads and the brand's own strategy.
meta_search_ad_librarySearch the Meta Ad Library by keyword or advertiser.meta_list_swipesThe swipe file: saved reference ads.meta_save_swipeSave a reference ad from a link.meta_update_swipeReplace a swipe's tags or note.meta_get_recipeThe layout, copy and swappable slots of one static.meta_list_personasWho the ads speak to, with pains and desires.meta_list_anglesWhat the ads argue: promise, mechanism, pain.meta_list_formatsReusable creative shapes from the swipe file and library.meta_list_verbatimsCustomer quotes, exactly as written.meta_link_verbatimsFile quotes under a persona or an angle.meta_list_research_sourcesEvery research source and what it has fed.meta_add_research_sourceAdd reviews, a page or pasted text as research.meta_refresh_research_sourceFetch a source again for new material.meta_delete_research_sourceRemove a source and everything mined from it.meta_get_strategyThe workspace's brand and strategy: offer, pains, voice, proof.meta_update_strategyChange the brand and strategy.Brief the next test, write the copy, draft the creative, and keep what you learn.
meta_list_briefsThe Briefs board.meta_get_briefOne brief in full.meta_save_briefPut one brief on the board as a draft.meta_save_briefsBrief the next tests from the account's own winners.meta_update_briefChange a brief's fields, status or links.meta_list_testsCommitted tests and where they stand.meta_get_testOne test: its frozen question, links and observations.meta_create_testCommit to a next test; its question is frozen.meta_link_test_artifactsTie drafts, uploads and ads to a test.meta_observe_testRecord how a test is doing now, append-only.meta_conclude_testRecord a test's conclusion, once.meta_abandon_testStop a test without a conclusion.meta_list_learningsThe account's learnings: why something works here.meta_get_learningOne learning with its evidence and history.meta_save_learningRecord a learning.meta_update_learningChange or retire a learning.meta_list_messagingCopy lines with their status and the quotes they cite.meta_draft_messagingWrite copy lines for an angle from its evidence.meta_save_messagingAdd or edit a copy line by hand.meta_set_messaging_statusApprove, reject or send copy lines back to draft.meta_delete_messagingDelete copy lines written in error.meta_list_draftsGenerated drafts, newest first.meta_generate_draftGenerate a static that replicates a swipe's format.Every ad is created paused. Spending starts only when you approve it.
meta_launch_adsCreate ads paused, from the library or a link.meta_activateTurn a launch on. Needs your approval.meta_pause_launchPause a launch's ads.meta_set_ad_statusPause or resume one ad.meta_update_ad_set_targetingChange an ad set's placements or age range.meta_relink_launchChange a live launch's CTA, link or ad text.meta_list_launchesRecent launches with their Meta ids and status.meta_list_presetsLaunch presets: where ads go and who sees them.meta_save_presetCreate or update a launch preset.meta_list_pages_and_pixelsThe Page, pixel and Instagram account behind the ad account.meta_list_lead_formsThe Page's instant forms.meta_create_lead_formCreate an instant form on the Page.meta_send_test_leadSend a test lead through a form.A person signs in with OAuth in the browser. A headless agent sends an API key. Your Meta token never travels over MCP.
Claude, ChatGPT, Cursor and Claude Code open a sign-in window. You approve, the client keeps the token, and nothing is pasted.
Mint a key in Settings → API keys and send Authorization: Bearer rsk_…. The same key works on the REST API.
The campaign, ad set and ads land on Meta paused. Spend starts only when a person approves meta_activate.
meta_launch_adsWith a launch preset, only the creatives are required. Ad names follow your taxonomy.
Launching needs write scope. A read-only key stops here.
Numbers and claims your strategy doesn't back come back as cautions for you to read.
Meta can't rewrite the copy you approved.
The launch is recorded with its Meta ids, ready for review in Ads Manager.
meta_activate waits for youActivating needs the approval grant and your go-ahead in the conversation. Then spend starts.
Start read-only. Then hand your agent a real job.
Run an evidence health check on our Meta account and tell me which numbers I shouldn't trust yet. Don't change anything.
meta_get_evidence_healthFreshness, coverage and untagged spend, before any claim.Read-onlyHere is how fresh the data is, what the check flagged, and which numbers to hold back on until the gaps are fixed. Nothing was changed.
Everything else is in the docs.