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.5/5 across 52 of 55 tools scored. Lowest: 3.5/5.

Server CoherenceA
Disambiguation5/5

Each tool has a highly specific, well-documented purpose with clear usage guidance. Overlapping tools like adformula_intelligence vs decoder_intelligence are distinguished by granularity (patterns vs individual ads) and explicit prohibitions. Users and agents can reliably select the correct tool.

Naming Consistency4/5

Tools predominantly follow a verb_noun pattern (e.g., list_brands, create_powersource_url, delete_brand_asset). A few exceptions exist like 'adformula_intelligence' (noun_noun) and 'perplexity_search' (proper noun + verb). Minor inconsistency but overall predictable.

Tool Count3/5

55 tools is a high count, but the domain is broad (brand analysis, ad discovery, decoding, generation, asset management, search, presets). Many getter tools for presets and multiple search variants (search, search_community, search_research, perplexity_search) inflate the count. Slightly heavy but each tool has a defined role.

Completeness5/5

The tool set covers the full creative advertising workflow: brand intelligence, ad pattern discovery, individual ad decoding, script generation, creative exploration, asset management, and research-backed search. No obvious missing operations within the stated domain.

Available Tools

70 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.
Behavior5/5

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

Describes the full pipeline: download, vision tagger, storage in bucket, row insertion. Notes that failure leads to type=general save. Adds context beyond annotations (readOnlyHint=false, destructiveHint=false). 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?

Single paragraph with no redundant sentences. Information is front-loaded, and every sentence adds necessary context.

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

Completeness4/5

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

No output schema, but description explains what happens to the asset (saved, row inserted, type if fail). References retag_brand_asset for retry. Adequate for a creation operation.

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. Description reinforces that image_url is a public HTTPS URL and details the pipeline, adding value beyond schema.

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

Purpose5/5

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

Description starts with 'Upload an image to a brand by URL' clearly stating the action and resource. It distinguishes from siblings like retag_brand_asset (retry tagging) and delete_brand_asset (deletion).

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 'Paid (vision tag credit)' indicating cost. Mentions fallback when vision tagging fails and suggests retag_brand_asset for retry, guiding when to use this vs. alternative.

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 readOnly/ idempotent. Description adds 'Free, read-only, idempotent' and details on return fields, 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.

Conciseness4/5

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

Well-structured with front-loaded purpose, but slightly lengthy; every sentence adds value, though could be slightly more concise.

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?

With no output schema, description explains exactly what each formula returns (source ad count, etc.) and how to use with generate_adscript, ensuring complete understanding.

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

Parameters4/5

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

Schema coverage is high (100%), but description adds context through examples for each filter and explains limit default, adding value beyond schema.

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

Purpose5/5

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

The description clearly states the tool browses proven ad formula blueprints, a specific verb+resource. It distinguishes from siblings like decode_ad (specific ad) and generate_adscript (synthesis).

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

Usage Guidelines5/5

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

Explicitly states when to use (pattern discovery in categories) and when not to (specific ad → decode_ad). Provides prioritization criteria among results.

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

call_creative_worldsCall Creative WorldsAInspect

Heista's creative direction engine — same engine the Creative Director specialist runs internally, exposed over MCP. ONE-SHOT: give a brief, get N finished creative outputs. For back-and-forth refinement, or output shapes the medium enum below does not cover, use chat_with_creative_worlds instead.

OUTPUT SHAPE switches on the medium arg: • omitted → N territory cards (default exploration). Each card sits on different psychology / craft / feel / world axis coordinates so the set spans the creative space rather than orbiting one insight. Card has: name, campaign line, 5-8 sentence pitch, one-sentence strategic bet, resolved axis state names, creative-director rationale. • tvc → N TVC scripts (15-90s — hook, arc, resolve, sound design, end line). • billboard / ooh / print → N out-of-home concepts (visual concept + line + placement rationale). • social → N social-video concepts (hook + format type + middle beat + payoff, optimised for Reels / TikTok / Shorts). • activation / experiential → N activation concepts (space design + user journey + peak moment + takeaway artifact). • audio → N sonic / radio concepts (sonic scene + voice + audio arc). • campaign → N full campaign platforms (insight → big idea → strategy → visual world → production roadmap).

The engine can also produce manifesto / copy, naming, packaging, PR stunts, content series, brand positioning, partnerships — these output shapes are NOT in the medium enum, so use chat_with_creative_worlds when the user wants one of those.

USE WHEN: user says "give me ideas / options / directions / territories", "what angles work for...", "show me three / five ways to...", "write a TVC for...", "draft billboard concepts for...", "I need fresh thinking on...". DO NOT USE to refine one existing direction (use chat tool), to critique work, for OKRs / internal docs / strategy decks, or anything outside advertising creative direction.

