Skip to main content
Glama

Server Details

Decode video ads, load brand intelligence, generate ad scripts.

Status
Healthy
Last Tested
Transport
Streamable HTTP
URL
Repository
Heista-co/heista-mcp
GitHub Stars
0

Glama MCP Gateway

Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.

MCP client
Glama
MCP server

Full call logging

Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.

Tool access control

Enable or disable individual tools per connector, so you decide what your agents can and cannot do.

Managed credentials

Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.

Usage analytics

See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.

100% free. Your data is private.
Tool DescriptionsA

Average 4.4/5 across 34 of 34 tools scored. Lowest: 3.5/5.

Server CoherenceA
Disambiguation5/5

Each tool has a clearly distinct purpose, with detailed descriptions that prevent ambiguity. Tools like adformula_intelligence and decoder_intelligence are differentiated by pattern abstraction versus individual ad browsing, and the create_powersource_* variants are explicitly distinguished by input type.

Naming Consistency5/5

All tools use snake_case with a consistent verb_noun pattern (e.g., add_brand_asset, list_brand_assets, create_powersource_url). The intelligence tools (adformula_intelligence, decoder_intelligence) follow a noun_intelligence pattern, and the preset tools follow list_<type>_presets and get_<type>_preset patterns, all internally consistent.

Tool Count4/5

34 tools is above the typical 3-15 range, but the domain of ad creative intelligence is broad, covering brand analysis, ad decoding, script generation, asset management, and various preset browsing. Each tool earns its place with a specific function, so the count feels justified rather than bloated.

Completeness4/5

The tool surface covers the core workflow of analyzing brands, decoding ads, browsing patterns, generating scripts, and managing assets. Minor gaps exist, such as no tool to update or delete a powersource or update brand details, but these are non-critical for the primary use cases.

Available Tools

34 tools
add_brand_assetAdd Brand AssetAInspect

Upload an image to a brand by URL. The pipeline downloads it, runs the vision tagger (classifies type, detects product name, flags is_primary_product), stores it in the brand-assets bucket, and inserts a brand_assets row. Paid (vision tag credit). If vision tagging fails, the asset is still saved with type=general and can be retried via retag_brand_asset.

ParametersJSON Schema
NameRequiredDescriptionDefault
brand_idYesBrand to add the asset to. Get from list_brands.
image_urlYesPublic HTTPS URL to fetch. The pipeline downloads, vision-tags, stores in the brand-assets bucket, and inserts a row.
Behavior4/5

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

Annotations indicate readOnlyHint=false, openWorldHint=true, destructiveHint=false. The description adds valuable context: the pipeline downloads, runs vision tagger (classifies type, detects product name, flags is_primary_product), stores, and inserts a row, plus notes the vision tag credit cost. This goes beyond annotations without contradiction.

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 brief (two sentences for main purpose plus a necessary note). Every sentence adds value: the main description explains the action and pipeline, the note warns about implementation status. No fluff, front-loaded with key verb and resource.

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 exists, so the description should explain return behavior. It mentions 'inserts a brand_assets row' but not what the function returns. The note says it returns a 'not implemented' envelope, which is useful but incomplete for fully describing the tool's behavior when functional. Adequate but with 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?

Schema coverage is 100% with descriptions for both parameters. The description adds extra meaning: for brand_id, hints to 'Get from list_brands'; for image_url, details the pipeline steps. While schema already covers basics, these additions improve usability, warranting a score above the baseline of 3.

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 'Upload an image to a brand by URL', specifying the action, resource, and method. However, the note about 'not implemented' slightly undermines immediate clarity, but the core purpose is well-defined and distinguishes from sibling tools like list_brand_assets and delete_brand_asset.

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 'Not implemented in MCP yet' and provides alternatives: the REST endpoint and workspace UI uploader. This gives clear when-not-to-use guidance and alternative approaches, which is excellent for agent decision-making.

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

adformula_intelligenceAd Formula IntelligenceA
Read-onlyIdempotent
Inspect

Browse proven ad formula blueprints — structural patterns clustered from 3-10+ winning ads that independently converged on the same beat architecture while Meta kept rewarding them with sustained spend. Takes optional filters: vertical, creative_format (e.g. TALKING_HEAD, UGC, FOUNDER_STORY), marketing_angle, algo_intent, hook_type, and limit (1-10, default 5). Each formula returns: source ad count, average active days (runtime proof), confidence score, 6-layer beat blueprint, per-beat visual direction, marketing angle, psychology mission. Free, read-only, idempotent.

Use this when the user asks "what's working in [category]", "show me formulas for talking-head ads", "what scripts work in my vertical", or wants category-level pattern discovery before committing to a single ad. Pass the returned formula id to generate_adscript with source_type="formula" for synthesis.

When choosing among results: prioritise (1) avg_active_days as primary proof, (2) marketing_angle alignment with the brand's buyer tension, (3) source_ad_count for cluster robustness, (4) confidence_score as tiebreaker.

Do NOT use when the user names a specific ad — decode that ad with decode_ad. Do NOT use for sentence-level transcript fidelity — formulas abstract the structure, not exact copy.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax formulas to return (1-10, default 5).
verticalNoIndustry vertical to filter formulas. Examples: BEAUTY_SKINCARE, HEALTH_SUPPLEMENTS, FITNESS, FOOD_BEVERAGE, FASHION_APPAREL, SAAS_SOFTWARE, FINANCE_FINTECH, INFO_PRODUCTS, TECH_GADGETS. Omit for all verticals.
hook_typeNoFilter by opening hook subtype. Examples: CURIOSITY_SPIKE, IDENTITY_HOOK, CONTRADICTION_HOOK, DIRECT_QUESTION_HOOK, PAST_SELF_OPEN, DATA_POINT_START, PROVOCATION. Omit for all hook types.
algo_intentNoStructural engine to filter by. Examples: PROBLEM_AGITATE_SOLVE, MECHANISM_REVEAL, TRANSFORMATION_ARC, SOCIAL_PROOF_STACK, COMPARISON_CONTRAST, URGENCY_SCARCITY. Omit for all intents.
creative_formatNoCreative format to filter by. Examples: TALKING_HEAD_BROLL, VOICEOVER_BROLL, UGC_TESTIMONIAL, PRODUCT_DEMO, SLIDESHOW_OVERLAY, INFLUENCER. Omit for all formats.
marketing_angleNoMarketing angle to filter by. Examples: PROBLEM_SOLUTION, SOCIAL_PROOF_RESULTS, HOW_TO_TUTORIAL, INGREDIENT_SCIENCE, ASPIRATIONAL_IDENTITY, VALUE_STACK. Omit for all angles.
Behavior5/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true; description adds that formulas are abstracted, include source ad count, average active days, confidence score, etc., and are not exact transcripts. No contradictions.

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?

All sentences contribute important information. The description is front-loaded with purpose, then details, then usage guidance, and there is no redundancy or fluff.

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?

No output schema exists, but description thoroughly covers return fields (source ad count, avg active days, etc.) and integration with generate_adscript. With 6 parameters all documented in schema and additional usage advice, the tool is fully specified.

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?

Input schema has 100% description coverage, so parameters are well-documented. The description adds value by suggesting filtering order and the prioritization strategy for selecting results, which goes beyond schema details.

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 'proven ad formula blueprints' and differentiates from siblings like decode_ad and generate_adscript by specifying that formulas are abstracted structural patterns, not exact transcripts. It also notes the tool is free and provides filtering advice.

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?

Explicit guidance: 'Use for generate_adscript with source_type="formula".' 'Filter by vertical first, then narrow...' and a prioritized order for selecting results. Also tells when not to use it: 'For sentence-level fidelity, use a single decode instead.'

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

check_balanceCheck BalanceA
Read-onlyIdempotent
Inspect

Check the calling user's Heista API credit balance, month-to-date usage broken down by operation, lifetime spend, and the current pricing for every paid tool. Takes no inputs. Returns balance in cents, lifetime spend in cents, month-to-date call counts per tool (decode_ad, create_powersource_*, generate_adscript), per-tool unit pricing, and a top-up link the user can follow to add credits. Free, read-only, idempotent.

Use this whenever the user asks about credits, balance, usage, how much they've spent, top-ups, pricing, "what does this cost", or "how many credits do I have". This is also the ONLY surface where dollar amounts are legitimate to report in conversation — everywhere else, cost should be referenced in credits, not currency.

Do NOT use to add credits or change billing — only to read state. Do NOT call this on every turn — invoke once when the user explicitly asks about account state.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior4/5

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

Annotations already indicate read-only, idempotent, non-destructive behavior. The description adds specific return details (balance in cents, lifetime spend, monthly counts, top-up link), which enriches the behavioral model beyond annotations.

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 consists of two well-structured sentences. The first sentence details the tool's function and outputs, the second provides clear usage context. Every word adds value with no redundancy.

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 zero parameters, thorough annotations, and no output schema, the description adequately covers the tool's purpose and return information. It could optionally mention error cases or authentication needs, but the current level is sufficient for an agent to correctly invoke 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?

The input schema has zero parameters, so no parameter description is needed. According to the guidelines, a baseline of 4 is appropriate since the schema coverage is 100% and no parameters exist.

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 the tool checks credit balance, usage breakdown by operation, and pricing for paid tools. It clearly identifies the verb 'Check' and the resources (balance, usage, pricing). No sibling tool overlaps with this purpose.

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 directly states 'Call when the user asks about credits, balance, usage, top-ups, or pricing.' This provides clear usage triggers. Although no explicit when-not-to-use is given, sibling tools are sufficiently distinct to avoid confusion.

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

create_powersource_docsCreate PowerSource from DocumentsAInspect

Build a complete creative intelligence profile from internal brand documents — creative briefs, brand guidelines, product specs, customer research, competitive analysis. Takes any mix of file_ids (from a previous upload), document_urls (public PDF/DOCX/TXT/MD links, up to 10), or documents_inline (base64-encoded files with filename), plus an optional context_url for layering live brand context (colors, fonts, current messaging) and optional idempotency_key. Returns a job_id; poll with get_powersource. Output shape is identical to create_powersource_url: identity, offer, selling points, voice, buyer profile, tensions, angles, emotional arcs, ctas, narrative.

Use this when the user says "I have a brief", "here's my brand guidelines", "use this document", drops a PDF / DOCX / strategy deck, or when the truth lives in internal materials rather than the public website. The pipeline reads text only — convert PDFs to markdown before submitting via documents_inline when possible.

Costs 100 credits.

Do NOT use for URL-only scans — use create_powersource_url. For URL + docs combined (highest fidelity, triangulates public messaging against internal strategy), use create_powersource_full.

ParametersJSON Schema
NameRequiredDescriptionDefault
brand_idNoOptional Brand to attach this scan to. Get from list_brands. When omitted, the pipeline auto-resolves a brand by the context_url domain (if provided) or creates a standalone scan with no brand link.
file_idsNoArray of file IDs from a previous upload. Up to 10 files.
context_urlNoOptional website URL to layer live brand context on top of the documents (colors, fonts, current messaging).
document_urlsNoArray of public URLs pointing to documents (PDF, DOCX, TXT, MD). Up to 10 URLs.
idempotency_keyNoOptional unique key to make this call safely retryable. If the same key + org repeats, the original result is returned without re-charging.
documents_inlineNoInline documents as base64. Use when the user has uploaded a file into chat and no public URL exists. IMPORTANT: The synthesis pipeline reads TEXT ONLY — it ignores images, diagrams, and visual layout. For any PDF or DOCX the user drops into chat: (1) read the file using your file-reading tools, (2) extract the text content preserving section headers and structure, (3) save as a clean .md or .txt file, (4) base64-encode the text file and submit here. Do NOT base64-encode the original PDF — extract text first. This keeps payloads small (a 50-page brief extracts to ~50KB of text vs 5MB of PDF) and produces better results because the pipeline gets clean structured text instead of OCR-extracted noise from embedded images. Max 5MB per file, 10 files total across all input types.
Behavior4/5

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

The description discloses credit cost (100 credits), output shape (same as create_powersource_url), and idempotency key usage. It does not contradict annotations (readOnlyHint: false, etc.). It could mention that it is non-destructive but this is already implied by annotations. Good balance.

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 front-loaded with purpose and output, followed by usage context and parameter details. Every sentence adds value, and there is no redundancy. It fits essential information in a concise yet comprehensive paragraph.

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 (5 parameters, no output schema, no enums), the description is comprehensive. It explains output shape by referencing a sibling tool, cost, and parameter behavior. Minor lack: it doesn't specify behavior when both file_ids and document_urls are provided, but overall it covers key aspects well.

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?

Input schema covers all parameters with descriptions, so baseline is 3. The description adds significant value for the documents_inline parameter, including detailed instructions on extracting text and base64 encoding. For other parameters, it adds minimal extra detail beyond schema. Overall, it compensates for 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?

The description clearly states the tool's purpose: building a creative intelligence profile from internal brand documents. It specifies document types (briefs, guidelines, etc.) and output fields (brand identity, buyer profile, tensions, etc.). It distinguishes itself from the sibling tool create_powersource_url by emphasizing the use of documents versus website URLs.

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 guidance on when to use this tool: 'when the truth lives in PDFs and DOCX, not on the website.' It also explains how to pass documents via file_ids or document_urls, and mentions optional context_url. However, it could be more explicit about when not to use it (e.g., if data is already in a structured format).

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

create_powersource_fullCreate PowerSource Full (URL + Documents)AInspect

Build the highest-fidelity creative intelligence profile by combining a brand's public website URL with their internal documents. Takes a required website URL plus at least one document — file_ids from previous upload, public document_urls (PDF/DOCX/TXT/MD, up to 10), or documents_inline (base64-encoded). Optional idempotency_key for safe retry. Returns a job_id; poll with get_powersource. Same response shape as create_powersource_url, but the synthesis cross-checks how the brand presents publicly against what the team actually believes internally, producing stronger conviction on voice, positioning, proof, and tension architecture than either input alone.

Use this when the user has both a public site AND a brief / brand guidelines / strategy deck and wants the deepest possible profile — the kind of intelligence a senior strategist produces over a week. Default recommendation when both inputs are available.

Costs 200 credits.

Do NOT use for URL-only scans — use create_powersource_url (100 credits). Do NOT use for docs-only scans — use create_powersource_docs (100 credits).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesWebsite URL to analyze. Supports any public website. REQUIRED.
brand_idNoOptional Brand to attach this scan to. Get from list_brands. When omitted, the pipeline auto-resolves a brand by the URL domain (creating one if needed).
file_idsNoArray of file IDs from a previous upload. Up to 10 files.
document_urlsNoArray of public URLs pointing to documents (PDF, DOCX, TXT, MD). Up to 10 URLs.
idempotency_keyNoOptional unique key to make this call safely retryable.
documents_inlineNoInline documents as base64. The pipeline reads TEXT ONLY — for any PDF or DOCX, extract the text content first using your file-reading tools, save as .md or .txt, then base64-encode and submit here. Supported formats: PDF, DOCX, TXT, MD. Max 5MB per file.
Behavior4/5

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

Annotations indicate mutation (readOnlyHint=false) and non-destructive (destructiveHint=false). Description adds cost (200 credits), requirement of both URL and document, and states result shape matches another tool. Does not detail any side effects or authorization needs, but context is 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?

Four well-structured sentences: purpose, use case, return shape, and alternatives. Front-loaded with key information, no wasted 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?

Covers usage, requirements, cost, and alternatives. Lacks output schema, but references shape of sibling tool. Adequate for a complex tool, though more detail on return fields would improve completeness.

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

Parameters5/5

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

Schema coverage is 100%, but description adds critical nuance: 'Requires both a URL and at least one document' and provides detailed guidance on inline documents (text-only pipeline, handling PDF/DOCX). This significantly aids correct parameter usage.

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 'builds the highest-fidelity creative intelligence profile' by combining URL and documents, and distinguishes from siblings by mentioning single-mode variants for URL-only or docs-only.

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 says 'Use when you want public messaging triangulated against internal strategy' and advises 'For URL-only or docs-only, use the single-mode variants.' Also notes cost and requirements.

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

create_powersource_urlCreate PowerSource from URLAInspect

Build a complete creative intelligence profile of a brand from a single website URL. Takes a website URL (homepage, PDP, landing page) plus optional idempotency_key, force_refresh, and webhook_url. Returns a job_id immediately; poll with get_powersource every 3-5s (typically 60-90s total). The final payload contains 14 structured sections: identity, offer, selling_points, brand_story, brand_style, brand_assets, brand_voice, buyer_profile, 12 buyer tensions, marketing angles, emotional_arcs, ctas, proof_assets, and strategic narrative.

Use this when the user says "analyse my brand", "load my brand", "build a strategy from my site", "what should my ads say", "decode this website", or pastes a homepage / competitor URL and wants a brand profile (not an ad decode). Also use this as the brand layer before calling generate_adscript — pass the returned powersource_id.

Costs 100 credits. Re-scanning the same URL within your org returns the cached result free.

Do NOT use for internal docs / PDFs / brand guidelines — use create_powersource_docs. For URL + docs combined (highest fidelity), use create_powersource_full. Do NOT use to decode a video ad — use decode_ad.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesWebsite URL to analyze. Supports any public website (e.g., gymshark.com, notion.so). Bare domains auto-resolve to https.
brand_idNoOptional Brand to attach this scan to. Get from list_brands. When omitted, the pipeline auto-resolves a brand by the scanned domain (creating one if needed) — the addendum D6 default. Pass this when you have an existing brand_id (e.g. from a prior list_brands call) and want to guarantee linkage rather than relying on domain match.
webhook_urlNoHTTPS URL to receive a POST notification when the scan completes or fails. Eliminates need for polling.
force_refreshNoForce re-extraction of brand data even if cached. Use when a brand has rebranded or updated their website.
idempotency_keyNoOptional unique key to make this call safely retryable. If the same key + org repeats, the original result is returned without re-charging.
Behavior5/5

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

Provides detailed behavioral traits beyond annotations: credit cost, caching rules, scope tags for data freshness (brand vs product level), and derived sections. No contradiction with annotations.

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?

Well-structured with bullet points and sections, front-loaded with purpose. Slightly lengthy but justified by complexity.

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?

Comprehensive coverage: explains caching, credit costs, output structure via scope tags, relationships with siblings, and no output schema needed as described.

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 already covers all 4 parameters with descriptions (100% coverage). The description adds context about caching interactions (force_refresh) but does not significantly enhance parameter meaning 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?

Clearly states it builds a creative intelligence profile from a URL, specifies it's optimized for ad creative and not for executive strategy, and references sibling tools like generate_adscript that use the output.

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 describes usage context (ad scripts vs. executive strategy), caching behavior, credit costs, and how it feeds into other tools via brief_id or job_id.

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

decode_adDecode Video AdAInspect

Decode a specific video ad URL into its full structural formula — beat-by-beat breakdown, hook classification, behavioral psychology stack, creative format, runtime performance signals (active days on Meta Ad Library when available), and per-cut visual data. Takes one video URL plus an optional idempotency_key. Returns a job_id immediately; poll with get_decode every 15s until status is "completed" (typically 45-60s end-to-end).

Use this when the user pastes an ad URL, names a specific competitor ad, asks "decode this" or "break down this ad" or "what makes this ad work", or wants sentence-level fidelity to one specific winner before writing a script with generate_adscript.

Supports Facebook Ad Library, TikTok, Instagram Reels, YouTube Shorts, and direct .mp4 URLs. Costs 15 credits for videos ≤60s, 20 credits for 61-120s.

Do NOT use to browse the corpus or find ads by category — use decoder_intelligence or adformula_intelligence (both free) for discovery. Do NOT use for image ads or static creative.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesVideo URL to decode. Supports: Facebook Ad Library, TikTok, Instagram Reels, YouTube Shorts, or direct .mp4 URL.
idempotency_keyNoOptional unique key to make this call safely retryable. If the same key + org repeats, the original result is returned without re-charging.
Behavior4/5

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

The description adds behavioral detail beyond annotations: it reveals it's an async operation returning a job_id to poll, costs credits (15-20), and supports specific platforms. Annotations indicate not read-only and not destructive, which aligns with the write-like behavior of costing and polling.

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 sentences with clear structure: first sentence states core purpose, second details outputs and usage, third covers support and costs. Every sentence adds value without redundancy.

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?

Despite no output schema, the description fully explains the async workflow (returns job_id), credit costs, supported platforms, and integration with generate_adscript. This is complete for a decode tool of medium complexity.

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?

With 100% schema coverage, the description adds value by explaining the URL supports multiple platforms and the idempotency_key's retry-safe behavior. This enhances understanding 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 clearly states the tool reverse-engineers video ads into structural formulas, with specific outputs like beat-by-beat breakdown and hook classification. It distinguishes itself from siblings like decoder_intelligence and generate_adscript by focusing on decoding and linking to script 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 provides explicit when-to-use context (reverse-engineer ads for structure) and links to generate_adscript. It lists supported URL formats and credit costs, though it doesn't explicitly state when not to use or alternatives for other ad types.

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

decoder_intelligenceDecoder IntelligenceA
Read-onlyIdempotent
Inspect

Browse individual decoded ads from Heista's corpus of real winning Meta/TikTok creative. Takes optional filters: vertical, creative_format, marketing_angle, hook_type, algo_intent, brand (partial name match), and limit (1-10, default 5). Each result returns beat timeline, classification, psychology, runtime performance signals (active days on Meta when available), and a decode id you can pass into generate_adscript with source_type="decode" to write a fresh script on that exact structure. Free, read-only, idempotent — no credits consumed.

Use this when the user wants a specific ad as a script template (not an averaged formula), asks "show me winning ads in [vertical]", "what are [brand]'s top ads", or wants to see examples before committing to a generation. Source discovery surface — the response is the spine; for the full bundle with transcripts and director's read, call get_decode by id afterwards.

Do NOT use to decode a NEW ad from a URL — use decode_ad (paid). Do NOT use for category-level patterns abstracted across multiple ads — use adformula_intelligence. Do NOT use to write the script itself — use generate_adscript or write directly from the bundle.

ParametersJSON Schema
NameRequiredDescriptionDefault
brandNoFilter by brand name (case-insensitive partial match). Examples: "Gymshark", "AG1", "Huel". Omit for all brands.
limitNoMax decoded ads to return (1-10, default 5).
verticalNoIndustry vertical to filter decoded ads. Examples: BEAUTY_SKINCARE, HEALTH_SUPPLEMENTS, FITNESS, FOOD_BEVERAGE, FASHION_APPAREL, SAAS_SOFTWARE, FINANCE_FINTECH, INFO_PRODUCTS, TECH_GADGETS. Omit for all verticals.
hook_typeNoFilter by opening hook type. Examples: CURIOSITY_SPIKE, IDENTITY_HOOK, CONTRADICTION_HOOK, PROVOCATION, STORY_START, DIRECT_QUESTION_HOOK. Omit for all hook types.
algo_intentNoStructural engine to filter by. Examples: PROBLEM_AGITATE_SOLVE, MECHANISM_REVEAL, TRANSFORMATION_ARC, SOCIAL_PROOF_STACK, COMPARISON_CONTRAST, URGENCY_SCARCITY. Omit for all intents.
creative_formatNoCreative format to filter by. Examples: TALKING_HEAD_BROLL, VOICEOVER_BROLL, UGC_TESTIMONIAL, PRODUCT_DEMO, SLIDESHOW_OVERLAY, INFLUENCER. Omit for all formats.
marketing_angleNoMarketing angle to filter by. Examples: PROBLEM_SOLUTION, SOCIAL_PROOF_RESULTS, HOW_TO_TUTORIAL, INGREDIENT_SCIENCE, ASPIRATIONAL_IDENTITY, VALUE_STACK. Omit for all angles.
Behavior4/5

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

The description aligns with annotations (readOnlyHint, destructiveHint, idempotentHint). It adds context about the corpus source and the downstream use of the returned 'id', which goes beyond annotations. No contradictions.

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 with no redundancy. The first sentence states purpose and return value, the second explains downstream usage, and the third gives guidance and lists filters. Very 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?

The description covers the tool's purpose, return structure, filter options, and a key downstream use case. It lacks explicit mention of filter combination logic (AND/OR) and default limit, but given the schema covers defaults, it's mostly 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?

All 7 parameters have descriptions in the input schema (100% coverage), so the description adds moderate value by providing examples and usage context. However, the schema already explains each parameter well, so the description's additional meaning is limited.

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 browses individual decoded ads and specifies the resource (decoded ads) and action (browse). It distinguishes from siblings by mentioning an 'id' for use in generate_adscript, implying a specific use case not covered by averaged formulas.

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 when-to-use guidance: 'Use when you want a specific ad as a template, not an averaged formula.' This implies an alternative tool for averaged formulas, though it doesn't name it directly. The guidance is clear and helpful.

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

delete_brand_assetDelete Brand AssetA
DestructiveIdempotent
Inspect

Delete one brand asset by asset_id. Removes the brand_assets row and (when the asset was uploaded rather than scanned) the storage object. Destructive — confirm with the user before calling. Use list_brand_assets first to find the asset_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
asset_idYesAsset to delete. Get from list_brand_assets.
Behavior4/5

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

Beyond annotations (destructiveHint=true, idempotentHint=true), the description explains exactly what gets deleted: the brand_assets row and, if uploaded, the storage object. This adds valuable 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 substantive sentences plus a directive, front-loaded with the core purpose. 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?

For a simple single-parameter destructive tool, the description covers purpose, behavioral effects, and usage steps. Minor gap: no mention of return value or behavior on non-existent asset, but idempotentHint suggests safe re-calls.

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 100% with a description referencing list_brand_assets. The description reinforces this guidance but adds no new 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 clearly states the action (delete), resource (brand asset by asset_id), and distinguishes from siblings like list_brand_assets and add_brand_asset. It specifies the scope: removes row and optionally storage object.

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?

Provides explicit when-to-use (destructive deletion) and prerequisite (use list_brand_assets first to find asset_id). Directs confirming with user before calling, which is strong guidance.

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

generate_adscriptGenerate Ad ScriptAInspect

Generate direct-response video ad scripts by fusing a proven structural source (decoded ad or formula) with a brand's PowerSource. Output is feed-native ad copy for paid social (Meta, TikTok, Reels) in the brand's voice — hook, beat-by-beat body, CTA close, plus visual direction per beat. Takes source_id (from adformula_intelligence, decoder_intelligence, or decode_ad), source_type ("formula" or "decode"), powersource_id (from any create_powersource_*), and tunable params: count (1-5 variants, tensions and selling points auto-rotated across variants), script_mode ("blueprint" preserves source structure exactly, "remix" preserves psychology but writes original copy), duration (target seconds), audience, tension override, selling_points override, voice_mode ("creator" for UGC default, "brand" for owned channels), and idempotency_key.

Use this when the user says "write me a script", "I need a TikTok script", "write an ad based on this", or wants shell-faithful replication of a proven winner in their own brand voice. REQUIRES both a structural source AND a powersource — guide the user through creating either if missing.

Metered pricing — typically 2-5 credits per script (~2 credits for 15s, ~5 credits for 60s). Pre-flight reserves a 17-credit ceiling and refunds the difference after measurement.

Do NOT use to discover sources — use decoder_intelligence or adformula_intelligence first. Do NOT use to extract brand intel — use create_powersource_url first.

ParametersJSON Schema
NameRequiredDescriptionDefault
countNoNumber of scripts to generate (1-5, default 1). Each script uses a different tension and selling point combination for variety.
tensionNoLock to a specific behavioral tension from the PowerSource (e.g., "Frustration → Relief"). Omit to let the system select the best match.
audienceNoAudience segment from the PowerSource. "buyer_profile" (default) uses the composite buyer. "audience_0", "audience_1", etc. target specific segments.
durationNoTarget duration in seconds (remix mode only, 10-120). Blueprint mode locks to the source duration.
source_idYesThe ID of the structural source to write from. For source_type="decode": either a job_id from your own decode_ad call OR an id from decoder_intelligence (corpus ad). For source_type="formula": a formula id from adformula_intelligence.
voice_modeNoVoice register for the script. "creator" (default) = authentic creator voice for UGC, PowerSource locks facts/tensions/selling points but NOT voice register. "brand" = full PowerSource brand voice for brand-owned content (website, OOH, brand films). Most ad scripts should use "creator".
script_modeNoScript mode. "blueprint" (default) follows the source formula exactly — same beat structure, same timing. "remix" uses the psychological architecture but writes original copy.
source_typeYesType of structural source. "decode" = a single decoded ad (your own or from the corpus). "formula" = a clustered blueprint built from multiple winning ads.
powersource_idYesIdentifier for the brand PowerSource that supplies voice, selling points, tensions, and audience. Accepts either a job_id from create_powersource_* or a brief_id from get_powersource — both work.
selling_pointsNoLock to specific selling points from the PowerSource (max 5). Omit to let the system select the best match for each beat.
idempotency_keyNoOptional unique key to make this call safely retryable. If the same key + org repeats, the original result is returned without re-charging.
Behavior5/5

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

The description goes beyond the annotations by detailing behavioral traits such as auto-rotation of tensions and selling points across variants, metered pricing with a pre-flight credit ceiling, and the effect of the idempotency_key. Since annotations are minimal (readOnlyHint=false, etc.), the description fully covers the tool's non-destructive but consumptive behavior and pricing model.

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 paragraph of 6 sentences, tightly packed with essential information. Each sentence serves a purpose: core function, parameter sourcing, mode distinctions, variant generation, and pricing. No wasted words, and the most critical information is front-loaded.

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 (11 parameters, no output schema), the description is comprehensive. It explains how to obtain prerequisite IDs from sibling tools, the difference between blueprint and remix modes, auto-rotation of variants, and the credit pricing model. The only minor gap is a precise description of the output structure beyond 'hook, beat-by-beat body, and CTA close,' but this is adequate for an AI agent to understand the return value.

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?

With 100% schema coverage, the baseline is 3. The description adds value by explaining the provenance of source_id (from specific tools) and powersource_id (from create_powersource_*), clarifying that duration only works in remix mode, and noting auto-rotation of tensions/selling points for the count parameter. These enrich the schema descriptions without repeating them.

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 function: generating direct-response video ad scripts from a proven structure and a brand's PowerSource. It specifies the output format (hook, beat-by-beat body, CTA) and distinguishes itself from siblings by referencing where to obtain the required source_id and powersource_id (adformula_intelligence, decoder_intelligence, etc.), making its role in the workflow 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 provides explicit instructions on when to use the tool, including how to pass source_id, source_type, and powersource_id from specific sibling tools. It also explains the two script modes (blueprint vs remix) and when each is appropriate. However, it does not include explicit 'when not to use' or alternatives among siblings, which would further enhance guidance.

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

get_ad_formula_presetGet Ad formulaA
Read-onlyIdempotent
Inspect

Get one ad formulas preset by id, including its full body payload (framework, agent config, etc.). Call the matching list tool first to discover ids. Free, read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPreset id. Discover ids by calling the matching list_<type>_presets first.
Behavior3/5

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

Annotations already declare readOnlyHint and idempotentHint as true. Description adds 'free, read-only' and specifies output contains full body payload, providing some additional context but not extensive behavioral detail beyond what annotations cover.

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 efficient sentences: first states purpose and output, second provides usage guidance. No wasted words.

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 simple retrieval tool with one parameter and no output schema, the description fully covers what it does, what it returns, and how to obtain the required input.

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?

Single parameter 'id' has full schema description with format and regex. Description reiterates the discovery method, adding value but baseline for high coverage is 3.

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 'Get' and resource 'ad formulas preset by id', and specifies it returns the full body payload including framework and agent config. Distinguishes from sibling list tool.

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 advises to call the matching list tool first to discover ids, and notes it is free and read-only. Lacks explicit when-not-to-use, but context makes it clear.

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

get_brandGet BrandA
Read-onlyIdempotent
Inspect

Get a brand's full canonical record — name, domain, voice (tone_of_voice), story, visual identity (logo, primary color, visual assets), and counts. Use to inspect what a brand carries before deciding which Heist context to run, or to read the brand voice directly when writing copy. Free, read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
brand_idYesBrand to inspect. Get from list_brands.
Behavior4/5

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

Annotations already declare readOnlyHint and idempotentHint. Description confirms read-only and adds detail on returned fields and free access, providing useful context beyond annotations.

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. Purpose, content, and usage are front-loaded and clear.

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 simple read tool with one parameter and no output schema, the description fully covers what the tool does, what it returns, and when to use it, especially with supporting annotations and sibling list.

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 100% with a description for the single parameter. Description doesn't add extra parameter semantics beyond what schema provides, meeting the baseline.

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 it retrieves a full brand record listing specific fields (name, domain, voice, story, visual identity, counts), distinguishing it from sibling tools like list_brands and get_powersource.

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 for inspecting brand before running Heist context or reading brand voice when writing copy. Also notes 'Free, read-only' and points to list_brands for obtaining brand_id.

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

get_creative_agent_presetGet Creative agentA
Read-onlyIdempotent
Inspect

Get one creative agents preset by id, including its full body payload (framework, agent config, etc.). Call the matching list tool first to discover ids. Free, read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPreset id. Discover ids by calling the matching list_<type>_presets first.
Behavior4/5

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

Description adds context beyond annotations by specifying the returned payload includes 'full body payload (framework, agent config, etc.)'. Annotations already declare readOnlyHint and idempotentHint, so description complements them well.

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?

Description is two sentences, front-loaded with the main action, contains no filler, and each sentence adds distinct 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?

For a simple tool with one parameter and no output schema, the description is sufficiently complete: it states the purpose, prerequisite, and nature (free/read-only). Could be slightly more explicit about the return structure, but 'full body payload' is adequate.

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 100%, and the description merely mentions 'by id' without adding new semantics beyond what the schema provides (UUID format, discover via list). Baseline of 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?

Description clearly states 'Get one creative agents preset by id, including its full body payload', specifying the verb (get), resource (preset), and scope (by id). It distinguishes from sibling list tool by advising to call the list tool first.

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 the matching list tool first to discover ids', providing a clear prerequisite. Also states it is 'Free, read-only', indicating when it's safe to use.

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

get_decodeGet Decode ResultA
Read-onlyIdempotent
Inspect

Retrieve the full decode bundle for a previously-submitted ad, or poll the status of a running decode job. Takes a single job_id (UUID returned by decode_ad). Returns either status="processing" (call again in 15s) or the completed payload — exact transcripts per beat, director's read, per-cut visual data (shot_breakdown), visual psychology, behaviour biases, beat structure, hook classification, and runtime fields (active days on Meta Ad Library when the source supports it).

Use this immediately after decode_ad and every 15 seconds until the job completes. Also use this to re-fetch a decode any time you need the full bundle for script writing (Path B) or as the source_id for generate_adscript (source_type="decode"). Free — billing happens at decode_ad submit time, not on retrieval.

Do NOT use to discover or list decodes — use decoder_intelligence for browsing. Do NOT use to start a new decode — call decode_ad first.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYesJob ID returned by decode_ad. Call this tool to poll status or retrieve completed results.
Behavior4/5

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

Annotations declare readOnly and idempotent. Description adds polling behavior and status-checking logic, which is valuable beyond annotations. No contradictions.

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 purpose, then usage details. No wasted words.

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?

Complete for a polling tool: explains retrieval, status check, and retry logic. No output schema needed provided. Annotations cover safety.

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?

