Skip to main content
Glama

test_ads

Test ad creatives in Ads Labo, as on the web: a panel scrolls past the ad in the feed you choose (Facebook feed, Instagram feed, Reels or Stories) and says whether it would click, stop scrolling and remember the brand. One creative returns its predicted click-through rate with a 95% interval, stop-scroll and brand-recall rates, sentiment and breakdowns by age, gender, income and interest. Two to four return a verdict (ship one, tied, or neither), each version's share of the panel's picks and a head-to-head of the top two. You get the totals, without individual answers. Predicted rates are a panel's reading, set against the typical click rate for the placement and industry; read them as a comparison, not a forecast of a live campaign.

Every plan tests up to 4 creatives on a panel of 100, 200 (the default), 400 or 1,000, the sizes the web offers; priced per respondent, however many creatives.

Pass each creative as a public https link straight to the file (PNG/JPG/WEBP/GIF up to 10 MB, MP4/MOV/WebM/AVI/MKV/M4V up to 100 MB) that opens without signing in, not a page that shows it. Put the ad copy (brand, headline, post text, button) in campaign; the panel reads it with the creative.

RECOMMENDED FLOW: if the user didn't pick an audience, call list_demographic_presets and propose one or two; call preview_cost for the price; confirm with the user; then run. Studies are charged to the account's wallet at the same per-respondent rate as on the web. Price it with preview_cost(mode='ad_lab', population_size).

Takes a few minutes; the tool waits up to ~15 minutes and reports progress. On error='timeout' with a sim_id the study keeps running: collect it with get_simulation, do not re-run.

Returns: { id, status, mode='ad_lab', topic, demographic_preset, population_size, run_type, and for one creative: metrics {predicted_ctr, ctr_ci_low, ctr_ci_high, stop_scroll_pct, brand_recall_pct, sentiment_*_pct, mean_conviction, predicted_cvr}, creative {summary, core_message, emotional_tone, hook_strength}, context_benchmark {typical_ctr_pct, placement, vertical}; for 2-4: verdict {call, winner, headline}, variants [ {key, label, share_pct, pull_index} ], head_to_head; both: counts, cohorts, billing }.

Input Schema

NameRequiredDescriptionDefault
mediaYesThe creatives, in order (Variant A is the first): 1 to predict its performance, 2-4 to find which one the panel would click.
campaignNoThe ad around the creative. Every field is optional; an ad with no copy is tested on the creative alone.
languageNoLanguage the respondents answer in. Default: en.en
include_cvrNoAlso predict how many who click would complete the objective (predicted_cvr).
custom_audienceNoOptional filter narrowing the panel INSIDE the market preset. Keys (all optional): countries, regions, cities (each market's own vocabulary), age_min / age_max, genders ('all' | 'men' | 'women' | 'non_binary'), interests / interest_exclusions (taxonomy tags), income_min_tier / income_max_tier (affluence ladder 0-7, 7 = top), income_currency + income_min_amount / income_max_amount (REAL annual household amounts in a named ISO currency — currency is required with amounts; e.g. {'income_currency': 'USD', 'income_min_amount': 100000}), income_match ('position' = the equivalent affluence standing within each market's own income ladder, the default; 'absolute' = actual earnings at indicative FX), ethnicities / religions (multi-ethnic markets only). Preview a custom_audience with the free estimate_reach tool before paying for a run — it reports the audience size and which constraint cuts hardest. A 'small' audience is not a blocker: the panel is still delivered at the population_size you ask for, with every respondent matching the filter, and its age and gender mix follows the market's profile within the filter's age, gender, place, income and heritage terms (interest tags pick who within each group, not how many of each). Results carry panel_check (the panel's age, gender and region mix against that profile) and, for an uncommon audience, audience_note. Guide: https://crowdos.ai/mcp.
population_sizeNoRespondents: 100, 200 (the default), 400 or 1,000, the panels the web offers.
demographic_presetNoThe market the panel is drawn from. Use list_demographic_presets to see all options. Default: us_general_population.us_general_population

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does: it discloses wallet billing at per-respondent rates, the ~15 minute wait with progress reporting, the timeout/retry hazard, and the aggregation level ('You get the totals, without individual answers'). It also pre-empts misinterpretation by framing predicted rates as a panel's reading benchmarked against placement and industry, 'not a forecast of a live campaign'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded and the paragraph order (what it does → pricing → input rules → flow → returns) is logical. There is some duplication: 'Every plan tests up to 4 creatives on a panel of 100, 200 (the default), 400 or 1,000, the sizes the web offers' restates the population_size enum and media maxItems, and the long Returns block is dense, but it is load-bearing given there is no output schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter tool with nested objects, no annotations and no output schema, this is unusually complete: it documents the return shape per mode, billing, latency, timeout recovery, input validation rules, and how to interpret the numbers. An agent has everything needed to call it correctly and handle the failure case without guessing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description earns above that by adding constraints the schema does not carry — accepted file types and the 10 MB image / 100 MB video caps, and the requirement that the link open without signing in and point at the file, 'not a page that shows it'. It also ties population_size and media count to pricing, which the schema does not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource ('Test ad creatives in Ads Labo') and immediately explains the mechanism: a simulated panel scrolls past the ad in a chosen placement. It clearly splits the two modes (1 creative = predicted metrics, 2-4 = comparative verdict), so an agent knows exactly what it gets. It stops short of naming which sibling to use instead (e.g. screen_creatives or compare_options), so sibling differentiation is only implicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The RECOMMENDED FLOW block gives an explicit ordered sequence with named siblings: list_demographic_presets when no audience is picked, preview_cost for pricing, confirm with the user, then run. It also states the error path precisely ('On error=timeout with a sim_id... collect it with get_simulation, do not re-run'), which prevents duplicate spend. What's missing is any exclusion rule against the other analysis siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources