Skip to main content
Glama
stephenlavender

creative-tagger-mcp

Creative Tagger MCP Server

The MCP layer for Creative Tagger — plug structured creative intelligence into any AI agent (Claude Desktop, Cursor, Windsurf, ChatGPT with MCP, etc.).

Release note (2026-08-30): this source tree and its packaged metadata are version 0.2.5. The hosted and stdio surfaces are separate clients of the same API and may expose different tool counts. The companion API must be deployed and live before this stdio release is tagged and published.

Your AI of choice gets:

  • Taxonomy — 21 standardized dimensions for any ad creative (video, image, carousel, landing page, long video, email)

  • Memory — every analysis is saved to the user's library; the agent can search it, recall patterns, and pull individual results

  • Brand-custom taxonomy — extend the standard taxonomy with each brand's founders, products, segments, aliases, and naming variables

  • Meta performance memory — read-only Meta sync/status/tools so agents can reason over objective-aware results, unproven tags, observational demographic delivery, and taxonomy gaps

  • Brain learnings — auto-written account learnings in plain language, with agent-ready context for the next brief

  • Strategist — recommendation + gap-analysis tools that reason over the user's library plus saved brand context (voice, audience, anti-patterns)

  • Competitive intelligence — scan a competitor's Meta Ad Library through Creative Tagger's native Market access

Quick Start

For clients that support remote MCP, connect the current hosted server:

URL: https://api.creativetagger.ai/mcp/
Authorization: Bearer ct_your_key

The repository package is the stdio path for clients that require a local command:

# Install this release after it appears on PyPI
pip install creative-tagger-mcp==0.2.5

# Run against production (default)
CREATIVE_TAGGER_API_KEY=ct_your_key creative-tagger-mcp

# Or against a local API
CREATIVE_TAGGER_URL=http://localhost:8000 \
CREATIVE_TAGGER_API_KEY=ct_your_key \
  creative-tagger-mcp

Get an API key at app.creativetagger.ai.

Related MCP server: muze-mcp

Release Verification

Before publishing a new MCP version, build the artifacts and smoke-test the wheel that will be uploaded to PyPI:

python -m build
python scripts/smoke_release.py
python -m twine check \
  dist/creative_tagger_mcp-0.2.5-py3-none-any.whl \
  dist/creative_tagger_mcp-0.2.5.tar.gz

The smoke test installs the wheel into a temporary virtualenv, verifies the creative-tagger-mcp console entry point, checks the package version, and confirms the V1 tool surface is present from the installed artifact.

Publishing to PyPI

The release workflow publishes from GitHub Actions after it builds the package, runs scripts/smoke_release.py, and passes twine check.

After the 0.2.5 review and API-dependency gates pass, tag the exact current main commit:

git tag -a v0.2.5 -m "Creative Tagger MCP v0.2.5"
git push origin refs/tags/v0.2.5

The workflow supports PyPI trusted publishing with GitHub OIDC. Configure the PyPI publisher for repository stephenlavender/creative-tagger-mcp, workflow .github/workflows/publish.yml, environment pypi, then push the version tag.

Exact PyPI trusted publisher values:

  • PyPI project: creative-tagger-mcp

  • Publisher: GitHub

  • Owner: stephenlavender

  • Repository: creative-tagger-mcp

  • Workflow filename: publish.yml

  • Environment name: pypi

If the workflow fails with invalid-publisher, PyPI does not have a trusted publisher matching those claims yet. Add the publisher above, then rerun the failed workflow or push the version tag again.

Fallback path: add a GitHub Actions repository secret named PYPI_API_TOKEN containing a PyPI project token. The same workflow will use that token when it is present.

Local fallback:

python -m build
python scripts/smoke_release.py
python -m twine check \
  dist/creative_tagger_mcp-0.2.5-py3-none-any.whl \
  dist/creative_tagger_mcp-0.2.5.tar.gz
python -m twine upload \
  dist/creative_tagger_mcp-0.2.5-py3-none-any.whl \
  dist/creative_tagger_mcp-0.2.5.tar.gz