INPUTS: brief (the creative problem, free text), count (2-6 concepts), optional brand_id (from list_brands or any create_powersource_* — when provided the engine grounds output in the brand's buyer tensions, voice, and selling points), optional medium (above), optional lens_hint (apply a playbook or signature move as a creative constraint), idempotency_key (safely retryable for 5 minutes).

Returns the finished creative output as narrative text PLUS a structured array of resolved axis coordinates for programmatic use. Metered — typically 3-15 credits per call depending on count and brand context size. Charged after success on actual token usage.

ParametersJSON Schema
NameRequiredDescriptionDefault
briefYesThe creative brief — what you want territory directions for. One sentence or short paragraph. Example: "Hero campaign for a sparkling water brand launching in Australia, positioned against soft drink as the everyday adult alternative".
countYesHow many distinct creative territories to generate. Each will sit on different axis coordinates from the others — different psychology, different feel, different world. 2-6.
mediumNoOptional medium — switches the output shape. Omit → territory cards (default exploration). `tvc` → TVC scripts (hook + arc + resolve + sound + end line). `billboard` / `ooh` / `print` → out-of-home concepts (visual + line + placement). `social` → Reels / TikTok / Shorts concepts. `activation` / `experiential` → activation concepts (space + journey + peak moment + takeaway). `audio` → sonic / radio concepts. `campaign` → full campaign platforms (insight → big idea → strategy → visual world → production roadmap). See the tool description for the full per-shape spec.
brand_idNoOptional Heista brand id (a.k.a. brief id) to ground the territories in. Get from list_brands or any create_powersource_* call. When provided, the engine pulls the brand intelligence (buyer tensions, voice, selling points) and uses it as the entry point into psychology axes. Omit for an unbranded creative exploration.
lens_hintNoOptional creative lens to constrain the direction. Applied throughout the ideation as a creative constraint. Use when an agent has already picked a playbook or signature move and wants territories under that lens.
idempotency_keyNoOptional unique key to make this call safely retryable. If the same key + org repeats within 5 minutes, the original result is returned without re-charging.
Behavior5/5

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

Discloses that the tool is one-shot, non-interactive, and metered (3-15 credits). Explains the output shape switching, idempotency_key feature, and that for uncovered mediums the alternate tool should be used. 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?

The description is lengthy but well-structured and front-loaded with the core purpose. Each section (output shapes, usage guidelines, inputs) is organized logically. While it could be slightly more concise, the complexity justifies the length.

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?

Covers all aspects: purpose, when to use, when not to use, input details, output shape descriptions, metering, and retry behavior. Despite lacking an output schema, the description clearly explains what is returned. Complete for a complex tool.

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

Parameters4/5

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

Schema coverage is 100%, but the description adds significant value by detailing the output shape for each medium, providing examples for brief, and explaining the purpose of brand_id, lens_hint, and idempotency_key. This 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 is a one-shot creative direction engine that generates N finished creative outputs from a brief. It distinguishes itself from the sibling chat_with_creative_worlds tool by specifying when to use each (one-shot vs refinement). The purpose is specific and unambiguous.

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

Usage Guidelines5/5

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

Contains explicit 'USE WHEN' and 'DO NOT USE' sections, listing concrete scenarios. It directs users to chat_with_creative_worlds for back-and-forth refinement or mediums not covered by the enum, providing clear alternatives.

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

chat_with_creative_worldsChat with Creative WorldsAInspect

Multi-turn conversation with Heista's creative direction engine — a real chat where the agent decides each turn what to produce based on what you ask for. Use whenever the work needs more than one round, OR when you want an output shape not covered by call_creative_worlds' medium enum.

WHAT YOU CAN ASK FOR (any of these, turn 1 or any turn after): • Territories — "give me five directions for X", "what angles work here" • A TVC script — "write a 30-second TVC for Cowboys" • Billboard concepts — "three billboards under a quiet-authority lens" • A campaign platform — "build #2 into a full campaign with the big idea" • A manifesto or copy — "draft the manifesto in the brand voice" • Naming — "name this product, five options with rationale" • A PR stunt — "what's the newsworthy version of this" • A content series — "20 episode ideas for a brand podcast" • Packaging, sonic branding, partnerships, social systems • Refinement — "make #2 darker", "extend that into a tagline", "summarise" • Pivots — "forget the soft-drink angle, try the late-night insomnia one"

SESSION: omit session_id on turn 1; the response returns a fresh session_id you pass on every subsequent turn — that is how the conversation persists. brand_id is only honoured on turn 1 of a new session (continuing sessions keep their original brand context).

USE WHEN: user wants back-and-forth, OR wants an output shape outside the medium enum (manifesto, naming, press release, content series, packaging, etc.). Prefer call_creative_worlds when the user wants "three options, done" with no follow-up.

WON'T DO: write OKRs / internal docs / strategy decks; behave as a general assistant. It is a creative director with creative-director taste — anti-cliché, specificity test, will push back on vague briefs.

Metered — typically 2-10 credits per turn depending on tool use and context size. Charged after each turn on actual token usage.

ParametersJSON Schema
NameRequiredDescriptionDefault
messageYesThe principal's message to the Creative Worlds specialist. First turn: a brief or open question. Subsequent turns: refinement ("make #2 darker"), filtering ("summarise that"), extension ("build a tagline off it").
brand_idNoOptional Heista brand_id to ground the conversation in. Only honoured on the first turn of a new session (continuing sessions keep their original brand context).
session_idNoPass the session_id returned from a previous chat_with_creative_worlds call to continue that conversation. Omit to start a new session — the response will include a fresh session_id you should pass on every subsequent turn.
Behavior5/5

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

Discloses metering (2-10 credits per turn, charged on actual usage), session persistence behavior (session_id lifecycle), and creative director personality (anti-cliché, specificity test, pushback on vague briefs). Annotations only indicate mutability; description adds rich behavioral context 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.

Conciseness4/5

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

Long but well-organized with clear sections (WHAT YOU CAN ASK FOR, SESSION, USE WHEN, WON'T DO, Metered). Front-loaded with purpose. Each sentence adds value, though length could be trimmed slightly without losing substance.

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 for a complex multi-turn tool with no output schema. Covers request types, session management, cost, limitations, and edge cases (brand_id turn 1 only). Provides everything an agent needs to select and invoke correctly.

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?

All 3 parameters have schema descriptions (100% coverage). Description adds significant value: message examples for first vs subsequent turns, brand_id only honoured on turn 1, session_id for continuation vs new sessions. Exceeds schema documentation.

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

Purpose5/5

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

Clearly states 'Multi-turn conversation with Heista's creative direction engine'. Distinguishes from sibling tool call_creative_worlds by explicitly noting when to use this tool (needs >1 round or output shape outside enum). Verb 'chat' and resource 'creative direction engine' are specific.

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 'USE WHEN' conditions (back-and-forth, output shape outside medium enum) and 'WON'T DO' (OKRs, internal docs, general assistant). Directs to prefer call_creative_worlds for one-shot requests. Also provides examples of acceptable requests.

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 declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. Description adds that it is free, returns balance in cents, lifetime spend in cents, month-to-date call counts per tool, per-tool unit pricing, and a top-up link. No contradictions. The extra details about what the return includes add 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.

Conciseness4/5

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

Description is well-organized: starts with a clear summary of what the tool does, then enumerates return fields and usage guidelines. While a bit lengthy, every sentence serves a distinct purpose. The first sentence effectively front-loads 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?

Despite no output schema, the description fully describes all return values (balance in cents, lifetime spend, month-to-date call counts per tool, per-tool pricing, top-up link). It also covers when to use, when not to, and idempotency/read-only nature. No gaps for a zero-parameter 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?

No parameters exist in the input schema. The description states 'Takes no inputs', which is sufficient. With 100% schema description coverage (empty schema fully described), baseline 3 is exceeded because the description confirms and adds context about the no-parameter nature.

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 checks the user's Heista API credit balance, month-to-date usage, lifetime spend, and pricing. The verb 'check' and resource 'balance' are specific, and it distinguishes from siblings (no sibling tool deals with billing or credits).

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 lists when to use (user asks about credits, balance, usage, pricing, etc.) and when not to use (adding credits, calling on every turn). Also provides cross-tool guidance about dollar vs credit reporting, making it clear this is the exclusive surface for monetary values.

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.
Behavior5/5

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

The description adds critical behavioral context beyond annotations: it's asynchronous (returns job_id), costs 100 credits, reads text only (PDFs must be converted), and output shape matches create_powersource_url. No contradictions 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?

The description is relatively long but well-structured and front-loaded with the core purpose. Every sentence adds value, though some repetition (e.g., 'text only') could be condensed. Still, it earns its length.

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 6-parameter tool with no output schema, the description covers input methods, async behavior, cost, output shape, and usage context. Slightly lacking on what happens if no document sources are provided (all params optional). Overall, fairly complete.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description enriches parameters significantly, especially documents_inline with detailed processing instructions (extract text, base64 text file). It also clarifies brand_id auto-resolution and idempotency_key behavior, going beyond schema.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Build a complete creative intelligence profile from internal brand documents' with specific document types. It distinguishes from siblings by explicitly listing when to use this vs create_powersource_url and create_powersource_full.

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 provides explicit when-to-use guidance ('Use this when the user says...') and when-not-to-use ('Do NOT use for URL-only scans...'). It directly names alternatives (create_powersource_url and create_powersource_full) with clear differences.

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 readOnlyHint=false and openWorldHint=true. Description adds: costs 200 credits, returns job_id (async), poll with get_powersource, same response shape as create_powersource_url, and cross-checks public vs internal. 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.

Conciseness5/5

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

Well-structured, front-loaded with purpose, each sentence adds value, no redundancy. Usage guidelines and exclusions are clearly separated.

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 complexity (6 params, no output schema), description covers all essential aspects: required inputs, optional parameters, async behavior, polling, cost, and comparisons with siblings.

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%; descriptions already detailed. Description adds context: requires at least one document, explains document sources (file_ids, document_urls, documents_inline) and the idempotency_key purpose.

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

Purpose5/5

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

The description clearly states it builds a creative intelligence profile by combining URL and documents, distinguishes from siblings create_powersource_url and create_powersource_docs, and explains the unique cross-checking value.

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

Usage Guidelines5/5

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

Explicitly states when to use (both inputs available) and when not (URL-only or docs-only), names alternative tools, and mentions cost and default recommendation.

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?

Describes cost (100 credits), caching behavior (re-scan free), polling instructions (every 3-5s, 60-90s total), and final payload structure (14 sections). This adds significant context beyond annotations, which only indicate readOnlyHint=false and destructiveHint=false.

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

Conciseness4/5

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

The description is well-structured with clear sections but slightly verbose (4 paragraphs). It front-loads the main purpose and use cases. Minor redundancy could be trimmed, but overall effective.

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

Completeness5/5

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

Given the tool's complexity (async, polling, webhook, cost, caching), the description covers all essential aspects including return behavior, polling frequency, cost, and output structure. No output schema exists, so the description must explain return values, and it does.

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 baseline is 3. The description briefly mentions optional parameters (idempotency_key, force_refresh, webhook_url) but does not add significant new semantics beyond the schema's parameter descriptions.

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

Purpose5/5

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

The description clearly states it 'Build a complete creative intelligence profile of a brand from a single website URL', specifies the verb and resource, and distinguishes from siblings like create_powersource_docs and create_powersource_full.

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 examples ('analyse my brand', 'load my brand', etc.) and when-not-to-use (internal docs/PDFs, video ads) with alternative tool names. Also mentions using it before generate_adscript.

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.
Behavior5/5

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

Discloses async behavior (returns job_id, poll every 15s, typical 45-60s), credit costs (15 for ≤60s, 20 for 61-120s), supported platforms, and input type restrictions. Annotations show readOnlyHint=false (consistent with mutation) and idempotentHint=false (description explains key provides idempotency). 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.

Conciseness4/5

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

Description is well-structured with clear sections (what it does, when to use, what not to use). Slightly verbose but every sentence adds information. Front-loaded with core 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?

No output schema, but description fully explains return format (job_id), polling procedure, typical timing, costs, and platform support. Covers all essential behavioral and usage context for an async operation tool.

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

Parameters4/5

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

Schema covers both parameters with descriptions, but description adds value: explains idempotency_key prevents re-charging, and url parameter gets platform-specific context (Facebook, TikTok, etc.) and cost implications per video length.

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 opens with specific verb+resource ('Decode a specific video ad URL into its full structural formula') and lists detailed output components (beat-by-beat, hook classification, etc.). Clearly distinguishes from sibling tools like decoder_intelligence and adformula_intelligence by stating what not to use it for.

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

Usage Guidelines5/5

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

Explicitly states when to use: when user pastes ad URL, names competitor ad, asks 'decode this', or wants sentence-level fidelity before script generation. Also gives explicit negative guidance: not for browsing or image ads, and directs to free alternatives for discovery.

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.
Behavior5/5

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

Annotations already indicate readOnlyHint=true and idempotentHint=true. Description adds 'Free, read-only, idempotent — no credits consumed' and explains return fields and linkage to get_decode, providing 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.

Conciseness4/5

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

Well-structured and front-loaded with purpose and filters. Slightly long but each sentence adds value; could tighten slightly without loss.

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, but description details return contents (beat timeline, classification, etc.) and links to generate_adscript. Covers usage boundaries and alternatives, making it complete for a browse tool.

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 each parameter has a description. The description adds examples and clarifies behavior (e.g., 'Omit for all'), adding 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 it browses individual decoded ads from Heista's corpus of winning Meta/TikTok creative. It lists specific filters and distinguishes from siblings by mentioning alternatives for other tasks.

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

Usage Guidelines5/5

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

Explicitly states when to use (e.g., 'when the user wants a specific ad as a script template') and when not to use, with alternatives like decode_ad, adformula_intelligence, and generate_adscript.

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.

delete_saved_assetDelete Saved AssetA
DestructiveIdempotent
Inspect

Delete one saved asset by id. Destructive — confirm with the user before calling. OAuth callers can only delete saves they created themselves (Linear model — see /assets UI for org-admin override). API-key callers are treated as org-trusted and can delete on behalf of any creator in the workspace. Cleans up the storage object for private VISUALS/MOTION saves.

ParametersJSON Schema
NameRequiredDescriptionDefault
asset_idYesAsset to delete. Get from list_saved_assets.
Behavior5/5

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

Annotations declare destructiveHint=true and idempotentHint=true. The description adds critical details: OAuth vs API-key permissions, cleanup of storage objects for private VISUALS/MOTION, and need for user confirmation. 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?

Four sentences, no fluff. Front-loaded with purpose and critical warning. Every sentence serves a purpose: purpose, safety, auth, side effect.

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

Completeness5/5

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

For a single-parameter destructive tool with no output schema, the description covers purpose, constraints, auth behaviors, and side effects completely. Nothing essential is missing.

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

Parameters3/5

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

Schema has one parameter with full description (100% coverage). The description only adds 'Get from list_saved_assets' context, which is minimal but not needed beyond schema. Baseline 3 is appropriate.

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

Purpose5/5

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

The description begins with 'Delete one saved asset by id', which is a clear verb+resource statement. This distinguishes it from sibling tools like delete_brand_asset and save_asset.

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

Usage Guidelines4/5

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

It explicitly warns 'Destructive — confirm with the user before calling' and explains authorization differences between OAuth and API-key callers. No explicit when-not-to-use, but sufficient for safe invocation.

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

dispatch_desk_researcherDispatch — desk-researcherAInspect

Dispatch to the DESK RESEARCHER — source-grounded synthesis on a topic landscape. Use for: "what is known about X / give me the landscape of Y / fact-check Z / synthesize the published evidence on W". Multi-source FACT/INFERENCE extraction with citation discipline. Vertical and geography agnostic. Returns: BRIEF restatement + NOT IN SCOPE + findings with FACT/INFERENCE/SPECULATION labels + [n] citations + Sources block. NOT for: trajectory questions (use dispatch_trend_researcher) / entity teardowns (use dispatch_market_analyst) / numerical effect sizes (use dispatch_quantitative_researcher) / community quotes (use dispatch_qualitative_researcher).

ParametersJSON Schema
NameRequiredDescriptionDefault
priorityNostandard (default) uses the specialist's production model; deep uses its escalation model (per _config/model-assignments.ts).
objectiveYesOne sentence stating what "done" looks like — the specific deliverable the specialist must return. From the four-part delegation contract (agent-authoring §5).
boundariesYesIn scope vs out of scope. Explicit OUT_OF_SCOPE clauses. Constraints (e.g. "do not spawn further subagents", "only Meta paid social").
output_formatYesThe shape the specialist must return — schema, template, or specific format. If verbatim-return needed, say so explicitly (parent may summarize otherwise).
tool_guidanceYesHow the specialist should approach this — which of its tools to favor, effort budget in tool calls, query angles to prioritize.
Behavior4/5

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

The description outlines the return structure in detail (BRIEF restatement, NOT IN SCOPE, findings with labels, citations, Sources block) and mentions multi-source extraction with citation discipline. Annotations are non-contradictory, though the description does not disclose potential side effects beyond what annotations imply.

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

Conciseness5/5

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

The description is concise, using a single paragraph with clear separation of use cases and return structure. Every sentence adds value; no redundant information.

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

Completeness4/5

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

Given the tool's moderate complexity (5 parameters, no output schema), the description sufficiently covers purpose, usage boundaries, and output format. It lacks some details like handling of ambiguous inputs but is adequate for an AI agent.

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 detailed parameter descriptions. The tool description adds minimal value beyond the schema for parameter understanding, but it does provide context on what the tool returns, which indirectly relates to parameters. 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's purpose: 'source-grounded synthesis on a topic landscape.' It provides specific example queries and explicitly distinguishes from sibling tools by listing what NOT to use it for, including the exact sibling tool names.

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?

It explicitly lists use cases ('Use for:') and non-use cases ('NOT for:') with mappings to alternative sibling tools. This gives the agent clear when-to-use and when-to-avoid guidance.

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

dispatch_desk_researcher_asyncDispatch (async) — desk-researcherA
Idempotent
Inspect

Dispatch to the DESK RESEARCHER — source-grounded synthesis on a topic landscape. Use for: "what is known about X / give me the landscape of Y / fact-check Z / synthesize the published evidence on W". Multi-source FACT/INFERENCE extraction with citation discipline. Vertical and geography agnostic. Returns: BRIEF restatement + NOT IN SCOPE + findings with FACT/INFERENCE/SPECULATION labels + [n] citations + Sources block. NOT for: trajectory questions (use dispatch_trend_researcher) / entity teardowns (use dispatch_market_analyst) / numerical effect sizes (use dispatch_quantitative_researcher) / community quotes (use dispatch_qualitative_researcher). ASYNC version: returns { job_id } immediately, the specialist runs durably on a Vercel Workflow (no 300s timeout). Use this version when the specialist is expected to take >90s. Call get_dispatch_result(job_id) periodically (respect wait_ms_hint in the response) until status === 'completed' or 'failed'. Idempotent: same brief + same org reuses the same job_id, so retries don't fan out duplicate runs.

ParametersJSON Schema
NameRequiredDescriptionDefault
priorityNostandard (default) uses the specialist's production model; deep uses its escalation model.
objectiveYesOne sentence stating what "done" looks like — the specific deliverable. From the four-part delegation contract (agent-authoring §5).
boundariesYesIn scope vs out of scope. Explicit OUT_OF_SCOPE clauses. Constraints (e.g. "do not spawn further subagents", "only Meta paid social").
output_formatYesThe shape the specialist must return — schema, template, or specific format. If verbatim-return needed, say so explicitly.
tool_guidanceYesHow the specialist should approach this — which tools to favor, effort budget in tool calls, query angles to prioritize.
Behavior5/5

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

The description adds significant behavioral context beyond annotations: it explains async execution (returns job_id, durable Vercel Workflow, no 300s timeout), idempotency (same brief+org reuses same job_id), and the return format structure (BRIEF + NOT IN SCOPE + findings with labels + citations + Sources). This fully informs the agent of behavior.

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

Conciseness4/5

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

The description is well-structured with clear sections: purpose, use cases, async details, idempotency. It is somewhat long but every sentence adds value, and critical information is front-loaded. Minor verbosity in examples but overall efficient for the 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?

Given the complexity (5 parameters, async pattern, no output schema), the description covers purpose, usage, behavioral traits, return format, idempotency, and retrieval instructions. It fully equips the agent to understand and invoke the tool correctly, including how to handle async results.

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 descriptions in the schema itself. The tool description does not add new meaning to the parameters beyond the schema; it only mentions them in passing. Therefore, the description provides no extra value for parameter understanding beyond what the schema already offers, yielding a baseline score of 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?

The description clearly states 'Dispatch to the DESK RESEARCHER — source-grounded synthesis on a topic landscape' and provides specific example queries. It explicitly distinguishes from four sibling tools by listing what it is NOT for, making the purpose unambiguous and differentiating it from alternatives.

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

Usage Guidelines5/5

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

The description explicitly says 'Use for:' and 'NOT for:' with specific alternative tool names (dispatch_trend_researcher, dispatch_market_analyst, etc.). It also explains when to use the async version (when expected >90s) and how to retrieve results, providing complete usage guidance.

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

dispatch_head_of_researchDispatch — Head of ResearchAInspect

Run a full research workflow via the Head of Research agent. The Head decomposes your brief into specialist sub-questions, dispatches the right combination of 6 specialists (desk, trend, market, quant, qual, social) in parallel via async dispatch, polls them to completion, judges output quality, and returns a structured synthesis. Use for: any source-grounded research request — fact-checking, vendor teardowns, trend assessment, quantitative effect-size analysis, qualitative theme extraction, cross-platform discourse mapping, or any combination. Wall time: 2-5 min typical. Returns: { synthesis, head_session_id, status, event_count, tool_uses, elapsed_ms }. NOT for: non-research requests (writing, coding, casual chat) — respond directly without calling this. Cost: $0.20-1.50 per call depending on brief complexity (specialist token spend + Anthropic session-runtime at $0.08/hr).

ParametersJSON Schema
NameRequiredDescriptionDefault
briefYesThe research brief to send to the Head. Must be self-contained — the Head sees only this string, no conversation history. Include entity, time window, scope, and unit of analysis explicitly. Be concrete: vague briefs produce vague output.
priorityNostandard (default) uses production models in specialists; deep escalates to higher-capability models. Use deep when accuracy matters more than cost.
max_wait_secondsNoHard cap on how long to wait for the Head session to complete. Default 270 (4.5 min). Heads typically complete in 2-5 min; raise this if you expect a deep research brief.
Behavior4/5

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

Annotations provide readOnlyHint=false, openWorldHint=true, idempotentHint=false. The description adds context: it uses async dispatch, polls, judges quality, and returns a structured synthesis with fields like synthesis, head_session_id, status, etc. No contradiction, but could mention persistence of results or cleanup.

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 moderately long but well-structured with logical sections (what, how, use for, not for, time, cost, returns). Every sentence adds information; no fluff. Could be slightly tighter but still clear.

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 complexity of an orchestration tool, the description covers purpose, usage, behavioral traits, parameters, cost, and return structure. It lacks output schema but compensates by listing return fields. It is sufficiently complete for agent decision-making.

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

Parameters4/5

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

Schema coverage is 100% (baseline 3). The description adds value beyond the schema: for 'brief' it explains self-containment and advises on content; for 'priority' it clarifies that 'deep' uses better models; for 'max_wait_seconds' it gives default and typical completion times. This enriches understanding.

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: 'Run a full research workflow via the Head of Research agent.' It specifies that it decomposes briefs, dispatches specialists, and returns a structured synthesis. This distinguishes it clearly from sibling tools like individual dispatch_* researchers.

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

Usage Guidelines5/5

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

Explicitly states when to use: 'any source-grounded research request' with examples, and when not to use: 'non-research requests (writing, coding, casual chat)'. Provides typical wall time (2-5 min) and cost range ($0.20-1.50), giving clear context.

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

dispatch_market_analystDispatch — market-analystAInspect

Dispatch to the MARKET ANALYST — entity-deep teardown of a named brand or vendor. Use for: "what is brand X / how does company Y work / decode competitor Z / teardown vendor W". Multi-axis extraction grounded in multi-class sourcing, plus defensible MOAT and credible GAP theses. Vertical and geography agnostic. Returns: 8-axis extraction (positioning / offer / audience / voice / pricing / distribution / proof / trajectory) + MOAT thesis + GAP thesis + Sources. NOT for: topic landscapes without a named entity (use dispatch_desk_researcher) / trajectory questions about a category (use dispatch_trend_researcher).

ParametersJSON Schema
NameRequiredDescriptionDefault
priorityNostandard (default) uses the specialist's production model; deep uses its escalation model (per _config/model-assignments.ts).
objectiveYesOne sentence stating what "done" looks like — the specific deliverable the specialist must return. From the four-part delegation contract (agent-authoring §5).
boundariesYesIn scope vs out of scope. Explicit OUT_OF_SCOPE clauses. Constraints (e.g. "do not spawn further subagents", "only Meta paid social").
output_formatYesThe shape the specialist must return — schema, template, or specific format. If verbatim-return needed, say so explicitly (parent may summarize otherwise).
tool_guidanceYesHow the specialist should approach this — which of its tools to favor, effort budget in tool calls, query angles to prioritize.
Behavior4/5

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

Annotations provide minimal behavioral hints (readOnlyHint=false, openWorldHint=true). Description adds detail: multi-axis extraction, sourcing, and returns (8-axis extraction + MOAT + GAP + Sources). No contradiction; transparency is good but could mention side effects.

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

Conciseness5/5

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

The description is concise (approx. 100 words), front-loaded with verb phrase, and structured with explicit use cases and exclusions. 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?

Given 5 parameters (4 required) and no output schema, the description adequately explains purpose, output format, and exclusions. It could detail the return structure more, but already covers the 8 axes and thesis types.

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 parameters are already documented. Description does not add new parameter-level meaning beyond the schema, meeting baseline expectation.

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 'entity-deep teardown of a named brand or vendor' and provides specific use cases. It distinguishes from siblings by explicitly stating what it is NOT for and naming alternatives (dispatch_desk_researcher, dispatch_trend_researcher).

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 usage guidance: 'Use for: ...' and 'NOT for: ...' with alternative tool names. Also notes vertical and geography agnostic, giving clear context for when to invoke.

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

dispatch_market_analyst_asyncDispatch (async) — market-analystA
Idempotent
Inspect

Dispatch to the MARKET ANALYST — entity-deep teardown of a named brand or vendor. Use for: "what is brand X / how does company Y work / decode competitor Z / teardown vendor W". Multi-axis extraction grounded in multi-class sourcing, plus defensible MOAT and credible GAP theses. Vertical and geography agnostic. Returns: 8-axis extraction (positioning / offer / audience / voice / pricing / distribution / proof / trajectory) + MOAT thesis + GAP thesis + Sources. NOT for: topic landscapes without a named entity (use dispatch_desk_researcher) / trajectory questions about a category (use dispatch_trend_researcher). ASYNC version: returns { job_id } immediately, the specialist runs durably on a Vercel Workflow (no 300s timeout). Use this version when the specialist is expected to take >90s. Call get_dispatch_result(job_id) periodically (respect wait_ms_hint in the response) until status === 'completed' or 'failed'. Idempotent: same brief + same org reuses the same job_id, so retries don't fan out duplicate runs.

ParametersJSON Schema
NameRequiredDescriptionDefault
priorityNostandard (default) uses the specialist's production model; deep uses its escalation model.
objectiveYesOne sentence stating what "done" looks like — the specific deliverable. From the four-part delegation contract (agent-authoring §5).
boundariesYesIn scope vs out of scope. Explicit OUT_OF_SCOPE clauses. Constraints (e.g. "do not spawn further subagents", "only Meta paid social").
output_formatYesThe shape the specialist must return — schema, template, or specific format. If verbatim-return needed, say so explicitly.
tool_guidanceYesHow the specialist should approach this — which tools to favor, effort budget in tool calls, query angles to prioritize.
Behavior4/5

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

Goes beyond annotations by detailing async behavior: returns job_id immediately, runs on Vercel Workflow, no 300s timeout, and idempotent job reuse. No contradiction with readOnlyHint=false or idempotentHint=true.

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?

Very concise with clear bullet-like structure. Every sentence adds value: purpose, use cases, exclusions, async mechanics, idempotency. No 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?

Covers all necessary context: what tool does, when to use sync vs async, how to poll, idempotency, and alternatives. No output schema needed since return is just a job_id.

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 good descriptions; description adds context but doesn't repeat param details. It gives high-level purpose for the tool that frames parameter usage. Baseline 3, slight bonus for framing.

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 it does 'entity-deep teardown of a named brand or vendor' and gives clear examples of use. It distinguishes from sibling tools like dispatch_desk_researcher and dispatch_trend_researcher with explicit NOT FOR clauses.

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 (brand/vendor teardown) and when-not-to-use (topic landscapes, category trajectories) with named alternatives. Also explains async polling pattern with get_dispatch_result and mentions idempotency for retry safety.

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

dispatch_qualitative_researcherDispatch — qualitative-researcherAInspect

Dispatch to the QUALITATIVE RESEARCHER — thematic synthesis from unstructured text (interviews, reviews, forum threads, customer language). Use for: "what are the 2-3 recurring themes in how D2C founders talk about X / what language is being used around Y / what are the patterns in customer reviews of Z". Every theme carries evidence count, triangulation status, ≥1 verbatim quote, outlier-check note. SOLVES the Reddit/X/Substack named-operator voice retrieval gap that legacy search tools could not fill. Returns: Corpus + Sampling + Coding methodology + 4-axis Themes table + Theme synthesis + Outlier voices + Saturation assessment + Sources. NOT for: quantitative effect sizes (use dispatch_quantitative_researcher) / multi-platform discourse mapping (use dispatch_social_listening_researcher).

ParametersJSON Schema
NameRequiredDescriptionDefault
priorityNostandard (default) uses the specialist's production model; deep uses its escalation model (per _config/model-assignments.ts).
objectiveYesOne sentence stating what "done" looks like — the specific deliverable the specialist must return. From the four-part delegation contract (agent-authoring §5).
boundariesYesIn scope vs out of scope. Explicit OUT_OF_SCOPE clauses. Constraints (e.g. "do not spawn further subagents", "only Meta paid social").
output_formatYesThe shape the specialist must return — schema, template, or specific format. If verbatim-return needed, say so explicitly (parent may summarize otherwise).
tool_guidanceYesHow the specialist should approach this — which of its tools to favor, effort budget in tool calls, query angles to prioritize.
Behavior5/5

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

Discloses behavioral traits beyond annotations: describes the return structure in detail (evidence count, triangulation, verbatim quotes, etc.) and mentions the 'Reddit/X/Substack named-operator voice retrieval gap' indicating external data access. 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?

Well-structured with bullet points, front-loaded purpose, and efficient sentences. 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?

With no output schema, the description compensates by detailing the return format extensively. Covers inputs via schema, explains its role among siblings, and handles complexity well.

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 descriptions for each field. The description adds high-level context but does not significantly enhance understanding of individual parameters beyond the schema. 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's purpose as thematic synthesis from unstructured text, with specific use cases. It explicitly distinguishes from sibling tools like dispatch_quantitative_researcher and dispatch_social_listening_researcher by stating what it is not for.

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 clear when-to-use examples ('Use for: ...') and when-not-to-use with direct alternatives ('NOT for: ... use dispatch_quantitative_researcher / dispatch_social_listening_researcher'). This leaves no ambiguity for the agent.

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

dispatch_qualitative_researcher_asyncDispatch (async) — qualitative-researcherA
Idempotent
Inspect

Dispatch to the QUALITATIVE RESEARCHER — thematic synthesis from unstructured text (interviews, reviews, forum threads, customer language). Use for: "what are the 2-3 recurring themes in how D2C founders talk about X / what language is being used around Y / what are the patterns in customer reviews of Z". Every theme carries evidence count, triangulation status, ≥1 verbatim quote, outlier-check note. SOLVES the Reddit/X/Substack named-operator voice retrieval gap that legacy search tools could not fill. Returns: Corpus + Sampling + Coding methodology + 4-axis Themes table + Theme synthesis + Outlier voices + Saturation assessment + Sources. NOT for: quantitative effect sizes (use dispatch_quantitative_researcher) / multi-platform discourse mapping (use dispatch_social_listening_researcher). ASYNC version: returns { job_id } immediately, the specialist runs durably on a Vercel Workflow (no 300s timeout). Use this version when the specialist is expected to take >90s. Call get_dispatch_result(job_id) periodically (respect wait_ms_hint in the response) until status === 'completed' or 'failed'. Idempotent: same brief + same org reuses the same job_id, so retries don't fan out duplicate runs.

ParametersJSON Schema
NameRequiredDescriptionDefault
priorityNostandard (default) uses the specialist's production model; deep uses its escalation model.
objectiveYesOne sentence stating what "done" looks like — the specific deliverable. From the four-part delegation contract (agent-authoring §5).
boundariesYesIn scope vs out of scope. Explicit OUT_OF_SCOPE clauses. Constraints (e.g. "do not spawn further subagents", "only Meta paid social").
output_formatYesThe shape the specialist must return — schema, template, or specific format. If verbatim-return needed, say so explicitly.
tool_guidanceYesHow the specialist should approach this — which tools to favor, effort budget in tool calls, query angles to prioritize.
Behavior4/5

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

Annotations indicate readOnlyHint=false (mutation), openWorldHint=true (external effects), idempotentHint=true. The description adds: async execution with immediate { job_id } return, durable Vercel Workflow (no 300s timeout), polling method, and idempotent retry logic. This provides significant behavioral context beyond annotations, though it could mention rate limits or authentication.

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

Conciseness4/5

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

The description is well-structured with clear sections: purpose, use cases, exclusions, async behavior, idempotency. Every sentence adds value, but the length is moderate (8 sentences). It could be slightly more concise without losing clarity, but the structure aids readability.

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 details return fields (Corpus, Sampling, Coding methodology, Themes table, Theme synthesis, Outlier voices, Saturation assessment, Sources). It covers async workflow, polling, and idempotency. This is highly complete for a complex tool with 5 parameters, leaving few gaps for the agent.

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 descriptive field names and minLength/maxLength hints. The description adds high-level context about parameter purpose (e.g., 'objective: one sentence stating what done looks like') but does not detail individual parameter behaviors or constraints. Given schema already covers meaning, a baseline of 3 is appropriate; description adds value via usage framing.

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

Purpose5/5

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

The description specifies a concrete action ('Dispatch to the QUALITATIVE RESEARCHER — thematic synthesis from unstructured text') and provides clear use cases ('what are the 2-3 recurring themes...'). It distinguishes this tool from siblings ('NOT for quantitative effect sizes', 'NOT for multi-platform discourse mapping'), clarifying its unique role.

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

Usage Guidelines5/5

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

Explicitly states when to use (thematic analysis of unstructured text) and when not (quantitative effect sizes, social listening). Provides async-specific guidance: use when specialist takes >90s, call get_dispatch_result to poll. Discusses idempotency and retry behavior. This gives the agent clear decision criteria.

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

dispatch_quantitative_researcherDispatch — quantitative-researcherAInspect

Dispatch to the QUANTITATIVE RESEARCHER — numerical analysis with full methodology context. Use for: briefs that turn on numbers done rigorously — "what is the documented effect size of X / what does the data say about Y / quantify the impact of Z". Every load-bearing number carries sample frame, sample size, measurement instrument, time window. Often answers with insufficient-evidence when underlying data is thin (negative findings are deliverable). Returns: 4-axis Quantitative summary (Value / Methodology rigor / Effect size / Robustness) + Numerical findings table + Methodology gaps + Sources. NOT for: topic landscapes (use dispatch_desk_researcher) / community language patterns (use dispatch_qualitative_researcher).

ParametersJSON Schema
NameRequiredDescriptionDefault
priorityNostandard (default) uses the specialist's production model; deep uses its escalation model (per _config/model-assignments.ts).
objectiveYesOne sentence stating what "done" looks like — the specific deliverable the specialist must return. From the four-part delegation contract (agent-authoring §5).
boundariesYesIn scope vs out of scope. Explicit OUT_OF_SCOPE clauses. Constraints (e.g. "do not spawn further subagents", "only Meta paid social").
output_formatYesThe shape the specialist must return — schema, template, or specific format. If verbatim-return needed, say so explicitly (parent may summarize otherwise).
tool_guidanceYesHow the specialist should approach this — which of its tools to favor, effort budget in tool calls, query angles to prioritize.
Behavior5/5

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

Beyond annotations (readOnlyHint false, openWorldHint true, idempotentHint false), the description adds valuable behavioral context: it often returns 'insufficient-evidence' when data is thin, and negative findings are deliverable. It also describes the return structure (4-axis summary, numerical findings table, methodology gaps, sources). 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 a single, well-structured paragraph. It front-loads the purpose, then covers usage, behavioral notes, return format, and exclusions. 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.

Completeness5/5

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

Given the tool has 5 parameters, no output schema, and multiple siblings, the description is fully complete. It addresses purpose, usage boundaries, behavioral traits, output shape, and exclusion criteria. No gaps remain.

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 detailed descriptions for each parameter. The description does not add parameter-specific detail beyond the schema, but it provides high-level context for the objective and boundaries. Baseline 3 is appropriate as the schema carries most of the parameter burden.

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 dispatches to a quantitative researcher for numerical analysis, using a specific verb ('Dispatch') and resource. It distinguishes from siblings by explicitly excluding topic landscapes and community language patterns, naming dispatch_desk_researcher and dispatch_qualitative_researcher as alternatives.

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 guidance on when to use: 'briefs that turn on numbers done rigorously' with examples. Also explicitly states when NOT to use, referencing sibling tools for those cases.

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

dispatch_quantitative_researcher_asyncDispatch (async) — quantitative-researcherA
Idempotent
Inspect

Dispatch to the QUANTITATIVE RESEARCHER — numerical analysis with full methodology context. Use for: briefs that turn on numbers done rigorously — "what is the documented effect size of X / what does the data say about Y / quantify the impact of Z". Every load-bearing number carries sample frame, sample size, measurement instrument, time window. Often answers with insufficient-evidence when underlying data is thin (negative findings are deliverable). Returns: 4-axis Quantitative summary (Value / Methodology rigor / Effect size / Robustness) + Numerical findings table + Methodology gaps + Sources. NOT for: topic landscapes (use dispatch_desk_researcher) / community language patterns (use dispatch_qualitative_researcher). ASYNC version: returns { job_id } immediately, the specialist runs durably on a Vercel Workflow (no 300s timeout). Use this version when the specialist is expected to take >90s. Call get_dispatch_result(job_id) periodically (respect wait_ms_hint in the response) until status === 'completed' or 'failed'. Idempotent: same brief + same org reuses the same job_id, so retries don't fan out duplicate runs.

ParametersJSON Schema
NameRequiredDescriptionDefault
priorityNostandard (default) uses the specialist's production model; deep uses its escalation model.
objectiveYesOne sentence stating what "done" looks like — the specific deliverable. From the four-part delegation contract (agent-authoring §5).
boundariesYesIn scope vs out of scope. Explicit OUT_OF_SCOPE clauses. Constraints (e.g. "do not spawn further subagents", "only Meta paid social").
output_formatYesThe shape the specialist must return — schema, template, or specific format. If verbatim-return needed, say so explicitly.
tool_guidanceYesHow the specialist should approach this — which tools to favor, effort budget in tool calls, query angles to prioritize.
Behavior5/5

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

Discloses key behaviors: async dispatch returns job_id, runs durably via Vercel Workflow (no 300s timeout), idempotent (same brief+org reuses job_id), may return insufficient-evidence. Annotations support this (openWorldHint, idempotentHint) and 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.

Conciseness4/5

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

Well-structured with clear sections: use cases, exclusions, async details. Information-dense but every sentence adds value. Slightly verbose but appropriate for 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?

Covers all critical aspects: purpose, usage guidelines, async mechanics, polling instructions, idempotency, return structure. No output schema but description adequately explains expected return ('{ job_id }' and polling).

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?

Input schema covers 100% of parameters with clear descriptions. Description adds overall context but does not enhance individual parameter meanings beyond schema. Baseline 3 is appropriate.

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

Purpose5/5

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

Description clearly states it dispatches to a quantitative researcher for numerical analysis with methodology rigor. Provides specific use case examples ('effect size', 'data says', 'quantify impact') and explicitly distinguishes from sibling tools like dispatch_desk_researcher and dispatch_qualitative_researcher.

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

Usage Guidelines5/5

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

Explicitly states when to use ('briefs that turn on numbers') and when not ('topic landscapes', 'community language patterns'), naming alternatives. Also clarifies when to use async vs sync version based on expected duration (>90s).

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

dispatch_social_listening_researcherDispatch — social-listening-researcherAInspect

Dispatch to the SOCIAL LISTENING RESEARCHER — multi-platform community-signal interpretation. Use for: "what are practitioners saying about X across platforms / what jargon is emerging in field Y / what is the cross-platform discourse around brand/topic Z". Treats T3 community sources as primary data, distinguishes cross-platform patterns from single-platform noise. ≥3 platforms sampled per brief. Returns: Signal map (Signal / Platforms / Volume / Sentiment + recency) + Per-platform evidence trail + Cross-platform vs single-platform classification + Confidence flag + Sources. NOT for: single-source thematic work (use dispatch_qualitative_researcher) / numerical sentiment effect sizes (use dispatch_quantitative_researcher).

ParametersJSON Schema
NameRequiredDescriptionDefault
priorityNostandard (default) uses the specialist's production model; deep uses its escalation model (per _config/model-assignments.ts).
objectiveYesOne sentence stating what "done" looks like — the specific deliverable the specialist must return. From the four-part delegation contract (agent-authoring §5).
boundariesYesIn scope vs out of scope. Explicit OUT_OF_SCOPE clauses. Constraints (e.g. "do not spawn further subagents", "only Meta paid social").
output_formatYesThe shape the specialist must return — schema, template, or specific format. If verbatim-return needed, say so explicitly (parent may summarize otherwise).
tool_guidanceYesHow the specialist should approach this — which of its tools to favor, effort budget in tool calls, query angles to prioritize.
Behavior4/5

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

The description adds value beyond annotations by detailing primary data sources (T3 community sources), sampling method (≥3 platforms), and output components. While annotations indicate openWorldHint=true (potential side effects), the description does not fully elaborate on non-deterministic behaviors, but overall provides substantial behavioral context.

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

Conciseness5/5

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

The description is concise, well-structured with clear sections, and front-loads the core purpose. Every sentence serves a purpose 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 no output schema, the description compensates by listing the return structure (Signal map, evidence trail, classification, confidence, sources). It also specifies sampling and primary data. While it could mention edge cases or error handling, it is sufficiently complete for a dispatch tool.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description does not add significant parameter-specific information beyond what is in the schema, but it does not need to since the schema is already descriptive.

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 dispatches to the SOCIAL LISTENING RESEARCHER for multi-platform community-signal interpretation. It lists specific use cases like tracking practitioner discourse and emerging jargon, and distinguishes from sibling tools by mentioning alternatives for single-source work and numerical sentiment analysis.

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 tool includes explicit 'Use for:' and 'NOT for:' sections, providing clear when-to-use and when-not-to-use guidance, and names sibling tools (dispatch_qualitative_researcher, dispatch_quantitative_researcher) as alternatives.

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

dispatch_social_listening_researcher_asyncDispatch (async) — social-listening-researcherA
Idempotent
Inspect

Dispatch to the SOCIAL LISTENING RESEARCHER — multi-platform community-signal interpretation. Use for: "what are practitioners saying about X across platforms / what jargon is emerging in field Y / what is the cross-platform discourse around brand/topic Z". Treats T3 community sources as primary data, distinguishes cross-platform patterns from single-platform noise. ≥3 platforms sampled per brief. Returns: Signal map (Signal / Platforms / Volume / Sentiment + recency) + Per-platform evidence trail + Cross-platform vs single-platform classification + Confidence flag + Sources. NOT for: single-source thematic work (use dispatch_qualitative_researcher) / numerical sentiment effect sizes (use dispatch_quantitative_researcher). ASYNC version: returns { job_id } immediately, the specialist runs durably on a Vercel Workflow (no 300s timeout). Use this version when the specialist is expected to take >90s. Call get_dispatch_result(job_id) periodically (respect wait_ms_hint in the response) until status === 'completed' or 'failed'. Idempotent: same brief + same org reuses the same job_id, so retries don't fan out duplicate runs.

ParametersJSON Schema
NameRequiredDescriptionDefault
priorityNostandard (default) uses the specialist's production model; deep uses its escalation model.
objectiveYesOne sentence stating what "done" looks like — the specific deliverable. From the four-part delegation contract (agent-authoring §5).
boundariesYesIn scope vs out of scope. Explicit OUT_OF_SCOPE clauses. Constraints (e.g. "do not spawn further subagents", "only Meta paid social").
output_formatYesThe shape the specialist must return — schema, template, or specific format. If verbatim-return needed, say so explicitly.
tool_guidanceYesHow the specialist should approach this — which tools to favor, effort budget in tool calls, query angles to prioritize.
Behavior5/5

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

Annotations declare mutability and idempotency; the description adds detail on the async workflow, immediate job ID return, durable Vercel execution, and idempotent job reuse. No contradictions 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 front-loaded with the main purpose, followed by use cases, exclusions, async specifics, and idempotency. Every sentence adds value; no redundancy. It is appropriately sized for the tool's 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?

Given the async nature, sibling tools, and parameter count, the description covers all necessary aspects: purpose, returned structure (signal map, evidence trail, etc.), async behavior, idempotency, and constraints (≥3 platforms). No output schema is present, but the return structure is described adequately.

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 context on how parameters relate to the tool's purpose (e.g., 'objective' as deliverable), but does not elaborate on individual parameters beyond what the schema provides. The extra context justifies a 4.

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 dispatches to a social listening researcher for multi-platform community-signal interpretation, lists specific use cases (e.g., cross-platform discourse), and explicitly distinguishes from sibling tools like dispatch_qualitative_researcher and dispatch_quantitative_researcher.

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 guidance (cross-platform discourse) and when-not-to-use with named alternatives. Also advises using the async version when execution exceeds 90 seconds and explains idempotent retry behavior.

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

dispatch_trend_researcherDispatch — trend-researcherAInspect

Dispatch to the TREND RESEARCHER — recency-dominant trajectory investigation. Use for: "is X a real trend / what is happening with X right now / where is X headed / what is driving X". Distinguishes trend from spike, signal from noise, real shift from echo chamber. Commits to falsifying conditions before searching. Returns: 4-axis Trend assessment (Reality / Magnitude / Direction / Horizon) + Current state + Baseline + trajectory + Drivers + Counter-signals + Sources. NOT for: static landscape questions (use dispatch_desk_researcher) / entity teardowns (use dispatch_market_analyst) / numerical analysis (use dispatch_quantitative_researcher).

ParametersJSON Schema
NameRequiredDescriptionDefault
priorityNostandard (default) uses the specialist's production model; deep uses its escalation model (per _config/model-assignments.ts).
objectiveYesOne sentence stating what "done" looks like — the specific deliverable the specialist must return. From the four-part delegation contract (agent-authoring §5).
boundariesYesIn scope vs out of scope. Explicit OUT_OF_SCOPE clauses. Constraints (e.g. "do not spawn further subagents", "only Meta paid social").
output_formatYesThe shape the specialist must return — schema, template, or specific format. If verbatim-return needed, say so explicitly (parent may summarize otherwise).
tool_guidanceYesHow the specialist should approach this — which of its tools to favor, effort budget in tool calls, query angles to prioritize.
Behavior4/5

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

Annotations provide readOnlyHint=false, openWorldHint=true, idempotentHint=false. Description adds context: 'Commits to falsifying conditions before searching' and outlines the return structure (4-axis assessment). No contradictions. Lacks mentions of side effects, but overall good transparency.

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

Conciseness4/5

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

Description is moderately long but every sentence adds value. Front-loaded with purpose, followed by usage examples, then exclusions. Could be slightly more concise, but efficient overall.

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?

With 5 parameters (4 required) and no output schema, the description thoroughly explains the tool's purpose, approach, and expected return. It covers when to use and not use, and provides behavioral context beyond structured fields.

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 parameters are well-documented in the schema. Description adds context for objective and boundaries (e.g., 'one sentence stating what done looks like', 'in scope vs out of scope') but does not significantly extend beyond 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 uses specific verbs and resources: 'Dispatch to TREND RESEARCHER' and 'recency-dominant trajectory investigation'. It lists example questions and explicitly distinguishes from siblings in the NOT section (e.g., dispatch_desk_researcher, dispatch_market_analyst).

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 WHEN section with example queries, and a NOT section naming specific sibling tools for alternative use cases. Clear guidance on 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.

dispatch_trend_researcher_asyncDispatch (async) — trend-researcherA
Idempotent
Inspect

Dispatch to the TREND RESEARCHER — recency-dominant trajectory investigation. Use for: "is X a real trend / what is happening with X right now / where is X headed / what is driving X". Distinguishes trend from spike, signal from noise, real shift from echo chamber. Commits to falsifying conditions before searching. Returns: 4-axis Trend assessment (Reality / Magnitude / Direction / Horizon) + Current state + Baseline + trajectory + Drivers + Counter-signals + Sources. NOT for: static landscape questions (use dispatch_desk_researcher) / entity teardowns (use dispatch_market_analyst) / numerical analysis (use dispatch_quantitative_researcher). ASYNC version: returns { job_id } immediately, the specialist runs durably on a Vercel Workflow (no 300s timeout). Use this version when the specialist is expected to take >90s. Call get_dispatch_result(job_id) periodically (respect wait_ms_hint in the response) until status === 'completed' or 'failed'. Idempotent: same brief + same org reuses the same job_id, so retries don't fan out duplicate runs.

ParametersJSON Schema
NameRequiredDescriptionDefault
priorityNostandard (default) uses the specialist's production model; deep uses its escalation model.
objectiveYesOne sentence stating what "done" looks like — the specific deliverable. From the four-part delegation contract (agent-authoring §5).
boundariesYesIn scope vs out of scope. Explicit OUT_OF_SCOPE clauses. Constraints (e.g. "do not spawn further subagents", "only Meta paid social").
output_formatYesThe shape the specialist must return — schema, template, or specific format. If verbatim-return needed, say so explicitly.
tool_guidanceYesHow the specialist should approach this — which tools to favor, effort budget in tool calls, query angles to prioritize.
Behavior5/5

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

Describes async behavior, durable workflow, idempotency, and falsifying conditions, adding value 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.

Conciseness4/5

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

Detailed but well-structured, front-loading purpose and use cases, then providing exclusions and async specifics. Each sentence contributes value; could be slightly more concise.

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 complexity of async dispatch with many siblings, the description fully covers output format, async mechanism, polling, idempotency, and contrasts with relevant siblings.

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 covers all 5 parameters with descriptions. The description does not add significant new parameter-level information beyond what the schema already 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?

Description clearly states the tool is for recency-dominant trend investigation, lists specific queries, and distinguishes from sibling tools by naming what it's NOT for, including alternatives.

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 provides when to use (trend analysis), when not to use (static landscape, entity teardowns, numerical analysis), and names alternative tools. Also explains when to use async version and how to poll results.

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

favorite_saved_assetFavorite Saved AssetA
Idempotent
Inspect

Toggle the favorite flag on a saved asset. Pass is_favorite=true to favorite, false to unfavorite. favorited_at is set/cleared in lockstep so the Favorites tab sorts correctly. Not destructive.

ParametersJSON Schema
NameRequiredDescriptionDefault
asset_idYesAsset to favorite or unfavorite.
is_favoriteYestrue to favorite, false to unfavorite. favorited_at is set/cleared in lockstep.
Behavior4/5

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

Annotations already provide idempotentHint=true and destructiveHint=false. The description adds behavioral detail about 'favorited_at is set/cleared in lockstep so the Favorites tab sorts correctly,' 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?

Three sentences, front-loaded with purpose. 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.

Completeness5/5

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

For a simple toggle tool with no output schema, the description covers the effect (favorite flag toggle), side effect (favorited_at lockstep), and safety (not destructive). Complete for an agent to invoke 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%, so baseline is 3. The description adds value by explaining the lockstep update of favorited_at, which is not in the schema, and clarifies the is_favorite parameter usage beyond the schema description.

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 verb+resource: 'Toggle the favorite flag on a saved asset.' This distinguishes it from sibling tools like delete_saved_asset, get_saved_asset, etc., which handle other operations on saved 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?

Description explains when to use the tool by defining the is_favorite parameter behavior. It does not explicitly mention when not to use or alternatives, but the specificity of the purpose makes usage clear for an AI agent.

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

fetch_urlFetch URLA
Read-only
Inspect

Drill into a specific URL after search surfaces it. Returns the extracted text content plus metadata. Internal routing: PDFs hit Anthropic Files API for OCR + structured extraction; HTML pages are fetched + text-extracted via readability-style stripping.

Use for: verifying a verbatim quote from a Reddit thread, reading a primary source in full (earnings transcript, research paper), drilling into a vendor product page after search surfaced the URL.

NOT for: discovering new URLs — use search/search_community/search_research first. This tool takes a known URL only.

Optional max_chars 100-50000, default 8000. SSRF-protected: private IPs + localhost blocked.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesAbsolute URL to fetch. Used to drill into a specific source after search surfaces it. Must be http:// or https://. Private IPs and localhost are blocked (SSRF protection).
max_charsNoMaximum characters of extracted content to return. Default 8000. Higher returns more text but costs more in agent tokens.
Behavior5/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true. The description adds substantial behavioral context: internal routing for PDF vs HTML (PDF uses Anthropic Files API for OCR, HTML uses readability-style extraction), SSRF protection (private IPs and localhost blocked), and the default/range for max_chars. It also notes that output includes 'extracted text content plus metadata'. No contradictions 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 efficiently structured: a one-sentence purpose, followed by usage examples, explicit exclusions, parameter notes, and a security note. Every sentence serves a distinct purpose without redundancy. It is front-loaded with the core function.

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

Completeness4/5

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

Given the tool's simplicity (2 params, no output schema), the description covers the essential aspects: purpose, use cases, security, and parameter defaults. It lacks explicit detail about the metadata returned (e.g., content type, size, status), but is otherwise complete. The annotations fill gaps for readOnly and openWorld hints. A score of 4 reflects minor omission of output format specificity.

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 restates parameter details (url format, max_chars range and default) that are already in the schema. It adds marginal value by mentioning SSRF protection (also in schema) and the token cost implication for higher max_chars, but does not significantly enhance understanding 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 uses a specific verb phrase 'Drill into a specific URL after search surfaces it', clearly indicating the tool's action and context. It distinguishes from sibling search tools by explicitly stating it is 'NOT for discovering new URLs' and provides concrete use cases (verifying quotes, reading primary sources, drilling into product pages). This leaves no ambiguity about what the tool does and how it differs from alternatives.

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 advises when to use the tool ('after search surfaces it', for verifying quotes, reading full sources) and when not to ('NOT for: discovering new URLs'), and directs to sibling tools (search, search_community, search_research) as alternatives. This provides clear guidance for appropriate invocation.

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.
Behavior4/5

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

Annotations indicate non-readOnly, non-destructive, non-idempotent. The description adds metered pricing (2-5 credits), pre-flight credit reservation with refund, and idempotency key explanation. No contradictions; additional behavioral details are clear.

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

Conciseness4/5

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

The description is well-structured with a clear front-load of purpose and output. While somewhat lengthy, every sentence contributes value. Minor room for tighter wording.

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 11 parameters, no output schema, the description covers parameter meanings, prerequisites, pricing, and usage boundaries. Output structure is partially described (hook, body, CTA, visual direction). Missing explicit output schema or sample, but adequate for the complexity.

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 the description adds rich semantic detail beyond parameter names: e.g., 'count' rotates tensions/selling points, 'duration' is remix-only, 'voice_mode' explains default and brand usage, 'script_mode' distinguishes blueprint vs remix behavior.

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 states a specific verb ('generate') and resource ('direct-response video ad scripts'), clearly distinguishing it from sibling tools like decoder_intelligence (source discovery) and create_powersource (brand intel). It details the fusion of a structural source with a brand PowerSource and the output components.

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 defines when to use (user requests for scripts, replication of proven winners) and when not to use (source discovery, brand intel extraction). Also specifies prerequisites and guides user to create missing components.

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_creative_director_playbook_presetGet Creative Director playbookA
Read-onlyIdempotent
Inspect

Get one creative director playbooks 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 give readOnlyHint, idempotentHint; description adds 'Free, read-only' and 'includes its full body payload', extending behavioral detail beyond structured fields. 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 concise sentences, front-loaded with purpose, no redundant words. Every sentence adds value: purpose, what's included, prerequisite, cost/safety.

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-only fetch tool with one parameter and no output schema, the description fully covers: what, how to get id, what's returned, cost/safety. Complete for context.

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 covers 100% of the single 'id' parameter with full format description. Description rephrases how to get ids but adds no new semantic meaning beyond schema 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?

Specific verb+resource: 'Get one creative director playbooks preset by id, including its full body payload'. Distinguishes from sibling get_* tools by naming the preset type and payload detail.

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', providing clear prerequisite usage. Adds 'Free, read-only' for safety context, but lacks explicit when-not-to-use.

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

get_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.
Behavior5/5

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

Beyond annotations (readOnlyHint, idempotentHint), the description discloses polling interval (15s), return states, completion payload contents, and billing model, all 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.

Conciseness4/5

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

The description is well-structured into paragraphs with front-loaded purpose, but it is slightly verbose. Every sentence adds value, but could be tighter.

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

Completeness5/5

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

For a single-parameter retrieval tool with no output schema, the description covers polling logic, response details, integration with other tools, and exclusions, making it very 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%, so baseline is 3. The description mentions job_id but adds no new constraints or semantics beyond the schema's description and UUID format.

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 or polls a decode bundle for a previously-submitted ad, and explicitly distinguishes from siblings like decode_ad and decoder_intelligence, with specific 'Do NOT use' statements.

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 provides explicit when-to-use instructions (after decode_ad, every 15 seconds, for re-fetching) and when-not-to-use (discovering or starting decodes) with named alternatives.

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_dispatch_resultGet Dispatch ResultA
Read-onlyIdempotent
Inspect

Get the current status of a specialist dispatch job started via dispatch_async. Returns { status: queued|running|completed|failed, result_text?, error_text?, error_class?, retry_count, elapsed_seconds, wait_ms_hint }. Call this repeatedly after a dispatch*_async returns a job_id. Sleep wait_ms_hint milliseconds between calls. When status === "completed", read result_text as the specialist's full synthesis. When status === "failed", error_class tells you whether to retry (transient/scope/routing) or give up and synthesize around (permanent) per the fleet resilience pattern.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYesThe job_id returned by a previous dispatch_<specialist>_async call.
Behavior5/5

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

Annotations indicate readOnlyHint and idempotentHint; description reinforces that it's a safe, non-destructive poller and explains retry behavior and error_class semantics, adding 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?

Concise (~5 sentences), front-loaded purpose, then usage pattern and response interpretation. No unnecessary 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?

Fully describes response fields, polling pattern, and error handling. No output schema needed as return values are documented in description.

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 already explains job_id as the UUID returned by a previous call; description does not add new meaning beyond that.

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 gets the current status of a specialist dispatch job started via dispatch_<specialist>_async, distinguishing it from sibling tools like the dispatch_*_async starters.

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 instructions: call repeatedly after dispatch_*_async returns job_id, sleep wait_ms_hint, check status, and handle errors (retry on transient/scope/routing, give up on permanent).

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

get_fleet_costGet Fleet Cost BreakdownA
Read-onlyIdempotent
Inspect

Read-only walk of a fleet session tree. Given any session_id in the tree (root, Head, Mastermind, or specialist sub-node) returns the full breakdown: every session row with depth + parent + agent_kind + node_label, the cost_events recorded against each, per-node self_cost_cents, total raw compute, tier markup estimate, and (after close_session_tree has run) the authoritative credits_charged + credits_refunded. Org-scoped: only sessions belonging to your org return data. Free — no compute cost. Use to render cost breakdown UIs, audit fleet spend, or verify a session's tree topology.

ParametersJSON Schema
NameRequiredDescriptionDefault
root_session_idYesA session_id from anywhere in the fleet tree — root, Head, Mastermind, or specialist sub-node. The handler resolves to the actual root and walks the full subtree, so you do not need to know the root id specifically. Org-scoped: only sessions belonging to your org return data.
Behavior5/5

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

Annotations indicate readOnlyHint=true and idempotentHint=true. The description reinforces these by calling it 'read-only' and 'Free — no compute cost.' It also explains behavior beyond annotations: org-scoping, resolution of any session_id to the root, and the condition after 'close_session_tree has run.' 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.

Conciseness4/5

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

The description is relatively long but well-structured. It starts with a terse summary, then lists the returned fields. Every sentence adds information. Minor improvement could be trimming redundancy, but it remains efficient for the depth of 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?

Given no output schema, the description comprehensively covers the return values: session rows, depth, parent, agent_kind, node_label, cost_events, self_cost_cents, total compute, tier markup, and credits_charged/refunded. It also explains org-scoping and the condition for authoritative credits. This is fully complete for the tool's purpose.

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 'root_session_id'. The description adds value by explaining that it accepts 'any session_id in the tree' and that the handler resolves to the root, which is not in the schema description. This adds practical 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 it performs a 'read-only walk of a fleet session tree' and returns a comprehensive breakdown including session rows, costs, and credits. It uses specific verbs and resources, and the title 'Get Fleet Cost Breakdown' aligns well. This distinguishes it from sibling tools, none of which are cost-focused.

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

Usage Guidelines4/5

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

The description explicitly says 'Use to render cost breakdown UIs, audit fleet spend, or verify a session's tree topology.' This provides clear use cases. It does not explicitly state when not to use this tool, but the context is sufficient for an AI agent to infer appropriate scenarios.

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.
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds context: "Free, read-only, idempotent — no credits consumed." It also describes what is returned (hook examples, templates, psychological mechanism, performance data) and scope (first 1.5 seconds). 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 well-structured: first sentence states purpose, then filter details, then return info, then usage guidance and exclusions. Every sentence is informative with no waste. Front-loaded with the primary action.

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 what is returned: hook examples, pattern templates, psychological mechanism, and runtime performance data. It also clarifies the source (successful winning ads) and scope (first 1.5 seconds). Complete for a retrieval tool.

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

Parameters3/5

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

Schema description coverage is 100% with detailed parameter descriptions including examples. The description restates the filters and provides examples but adds little new meaning beyond the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

The description opens with a specific verb and resource: "Browse proven hook patterns from Heista's corpus of decoded winning Meta/TikTok ads." It clearly distinguishes from sibling tools by stating "Do NOT use to decode a specific ad URL — use decode_ad" and "Do NOT use to generate finished scripts — use generate_adscript."

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 provides explicit usage cues: "Use this when the user asks...", useful before writing a script, and pairs with adformula_intelligence or decoder_intelligence. It also gives explicit when-not-to-use instructions for decode_ad and generate_adscript.

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?

Adds progressive polling behavior, billing info (free at submit), and admin-only flag behavior beyond annotations. No contradiction with readOnlyHint/idempotentHint.

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 key info front-loaded, but slightly verbose in progressive details. Each sentence is justified, but some rephrasing could improve conciseness.

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?

Fully describes return values (status vs. complete bundle), progressive data order, and no output schema needed. Comprehensive for its complexity.

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 detailed descriptions. The description adds minimal extra detail (admin-only flag context) beyond schema, meeting 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?

The description clearly states it retrieves or polls a PowerSource scan, with specific verb and resource. It explicitly distinguishes from sibling tools like create_powersource_* and 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 Guidelines5/5

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

Provides exact usage timing (immediately after create call, every 3-5 seconds), re-fetch instruction, and explicit what-not-to-do statements. No ambiguity.

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

get_saved_assetGet Saved AssetA
Read-onlyIdempotent
Inspect

Fetch one saved asset by id. Returns the full row including category, format, tags, body_text/html, signed media_url (if private storage), metadata, creator, brand, and timestamps. Use AFTER list_saved_assets to load the full record when the list projection is too sparse.

ParametersJSON Schema
NameRequiredDescriptionDefault
asset_idYesAsset to fetch. Get from list_saved_assets.
Behavior4/5

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

Annotations already indicate readOnlyHint and idempotentHint. The description adds behavioral detail: it returns a signed media_url for private storage and enumerates all fields, which goes beyond the annotations without contradicting them.

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 verb and resource. Every sentence adds value with 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 tool with one parameter and no output schema, the description covers purpose, usage context, and return fields. Annotations confirm safety. It is fully complete.

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

Parameters4/5

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

Schema covers 100% of parameters with format and pattern. The description adds useful context: 'Get from list_saved_assets.' This provides additional meaning beyond the schema.

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

Purpose5/5

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

The description clearly states 'Fetch one saved asset by id' and lists the returned fields. It distinguishes from sibling list_saved_assets by noting it is used for full records when list is too sparse.

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 'Use AFTER list_saved_assets to load the full record when the list projection is too sparse.' This provides clear context but does not explicitly state when not to use it.

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

get_saved_assets_batchGet Saved Assets (Batch)A
Read-onlyIdempotent
Inspect

Fetch up to 50 saved assets by id in one round-trip. Use when an agent needs to pull a pre-selected set — e.g. resolving a saved_asset_picker context input on a Heist that requires N pinned assets. Missing or cross-workspace ids are silently dropped; compare returned items vs requested ids to detect drops.

ParametersJSON Schema
NameRequiredDescriptionDefault
asset_idsYesUp to 50 asset ids to fetch in one round-trip. Use when an agent needs to pull a pre-selected set of saves (e.g. resolving a saved_asset_picker declaration in a Heist). Missing/cross-workspace ids are silently dropped.
Behavior5/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint. The description adds crucial behavioral detail: missing/cross-workspace ids are silently dropped. This helps the agent understand side effects and error handling.

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

Conciseness5/5

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

Two sentences, no waste. Front-loaded with the core action and limit. Every sentence earns its place.

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

Completeness5/5

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

For a simple tool with one parameter and no output schema, the description is complete. It covers purpose, usage context, behavioral nuances, and post-invocation checks.

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%, but the description adds meaningful context beyond schema (use case and silent drop behavior). It enhances understanding of the parameter's purpose.

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

Purpose5/5

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

The description clearly states it fetches up to 50 saved assets by id in one round-trip, distinguishing it from single-fetch (get_saved_asset) and list (list_saved_assets) tools. It also gives a concrete use case (resolving saved_asset_picker context input).

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 an agent needs to pull a pre-selected set' and provides an example. It also warns about silent dropping of missing/cross-workspace ids and advises to compare returned items vs requested ids.

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_strategyGet StrategyA
Read-onlyIdempotent
Inspect

Read a creative strategy in full by its powersource_id. Returns the same brand-merged bundle shape as get_powersource(data) — buyer profile, 12 behavioral tensions, angles, narrative direction, tone of voice, selling points, CTAs, proof, brand story, homepage data, offering — projected through the public PowerSource API serializer. Use this when you already have a powersource_id (from list_strategies) and want the full strategy payload in one call, without the job_id round-trip that get_powersource needs.

Archived strategies are excluded by default (parity with list_strategies). Pass include_archived=true to read archived strategies. Read-only, free, account-scoped.

ParametersJSON Schema
NameRequiredDescriptionDefault
powersource_idYesStrategy (PowerSource / brief) id. Get from list_strategies. Returns the full brand-merged bundle — buyer profile, 12 behavioral tensions, angles, narrative, tone of voice, selling points, CTAs, proof, brand story, homepage data, offering. Same shape as get_powersource(data) but keyed by powersource_id (no job_id needed).
include_archivedNoInclude archived strategies. Default false (archived strategies are excluded from agent reads — same default as list_strategies).
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint. Description adds that it's read-only, free, account-scoped, and archived strategies excluded by default, enhancing 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?

Two concise paragraphs with no redundant information. Front-loaded with main action and purpose, followed by necessary nuances.

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 but description lists return fields (buyer profile, tensions, etc.) and clarifies parity with list_strategies and archive behavior, fully preparing the agent.

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% and description adds context: powersource_id returns same shape as get_powersource without job_id, include_archived defaults false matching list_strategies.

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

Purpose5/5

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

The description clearly states the tool reads a creative strategy by powersource_id and compares it to get_powersource, distinguishing it from siblings like list_strategies.

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 tells when to use (when you have a powersource_id and want full strategy) and when not (avoids job_id round-trip needed by get_powersource). Also covers archive handling.

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_brand_documentsList Brand DocumentsA
Read-onlyIdempotent
Inspect

List indexed brand documents for a brand. Each row carries the indexed signals (doc_type, summary, key_topics, classification_confidence, indexing_status) plus mime_type and size_bytes from the underlying file. Filter by doc_type (one of 19 values incl. voice_tone_doc, brand_guidelines, strategy_memo, customer_interview, pitch_deck, general_reference) or by indexing_status (pending, running, indexed, error). Use BEFORE read_brand_document to discover what context exists for a brand without paying the read cost. 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 (created_at ISO timestamp).
brand_idYesBrand to list documents for. Get from list_brands.
doc_typeNoFilter by classified document type. One of 19 values: voice_tone_doc, brand_guidelines, strategy_memo, brand_brief, pitch_deck, research_report, campaign_brief, tone_of_voice_synthesis, customer_interview, meeting_notes, press_release, campaign_retrospective, workshop_output, spreadsheet_data, internal_memo, legal_compliance, sales_script, founder_interview, general_reference.
indexing_statusNoFilter by indexing pipeline state. Use "indexed" to only see fully-processed docs ready to read.
Behavior4/5

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

Annotations already provide readOnlyHint=true and idempotentHint=true. Description adds detail about return fields, pagination via cursor, and filter options, which goes 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?

Three concise sentences: purpose and return fields, filter options, usage guidance. 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?

No output schema, but description explains return fields. Covers pagination, filters, and usage context. Minor gap: no explicit mention of error handling or rate limits, but 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?

Schema covers all 5 params (100% coverage). Description adds extra guidance like using 'indexed' status for fully-processed docs, and explains cursor format. Adds 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?

The description clearly states 'List indexed brand documents for a brand' with specific verb (list) and resource. It differentiates from sibling read_brand_document by advising to use this tool first to avoid read cost.

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 'Use BEFORE read_brand_document to discover what context exists for a brand without paying the read cost.' Also mentions free, read-only, paginated via cursor. Implies alternatives but doesn't cover when not to use beyond that.

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_creative_director_playbook_presetsList Creative Director playbooksA
Read-onlyIdempotent
Inspect

Seven-section creative-mechanism lenses the Creative Director chat picks at session start. The picked playbook substitutes Layers 3 + 4 of the system prompt — voice + foundation — for the session (the lens IS who the agent is). Workspace = private playbooks; official = the Heista-curated catalog. 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 and idempotentHint. Description adds valuable context: the role in system prompt, mutuality of filters, scope of brand_id, and that the tool is free. No contradictions 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?

Description is compact and front-loaded with key purpose. Every sentence adds information, though slightly dense. 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?

Covers all key aspects: resource, behavior, filtering, pagination, and scope. No output schema, but description implies return of playbook presets. Adequately complete for a list operation.

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

Parameters4/5

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

Schema coverage is 100%, baseline 3. Description adds meaning: explains mutual exclusivity of only_official and only_workspace, clarifies brand_id scopes workspace presets only, and describes pagination defaults. Adds practical context beyond schema.

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

Purpose5/5

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

Description explicitly states the tool lists Creative Director playbooks, explains their role in substituting system prompt layers, and distinguishes between workspace and official scopes. It clearly identifies the resource and action, differentiating from sibling tools like get_creative_director_playbook_preset.

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 guidance on when to use (session start, voice/foundation substitution) and how to filter (mutually exclusive only_workspace/only_official, pagination). Lacks explicit when-not or alternatives, but context is sufficient.

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_assetsList Saved AssetsA
Read-onlyIdempotent
Inspect

List saved assets in the workspace. Filter by category (STRATEGY, IDEAS, COPY, VISUALS, MOTION, BRIEFS), by one or more formats inside the category (e.g. COPY + formats=["ad-script","hook"]), by tags (any/all), by brand_id, by brief_id (PowerSource), by created_by ("me" resolves to caller via OAuth), or favorites_only. Returns the unified view that backs the /assets page — BRIEFS rows come from creator_briefs with share URLs; other categories come from saved_assets. Use BEFORE asking the user what to pull into a Heist. Free, read-only, paginated.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoTag filter. Default mode is `any` (OR). Switch to `all` with tags_mode.
limitNoPage size. Default 50, max 200.
cursorNoPagination cursor returned as next_cursor on the previous page.
searchNoFull-text search on title + body + tags.
formatsNoMulti-select format pills within a category. e.g. for COPY: ["ad-script","hook"]. See save_asset description for the full per-category enum.
brand_idNoLimit to one brand.
brief_idNoLimit to one PowerSource (brief).
categoryNoTab filter. STRATEGY (positioning, brand platform), IDEAS (hooks, concepts, territories), COPY (ad scripts, hooks, campaign copy), VISUALS (static ads, product, lifestyle imagery), MOTION (talking heads, b-roll, lifestyle video), BRIEFS (creator briefs — backed by a separate table; reads include share URLs). Omit to read every category in one merged stream.
tags_modeNoHow to combine tags. Default `any` (overlap). `all` requires every tag.
created_byNoUser id or the literal "me". When called via OAuth, "me" resolves to the caller. API-key callers MUST pass an explicit user id (no caller identity).
favorites_onlyNoRestrict to favorited assets only.
Behavior5/5

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

Annotations already indicate read-only and idempotent. The description adds 'Free, read-only, paginated' and explains the data source split (BRIEFS from creator_briefs, others from saved_assets). 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.

Conciseness4/5

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

The description is a single paragraph but packs dense information without redundancy. It is front-loaded with purpose. Could benefit from structuring into bullet points, but 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?

Given 11 parameters and no output schema, the description covers the tool's behavior thoroughly: data source differences, pagination, filter options, and recommended use case. It is complete for effective use.

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 description coverage is 100%. The description adds context beyond schema, e.g., explaining category values, created_by behavior with OAuth vs API keys, and tags_mode default. This enriches understanding.

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 saved assets and explains the unified view backing the /assets page. It distinguishes from sibling tools by specifying the scope and the use case before pulling into a Heist.

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 'Use BEFORE asking the user what to pull into a Heist', giving a clear usage context. It implies when to use this tool versus others, though it doesn't list alternatives.

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_skillsList SkillsA
Read-onlyIdempotent
Inspect

List skills available in the Heista skill library. Returns name, description, domain (shared / image / video / research / strategy / copy / creative / generation), type (foundation / registers / models / methodologies), version, and source_folder (managed-agents / chat-agent). Returns frontmatter only — no body content (use load_skill for that). Filter by domain, type, or source_folder. Use BEFORE load_skill to discover what craft knowledge is available without paying the body-read cost. Free, read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoFilter by skill type. "foundation" = always-on craft baseline per domain. "registers" = router-table over a references/ folder (e.g. cinema-mode, lighting). "methodologies" = how-to skills for specific job types. "models" = per-versioned-model profile (e.g. google-nano-banana-pro).
domainNoFilter by domain. Use "all" or omit to get every skill. Available domains depend on what has been authored; current live domains include shared, image, video. Authoring will add research, strategy, copy, creative, generation as the fleet grows.
source_folderNoFilter by source folder. "managed-agents" = fleet skills (Mastermind, Heads Of, fleet specialists). "chat-agent" = chat-surface lenses. "all" or omit to get everything. Folder is organisation only; any skill can be attached by any agent via skill_id.
Behavior4/5

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

Annotations already provide readOnlyHint=true and idempotentHint=true, but the description adds valuable context: 'Returns frontmatter only — no body content (use load_skill for that)' and 'Free, read-only'. This goes beyond annotations by specifying the exact scope of the data returned.

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: two sentences with clear front-loading of purpose, followed by details on filters and usage guidance. Every sentence adds value, and there is no 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?

For a list tool with 3 optional enum parameters and no output schema, the description covers all necessary aspects: what is returned, filters available, the distinction from load_skill, and cost implications. It is fully complete for the agent to understand tool behavior.

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, so baseline is 3. However, the description compensates by listing the output fields (name, description, domain, etc.) that are not in the parameter schema, given there is no output schema. This adds value for the agent in understanding the response.

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 skills from the Heista skill library, specifying the return fields (name, description, domain, type, version, source_folder) and distinguishes from load_skill by noting it returns frontmatter only. This provides a specific verb and resource, differentiating it from siblings.

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

Usage Guidelines4/5

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

The description explicitly advises using this tool before load_skill to discover available skills without paying the body-read cost, and notes it is free and read-only. This gives clear context for when to use it, though it does not explicitly list when not to use it beyond the load_skill alternative.

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.

load_skillLoad SkillA
Read-onlyIdempotent
Inspect

Load the full SKILL.md body for one skill by canonical dot-notation name (e.g. "research.foundation", "research.methodologies.desk-synthesis", "shared.registers.cinema-mode"). Returns frontmatter + body + content_hash. Verifies content_hash against the registry and surfaces drift if the registry is out of sync with disk. Use AFTER list_skills to pick the right skill. For register-type skills with references/ folders, follow with load_skill_reference to pull specific references. Free, read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesCanonical skill name in dot-notation (e.g. "research.foundation", "research.methodologies.desk-synthesis", "shared.registers.cinema-mode"). Find via list_skills first.
Behavior5/5

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

Beyond annotations (readOnlyHint, idempotentHint), the description discloses return contents (frontmatter, body, content_hash), verification of content_hash against registry, and drift detection, adding significant behavioral context.

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

Conciseness5/5

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

Four sentences, front-loaded with main action, then details, usage order, and alternative, with 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?

Given simple tool (1 param, no output schema), the description is fully adequate: what it does, what it returns, how to use it with siblings, and behavioral semantics.

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 meaning by explaining the name format (dot-notation with examples) and where to find valid names (list_skills), beyond the schema's brief description.

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 loads the full SKILL.md body for one skill by canonical dot-notation name, distinguishing it from siblings like load_skill_reference.

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 AFTER list_skills and mentions following with load_skill_reference for register-type skills, providing clear usage order and alternatives.

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

load_skill_referenceLoad Skill ReferenceA
Read-onlyIdempotent
Inspect

Load one reference file from a register-type skill's references/ folder (e.g. "m1-narrative.md" from "shared.registers.cinema-mode"). Only register-type skills have references/ — foundations and methodologies are inline content only. Find valid reference filenames in the parent SKILL.md's router table. Path-traversal protected. Free, read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
skill_nameYesParent skill name in dot-notation (e.g. "shared.registers.cinema-mode"). Only register-type skills have references/; foundations and methodologies are inline content only.
reference_pathYesReference filename within the skill's references/ folder (e.g. "m1-narrative.md"). Find via the parent SKILL.md router table. Path-traversal protected — must be a plain filename, no "..", no absolute paths.
Behavior4/5

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

Annotations already indicate read-only and idempotent behavior. The description adds that the tool is path-traversal protected, free, and read-only, and clarifies that only register-type skills have references/. This adds 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?

The description is concise at 3 sentences, front-loading the main action, followed by constraints and security notes. Every sentence adds value without repetition.

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 tool is simple with 2 parameters and no output schema. The description covers purpose, eligibility, source for valid filenames, and security. It does not describe return format, but that is implied for a file-loading tool.

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

Parameters4/5

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

Schema coverage is 100%, but the description enhances understanding with examples and constraints (dot-notation for skill_name, plain filename for reference_path, path-traversal protection). This adds meaningful guidance 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 loads one reference file from a register-type skill's references/ folder, with an example. It distinguishes from sibling tools like load_skill by specifying 'register-type skill' and referencing the parent SKILL.md router table.

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 specifies when to use the tool (only for register-type skills, not foundations/methodologies) and how to find valid filenames via the router table. However, it does not explicitly mention alternative tools for other skill types.

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

read_brand_documentRead Brand DocumentA
Read-onlyIdempotent
Inspect

Read one indexed brand document. Returns the indexed metadata (doc_type, summary, key_topics, entities, key_quotes) plus the document content, routed by mime: text/markdown, text/plain, text/csv are inlined as text; application/pdf and other text-shaped mimes return an Anthropic Files API file_id (attach via document source { type:"file", file_id } on the next turn); DOCX/PPTX/XLSX return a requires_code_execution marker (caller must enable code_execution_20260120 and attach via container_upload). Use AFTER list_brand_documents to pick the right document. Free, read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
document_idYesDocument to read. Get from list_brand_documents.
Behavior4/5

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

Annotations already indicate readOnlyHint and idempotentHint. Description adds important behavioral details: how content is returned based on mime type (inline text, file_id, code_execution marker) and notes that it's free and read-only. 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 concise yet comprehensive, with no wasted words. It is front-loaded with the primary action and return, then details specific handling rules. 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?

Given the single parameter, rich annotations, and no output schema, the description fully explains what to expect (metadata + content variants) and how to use it. It is complete for a read operation.

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 one parameter documented. Description reinforces the parameter's origin ('Get from list_brand_documents') but does not add new semantic details beyond the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb ('Read') and the resource ('one indexed brand document'). It explicitly lists what is returned (metadata and content) and how different mime types are handled, distinguishing it from sibling tools like list_brand_documents.

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?

Description explicitly advises to use this tool after list_brand_documents, providing clear usage context. While it doesn't list alternatives, the instruction is specific and helpful for correct sequencing.

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.
Behavior4/5

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

Discloses that it reads stored object or URL and updates vision fields. Annotations already indicate non-readonly and non-destructive; description adds specifics about data sources and updated fields.

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: immediate action, data source details, usage context and cost. Front-loaded and 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?

Given simple tool with one param and no output schema, description covers what, how, when, and cost completely.

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 asset_id has full schema description coverage (100%), so baseline is 3. Description adds context about reading sources but doesn't extend parameter semantics 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?

Description clearly states 'Re-run the vision tagger on one brand asset' with specific verb and resource, distinguishing it from sibling tools like add_brand_asset 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 Guidelines4/5

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

Provides explicit when to use: 'when the original tagger run missed or misclassified an image.' Also mentions it's paid, implying cost-aware usage. No explicit alternatives but context is clear.

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

save_assetSave AssetAInspect

Persist a new saved asset to the workspace. category MUST be one of STRATEGY, IDEAS, COPY, VISUALS, MOTION (BRIEFS lives in creator_briefs and is not saveable through this tool). format MUST match the per-category enum (see input description). title is required. body_text + metadata are recommended. Source attribution (heist_slug, session_id, pattern) lets the user trace the save back to its origin in the /assets timeline. Brand and brief_id link the save to a PowerSource for downstream filtering. Returns the inserted asset row.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoFree-form tags for filtering and search.
titleYesCard title — what shows in /assets.
formatYesPer-category format. STRATEGY: positioning, brand-platform, campaign-strategy, strategic-doc. IDEAS: hook, concept, big-idea, territory. COPY: ad-script, hook, campaign-copy. VISUALS: static-ad, product, lifestyle, hero, moodboard, packaging, logo. MOTION: talking-head, b-roll, product-motion, brand-lifestyle.
sourceYesSave attribution.
brand_idNoBrand the asset is for. Resolved from brief_id when omitted.
brief_idNoPowerSource (brief) the asset was generated against.
categoryYesOne of STRATEGY, IDEAS, COPY, VISUALS, MOTION. BRIEFS is not accepted — briefs live in the creator_briefs table via the briefs API.
metadataNoType-specific bag — duration, image dimensions, model used, beat count, etc.
body_htmlNoRich-text body where the asset carries structured markup.
body_textNoPrimary text body for STRATEGY / IDEAS / COPY saves.
media_urlNoDirect media URL for VISUALS / MOTION (external host).
parent_idNoParent asset id for variations grouped under one save set.
thumb_urlNoCard thumbnail URL.
media_storage_pathNoStorage path inside the private `saved-assets` bucket. Obtain via the /api/saved-assets/upload-url route (REST only; no MCP upload tool yet).
Behavior3/5

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

Annotations indicate a write operation (readOnlyHint=false) that is not destructive. The description confirms it persists and returns the inserted row, and adds constraints like category and format restrictions. However, it does not discuss potential retry behavior, duplicate handling, or side effects beyond creation.

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 dense paragraph that front-loads the core purpose, then logically covers mandatory fields, recommendations, and special-case exclusions. Every sentence adds information, and it avoids redundancy with the schema.

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 14 parameters and no output schema, the description covers all major aspects: purpose, required fields, field guidance, and the fact it returns the inserted row. It explains brand_id resolution and exclusions. Minor omissions like error handling are acceptable for a creation 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?

All 14 parameters have schema descriptions (100% coverage). The description adds value by explaining required vs recommended fields, the role of source fields for traceability, and the resolution of brand_id from brief_id. This guidance helps the agent prioritize and understand parameter relationships.

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 persists a new saved asset to the workspace, specifies valid categories, and distinguishes itself from the 'BRIEFS' category which is handled elsewhere. It also links to downstream filtering, making its purpose and scope unambiguous.

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

Usage Guidelines4/5

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

The description explicitly states required parameters (category, format, title, source) and explains how source attribution traces origin. It advises on recommended fields (body_text, metadata) and clarifies that BRIEFS is not accepted. It lacks explicit comparison with sibling tools, but the context of 'saving' versus other operations is implied.

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

search_communityCommunity Search (Reddit / X / Substack / LinkedIn)A
Read-only
Inspect

Community-discourse search via parallel.ai with optional platform filtering. Returns synthesized text excerpts plus direct URLs to real Reddit threads, X posts from named operators, Substack essays, LinkedIn posts, Facebook posts.

Use for: "what are practitioners saying about X", recurring themes in founder voice, multi-platform discourse mapping, verbatim quotes from named individuals.

Per Phase 3.5 empirical A/B (Docs/solutions/architecture-decisions/search-backend-architecture-jun04.md): this tool SOLVES the Reddit/X retrieval gap that perplexity_search fundamentally couldn't fill.

Optional platforms[] to restrict (e.g. ["reddit","x","substack"]). Per social-listening-synthesis §3 sample ≥3 platforms per brief.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query. Phrase as natural-language. Focused on what people are SAYING — practitioner voice, named-operator discourse, community reaction. Not a general fact-check query.
platformsNoLimit search to these platforms. Use ["reddit"] for r/* threads, ["x","twitter"] for X posts, ["substack"] for named essays. Omit to let the search engine choose. Per social-listening-synthesis §3 sample ≥3 platforms per brief — pass at least 3 here for multi-platform discourse mapping.
after_dateNoISO date (YYYY-MM-DD). Restrict to content after this date. Use for recency-sharp community signal mapping.
max_resultsNoMaximum results. Default 10.
Behavior5/5

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

Annotations already indicate readOnlyHint=true, and the description reinforces this by describing a read/search operation. It discloses that results are synthesized text excerpts with direct URLs, and references internal architecture decisions, adding valuable 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?

The description is concise (~120 words), front-loaded with core functionality followed by use cases, differentiator, and parameter advice. Every sentence serves a purpose with no 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?

Given the tool's complexity (4 params, no output schema), the description is complete: it covers what the tool does, when to use it, how to use parameters effectively, and what the output contains. The sibling distinction is clear, and no gaps remain.

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 the description adds significant pragmatic guidance: for platforms, it recommends ≥3 for multi-platform mapping; for query, it clarifies it's not for fact-check; for after_date, it suggests recency-sharp signal mapping. This adds meaning 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 title and description clearly state the tool's purpose: community-discourse search across multiple platforms. It specifies the verb (search), resource (community discourse from Reddit, X, Substack, LinkedIn, Facebook), and distinguishes from sibling perplexity_search by explicitly stating it solves a gap.

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 lists explicit use cases ('what are practitioners saying about X', etc.) and provides alternative guidance by naming perplexity_search and explaining when this tool is superior. It also advises sampling at least 3 platforms for multi-platform mapping.

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

search_researchResearch Search (structured fact-check + numerical)A
Read-only
Inspect

Structured fact-check + numerical research via Perplexity Sonar Reasoning Pro (Gateway-routed). Returns synthesized answer text plus structured sources[] with direct URLs to primary sources.

Use for: specific numerical claims with methodology context, fact-check against primary sources, effect sizes + confidence intervals, earnings transcripts / SEC filings / research papers.

Per Phase 3.5 empirical A/B: 2-3× cheaper than sonar-pro with comparable or better quality on structured research. Real Meta IR press releases + earnings transcripts on Desk. 17 cites on Quant.

NOT for: Reddit/X/community → use search_community. NOT for: broad topic landscapes → use search.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesResearch query. Phrase as a precise factual question — what number, what claim, what methodology. The research agent has already decomposed the brief; this is one focused query.
recency_filterNoLimit results to content published within this window. Use for recent earnings, recent regulatory filings, recent industry reports.
search_domain_filterNoRestrict to these domains (e.g. ["investor.atmeta.com", "sec.gov"]). Use when triangulating against known T1 sources or specific authoritative publications.
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true. The description adds valuable context beyond annotations: the underlying model (Perplexity Sonar Reasoning Pro), cost efficiency (2-3x cheaper), and specific source examples (real Meta IR press releases, 17 cites on Quant). 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?

Description is well-structured with front-loaded purpose, followed by bullet-style use cases, cost note, and explicit exclusions. Every sentence adds value; no redundancy or filler.

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

Completeness5/5

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

Given 3 parameters with full schema descriptions and annotations, the description covers purpose, usage, parameter guidance, output format, and limitations. It is sufficient for an AI agent to correctly select and 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?

Input schema covers all 3 parameters with descriptions (100% coverage). The description adds meaningful guidance beyond the schema, such as how to phrase the query (precise factual question) and when to use domain filters (triangulating against T1 sources).

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 conducts structured fact-check and numerical research via Perplexity Sonar Reasoning Pro, returning answer text and structured sources. It explicitly distinguishes from siblings like search_community and search for different use cases.

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 use cases (specific numerical claims, fact-check, earnings transcripts) and non-use cases (Reddit/X, broad landscapes) with named alternatives (search_community, search).

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.