Brief and test
Run the creative learning loop on Meta. Brief the next test, commit it, hand the brief over, launch paused, observe and conclude.
Use this to plan a creative test, check a running one or record what one showed. In
Claude Code the plugin starts it with /winandscale:test. The model behind it is
The Test loop.
Know what is already known
meta_list_tests and meta_get_test list the Tests this account has run, is running
or has planned. Concluded Tests, failures included, are the prior for the next one.
Brief
Start from nextTests in meta_get_history_winners, or from the person's idea. Save a
Next test's brief with meta_save_briefs, or put one brief on the board with
meta_save_brief. meta_list_briefs shows what is saved. A brief may quote only numbers its
evidence carries: a computed Next test's evidence, the cited learnings, or the
workspace offer and proof points.
Commit
meta_create_test freezes the hypothesis and the rule it will be judged by. A committed
Test is never rewritten. To change it, abandon it (meta_abandon_test) and create a new
one, or create a new Test with supersedesId.
Hand off, then launch
Win & Scale does not make images or video. The creative is produced outside it, by a
designer, a UGC creator or the person's own tool. Hand over the brief
(meta_get_brief) and, for a static, the reference's recipe (meta_get_recipe): its
format, layout zones, copy and which slots a variation can change.
Once you have the files, launch them with meta_launch_ads, passing the Test's testId
and the briefId. The ads launch paused, and switching them on is the person's
call (Launch paused). meta_link_test_artifacts attaches
uploads, ads or launches made elsewhere, such as in Ads Manager.
Observe
After delivery, meta_observe_test appends what the numbers show. Observations are
append-only. Low delivery reads as inconclusive.
Conclude
meta_conclude_test records supported, rejected, inconclusive or invalid, with a note
on what it means for the next creative. If the human disagrees with the latest
Observation, they give an overrideReason, which is kept in the note.
Tests, briefs and Observations never change what is delivering.
Over REST
| Task | Endpoint |
|---|---|
| Briefs | GET /api/v1/briefs, POST /api/v1/briefs, POST /api/v1/briefs/board, PATCH /api/v1/briefs/{briefId} |
| Recipe | GET /api/v1/creatives/{creativeId}/recipe |
| Commit | POST /api/v1/tests |
| Link | POST /api/v1/tests/{testId}/links |
| Observe | POST /api/v1/tests/{testId}/observations |
| Conclude or abandon | POST /api/v1/tests/{testId}/conclusion, /abandon |
Next tests come from meta_get_history_winners, which is MCP-only. Over REST, commit a
custom Test with your own hypothesis and evidence. Send an Idempotency-Key on
the creates (Idempotency).
A prompt to start with
Brief our next creative test from the history winners. Show me the brief and the
rule it will be judged by, and wait for my go-ahead before you commit it.