Input schema has 100% coverage with description for job_id referencing decode_ad. Description reinforces where to get the parameter, adding value over schema 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 retrieves a completed decode or checks status, with specific verb 'Retrieve' and resource 'decode result'. It distinguishes from sibling decode_ad by referencing it as the source of job_id.

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 usage context: pass job_id from decode_ad, and if status is processing, wait 15 seconds and retry. Lacks explicit 'when not to use', but guidance is strong.

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

get_decoded_ad_presetGet Decoded adA
Read-onlyIdempotent
Inspect

Get one decoded ads preset by id, including its full body payload (framework, agent config, etc.). Call the matching list tool first to discover ids. Free, read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPreset id. Discover ids by calling the matching list_<type>_presets first.
Behavior4/5

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

Annotations already declare readOnlyHint and idempotentHint. Description adds 'Free, read-only' and that it returns 'full body payload', which adds context beyond annotations. However, without an output schema, more detail on the payload structure would be ideal but not critical.

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, each serving a distinct purpose: stating the action and giving usage guidance. No superfluous text, front-loaded with the core functionality.

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 (1 param, no nested objects, no output schema), the description covers everything needed: what it does, how to use it, and its read-only nature. No gaps are apparent.

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 single parameter 'id' has 100% schema description coverage. The description repeats 'Discover ids by calling the matching list_<type>_presets first' which is redundant with the schema's description. No additional meaning is added 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 'Get one decoded ads preset by id, including its full body payload', specifying the verb (get) and resource (decoded ads preset). It distinguishes from sibling list tools that discover IDs and other get_*_preset tools by covering different preset types.

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 the matching list tool first to discover ids', providing clear sequential dependency. Also notes 'Free, read-only' which reassures about side effects, though no explicit when-not-to-use is given.

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

get_hook_intelligenceGet Hook IntelligenceA
Read-onlyIdempotent
Inspect

Browse proven hook patterns from Heista's corpus of decoded winning Meta/TikTok ads. Takes optional filters: vertical (e.g. BEAUTY_SKINCARE, SUPPLEMENTS, APPAREL), hook_type (e.g. CURIOSITY_SPIKE, CONTRADICTION, CALLOUT), and marketing_angle. Returns hook examples (the real opener lines from successful ads), pattern templates, the psychological mechanism behind why each one stops the scroll within the first 1.5 seconds, and runtime performance data (active days on Meta when available). Free, read-only, idempotent — no credits consumed.

Use this when the user asks "what hooks stop the scroll", "give me hook ideas", "how should I open this ad", "show me hooks for [vertical]", or needs scroll-stopping openers grounded in proven patterns rather than guessed copy. Useful before writing a script — pair with adformula_intelligence or decoder_intelligence for the full beat structure.

Do NOT use to decode a specific ad URL — use decode_ad. Do NOT use to generate finished scripts — use generate_adscript. Hooks here are pattern intelligence, not finished copy.

ParametersJSON Schema
NameRequiredDescriptionDefault
verticalNoIndustry vertical to filter corpus patterns. Examples: BEAUTY_SKINCARE, HEALTH_SUPPLEMENTS, FITNESS, FOOD_BEVERAGE, FASHION_APPAREL, SAAS_SOFTWARE, FINANCE_FINTECH, INFO_PRODUCTS, TECH_GADGETS. Omit for all verticals.
hook_typeNoSpecific hook type to retrieve patterns for. Examples: CURIOSITY_SPIKE, OPEN_LOOP_STATEMENT, HIDDEN_TRUTH_REVEAL, IDENTITY_HOOK, CONTRADICTION_HOOK, PROVOCATION, STORY_START, DIRECT_QUESTION_HOOK, CHALLENGE_INTRO, CONTRAST_SETUP. Omit to get the top performing types for the vertical.
marketing_angleNoMarketing angle to filter by. Examples: PROBLEM_SOLUTION, SOCIAL_PROOF_RESULTS, HOW_TO_TUTORIAL, OFFER_URGENCY, ASPIRATIONAL_IDENTITY, VALUE_STACK. Omit for all angles.
Behavior5/5

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

The description adds value beyond annotations by disclosing that the tool is free and returns specific data types (examples, templates, psychology, performance data). Annotations already indicate readOnlyHint, idempotentHint, and non-destructive behavior, so no contradiction.

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 plus a filtering note. Every sentence is essential: first states purpose, second gives usage context and filtering options. No fluff, well front-loaded.

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 it has 3 optional parameters, no required ones, no output schema, the description does a good job listing what the tool returns. It could be slightly more specific about the structure of the response, but it's adequate for the complexity.

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% with descriptions for each parameter. The description adds guidance on omitting parameters to get top-performing types or all verticals, which goes beyond the schema. It could mention the marketing_angle parameter explicitly, but the schema covers it.

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 that the tool returns proven hook patterns from a corpus of winning ads, including examples, templates, psychology, and performance data. It uses the verb 'Get' and resource 'hook intelligence', which distinguishes it from sibling tools like 'adformula_intelligence' or 'decode_ad'.

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 tells the user to use it for writing scroll-stopping openers, mentions it's free, and provides filtering options. It does not explicitly state when not to use it or name 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.

get_image_ad_scan_presetGet Static adA
Read-onlyIdempotent
Inspect

Get one static ads preset by id, including its full body payload (framework, agent config, etc.). Call the matching list tool first to discover ids. Free, read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPreset id. Discover ids by calling the matching list_<type>_presets first.
Behavior4/5

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

Annotations already declare readOnlyHint and idempotentHint. The description adds that the call is 'Free' and includes the full body payload, which provides additional behavioral context beyond the annotations.

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 front-load the action and result, with no wasted words. Every sentence 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?

For a simple one-parameter tool with no output schema, the description adequately covers purpose, usage, and behavior. The context of sibling list tools is clear, and the return structure is hinted.

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 parameter is well-documented. The description adds little beyond mentioning the payload, but the schema already guides the agent to use the list tool. 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 it retrieves one static ads preset by ID and includes the full body payload. It distinguishes from sibling list tools and other get tools by specifying the resource type.

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 the matching list tool first to discover IDs, and notes that the operation is free and read-only, providing clear context for when and how to use.

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

get_powersourceGet PowerSource ResultA
Read-onlyIdempotent
Inspect

Retrieve the full creative intelligence profile for a previously-submitted PowerSource scan, or poll the status of a running scan. Takes a job_id (UUID returned by any create_powersource_* tool) plus an optional include_raw flag (admin-only). Returns either status="processing" with partial progress or the completed bundle: brand identity, offer, 12 selling points, brand voice rules, buyer profile, 12 buyer tensions, angles, emotional arcs, ctas, proof, narrative.

Use this immediately after any create_powersource_* call and every 3-5 seconds until status is "completed". During synthesis, partial intelligence appears progressively (buyer archetype first, then tensions, then angles) — inspect each poll response, useful signal arrives early. Also use this to re-fetch a finished PowerSource any time you need the brand layer for downstream work. Free — billing happens at submit time.

Do NOT use to start a new scan — call create_powersource_url, _docs, or _full first. Do NOT use to retrieve a video decode — use get_decode.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYesJob ID returned by any create_powersource_* call. Use this to poll status or retrieve completed results.
include_rawNoInternal-only. When true and the caller holds mcp:internal_admin, returns the un-merged brief bundle alongside the merged response. Silently ignored for non-admin callers — no error is raised.
Behavior5/5

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

Beyond annotations (read-only, idempotent), description details polling behavior, partial progressive results, and examples of returned fields. No contradiction with annotations.

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 with key information front-loaded. No extraneous text.

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?

Adequate for a single-param retrieval tool without output schema. Describes polling and partial results, though could mention completion states or error handling.

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 job_id fully, but description adds value by explaining its source (create_powersource_* calls) and usage direction.

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 it retrieves completed PowerSource or checks status, referencing job_id from create_powersource_* calls. Distinguishes from sibling creation tools and other retrieval tools like get_decode.

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 tells to pass job_id and wait 3-5 seconds if processing. Could mention not to use before creation, but context implies that.

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

get_saved_visual_idea_presetGet Saved visual ideaA
Read-onlyIdempotent
Inspect

Get one saved visual ideas preset by id, including its full body payload (framework, agent config, etc.). Call the matching list tool first to discover ids. Free, read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPreset id. Discover ids by calling the matching list_<type>_presets first.
Behavior5/5

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

Description adds details beyond annotations: confirms read-only, mentions 'full body payload' return, and states it's free. Consistent with annotations.

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 cover purpose, return content, usage guidance, and safety. No waste.

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 simple read tool with one parameter and no output schema, the description covers all essential information: what, how to call, and what to expect.

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

Parameters5/5

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

Parameter 'id' is fully described in schema; description adds crucial context on how to obtain it (via list tool), which is not in 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?

Clearly states the tool gets a saved visual idea preset by ID and includes its full body payload. Distinguishes from sibling get_*_preset tools by specifying the resource type and mentioning the prerequisite list call.

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 the matching list tool first to discover IDs. Also states 'Free, read-only' to indicate safety and cost profile.

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