Always select the exact release artifacts for a local upload. A reused checkout may contain older valid distributions in dist/; never publish with twine upload dist/*.

Add to Claude Desktop

~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "creative-tagger": {
      "command": "creative-tagger-mcp",
      "env": {
        "CREATIVE_TAGGER_URL": "https://api.creativetagger.ai",
        "CREATIVE_TAGGER_API_KEY": "ct_your_key_here"
      }
    }
  }
}

Restart Claude Desktop. The tools appear in the MCP picker.

Tools

analyze_creative

Analyze any ad creative and get structured classification across 21 dimensions.

{ "file_path": "./ad.mp4", "brand_name": "Brand" }
{ "url": "https://example.com/landing-page", "brand_name": "Brand" }
{ "html_content": "<html>...</html>", "brand_name": "Brand" }

Results auto-save to the user's library.

get_taxonomy

Read taxonomy v2's versioned vocabulary or one dimension. The package returns 15 controlled dimensions, one derived/open aspect_ratio dimension, and two intentionally dynamic, brand-specific dimensions. Aspect ratio includes common canonical examples but sets allow_other_values: true: the API may derive any reduced WxH ratio (such as 3x2 or 300x157) or preserve a W:H ratio for long video. The package does not infer enums from OpenAPI: several valid classification fields are strings in that schema, so schema discovery would silently return an incomplete taxonomy.

{}                                # all controlled + derived/open + dynamic dimensions
{ "dimension": "hook_type" }      # one dimension
{ "dimension": "aspect_ratio" }   # examples; other derived values remain valid

Taxonomy v2 splits three dimensions the old model mixed together: media type (the auto-detected format — static image, video, carousel; never AI-classified), asset type (production class: UGC, Studio, High Production, …), and visual format (execution style: Talking Head, Demo, Testimonial, …). Static Image and Carousel are media types and are no longer valid visual_format values. messaging_angle is the canonical angle dimension.

list_workspaces

List the authenticated user's available workspaces. Start every connected account workflow here, select one returned brand_name, and pass that exact value to every library, Meta status, report, and strategist call. Do not blend observations across workspaces unless the user explicitly requests a comparison.

{}

list_library

Browse saved analyses. Search by filename or hook, filter by format, messaging angle, emotion, CTA, talent, offer, audio type, or seasonality, and sort by joined performance. limit is clamped to 1–100 and offset to zero or higher before the request leaves the local stdio server.

{
  "brand_name": "Acme",
  "limit": 50,
  "search": "BFCM",
  "format": "video",
  "angle": "Social Proof",
  "talent": "Founder",
  "sort": "roas"
}

get_library_patterns

Cross-library pattern insights — concentration and diversity per dimension, plus rule-based diversification flags. Pass the exact workspace brand_name returned by list_workspaces.

get_analysis

Pull the full 21-dimension result for one library item.

{ "brand_name": "Acme", "analysis_id": 42 }

recommend

Ask the Creative Strategist a question grounded in the user's library + brand context.

{ "brand_name": "Acme", "question": "What kind of UGC should I test for Q4?" }

Returns concrete recommendations using taxonomy values + library observations.

analyze_gaps

Identify concentration risk in the library and propose next creatives that diversify it.

{ "brand_name": "Acme" }

get_brand_context / set_brand_context

Long-term memory per brand. Voice, target audience, top performers, anti-patterns, notes. set_brand_context is a partial update: omitted fields stay unchanged, while an explicit empty string or list clears only that field.

set_brand_context: {
  "brand_name": "Acme",
  "voice": "clinical, precise, no personality",
  "target_audience": "new moms 28-40, postpartum recovery",
  "top_performers": ["UGC TalkHead", "BeforeAfter visuals"],
  "anti_patterns": ["loud humor", "celebrity endorsement"],
  "notes": "Q4 focus: gift-shoppers + retention"
}

Strategist tools auto-include this context.

get_brand_taxonomy / set_brand_taxonomy_value / delete_brand_taxonomy_value / set_brand_entity / delete_brand_entity

Customize the standard taxonomy for one brand without breaking cross-brand reporting.

set_brand_taxonomy_value: {
  "brand_name": "Acme",
  "dimension": "talent",
  "value": "Stephen Lavender / Founder",
  "aliases": ["Stephen", "founder"],
  "description": "Use when Stephen appears or is referenced"
}

set_brand_entity: {
  "brand_name": "Acme",
  "entity_type": "product",
  "name": "Creative Tagger",
  "aliases": ["CT", "tagger"]
}

delete_brand_taxonomy_value: {
  "brand_name": "Acme",
  "dimension": "talent",
  "value": "Old Founder Label"
}

delete_brand_entity: {
  "brand_name": "Acme",
  "entity_type": "product",
  "name": "Retired Product"
}

get_naming_variables / list_naming_templates / save_naming_template

Manage saved naming templates from your agent. Templates support standard taxonomy fields plus brand-custom variables like founder, product, offer, customer_segment, icp, and campaign_label. Saved templates auto-apply to future analyze_creative results.

save_naming_template: {
  "name": "default",
  "template": "{brand}_{founder}_{customer_segment}_{hook_type}_{cta}_{ratio}_{version}"
}

Use preview_naming_template to test a template before saving, and delete_naming_template to remove one.

get_meta_status / sync_meta_performance

Check or trigger read-only Meta performance memory. No campaign creation, no budget edits. Creative Tagger must have an approved native Meta OAuth connection before customer accounts can sync Meta performance. Pass attribution_windows when the buyer uses a non-default Meta lookback window and Creative Tagger should match Ads Manager exactly.

{
  "brand_name": "Acme",
  "date_preset": "last_30d",
  "attribution_windows": ["7d_click", "1d_view"]
}

get_creative_strategy_report

Pull the same strategy matrix shown in Creative Tagger Reports. Defaults to visual formats by messaging angles, with states for next tests, live learning, winners, losers, fatigue, and gaps. Returns the decision queue and a bounded matrix slice for agent strategy work. Detailed responses also include an agent_context payload that can be handed directly to an LLM. Supports creative-diagnostics metrics such as CTR, thumbstop, hook, hold, video milestone rates, CPA, CVR, ROAS, revenue, spend, and funnel score. For audience-mode reads, switch the axes to demographic dimensions such as demographic_age and demographic_gender, or use the demographic-read or audience-signals templates. Other built-in templates include creative-winners, fatigue-watch, coverage-gaps, hook-performance, and persona-read. Creative axes follow taxonomy v2: visual_format (execution style), asset_type (production class), and media_type (auto-detected format) are three separate dimensions, with ad_type kept as a deprecated alias for visual_format. Demographics are account-level only, with no per-ad key: pairing a creative tag axis with a demographic axis is structurally not_applicable and returns an explicit cross_contract instead of a populated grid. Audience-mode matrices need BOTH axes to be demographic instead — e.g. demographic_age by demographic_gender (the demographic-read template), or demographic_segment by demographic_signal (the audience-signals template). Add fatigue_minimum_calendar_days when fatigue should only count after a long enough live window, not just after a few close-together synced points. For fatigue-aware reads, pass the same embedded watch controls the app/API support: watch_group_by, watch_metric, watch_signal_focus, watch_trajectory_focus, watch_coverage_focus, watch_minimum_points, watch_minimum_calendar_days, watch_maximum_gap_days, and watch_limit. The decision-queue limit is clamped to 1–25, while watch_limit is clamped to 1–10, before the API request. Responses default to response_format: "concise" with at most 24 matrix cells to keep the result bounded. Set response_format: "detailed" explicitly for the richer report fields, including agent_context. Both formats respect max_cells; raise it (up to 200) when a larger matrix slice is needed.

{
  "brand_name": "Acme",
  "report_template": "next-tests",
  "rows": "visual_format",
  "columns": "messaging_angle",
  "metrics": "spend,ctr,thumbstop_rate,hook_rate,hold_rate,cpa",
  "response_format": "concise",
  "max_cells": 24
}
{
  "brand_name": "Acme",
  "report_template": "demographic-read",
  "rows": "demographic_age",
  "columns": "demographic_gender",
  "metrics": "spend,roas,ctr,cpa,conversions,revenue",
  "roas_target": 2.5,
  "fatigue_minimum_calendar_days": 7,
  "watch_group_by": "hook_type",
  "watch_metric": "cpa",
  "watch_signal_focus": "fatigued",
  "watch_trajectory_focus": "worsening",
  "watch_coverage_focus": "windowed_history",
  "watch_minimum_points": 2,
  "watch_minimum_calendar_days": 7,
  "watch_maximum_gap_days": 7,
  "watch_limit": 5,
  "start_date": "2026-05-01",
  "end_date": "2026-05-31"
}
{
  "brand_name": "Acme",
  "report_template": "audience-signals",
  "rows": "demographic_signal",
  "columns": "demographic_segment",
  "metrics": "spend,roas,ctr,cpa,conversions,revenue",
  "date_preset": "last_30_days"
}
{
  "brand_name": "Acme",
  "report_template": "hook-performance",
  "rows": "hook",
  "columns": "ad_type",
  "metrics": "spend,hook_rate,hold_rate,roas,ctr,cpa",
  "fatigue_minimum_calendar_days": 7,
  "date_preset": "last_30_days"
}

get_brain_learnings

Read the auto-written Brand Brain learnings generated from performance memory, strategy cells, taxonomy winners/watchouts, and audience signals. Returns a hero learning, concise stories, and an agent_context payload for the next brief or strategist prompt. Use kinds when an agent only wants a focused slice such as conclusion, working,audience, or watch. Add conclusion_statuses to narrow conclusion stories to winner, fatigued, or loser outcomes only, and conclusion_recency_days to keep only the most recent conclusion window. Use watch_group_by, watch_metric, watch_signal_focus, watch_trajectory_focus, watch_coverage_focus, watch_minimum_points, watch_minimum_calendar_days, watch_sources, and fatigue_decay_threshold when the watchouts should be written from a different fatigue lens such as fatigued-only CPA by ad type, weak taxonomy patterns only, CTR by hook, or stable ROAS by demographic_segment. When kinds includes audience, audience_signal_focus accepts the canonical values all, higher_observed_efficiency, or lower_observed_efficiency. The same vocabulary applies to get, save, and export operations. Across all three operations, story limit is clamped to 1–12 and audience_limit is clamped to 1–10 before the API request.

{
  "brand_name": "Acme",
  "date_preset": "last_30_days",
  "minimum_spend": 500,
  "learning_spend": 1500,
  "kinds": "conclusion,watch,audience",
  "audience_signal_focus": "higher_observed_efficiency",
  "conclusion_statuses": "winner,fatigued",
  "conclusion_recency_days": 21,
  "watch_group_by": "ad_type",
  "watch_metric": "cpa",
  "watch_signal_focus": "fatigued",
  "watch_trajectory_focus": "worsening",
  "watch_coverage_focus": "windowed_history",
  "watch_minimum_points": 3,
  "watch_minimum_calendar_days": 7,
  "watch_sources": "timeseries,patterns",
  "fatigue_decay_threshold": 0.25,
  "limit": 6
}

save_brain_learnings

Persist the current auto-written Brand Brain learnings into saved Brain notes for a brand, using the same filtering controls as get_brain_learnings. Use this after reviewing a conclusion/working/watch/audience/gap slice when the user wants the best current learnings saved back into reusable strategist context.

{
  "brand_name": "Acme",
  "date_preset": "last_30_days",
  "minimum_spend": 500,
  "learning_spend": 1500,
  "kinds": "conclusion,watch,audience",
  "audience_signal_focus": "lower_observed_efficiency",
  "conclusion_statuses": "winner,fatigued",
  "conclusion_recency_days": 21,
  "watch_group_by": "ad_type",
  "watch_metric": "cpa",
  "watch_signal_focus": "fatigued",
  "watch_trajectory_focus": "worsening",
  "watch_coverage_focus": "windowed_history",
  "watch_minimum_points": 3,
  "watch_minimum_calendar_days": 7,
  "watch_sources": "timeseries,patterns",
  "include_gaps_in_notes": false,
  "limit": 6
}

export_brain_learnings_context

Export the bounded agent_context from get_brain_learnings, including its filtered learning stories and follow-up Strategy/time-series queries. It uses the same controls and canonical audience_signal_focus values as the get and save tools.

{
  "brand_name": "Acme",
  "kinds": "audience",
  "audience_signal_focus": "higher_observed_efficiency",
  "limit": 6
}

get_performance_timeseries

Read saved performance curves for fatigue checks without opening the dashboard. Returns dated points plus a fatigue signal for each grouped series, using the same decay threshold as Creative Tagger's strategy matrix. Group by creative, campaign, landing page, analysis_id, or audience slices like demographic_age, demographic_gender, demographic_segment, and demographic_signal, and inspect metrics like ROAS, CPA, CTR, CPM, thumbstop, completion rate, or funnel score. Use signal_focus when an agent only wants the current fatigue watchlist or only stable controls, and trajectory_focus when the agent wants only worsening, improving, flat, or insufficient-data series. Use coverage_focus to isolate call-ready, gappy, short-window, or windowed-history curves. Add minimum_calendar_days when fatigue should only count after a trend has been live long enough, not just after a few close-together points. Both this tool and its context export clamp limit to 1–10 grouped series locally.

{
  "brand_name": "Acme",
  "date_preset": "last_30d",
  "group_by": "ad_name",
  "metric": "roas",
  "signal_focus": "fatigued",
  "trajectory_focus": "worsening",
  "coverage_focus": "call_ready",
  "minimum_spend": 500,
  "minimum_points": 3,
  "minimum_calendar_days": 7,
  "fatigue_decay_threshold": 0.18,
  "limit": 5
}

Use date_preset for a standard lookback window, or pass explicit start_date / end_date to override it.

export_performance_timeseries_context

Return the reusable agent_context payload from performance time series. Use this when another agent needs the fatigue decision queue, summary text, action mix, top groups, and prompt-ready export without carrying the full chart payload. It accepts the same inputs as get_performance_timeseries.

{
  "brand_name": "Acme",
  "date_preset": "last_30d",
  "group_by": "ad_name",
  "metric": "roas",
  "signal_focus": "fatigued",
  "trajectory_focus": "worsening",
  "coverage_focus": "call_ready",
  "minimum_spend": 500,
  "minimum_points": 3,
  "minimum_calendar_days": 7,
  "fatigue_decay_threshold": 0.18,
  "limit": 5
}

Internal migration/backfill tools are hidden from the default published MCP surface. They require CREATIVE_TAGGER_INTERNAL_BACKFILL_TOOLS=1 and should not be used in customer flows or to avoid Meta approval.

get_meta_performance_summary

Read saved Meta performance memory without triggering a sync.

{ "brand_name": "Acme" }

Returns account totals plus performance by standard taxonomy and brand-custom taxonomy. Each aggregate can include funnel_score and a funnel explanation object for capture -> hold -> bring-to-site -> convert diagnosis.

get_taxonomy_performance

Find historical tag associations, under-observed tags, and standard taxonomy values that have not been tested. Rows include ROAS, CTR, thumbstop, and funnel scores when performance memory exists. These are observational comparisons; validate a promising tag with a one-variable controlled test.

{ "brand_name": "Acme", "dimension": "hook_type", "spend_threshold": 500 }

get_prebuilt_reports

Return ready-made Motion-style reports: best hooks, landing pages, messaging angles, audiences, offers, CTAs, visual formats, and brand-custom values. Add start_date / end_date when the report should only cover a specific synced window. limit is clamped to 1–50 rows per report before the API request.

{ "brand_name": "Acme", "report_id": "best_hooks", "limit": 8 }
{ "brand_name": "Acme", "report_id": "best_angles", "start_date": "2026-05-01", "end_date": "2026-05-31", "limit": 8 }

create_custom_report

Build a custom report from selected standard or brand taxonomy dimensions and rank the actual matched dimension combinations by ROAS, funnel score, spend, CTR, or CPA. Use this for Motion-style views like best hook x landing page x offer, founder x hook, audience x offer, or brand segment x product. Add start_date and end_date when the report should isolate a specific test window instead of the full synced history. limit is clamped to 1–50 rows before the API request.

attribution accepts blended, 7d_click, 1d_view, or incremental. Omitting it and passing blended return the byte-identical legacy response. The selected basis recomputes only conversion-derived metrics (conversions, revenue, CPA, ROAS, and CVR); delivery, rate, and video metrics stay unchanged. Incremental results are labelled modelled, and an unmeasured conversion value is never turned into zero.

{
  "brand_name": "Acme",
  "dimensions": ["hook_type", "landing_page", "offer_type"],
  "layer": "all",
  "metric": "roas",
  "attribution": "7d_click",
  "start_date": "2026-05-01",
  "end_date": "2026-05-31"
}

Rows can include parts and values, so the agent can explain a winning combination instead of treating each tag independently.

Saved custom reports

Save reusable report definitions, list them for a brand, rerun them by id, or delete them when they are no longer needed. Saved reports can also persist a custom start_date / end_date window for a specific launch or test period, plus dashboard-style preset state such as view_type, date_range, group_by, metrics, filters, sort, and saved_metric_preset. Current chart view types are table, bar, line, and pie. save_custom_report clamps limit to 1–50 rows before the API request. The API accepts attribution on a save request but does not persist it; run_saved_custom_report always replays blended attribution.

{
  "brand_name": "Acme",
  "name": "Hook + LP + Offer",
  "dimensions": ["hook_type", "landing_page", "offer_type"],
  "view_type": "table",
  "date_range": "custom",
  "group_by": "dimension",
  "metrics": ["spend", "roas", "cpa", "ctr"],
  "filters": [{"field": "status", "value": "winner"}],
  "sort": "desc",
  "saved_metric_preset": "delivery",
  "start_date": "2026-05-01",
  "end_date": "2026-05-31"
}
{ "brand_name": "Acme" }
{ "report_id": 7 }

Tools: save_custom_report, list_custom_reports, run_saved_custom_report, delete_custom_report.

get_creative_leaderboard

One ranked list answering "which creatives should I scale or kill." One row per creative for the window (default last_14_days), ranked by rank_by (roas | cpa | spend | ctr | thumbstop, default roas), each with thumbnail/media, spend, spend_share, measurement states, days_running, and a first/second-half trend_direction. A creative below min_spend (default 500, the shared materiality floor) is flagged below_min_spend, excluded from the ranks, and never crowned a winner on thin spend — but still returned and counted. direction (winners | losers | all) slices the ranked half. When the workspace's performance evidence is not decision-safe (stale sync, no Meta connection), rankings_withheld is true and every row drops to observation-only with no rank. launched_after / launched_before (YYYY-MM-DD) scope the ranked population to creatives first synced in that window; limit is clamped to 1–50.

{ "brand_name": "Acme", "window": "last_14_days", "rank_by": "roas", "direction": "winners", "min_spend": 500, "limit": 20 }

get_batch_readout

Grades a launch cohort against the rest of the account. Given a launch window (launched_after / launched_before, YYYY-MM-DD — at least one required), every creative first synced in that window gets a three-way verdict — promising, underperforming, or insufficient_evidence — against a same-window baseline built from every other creative (the baseline excludes the batch, so a new cohort is judged like-for-like, never against its own numbers). verdict_counts totals the three buckets. insufficient_evidence always carries a verdict_reason: most often below_min_spend (expected for roughly half of most batches — that honesty is the point), or metric_not_applicable when the creative's objective/format does not track rank_by (e.g. roas on a leads creative), in which case it is also excluded from the baseline. rank_by is roas | cpa | ctr | thumbstop. Verdicts are withheld when evidence is not decision-safe; limit is clamped to 1–50.

{ "brand_name": "Acme", "launched_after": "2026-06-01", "launched_before": "2026-06-14", "window": "last_30_days", "rank_by": "roas" }

compare_periods

Period-over-period: "is it the ads, the auction, or the site?" Compares period_a (baseline) to period_b (the "after" window); each period is either a preset (this_week, last_week, last_7_days, last_14_days, last_30_days, last_90_days, this_month, last_month) or an explicit period_X_start / period_X_end (YYYY-MM-DD) pair — never both, and the two windows must not overlap. Returns account-level deltas (spend, revenue, ROAS, CPA, CPM, CTR, thumbstop, click-to-purchase rate, AOV) with measurement states honored, plus a multiplicative funnel decomposition whose dominant_factor names why a ROAS/CPA change happened — auction (CPM), creative_engagement (CTR), landing_conversion (CVR), order_value (AOV), or mixed. When revenue reported a measured $0 in a period, the decomposition falls back to CPA and returns a non-null revenue_caution — trust it when present: the revenue collapse itself is the likely explanation, not the delivery reading. Optional group_by (creative or a taxonomy dimension) adds per-value deltas and biggest_movers; limit is clamped to 1–25.

{
  "brand_name": "Acme",
  "period_a_preset": "last_week",
  "period_b_preset": "this_week",
  "metric": "roas",
  "group_by": "hook_type"
}

predict_creative

Despite the legacy tool name, this is not a forecast. It compares a saved analysis or draft attributes with the brand's historical tag-level performance and returns an explicit observational association score and controlled-test hypotheses—never a forecast, lift estimate, or causal recommendation. Turn a promising association into a falsifiable, one-variable controlled test with a predeclared primary metric, minimum data, guardrails, and ship/stop criteria. Version 0.2.5 sends the required predict_observational.v2 request handshake and rejects legacy or mixed response shapes instead of decorating them. A contract mismatch returns no prediction evidence.

{
  "brand_name": "Acme",
  "attributes": { "hook_type": "Question", "cta": "Shop Now" },
  "objective_metric": "cpa",
  "goal_direction": "lower_better"
}

get_demographics_performance

Read age x gender delivery with account-relative higher and lower observed- return-per-spend bands. These bands are descriptive associations, not audience outcome or action verdicts. Use date_preset for a standard audience window, or start_date / end_date to isolate a specific audience window.

{
  "brand_name": "Acme",
  "date_preset": "last_30_days",
  "start_date": "2026-05-01",
  "end_date": "2026-05-31"
}

export_demographics_context

Return an agent-ready audience context payload from the saved demographics read. Use this when another agent needs higher and lower observed-efficiency bands, raw totals, per-segment account-wide tag reads and trend views, and a prompt-ready descriptive summary without the full wrapper. Demographics are account-level only, with no per-ad key — every follow-up query stays a separate demographic-only or tag-only read, never a joined tag x demographic cross. Outcome direction stays withheld until an objective metric and direction are predeclared. limit is clamped to 1–100 segments per observed-efficiency band.

{
  "brand_name": "Acme",
  "date_preset": "last_30_days",
  "limit": 3
}

generate_brand_taxonomy

Generate brand-specific messaging themes and intended audiences from the analyzed creative library, then optionally save them to Brand Taxonomy Studio.

{ "brand_name": "Acme", "persist": true }

scan_competitor

Classify a competitor's Meta Ad Library ads and get strategy breakdown. limit is clamped to 1–50 ads before the API request.

{ "brand_name": "Acme", "page_name": "Hims & Hers", "limit": 25 }

Internal competitor-row backfill is also hidden from the default published MCP surface. Customer-facing competitor intelligence should use scan_competitor after native Meta Ad Library access is approved.

get_competitor_scan_history

Read the saved Market scans/imports for a workspace without re-running Meta Ad Library access. Useful when the agent needs the latest saved competitor hooks, styles, or scan metadata before drafting briefs. limit is clamped to 1–50 saved scans before the API request.

{ "brand_name": "Acme", "limit": 6 }

get_competitor_scan_detail

Read one saved competitor scan/import in full, including the stored ads, per-ad analyses, original query, and aggregate strategy breakdown. Use the scan_id returned by get_competitor_scan_history to reopen a specific past market read for grounded follow-up briefing without re-running Meta Ad Library access.

{ "scan_id": 42 }

generate_naming

Build naming strings from already-classified attributes (rarely needed — analyze_creative already includes naming).

Prompts

Beyond the tools above, this server exposes 10 MCP prompts (prompts/list, prompts/get) — turnkey report recipes. Each one tells the calling agent exactly which tools to call, in what order and with what arguments, and how to write up the result: a shared measurement-states vocabulary (measured / not_applicable / not_reported — never a guessed number), spend floors before calling winners or losers, explicit insufficient-evidence verdicts, and a verdict-first, receipts-after output format. Any MCP client with prompt support can run these directly; arguments arrive as strings and are validated the same way tool arguments are — invalid enum values, malformed dates, and reversed date ranges (start after end) all raise a protocol-level INVALID_PARAMS error instead of rendering a broken recipe. Default date windows are UTC-anchored (datetime.now(timezone.utc)); date_preset never accepts custom on a prompt that has no start_date/end_date argument of its own, since an unpaired custom window is unsafe across these tools (some silently read all-time history, others reject it outright).

weekly_creative_report

The Monday artifact: freshness-stamped totals, tag-level winners/losers, top-spender fatigue watch, and a decision queue. brand_name (required), date_preset (last_7_days | last_30_days, default last_7_days), target_roas, target_cpa, spend_threshold (default 500).

fatigue_check

Ranked fatigue watchlist for the top spenders before it shows up in ROAS. brand_name (required), top_n (1-10, default 5), metric (roas | cpa | ctr | thumbstop_rate, default roas), date_preset (last_30d | last_90d, default last_30d).

scale_kill_hold

Morning triage: every material creative bucketed into scale/kill/hold/insufficient-evidence against a declared target. brand_name (required), objective_metric (roas | cpa, required), target_value (required), minimum_spend (default 500), date_preset (all_time | last_7_days | last_30_days | last_90_days, default last_30_days).

what_to_make_next_brief

Turns performance and coverage gaps into next sprint's production brief. brand_name (required), production_slots (default 5), formats_available (optional), date_preset (all_time | last_7_days | last_30_days | last_90_days, default last_30_days).

hook_report

Which hooks earn the view AND the purchase, which get skipped, and which are wearing out. brand_name (required), date_preset (all_time | last_7_days | last_30_days | last_90_days, default last_30_days), spend_threshold (default 500).

batch_readout

Grades a creative batch against the account baseline, with an explicit too-early-to-judge bucket. brand_name (required), batch_start_date (required, YYYY-MM-DD), batch_end_date (default today), baseline_preset (default last_90_days).

monday_money_check

The founder's one-glance verdict: above/below breakeven, better/worse than last week (Meta- attributed only — blended MER is reported not_applicable). brand_name (required), breakeven_roas (required unless target_cpa is given), target_cpa (optional), date_preset (last_7_days | last_30_days, default last_7_days).

competitive_whitespace

Diffs a competitor's live ad strategy against your own library on the same taxonomy. brand_name (required), competitor (optional page name — omit to reuse the latest saved scan), country (default US), run_fresh_scan (default false), date_preset (all_time | last_7_days | last_30_days | last_90_days, default last_90_days).

audience_read

Who your spend is reaching vs. who is efficiently converting, broken by age and gender, reported alongside (never crossed with) messaging-angle and hook performance, as observed associations with the controlled tests that would confirm them. brand_name (required), objective_metric (roas | cpa | ctr, required), goal_direction (maximize | minimize, required, must agree with objective_metric), date_preset (all_time | last_7_days | last_30_days | last_90_days, default last_30_days).

client_review_pack

The monthly business-review skeleton: totals, winner pattern, testing slide, audience read, competitor context, and next month's test proposal. brand_name (required), period_start/period_end (required, YYYY-MM-DD), client_cpa_target (optional), include_competitors (default true).

Architecture

Your AI agent  ←—stdio—→  creative-tagger-mcp  ←—HTTPS—→  api.creativetagger.ai
                                                              │
                                                              ├── Gemini 3.5 Flash (default classifier)
                                                              ├── Claude Sonnet 5 (configured fallback)
                                                              ├── SQLite (library + brand memory)
                                                              └── Meta Ad Library

You bring the agent. We provide the taxonomy, the memory, and the strategist.

License

MIT

Available Tools

43 tools
analyze_creativeA

Analyze any ad creative (image, video, carousel, landing page, email) and return structured classification across 21 dimensions: media type, asset type, visual format, visual style, talent and talent demographics, hook type, messaging angle, audience, CTA, emotion, audio type, voiceover tone, seasonality, offer type, aspect ratio, duration, and more. Also generates standardized naming conventions. Provide one of: file_path, url, or html_content.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoURL to analyze. Direct file URL (image/video) or landing page URL.
formatNoOptional explicit format: image, video, long_video, carousel, landing_page, or email.
versionNoNaming convention version number
file_pathNoLocal file path to analyze (image or video)
brand_nameNoBrand name for naming conventionsBrand
file_pathsNoMultiple local image paths to analyze as a carousel. Posts them to the API's `files` field.
html_contentNoRaw HTML for email creative analysis
forensic_modeNoRequest first-3-second forensic frame extraction for video
include_transcriptNoInclude transcript for video analysis

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It describes what the tool does (returns classification) but does not disclose behavioral traits such as being read-only, idempotent, or requiring specific permissions. It assumes safe operation but lacks explicit safety guarantees.

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

Conciseness5/5

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

The description is two sentences with no redundancy. The first sentence clearly conveys the tool's purpose and output scope; the second specifies input options. Information density is high, and the most critical details are front-loaded.

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

Completeness3/5

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

Given 9 parameters, 100% schema coverage, and no output schema, the description is moderately complete. It lists many output dimensions but does not specify the structure or format of the returned classification. The 'naming conventions' aspect is mentioned but not detailed. More explicit output guidance would improve completeness.

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

Parameters3/5

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

Schema description coverage is 100%, so the description's added value over the schema is limited. The description reiterates the input options (file_path, url, html_content) already present in the schema, but does not provide additional context or constraints beyond what the schema already offers.

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

Purpose5/5

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

The description clearly states the tool analyzes ad creative and returns structured classification across 21 specific dimensions, plus generates naming conventions. It lists input options (file_path, url, html_content) and distinguishes itself from sibling tools like analyze_gaps (which likely focuses on gap analysis) and predict_creative (for prediction).

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

Usage Guidelines2/5

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

The description does not provide explicit guidance on when to use this tool versus alternatives. It implies broad applicability ('analyze any ad creative') but offers no when-not-to-use scenarios or comparisons with siblings such as analyze_gaps, predict_creative, or get_analysis.

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

analyze_gapsA

Identify gaps in the user's creative library for a given brand and propose concrete next creatives that fill them. Surfaces concentration risk (e.g., 78% UGC TalkHead) and recommends under-represented hook types, messaging angles, creative types. Returns JSON with gap analysis + ready-to-produce briefs.

ParametersJSON Schema
NameRequiredDescriptionDefault
brand_nameYesBrand to analyze

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the full burden. It discloses what the tool surfaces (concentration risk, under-represented types) and that it returns JSON with gap analysis and briefs. However, it does not explicitly state whether the tool is read-only, if any data is modified, or what permissions are required. The behavioral traits are implied but not fully transparent.

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

Conciseness5/5

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

The description is concise and well-structured: three sentences cover purpose, specifics, and output. No wasted words, and the key information is front-loaded. Every sentence earns its place.

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?

Given the tool's complexity (gap analysis with recommendations, multiple elements including hook types and messaging angles), the description is comprehensive. It explains the analysis scope, what it surfaces, and the output format (JSON with briefs). With only one parameter, the description fully compensates for the lack of an output schema.

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 schema already documents the 'brand_name' parameter. The description adds context by explaining that the brand is used for analyzing creative library gaps, which provides meaning beyond the schema's simple description 'Brand to analyze'. This adds value for an agent selecting the tool.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Identify gaps in the user's creative library for a given brand and propose concrete next creatives that fill them.' It specifies the verb (identify, propose) and resource (creative library gaps, next creatives), effectively distinguishing it from sibling tools like 'analyze_creative' or 'predict_creative'.

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

Usage Guidelines3/5

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

The description implicitly guides usage by indicating it is for a specific brand and provides gap analysis and recommendations. However, it does not explicitly state when to use this tool versus alternatives (e.g., when to choose 'analyze_gaps' over 'analyze_creative' or 'get_library_patterns'), nor does it mention any exclusions or prerequisites.

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

create_custom_reportA

Create a custom performance report by selecting standard and/or brand taxonomy dimensions, then ranking the actual matched dimension combinations by ROAS, funnel_score, spend, CTR, or CPA. Use this when the user asks for a custom Motion-style view like hook x landing_page x offer_type, founder x hook, offer x audience, or custom segments. Optional start_date and end_date let an agent isolate a specific test window before explaining the winning combination. Rows can include parts and values so the agent can explain the winning combination.

ParametersJSON Schema
NameRequiredDescriptionDefault
layerNostandard, brand, or allstandard
limitNo
titleNoCustom Report
metricNoroas, funnel_score, spend, ctr, cparoas
end_dateNoOptional YYYY-MM-DD lookback end for the report window
brand_nameYes
dimensionsYesDimensions such as hook_type, landing_page, audience, offer_type, founder, product, or customer_segment
start_dateNoOptional YYYY-MM-DD lookback start for the report window
spend_thresholdNo

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description must compensate. It discloses that the tool ranks results and that rows include parts and values, but it does not clarify whether the tool is read-only or has side effects (e.g., creates a persisted report). It also omits details about authentication, rate limits, or error conditions.

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

Conciseness5/5

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

The description is four sentences long, with the first sentence immediately stating the core purpose. Each subsequent sentence adds distinct value (usage context, behavior details). There is no redundancy or wasted text.

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

Completeness3/5

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

Given the tool's complexity (9 parameters, no output schema, no annotations), the description is adequate but not complete. It covers purpose and usage but does not describe the return format in detail, nor does it mention prerequisites, error handling, or post-invocation steps. The mention of 'parts and values' in rows is helpful but insufficient for full understanding.

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

Parameters3/5

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

Schema description coverage is 56%, so the schema already documents several parameters. The description adds value by explaining the purpose of start_date/end_date for isolating test windows and lists example dimension values. However, it does not enrich all parameters (e.g., brand_name, layer, spend_threshold) beyond what the schema provides.

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

Purpose5/5

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

The description clearly states the tool creates a custom performance report by selecting dimensions and ranking by metrics. It gives specific examples of use cases, such as hook x landing_page x offer_type, making the purpose distinct and actionable.

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 description explicitly tells when to use the tool: 'when the user asks for a custom Motion-style view.' It also provides context for optional date parameters to isolate test windows. However, it does not compare with sibling tools like save_custom_report or run_saved_custom_report, leaving some ambiguity about when to use this vs. alternatives.

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

delete_brand_entityB

Delete one brand entity by brand, entity_type, and canonical name. Useful when a creator, product, offer, customer segment, ICP, or campaign label should no longer be recognized for the brand.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
brand_nameYes
entity_typeYes

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description carries full burden. It only says 'delete', implying destructive action, but does not disclose side effects, reversibility, permissions, or error handling. This is insufficient for a deletion tool.

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

Conciseness5/5

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

Two sentences with no filler. The first sentence states the action and required parameters; the second provides use context. Efficient and well-structured.

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

Completeness2/5

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

Given 3 required parameters, no enums, no output schema, and no annotations, the description is too brief. It lacks details on deletion behavior, confirmation, error cases, or idempotency. A more complete description would cover these aspects.

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

Parameters2/5

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

Schema coverage is 0%, so description must compensate. It maps parameters (brand, entity_type, name) to the fields and gives examples for entity_type, but does not explain valid values, format constraints, or required semantics. Minimal additional meaning.

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

Purpose5/5

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

The description clearly states the verb 'delete' and the resource 'brand entity', and specifies the three identifying fields. It also lists example entity types, distinguishing it from sibling tools like delete_brand_taxonomy_value.

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

Usage Guidelines3/5

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

The description provides context for when it is useful ('when a creator, product... should no longer be recognized'), but does not explicitly state when not to use it or compare to alternatives like delete_brand_taxonomy_value.

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

delete_brand_taxonomy_valueA

Delete one brand-specific taxonomy value by brand, dimension, and canonical value. Use this to prune stale founders, segments, offers, or internal labels from Brand Taxonomy Studio.

ParametersJSON Schema
NameRequiredDescriptionDefault
valueYes
dimensionYes
brand_nameYes

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description must convey behavior. It states 'Delete' which is destructive, but lacks disclosure of side effects, permissions, or reversibility. The phrase 'prune stale' adds context but not behavioral depth. Adequate for a simple delete, but could mention what happens if value doesn't exist.

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

Conciseness5/5

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

Two concise sentences: first states action and inputs, second provides use case. No unnecessary words. Front-loaded with key information.

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

Completeness2/5

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

For a delete tool with no output schema or annotations, the description lacks information on return format, error conditions (e.g., missing value), and prerequisites. The use case is helpful, but overall completeness is low given the missing details for an AI agent to handle errors.

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

Parameters3/5

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

Description maps all three parameters (brand, dimension, value) by phrasing 'by brand, dimension, and canonical value,' adding the term 'canonical' to indicate standard labels. However, with 0% schema description coverage, detailed explanations of each parameter are missing. Compensates partially but not fully.

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

Purpose5/5

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

Description explicitly states the action (Delete), resource (brand-specific taxonomy value), and required parameters (brand, dimension, canonical value). It distinguishes from sibling 'delete_brand_entity' by targeting taxonomy values rather than brand entities, and from 'set_brand_taxonomy_value' which creates/updates.

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?

Provides clear use case: 'prune stale founders, segments, offers, or internal labels from Brand Taxonomy Studio.' This tells when to use it. Does not explicitly state when not to use or mention alternatives like delete_brand_entity, but the context is sufficiently clear.

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

delete_custom_reportC

Delete a saved custom report definition by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
report_idYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations provided. The description does not disclose consequences like irreversibility, permission requirements, or behavior on missing id.

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?

Single sentence with no redundancy. Efficient but could be slightly expanded without losing conciseness.

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

Completeness2/5

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

For a simple deletion with one parameter and no output schema, the description lacks details on idempotency, error handling, or authorization, leaving gaps for an AI agent.

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

Parameters2/5

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

Schema coverage is 0%, yet the description only repeats 'id' without adding meaning about format, range, or how to obtain the report_id. This does not compensate for the lack of schema documentation.

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

Purpose5/5

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

The description specifies the action 'Delete', the resource 'saved custom report definition', and the identifier 'id'. It clearly distinguishes from siblings like delete_brand_entity or delete_naming_template.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives such as save_custom_report or run_saved_custom_report. No exclusions or prerequisites mentioned.

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

delete_naming_templateC

Delete a saved naming template by name.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNodefault

TDQS

C2.9/5.0
Behavior2/5

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

No annotations exist, and the description does not disclose behavioral traits such as irreversibility, required permissions, or side effects of deletion.

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?

The description is a single, concise sentence with no wasted words, though it could benefit from slight expansion on usage.

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

Completeness2/5

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

For a simple deletion tool with one optional parameter and no output schema, the description is minimal and lacks important context like destructive nature or user confirmation requirements.

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

Parameters2/5

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

The schema has one parameter ('name') with a default, but the description adds no additional meaning beyond 'by name.' With 0% schema description coverage, the description fails to compensate.

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

Purpose5/5

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

The description explicitly states 'Delete a saved naming template by name,' clearly identifying the verb (delete) and resource (naming template), and distinguishes it from sibling tools like delete_brand_entity.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives (e.g., other delete tools) or on prerequisites or when not to use it.

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

export_brain_learnings_contextC

Export a bounded, prompt-ready context from get_brain_learnings, including follow-up Strategy and time-series queries and the same canonical audience filters.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindsNo
limitNo
end_dateNo
brand_nameNo
cpa_targetNo
start_dateNo
date_presetNoall_time
roas_targetNo
watch_metricNoroas
minimum_spendNo
watch_sourcesNo
audience_limitNo
learning_spendNo
watch_group_byNomessaging_angle
watch_signal_focusNoall
conclusion_statusesNo
watch_coverage_focusNoall
watch_minimum_pointsNo
audience_signal_focusNoOptional audience signal filter when kinds includes audience: all, higher_observed_efficiency, or lower_observed_efficiencyall
watch_maximum_gap_daysNo
watch_trajectory_focusNoall
conclusion_recency_daysNo
fatigue_decay_thresholdNo
watch_minimum_calendar_daysNo

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description must fully disclose behavior. It mentions 'export' and 'bounded' but does not clarify side effects, required permissions, or whether it creates any resources. The behavioral insight is minimal and inferred from the name.

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

Conciseness3/5

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

The description is a single sentence of 17 words, concise and front-loaded. However, it is too brief for the tool's complexity (24 parameters), sacrificing necessary detail for brevity.

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

Completeness2/5

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

With 24 parameters, no output schema, and no annotations, the description should provide comprehensive context. It only gives a high-level purpose, missing parameter roles, output format, prerequisites, and constraints. Incomplete for effective agent use.

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

Parameters2/5

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

Schema description coverage is only 4% (one enum parameter documented). The description adds no parameter-specific explanations; it only mentions 'canonical audience filters' which loosely relates to audience parameters. Given 24 parameters, much meaning is left unspecified.

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?

The description states it exports a bounded, prompt-ready context from get_brain_learnings, including strategy and time-series queries. The verb 'export' and resource 'bounded context' are specific, but it does not differentiate from sibling export tools like export_demographics_context or export_performance_timeseries_context.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives. The description implies it is for obtaining a curated context for prompts, but lacks when-not-to-use or alternative recommendations. Sibling tools are listed but not differentiated.

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

export_demographics_contextA

Return an agent-ready audience context payload from saved age x gender performance memory. Use this when another agent or workflow needs the higher and lower observed-efficiency bands, account totals, summary text, a prompt-ready descriptive review queue, and date-scoped mixed creative x audience strategy queries plus time-series follow-up queries without opening the dashboard.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum segments from each observed-efficiency band to include in the exported context
end_dateNoOptional YYYY-MM-DD end date
brand_nameNo
start_dateNoOptional YYYY-MM-DD start date
date_presetNoOptional date window preset: all_time, last_7_days, last_30_days, last_90_days, or customall_time

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description is the sole source of behavioral info. It describes the output components but does not disclose whether the tool is read-only, permissions required, or other behavioral traits. The description implies a read operation but could be more transparent.

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?

The description is a single, albeit long, sentence that front-loads the core purpose. It uses some jargon but remains efficient. It could be slightly more concise, but overall it's well-structured and informative.

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

Completeness3/5

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

Given the lack of output schema and 5 parameters, the description partially compensates by listing output components. However, it does not explain how parameters affect the output or the exact format, leaving some gaps for a complex payload.

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

Parameters3/5

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

Schema description coverage is 80%, with brand_name lacking a description. The tool description does not add meaning to parameters beyond the schema. It describes the overall purpose but not parameter-specific details, so it meets the baseline but adds no extra value.

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

Purpose5/5

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

The description uses a specific verb 'Return' and clearly identifies the resource as an 'agent-ready audience context payload from saved age x gender performance memory'. It distinguishes from sibling export tools by specifying the demographic focus.

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 description explicitly states when to use this tool: when another agent needs specific performance bands, totals, summary, review queue, and strategy queries without the dashboard. It provides clear context but lacks explicit exclusions or comparisons to alternatives.

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

export_performance_timeseries_contextC

Export the bounded agent_context from get_performance_timeseries with its decision queue and data-quality warnings.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
metricNoroas
end_dateNo
group_byNoad_name
brand_nameNo
start_dateNo
date_presetNolast_30d
signal_focusNoall
minimum_spendNo
coverage_focusNoall
minimum_pointsNo
maximum_gap_daysNo
trajectory_focusNoall
minimum_calendar_daysNo
fatigue_decay_thresholdNo

TDQS

C2.4/5.0
Behavior2/5

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

No annotations provided, so the description must convey behavioral traits. It only mentions what is exported (bounded agent_context, decision queue, data-quality warnings) but does not disclose side effects, authorization needs, or whether the operation is read-only.

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?

Single-sentence description is concise and front-loaded with the core action. However, it could be slightly more precise without adding length.

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

Completeness1/5

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

With 15 parameters, no output schema, and no parameter descriptions, the description is grossly incomplete. It does not help agents understand what the tool returns or how to configure the many parameters.

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

Parameters1/5

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

Schema description coverage is 0% for 15 parameters, and the description provides no explanations for any parameter. Agents must infer meaning from names and defaults alone, which is insufficient for correct tool invocation.

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?

Description clearly states the verb 'Export' and the resource 'bounded agent_context from get_performance_timeseries', distinguishing it from sibling get_performance_timeseries. However, 'bounded agent_context' is somewhat vague.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives. It implies a dependency on get_performance_timeseries but does not clarify when agents should choose this export over other export tools like export_brain_learnings_context.

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

generate_brand_taxonomyA

Auto-build a brand's ENTIRE custom taxonomy from trends in its analyzed creative library — messaging themes, intended audiences, AND entities (products, founders, creators, offers, customer segments, campaign labels). Lets a brand get the full brand-custom layer with zero manual setup. Optionally persists everything into Brand Taxonomy Studio so future analyses, predictions, and naming templates use them.

ParametersJSON Schema
NameRequiredDescriptionDefault
persistNoSave generated values to the brand taxonomy
brand_nameYes

TDQS

A3.9/5.0
Behavior3/5

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

The description discloses the optional persistence behavior but lacks details on whether the generation is additive or replaces existing taxonomy, and does not mention required permissions or side effects. With no annotations, the description provides adequate but not comprehensive transparency.

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

Conciseness5/5

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

Two sentences, front-loaded with the core purpose. Every sentence adds value—first describes generation, second explains optional persistence. No wasted words.

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

Completeness3/5

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

The description covers the main function and parameters but does not specify the return value when persist is false, nor does it mention prerequisites (e.g., need for analyzed creative library). Given no output schema, some output description would improve completeness.

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

Parameters3/5

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

Schema coverage is 50%; only the persist parameter has a description in the schema. The description adds context by explaining that persistence is optional and that the taxonomy is built from brand creative library trends, but it does not detail the brand_name parameter beyond its role.

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

Purpose5/5

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

The description clearly states the tool auto-builds a brand's entire custom taxonomy from trends in its analyzed creative library, specifying the components (messaging themes, audiences, entities). It distinguishes from sibling tools like set_brand_taxonomy_value (manual) and get_brand_taxonomy (retrieval) by emphasizing 'zero manual setup' and automatic generation.

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 description implies use when a brand wants to automatically generate a custom taxonomy without manual setup. It does not explicitly list when not to use or mention alternatives, but the context is clear enough for an agent to decide.

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

generate_namingA

Generate V1-compatible standard, full, compact, and reporting naming convention strings from creative attributes. Use when you already have classified attributes (for example from analyze_creative) and need the same naming structure the API returns.

ParametersJSON Schema
NameRequiredDescriptionDefault
ctaNo
talentNo
emotionNo
versionNo
audienceNo
cta_typeNo
durationNo
hook_typeNo
asset_typeNoUGC
audio_typeNo
brand_nameYes
offer_typeNo
seasonalityNo
talent_typeNoNo Talent
aspect_ratioNo9:16
visual_styleNoNative
visual_formatNoTalking Head
voiceover_toneNo
messaging_angleNo

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations, the description fails to disclose behavioral traits such as side effects, authentication needs, or return format details. It only describes the generation action but doesn't address whether it modifies state or requires specific permissions.

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

Conciseness5/5

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

The description is two sentences long, each serving a distinct purpose: the first defines the action, the second provides usage context. No extraneous information, front-loaded with key details.

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

Completeness2/5

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

Given the tool has 19 parameters, no output schema, and no annotations, the description is insufficient. It doesn't specify output format, required parameter dependencies, or how the 19 attributes map to return strings. The reliance on external classification is noted but not enough to make the tool fully self-contained.

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

Parameters2/5

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

Schema description coverage is 0%, and the description does not elaborate on individual parameters beyond mentioning 'creative attributes.' It adds no meaning to specific fields like brand_name, cta, or talent, leaving the agent to infer their semantics from names alone.

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

Purpose5/5

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

The description clearly states the tool generates V1-compatible naming convention strings (standard, full, compact, reporting) from creative attributes. It also distinguishes itself from siblings by referencing analyze_creative as a prerequisite, making its purpose unambiguous.

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 description explicitly advises using this tool after having classified attributes, citing analyze_creative as an example. While it doesn't list when not to use it or alternatives, the context provides clear guidance on the appropriate scenario.

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

get_analysisA

Get the full analysis result for a single saved library item by ID. Use after list_library when you need the complete 21-dimension classification (list_library returns a summary; this returns the full JSON).

ParametersJSON Schema
NameRequiredDescriptionDefault
brand_nameNoExact workspace brand_name from list_workspaces
analysis_idYesID of the analysis to fetch

TDQS

A4.4/5.0
Behavior3/5

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

No annotations provided, so description carries the burden. It states that the tool returns 'full JSON' but does not disclose other behavioral traits such as read-only nature, required permissions, or rate limits. For a retrieval tool, the transparency is adequate but could be more comprehensive.

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

Conciseness5/5

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

Two sentences, no wasted words. The first sentence clearly states the action, and the second provides usage context. Front-loaded and efficient.

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

Completeness4/5

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

No output schema, so description partly compensates by mentioning 'full JSON' and '21-dimension classification'. However, it does not detail the return structure or fields. For a simple retrieval tool, it is mostly complete but could include a brief note on output structure.

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%, baseline 3. The description adds meaning by specifying 'by ID' and 'saved library item', clarifying the role of analysis_id. It does not explicitly describe brand_name but the tool context implies it is optional. The description adds value beyond schema.

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

Purpose5/5

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

The description uses specific verb 'Get', resource 'full analysis result for a single saved library item by ID', and distinguishes from the sibling tool list_library by noting that list_library returns a summary and this returns the full 21-dimension classification JSON.

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

Usage Guidelines5/5

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

Explicitly states when to use: 'Use after list_library when you need the complete 21-dimension classification'. This provides clear context and alternative.

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

get_brain_learningsA

Read one workspace's current Brand Brain observations, conclusions, watchouts, audience signals, gaps, and agent_context. Validate associations with controlled tests before changing allocation. Audience filters use higher_observed_efficiency or lower_observed_efficiency.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindsNoOptional comma-separated kinds: conclusion, working, watch, audience, gap, or all
limitNo
end_dateNo
brand_nameNo
cpa_targetNo
start_dateNo
date_presetNoall_time
roas_targetNo
watch_metricNoTimeseries metric used for watch/fatigue learnings: roas, cpa, ctr, cpm, cvr, thumbstop_rate, hook_rate, hold_rate, video_completion_rate, video_50_rate, video_75_rate, funnel_score, frequency, outbound_ctr, outbound_clicks, landing_page_views, adds_to_cart, atc_per_lpv, or video_3s_viewsroas
minimum_spendNo
watch_sourcesNoOptional comma-separated watch sources: timeseries, strategy, patterns, or all
audience_limitNo
learning_spendNo
watch_group_byNoTimeseries grouping for watch/fatigue learnings: ad_name, campaign_name, landing_page_domain, analysis_id, hook_type, messaging_angle, ad_type, format, visual_style, cta, emotion, demographic_age, demographic_gender, demographic_segment, or demographic_signalmessaging_angle
watch_signal_focusNoOptional signal filter for watch/fatigue learnings: all, fatigued, stable, or insufficient_dataall
conclusion_statusesNoOptional comma-separated conclusion statuses when kinds includes conclusion: winner, fatigued, loser, or all
watch_coverage_focusNoOptional coverage-risk filter for watch/fatigue learnings: all, call_ready, gappy, insufficient_points, short_window, or windowed_historyall
watch_minimum_pointsNo
audience_signal_focusNoOptional audience signal filter when kinds includes audience: all, higher_observed_efficiency, or lower_observed_efficiencyall
watch_maximum_gap_daysNo
watch_trajectory_focusNoOptional trend filter for watch/fatigue learnings: all, worsening, improving, flat, or insufficient_dataall
conclusion_recency_daysNo
fatigue_decay_thresholdNo
watch_minimum_calendar_daysNo

TDQS

A3.6/5.0
Behavior3/5

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

Without annotations, the description carries the burden of behavioral disclosure. It indicates a read operation ('Read'), which is helpful, but does not mention side effects, rate limits, or return behavior beyond listing data types.

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?

The description is concise at two sentences, front-loading the core purpose. However, the second sentence reads as an instruction rather than a structural element, slightly muddling clarity.

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

Completeness2/5

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

With 24 parameters, no output schema, and no annotations, the description is insufficient. It does not explain the return format or how parameters like watch_sources or conclusion_statuses work, leaving significant gaps for an agent.

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

Parameters2/5

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

Schema description coverage is low (38%). The description adds minimal parameter context (e.g., audience filters with higher/lower observed efficiency). Many parameters like end_date, brand_name, start_date lack explanation, and the description does not compensate for the gaps.

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

Purpose5/5

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

The description clearly states the tool reads one workspace's Brand Brain data, specifying the types of learnings included (observations, conclusions, watchouts, audience signals, gaps, agent_context). This verb+resource definition distinguishes it from similar tools.

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 description provides a usage context: 'Validate associations with controlled tests before changing allocation.' This implies when to use the tool, but it doesn't explicitly contrast with sibling tools like get_analysis or provide exclusion criteria.

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

get_brand_contextA

Retrieve the saved brand context for a brand: voice, target audience, top performers, anti-patterns, and notes. Strategist tools auto-include this; this tool exposes the raw stored context.

ParametersJSON Schema
NameRequiredDescriptionDefault
brand_nameYes

TDQS

A3.9/5.0
Behavior3/5

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

No annotations provided. Description implies read-only behavior ('retrieve'), which is a key behavioral trait. However, it does not disclose any potential side effects, permissions, or performance considerations. Adequate but not comprehensive.

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

Conciseness5/5

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

Two sentences, no superfluous information. Purpose and context are front-loaded. Every sentence adds value.

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

Completeness4/5

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

Given one simple parameter, no output schema, and no annotations, the description covers the essential functionality well. It states what is retrieved and provides a usage nuance (raw vs. auto-included). Could optionally mention output structure, but not necessary for this simple tool.

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

Parameters2/5

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

Only one parameter (brand_name) with no schema description (0% coverage). Description does not elaborate on what brand_name entails, such as expected format or case sensitivity. While the parameter is intuitive, the description adds no semantic value beyond the schema.

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

Purpose5/5

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

Clear verb (retrieve) and resource (saved brand context). Lists contents: voice, target audience, top performers, anti-patterns, notes. Differentiates from sibling set_brand_context by explicitly stating it exposes raw stored context.

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?

States that strategist tools auto-include context, positioning this tool as a way to access the raw stored version. While not explicitly listing alternatives or exclusions, this provides useful guidance on when to use the tool.

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

get_brand_taxonomyA

Retrieve the brand-custom taxonomy for a brand: custom values, aliases, and entities such as founder, recurring creators, products, offers, customer segments, ICPs, and campaign labels. Standard taxonomy still lives in attributes; this is the brand-specific extension layer.

ParametersJSON Schema
NameRequiredDescriptionDefault
brand_nameYes

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It describes the data retrieved but does not state that the tool is read-only or any side effects, permissions, or rate limits. For a retrieval tool, the read-only nature is a key behavior that is omitted.

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

Conciseness5/5

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

The description is two sentences with no redundant information. The first sentence front-loads the core functionality with a list of contents; the second sentence clarifies the scope. Every sentence adds value.

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

Completeness4/5

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

Given the tool's simplicity (single required parameter, no output schema, no annotations), the description covers what it does and distinguishes from siblings. It could be more complete by hinting at the return format (e.g., object or list) but is sufficient for an agent to understand the tool's purpose.

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

Parameters3/5

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

Schema coverage is 0% because the description does not mention the brand_name parameter explicitly. However, the phrase 'for a brand' implies the parameter's purpose. The description adds minor context but fails to fully compensate for the lack of schema documentation.

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

Purpose5/5

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

The description clearly states the verb 'Retrieve' and the resource 'brand-custom taxonomy', listing specific contents (custom values, aliases, entities) and distinguishing from standard taxonomy via the last sentence. This differentiates it from sibling tools like get_taxonomy.

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

Usage Guidelines3/5

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

The description implies when to use via the contrast with standard taxonomy ('Standard taxonomy still lives in attributes; this is the brand-specific extension layer'), but does not explicitly state when-not or name alternatives. Guidance is implied but not explicit.

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

get_competitor_scan_historyA

Return saved competitor Market scans/imports for the current workspace without re-running Meta Ad Library access. Useful for re-briefing past market reads, checking the latest tagged competitor patterns, or building strategy prompts from previously saved scans.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of saved scans/imports to return
brand_nameNoOptional workspace brand filter. When omitted, returns the latest saved scans across brands for the current account.

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It adds the key behavioral detail 'without re-running Meta Ad Library access' but omits auth, rate limits, ordering, or return format.

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

Conciseness5/5

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

Two sentences, no waste. Main action is front-loaded, followed by use cases. Very efficient.

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

Completeness3/5

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

No output schema, and description does not specify the shape of returned data (e.g., fields in scan objects). For a retrieval tool, this is a notable gap.

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 covers both parameters (100%). Description adds value for brand_name by explaining default behavior ('latest saved scans across brands'), beyond the schema's 'optional workspace brand filter'.

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

Purpose5/5

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

The description clearly states the tool returns saved competitor scans/imports for the current workspace without re-running Meta Ad Library access. It distinguishes from sibling scan_competitor by emphasizing 'saved' and 'without re-running'.

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 description lists three use cases (re-briefing, checking patterns, building prompts), but does not explicitly state when not to use or contrast with related tools like get_analysis or list_library.

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

get_creative_strategy_reportA

Read one workspace's observational Strategy matrix and decision queue. Defaults to a bounded concise response; use detailed only for an explicit deep dive. Treat cells as test hypotheses, not causal effects.

ParametersJSON Schema
NameRequiredDescriptionDefault
rowsNoMatrix row dimension, e.g. visual_format (execution style), asset_type (production class), media_type (auto-detected format), messaging_angle, format, hook, persona, product, offer_type, demographic_age, demographic_gender, demographic_segment, or demographic_signal. Taxonomy v2 splits media type, asset type, and visual format into three separate axes; ad_type is a deprecated alias for visual_format. Combine a creative dimension here with a demographic column for mixed audience reads.ad_type
limitNo
columnsNoMatrix column dimension, e.g. messaging_angle, visual_format, asset_type, media_type, format, hook, persona, product, offer_type, demographic_gender, demographic_age, demographic_segment, or demographic_signal (ad_type is a deprecated alias for visual_format). Set one axis to a creative tag and the other to a demographic axis for a mixed creative x audience matrix.messaging_angle
metricsNoComma-separated metrics to show in each cell, e.g. spend,ctr,thumbstop_rate,hook_rate,hold_rate,cpaspend,ctr,thumbstop_rate,hook_rate,hold_rate,cpa
end_dateNo
max_cellsNoMaximum matrix cells returned in either response format
brand_nameNo
cpa_targetNo
start_dateNo
date_presetNoall_time
roas_targetNo
watch_limitNo
status_focusNoall, next, winner, learning, fatigued, loser, untestedall
watch_metricNoOptional fatigue watch metric for the strategy report: roas, cpa, ctr, spend, hook_rate, hold_rate, thumbstop_rate, or demographic-safe metrics such as conversions and revenue
metric_presetNoOptional metric preset key: diagnostics, conversion, delivery, video, scale, or all
minimum_spendNo
learning_spendNo
watch_group_byNoOptional fatigue watch grouping for the strategy report: ad_name, campaign_name, landing_page_domain, analysis_id, hook_type, messaging_angle, ad_type, format, visual_style, cta, emotion, demographic_age, demographic_gender, demographic_segment, or demographic_signal
report_templateNoTemplate preset: next-tests, creative-winners, fatigue-watch, coverage-gaps, hook-performance, persona-read, demographic-read, or audience-signals. You can also skip the preset and request a mixed creative x audience cut via rows/columns such as messaging_angle by demographic_segment.next-tests
response_formatNoconcise returns an agent-ready bounded report; detailed adds richer report fields for explicit deep dives. Both formats remain bounded by max_cellsconcise
watch_signal_focusNoOptional fatigue watch signal filter for the strategy report: all, fatigued, stable, or insufficient_dataall
watch_coverage_focusNoOptional coverage-risk filter for the strategy report watch: all, call_ready, gappy, insufficient_points, short_window, or windowed_historyall
watch_minimum_pointsNo
watch_maximum_gap_daysNo
watch_trajectory_focusNoOptional fatigue watch trend filter for the strategy report: all, worsening, improving, flat, or insufficient_dataall
watch_minimum_calendar_daysNo
fatigue_minimum_calendar_daysNo

TDQS

A3.9/5.0
Behavior4/5

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

Describes the tool as 'observational' and notes the output represents test hypotheses, not causal effects, adding behavioral context. However, with no annotations, it lacks details like authentication needs or rate limits, though it is clearly a read operation.

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

Conciseness5/5

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

The description is three sentences, front-loaded with the primary purpose, and includes a practical usage hint and a caveat. No unnecessary words.

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

Completeness2/5

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

Despite 27 parameters and no output schema, the description is very brief and does not elaborate on the matrix structure, output content, or how to leverage the many parameters effectively.

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

Parameters2/5

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

With 48% schema description coverage, the description should compensate but only implicitly references the 'response_format' parameter. It adds no meaning to the 27 parameters beyond what the schema provides.

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

Purpose5/5

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

The description clearly states the tool reads a workspace's observational Strategy matrix and decision queue, distinguishing it from sibling tools like 'get_analysis' or 'get_brain_learnings'.

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?

Provides guidance on using concise vs detailed response format and warns against treating cells as causal effects, but does not explicitly contrast with alternative tools or state when not to use.

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

get_demographics_performanceA

Return saved age x gender delivery with account-relative higher and lower observed-return-per-spend bands. These are descriptive associations, not audience outcome or action verdicts. Supports report date presets like last_30_days or a custom start_date/end_date (YYYY-MM-DD) to scope the audience read to a specific performance window.

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateNoOptional end date in YYYY-MM-DD format
brand_nameNo
start_dateNoOptional start date in YYYY-MM-DD format
date_presetNoOptional date window preset: all_time, last_7_days, last_30_days, last_90_days, or customall_time

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses that results are 'descriptive associations, not audience outcome or action verdicts,' which adds important behavioral context. However, it does not mention data freshness, performance impact, or whether the tool is read-only.

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

Conciseness5/5

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

Two sentences with no wasted words: first states core purpose, second adds date usage guidance. Information is front-loaded and efficiently structured.

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

Completeness3/5

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

Given 4 parameters and no output schema, the description explains the return nature (descriptive, not outcomes) and date scoping, but omits output format details and the 'brand_name' parameter. It is moderately complete but has gaps.

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

Parameters3/5

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

Schema description coverage is 75% (3 of 4 parameters described). The description reinforces date parameter meaning with examples ('last_30_days', 'YYYY-MM-DD'), but does not explain the 'brand_name' parameter. With high coverage, the baseline is 3, and the description adds marginal value.

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

Purpose5/5

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

The description clearly states the tool returns 'age x gender delivery' with performance bands, specifies it is descriptive not causal, and distinguishes from siblings like get_meta_performance_summary or get_performance_timeseries by focusing on demographic breakdowns with return-per-spend bands.

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

Usage Guidelines3/5

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

While the description provides guidance on date presets and custom dates, it does not explicitly state when to use this tool vs. alternatives (e.g., get_meta_performance_summary) or when not to use it. The context is implied but lacks explicit exclusions or sibling differentiation.

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

get_library_patternsA

Get pattern insights across the user's entire library: which hooks, angles, creative types, emotions they over- or under-index on. Returns top values per dimension with percentages plus rule-based diversification insights. Use this for portfolio analysis before recommending what to make next.

ParametersJSON Schema
NameRequiredDescriptionDefault
brand_nameNoExact workspace brand_name from list_workspaces

TDQS

A4.3/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It states the return structure (top values with percentages, diversification insights) but does not explicitly disclose side effects (e.g., read-only nature, permissions required, rate limits). Since it's a 'get' tool, read-only is implied but not stated, leaving some uncertainty.

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

Conciseness5/5

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

The description is two sentences, front-loading the action and output, then providing usage guidance. Every sentence is essential and no filler.

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 single-parameter tool with no output schema, the description fully explains the return format (top values per dimension with percentages, diversification insights) and the usage context. No gaps remain.

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?

The single parameter 'brand_name' is described in the schema as 'Exact workspace brand_name from list_workspaces'. The description adds the qualifier 'Exact' and references 'list_workspaces' for source, which provides context beyond the schema's basic description. Schema coverage is 100%, so the description adds value.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Get pattern insights across the user's entire library' with specifics on what it analyzes (hooks, angles, creative types, emotions) and returns (top values with percentages, diversification insights). This distinguishes it from siblings like 'analyze_creative' or 'get_analysis'.

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 description provides explicit usage context: 'Use this for portfolio analysis before recommending what to make next.' This tells the agent when to apply it. However, it does not mention when not to use it or offer alternatives, which would make it a 5.

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

get_meta_performance_summaryA

Read the saved Meta performance memory for a brand without triggering a sync. Returns totals plus winners/losers by standard taxonomy and brand-custom taxonomy values, including explainable funnel_score signals for capture, hold, bring-to-site, and convert stages. Supports all_time, last_7_days, last_30_days, last_90_days, or custom date windows.

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateNoOptional YYYY-MM-DD end date
brand_nameNo
start_dateNoOptional YYYY-MM-DD start date
date_presetNoOptional date window preset: all_time, last_7_days, last_30_days, last_90_days, or customall_time

TDQS

A4.4/5.0
Behavior4/5

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

No annotations exist, so description bears full burden. It clarifies read-only nature, returns totals and winners/losers, and funnel scores. Does not describe authorization or rate limits, but for a read tool, it is sufficiently transparent.

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

Conciseness5/5

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

Two sentences: first states core purpose and key differentiator, second details return content and date options. Front-loaded, no extraneous information.

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

Completeness4/5

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

Given no output schema, description explains return structure (totals, winners/losers by taxonomy, funnel scores). Does not detail format but is complete enough for a read tool with zero required params.

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 75%; brand_name lacks description. The description adds meaning by associating brand_name with 'for a brand' and enumerates date presets and custom usage. Provides context beyond schema.

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

Purpose5/5

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

The description clearly states it reads saved Meta performance memory without triggering a sync, distinguishes from sync_meta_performance and get_performance_timeseries, and specifies return contents including totals, winners/losers by taxonomy, and funnel scores.

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 description explicitly says 'without triggering a sync,' indicating when to use this tool over a sync tool. It lists supported date windows but does not explicitly state when not to use or compare to other reporting tools.

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

get_meta_statusB

Check whether read-only Meta performance sync is connected for the authenticated user. Returns account id, scopes, read-only status, and latest sync metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
brand_nameNoExact workspace brand_name from list_workspaces

TDQS

B3.4/5.0
Behavior2/5

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

Minimal behavioral disclosure; confirms read-only nature and lists returned fields but omits details on authentication, error conditions, or any side effects. No annotations provided to compensate.

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

Conciseness5/5

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

Two sentences with no wasted words; the main action is front-loaded, making it efficient and easy to parse.

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

Completeness4/5

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

For a simple tool with one optional parameter and no output schema, the description adequately explains purpose and return fields. Minor gap: no mention of authentication requirements or prerequisites.

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

Parameters3/5

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

Schema description coverage is 100% with a clear parameter description ('Exact workspace brand_name from list_workspaces'). The tool description adds no additional meaning beyond the schema.

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

Purpose5/5

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

The description uses a specific verb ('Check') and clearly identifies the resource ('read-only Meta performance sync'), distinguishing it from siblings like sync_meta_performance or get_meta_performance_summary.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives, such as sync_meta_performance for initiating sync or get_meta_performance_summary for aggregated metrics.

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

get_naming_variablesA

List every variable available in saved naming templates, including standard taxonomy fields plus brand-custom variables like founder, product, offer, customer_segment, icp, and campaign_label.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It correctly indicates a read operation, but lacks details on output format, pagination, or behavior when no templates exist.

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

Conciseness5/5

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

Single, clear sentence with front-loaded verb and examples. No unnecessary words.

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

Completeness4/5

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

For a zero-parameter tool, the description is mostly complete. However, it does not mention the return format (e.g., list of strings) or whether the output is sorted.

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?

No parameters exist, and schema coverage is 100% trivially. Baseline is 4; the description adds value by listing example variables, though no parameter semantics are needed.

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

Purpose5/5

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

The description clearly states the tool lists every variable in naming templates, giving specific examples like founder, product, offer. It distinguishes from sibling tools such as list_naming_templates and get_taxonomy.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool vs alternatives. The purpose is implied, but there is no statement of prerequisites or exclusions.

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

get_performance_timeseriesB

Read one workspace's saved performance series for observational fatigue, trajectory, and data-coverage checks.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum grouped series to return
metricNoroas, cpa, ctr, cpm, cvr, thumbstop_rate, hook_rate, hold_rate, video_completion_rate, video_50_rate, video_75_rate, funnel_score, frequency, outbound_ctr, outbound_clicks, landing_page_views, adds_to_cart, atc_per_lpv, or video_3s_viewsroas
end_dateNoOptional YYYY-MM-DD end date
group_byNoad_name, campaign_name, landing_page_domain, analysis_id, hook_type, messaging_angle, ad_type, format, visual_style, cta, emotion, demographic_age, demographic_gender, demographic_segment, or demographic_signalad_name
brand_nameNo
start_dateNoOptional YYYY-MM-DD start date
date_presetNoOptional date window preset: all_time, last_7d, last_30d, last_90d, maximum, or customlast_30d
signal_focusNoOptional fatigue filter: all, fatigued, stable, or insufficient_dataall
minimum_spendNoSpend floor before fatigue is treated as meaningful
coverage_focusNoOptional sync coverage filter: all, call_ready, gappy, insufficient_points, short_window, or windowed_historyall
minimum_pointsNoMinimum observed points required before a grouped series is returned
maximum_gap_daysNoMaximum sync gap in calendar days allowed before a grouped series is returned
trajectory_focusNoOptional trend filter: all, worsening, improving, flat, or insufficient_dataall
minimum_calendar_daysNoMinimum elapsed calendar days required before a grouped series is returned
fatigue_decay_thresholdNoDecay threshold that flips a series to fatigued

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It indicates the tool is read-only ('Read') but lacks details on rate limits, auth requirements, or other behavioral constraints; the description adds minimal behavioral context beyond the basic read intent.

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

Conciseness5/5

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

The description is a single sentence that is front-loaded and clear, with no wasted words. It efficiently conveys the tool's purpose.

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

Completeness2/5

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

With 15 parameters and no output schema or annotations, the description is too brief. It does not explain the return format, pagination, or how filters interact, leaving gaps for a complex tool.

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

Parameters3/5

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

Schema description coverage is high (93%), so baseline is 3. The description does not add parameter-specific meaning beyond what the schema already provides; it only gives high-level context for the tool's purpose.

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

Purpose5/5

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

The description clearly specifies the verb 'Read', the resource 'one workspace's saved performance series', and the purpose 'for observational fatigue, trajectory, and data-coverage checks'. This distinguishes it from sibling tools that perform other analyses.

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

Usage Guidelines3/5

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

The description implies usage for fatigue, trajectory, and coverage checks but does not provide explicit when-to-use or when-not-to-use guidance, nor does it compare with alternative sibling tools.

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

get_prebuilt_reportsA

Return Motion-style prebuilt creative reports for a brand: best hooks, landing pages, messaging angles, audiences, offers, CTAs, visual formats, and brand-custom values. Rows include ROAS, spend, CTR, thumbstop, and funnel_score when performance memory exists. Optional start_date/end_date (YYYY-MM-DD) scope the report window.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoRows per report
end_dateNoOptional YYYY-MM-DD end date
report_idNoOptional report filter, e.g. best_hooks, best_landing_pages, best_angles, best_audiences, best_offers
brand_nameNo
start_dateNoOptional YYYY-MM-DD start date
spend_thresholdNoSpend floor before reporting a row-level observation

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It discloses that rows include metrics only when performance memory exists and that dates scope the report window. However, it does not mention mutability, authorization needs, or side effects, which limits transparency for a read-like tool.

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

Conciseness5/5

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

Two sentences, front-loaded with core functionality in first sentence, no redundancy. Every sentence adds value.

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

Completeness4/5

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

The description covers report types, metrics, date range, and spend threshold. It does not explain output format, but no output schema exists. Minor gap: it does not clarify if brand_name is required despite not being marked required in schema. Overall adequate for a moderately complex tool.

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

Parameters3/5

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

Schema description coverage is 83%, so baseline is 3. The description adds context for report types and metric availability but does not significantly expand on schema descriptions for parameters like limit, brand_name, or spend_threshold. It restates date format and report_id examples already in schema.

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

Purpose5/5

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

The description uses a specific verb ('return') and resource ('prebuilt creative reports for a brand'), listing exact report types (best hooks, landing pages, etc.) and metrics (ROAS, spend, CTR). This clearly distinguishes it from sibling tools like 'get_creative_strategy_report' or 'get_taxonomy_performance'.

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

Usage Guidelines3/5

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

The description mentions optional parameters (date range, spend threshold) but does not explicitly state when to use this tool versus alternatives like 'get_creative_strategy_report' or 'get_taxonomy_performance'. Usage context is implied but lacks exclusion guidance.

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

get_taxonomyA

Get Creative Tagger taxonomy v2's 15 controlled dimensions, one derived/open aspect-ratio dimension, and two dynamic, brand-specific dimensions. The package ships a versioned vocabulary because the API schema does not expose enums for every classification field. Use this before analyze_creative when you want to know the vocabulary the system understands. Taxonomy v2: media type (the auto-detected format — static image, video, carousel), asset type (production class), and visual format (execution style) are three separate dimensions; 'Static Image' and 'Carousel' are media types, not visual_format values.

ParametersJSON Schema
NameRequiredDescriptionDefault
dimensionNoOptional: fetch one dimension only (e.g. 'hook_type', 'messaging_angle').

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It does not explicitly state that this is a read-only operation or disclose any behavioral traits like rate limits or authorization needs. The information about versioned vocabulary is useful but not behavioral.

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?

The description is well-structured, front-loading purpose and usage, then clarifying taxonomy details. It is informative without excessive length, though some redundancy exists in the taxonomy explanation.

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

Completeness3/5

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

With no output schema, the description should ideally describe the return format. While it mentions 'versioned vocabulary' and dimensions, it lacks explicit details on output structure or example, making it adequate but not complete.

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

Parameters3/5

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

The input schema covers 100% of the parameter ('dimension') with an example and description. The tool description adds high-level context about dimensions but does not enhance the parameter meaning beyond what the schema already provides, so baseline 3 applies.

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

Purpose5/5

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

The description clearly states the tool retrieves 15 controlled dimensions, one derived/open aspect-ratio dimension, and two brand-specific dimensions, with versioned vocabulary. It distinguishes from sibling tools by explicitly recommending use before analyze_creative.

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

Usage Guidelines5/5

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

The description explicitly says 'Use this before analyze_creative when you want to know the vocabulary the system understands,' providing clear when-to-use guidance with a named sibling tool.

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

get_taxonomy_performanceA

Return tag-level performance with significance gating and coverage gaps. Use this to find which taxonomy values are associated with stronger historical outcomes, which are under-observed, and which standard values have never been tried. Rows include ROAS, CTR, thumbstop, and funnel_score when performance memory exists. Supports the same date presets as the main performance summary.

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateNoOptional YYYY-MM-DD end date
dimensionNoOptional dimension filter, e.g. hook_type
brand_nameNo
start_dateNoOptional YYYY-MM-DD start date
date_presetNoOptional date window preset: all_time, last_7_days, last_30_days, last_90_days, or customall_time
spend_thresholdNoSpend floor before reporting a tag-level observation

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses significance gating, coverage gaps, specific metrics returned (ROAS, CTR, etc.), and alignment with date presets. No contradictions but could mention authorization.

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

Conciseness5/5

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

Four sentences, front-loaded with purpose. Every sentence adds value: what it does, use cases, metrics returned, date preset alignment. No waste.

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

Completeness4/5

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

Given 6 parameters and no output schema, the description explains what the tool returns (metrics, coverage gaps) and links to related tools (date presets). Could mention output format but adequate for selection.

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

Parameters3/5

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

Schema coverage is 83%, so the baseline is 3. The description adds context like significance gating and coverage gaps but does not elaborate on individual parameters beyond schema descriptions. The spend_threshold and date_preset parameters are adequately described in schema.

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

Purpose5/5

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

The description clearly states the tool returns 'tag-level performance with significance gating and coverage gaps', specifying verb and resource. It distinguishes from siblings like get_taxonomy (taxonomy structure) and get_meta_performance_summary (higher-level summary).

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 description provides explicit use cases: 'find which taxonomy values are associated with stronger historical outcomes, which are under-observed, and which standard values have never been tried.' It also ties to date presets from the main performance summary, giving context for when to use.

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

list_custom_reportsC

List saved custom report definitions for a brand.

ParametersJSON Schema
NameRequiredDescriptionDefault
brand_nameNo

TDQS

C2.5/5.0
Behavior2/5

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

No annotations are provided, so the description must fully disclose behavior. It fails to mention that this is a read-only operation, whether results are paginated, or any permission requirements. The description is too sparse to guide safe invocation.

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

Conciseness2/5

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

Extremely concise (8 words) but at the cost of essential information. It lacks details about output, parameters, or usage context, making it under-specified rather than efficiently concise.

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

Completeness1/5

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

For a tool with no output schema and no annotations, the description is critically incomplete. It does not describe the return value, error conditions, or any behavioral nuances needed for an agent to use it correctly.

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

Parameters1/5

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

Schema description coverage is 0%, and the description only vaguely implies the 'brand_name' parameter without explaining its meaning, format, or effect when omitted. It adds no value over the parameter name.

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

Purpose5/5

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

The description clearly states the action ('List') and resource ('saved custom report definitions') with a specific scope ('for a brand'). This differentiates from sibling tools like create_custom_report, delete_custom_report, and run_saved_custom_report.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like run_saved_custom_report or get_prebuilt_reports. No context about prerequisites or exclusions.

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

list_libraryA

Browse the authenticated user's saved analysis library (memory). Every analyze_creative call is automatically saved. Use this to recall what has been analyzed before — search by filename, hook, angle, emotion, CTA, talent, offer, audio, season, or format, then sort by recency or joined performance (spend, reach, frequency, ROAS, CTR, CPM, CPA).

ParametersJSON Schema
NameRequiredDescriptionDefault
ctaNoFilter by CTA
hookNoFilter by hook type (UGC, Demo, TalkHead, etc.)
sortNoSort by recent, spend, reach, roas, ctr, frequency, cpm, or cpa. Performance sorts use joined Meta performance when it exists.recent
angleNoFilter by messaging angle
audioNoFilter by audio type
limitNo
offerNoFilter by offer type
formatNoFilter by format: video, image, carousel, landing_page, email, long_video
offsetNo
searchNoSearch filename, naming, hook, or creative type
seasonNoFilter by seasonality
talentNoFilter by talent classification
emotionNoFilter by emotion
brand_nameNoExact workspace brand_name from list_workspaces

TDQS

A4.4/5.0
Behavior4/5

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

Discloses auto-saving behavior and that performance sorting uses joined Meta performance. No annotations, so description carries burden; it covers key behaviors but could add details on pagination or result limits.

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

Conciseness5/5

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

Three efficient sentences front-load purpose, every sentence adds value. No redundancy or filler.

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

Completeness4/5

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

Covers core context (auto-saved library, filter/sort options). Lacks explanation of output format, but given no output schema, the description provides sufficient completeness for an agent to use the tool.

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 86% (high), so baseline is 3. Description adds value by explaining searchable fields (filename, hook, etc.) and clarifying that performance sorts use joined Meta performance, enriching the schema definitions.

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

Purpose5/5

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

Clearly states it browses the authenticated user's saved analysis library, mentions auto-saving from analyze_creative, and lists searchable and sortable fields. Distinguishes from siblings like analyze_creative and get_analysis.

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?

Explicitly says to use this to recall past analyses, implying context. Does not explicitly state when not to use or compare to alternatives, but the description makes it clear the tool is for browsing the library.

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

list_naming_templatesA

List the authenticated user's saved naming templates. Templates are applied automatically to future analyze_creative results.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It only states a read operation (list), but does not disclose whether results are paginated, sorted, or filtered, nor any side effects or limitations. Minimal behavioral context beyond the basic action.

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

Conciseness5/5

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

Two sentences, front-loaded with the primary purpose, and a secondary sentence adding context. No redundant or irrelevant information. Highly concise.

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

Completeness3/5

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

For a simple read-only tool with no parameters and no output schema, the description provides the essential purpose and a hint of usage (templates applied to analyze_creative). However, it lacks details on the output format, ordering, or any pagination, which would be helpful for an agent using the result.

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?

The tool has no parameters, so the description does not need to add parameter info. Baseline score of 4 is appropriate as the schema already covers everything.

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

Purpose5/5

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

The description clearly states the tool lists the authenticated user's naming templates, distinguishing it from siblings like save_naming_template, preview_naming_template, and delete_naming_template. The verb 'list' and resource 'saved naming templates' are specific and unambiguous.

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

Usage Guidelines3/5

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

The description implies usage by mentioning templates are applied automatically to analyze_creative results, but it does not explicitly state when to use this tool versus alternatives or provide any exclusion criteria. No guidance on prerequisites or context is given.

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

list_workspacesA

List the authenticated user's workspaces and their exact brand_name scope. Call this first, then reuse one returned brand_name on every library, status, report, and strategist request.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

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

With no annotations, the description implies a read-only list operation. It adds value by stating the returned scope (brand_name) and ordering instructions. Minor omission: doesn't explicitly state non-destructive nature, but overall sufficient.

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

Conciseness5/5

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

Two sentences, no fluff. Front-loaded with action and purpose. Every word adds value.

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?

Given the tool's simplicity (no parameters, no output schema), the description fully conveys the tool's purpose, usage sequence, and output. No gaps.

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?

No parameters exist; schema coverage is 100%. The description does not need to add parameter details. Baseline score of 4 for zero-parameter tools is appropriate.

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

Purpose5/5

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

Clearly states the action (list), the resource (authenticated user's workspaces), and the returned data (brand_name scope). Differentiates itself as a prerequisite to be called first, distinguishing it from sibling tools.

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

Usage Guidelines5/5

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

Explicitly instructs to 'Call this first, then reuse one returned brand_name on every library, status, report, and strategist request.' Provides clear when-to-use and step-by-step guidance.

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

predict_creativeA

Legacy-named observational pre-flight. Compare a creative's tags with the brand's historical tag-level performance; this is not a forecast or causal estimate. Use the fit score and tag associations to form a one-variable controlled-test hypothesis with predeclared success and stop criteria. Pass an analysis_id or raw attributes.

ParametersJSON Schema
NameRequiredDescriptionDefault
attributesNoCreative attributes, alternative to analysis_id, e.g. {hook_type, visual_format, cta, emotion, offer_type}
brand_nameYes
analysis_idNoSaved analysis id to score (from analyze_creative)

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description must fully disclose behavior. It clarifies the tool is observational and non-forecasting, implying read-only access. However, it does not explicitly state side effects, authentication needs, or output details beyond 'fit score and tag associations.' This is adequate but not thorough.

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?

The description is concise with three sentences, each serving a purpose: context, functionality, and usage. It is front-loaded and efficient, though could slightly expand on the missing brand_name without becoming overly long.

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

Completeness3/5

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

For a tool with 3 parameters, no output schema, and no annotations, the description is moderately complete. It explains the core action and usage pattern but omits output format details and the meaning of brand_name. This leaves the agent with unanswered questions.

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

Parameters2/5

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

The description adds minimal value over the input schema: it restates the alternative between analysis_id and attributes and gives an example for attributes. However, the required brand_name parameter is completely unmentioned, and schema coverage is only 67%. The description fails to explain brand_name, leaving a significant gap.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Compare a creative's tags with the brand's historical tag-level performance.' It specifies that it is not a forecast or causal estimate, distinguishing it from prediction tools. It also explicitly mentions forming a hypothesis with predeclared criteria, setting it apart from sibling tools like analyze_creative.

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 description provides clear usage context: it is a 'Legacy-named observational pre-flight' used to form controlled-test hypotheses. It instructs to 'Pass an analysis_id or raw attributes.' However, it does not explicitly state when not to use this tool or compare to alternatives like analyze_creative.

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

preview_naming_templateC

Preview a naming template with sample taxonomy values before saving it.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNodefault
templateYes
separatorNo_

TDQS

C2.8/5.0
Behavior3/5

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

With no annotations, the description carries the burden of disclosing behavioral traits. The verb 'preview' suggests a read-only operation, which is non-destructive. However, it doesn't confirm idempotency, rate limits, or whether any side effects exist. The description is adequate but not thorough.

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

Conciseness3/5

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

The description is a single sentence, which is concise, but it lacks structure and depth. It frontloads the purpose but is too vague to be fully effective. Every word counts but it could be more informative without losing brevity.

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

Completeness2/5

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

Given that there is no output schema and three parameters, the description is incomplete. It does not explain what the preview returns, how parameters affect the output, or reference sibling tools like 'save_naming_template'. The description is too brief for an agent to use the tool confidently.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate, but it only mentions 'sample taxonomy values' without explaining the three parameters (name, template, separator). No parameter meanings or usage hints are provided, making the description minimally helpful for parameter understanding.

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?

The description clearly states the verb 'Preview' and the resource 'naming template with sample taxonomy values'. It implies a trial run before saving, which distinguishes it from sibling tools like 'save_naming_template' or 'generate_naming'. However, it doesn't explicitly differentiate from siblings.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., when to preview vs. save). The description only states 'before saving it', but doesn't explain prerequisites or when not to use it.

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

recommendA

Ask the Creative Strategist a question, grounded in the user's library + brand context. The strategist auto-loads patterns from prior analyses and any saved brand voice/audience/anti-patterns for the brand, then answers with concrete creative recommendations using taxonomy values. Use this for open-ended strategic questions ('what should I test next', 'how should I approach Q4', 'what kind of UGC would work for this audience').

ParametersJSON Schema
NameRequiredDescriptionDefault
questionYesThe strategic question
brand_nameYesBrand to ground the recommendation in

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses that the tool auto-loads patterns from prior analyses and brand voice/audience/anti-patterns, and answers with concrete recommendations. This adds useful behavioral context beyond the input schema, though it does not mention authorization or rate limits.

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

Conciseness5/5

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

The description is concise and front-loaded, with two sentences that efficiently convey purpose, grounding, and usage examples. No extraneous information, and every part earns its place.

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

Completeness4/5

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

Given the tool's complexity (AI-driven strategist), the description adequately explains what it does and what context it uses. There is no output schema, but the description mentions the nature of the answer ('concrete creative recommendations using taxonomy values'). It could benefit from mentioning return format or limitations, but it is largely complete.

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

Parameters3/5

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

Schema description coverage is 100%, and the descriptions of 'question' and 'brand_name' are clear. The main description adds context (e.g., 'strategic question', 'ground the recommendation') but does not significantly enhance parameter semantics beyond the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool's purpose: to ask the Creative Strategist a question grounded in the user's library and brand context, and receive concrete creative recommendations using taxonomy values. It distinguishes from siblings like analyze_creative or predict_creative by focusing on open-ended strategic questions.

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 description provides explicit usage guidance by listing example questions and explaining the tool's grounding in brand context and prior patterns. It implicitly differentiates from data querying tools but does not explicitly state when not to use it or contrast with specific sibling tools.

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

run_saved_custom_reportC

Run a saved custom report definition by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
report_idYes

TDQS

C2.6/5.0
Behavior2/5

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

Minimal behavioral disclosure. The description only says 'run', but does not specify side effects, idempotency, or what output the agent can expect (no output schema). No annotations provided to fill the gap.

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

Conciseness3/5

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

The description is a single sentence, which is concise, but it lacks structure and depth. It is front-loaded with the verb, but every sentence should earn its place; this one is too short to provide adequate context.

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

Completeness2/5

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

The description is insufficient for a tool with no output schema and no annotations. It does not explain what happens when a report is run, what data is returned, or if there are prerequisites or limitations.

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

Parameters2/5

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

With 0% schema description coverage, the description should add meaning to the parameter. It mentions 'by id' but does not explain the format, source, or constraints of the report_id beyond what the schema indicates (integer type).

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?

The description clearly states the tool runs a saved custom report by ID, using a specific verb and resource. However, it does not differentiate from sibling tools like 'get_prebuilt_reports' or 'list_custom_reports'.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives, such as when to run a report versus viewing its definition or listing reports.

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

save_brain_learningsB

Persist a reviewed get_brain_learnings slice as Brand Brain notes. Uses the same canonical audience filters; saving memory does not prove causality.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindsNo
limitNo
end_dateNo
brand_nameYes
cpa_targetNo
start_dateNo
date_presetNoall_time
roas_targetNo
watch_metricNoroas
minimum_spendNo
watch_sourcesNo
audience_limitNo
learning_spendNo
watch_group_byNomessaging_angle
watch_signal_focusNoall
conclusion_statusesNo
watch_coverage_focusNoall
watch_minimum_pointsNo
audience_signal_focusNoOptional audience signal filter when kinds includes audience: all, higher_observed_efficiency, or lower_observed_efficiencyall
include_gaps_in_notesNo
watch_maximum_gap_daysNo
watch_trajectory_focusNoall
conclusion_recency_daysNo
fatigue_decay_thresholdNo
watch_minimum_calendar_daysNo

TDQS

B3.3/5.0
Behavior2/5

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

No annotations provided, so description bears full burden. It discloses persistence and reuse of audience filters, but omits side effects, overwrite behavior, error handling, or authorization requirements. Minimal behavioral context.

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

Conciseness5/5

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

Two short sentences with zero redundancy. Every word serves a purpose: verb, resource, prerequisite, and a critical caveat.

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

Completeness2/5

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

Given 25 parameters, no output schema, and no annotations, the description is too lean. Doesn't explain 'Brand Brain notes,' how slices are formed, response expectations, or parameter interactions.

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

Parameters1/5

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

Schema coverage is 4% (only one param documented). Description adds no explanation of the 25 parameters beyond a vague reference to 'same canonical audience filters.' Fails to compensate for the low schema coverage.

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

Purpose5/5

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

Description clearly states 'persist' as verb and 'Brand Brain notes' as resource. Explicitly links to sibling tool get_brain_learnings, distinguishing save vs. read operation. The phrase 'reviewed get_brain_learnings slice' sets clear scope.

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?

Implies usage after reviewing a slice from get_brain_learnings. The causality caveat warns against misinterpretation. No explicit when-not or alternatives, but the context is clear enough for an agent.

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

save_custom_reportB

Save or update a reusable custom report definition for a brand. Use this when the user wants the same Motion-style combination view available later, such as hook_type x landing_page x offer_type, including custom report windows scoped to a specific test period or a richer dashboard preset with a saved view type, grouping, metric set, filters, sort, and metric preset.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesSaved report name
sortNoSaved dashboard sort direction: asc or descdesc
layerNostandard, brand, or allstandard
limitNo
metricNoroas, funnel_score, spend, ctr, cparoas
filtersNoOptional saved dashboard filters as field/value pairs
metricsNoOptional saved dashboard metric set, e.g. spend, roas, cpa, ctr
end_dateNoOptional YYYY-MM-DD lookback end to persist with the saved report
group_byNoSaved dashboard grouping mode such as creative, dimension, or matrixcreative
view_typeNoSaved dashboard view mode: table, matrix, comparison, or cardstable
brand_nameYes
date_rangeNoSaved dashboard range preset: last_7_days, last_30_days, last_90_days, custom, or all_timelast_30_days
dimensionsYesDimensions such as hook_type, landing_page, audience, offer_type, founder, product, or customer_segment
start_dateNoOptional YYYY-MM-DD lookback start to persist with the saved report
descriptionNo
spend_thresholdNo
saved_metric_presetNoOptional saved dashboard metric preset key such as diagnostics, conversion, delivery, video, scale, or all

TDQS

B3.2/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. It mentions save/update but does not disclose side effects (e.g., overwrites, destructive behavior, required permissions, or error cases). Incomplete for a mutation tool.

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?

Description is a single sentence that efficiently conveys purpose and examples. Could be slightly more structured (e.g., two sentences) but is not overly verbose.

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

Completeness3/5

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

Given 17 parameters and no output schema, description provides a useful overview but omits return value information and clear differentiation from sibling tools like create_custom_report. Adequate but with gaps.

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

Parameters3/5

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

Schema description coverage is high (76%). Description adds high-level context for the parameter combination but does not add significant detail beyond schema for individual parameters. Meets baseline sufficient for coverage.

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?

Description clearly states 'Save or update a reusable custom report definition for a brand' with specific examples of report types. However, it does not explicitly differentiate from the sibling 'create_custom_report' tool, leaving slight ambiguity.

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

Usage Guidelines3/5

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

Provides explicit usage context: 'Use this when the user wants the same Motion-style combination view available later.' Lacks explicit when-not-to-use or references to alternatives like create_custom_report or run_saved_custom_report.

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

save_naming_templateB

Create or update a saved naming template using {variable} placeholders. Supports standard taxonomy fields and brand-custom variables.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNodefault
templateYesTemplate such as {brand}_{founder}_{hook_type}_{cta}_{ratio}_{version}
separatorNo_

TDQS

B3.3/5.0
Behavior2/5

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

No annotations provided. Description does not disclose whether it overwrites existing templates (upsert), required permissions, or any destructive side effects. Minimal behavioral context beyond the basic action.

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

Conciseness5/5

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

Two sentences, no redundancy, efficient communication of purpose and core feature.

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

Completeness3/5

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

Moderate complexity tool with 3 params and no output schema. Description covers main purpose and placeholder syntax but lacks behavioral details (upsert behavior, return value) and use case context. Adequate but not complete.

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

Parameters3/5

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

Schema has 3 parameters; description adds context for template (placeholder syntax and supported fields) but adds nothing for name or separator. 33% schema coverage means description partly compensates but not fully.

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

Purpose5/5

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

Clearly states the verb (create/update), resource (naming template), and key features like {variable} placeholders and field support. Distinguishes from siblings such as list_naming_templates and delete_naming_template.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool vs. alternatives like list_naming_templates or generate_naming. Lacks context for deciding between create and update behavior.

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

scan_competitorA

Scan a competitor's ads from the Meta Ad Library and return classified results plus an aggregate strategy breakdown (top hook types, visual styles, CTAs, emotions, estimated spend). Provide page_id, page_name, or keyword. Returns ad metadata, full Creative Tagger analysis per ad, and strategy insights.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
countryNoUS
keywordNo
page_idNo
page_nameNo
brand_nameNoOptional workspace brand to attach the scan to for saved Market history and follow-up briefing.
analyze_creativesNo

TDQS

A4/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It mentions returning results and strategy breakdown, including 'Creative Tagger analysis' and 'estimated spend'. It implies a read-only scan with no destructive effects. However, it does not mention rate limits, data freshness, or auth requirements. Overall, it provides good behavioral context.

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

Conciseness5/5

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

The description is two sentences with no fluff. The first sentence captures the core action and outputs; the second adds input guidance. Every word earns its place.

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

Completeness4/5

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

With 7 parameters, no output schema, and no annotations, the description is fairly complete. It explains inputs and outputs well, including strategy breakdown. However, it could mention the structure of the return value (e.g., JSON format) given the absence of an output schema. Still, it provides sufficient context for agent invocation.

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

Parameters3/5

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

Schema coverage is only 14% (brand_name has a description). The description compensates by clarifying that page_id, page_name, or keyword are alternative inputs. It explains brand_name attaches to saved history. However, limit, country, and analyze_creatives are not explained beyond their defaults. The description adds some value but not full coverage.

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

Purpose5/5

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

The description clearly states it scans competitor ads from Meta Ad Library, returns classified results and strategy breakdown. It specifies inputs (page_id, page_name, or keyword) and outputs (ad metadata, Creative Tagger analysis, strategy insights). This distinguishes it from siblings like analyze_creative (individual analysis) or get_competitor_scan_history (history retrieval).

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

Usage Guidelines3/5

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

The description says 'Provide page_id, page_name, or keyword' but does not explicitly state when to use this tool versus alternatives like analyze_creative or get_competitor_scan_history. No when-not-to-use guidelines are provided. The guidance is implied but not explicit.

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

set_brand_contextA

Create or update brand context for a brand. Stored per-user. This is the brand's long-term memory — voice, audience, what works, what to avoid. Future strategist and brief calls automatically include this context. Upserts on (user, brand_name).

ParametersJSON Schema
NameRequiredDescriptionDefault
notesNoFree-form additional context
voiceNoBrand voice / tone (e.g., 'clinical, precise')
brand_nameYes
anti_patternsNoPatterns/elements to avoid for this brand
top_performersNoPatterns/elements that work for this brand
target_audienceNoWho the brand is for

TDQS

A4.2/5.0
Behavior3/5

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

No annotations provided. The description discloses that data is stored per-user and upserts on (user, brand_name), but does not mention side effects, permissions, or other behavioral traits beyond that.

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

Conciseness5/5

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

Two concise sentences that efficiently convey action, storage, and purpose without unnecessary words.

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

Completeness4/5

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

No output schema, but for a create/update tool that is acceptable. The description covers input parameters well and explains automatic inclusion in future calls, making it fairly complete.

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 high (83%). The description adds meaning by mapping brand context to parameters like voice, audience, top_performers, anti_patterns, going beyond the schema's brief descriptions.

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

Purpose5/5

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

The description clearly states it 'create or update brand context' and likens it to 'brand's long-term memory' covering voice, audience, etc. It distinguishes from sibling tools like get_brand_context, set_brand_entity, and set_brand_taxonomy_value.

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?

It explains that future strategist and brief calls automatically include this context, indicating when to use. However, it does not explicitly state when not to use or name alternatives, though the context is clear enough.

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

set_brand_entityB

Create or update a prompt/entity-based brand entity to recognize in creative analysis: founder, creator, customer, spokesperson, product, offer, customer_segment, icp, or campaign_label.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
aliasesNo
brand_nameYes
descriptionNo
entity_typeYes

TDQS

B3.3/5.0
Behavior2/5

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

Without annotations, the description only states 'create or update' but does not disclose whether updates override, any required permissions, side effects, or behavior when entity already exists.

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

Conciseness5/5

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

Single sentence, front-loaded with action and resource, efficiently listing allowed entity types. No extraneous words.

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

Completeness2/5

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

No output schema, no examples, and parameters mostly undefined. Despite low complexity, description fails to provide sufficient context for correct invocation.

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

Parameters2/5

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

Schema coverage is 0%; description only clarifies the entity_type parameter by listing valid values. Other parameters (name, aliases, brand_name, description) are unexplained, leaving significant gaps.

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

Purpose5/5

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

Clearly states the tool creates or updates a brand entity, with a specific list of entity types. Distinguishes from siblings like delete_brand_entity.

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

Usage Guidelines3/5

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

Implied usage through entity type list, but no explicit guidance on when to use this tool versus alternatives (e.g., delete_brand_entity or set_brand_context). Lacks context for appropriate scenarios.

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

set_brand_taxonomy_valueB

Create or update one brand-specific allowed value for an existing Creative Tagger dimension, with aliases. Example: dimension=talent, value='Stephen Lavender / Founder', aliases=['Stephen','founder'].

ParametersJSON Schema
NameRequiredDescriptionDefault
valueYes
aliasesNo
dimensionYes
brand_nameYes
descriptionNo

TDQS

B3.2/5.0
Behavior2/5

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

No annotations provided, so the description carries full burden. It mentions 'Create or update' implying mutation, but does not disclose behavior on conflicts, idempotency, required permissions, rate limits, or impact on existing data. The example adds some context but is insufficient.

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?

One sentence plus an example is concise and front-loaded. No unnecessary words. However, the example could be better integrated, but overall efficient.

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

Completeness2/5

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

Given the absence of annotations, output schema, and low parameter description coverage, the description is incomplete. It lacks information on error handling, response format, permissions, and behavioral details for a mutation tool. The example helps but does not cover all use cases.

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

Parameters2/5

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

Schema coverage is 0%, so description must compensate. It only explains two of five parameters (value and aliases) via the example, and does not describe brand_name, dimension, or description. For 5 parameters with 3 required, this is inadequate.

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

Purpose5/5

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

Description clearly states the tool creates or updates a brand-specific allowed value for a Creative Tagger dimension, with aliases. The verb 'Create or update' and resource 'brand-specific allowed value' are specific. The example further clarifies. Among sibling tools like set_brand_entity or generate_brand_taxonomy, this tool's purpose is distinct.

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

Usage Guidelines3/5

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

No explicit instructions on when to use this tool versus alternatives, nor when not to use it. The description implies usage when adding or updating a value with aliases, but it lacks context about prerequisites (e.g., dimension must exist) or exclusion criteria.

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

sync_meta_performanceA

Trigger a read-only Meta ads performance sync for a brand. Syncs ad performance rows and reports summaries by standard and brand-custom taxonomy values. Supports explicit attribution/lookback windows so agents can match the buyer's Ads Manager view. Does not create campaigns or edit budgets.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idNo
brand_nameNo
date_presetNolast_30d
attribution_windowsNoOptional Meta attribution/lookback windows such as 7d_click and 1d_view. Defaults to Meta's standard 7d_click + 1d_view reporting if omitted.

TDQS

A3.9/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. Declares read-only nature and lists capabilities, but omits details on data overwriting, rate limits, or async behavior. Adequate for basic transparency but could be more comprehensive.

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

Conciseness5/5

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

Three concise sentences: purpose, action details, constraints. No redundant information. Every sentence adds value, making it easy to scan.

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

Completeness3/5

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

No output schema, so description should hint at return values (e.g., success confirmation, data location). It does not. Also unclear if sync is synchronous. For a 4-parameter mutation-like tool, this gap reduces completeness.

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

Parameters3/5

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

Schema coverage is low (25%) with only attribution_windows described in schema. Description adds value by explaining attribution_windows (examples and default). However, account_id and brand_name lack description, relying on inference from tool context. Partially compensates for schema gaps.

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

Purpose5/5

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

Description clearly states the tool triggers a read-only Meta ads performance sync for a brand. It specifies syncing ad performance rows and report summaries by taxonomy values, distinguishing it from siblings like get_meta_performance_summary which likely just retrieves data.

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?

Provides explicit context for when to use: to match buyer's Ads Manager view via attribution windows. Also states what it does not do (create campaigns or edit budgets), helping agents avoid misuse. Lacks direct comparison to sibling tools but offers sufficient guidance.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 43 tool updatesv0.2.2
    • First observedanalyze_creative
    • First observedanalyze_gaps
    • First observedcreate_custom_report
    • First observeddelete_brand_entity
    • First observeddelete_brand_taxonomy_value
    • First observeddelete_custom_report
    • First observeddelete_naming_template
    • First observedexport_brain_learnings_context
    • First observedexport_demographics_context
    • First observedexport_performance_timeseries_context
    • First observedgenerate_brand_taxonomy
    • First observedgenerate_naming
    • First observedget_analysis
    • First observedget_brain_learnings
    • First observedget_brand_context
    • First observedget_brand_taxonomy
    • First observedget_competitor_scan_history
    • First observedget_creative_strategy_report
    • First observedget_demographics_performance
    • First observedget_library_patterns
    • First observedget_meta_performance_summary
    • First observedget_meta_status
    • First observedget_naming_variables
    • First observedget_performance_timeseries
    • First observedget_prebuilt_reports
    • First observedget_taxonomy
    • First observedget_taxonomy_performance
    • First observedlist_custom_reports
    • First observedlist_library
    • First observedlist_naming_templates
    • First observedlist_workspaces
    • First observedpredict_creative
    • First observedpreview_naming_template
    • First observedrecommend
    • First observedrun_saved_custom_report
    • First observedsave_brain_learnings
    • First observedsave_custom_report
    • First observedsave_naming_template
    • First observedscan_competitor
    • First observedset_brand_context
    • First observedset_brand_entity
    • First observedset_brand_taxonomy_value
    • First observedsync_meta_performance

TDQS

A3.5/5.0
Disambiguation5/5

Each tool targets a distinct function: analyzing, retrieving, managing taxonomy, performance, reports, naming, strategy, etc. Descriptions clearly differentiate overlapping areas like analysis vs. prediction vs. library browsing. No ambiguity between tools.

Naming Consistency5/5

All tools consistently use snake_case with a verb_noun pattern (e.g., analyze_creative, get_taxonomy, set_brand_context). Even longer names follow this pattern. No mixing of conventions.

Tool Count3/5

43 tools is on the high side for a single server. While the domain is broad (analysis, taxonomy, performance, reports, strategy), the number could be streamlined. However, each tool serves a clear purpose, so it's not excessive.

Completeness5/5

The server covers the full lifecycle of creative analysis: uploading, classification, storage, taxonomy management, performance tracking, reporting, naming, competitor scanning, and strategic recommendations. No obvious gaps for the stated purpose.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    A
    quality
    Not graded
    maintenance
    Enables AI-powered analysis, management, and optimization of Meta advertising campaigns across Facebook and Instagram, including performance insights, budget optimization, and creative testing.
    33
    -
  • A
    license
    A
    quality
    D
    maintenance
    Provides Meta and Google Ads intelligence for AI assistants, enabling users to analyze performance, track competitors, and manage ad campaigns through natural language. It features 17 tools for generating creative concepts, scraping competitor ads, and performing deep account-level analysis.
    17
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI assistants to create, analyze, and optimize ad campaigns across Google Ads, Meta Ads, TikTok Ads, LinkedIn Ads, Amazon Ads, and ChatGPT Ads through natural language using 400+ tools.
    87
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/stephenlavender/creative-tagger-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server