get_visual_preset_presetGet VisualA
Read-onlyIdempotent
Inspect

Get one visuals preset by id, including its full body payload (framework, agent config, etc.). Call the matching list tool first to discover ids. Free, read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPreset id. Discover ids by calling the matching list_<type>_presets first.
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true. Description adds that it's 'Free, read-only' and includes 'full body payload', which clarifies the return nature beyond annotations. No contradiction with annotations.

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 sentence states the action and return value, second provides workflow guidance and cost hint. No redundant information; every word serves a purpose.

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-id retrieval tool with no output schema, the description fully covers what the tool does, how to prepare (list first), and what kind of data to expect (full body payload). Combined with annotations, it provides sufficient context for the agent to use correctly.

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% with one parameter 'id'. Description adds context on how to obtain the id ('discover ids by calling the matching list_<type>_presets first'), which is not present in the schema's format/pattern alone. This helps the agent understand the parameter's sourcing.

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 'Get one visuals preset by id, including its full body payload'. The verb 'Get' and resource 'visual preset' are specific, and the mention of 'full body payload' distinguishes it from simpler list operations. Among sibling tools with similar get_* names, it uniquely identifies this preset type.

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 advises to 'Call the matching list tool first to discover ids', which guides proper workflow. Also notes it's 'Free, read-only', indicating low cost and safety. Does not explicitly state when NOT to use it, but the instruction to list first implies the tool requires a known id.

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

get_visual_style_presetGet Visual styleA
Read-onlyIdempotent
Inspect

Get one visual styles preset by id, including its full body payload (framework, agent config, etc.). Call the matching list tool first to discover ids. Free, read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPreset id. Discover ids by calling the matching list_<type>_presets first.
Behavior4/5

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

Annotations already declare readOnlyHint and idempotentHint true, and the description adds 'Free, read-only' which reinforces but does not contradict. It also mentions 'full body payload' giving a hint about the return content, adding some value beyond annotations.

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 purpose is front-loaded, and each sentence serves a clear function: stating the action and providing usage guidance.

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 simple get-by-id tool with full schema coverage and clear annotations, the description is complete. It mentions the return content ('full body payload') and the prerequisite, leaving no significant 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 100% and already includes a description of the id parameter including how to discover ids. The description text duplicates this guidance but does not add new semantic 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 clearly states 'Get one visual styles preset by id' with specific verb and resource. It distinguishes from sibling list tools by implying this is for retrieval of individual preset details.

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 to 'Call the matching list tool first to discover ids', providing clear prerequisite guidance. It lacks explicit when-not-to-use instructions but is sufficient for typical use.

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

list_ad_formula_presetsList Ad formulasA
Read-onlyIdempotent
Inspect

Cluster-level structural formulas derived from decoded ads. Heista-curated; served as a generation parameter. Read-only, free. Filter scope with only_workspace / only_official (mutually exclusive — same toggle as the in-app library lens). Page with limit + offset.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoPage size. Default 24, max 100.
offsetNoOffset for paging through results. Default 0.
brand_idNoOptional brand_id to scope workspace presets to. Get from list_brands. Official presets are not brand-scoped and are unaffected by this filter.
only_officialNoWhen true, hide workspace (user-created) presets and only return Heista-curated (official) presets. Mutually exclusive with only_workspace.
only_workspaceNoWhen true, hide Heista-curated (official) presets and only return workspace (user-created) presets. Mutually exclusive with only_official.
Behavior4/5

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

Annotations declare readOnlyHint, idempotentHint, and openWorldHint=false; the description confirms 'Read-only, free' and adds behavioral details: mutual exclusion of filters, pagination, and that the data is Heista-curated. No contradiction with annotations.

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 extremely concise: two sentences delivering purpose, behavior, and usage guidance. Every word is functional and front-loaded. No wasted sentences or repetitions.

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, the description covers purpose, filter options, pagination, and read-only status. It hints at the use case ('served as a generation parameter'). Could be slightly more explicit about what the returned list contains, but overall sufficient.

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 has 100% coverage so baseline is 3. The description adds meaning by explaining the filter scope ('same toggle as the in-app library lens') and mentioning that only_workspace/only_official are mutually exclusive, which enhances understanding beyond the schema comments.

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 identifies the resource as 'Cluster-level structural formulas derived from decoded ads' and specifies it is 'Heista-curated'. The verb 'List' combined with 'Ad formulas' in title makes the action explicit. It distinguishes from siblings by noting the cluster-level and generation parameter nature.

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 states it is 'Read-only, free' and describes filtering options with mutual exclusivity (only_workspace/only_official) and pagination (limit+offset). It provides clear context for usage but does not explicitly state when NOT to use or compare to alternatives like list_decoded_ad_presets.

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

list_brand_assetsList Brand AssetsA
Read-onlyIdempotent
Inspect

List images for a brand. Filter by PowerSource (this scan only, via powersource_id), by on-pack product_name (the vision tagger's read), by type (logo, product, product_cutout, hero, lifestyle, ingredient, packaging, certification, before_after, infographic, screenshot, video, general), or by is_primary_product. Use this BEFORE generating any image-based output so you pick from the brand's real assets, not generic stock. Returns asset_id, signed url, type, detected_product_name, is_primary_product, sources. Free, read-only. Paginated via cursor.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoFilter by image type: logo, product, product_cutout, hero, lifestyle, ingredient, packaging, certification, before_after, infographic, screenshot, video, general.
limitNoPage size. Default 50, max 200.
cursorNoPagination cursor returned as next_cursor on the previous page.
brand_idYesBrand to list assets for. Get from list_brands.
product_nameNoFilter to assets the vision tagger read as this on-pack product name.
powersource_idNoFilter to assets discovered during this PowerSource scan.
is_primary_productNoFilter to only the scanned product's images (or its absence with false).
Behavior4/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true. The description adds 'Free, read-only. Paginated via cursor.' and lists return fields (asset_id, signed url, type, etc.), providing behavioral context beyond the annotations. No contradictions.

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 filters, then providing usage advice and return info. Every sentence adds value with no redundancy or fluff.

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 7 parameters, no output schema, and presence of annotations, the description covers purpose, filters, usage guidance, return structure, and pagination. It is mostly complete; minor omissions like default ordering do not significantly hinder 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 100%, so the input schema already documents all parameters. The description adds minimal extra value by grouping filters ('Filter by PowerSource... by on-pack product_name...') but does not significantly expand on the schema descriptions. 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 'List images for a brand' and enumerates all filter options, distinguishing it from sibling tools like add_brand_asset or delete_brand_asset. It also provides a concrete use case: 'Use this BEFORE generating any image-based output so you pick from the brand's real assets, not generic stock.'

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 'Use this BEFORE generating any image-based output', giving a clear when-to-use recommendation. It does not explicitly list when not to use it or alternatives, but the sibling tools are distinct (e.g., add/delete/retag). This is nearly excellent usage guidance.

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

list_brandsList BrandsA
Read-onlyIdempotent
Inspect

List every brand in this workspace. Use this BEFORE creating a PowerSource to avoid creating duplicate brand records (pass the matching brand_id to create_powersource_*), and to discover brands the user can pivot a Heist to. Each row carries the brand_id (persistent identity), name, domain, asset_count, strategy_count, and brand status.

Use this when the user asks "what brands do I have", "show me my brands", or before any image-led work where you need to know which brand owns assets. Free, read-only.

Distinguish Brand (persistent, brand_id) from PowerSource (a scan, powersource_id). A brand has many PowerSources; pick the brand first, then narrow to a strategy with list_strategies.

ParametersJSON Schema
NameRequiredDescriptionDefault
include_allNoWhen true, returns transient (status="creating") and signal-less draft brands too. Default false matches the picker dropdown — only confirmed/draft brands with real data.
Behavior4/5

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

Annotations already declare readOnlyHint and idempotentHint, so the description adds context about the include_all parameter and 'free, read-only' nature. Does not contradict annotations.

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?

Three paragraphs with useful information, front-loaded with core purpose and usage. Could be slightly more concise but no extraneous content.

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?

Completely covers what the tool returns (fields listed), how to use it, and distinguishes from related concepts, despite having no output schema.

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

Parameters5/5

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

Schema coverage is 100%, and description adds meaning by explaining the effect of include_all=true (transient/signal-less drafts) and ties default to UI behavior, going beyond schema details.

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 'List every brand in this workspace' with specific verb and resource, and distinguishes from sibling tools like list_strategies and create_powersource_* by explaining the difference between Brand and PowerSource.

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 advises using before creating a PowerSource to avoid duplicates, and for discovering brands for Heist pivoting. Provides example user queries and distinguishes from related tools.

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

list_creative_agent_presetsList Creative agentsA
Read-onlyIdempotent
Inspect

Reusable creative agents the Heist can pick as a handoff target — picked from the UI, callable as an MCP tool from Managed Agents. Workspace = private agents in the org. Official = public_template agents in any org. Read-only, free. Filter scope with only_workspace / only_official (mutually exclusive — same toggle as the in-app library lens). Page with limit + offset.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoPage size. Default 24, max 100.
offsetNoOffset for paging through results. Default 0.
brand_idNoOptional brand_id to scope workspace presets to. Get from list_brands. Official presets are not brand-scoped and are unaffected by this filter.
only_officialNoWhen true, hide workspace (user-created) presets and only return Heista-curated (official) presets. Mutually exclusive with only_workspace.
only_workspaceNoWhen true, hide Heista-curated (official) presets and only return workspace (user-created) presets. Mutually exclusive with only_official.
Behavior4/5

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

Annotations already indicate readOnlyHint=true and idempotentHint=true. Description adds that it is read-only and free, and clarifies the mutual exclusivity of filters, which is beyond what annotations provide.

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, each serving a purpose: purpose, scoping, nature (read-only), and filtering. Front-loaded with key information. No fluff.

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 listing scope, filtering options, and pagination. Lacks explicit mention of what the output contains (e.g., preset names), but is fairly complete for a list tool without 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?

With 100% schema coverage, baseline is 3. Description adds value by explaining mutual exclusivity of only_workspace and only_official, comparing to a UI toggle, and noting that brand_id only affects workspace presets.

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 lists reusable creative agents for handoff targets, distinguishing between workspace and official presets. This differentiates it from sibling tools like list_brand_assets.

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 when to use only_workspace vs only_official, notes mutual exclusivity, and mentions paging. However, doesn't explicitly state when not 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.

list_decoded_ad_presetsList Decoded adsA
Read-onlyIdempotent
Inspect

Structural references for script-led Heists. Workspace decodes (your video_sources scans joined with their video_scan_frameworks) + Heista-curated decoded ads from official_ad_heists. Read-only, free. Filter scope with only_workspace / only_official (mutually exclusive — same toggle as the in-app library lens). Page with limit + offset.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoPage size. Default 24, max 100.
offsetNoOffset for paging through results. Default 0.
brand_idNoOptional brand_id to scope workspace presets to. Get from list_brands. Official presets are not brand-scoped and are unaffected by this filter.
only_officialNoWhen true, hide workspace (user-created) presets and only return Heista-curated (official) presets. Mutually exclusive with only_workspace.
only_workspaceNoWhen true, hide Heista-curated (official) presets and only return workspace (user-created) presets. Mutually exclusive with only_official.
Behavior3/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true. The description adds 'Read-only, free' which aligns with annotations but doesn't disclose additional behavioral traits (e.g., rate limits, data freshness).

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, front-loading the core purpose, then providing key details on data sources, filters, and pagination. Every sentence adds value with no redundancy.

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 list tool with 5 parameters and no output schema, the description adequately explains data sources, filter options, and pagination. However, it omits return value structure or example usage, which would enhance completeness.

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 baseline is 3. The description adds value by explaining that 'only_workspace' and 'only_official' are mutually exclusive and analogous to an in-app UI toggle, which clarifies their usage beyond the schema.

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 lists 'Structural references for script-led Heists' and specifies the data sources, distinguishing from sibling list tools that focus on different preset types (e.g., ad_formula, image_ad_scan). However, it uses jargon that may be unclear to new users.

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 filtering with 'only_workspace' and 'only_official' and pagination, but does not explicitly state when to use this tool versus alternatives like 'get_decoded_ad_preset' or other list tools. Usage context is implied rather than stated.

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

list_image_ad_scan_presetsList Static adsA
Read-onlyIdempotent
Inspect

Static-ad references for image-led Heists. Workspace static scans + Heista-curated image ad heists. Read-only, free. Filter scope with only_workspace / only_official (mutually exclusive — same toggle as the in-app library lens). Page with limit + offset.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoPage size. Default 24, max 100.
offsetNoOffset for paging through results. Default 0.
brand_idNoOptional brand_id to scope workspace presets to. Get from list_brands. Official presets are not brand-scoped and are unaffected by this filter.
only_officialNoWhen true, hide workspace (user-created) presets and only return Heista-curated (official) presets. Mutually exclusive with only_workspace.
only_workspaceNoWhen true, hide Heista-curated (official) presets and only return workspace (user-created) presets. Mutually exclusive with only_official.
Behavior3/5

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

Annotations already declare readOnlyHint and idempotentHint. The description adds 'Read-only, free' and pagination details, but does not disclose additional behavioral traits like 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?

Three sentences, front-loaded with purpose, no unnecessary words. Efficient and well-structured.

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 no output schema, the description does not detail return format, but the tool is simple and parameters are fully described. Lacks output structure but otherwise sufficient.

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%. The description adds context that only_workspace and only_official are mutually exclusive and analogous to an in-app toggle, which goes beyond the schema 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 the tool lists static-ad references for image-led Heists, distinguishing it from sibling tools like list_ad_formula_presets. It uses a specific verb and resource.

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 explains filtering with only_workspace/only_official and pagination, but does not explicitly state when to use this tool versus alternatives. No when-not or comparative guidance.

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

list_saved_visual_idea_presetsList Saved visual ideasA
Read-onlyIdempotent
Inspect

Visual ideas you saved from prior generations. Workspace-only. Read-only, free. Filter scope with only_workspace / only_official (mutually exclusive — same toggle as the in-app library lens). Page with limit + offset.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoPage size. Default 24, max 100.
offsetNoOffset for paging through results. Default 0.
brand_idNoOptional brand_id to scope workspace presets to. Get from list_brands. Official presets are not brand-scoped and are unaffected by this filter.
only_officialNoWhen true, hide workspace (user-created) presets and only return Heista-curated (official) presets. Mutually exclusive with only_workspace.
only_workspaceNoWhen true, hide Heista-curated (official) presets and only return workspace (user-created) presets. Mutually exclusive with only_official.
Behavior3/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true. The description adds 'Read-only, free' and 'Page with limit + offset,' which are consistent. However, the phrase 'Workspace-only' is slightly misleading because the only_workspace and only_official filters allow toggling scope, contradicting the implication of an exclusive workspace scope.

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 extremely concise (two sentences) and front-loaded. Every sentence serves a purpose: identifying the resource, specifying scope/read-only nature, explaining filter usage, and pagination. No superfluous content.

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 tool has no output schema, yet the description does not explain what each returned item contains or the default behavior (e.g., ordering). It covers pagination and filters but lacks details on result format, which is needed for full completeness given the absence of output schema.

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 100%, so baseline is 3. The description adds minimal parameter value: it notes mutual exclusivity of only_workspace/only_official and likens them to an 'in-app library lens,' but this is not a significant semantic addition 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 clearly states the tool lists 'Visual ideas you saved from prior generations.' It specifies the resource (saved visual ideas) and action (list). The mention of 'Workspace-only' and filters distinguishes it from other list tools like list_visual_preset_presets.

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 explicitly guide when to use this tool vs. its siblings. It provides filter usage details but no alternatives or exclusion criteria. For example, it doesn't differentiate from list_visual_style_presets or list_image_ad_scan_presets, which are similar list tools.

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

list_strategiesList StrategiesA
Read-onlyIdempotent
Inspect

List all PowerSource strategies (scans) for a brand. A brand has many strategies — one per scanned URL. Product-page strategies carry product_name and is_product_page=true; use these to label them in conversation or to pick the right one for a product-focused generation. Returns powersource_id (use as the brief/PowerSource id everywhere else), product_name, scanned_at, source_url, is_pinned. Free, read-only. Paginated via cursor.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoPage size. Default 20, max 100.
cursorNoPagination cursor returned as next_cursor on the previous page.
brand_idYesBrand to list strategies for. Get from list_brands.
include_archivedNoInclude archived strategies. Default false.
Behavior5/5

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

Description adds 'Free, read-only' and 'Paginated via cursor' beyond annotations, which already declare readOnlyHint and idempotentHint. No contradictions; it reinforces and supplements behavioral traits.

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 compact (5 sentences) and well-structured, front-loading the main purpose and progressively adding detail. Every sentence provides useful information without redundancy.

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 list tool without output schema, the description enumerates returned fields and mentions pagination and cost. It could discuss error behavior or empty results, but it is sufficiently complete for typical use.

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 baseline is 3. The description adds value by explaining the context of parameters (e.g., brand_id from list_brands) and the returned fields, which helps beyond 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?

The description clearly states it lists all PowerSource strategies for a brand, specifying the verb and resource. It distinguishes from siblings like list_brands by focusing on strategies and adds nuance about product-page strategies and returned fields.

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 when to use (to list strategies per brand) and how to use the results (labeling or product-focused generation). Could be improved by explicitly mentioning alternatives like get_powersource for a single strategy, but still clear enough.

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

list_strategy_audiencesList Strategy AudiencesA
Read-onlyIdempotent
Inspect

List audience archetypes for a strategy (PowerSource). Returns the Buyer Decoder archetype (source="buyer_profile", one entry max) plus up to 3 offering primary_audience segments (source="primary_audience"). Use this to pick which audience to target before generating copy / scripts / hooks — the UI picker reads the same projection.

Distinct from list_strategies (which lists scans for a brand): this lists audiences INSIDE one strategy.

ParametersJSON Schema
NameRequiredDescriptionDefault
powersource_idYesStrategy (PowerSource / brief) id. Get from list_strategies. Returns the buyer-decoder archetype plus up to 3 primary_audience segments.
Behavior4/5

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

Annotations already indicate readOnly, idempotent, and not openWorld. The description adds valuable behavioral details: returns specific sources (buyer_profile, primary_audience) with cardinality constraints (one max, up to 3). It also notes the UI picker reads the same projection, implying consistency. No contradiction with annotations.

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 extremely concise: two main sentences plus a clarifying sentence. It front-loads the purpose and returns, with no superfluous text. 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 no output schema, the description explains the return structure (sources and counts). It provides context about the UI picker. However, it could mention potential error cases or pagination behavior, but the tool's simplicity and annotations mitigate the need. Overall, fairly 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 coverage is 100% with a detailed parameter description that already explains the parameter's purpose and source. The tool description does not add additional meaning beyond what the schema provides, so baseline score of 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 lists audience archetypes for a strategy (PowerSource), specifying the exact types returned: Buyer Decoder archetype and primary_audience segments. It also differentiates from sibling tool list_strategies by emphasizing this operates inside a single strategy.

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 states the use case: 'Use this to pick which audience to target before generating copy / scripts / hooks.' It clearly distinguishes from list_strategies, providing appropriate context for when to use this tool versus alternatives.

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

list_strategy_tonesList Strategy TonesA
Read-onlyIdempotent
Inspect

List tone profiles for a strategy. Today returns at most one entry — the tone_of_voice synthesized by the Tone of Voice Synthesis agent (POWER-mode bundles only). The shape is list-stable so future multi-tone bundles plug in without changing the contract. Use this to align generation with the brand-tied voice DNA before writing copy, hooks, or scripts.

ParametersJSON Schema
NameRequiredDescriptionDefault
powersource_idYesStrategy (PowerSource / brief) id. Get from list_strategies. Returns the synthesized tone-of-voice (at most one entry today; shape is list-stable for future multi-tone bundles).
Behavior5/5

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

Annotations declare readOnlyHint and idempotentHint as true, and openWorldHint false. The description adds significant behavioral detail: the tool currently returns at most one entry (the synthesized tone_of_voice), is limited to POWER-mode bundles, and has a list-stable shape for future expansion. No contradictions.

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 core purpose. Every sentence adds value without redundancy. The structure is efficient and easy to parse.

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 simple input schema (1 parameter, no enums, no output schema), the description fully explains the tool's behavior, current limitations, and future stability. It covers everything 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.

Parameters4/5

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

Schema description coverage is 100% for the single parameter powersource_id. The description adds context by explaining where to get the id (list_strategies) and what it returns, providing useful semantics beyond the schema's format constraints.

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 ('list') and resource ('tone profiles for a strategy'), clearly distinguishing it from siblings like list_strategies and list_strategy_audiences. It adds context about the synthesized tone_of_voice and POWER-mode exclusivity.

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 advises using this tool 'before writing copy, hooks, or scripts' to align with brand voice. While it doesn't explicitly state when not to use it, the context is clear. No alternative tools are mentioned, but the guidance is sufficient.

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

list_visual_preset_presetsList VisualsA
Read-onlyIdempotent
Inspect

Heista-curated visual heists (style DNA + photography presets). Official-only today; workspace-saved presets are a future surface. Read-only, free. Filter scope with only_workspace / only_official (mutually exclusive — same toggle as the in-app library lens). Page with limit + offset.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoPage size. Default 24, max 100.
offsetNoOffset for paging through results. Default 0.
brand_idNoOptional brand_id to scope workspace presets to. Get from list_brands. Official presets are not brand-scoped and are unaffected by this filter.
only_officialNoWhen true, hide workspace (user-created) presets and only return Heista-curated (official) presets. Mutually exclusive with only_workspace.
only_workspaceNoWhen true, hide Heista-curated (official) presets and only return workspace (user-created) presets. Mutually exclusive with only_official.
Behavior4/5

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

Annotations already indicate read-only and idempotent. The description adds 'Read-only, free' and clarifies the current scope (official-only) and future workspace surface. No contradictions. Additional context about mutuality of filters and pagination adds transparency beyond annotations.

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, very concise, and front-loaded with the tool's purpose. Every word adds information, no fluff. Structure is clear and easy to parse.

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 5 optional parameters and no output schema, the description covers the main use case and filtering but does not describe the return format or fields of the response. It lacks information about default ordering or response structure, which could be important for an agent. However, schema descriptions are complete, so the gap is minor.

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% with clear descriptions. The description adds value by explaining the mutual exclusivity of only_official and only_workspace, and connects them to the in-app library lens. It also mentions pagination with limit/offset, reinforcing the schema.

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 it lists 'Heista-curated visual heists (style DNA + photography presets)' and mentions filtering scope. However, it does not explicitly differentiate from sibling tools like list_visual_style_presets, but the specificity of 'presets' and 'visual heists' provides reasonable clarity.

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 gives usage context: 'Read-only, free', filter with mutually exclusive only_workspace/only_official, and pagination. But it does not explicitly tell when to use this vs. other list tools, nor does it mention prerequisites or alternatives. The 'Official-only today' hint is helpful but limited.

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

list_visual_style_presetsList Visual stylesA
Read-onlyIdempotent
Inspect

Saved style configs picked into image-led Heists. Workspace = org-owned styles. Official = canonical Heista catalog (org_id IS NULL, is_canonical=true). Read-only, free. Filter scope with only_workspace / only_official (mutually exclusive — same toggle as the in-app library lens). Page with limit + offset.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoPage size. Default 24, max 100.
offsetNoOffset for paging through results. Default 0.
brand_idNoOptional brand_id to scope workspace presets to. Get from list_brands. Official presets are not brand-scoped and are unaffected by this filter.
only_officialNoWhen true, hide workspace (user-created) presets and only return Heista-curated (official) presets. Mutually exclusive with only_workspace.
only_workspaceNoWhen true, hide Heista-curated (official) presets and only return workspace (user-created) presets. Mutually exclusive with only_official.
Behavior4/5

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

Annotations already indicate read-only, idempotent, and not open-world. The description adds 'Read-only, free' and explains the two preset categories and filtering. No contradictions, but no additional behavioral details like rate limits or auth.

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 very concise, with five short sentences each conveying essential information. No fluff, front-loaded with the core purpose, and well-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?

The description explains the input and filtering but does not describe the output format or fields. Given no output schema, the return structure is omitted, which is a minor gap for a list 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 coverage is 100%, so each parameter is already documented. The description reinforces mutual exclusivity of only_workspace and only_official and gives a real-world analogy. This adds marginal 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?

The description clearly states the tool lists visual style presets used in image-led Heists. It distinguishes between workspace and official categories, which differentiates it from sibling list tools like list_ad_formula_presets.

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 explains when to filter by workspace or official presets and notes pagination. However, it does not explicitly state when not to use this tool or compare it directly to similar list tools, leaving some inference needed.

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

retag_brand_assetRetag Brand AssetAInspect

Re-run the vision tagger on one brand asset. Reads the stored object when present (uploaded assets) or the original URL (scan-sourced assets), then updates type, detected_product_name, is_primary_product, description, and the other vision fields. Useful when the original tagger run missed or misclassified an image. Paid (vision tag credit).

ParametersJSON Schema
NameRequiredDescriptionDefault
asset_idYesAsset to re-classify. Get from list_brand_assets.
Behavior5/5

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

Annotations already indicate non-read-only and non-destructive, but the description adds valuable behavioral context: it costs a vision tag credit, it's not implemented, and invoking it returns a structured 'not implemented' envelope. This goes beyond annotations to set accurate expectations.

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 brief (three sentences) and front-loaded with the core purpose. The note about implementation status is necessary but slightly long. Overall 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?

Given the tool's complexity (not implemented, cost, alternatives), the description covers all critical aspects: purpose, use case, cost, implementation status, workaround. The lack of output schema is mitigated by the explicit description of the return envelope. Could mention idempotency or success/error codes, but it's 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?

The only parameter (asset_id) is well documented in the schema with format and provenance hints. The description adds no additional semantic detail beyond the schema. With 100% schema coverage, baseline 3 is appropriate.

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 'Re-run the vision tagger on one brand asset,' which is a specific verb-resource combination. It also distinguishes the tool from siblings like add/list/delete by focusing on retagging. However, the 'Not implemented in MCP yet' note slightly muddles the immediate purpose, though it accurately reflects the current state.

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 states when to use ('when the original tagger run missed or misclassified an image'), provides a cost warning, and gives concrete alternatives ('re-run a brand scan with force_refresh=true' or 're-upload via REST POST path') since the tool is not yet implemented. This is excellent guidance.

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

Discussions

No comments yet. Be the first to start the discussion!

Try in Browser

Your Connectors

Sign in to create a connector for this server.